लिनक्स पर कमांड लाइन के साथ बूट करने योग्य आईएसओ से बूट करने योग्य यूएसबी कैसे बनाएं?


50

मेरे पास एक सीडी है जो एक आईएसओ फाइल से बनाई गई है जिसका उपयोग मैं उबंटू के कस्टम संस्करण को प्लॉप लाइनक्स के माध्यम से स्थापित करने के लिए करता हूं।

सीडी ठीक काम करता है, लेकिन मैं इसके बजाय एक बूट करने योग्य USB ड्राइव का उपयोग करना चाहता हूं। मैंने बूट करने योग्य USB बनाने और बनाने के लिए कमांड dd का उपयोग किया:

dd if=filename.iso of=/dev/sdb1 bs=4k

अब यह फाइलों को कॉपी करता है और USB को बूट करने योग्य बनाता है लेकिन मुझे "मिसिंग ऑपरेटिंग सिस्टम" की त्रुटि मिलती है

कोई विचार?


क्या आपके पास केवल कमांड लाइन तक पहुंच है? वहाँ Unetbootin की तरह इंटरफेस हैं जो बहुत अच्छी तरह से काम करते हैं और लिनक्स पर चलते हैं ..
डैशबोर्ड

3
@ डैशबोर्ड मैं कमांड लाइन को प्राथमिकता दूंगा क्योंकि यह हर लिनक्स मशीन पर उपलब्ध है।
xsdf


@ डैशबोर्ड - GUI टूल कभी भी मेरे लिए अच्छा काम नहीं करते हैं, और यह लगातार कई वर्षों से सच है। मुझे कमांड लाइन विधि जानकर खुशी हुई। मुझे यह आसान और अधिक विश्वसनीय लगता है। यह बहुत कम निराशा होती है!
MountainX

जवाबों:


58

ठीक है, कुछ शोध के बाद मैंने एक समाधान निकाला है, और मैं इसे चरण दर चरण आगे बढ़ाऊंगा। समस्या दो गुना थी।

  1. USB फ्लैश ड्राइव में प्लग करें और उस डिवाइस को निर्धारित करें जिसे यह कमांड के साथ लगाया गया है:

    sudo fdisk -l
    

    इस बार यह मेरे लिए / dev / sdc1 था, इसलिए मैं इसे अपने उदाहरण के रूप में उपयोग करूँगा।

  2. डिवाइस को आगे बढ़ाएं

    umount /dev/sdc1
    
  3. निश्चित नहीं है कि यदि आवश्यक हो, लेकिन मैंने FAT32 में ड्राइव को स्वरूपित किया, बस मामले में

    sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
    
  4. अब मेरा ISO आइसोलेटिनक्स का उपयोग कर रहा था न कि सिस्लिनक्स का। मुझे पता था कि यह सीडी के साथ काम करता है, इसलिए मुझे पता चला कि मुझे isohybrid कमांड को कॉल करने की आवश्यकता है, जो कि हार्ड ड्राइव से BIOS द्वारा पहचाने जाने वाले आईएसओ के लिए अनुमति देता है।

     isohybrid filename.iso
    

    आप यहां इस कमांड के बारे में अधिक जानकारी प्राप्त कर सकते हैं , लेकिन यह "मिसिंग ऑपरेटिंग सिस्टम" संदेश का कारण था, पहली समस्या तय हो गई थी, लेकिन अब यह कहा गया कि "आइसोलिनक्स.बिन गायब या भ्रष्ट था"

  5. अगला कदम आइसो की नकल करना है। मेरी दूसरी समस्या यहाँ है, जहाँ मैं विभाजन की प्रतिलिपि बना रहा था, sdc1, युक्ति नहीं, sdc।

    sudo dd if=filename.iso of=/dev/sdc bs=4k
    

    यह ठीक काम करने के लिए लगता है, लेकिन मंच जहां मुझे आखिरी फिक्स मिला, यह डिवाइस को अनप्लग करने से पहले निम्नलिखित करने की सिफारिश की गई थी:

    sync
    sudo eject /dev/sdc
    

3
यहां dd की प्रगति की जांच करने का एक तरीका है: unix.stackexchange.com/a/11264/13011
निकोस एलेक्जेंड्रिस

3
यहां एक धारणा बनाते हुए, मुझे लगता है कि mkdosfsकमांड आवश्यक नहीं हो सकता है, क्योंकि आइसो में पहले से ही एक फाइलसिस्टम स्थित है (शायद एक एमबीआर सहित, सुनिश्चित नहीं है) जिसे ब्लॉक डिवाइस की शुरुआत में कॉपी किया गया है। यार, isohybridएक अच्छा आदेश है, इसके बारे में पता नहीं था!
एहतेश चौधरी

1
विंडोज 7 बूट करने योग्य इंस्टॉल करने के लिए, USB को भी देखें: superuser.com/questions/256869/…
cwd

7
चरण # 3 अनावश्यक है; ddकदम # 5 में आदेश आईएसओ की सामग्री के साथ नव निर्मित फाइल सिस्टम मिटा देगा।
ewhac

मैं लगभग 12 घंटे तक इस समस्या को देख रहा हूँ जब तक मुझे आपकी पोस्ट यहाँ नहीं मिली और मैंने फॉलो और स्टेप किया और यह काम कर गया! (चरण 5 मेरा मुद्दा भी था, मैं proअभी तक लिनक्स पर नहीं हूं , इसलिए धन्यवाद)
इस्माइल

3

