Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Cách boot từ ổ USB trong VirtualBox - Hướng dẫn

Cập nhật: 12 tháng 2, 2024

Trong VirtualBox, khi bạn tạo máy ảo mới, thường thì bạn có "hai" tùy chọn để khởi động hệ điều hành khách. Bạn có thể boot từ file ISO (tương đương ổ CD/DVD), hoặc boot từ ổ cứng ảo. Nhưng nếu bạn thực sự có hệ điều hành trên ổ USB, và muốn dùng đó làm phương tiện khởi động?

Có nhiều lý do bạn muốn làm điều này. Ví dụ, hệ điều hành có thể không có sẵn trong định dạng thân thiện đơn giản như ISO. Hoặc bạn có thể甚至 không có ISO nguồn, chỉ có sản phẩm cuối cùng, bảng phân vùng và dữ liệu trên ổ ngoài. Trong hướng dẫn hôm nay, tôi sẽ chỉ cho bạn cách boot từ ổ USB có sẵn (có thể boot), và chạy bất kỳ hệ điều hành nào nằm trên đó. Chúng ta sẽ dùng Linux làm nền tảng lựa chọn. Theo tôi.

Tùy chọn raw disk, và LỜI CẢNH BÁO LỚN

VirtualBox hỗ trợ tùy chọn boot từ thiết bị "raw". Nói cách khác, bạn có thể cấu hình thiết bị lưu trữ hiện có, nội bộ hoặc ngoại vi, như thiết bị raw, và sau đó boot từ nó. Điều này có thể là bất kỳ hệ điều hành nào, bao gồm thiết lập dual-boot hay multi-boot. Về mặt kỹ thuật, bạn thậm chí có thể map ổ hệ điều hành của bạn (trong Windows, có thể là phân vùng chứa C:\), và khởi động nó. Và Herein lies the great danger of using raw devices. Quá dễ dàng để cấu hình sai ổ. Một chữ cái sai, và bạn có thể tiềm ẩn phá hủy ổ hiện có và bất kỳ dữ liệu nào lưu trên chúng. Do đó, bạn phải siêu cẩn thận khi thử chức năng raw device. Tôi có người bạn đã phá hủy laptop của họ cách này. Thật sự. Bạn đã được cảnh báo. Bây giờ hãy tiến hành.

Tạo file disk và map tới raw device

Lệnh sau sẽ tạo raw disk:

sudo VBoxManage createmedium disk --filename=[file.vmdk] --format=VMDK --variant=RawDisk --property RawDrive=[device]

Chúng ta có gì ở đây?

Hai yếu tố quan trọng nhất là:

  • filename - Đây là file (định dạng VMDK) mà VirtualBox sẽ nhận diện raw device.
  • RawDrive - Đây là raw device thực tế chúng ta muốn map tới filename.

Vị trí file trên ổ không thực sự quan trọng. Nhưng xác định đúng raw device là then chốt. Trong Linux, bạn có thể kiểm tra danh sách thiết bị với fdisk. Bạn cần nhận biết ký hiệu ổ cứng, và dung lượng đúng. Bạn có thể bắt đầu với fdisk -l đơn giản để xem tất cả thiết bị cục bộ. Điều này cũng sẽ hiển thị bất kỳ thiết bị loopback nào (như snaps). Sau đó, khi bạn có hiểu biết cơ bản về topology lưu trữ, bạn có thể thu hẹp danh sách. Ví dụ:

sudo fdisk -l /dev/nvme*

Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: C096EC37-7278-4E24-98C6-6A3906628E91

Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 4550655 3500032 1.7G Linux filesystem
/dev/nvme0n1p3 4550656 1953523711 1948973056 929.3G Linux filesystem

Và tương tự:

sudo fdisk -l /dev/sdb
Disk /dev/sdb: 14.91 GiB, 16008609792 bytes, 31266816 sectors
Disk model: Cruzer Switch
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A674DC54-3E17-4C42-8B62-90E4DCE4AEB3
...

