Tôi đã dành tất cả ngày hôm qua để nghiên cứu và cuối cùng đã có thể khởi động Windows XP. Nó cũng có phần giống với các hệ điều hành khác. Nhưng hoạt động là tất cả mọi thứ nhưng không tầm thường.
Bởi vì đây là một hoạt động nguy hiểm, tôi khuyên bạn nên sao lưu dữ liệu quý giá của bạn.
Đây là các bước:
Sự chuẩn bị
Trong trường hợp Windows XP, bạn cần làm cho nó quên cài đặt phân vùng và ký tự đĩa hiện tại, do đó bạn cần xóa tất cả các giá trị khỏi khóa HKEY_LOCAL_MACHINE / MountedDevices trên máy ảo trước khi di chuyển. Nhân sẽ xây dựng lại nó trong lần khởi động lại tiếp theo. Trên các máy ảo Linux, điều này có nghĩa là sửa lỗi fstab sau khi di chuyển.
Gắn hình ảnh VDI
Bạn không thể chỉ sao chép toàn bộ VDI vào một phân vùng, vì nó cũng chứa MBR. Bạn chỉ cần sao chép phân vùng ảo, vì vậy trước tiên bạn cần tìm cách gắn VDI.
Bạn cần nbd
trình điều khiển và qemu-nbd
lệnh. Trên Ubuntu có trong qemu-kvm
gói.
Đầu tiên tải trình điều khiển nbd:
# modprobe nbd
Điều này sẽ làm cho một số nbd
thiết bị trong /dev
.
Sau đó gắn VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Điều này sẽ làm cho /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
vv cho tất cả các phân vùng ảo. Chúng có thể được gắn như bất kỳ thiết bị thông thường.
Di chuyển phân vùng
Sử dụng dd
cho điều đó, ngắt kết nối cả hai phân vùng trước khi hoạt động:
# dd -if=<nbd_device> -of=<real_partition>
ví dụ.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Hoạt động của dd
im lặng, điều này có thể mất vài phút, thậm chí nửa giờ. Trong quá trình hoạt động, bạn có thể mở một thiết bị đầu cuối và sử dụng fdisk -l
để xem tất cả đang diễn ra tốt đẹp.
CẬP NHẬT:
Rõ ràng nbd không phải là một giải pháp hoàn hảo. Nó có thể gây ra lỗi I / O và làm cho dd bị lỗi. Hơn nữa thử tiếp theo thất bại ngay lập tức. Bạn cũng có thể thử tạo một VMDK đĩa thô bằng lệnh này (trong linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Bạn cần phải ở trong disk
nhóm để làm cho nó hoạt động. Sau đó thêm vmdk này vào máy ảo dưới dạng ổ cứng thứ cấp, sau đó sử dụng Live Linux ISO vào dd
phân vùng.
Sửa khu vực khởi động của phân vùng NTFS
Đây là phần hackish.
Chúng tôi gần như đã sẵn sàng, nhưng Windows XP sẽ không khởi động được, vì chúng tôi cần đặt số lượng các khu vực ẩn của hệ thống tệp ở mức bù 0x1C
. Điều này về cơ bản một số lĩnh vực trước phân vùng NTFS. Chúng ta có thể lấy số này từ fdisk -ul
lệnh. Các start
lĩnh vực các bang sản lượng mà ngành phân vùng cho giá khởi điểm, mà về cơ bản là số của các thành phần trước khi phân vùng. Vì vậy, lấy số từ đó, chuyển đổi nó thành thập lục phân bằng cách sử dụng gcalctool chẳng hạn.
Mở phân vùng với hexedit
, như thế này:
# hexedit /dev/sda4
Sau đó viết số lượng các khu vực ẩn theo thứ tự endian nhỏ ở phần 1C
bù. Ít endiean có nghĩa là: 0xABCDEFGH
sẽ được GH EF CD AB
. Nếu số hexa ngắn hơn 8 chữ số, đứng trước nó bằng không.
Khi hoàn tất, lưu nó và thoát (Ctrl + X).
Thiết lập GRUB
Bạn phải yêu cầu GRUB khởi động trực tiếp phân vùng đó, để GRUB thêm mục nhập menu sau:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Nơi (hdX, Y)
xác định phân vùng. X là 0 cho đĩa cứng mặc định, 1 cho /dev/sda
, 2 cho /dev/sdb
vv Y là số phân vùng. 0 cho /dev/sda1
, 1 cho /dev/sda2
, v.v.
Điều này cũng tương tự với GRUB2, nhưng nó sử dụng cú pháp hơi khác nhau cho các mục menu.
Lần chỉnh sửa cuối cùng
Phân vùng NTFS mới đã sẵn sàng để khởi động. Nhưng bạn vẫn cần một số hack để tiếp cận máy tính để bàn Windows XP. Các hệ thống khác có thể cần các bản hack khác nhau. Đầu tiên boot.ini cần được sửa.
[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
Đặt số parition cho phù hợp. Tôi đã cài đặt nó trên / dev / sda4. Vì vậy, số phân vùng nên là 3.
Bạn có thể cần sửa mục MountedDevices trong sổ đăng ký nếu Windows đóng băng ngay trước màn hình đăng nhập.
Đăng ký là tại <path to windows>/system32/config/system
bạn có thể xem nó bằng cách chntpw
. Đây có thể là một vấn đề nếu ký tự ổ đĩa hệ thống của bạn không phải C. Vì chntpw
khả năng ghi sổ đăng ký của bạn khá hạn chế, bạn cần phải dự phòng và sử dụng một hexeditor, như ghex2 để sửa nó. Bạn cần tìm \DosDevices\C:
và thay thế chữ C bằng ký tự ổ đĩa khác, F
trong trường hợp của tôi.
Sau đó, bạn sẽ có thể tiếp cận máy tính để bàn, bây giờ bạn cần phải tìm kiếm tất cả các trình điều khiển, nhưng điều này nằm ngoài phạm vi của hướng dẫn này.
Nguồn
Di chuyển Windows XP sang một phân vùng khác
Gắn kết VDI trong linux