यह सैनडिस्क यूएसबी स्टिक के साथ एक आम मुद्दा है, या एफएटी 32 में स्टिक को प्रारूपित नहीं किया गया है।

यदि उनमें से कोई भी नहीं है तो यह निश्चित रूप से आपके स्टिक पार्टीशन ऑर्डर या syslinux.cfg फ़ाइल के साथ एक समस्या है।


USB फ्लैश ड्राइव Verbatim से है। मैंने FAT32 में अभी-अभी सुधार किया है और अभी भी वही त्रुटि हुई है।
xsdf

1

isohybridहमेशा काम नहीं कर सकते हैं। उदाहरण के लिए, मेरे पास .iso के साथ FreeDOS और isohybrid वहां कुछ महत्वपूर्ण फाइलों को खोजने में सक्षम नहीं था (मुझे नहीं पता कि क्या उन्हें वहाँ syslinux द्वारा रखा जाना चाहिए था, जो मैंने भी इस्तेमाल किया था, या कुछ और)। मैं यहाँ कई विकल्प प्रस्तावित करता हूँ।

1) वहां एक और बूटलोडर स्थापित करें जैसे GRUB। यह यहाँ समझाया गया है :

"मान लें कि आपके USB स्टिक का पहला विभाजन FAT32 है और इसका विभाजन / dev / sdy1 है" (मेरे पास grub2फेडोरा कोर था, इसलिए मैंने कमांड्स को थोड़ा बदल दिया):

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2) FreeDOS wiki यहाँ GRUB और syslinux के साथ एक यौगिक विधि प्रदान करता है (हालाँकि मुझे समझ नहीं आता कि उन्होंने कैसे लॉन्च किया grub>- मैं उस स्तर तक USB से बूट नहीं कर सका)।

3) यहाँ एक पोस्ट है जो उपयोगी हो सकती है - यह कहती है 'जब तक कॉमपीस, कर्नेल.साइस, syslinux.cfg, ldlinux.sys और fat32lba.bss फाइलें ड्राइव के मूल में हैं और MBR और बूट सेक्टर को फिर से नहीं लिखा गया है कि ड्राइव को बूट करने योग्य रहना चाहिए। '

4) यहाँ यह समझाया गया है कि एक बूट करने योग्य .iso फाइल को syslinux बूटलोडर के साथ कैसे बनाया जाता है। वे भी isohybrid का उपयोग नहीं करते हैं। दुर्भाग्य से यह मेरी मदद नहीं की (शायद syslinux की वजह से)।

5 *) के माध्यम से एक विंडोज़ कार्यक्रम का उपयोग करें wine। मैंने रूफस की कोशिश की, हालांकि यह काम नहीं किया, यह डिवाइस नहीं ढूंढ सका।

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

UPD: तीसरा तरीका वास्तव में काम करता है ( कस्टम इंस्टॉलेशन फ़ाइल के लिए सुधार के साथ )।

UPD2: (निश्चित लिंक)। के साथ समस्या isohybridशायद थी क्योंकि आइसो और मेरे सिस्टम पर आइसोलिनिनक्स.बिन के संस्करण अलग थे। यहाँgenisoimage सुझाए गए का उपयोग करके आइसो को पुन: संयोजित किया गया :

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

कुछ समस्याएं भी थीं, वे जीनसोइमेज से पहले यहां विधि द्वारा हल किए गए थे :

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== अंत UPD2 ==



2: freedos.sourceforge.net/wiki/index.php/USB#Linux_2 आप पोस्ट को इन लिंक को जोड़ सकते हैं यदि सिस्टम मुझ पर अधिक विश्वास करता है। StackOverflow मुझे पहले से ही अच्छी तरह से जानता है, तो सुपरसुअर में ऐसी समस्या क्यों है? इसके अलावा मुझे इसे पोस्ट करने में समस्याएँ थीं, यह मुझे नहीं दिखा कि मेरा जवाब पहले से ही पोस्ट किया गया था।
यारोस्लाव निकितेंको

ऐसा लगता है कि सुपरयुसर अपने संदर्भों से लिंक गिनता है, यानी यदि मैं एक ही संसाधन से दो बार लिंक करता हूं, तो यह गिना जाता है। यह एक बग लगता है। UPD में एक बदलाव spiderbird.com/tag/fat32lba-bss
यारोस्लाव

टिप्पणी में सभी लिंक तय की। मैं उन्हें यह दिखाने के लिए छोड़ देता हूं कि यह नीति कितनी समस्याएं लाती है।
यारोस्लाव निकितेंको

0

आप bootisoउपयोगिता का उपयोग कर सकते हैं , जो ठीक यही करता है, सुरक्षित रूप से:

bootiso -d /dev/sdb filename.iso

बूटिसो यह जांच करेगा कि चयनित डिवाइस /dev/sdbयूएसबी के माध्यम से जुड़ा हुआ है और अगर यह नहीं है, तो यह विफल हो जाता है, जो एक बड़ा सुरक्षा प्लस है। यदि आपके सिस्टम से जुड़ा एक यूएसबी ड्राइव है, तो इसे एक्शन में देखें: यह यूएसबी डिवाइस को ऑटोडेक्ट भी करेगा।

यदि आप @xsdf द्वारा बताए गए मुद्दों को दरकिनार करने के लिए syslinux बूटलोडर को स्थापित करना चाहते हैं, तो -bविकल्प का उपयोग करें :

 bootiso -b -d /dev/sdb filename.iso

इसे स्थापित करने के लिए:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.