2013-05-03 20:11:23 +0000 2013-05-03 20:11:23 +0000
50
50

Как создать загрузочный USB-накопитель из загрузочного ISO с помощью командной строки в Linux?

У меня есть CD, который создан из ISO-файла, который я использую для установки пользовательской версии Ubuntu через plop linux. 0x2 и 0x2 и компакт-диск работает нормально, но я хотел бы использовать загрузочный USB-диск вместо этого. Я использовал команду dd, чтобы попытаться создать загрузочный USB:

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

Теперь это действительно копирует файлы и делает загрузочный USB-накопитель, но я получаю ошибку “Пропала операционная система”

Какие-нибудь идеи?

Ответы (4)

58
58
58
2013-05-07 16:46:56 +0000

Хорошо, после некоторых исследований я придумал решение, и я пройду через это шаг за шагом. Проблема была двоякой.

  1. Подключите USB-накопитель и определите с помощью команды устройство, на которое он установлен:

  2. Установите устройство

  3. Не уверен, что это необходимо, но я отформатировал диск в FAT32, на всякий случай

  4. Теперь мой ISO использовал isolinux, а не syslinux. Я знал, что это работает с компакт-дисками, поэтому понял, что мне нужно вызвать команду isohybrid, которая позволяет BIOS распознать ISO с жесткого диска.

  5. Следующим шагом будет копирование iso. Моя вторая проблема лежала здесь, где я копировал в раздел, sdc1, а не на устройство, sdc.

3
3
3
2013-05-03 20:25:22 +0000

Это распространенная проблема USB-накопителей SanDisk или флешек, не отформатированных в формате FAT32.

Если ни одна из них не отформатирована, то это, скорее всего, проблема с порядком расположения разделов на флешке или с файлом syslinux.cfg.

1
1
1
2016-01-20 13:42:39 +0000

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

1) Установите там другой системный загрузчик, такой как GRUB. Это объясняется здесь :

“Допустим, первый раздел вашей USB-флешки - FAT32, а его раздел - /dev/sdy1” (у меня было grub2 на ядре Fedora, поэтому я немного изменил команды):

# 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 предлагает составной метод с GRUB и syslinux здесь (хотя я не понимаю, как они запустили grub> - я не смог загрузиться с usb до этой стадии).

3) Здесь - сообщение, которое может быть полезным - оно гласит: “До тех пор, пока файлы command.com, kernel.sys, syslinux.cfg, ldlinux.sys и fat32lba.bss находятся в корне диска и MBR и загрузочный сектор не перезаписаны, диск должен оставаться загрузочным”.

4) Здесь объясняется, как сгенерировать загрузочный .iso файл с помощью системного загрузчика syslinux. Они даже не используют isohybrid. К сожалению, это не помогло мне (возможно, из-за syslinux).

5*). Используйте программу windows через wine. Я попробовал Руфуса, но это не сработало, он не смог найти устройство.

Предупреждаю, что, к сожалению, я не смог решить эту проблему, мое устройство было незагружаемым, но я надеюсь, что это может быть полезно для других людей (также для тех, кто хочет установить не linux на USB). Образ USB, сгенерированный chtaube, хотя и работал на меня, так что я думаю, что эти методы правильны.

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

UPD2: (исправленные ссылки). Проблема с isohybrid, вероятно, заключалась в том, что версии isolinux.bin на iso и моя система были разными. Перекомпилировал 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

Также были некоторые проблемы, они были решены методом здесь до genisoimage:

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

== конец UPD2 ==

0
0
0
2018-04-09 23:44:32 +0000

Можно использовать утилиту bootiso , которая делает именно так, безопасно:

bootiso -d /dev/sdb filename.iso

Загрузчик проверит, что выбранное устройство /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

Похожие вопросы

6
10
8
5
37