관리 메뉴

미닉스의 작은 이야기들

USB로 할 수 있는 작업들 #6: 완료 본문

만능 USB 만들기

USB로 할 수 있는 작업들 #6: 완료

미닉스 김인성 2009. 8. 21. 22:40

멀티 부팅 USB 만들기 완벽 가이드 #6(완결)

20.menu.lst 정리

여태까지 설명한 usb 용 부팅 이미지 옵션을 모두 정리해 보겠습니다.

# 색상과 타임아웃 값등 grub 자체에 대한 설정들
color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default

# 윈도우7 인스톨 이미지용 설정
title find and load BOOTMGR of windows 7
find --set-root /bootmgr
chainloader /bootmgr
boot

# XP의 리커버리 콘솔을 위한 설정
title find and load CMLDR, the Recovery Console of Windows NT/2K/XP
find --set-root --ignore-floppies --ignore-cd
/cmdcons/setupldr.bin
map () (hd0)
map (hd0) ()
map –-rehook
find --set-root --ignore-floppies --ignore-cd
/cmdcons/setupldr.bin
chainloader /cmdcons/setupldr.bin
####################################################
# write string "cmdcons" to memory 0000:7C03 in 2 steps:
####################################################
# step 1. Write 4 chars "cmdc" at 0000:7C03
write 0x7C03 0x63646D63
# step 2. Write 3 chars "ons" and an ending null at 0000:7C07
write 0x7C07 0x00736E6F

# 하이렌즈 부트시디 옵션
title Start Hiren's BootCD
find --set-root /HBCD/boot.gz
map --mem /HBCD/boot.gz (fd0)
map –-hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1

# 하이렌즈 부트 시디에 포함된 메모리 테스트
title Windows Memory Diagnostic
find --set-root /HBCD/memtest.gz
map --mem /HBCD/memtest.gz (fd0)
map –-hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1

