50

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

Компакт-диск работает нормально, но я бы хотел вместо этого использовать загрузочный USB-накопитель. Я использовал команду dd, чтобы попытаться создать загрузочный USB:

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

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

Есть идеи?

4 ответа4

57

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

  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

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

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

1

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

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

«Предположим, что первый раздел вашей флешки USB - это FAT32, а его раздел - /dev /sdy1» (на моем Fedora Core был 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 вика предлагает метод соединения с резьбовым и 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 и в моей системе. Перекомпилировал 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 ==

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .