나는 어제 연구를하면서 마침내 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 마운트