VirtualBox, การนำเข้า OVA และข้อผิดพลาด E_INVALIDARG 0x80070057
อัปเดต:9 ธันวาคม 2568
เมื่อเร็วๆ นี้ ฉันพบปัญหาใหม่ในการผจญภัยในโลกเสมือนจริง ฉันต้องการส่งออกเครื่องเสมือน Linux เครื่องใดเครื่องหนึ่งของฉัน ดังนั้นฉันจึงสามารถใช้มันบนโฮสต์อื่นได้ บนกระดาษมีฟังก์ชันการทำงานอยู่ใน VirtualBox ไฟล์> ส่งออกอุปกรณ์ จากนั้น คุณเลือกเครื่องเสมือนที่ต้องการ ตัดสินใจว่าคุณต้องการใช้รูปแบบใด กำหนดค่าที่อยู่ MAC และปล่อยให้ VirtualBox สร้างไฟล์ ova บนโฮสต์เป้าหมาย คุณนำเข้าอุปกรณ์นี้
ฉันพยายามทำเช่นนี้และพบข้อผิดพลาด GUI บอกว่า E_INVALIDARG 0x80070057 โดยไม่มีรายละเอียดมากเกินไป เมื่ออ่านตั๋วในฟอรัม VirtualBox ฉันได้เรียนรู้ว่าอาจมีปัญหาหลายประการสำหรับความล้มเหลวในกระบวนการนำเข้า แทนที่จะพยายามแก้ไขปัญหาที่อาจเกิดขึ้นทีละปัญหา ฉันเลือกเส้นทางอื่น การนำเข้าเครื่องจักรด้วยตนเองโดยไม่ต้องใช้กระบวนการ OVA ให้ฉันแสดงให้คุณดู
OVA เป็นเพียงไฟล์เก็บถาวร
ในทางเทคนิค อุปกรณ์ดังกล่าวเป็นข้อมูลเครื่องเสมือนทั้งหมดที่รวมอยู่ในไฟล์เดียว ภายใน คุณจะมีดิสก์เสมือนของคุณ (และสแน็ปช็อตใดๆ) รายการเครื่องเสมือน และอื่นๆ ไม่มีความลึกลับที่ยิ่งใหญ่อยู่ที่นั่น กระบวนการนำเข้าเพียงแยกไฟล์เหล่านี้ออก แยกวิเคราะห์ไฟล์การกำหนดค่า (.vbox) และหากมีข้อผิดพลาดที่ไม่สามารถแก้ไขได้ เช่น เส้นทางไดรฟ์ซีดีเสมือนหรือเส้นทางโฟลเดอร์ที่ใช้ร่วมกัน กระบวนการจะหยุด
ดังนั้นเราจึงสามารถทำสิ่งเดียวกันได้ด้วยตนเอง
ขั้นตอนที่ 1:สร้างโคลนของเครื่องเสมือนของคุณ
เหตุผลที่คุณต้องการทำเช่นนี้มีดังนี้:ช่วยให้คุณสามารถโคลนเฉพาะสแนปชอตล่าสุดได้ หากคุณใช้ใดๆ ทำให้เครื่องเสมือนใหม่มีขนาดเล็กลง คุณจะมีสแน็ปช็อตน้อยลงและนำมาพิจารณาเมื่อคุณคัดลอกข้อมูลเครื่องเสมือนไปยังโฮสต์ใหม่ แต่ก็ไม่ได้บังคับ
เหตุผลที่คุณอาจต้องการคัดลอกเฉพาะสถานะล่าสุดก็เนื่องจากทำให้การจัดการเครื่องจักรง่ายขึ้น และลดปริมาณข้อมูลที่จำเป็นสำหรับการถ่ายโอน หากคุณกำลังส่งออกผ่านเครือข่าย สิ่งนี้อาจสร้างความแตกต่างอย่างมาก (แม้แต่บน LAN)
ขั้นตอนที่ 2:คัดลอกโฟลเดอร์เครื่องเสมือนทั้งหมดไปยังโฮสต์ที่สอง
โครงสร้างของโฟลเดอร์เครื่องเสมือน VirtualBox ใดๆ จะเป็นดังนี้:ไดเร็กทอรีชื่อ Logs และ Snapshots, ดิสก์เสมือนอย่างน้อยหนึ่งดิสก์ (โดยปกติจะเป็นรูปแบบ .vdi) และไฟล์การกำหนดค่าที่มีส่วนต่อท้าย .vbox (ส่วนขยาย) รวมถึงอาจเป็นไฟล์การกำหนดค่าที่สองที่มีส่วนต่อท้าย .vbox-prev (หากคุณทำการเปลี่ยนแปลง)
ไฟล์ vbox เป็นไฟล์ Manifest XML พร้อมด้วยการประกาศทุกประเภทที่คุณเห็นใน GUI คุณไม่ควรแก้ไขไฟล์นี้ในขณะที่เครื่องใดๆ กำลังทำงานอยู่ แต่คุณสามารถทำได้อย่างปลอดภัยสำหรับเครื่องใดๆ ที่อยู่ในสถานะออฟไลน์ การเปลี่ยนแปลงจะมีผลในครั้งถัดไปที่คุณเปิดเครื่องนั้น ตัวอย่างเช่น ใต้สื่อ คุณจะเห็นส่วนของ HardDisks ที่แสดงรายการดิสก์และสแน็ปช็อตทั้งหมด:
...
<ฮาร์ดดิสก์>
<ฮาร์ดดิสก์ uuid="{dfcda294-6feb-4ef8-8bc8-e67ad57e2cc6}"
ตำแหน่ง ="Kubuntu-24.04.vdi"
รูปแบบ ="VDI"
ประเภท ="ปกติ">
<ฮาร์ดดิสก์ uuid="{f062fe0b-578c-4461-9a10-8d65d28347ac}"
ตำแหน่ง ="ภาพรวม/{f062fe0b-578c-4461-9a10-8d65d28347ac}.vdi"
รูปแบบ ="VDI">
<ฮาร์ดดิสก์ uuid="{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}"
ตำแหน่ง ="ภาพรวม/{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}.vdi"
รูปแบบ ="VDI"/>
ฮาร์ดดิส>
ฮาร์ดดิส>
ฮาร์ดดิสก์>
...
การประกาศนี้แจ้งให้เราทราบว่าเครื่องใดเครื่องหนึ่งใช้ฮาร์ดดิสก์ชื่อ Kubuntu-24.04.vdi และมีสแนปช็อตสองภาพที่เกี่ยวข้องกัน คุณเข้าใจแนวคิดนี้แล้ว
เอาล่ะ คัดลอกข้อมูลทั้งหมดนี้ ทั้งโฟลเดอร์ ไปยังโฮสต์ที่สองของคุณ
ขั้นตอนที่ 3:ตรวจสอบเส้นทาง
ก่อนที่คุณจะ "นำเข้า" เครื่องเสมือน คุณควรเปิดไฟล์ vbox ในโปรแกรมแก้ไขข้อความ และมองหาเส้นทางที่ "ตลก" ซึ่งจะรวมถึงไฟล์ ISO ใดๆ ที่ติดตั้ง, พาธของแขกที่ใช้ร่วมกันหรือสิ่งที่คล้ายกัน, สิ่งใดก็ตามที่ฮาร์ดโค้ดไปยังระบบแรกและอาจไม่มีอยู่ในระบบที่สอง ข้อผิดพลาดดังกล่าวจะทำให้การเพิ่มเครื่องเสมือนใหม่ล้มเหลว สิ่งนี้จะไม่ชัดเจนเมื่อคุณใช้ไฟล์เก็บถาวร OVA แต่คุณจะมองเห็นและควบคุมได้อย่างสมบูรณ์เมื่อดำเนินการด้วยตนเอง
ตัวอย่างเช่น สมมติว่าคุณใช้เส้นทางของผู้เยี่ยมชมที่ใช้ร่วมกันที่แตกต่างกันบนทั้งสองระบบ วิธีที่ง่ายที่สุดในการค้นหาการประกาศที่เกี่ยวข้องคือการค้นหาเส้นทางเฉพาะที่คุณรู้ว่าคุณได้ใช้ในระบบแรก ตรวจสอบสิ่งที่เขียนว่า:
<โฟลเดอร์ที่ใช้ร่วมกัน>
<ชื่อโฟลเดอร์ที่ใช้ร่วมกัน ="SHARED_FOLDER"
hostPath="G:\เครื่องเสมือน\โฟลเดอร์ที่ใช้ร่วมกัน"
เขียนได้ ="จริง"
ออโต้เมาท์ ="จริง"
autoMountPoint ="SHPATH"/>
ในที่นี้ ฉันใช้ตัวอย่างเส้นทางที่ตั้งค่าไว้ในไดรฟ์ G:(Windows) แต่เส้นทางดังกล่าวอาจไม่อยู่ในระบบที่สองของคุณ หรืออาจถูกตั้งค่าภายใต้ตัวอักษรอื่น ดังนั้นคุณจะต้องเปลี่ยนสิ่งนี้เพื่อพูดว่า:
hostPath="P:\เส้นทางที่แตกต่างกัน\โฟลเดอร์ที่ใช้ร่วมกัน"
และหากระบบที่สองของคุณคือ Linux ก็อาจจำเป็นต้องเป็นอย่างอื่นทั้งหมด:
hostPath="/home/dedoimedo/Shared-folder"
นอกเหนือจากเส้นทางฮาร์ดโค้ดเหล่านี้ คุณยังสามารถใช้โอกาสนี้เพื่อปรับการตั้งค่าอื่นๆ รวมถึงการจัดสรรหน่วยความจำ จำนวนคอร์ CPU การใช้อะแดปเตอร์กราฟิกเฉพาะ และอื่นๆ แต่วิธีที่ดีที่สุดคือทำการเปลี่ยนแปลงทีละรายการ ลองเพิ่มเครื่องเสมือน และดูว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่
เมื่อคุณแก้ไขไฟล์ vbox ตามต้องการแล้ว เพียงดับเบิลคลิก ด้วยการติดตั้งเริ่มต้น ทั้งใน Windows และ Linux สตริงและประเภทไฟล์เฉพาะนี้จะเชื่อมโยงกับไฮเปอร์ไวเซอร์ VirtualBox หากการกำหนดค่า XML ถูกต้อง เครื่องเสมือนจะแสดงในรายการของคุณ เสร็จแล้ว
ขั้นตอนที่ 3:แนวทางทางเลือก
หากคุณรู้สึกไม่สะดวกใจในการแก้ไขไฟล์ XML คุณสามารถดำเนินการดังต่อไปนี้:
- โคลนเครื่องเสมือน
- เปิดการตั้งค่า (ผ่าน VirtualBox GUI) ลบเส้นทางที่ฮาร์ดโค้ด เช่น ไฟล์ ISO, โฟลเดอร์ที่แชร์ ฯลฯ
- คัดลอกเครื่องเสมือนไปยังปลายทางใหม่
- ดับเบิลคลิกที่ไฟล์ vbox เพื่อเพิ่มลงในไฮเปอร์ไวเซอร์
- เปิดการตั้งค่าอีกครั้ง และเพิ่มเส้นทางใหม่ตามที่ควรจะเป็นบนอุปกรณ์เครื่องที่สอง
- เปิดเครื่องเสมือนและทำงานของคุณ
คำเตือนและข้อจำกัดด้านลิขสิทธิ์ที่เป็นไปได้
ดังที่คุณอาจสังเกตเห็นข้างต้น ฉันใช้เครื่องเสมือน Linux สำหรับกระบวนการคัดลอก/ย้ายข้อมูล กล่าวโดยเฉพาะเจาะจงคือ Linux และ Kubuntu เนื่องจากการกระจาย Linux นี้ไม่มีข้อจำกัดในการใช้งาน ทั้งจำนวนระบบ หรือจำนวน "ใบอนุญาต"
หากคุณทำเช่นนั้นด้วยระบบปฏิบัติการที่เป็นกรรมสิทธิ์ เช่น Windows คุณอาจปิดการใช้งานใบอนุญาตของคุณเนื่องจากการเปลี่ยนแปลงฮาร์ดแวร์ หรือคุณอาจต้องซื้อใหม่ หากคุณใช้โปรแกรม (แบบชำระเงิน) บางตัวที่ได้รับอนุญาตให้ใช้งานกับโฮสต์เดียวหรืออินสแตนซ์ที่ทำงานอยู่ตัวเดียว คุณจะต้องคำนึงถึงสิ่งนี้ด้วย เนื่องจากการสร้างสำเนาใหม่ของเครื่องเสมือนอาจทำให้เกิดปัญหากับใบอนุญาตของคุณหรือเงื่อนไขการใช้งานสำหรับซอฟต์แวร์ดังกล่าว
บทสรุป
หากขั้นตอนแบบอัตโนมัติที่ห่อหุ้มอย่างดีไม่ได้ผลสำหรับคุณ วิธีการแบบแมนนวลอาจทำได้ ฉันได้ทดสอบวิธีการคัดลอกโฟลเดอร์ + การเปลี่ยนแปลง XML หลายครั้งด้วยเครื่องเสมือนหลายเครื่องจากและไปยังระบบปฏิบัติการ Windows และ Linux ผลลัพธ์ที่ได้ก็ยอดเยี่ยม แน่นอนว่าคุณอาจต้องปรับการตั้งค่าสักหนึ่งหรือสองอย่าง แต่แล้วคุณก็ดูดีสุดๆ ภายในขอบเขตของข้อจำกัดสิทธิ์การใช้งานซอฟต์แวร์ของคุณ นั่นก็คือ
หวังว่าบทช่วยสอนนี้จะมีประโยชน์ การดีบักรหัสข้อผิดพลาดเฉพาะอาจเป็นเรื่องที่น่าเบื่อ เนื่องจากข้อผิดพลาดในการนำเข้ามักจะเกิดข้อผิดพลาดดังกล่าว ในขณะที่วิธีแก้ปัญหาเฉพาะนั้นมีมากมายและหลากหลาย ขั้นตอนการคัดลอกด้วยตนเองนั้นมีประสิทธิภาพ แต่คุณต้องคำนึงถึงบางสิ่ง ซึ่งส่วนใหญ่เป็นเส้นทางแบบฮาร์ดโค้ดในการกำหนดค่าของคุณ คุณสามารถแก้ไขสิ่งเหล่านี้ก่อนหรือหลังการคัดลอก เพื่อให้แน่ใจว่าสามารถเพิ่มเครื่องเสมือนใหม่ได้อย่างราบรื่น เอาล่ะคุณไป การจำลองเสมือนมีความสุข
ไชโย