ผมคิดอย่างหนักว่าหัวข้อที่ดีที่สุด น่าอธิบายและมีประโยชน์ที่สุดสำหรับวันนี้คืออะไร และได้เรื่องนี้ออกมา สรุปสั้นๆ โน้ตบุ๊กทดสอบ Lenovo G50 ของผม ซึ่งรันการตั้งค่า 8-boot ด้วย Windows และ Linux distro ต่างๆ เพิ่งมี NVRAM กลายเป็น read-only ผมไม่สามารถเปลี่ยนการตั้งค่า UEFI ใดๆ ได้ และดังนั้นจึงไม่สามารถบูทจากสื่อภายนอกและติดตั้งระบบใหม่ได้
อย่างไรก็ตาม ผมยังต้องการสามารถเปลี่ยนแปลงการตั้งค่าที่มีอยู่ได้ จึงใช้เวลาคิด ว่ามีทางรอบข้างหรือไม่ มีครับ! วันนี้จะแสดงทริกที่ค่อนข้างอันตราย (ทางข้อมูล) ที่ช่วยให้ผมติดตั้งระบบใหม่ได้แม้ข้อจำกัดฮาร์ดแวร์ที่ชัดเจน ตามมาดู
การเข้าถึงดิสก์ดิบ (Raw disk access) ของ VirtualBox
ก่อนเริ่ม ให้เตือนอย่างร้ายก spawn:
สิ่งที่จะพูดถึงวันนี้ ต้องการความรู้ระดับผู้เชี่ยวชาญและความมั่นใจในการทำงานกับ virtualization และ raw disk access เป็นชุดการดำเนินการที่ทุจริตและอันตรายมาก อาจนำไปสู่การสูญเสียข้อมูลรุนแรงและความทุกข์ทรมานอย่างมหาศาล หากคุณปฏิบัติตามคำแนะนำของผมด้วยเหตุผลใดก็ตาม คุณอาจสิ้นสุดลงด้วยระบบที่พังทลาย และสูญเสียข้อมูลส่วนตัวที่มีค่า ตอนนี้ ดำเนินการด้วยความระมัดระวัง
ตอนนี้ เมื่อคุณสำรองข้อมูลและทำ image ระบบแล้ว คุณสามารถเริ่มพิจารณาทดสอบได้ ดังนี้คือวิธีการทำงาน: VirtualBox อนุญาตให้คุณ mount ดิสก์ทั้งหมดหรือ partition เฉพาะเป็น virtual disks นั่นคือที่มาของคำว่า raw access แทนที่จะสร้าง file container ที่จะเป็น virtual disk คุณใช้ฮาร์ดแวร์จริงโดยตรง
และไอเดียจึงกลายเป็น: ผมสามารถสร้าง virtual machine ใช้คุณสมบัติ raw disk access บูทจาก ISO ติดตั้งระบบปฏิบัติการที่เกี่ยวข้องลงบน physical partition ข้ามการตั้งค่า bootloader แล้วเข้าไปใน instance จริงของระบบปฏิบัติการที่ควบคุมลำดับบูท (ในกรณีนี้คือ openSUSE) และอัปเดต GRUB ที่นั่น
สร้าง raw disk
คำสั่งต่อไปนี้จะทำ魔法ให้คุณ:
VBoxManage internalcommands createrawvmdk -filename file.vmdk -rawdisk /dev/sdX -partitions Y,Z -relative
เรามีอะไรบ้าง? เราสร้างดิสก์ ไว้ที่ไหนก็ได้ อาจอยู่ใน home directory หรือโฟลเดอร์เฉพาะที่เก็บ virtual machines ทั้งหมด คุณระบุ raw disk ที่ต้องการใช้ (ในกรณีของผคือ /dev/sda) และ partition ที่ต้องการใช้ ผมเลือกเพียงหนึ่ง (/dev/sda8 ซึ่งโฮสต์ CentOS 7.2) และใช้ flag relative ซึ่งอนุญาตให้เขียนเฉพาะ partition นั้นเท่านั้น นี่ควรจำกัดความเสียหายที่อาจเกิดได้
VBoxManage internalcommands createrawvmdk -filename test.vmdk -rawdisk /dev/sda -partitions 8 -relative
VBoxManage internalcommands createrawvmdk -filename /home/roger/test.vmdk -rawdisk /dev/sda -partitions 8 -relative
RAW host disk access VMDK file /home/roger/test.vmdk created successfully.
คุณควรเรียกใช้คำสั่งนี้ด้วย sudo หรือ root คุณควรเริ่ม VirtualBox ด้วยวิธีเดียวกัน (ไม่ว่าสิทธิ์ไฟล์และเจ้าของ vmdk จะเป็นอย่างไร) เพราะเหมือนกับการ mount คุณต้องการสิทธิ์พิเศษเพื่อจับอุปกรณ์
สังเกต storage: ดิสก์ 1TB แม้ partition Kubuntu จะมีแค่ 100 GB เพราะเราใช้ raw disk access
ถ้าลองโดยไม่ใช้ sudo หรือ root คุณจะได้ error น่ากลัวและไม่ช่วยได้เลย:
Result Code: VBOX_E_FILE_ERROR (0x80BB0004)
Component: MediumWrap
Interface: IMedium {4afe423b-43e0-e9d0-82e8-ceb307940dda}
Callee: IVirtualBox {0169423f-46b4-cde9-91af-1e9d5b6cd945}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
คุณสมบัติ UEFI
ยังมีอีก UEFI system พร้อม GPT disk layout หมายความว่าคุณต้องใช้ SATA controller สำหรับดิสก์ และ mount ISO แบบเดียวกัน นอกจากนี้ คุณต้องระบุ EFI ในการตั้งค่า virtual machine ตอนผมพูด you คือ me เพราะคุณไม่ควรทำอย่างนี้
การทดสอบ
แน่นอน ผมสามารถบูท virtual machine แบบนี้ได้ง่าย คุณเห็นโครงสร้างดิสก์ทั้งหมด ไม่มีทางหลบพ้น และตอนนี้กลายเป็นเรื่องการติดตั้งที่เรียบง่าย และความ tập trungสูง เพื่อไม่ให้เกิดความเสียหายหรือการเสียหาย แต่สิ่งนี้เสนอวิธีการวางข้อมูลใหม่ลงบน partition
ทางเทคนิค คุณยังสามารถบูท virtual machine แล้วคัดลอกข้อมูลจาก live media ที่ขยายและ mount แล้วลงฮาร์ดดิสก์ คุณสามารถใช้ dd ได้ แต่เรากำลังเข้าสู่ขอบเขตของบ้าคลั่งและน่าสนใจ
นี่คือสิ่งที่เราเรียกว่า Inception
สรุป
คิดถึง raw access ว่าเป็นอาวุธเชิงรุกของคุณ คุณไม่เคยอยากใช้มัน แต่มันทำให้คุณสบายใจที่มันมีอยู่ และคุณสามารถพึ่งพาได้ถ้าจำเป็น วันฝนตก จะมาถึง แทนที่จะเป็นเช่นนั้น ผมเชื่อว่า organic in-vivo upgrades ควรน่าสนใจพอ และผมมีเครื่องทดสอบเก่าอีก vàiเครื่องที่จะให้ความบันเทิงที่จำเป็นในระหว่างการผจญภัย distro ของเรา
ถ้าคุณคิดถึงเรื่องนี้ จะมีทางออกเสมอ แต่ผมชอบหาทางออกที่สงบ ซึ่งหมายถึงพยายามทำให้ NVRAM เขียนได้อีกครั้งโดยไม่แยกแล็ปท็อปหรือเสี่ยงทุกอย่างบนดิสก์ ดังนั้น ถ้าคุณต้องการจริงๆ จริงๆ จริงๆ raw disk access ผ่าน virtualization เสนอ workaround ตอนนี้ เราไม่เคยใช้มัน ดูแลตัวเองนะ
Cheers.