# 하이렌즈 부트시디의 미니 윈피이
title Mini Windows XP (hiren's bootcd)
find --set-root /HBCD/XPLOADER.BIN
chainloader /HBCD/XPLOADER.BIN

# 바트피이 기반의 윈피이를 위한 옵션
title Boot WinPE
find --set-root /MININT/SETUPLDR.BIN
chainloader /MININT/SETUPLDR.BIN

# 우분투 라이브
title ubuntu boot
root (hd0,0)
kernel /casper/vmlinuz root=LABEL=USB-BOOT file=/preseed/ubuntu.seed boot=casper persistent quiet splash --
initrd /casper/initrd.gz

# 센트 오에스 라이브
title Centos LiveCD boot
root (hd0,0)
kernel /LiveOS/vmlinuz0 root=LABEL=USB-BOOT rootfstype=vfat ro liveimg rhgb
initrd /LiveOS/initrd0.img

# 센트 오에스 인스톨용 이미지 옵션
title CentOS install
root (hd0,0)
kernel /centos/vmlinuz
initrd /centos/initrd.img

이 설정을 복사해서 menu.lst에 넣어 두면 됩니다. 각 설정에 맞는 파일들은 차후에 맞추어 넣으면 되겠지요. 요것만 있으면 어떤 응급 상황이라도 어렵지 않게 대처할 수 있을 것입니다.

참고로 find –set-root 방법은 약간 위험합니다. Usb 메모리가 아닌 하드디스크의 파일을 먼저 발견하면 그것이 사용될 수도 있으니까요. 일부 항목들을 제외하고 단순화 시킬 수도 있습니다만 이런 부분은 넘어 갑니다. 여기 보인 것들은 grub4dos 설명 파일에 예시된 것도 있고 일반적으로 쓰이는 것들이어서 제 의견은 최소화하고 그대로 적용했습니다.

21.그외 부팅 옵션들

시디로 부팅하여 작업하는 프로그램이 있는데 이것을 풀어서 grub의 menu.lst 설정 형식으로 부팅하기가 곤란할 때가 있습니다. 이럴 때는 시디 이미지 전체를 메모리로 읽어 들인 다음 가상 시디 모드로 부팅하게 만들 수 있습니다. 아래처럼 사용합니다.

#######################
title Acronis Universal Restore
map --mem /acronistis-ur.iso (hd32)
map --hook
chainloader (hd32)
#######################
title Acronis Universal Restore
map /acronistis-ur.iso (hd32)
map --hook
chainloader (hd32)

usb 메모리에 acronistis-ur.iso 파일을 가져다 놓고 hd32라는 가상 시디로 맵핑한 다음 메모리에 읽어 들여서 부팅한다 이런 뜻입니다. 일일이 부팅 설정을 고민하지 않아도 되기 때문에 편리한 방법입니다. Map –mem을 쓴 방식은 이미지 전체를 초기에 다 읽어 와야 하기 때문에 시간이 엄청 걸립니다. 바이오스를 통해 시디 이미지를 처리하기 때문에 리얼 모드 부팅을 하는 시디 이미지만 가능하다는 제한도 있습니다. 시디 이미지 크기가 아주 작다면 해 볼만 하지만 그 외에는 잘 쓰지 않습니다.

아래 방식은 시디 이미지를 메모리에 올리지 않고 하드디스크에 있는 상태에서 처리합니다. 속도가 빠른 대신 파일이 나누어지지 않고 처음부터 끝까지 연속으로 기록되어 있어야 한다는 제약이 있습니다. 단편화 제거 프로그램으로 확실히 연속으로 기록되도록 설정해야 합니다. 나머지는 위와 동일합니다. 즉 리얼 모드 시디 이미지만 가능하다는 뜻입니다. 리눅스, XP, 비스타 등은 쓸 수 없습니다.

Usb 메모리를 도스 포맷했다면 아마 io.sys와 msdos.sys가 들어 있을 것입니다. 이 것을 읽어서 부팅할 수도 있습니다.

##################################

title find and load IO.SYS of Windows 9x/Me
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2

Grub은 파일명만으로도 읽어 올 수 있기 때문에 아마 시스템 전송 과정(format /s 또는 sys 명령)을 거치지 않고 그냥 이 파일을 복사해 놓아도 될 것이라고 생각합니다. (해보지는 않았습니다)

Grub은 명령행 에디팅을 지원하기 때문에 부팅 과정에서 에러가 생기면 되돌아와서 다른 부팅 옵션을 선택할 수도 있습니다. 그 때 에러 난 부팅 옵션을 임시로 고친 다음 부팅과정을 계속 할 수 있습니다. 나중에 menu.lst을 제대로 고쳐야 하지만 실시간으로 문제를 처리할 수 있기 때문에 아주 편리한 기능입니다.

Grub 초기 화면: 화살표로 움직여서 WinPE를 선택하고 엔터로 부팅합니다.

부팅 에러: grub이 부팅 파일을 탐색하는 과정에서 에러가 생겼네요. 에러 난 줄을 보여 주고 있습니다.

세부 항목: 아무 키나 누르면 하위 항목이 나옵니다. 어디서 에러가 났을까요? 아 SETUPLDR을 SETUPDLR로 잘못 썼군요. e 키를 눌러서 에디팅 모드로 들어갑니다.

에디팅 모드: 한 라인을 편집할 수 있습니다. 잘못 쓴 부분까지 지우고 다시 씁니다. 귀찮으면 TAB 키를 치면 파일명을 완성해 줍니다. 맞는 파일이 없으면 모든 파일명을 보여 줍니다.

고친 항목: 이제 제대로 바꾸었습니다. b 키를 누르면 부팅을 계속합니다.

Grub은 정말 뛰어난 멀티 부트 프로그램입니다. 공짜인데다 소스가 공개되어 있어 모든 오에스들이 grub으로 부팅하는 것을 지원합니다. 좀 더 알고 싶으면 grub과 grub4dos 설명서를 한 번 읽어 보세요. 알아두면 정말 도움이 되는 프로그램입니다. Grub은 버전2를 만들고 있는데 더욱 더 획기적인 기능을 추가하는 중입니다.

22.usb 메모리의 외장 스토리지 기능

설명이 응급 부팅이나 오에스 인스톨 용에만 집중되고 있지만 어떻게 하더라도 usb 메모리는 여전히 훌륭한 외장 스토리지입니다. 여러 프로그램이 들어 있어서 복잡하기 때문에 저는 WORK 디렉토리를 만들어서 파일 복사는 이 디렉토리를 이용합니다. 워낙 많이 파일과 디릭토리가 있기 때문에 일일이 청소하려면 너무 힘들어 다른 여러 디렉토리는 신경 끄고 삽니다.

외장 스토리지 기능: 인증서와 결재용 파일들도 복사해서 가지고 다닙니다. 인증서 디렉토리는 NPKI이고 안전 결재용 디렉토리는 Vcard입니다.

어쩌다 보면 메모리를 포맷하거나 파일을 지울 일이 생기는데 기본적으로 WORK, NPKI, Vcard, menu.lst 이 것들만 잃지 않으면 다 복구 할 수 있습니다. 쓰다 보면 파일이 쌓이게 되어서 늘 용량이 부족합니다. 지금 8GB 짜리인데 곧 16GB로 업그레이드 하게 될 것 같습니다.

23.로우 레벨 포맷

Usb 메모리에 데이터를 처음 쓸 때는 완전히 비어 있는 공간에 쓰기만을 하기 때문에 빠릅니다. 그러나 Usb 메모리는 데이터를 쓰면 쓸수록 더티 페이지가 늘어나서 쓰기 속도가 줄어드는 경향이 있습니다. 파일을 지워도 usb 메모리 컨트롤러 입장에서는 가비지 컬렉션이 필요해 새로운 쓰기는 지우기+쓰기 형태가 됩니다. 더구나 낸드 메모리는 쓰기 횟수 제한이 있어 항상 메모리 블럭 별로 쓰기 횟수를 평균적으로 비슷하게 만들기 위해서 적게 쓴 블럭을 찾는 시간도 필요합니다.

이런 상태에서는 메모리를 빠르게 만들겠다고 윈도우 포맷을 돌려도 별 효과가 없습니다. 논리 포맷은 usb 메모리 컨트롤러에게는 아무런 의미가 없는 작업이기 때문입니다. Usb 메모리를 초기화 하기 위해서는 업체에서 제공하는 전용 로우레벨 포맷 프로그램을 쓸 필요가 있습니다.

윈도우 포맷 프로그램: 포맷해봐야 그냥 자기 만족일 뿐 시간만 낭비하는 작업입니다.

Hp usb 포맷툴: 이런 것도 마찬가지입니다. 포맷을 할 뿐 메모리 초기화는 하지 못합니다.

Sdformatter: 이런 것을 구해야 합니다. 이 프로그램은 낸드 플래시 지우기 동작을 통해 웨어레벨링 값을 제외하고 usb 메모리를 처음 쓰는 것과 똑같이 만들어 줍니다.

빨라진 쓰기 속도: 3.69GB 쓰는데 1시간이 넘게 걸리던 8GB MLC MicroSD 카드가 로우 레벨 포맷을 하고 나서 같은 파일을 쓰는데 8분이 걸리지 않는 모습니다.

대부분의 업체는 전용의 로우 레벨 usb 메모리 포맷 프로그램을 제공합니다. 초기화 프로그램을 주는 곳도 있습니다. Usb 메모리에 데이터를 쓰고 지운 횟수가 많아져서 속도가 느려졌다고 느낄 때 한 번씩 데이터를 백업하고 이런 프로그램을 돌릴 필요가 있습니다.

24. 글을 끝내며

여태까지 usb 메모리 멀티 부팅 옵션을 조금씩 만들어 왔는데 에러 상황을 만나도 이것 저것 여러 파일이 엮여 있어서 제대로 해결을 하지 못했습니다. 그래서 저 스스로 멀티 부팅에 대해서 정리하고 싶어서 글을 쓰게 되었습니다. 부트 이미지를 서로 독립적으로 다룰 수 있고 포맷하고서 쉽게 원 상태로 복귀할 수 있는 단일한 방법을 찾는 것이 목표였습니다.

수 차례 부트 옵션을 바꾸고, 파일들을 지우고 새로 복사하고, 여러 컴퓨터에 꼽고 테스트 해 보면서 제 스스로 배운 것이 많습니다. 이 과정에서 가장 간단하고 쉬운 방법을 고를 수도 있었습니다. 여태까지 찜찜했었던 여러 이미지 부팅 방법에 대해서도 정리가 된 느낌입니다. 고민 거리가 줄어 아주 시원합니다.

특이한 에러: 물론 정리해 봤자 아무 소용 없습니다. 저는 오늘도 이 따위 이해할 수 없는 에러를 처리하기 위해 고생하고 있습니다.

여러 분에게도 도움이 되었기를 바랍니다. 일단 제가 알고 있는 응급 복구용 이미지들과 USB 메모리에 필요한 것들은 다 담았습니다. 제가 보여드린 방법대로 하면 쉽게 만능 툴을 만들 수 있을 것입니다. 이 강좌에서 보여드린 방식보다 더 쉽고 편하게 usb 메모리를 구성하기는 힘들 것이라고 자신합니다. 해야 할 작업도 최소한으로 줄였고 설명도 절대로 복잡하지 않게 했습니다.

여태까지 기술 문서를 쓰면서 저는 단순하고 간단한 모습을 보여 주려고 노력해 왔습니다. 이 글도 마찬가지입니다. 내부적으로는 어려운 내용이 지나가더라도 읽는 사람에게는 쉬워야 한다고 생각합니다. 대상을 진짜로 아무 것도 모르는 컴맹으로 잡았기 때문에 너무 설명이 유치하다고 느끼실 분도 계실 것이고 더 깊은 부분이 빠져있어서 불만이신 분들도 있을 것입니다. 유치한 부분은 넘어 가시고 설명이 부족하다면 직접 조사해보시면 되겠습니다. 특히 grub4dos 설명서와 grub 설명서는 꼭 한 번 읽어 보시기 바랍니다. 제가 제시한 menu.lst의 허술함이 그대로 느껴질 것입니다.

써야 하는 도구가 많아 질수록 일이 복잡해지고 실수가 많아집니다. 그 도구 쓰는 법을 익히는데 시간을 허비하게 마련이지요. 그래서 이 글에서는 가능하면 전용 프로그램이 아닌 평범한 방법을 사용하도록 했습니다. 어렵게 가자면 복사를 위해서 UltraISO, PE2USB을 쓰기, 포맷 프로그램은 HP USB Format을, 이미지 부팅용으로 USB에 CD 영역을 생성하기, 전용 스크립트를 만들고, 온갖 프로그램을 윈피이에 삽입하고, 일부 프로그램을 새버전의 프로그램으로 갈아 치우고, 파일들을 여기 저기로 이동시키고…… 중간에 부팅 과정을 가로채 추가 작업을 하고, 특별한 업체의 특별한 메모리 제품을 선택하고, 그 제품만의 기능을 이용해서 만들고……

이런 방법은 하나도 쓰지 않았습니다. 누구나 이미 알고 있는 프로그램으로도 가능한 방법을 제시하려고 노력했습니다. 저는 그 목표를 달성했다고 생각하는데 읽는 분들도 그렇게 생각이 드시는지는 잘 모르겠군요.

니컴안고쳐줘: 툴을 갖추는 대신 꼭 이런 티를 입고 다니시기 바랍니다. 남의 컴퓨터를 한 번 고쳐 주고 나면 그들은 당신의 영혼을 소유하게 됩니다.

이미지 출처: http://www.teeshirtsdevon.co.uk/cart/index.php?main_page=index&cPath=69

이제 여러분들도 자유자재로 다룰 수 있는 훌륭한 응급용 툴을 열쇠고리에 하나씩 달고 다닐 수 있게 되기를 바랍니다. 모르는 부분이나 잘 안 되는 부분이 있으면 적어 주세요. 같이 고민해 봅시다. 제가 게을러서 답은 잘 드리지 못하겠지만 혹시 다른 분들이 도와 줄지도 모르니까요. 제가 틀린 부분, 부족한 부분이 있거나 다른 팁을 알게 되셨다면 저에게도 알려 주시기를 바랍니다. 우리가 함께 커가면 더욱 기쁘지 않겠습니까?

김인성.

Comments