Я разрабатываю ядро для операционной системы. Для его выполнения я решил использовать GRUB. В настоящее время у меня есть скрипт, прикрепленный к GRUB stage1, stage2, файл pad и само ядро вместе, что делает его загрузочным. Единственная проблема в том, что когда я запускаю его, вы должны сообщить GRUB, где находится ядро и насколько оно велико, вручную, а затем загрузить его, например:
kernel 200+KERNELSIZE boot
KERNELSIZE - размер ядра в блоках. Для начала это нормально, но можно ли получить эти значения в двоичном файле и заставить GRUB автоматически загружать ядро? Любые предложения о том, как этого добиться?
Я согласен с Чарльзом здесь. Поместите свою ОС в существующую файловую систему, пока в ОС не появится собственная файловая система.
Что ж, для тестирования у нас есть финальный двоичный файл (включая GRUB) в виде файла на диске, который будет использоваться в эмуляторе. Как мне создать образ диска с файловой системой?





Я бы предположил, что вы могли бы просто создать свой собственный файл conf menu.lst, загрузить его в оболочку grub с помощью «configfile /path/to/menu.lst», а затем выполнить «setup (hd0)», заменив значения по мере необходимости. Я просто догадываюсь ... не могу сказать, в чем разница в вашей индивидуальной настройке.
Оказывается, мы использовали старый учебник, который рассказал нам, как это было. С тех пор мы последовали совету Чарльза и переместили загрузочный образ на ISO.
http://www.gnu.org/software/grub/manual/grub.html#Embedded-data дает некоторую общую информацию о хранении списков блоков в GRUB. Что наиболее важно, в нем упоминается, что списки блокировки хранятся в четко определенных местах на этапе stage2.
Вы, вероятно, захотите посмотреть исходный код GRUB, чтобы определить точное местоположение.
Традиционный подход состоит в том, чтобы поместить само ядро в файловую систему, которую grub может читать; какая-то конкретная причина, по которой вы этого не делаете?