Trong trường hợp này, fdisk cũng in thông tin model ổ, khá hữu ích. Cách này, việc nhận biết và phân biệt ổ thumb USB ngoại vi từ ổ cứng nội bộ, mà bạn rất có thể muốn tránh, trở nên dễ dàng hơn. Một số bản phân phối cũng cung cấp cách GUI xem thông tin thiết bị:

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Ví dụ, nếu ổ thumb của bạn được map tới /dev/sdb (trong Linux), thì bạn có thể chạy lệnh map raw device như sau:

sudo VBoxManage createmedium disk --filename=./Rdisk.vmdk --format=VMDK --variant=RawDisk --property RawDrive=/dev/sdb

Đây là nơi bạn cần extra cẩn thận, vì bạn cần xác định đúng ổ USB. Nếu map sai thiết bị, có thể có vấn đề và mất dữ liệu sau này.

sudo VBoxManage createmedium disk --filename=./Rdisk.vmdk --format=VMDK --variant=RawDisk --property RawDrive=/dev/sdb
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 041a84a8-9d9a-4ae3-a4a1-5393a24f6f7d

Khi lệnh hoàn tất, khởi chạy VirtualBox.

Thêm ổ mới vào danh sách thiết bị lưu trữ có sẵn

Bước tiếp theo là gắn ổ mới tạo. Bạn có thể làm qua công cụ Hard Disk Selector trong VirtualBox. Nhấn Tools > Media > Add, tìm file VMDK, và thêm. Nhưng đợi. Để làm được điều này, bạn cần đúng quyền. Thực tế, ngay cả khi bạn có thể thêm ổ, máy ảo vẫn có thể không khởi động, và bạn có thể gặp một số lỗi khác nhau. Chúng ta sẽ giải quyết ngay. Hiện tại, giả sử quyền đúng.

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Khi bạn đã thêm ổ, mở settings máy ảo, nhấn Storage. Mặc định, rất có thể đã có controller SATA được gán, với một ổ (VDI). Chọn nó, rồi nhấn biểu tượng + màu xanh để thêm ổ, và chọn file VMDK. Nếu không có controller SATA, trước tiên nhấn biểu tượng + màu xanh lá, thêm controller SATA, rồi nhấn + màu xanh lá, và thêm ổ. Trong ví dụ dưới đây, thiết lập "cuối cùng" của tôi bao gồm hai ổ được gán, một ổ Windows 11 (định dạng VDI), và Rdisk.vmdk của tôi (định dạng VMDK). Tôi xóa ổ quang ảo mặc định, vì tôi sẽ không boot từ file ISO.

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Điều tôi muốn làm như sau: Tôi đã tạo phương tiện cài đặt Windows 11 với Rufus, một công cụ tuyệt vời, cho phép tùy chỉnh trải nghiệm cài đặt. Cụ thể, nó có thể loại bỏ một số rắc rối bạn thường thấy trong quá trình cài Windows. Nhưng Rufus ghi phương tiện và cấu hình của nó độc quyền cho thiết bị ngoại vi. Nó không tạo file ISO.

Do đó, để test xem Rufus làm tốt việc của nó, tôi cần boot thiết bị USB đâu đó, và xem kết quả. Tôi có thể làm trên hộp vật lý, nhưng đó không phải lúc nào cũng là tùy chọn dễ dàng, nhất là nếu bạn cần format ổ và cài hệ thống đó. Thay vào đó, máy ảo là sự thay thế hoàn hảo cho test, nhưng thì cần boot từ ổ USB thay vì ảo CD (file ISO).

Vì vậy, trong ví dụ trên, máy ảo của tôi có ổ Windows (trống), cộng raw device gắn kết, mà chúng ta chỉ dùng trong cài đặt. Về mặt kỹ thuật, bạn có thể gắn nhiều ổ có thể boot cho một máy ảo, và sau đó bạn phải chắc chắn chúng boot theo thứ tự đúng trong BIOS máy.

Các lỗi có thể xảy ra

Khi bạn tạo raw disk mới, quyền của nó sẽ là, trong Linux, 0600 và sở hữu root:root. Điều này nghĩa là bạn không thể truy cập file này, chứ đừng nói dùng trong VirtualBox. Bạn cần thay đổi quyền bằng cách thêm rwx cho user khác, hoặc thay đổi sở hữu (tốt hơn). Giống như:

sudo chown roger:roger file.vdmk

Hoặc có lẽ:

sudo chown roger:vboxusers file.vdmk

Nhưng này chưa đủ. Bạn rất có thể gặp lỗi VERR_ACCESS_DENIED:

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Permission problem accessing the file for the medium 'path-to-your-vmdk-file' (VERR_ACCESS_DENIED).

Result Code: VBOX_E_FILE_ERROR (0X80BB0004)
Component: MediumWrap
Interface: IMedium {ad47ad09-787b-44ab-b343-a082a3f2dfb1}
Callee: IVirtualBox {7682d5eb-f00e-44f1-8ca2-99d08b1cd607}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0X80BB0001)

Lý do là, ngay cả khi user của bạn thiết lập đúng, và bạn là thành viên nhóm vboxusers, bạn vẫn cần riêng cho phép user truy cập raw devices (nhóm disk). Điều này có thể làm bằng:

sudo usermod -a -G disk $USER

Sau này, bạn có thể logout, và login lại để thay đổi có hiệu lực. Cũng có cách làm không cần logout, nhưng đây là cách đơn giản nhất cho hầu hết mọi người. Một phương án thay thế cho toàn bộ vấn đề này, cả trong Windows và Linux, là khởi động VirtualBox với đặc quyền quản trị. Nhưng đó không phải ý tưởng thông minh nói chung, vì mọi thứ bạn làm, bao gồm tất cả lỗi, sẽ phản ánh mức quyền cao.

Boot và test

Bây giờ chúng ta đã sắp xếp tất cả vấn đề khác nhau, hãy xem mọi thứ hoạt động. Thực sự, tôi thấy màn hình boot tùy chỉnh, đã là dấu hiệu Rufus đang làm việc. Và trong giai đoạn cài đặt, tôi thấy cả hai ổ cứng, ổ nhỏ đó thực tế là raw device (ổ USB) và ổ ảo lớn hơn, 100GB trống, mà thực tế là thiết bị cài đặt đích.

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Khởi động VirtualBox từ ổ USB: Hướng dẫn từng bước

Hai ổ: ổ 0 là ổ USB 16GB với hai phân vùng, chúng ta không muốn đó làm đích cài đặt (do đó rủi ro có thể dùng raw device trong VirtualBox); và ổ 1 là ổ ảo 100GB trống, không có bảng phân vùng. Vẫn thế, bạn cần cực kỳ cẩn thận, khi có hơn một tùy chọn.

Kết luận

Bây giờ bạn đã nắm hướng dẫn này, bạn có thể bắt đầu chơi thật. Bạn có thể test thiết lập đa ổ, thử boot hệ điều hành đã tồn tại trên các thiết bị ngoại vi (và có thể nội vi). Bạn cũng có thể tạo thiết bị USB multi-boot, và kiểm tra xem chúng hoạt động đúng trong VirtualBox trước khi thử nghiêm túc trên phần cứng vật lý. Trong tất cả các trường hợp này, bạn cần thận trọng, vì chức năng raw disk phá vỡ ranh cách ly giữa host vật lý và guest ảo.

Hy vọng điều này hữu ích. Bước đầu tiên để dùng raw device trong VirtualBox là xác định đúng phương tiện lưu trữ. Nếu bạn không biết cách làm, hoặc bạn không chắc, hãy dừng lại, ngay bây giờ. Sau đó, khi bước này xong, bạn sẽ cần tạo file vmdk, và map nó tới đúng thiết bị. Tiếp theo, có thể có một số vấn đề quyền, và cuối cùng, bạn có thể gắn ổ, và boot máy ảo từ ổ USB. Đó là tất cả cho hôm nay, và nếu bạn có bất kỳ câu hỏi nào khác về VirtualBox, thả một hai dòng, và tôi có thể tạo hướng dẫn tươi mới, raw ở đây hoặc đó. Tạm biệt.

Chào.