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