VirtualBox VDI 내용을 파티션에 복사하고 OS에서 이중 부팅하는 방법은 무엇입니까?


12

나는 Linux 사용자이지만 필자가 Windows를 필요로하는 경우 펜 드라이브에 압축 된 Windows XP ISO를 유지합니다. 이것은 대부분 VirtualBox에서 작동합니다.

그러나 이제 일부 게임을하고 싶기 때문에 Windows 이미지를 기본적으로 실행하고 싶습니다. 내 컴퓨터에는 CD 드라이브가 없으므로 ISO를 굽고 정상적으로 설치할 수 없습니다.

내가하려고하는 것은 설치된 Windows 이미지를 HDD의 실제 NTFS 파티션으로 옮기고 GRUB을 설정하여 이중 부팅 할 수 있도록하는 것입니다.

VDI를 실제 드라이브로 만드는 방법을 다루는 많은 자습서를 찾았습니다. 그러나 그들은 전체 드라이브를 덮어 쓰려고한다고 가정합니다. 원시 디스크 이미지를 dd파티션으로 이동하면 파티션이 손상되었습니다.

또한 빈 파티션을 사용하고 Windows를 설치하기 위해 VMDK 트릭을 시도했습니다. 설치의 텍스트 모드 단계가 문제없이 완료되지만 VM이 작동하지 않거나 충돌하여 재부팅하거나 계속 정지합니다 ( -rawdisk /dev/sda3또는로 VMDK를 만든 방식에 따라 다름 -rawdisk /dev/sda -partition 3).

답변:


4

나는 어제 연구를하면서 마침내 Windows XP 부팅을 할 수있었습니다. 다른 OS에서도 다소 비슷해야합니다. 그러나 작업은 사소한 것이 아닙니다.

이것은 위험한 작업이므로 소중한 데이터를 백업하는 것이 좋습니다.

단계는 다음과 같습니다.

예비

Windows XP의 경우 현재 디스크 문자 및 파티션 설정을 잊어 버려야하므로 마이그레이션 전에 가상 머신의 HKEY_LOCAL_MACHINE / MountedDevices 키에서 모든 값을 지워야합니다. 커널은 다음에 다시 부팅 할 때 다시 빌드합니다. Linux 가상 머신에서 이는 마이그레이션 후 fstab을 수정하는 것을 의미합니다.

VDI 이미지 마운트

MBR도 포함되어 있기 때문에 전체 VDI를 파티션으로 복사 할 수는 없습니다. 가상 파티션 만 복사하면되므로 먼저 VDI를 마운트 할 방법을 찾아야합니다.

nbd드라이버와 qemu-nbd명령 이 필요합니다 . 우분투에서는 qemu-kvm패키지에 들어 있습니다.

먼저 nbd 드라이버를로드하십시오.

# modprobe nbd

에 일부 nbd기기가 있어야합니다 /dev.

그런 다음 VDI를 마운트하십시오.

# qemu-nbd -c /dev/nbd0 path_to.vdi

이렇게해야한다 /dev/nbd0p1, /dev/nbd0p2, /dev/nbd0p3모든 가상 파티션 등. 이들은 일반적인 장치처럼 장착 할 수 있습니다.

파티션 마이그레이션

이를 dd위해 작업 전에 두 파티션을 마운트 해제 하십시오 .

# dd -if=<nbd_device> -of=<real_partition>

예 :

# dd -if=/dev/nbd0p3 -of=/dev/sda4

작동 dd은 조용합니다. 몇 분, 심지어 30 분이 걸릴 수도 있습니다. 작업 중에 터미널을 열고 fdisk -l모든 것이 잘 진행되고 있는지 확인 하는 데 사용할 수 있습니다.

최신 정보:

분명히 nbd는 완벽한 솔루션이 아닙니다. 입출력 에러가 발생하여 dd가 실패 할 수 있습니다. 또한 다음 시도는 즉시 실패합니다. 다음 명령을 사용하여 원시 디스크 VMDK를 만들 수도 있습니다 (Linux에서).

$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda

disk작동 하려면 그룹에 있어야합니다. 그런 다음이 vmdk를 가상 시스템에 보조 하드 드라이브로 추가 한 다음 Live Linux ISO를 dd파티션에 사용하십시오.

NTFS 파티션의 부팅 섹터 수정

이것은 hackish 부분입니다.

