2

Я пытаюсь использовать команду grub-mkrescue для создания аварийного диска. Я вызываю это так:

grub-mkrescue -o grub.iso

Это создает файл .iso, но когда я пытаюсь загрузиться с него с помощью VirtualBox, он говорит, что загрузочный носитель не может быть прочитан. Когда я открываю файл с помощью архиватора, у .iso оказывается просто пустой каталог /boot /grub.

Я также заметил, что некоторые люди используют команду следующим образом:

grub-mkrescue -o grub.iso /boot/grub

Но потом он жалуется, что этот каталог не существует. (Может быть, уместно, что я создаю это на Debian VPS, потому что у меня нет доступа к настоящему ПК с Linux).

Что может быть причиной этой проблемы? Не хватает файлов GRUB для сохранения в загрузочном образе или я неправильно использую команду?

2 ответа2

1

Оказывается, это происходит, когда система, на которой вы запускаете эту команду, не имеет (доступного) каталога /boot/grub . Он молча завершится ошибкой и выдаст пустой файл ISO.

При выполнении той же команды в обычной настольной установке Linux эта команда создает рабочий загрузочный образ.

0

Следующие шаги создают рабочий образ для меня:

  • создайте мультизагрузочный файл hello world main.elf . GRUB знает, как загрузить эти файлы (GRUB также знает, как загрузить ядро Linux, даже если это не Multiboot)

  • создайте файл iso/boot/grub/grub.cfg содержащий:

    menuentry "main" {
        multiboot /boot/main.elf
    }
    

    Поместите main.elf в iso/boot/

  • На Ubuntu 17.10, на машине с UEFI:

    sudo apt-get install grub-pc-bin
    

    как уже упоминалось на https://wiki.osdev.org/Bare_Bones. В противном случае он просто не работает, и вы не знаете, как это сделать.

    ТОДО ОМГ действительно ?! Я должен научиться строить GRUB из исходного кода, чтобы избавиться от типа этого безумия.

  • Сгенерируйте изображение и запустите его:

    grub-mkrescue -o main.img iso
    qemu-system-x86_64 -hda main.img
    

Точный код этого примера я разместил по адресу: https://github.com/cirosantilli/x86-bare-metal-examples/tree/d217b180be4220a0b4a453f31275d38e697a99e0/multiboot/hello-world

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