Як створити завантажувальний USB з завантажувального ISO за допомогою командного рядка в Linux?


50

У мене є компакт-диск, створений з файлу ISO, який я використовую для установки спеціальної версії Ubuntu через plop linux.

Компакт-диск працює добре, але я хотів би використовувати завантажувальний USB-накопичувач. Я використовував команду dd, щоб спробувати створити завантажувальний USB:

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

Тепер це копіює файли та робить завантажувальний USB, але я отримую помилку "Відсутня операційна система"

Якісь ідеї?


У вас є лише доступ до командного рядка? Є такі інтерфейси, як Unetbootin, які дуже добре працюють і працюють на Linux ..
інформаційна панель

3
@dashboard Я вважаю за краще командний рядок, оскільки він доступний на кожній машині Linux.
xsdf


@dashboard - Інструменти графічного інтерфейсу ніколи не спрацьовують добре для мене, і це постійно було правдою протягом багатьох років. Я радий знати метод командного рядка. Мені це легше і надійніше. Це набагато менше розчарувань!
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 використовував isolinux, а не syslinux. Я знав, що це працює з компакт-дисками, тому я зрозумів, що мені потрібно викликати ізогібридну команду, яка дозволяє визнати ISO BIOS на жорсткому диску.

     isohybrid filename.iso
    

    Ви можете дізнатися більше про цю команду тут , але це було причиною повідомлення "Відсутня операційна система" Перша проблема була виправлена, але тепер вона сказала, що "isolinux.bin відсутній або пошкоджений"

  5. Наступний крок - скопіювати iso. Моя друга проблема полягала тут, де я копіював у розділ, 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команда може бути не потрібною, оскільки у iso є файлова система, розташована на ній (ймовірно, включає MBR, не впевнений), скопійована на початок блокового пристрою. Людина, isohybridце класна команда, про це не знав!
Ehtesh Choudhury

1
для завантажувальної установки Windows 7 завантажуйте, також дивіться superuser.com/questions/256869/…
cwd

7
Крок №3 зайвий; ddкоманда в кроці 5 буде знищити новостворену файлову систему з вмістом ISO.
ewhac

Я близько 12 годин шукаю цю саму проблему, поки я не знайду тут вашу посаду, і я слідую за кроком і ... це спрацювало! (крок 5 теж був моїм питанням, я ще не proв Linux, тому дякую)
Ісмаїл,

3

Це поширена проблема з USB-накопичувачами SanDisk або палицями, не відформатованими у FAT32.

Якщо не один із них, це, безумовно, проблема з наказом про розділ stick або файлом syslinux.cfg.


USB-флешка від Verbatim. Я переформатував у FAT32 просто для того, щоб бути впевненим, і все-таки отримав таку ж помилку.
xsdf

1

isohybridможе не завжди працювати. Наприклад, у мене .iso з FreeDOS, і ізогібрид не зміг знайти там важливих файлів (я не знаю, чи повинні вони були розміщені туди syslinux, який я теж використовував, або щось інше). Я пропоную тут кілька альтернатив.

1) Встановіть інший завантажувач там, наприклад GRUB. Це пояснюється тут :

"Припустимо, перший розділ USB-накопичувача - FAT32, а його розділ - / dev / sdy1" (я мав grub2на своєму Fedora Core, тому я трохи змінив команди):

# 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 вика пропонує метод з'єднання з нарізним і SYSLINUX тут (хоча я не розумію , як вони почали grub>- я не міг завантажитися з USB до цієї стадії).

3) Ось публікація, яка може бути корисною - там написано "Доки файли command.com, kernel.sys, syslinux.cfg, ldlinux.sys і fat32lba.bss є в корені диска, а MBR і завантажувальний файл сектор не переписаний, привід повинен залишатися завантажуваним. '

4) Тут пояснено, як генерувати завантажувальний файл .iso за допомогою завантажувача syslinux. Вони навіть не використовують ізогібрид. На жаль, це не допомогло мені (можливо, через syslinux).

5 *) Використовуйте програму Windows через wine. Я спробував rufus, але це не спрацювало, не вдалося знайти пристрій.

Я попереджаю вас, що, на жаль, я не зміг вирішити цю проблему, мій пристрій був незавантаженим, але сподіваюся, що це може бути корисним для інших людей (також тих, хто хоче встановити не Linux на usb). Зображення usb, створене chtaube, хоч і працювало для мене, тому я думаю, що ці методи є правильними.

UPD: 3-й метод дійсно працює (з виправленням користувальницького інсталяційного файла).

UPD2: (нерухомі посилання). Проблема з проблемою isohybridбула, ймовірно, тому, що версії isolinux.bin для iso та моєї системи були різними. Перекомпільовано ізо, використовуючи 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 мене вже добре знає, тож чому така проблема у суперпользователя? Також у мене виникли проблеми з публікацією цього повідомлення, це не показало мені, що моя відповідь вже розміщена.
Ярослав Нікітенко

Здається, що суперпользователь рахує посилання за їх посиланнями, тобто якщо я посилаюсь два рази на один і той же ресурс, це враховується. Це здається помилкою. Вирішення
Ярослав Нікітенко

Усі посилання в коментарях виправлені. Я залишаю їх тут, щоб показати, скільки проблем приносить ця політика.
Ярослав Нікітенко

0

Ви можете використовувати bootisoутиліту , яка робить саме це, безпечно:

bootiso -d /dev/sdb filename.iso

bootiso перевірить, що вибраний пристрій /dev/sdbпідключено через USB, і вийде з ладу, якщо його немає, що є великим плюсом безпеки. Він також автоматично виявить USB-пристрій, якщо до вашої системи підключений рівно один USB-привід, дивіться це в дії:

Якщо ви хочете встановити завантажувач syslinux, щоб обійти проблеми, згадані @xsdf, скористайтеся -bопцією:

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

Щоб встановити його:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.