Как сделать ядро ​​"Hello world" - PullRequest
1 голос
/ 27 мая 2019

Я следовал этой статье о том, как сделать очень простое ядро, которое печатает "Hello, World". Файлы для моего проекта доступны на Github .

Я построил свой кросс-компилятор из этого проекта . Я использую эту команду для кросс-компиляции, сборки и сборки моего ISO (образ CD-ROM):

i686-elf-as boot.s -o boot.o
i686-elf-gcc -c kernel.c -o kernel.o -std=gnu99 -ffreestanding -O2 -Wall -Wextra
i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc
mkdir -p isodir/boot/grub
cp myos.bin isodir/boot/myos.bin
cp grub.cfg isodir/boot/grub/grub.cfg
grub-mkrescue -o myos.iso isodir

Когда я пытался выполнить его на VirtualBox, он выдает следующее сообщение:

FATAL: не найдено загрузочного носителя! Система остановлена.

Почему я получаю эту ошибку и как ее исправить?

P.S. Я использую подсистему Ubuntu для Windows 10

1 Ответ

1 голос
/ 28 мая 2019

Возможно, отсутствует компонент GRUB или неверная версия Xorriso.В статье Bare Bones, на которую вы ссылаетесь, говорится следующее:

Вы можете легко создать образ загрузочного компакт-диска, содержащий загрузчик GRUB и ваше ядро, используя программу grub-mkrescue. Возможно, вам потребуется установить служебные программы GRUB и программу xorriso (версия 0.5.6 или выше).

При использовании grub-mkrescue для создания образов ISO чаще всего не загружаемые ISO образуются в результате отсутствия установки Xorisso.Если grub-mkrescue работает, но не создает ISO, то, скорее всего, отсутствует компонент GRUB.Чтобы убедиться, что у вас установлены все компоненты GRUB и Xorriso, установите компоненты в современных выпусках Ubuntu с помощью:

sudo apt-get install grub2-common grub-pc xorriso 

Затем попытайтесь пересобрать и повторно запустить образ ISO в VirtualBox.

...