거의 준비가되었지만 파일 시스템의 숨겨진 섹터 수를 오프셋에 설정해야하기 때문에 Windows XP가 부팅되지 않습니다 0x1C. 이것은 기본적으로 NTFS 파티션 이전의 여러 섹터입니다. 이 번호는 fdisk -ul명령 에서 얻을 수 있습니다 . start기본적으로 파티션 전에 섹터 수 인 지정된 파티션이 시작 부문 출력 상태의 필드. 예를 들어 gcalctool을 사용하여 16 진수로 변환하십시오.

다음과 hexedit같이 파티션을 엽니 다 :

# hexedit /dev/sda4

그런 다음 1C오프셋 에서 숨겨진 섹터 수를 리틀 엔디안 순서로 씁니다 . 작은 엔디안 의미 : 0xABCDEFGH될 것 GH EF CD AB입니다. 16 진수가 8 자리보다 짧은 경우 앞에 0을 붙이십시오.

완료되면 저장하고 종료하십시오 (Ctrl + X).

GRUB 설정

GRUB에 해당 파티션을 직접 부팅하도록 지시해야합니다. GRUB에 다음 메뉴 항목을 추가하십시오.

title       Microsoft Windows XP Professional
root        (hd0,3)
savedefault
makeactive
chainloader +1

여기서 (hdX, Y)파티션을 식별합니다. X는 기본 하드 디스크의 경우 0이고, 1의 경우 /dev/sda, 2의 경우 /dev/sdb등 입니다 . Y는 파티션 번호입니다. 등의 경우 0 , 등의 /dev/sda1경우 1/dev/sda2

이것은 GRUB2에서도 비슷해야하지만 메뉴 항목에는 약간 다른 구문을 사용합니다.

마지막 손길

새로운 NTFS 파티션을 부팅 할 준비가되었습니다. 그러나 Windows XP 데스크톱에 도달하려면 여전히 해킹이 필요합니다. 다른 시스템에는 다른 핵이 필요할 수 있습니다. 먼저 boot.ini를 수정해야합니다.

[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

이에 따라 파티션 번호를 설정하십시오. / dev / sda4에 설치했습니다. 따라서 파티션 번호는 3이어야합니다.

로그온 화면 바로 앞에 Windows가 중지 된 경우 레지스트리에서 MountedDevices 항목을 수정해야 할 수도 있습니다.

레지스트리는에 <path to windows>/system32/config/system의해 볼 수 있습니다 chntpw. 시스템 드라이브 문자가 C가 아닌 경우 문제가 될 수 있습니다. chntpw레지스트리 쓰기 기능이 상당히 제한되어 있으므로 ghex2와 같은 16 진 편집기를 사용하여 문제를 해결해야합니다. 필자의 경우 \DosDevices\C:C를 다른 드라이브 문자 로 찾아서 바꿔야합니다 F.

그런 다음 바탕 화면에 도달 할 수 있어야합니다. 이제 모든 드라이버를 찾아야하지만이 자습서에서는 다루지 않습니다.

출처

다른 파티션으로 Windows XP 이동

리눅스에서 VDI 마운트


0

partimage와 gdisk를 사용하여 시도해 볼 수 있습니다. gdisk 나 다른 파티션 프로그램을 가지고 현재 디스크의 크기를 조정하거나 디스크의 어느 곳에 파티션을 설정하십시오. 이상적으로는 기본 파티션이 될 것입니다. 나는 보통 파티션 1을 윈도우 용으로, 2+는 리눅스 데이터를 유지한다.

파티션이 설정되면 gdisk 또는 다른 고스트 클론을 사용하여 백업 파일이나 직선 이미지를 다른 드라이브에 만들 수 있습니다. 그런 식으로 파일을 삭제하거나 img 파일을 만든 다음 vmdk 파일에서 호스트 시스템으로 복사 한 다음 이미지 소프트웨어를 사용하여 파티션을 복원 할 수있는 경우 호스트에 대한 네트워크 연결을 설정할 수 있습니다 호스트 시스템에서 생성 한 위치로

해당 ntfs 파티션에 부팅을 추가하기 위해 필요에 따라 grub을 구성하십시오.


이미지 소프트웨어가 호스트 jsut에서 직접 읽을 수 있도록 mannter에서 vmdk를 제거 할 수도 있습니다. 이미지 소프트웨어의 상태에 따라 다릅니다.
Kendrick

나는 어제 조사를하면서 마침내 Windows XP 부팅을 할 수있었습니다. 자세히 적어 보겠습니다. 사소한 것이 아닙니다.
Calmarius

꽤 아이러니하지만 곧이 과정을 수행해야합니다. 어떤 이유로 solaris를 설치하는 것을 좋아하지 않는 PC가 있으므로 VM에서 새 시스템으로 데이터를 가져와야합니다.
Kendrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.