मैं qemu-kvm का उपयोग करके एक लाइवसब से कैसे बूट करूं?


27

मैं अपने लाइव यूएसबी स्टिक से बूट करने के लिए qemu-kvm प्राप्त करने की कोशिश कर रहा हूं। क्या यह संभव है?

जवाबों:


23

qemu-kvm -hdb <device>, जहां <device>USB स्टिक (जैसे /dev/sdb) है, इसे करना चाहिए (एक यूएसबी स्टिक पर Ubuntu 12.04 के साथ परीक्षण किया गया और यह काम करता है)।

आपको डिवाइस को लिखने की अनुमति की आवश्यकता होगी (अर्थात rootइसकी अनुमतियाँ बदलें या बदलें)।


2
अच्छा उत्तर। BTW अगर आपको अपने VMs को प्रबंधित करने के लिए एक आसान इंटरफ़ेस की आवश्यकता है, तो पुण्य-प्रबंधक को एक कोशिश दें।
वाज़ोक्स

2
बस एक संकेत के रूप में: मैंने अपने लाइव यूएसबी स्टिक का परीक्षण करने के लिए kvm के बजाय वर्चुअलबॉक्स की कोशिश की, और यह बहुत तेजी से है। VirtualBox में उपयोग की जाने वाली vmdk फ़ाइल बनाने के लिए आपको इस कमांड को रूट के रूप में उपयोग करना होगा:VBoxManage internalcommands createrawvmdk -filename .VirtualBox/HardDisks/usbdisk.vmdk -rawdisk /dev/sdb
Marc MAURICE

4
यहाँ स्व के लिए एक छोटा सा नोट - -hdb( / /dev/sdb) में डिस्क / डिवाइस नोड का उपयोग करें ; विभाजन नहीं (जैसा कि /dev/sdb4)
सादाऊ

चेतावनी संदेश से बचने के लिए: छवि प्रारूप '/ dev / sdb' के लिए निर्दिष्ट नहीं किया गया था और जांच का अनुमान कच्चा था। कच्ची छवियों के लिए प्रारूप का स्वचालित रूप से पता लगाना खतरनाक है, ब्लॉक 0 पर कार्रवाई लिखना प्रतिबंधित होगा। प्रतिबंधों को हटाने के लिए स्पष्ट रूप से 'कच्चे' प्रारूप को निर्दिष्ट करें। आप इस प्रारूप में विकल्प निर्दिष्ट कर सकते हैं: इस प्रश्न को-drive file=/dev/sdb,format=raw,index=0,media=disk देखें
अशार्क

26

क्यूमू-केवीएम गायब हो गया है। इसके बजाय एक linux रूट को रास्ता देकर प्रारंभ qemu में संकेत का उपयोग करें । इसका मतलब है की

qemu-system-x86_64 -usb -usbdevice disk:/dev/sdb

जहाँ / dev / sdb usb स्टिक का आपका कच्चा उपकरण (विभाजन नहीं) है जिसे आप बूट करना चाहते हैं।

(हालांकि, 12/2014 के अनुसार, यह मेरे लिए परतदार है। उबंटू-सूक्ति 14.10 को बूट करना अंततः धातु पर ठीक बूट करने के लिए सत्यापित छड़ी पर एक कर्नेल घबराहट में परिणाम देता है।)

/ IAW


धन्यवाद, इसे ऑटो बूट के bin-x86_64-efi/ipxe.usbलिए एक EFI बूट के निर्माण की आवश्यकता है , और यह अब तक मुद्दों के बिना काम करता है।
NiKiZe

2
क्या आप अपना जवाब अपडेट कर सकते हैं? मुझे निम्नलिखित मिला: qemu-system-x86_64: -usbdevice disk:/dev/sdb: '-usbdevice' is deprecated, please use '-device usb-...' instead
अशार्क

8

मुझे नहीं पता कि वास्तव में क्यों, लेकिन रेनन का जवाब मेरे लिए काफी काम का नहीं था। KVM ने मुझसे कहा कि यह बूट करने योग्य ड्राइव नहीं पा सकता (usb विभाजन को इस तरह चिह्नित किए जाने के बावजूद)।

हालाँकि मुझे एक और उपाय मिल गया है। USB डिवाइस VendorID: ProductID को lsusb के साथ प्राप्त करें। उदाहरण:

$ lsusb
...
Bus 002 Device 007: ID 0781:5406 SanDisk Corp. Cruzer Micro U3

केवीएम को पास करें, और बूट मेनू के लिए पूछें:

sudo  kvm -m 512 -smp 1 -drive file=/path/to/hardisk/file.img -usb \ 
-usbdevice host:0781:5406 -boot menu=on

मेनू के लिए F12 दबाएं, USB डिवाइस चुनें, यह काम करता है। शायद बूट मेनू को कॉल करने की आवश्यकता के बिना यूएसबी बूट को कमांड करने का एक तरीका है, लेकिन मुझे मैन kvm में कोई भी नहीं मिला।


मेरे लिए, एक hdd ड्राइव के रूप में usb स्टिक पास करना मेरे लिए सही तरीके से काम करता है, लेकिन USB मोड के रूप में usb स्टिक पास करना -Boot मेनू = 1 पर) bios मोड में मुझे इसे चुनने की अनुमति देता है, syslinux मेन्यू दिखाता है (I फ़्लैश आर्चलिनक्स iso) dd के साथ usb स्टिक) और यह लोड करना शुरू कर देता है, लेकिन डिवाइस / देव / डिस्क / बाय-लेबल / ARCH_201903 के लिए 30 सेकंड प्रतीक्षा करने में विफल रहता है ... sd 2: 0: 0: 0 [sda] ड्राइव कैश को Print_req_error के माध्यम से लिखें: I / O त्रुटि, देव sda, सेक्टर 0 बफर I / O त्रुटि देव sda, लॉजिकल ब्लॉक 0, async पेज रीड ERROR: '/ dev / डिस्क / बाय-लेबल / ARCH_201903' उपकरण 30 सेकंड 2 तक नहीं दिखा)
uefi में

1

यदि आप एक भौतिक यूएसबी स्टिक के बजाय एक लाइवसब की छवि का उपयोग करना चाहते हैं , तो आप ऐसा कर सकते हैं

$ kvm -usbdevice disk:/path/to/liveusb.img -boot menu=on ...

"-बूट मेनू = पर" के बिना, kvm हमेशा उस हार्ड ड्राइव को पसंद करेगा जो आपने "-Drive" या "-hd [a | b | c | d | d]" के साथ सेट किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.