Làm cách nào để sao chép nội dung VirtualBox VDI vào phân vùng và khởi động kép HĐH từ nó?


12

Tôi là người dùng Linux nhưng tôi luôn mang theo Windows XP ISO được nén trên ổ đĩa bút trong trường hợp tôi hoàn toàn cần Windows để làm gì đó. Điều này hoạt động trong VirtualBox hầu hết thời gian.

Nhưng bây giờ tôi muốn chơi một số trò chơi, vì vậy tôi muốn chạy hình ảnh Windows nguyên bản. Máy tính của tôi không có ổ đĩa CD nên không thể ghi ISO và cài đặt bình thường.

Những gì tôi cố gắng làm là chuyển hình ảnh Windows đã cài đặt sang phân vùng NTFS vật lý trên ổ cứng của tôi và thiết lập GRUB để cho tôi khởi động kép.

Tôi tìm thấy nhiều hướng dẫn liên quan đến việc tạo VDI vào ổ đĩa vật lý. Nhưng họ cho rằng tôi muốn ghi đè lên toàn bộ ổ đĩa của mình. Di chuyển hình ảnh đĩa thô với ddphân vùng dẫn đến phân vùng bị hỏng.

Tôi cũng đã thử mẹo VMDK để sử dụng phân vùng trống đó và cài đặt Windows trên nó. Mặc dù giai đoạn chế độ văn bản của quá trình cài đặt kết thúc mà không gặp vấn đề gì, VM sẽ không hoạt động, gặp sự cố và tiếp tục khởi động lại hoặc chỉ đóng băng ngay lập tức (tùy thuộc vào cách tôi tạo VMDK, với -rawdisk /dev/sda3hoặc -rawdisk /dev/sda -partition 3).

Câu trả lời:


4

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 nbdtrình điều khiển và qemu-nbdlệnh. Trên Ubuntu có trong qemu-kvmgó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ố nbdthiế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/nbd0p3vv 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 ddcho đ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 ddim 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 disknhó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 ddphâ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 -ullệnh. Các startlĩ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 1Cbù. Ít endiean có nghĩa là: 0xABCDEFGHsẽ đượ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/sdbvv 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/systembạ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ì chntpwkhả 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, Ftrong 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


0

bạn có thể thử sử dụng partimage và gdisk để thực hiện. Lấy gdisk hoặc một chương trình phân vùng khác và thay đổi kích thước đĩa hiện tại của bạn / thiết lập một phân vùng trên một số đĩa. ý tưởng nó sẽ là một phân vùng chính. Tôi thường giữ phân vùng 1 cho windows và 2+ cho dữ liệu linux.

khi một phân vùng được thiết lập, bạn có thể sử dụng gdisk hoặc bản sao ma khác để tạo các tệp sao lưu hoặc hình ảnh thẳng vào ổ đĩa khác. Có thể thiết lập kết nối mạng với máy chủ nếu bạn cần thả tệp theo cách đó hoặc bạn có thể tạo tệp img sau đó sao chép từ tệp vmdk sang hệ thống máy chủ của mình ... sau đó sử dụng phần mềm hình ảnh để khôi phục phân vùng đến vị trí bạn đã tạo trên hệ thống máy chủ

cấu hình grub khi cần thiết để thêm khả năng khởi động vào phân vùng ntfs đó.


bạn có thể cũng có thể tạo ra vmdk trong một trình tạo cho phép phần mềm hình ảnh đọc trực tiếp từ máy chủ jsut tùy thuộc vào cách phần mềm hình ảnh.
Kendrick

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. Tôi sẽ viết nó ra một cách chi tiết. Nó không tầm thường.
Calmarius

nó khá mỉa mai nhưng tôi sẽ cần phải thực hiện quá trình này sớm. Tôi có một máy tính không thích cài đặt solaris vì một số lý do vì vậy tôi phải kéo dữ liệu từ một vm tôi có sang máy mới.
Kendrick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.