이것은 윈도우즈7에서 부터 적용되던 것으로,
윈도우즈를 실제 하드디스크 파티션에 설치하는 것이 아니라, VHD(Virtual Hard Disk)위에 설치하는 것입니다.
vhd는 원래 vmware가상머신에 자극받아 MS에서 만든 가상머신에뮬레이터인, virtual pc에서 사용하는 가상디스크형식입니다.
그 가상디스크위에 윈도우즈를 설치하시만… 나머지 장치들은 에뮬레이팅하지 않고, 실제 장치들을 사용하고 드라이버 또한 그러합니다.
그러니까, 실제 디스크파티션이 아닌것만 다를뿐, 거의 하드디스크 파티션에 설치한것과 마찬가지이고, 또한 vhd는 윈도우즈백업에서 사용하는
윈도우즈 백업포멧이기에… 윈도우즈백업과 호환됩니다.
그러한 관계로, 증분백업등의 백업기능이 적용될 수 있습니다.
즉, VHD를 만들고 부팅하신 후, 이를 부모로하는 VHD를 다시 만들고, 이후의 변경사항은 새로운 VHD파일에 저장하게 할 수 도 있는 것입니다.
윈도우즈 VHD 네이티브 부팅을 위해서는 윈도우즈7이상의 부트매니져가 필요합니다.
이를 위해 원래는 윈도우즈를 파티션에 설치하여야 하지만, 다음은 윈도우즈를 파티션에 설치하지 않고,
윈도우즈 부트로더인 BOOTMGR(부트매니져)만 설치합니다.
이렇게 하기 위해선 윈도우즈7이상이 설치된 컴퓨터나 응급복구 디스크가 필요합니다.
bcdedit.exe,diskpart.exe,bcdboot.exe,bootsect.exe 라는 프로그램이 필요하니까요.
또한 가상디스크에 윈도우즈를 설치하기 위해서 imagex.exe가 필요합니다.
참고로 windows7과 windows8의 부트매니져는 동일하지 않습니다.
** 윈도우즈 부팅용 파티션 준비 **
먼저 윈도우즈로 부팅하기 위한 ntfs나 fat32로 포멧된 파티션이 필요합니다.
이것은 윈도우즈 부트로더인 bootmgr를 설치하기 위해 필요합니다.(앞서 설명한 바와 같이 이파티션에 윈도우즈를 설치하는 것이 아니라
부트매니져만 설치하는 것입니다)
가급적 첫번째 프라이머리 파티션으로 만들길 권장합니다. 크기는 크기않아도 됩니다.
만약 ISO이미지들을 준비하고 이것으로 부팅하고자 하신다면… 그러한 이미지들을 저장할 용량을 고려해서 만드시면 됩니다.
저의 경우 8G로 만들었는데 현재 3G가 남았네요.
저의 경우 GRUB4DOS, 우분투 시디이미지, Acronis 부트시디, 파티션도구, SystemRescueCD, Ghost등의 부트이미지와
XP설치용 공간까지 많은 공간을 차지하고 있습니다. ^^
기본적으로는 용량을 많이 필요로 하지 않습니다. 몇백메가면 충분하죠.
또한 윈도우즈를 설치할 가상디스크용 파티션이 필요합니다.
윈도우즈7이상을 설치하기 위해서 20G이상이 필요한 것으로 압니다.
물론 Windows Embedded Standard 버젼으로 설치하여 빡시게 커스터마이징하면 8기가 안짝으로 설치도 가능합니다.(이렇게 하면 usb에 넣어갖구 다니는 용도로 사용하기 좋습니다)
또한, 윈도우즈 VHD를 저장할 리눅스 윈도우즈 공유파티션이 필요합니다.
이것은 ntfs로 포멧하면 되겟지요.
물론 앞의 부팅용파티션과 겸해서 사용해도 됩니다 그럴경우
당연히 용량을 그에 맞춰서 잡아야겠죠?
일단 우분투 부팅용디스크로 부팅하셔서…
sudo gparted 명령을 실행하여 파티션을 만드시되…
디스크의 맨앞에 위치하게 프라이머리 부트파티션으로 만들어주세요 이것은 멀티부팅에 취약한 윈도우즈를 위한 배려입니다.
그리고, 저는 ntfs보다는 fat32로 포멧하실걸 권합니다. 왜냐면… fat32는 호환성에서 아주 좋으니까 응급부팅용 파티션엔 그만이죠.
운영체제가 다 날아가도 디스크만 떼어가면 어디서든 인식이 가능하고, DOS등을 응급부팅 운영체제로 사용할 수 도 있으니까요.
단 이 파티션은 수정을 많이 하지 않겠지만, 수정후엔 꼭 조각모음을 해주세요. 왜냐면 grub4dos에서 ISO로 부팅하기 위해선
파일이 조각나면 안되거든요.
파티션을 만드신 후,
[code:20mllnju]fdisk /dev/sda <<EOF
x
f
w
q
EOF
[/code:20mllnju]
로 파티션번호를 정렬해주세요.
이제부터는 윈도우즈에서 작업하여야 하기에… 하드디스크나 USB를 띠어가서 윈도우즈7이상이 설치된 다른 컴퓨터에서
작업하시거나, 윈도우즈 응급복구디스크로 부팅하셔서 작업하셔야 합니다.
** imagex 설치하기 **
- 원래 imagex는 WAIK(Windows Automated Installation Kit)에 포함되어 있습니다.
아래과정은 WAIK설치(크기가 매우큽니다) 없이 imagex만 설치하는 과정입니다.
먼저 UAC(사용자계정컨트롤)를 끄세요.
wim드라이버 다운로드:[url:20mllnju]http://www.mediafire.com/?89p1ohat4bg4yfh[/url:20mllnju]
imagex.exe 다운로드:[url:20mllnju]http://raidcalculator.wordpress.com/?wpdmact=process&did=Mi5ob3RsaW5r[/url:20mllnju]
압축을 푸신 후, wimfltr.inf가 들어있는 디렉토리로 이동하세요.
%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 wimfltr.inf
이 명령으로 wim드라이버가 설치됩니다.
** 새 VHD만들고, 마운트하기 **
- 이것은 다른 컴퓨터에 하드디스크를 장착하였을때나, 응급복구디스크로 부팅하였을때
인식된 부팅용 파티션이 d:이고, 윈도우즈 vhd를 저장할 리눅스와 공유할 파티션이 e:, 윈도우즈8설치디스크가 f:라는 가정하에 40G VHD를 만드는 과정입니다.
물론 d:와 e:를 합쳐서 같은 파티션을 사용하셔도 됩니다.
c:>diskpart.exe
diskpart>create vdisk file=e:\win8.vhd maximum=40000 type=expandable
diskpart>select vdisk file=e:\win8.vhd
diskpart>attach vdisk
diskpart>create partition primary
diskpart>assign letter=v
diskpart>exit
** VHD에 윈도우즈 설치하기 **
- 윈도우즈7이상에서는 이와같이 윈도우즈이미지로 부터 설치가 가능합니다.
설치가 완료되고 부팅하면, sysprep과 같이 처음 사용자 설정 화면으로 들어갑니다.
c:>imagex.exe /apply f:\sources\install.wim 1 v:\
** VHD로 부팅가능하게 만들기 **
c:>cd /d c:\windows\system32
c:\windows\system32>bcdboot.exe c:\windows /l ko-kr /s d:
c:\windows\system32>bootsect.exe /nt60 d: /mbr
==>이과정에서 띠어온 디스크의 리눅스 부트로더가 날아갑니다. 윈도우즈 bootmgr로 교체하는 것이죠.
c:\windows\system32>cd /d c:\
** 윈도우즈 부트메뉴에 VHD등록하기 **
c:>bcdedit.exe /export d:\bcd
c:>bcdedit.exe /store d:\bcd /copy {default} /d "Windows 8 (VHD)"
=>{guid}가 출력됨
c:>bcdedit.exe /store d:\bcd /set {guid} device vhd=[locate]\win8.vhd
c:>bcdedit.exe /store d:\bcd /set {guid} osdevice vhd=[locate]\win8.vhd
c:>bcdedit.exe /store d:\bcd /default {guid}
c:>bcdedit.exe /store d:\bcd /set {guid} detecthal on
c:>bcdedit.exe /store d:\bcd /displayorder {guid} /addfirst
이제 윈도우즈 설치 준비가 다 되었으니 하드디스크를 띠어가서 부팅하시면… VHD로 부팅하게 됩니다.
문제는 리눅스부트로더가 날아갔기에 이를 복구할 필요가 있습니다.
이제 부터는 주 컴퓨터에 하드디스크나 usb가 장착되었고, 윈도우즈가 설치된 파티션이 c:이고,
부팅용파티션이 d:라고 가정하겠습니다.
이제 부터는 윈도우즈에서 리눅스로 부팅을 가능하게 만드는 과정입니다.
** 윈도우즈에서 리눅스로 부팅가능하게 grub4dos설치 **
먼저 cdimage.ubuntu.com에서 우분투 최신버젼의 이미지를 d:\에 다운로드합니다.
이어, grub4dos를 다운로드하고, d:\에 grldr.mbr grldr를 복사합니다.
d:\menu.lst를 편집하여
title Ubuntu Live ISO
find --set-root /grldr.mbr
map /ubuntu-13.04-desktop-amd64.iso (0xff) || map --mem /ubuntu-13.04-desktop-amd64.iso
map --hook
kernel (0xff)/casper/vmlinuz boot=casper root=/dev/shm toram iso-scan/filename=/ubuntu-13.04-desktop-amd64.iso quiet splash noprompt noeject
initrd (0xff)/casper/initrd.lz
로 저장합니다.
** 윈도우즈 부트메뉴에 리눅스 추가하기 **
c:>bcdedit.exe /store d:\bcd /create /d GRUB4DOS /application bootsector
==> {guid}출력됨
c:>bcdedit.exe /store d:\bcd /set {guid} device boot
c:>bcdedit.exe /store d:\bcd /set {guid} path \grldr.mbr
c:>bcdedit.exe /store d:\bcd /displayorder {guid} /addlast
c:>bcdedit.exe /store d:\bcd /set {bootmgr} timeout 3
** 리눅스 부트로더로 복귀하기 **
윈도우즈 부트로더를 메인부트로더로 사용하실 수 있습니다만…
GRUB이 범용성이 훨씬 좋고, 강력하기에 GRUB으로 부트로더를 변경하겠습니다.
부팅시 윈도우즈 부트메뉴에서 GRUB4DOS선택하신 후, Ubuntu Live ISO를 선택하세요.
리눅스 파티션이 /dev/sda3라는 가정하에 진행합니다.
[code:20mllnju]mkdir t
sudo mount /dev/sda3 t
sudo mount -o bind /proc t/proc
sudo mount -o bind /sys t/sys
sudo mount -o bind /dev t/dev
sudo mount -o bind /dev/pts t/dev/pts
sudo chroot t
sudo grub-install /dev/sda
sudo update-grub
exit
sudo umount t/dev/pts t/dev t/sys t/proc t
[/code:20mllnju]
이렇게 하시면 리눅스 부트로더로 교체됩니다.
이후 windows로 부팅이 안되신다면…
/boot/grub/custom.cfg를 편집하셔서
menuentry "Windows 8" {
insmod ntfs
insmod fat
insmod ntldr
search -s -f /bootmgr
ntldr /bootmgr
}
이렇게 하신 후 목록 마지막의 Windows 8을 선택하시면 윈도우즈로 부팅이 가능해질 것입니다.
이러한 과정으로 VHD로 네이티브 부팅이 가능해지면…
다음 단계로 Virtualbox에서 이것을 가상머신에 등록하고 가상머신에서 윈도우즈로의 부팅도 가능해집니다.
단 이럴 경우, 가상머신에서 동작할때에는 하드웨어가 가상이기 때문에 실제와 달라…
해당드라이버를 자동으로 인식하거나 또는 수동으로 설치해줘야 할 필요가 있습니다.
또한 가상머신에서 동작하기 위해서는 메모리가 빠방해야 합니다.
윈도우즈7이상은 기본적으로 메모리를 많이 잡아먹기 때문이죠.
가상머신에서 윈도우즈7이상을 돌리려면 메모리 4G이상이 필요할 것으로 보입니다.
2G에서 1G가상머신에 할당해서 사용하기엔 무리스럽지요.
다음 도전과제는 VHD상속입니다.
이것은 검색해보세요. 처음 설치하고, 기본 설정을 해두신 후,
자식 VHD를 만들어 이후에는 자식으로 부팅하고…
문제 발생시, 자식노드를 삭제하고, 부모로 부터 상속하여 다시 VHD를 만들어 복구가 가능해집니다.
참고로, grub4dos로 chainload하여
iso로 부팅하는 것도 꽤나 좋은 방법입니다.
이방법은 비단 리눅스계열의 iso이미지 뿐 아니라, 윈도우즈에서 작성된 부팅용시디이미지로도 부팅이 가능합니다.
menu.lst를 수정하셔서
title Norton Ghost
find --set-root /boot-images/ghost.iso
map /boot/images/ghost.iso (0xff) || map --mem /boot-images/ghost.iso
map --hook
chainloader (0xff)
boot
이런식으로 iso로 부팅이 가능합니다.
그러면 윈도우즈용 복구환경도 충분히 구축이 가능하죠.
위에서 윈도우즈7이상이 설치된 컴퓨터에서 작업할 필요가 있다고 했지만,
실은 리눅스에서도 작업이 가능합니다.
그 방법은 먼저 응급복구디스크 이미지가 필요합니다. 이것은 인터넷으로 검색해 보세요.
그리고, grub4dos가 필요합니다.
menu.lst를 편집하여
title Windows Rescue CD
find --set-root /boot-images/winre.iso
map /boot/images/winre.iso (0xff) || map --mem /boot-images/winre.iso
map --hook
chainloader (0xff)
boot
이런식으로 응급복구디스크로 부팅하신 후, 작업하시면 됩니다.
다시 말씀드리지만 grub4dos로 iso부팅을 위해서는 파일이 조각나면 안됩니다.
그러니까, wincontig등을 설치하셔서 조각모음을 해주세요.