Вопрос

Есть ли что-нибудь, что ядру нужно получить от загрузчика? Обычно ядро ​​способно поднять систему с нуля, так зачем ему что-то требовать от загрузчика?Я видел подобные загрузочные сообщения ядра.

"Fetching vars from bootloader... OK"

Ну и что точно передаются ли переменные?И как передаются переменные из загрузчика?Это через стек?

Это было полезно?

Решение

Ядро принимает так называемые параметры командной строки, основанные на тексте.Это очень полезно, поскольку вы можете многое сделать без перекомпиляции ядра.Что касается передачи аргументов, то это зависит от архитектуры.В ARM это делается с помощью указателя на место в памяти или фиксированное место в памяти.

Вот как это делается на РУКА.Обычно ядро ​​не способно загрузить машину с нуля.Может и из биоса, но тогда не с нуля.Требуется некоторая инициализация, это работа загрузчика.

Другие советы

Есть некоторые параметры, которые ядро ​​Linux принимает от загрузчика, из которых я сейчас помню: vga параметр.Например:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318

Посмотри на 10 параметров времени загрузки, которые следует знать о ядре Linux что объясняет некоторые общие параметры.

Что касается ядра Linux, загрузчик должен сообщить ядру несколько вещей.Он включает в себя такие вещи, как командная строка ядра (как уже упоминалось несколько других людей), где в памяти находится initrd был загружен и его размер, если используется initrd (ядро не может загрузить его самостоятельно;часто при использовании initrd модули, необходимые для доступа к устройствам хранения, находятся внутри initrd, и ему также может потребоваться выполнить довольно сложную настройку, прежде чем получить доступ к хранилищу), а также несколько разных мелочей.

Видеть Документация/x86/boot.txt (ссылка на версию 2.6.30) для получения более подробной информации о традиционной архитектуре x86 (как 32-битной, так и 64-битной), включая то, как эти переменные передаются в код установки ядра.

Загрузчик не использует стек для передачи аргументов ядру.По крайней мере, в случае с Linux существует довольно сложная структура памяти, которую заполняет загрузчик, и ядро ​​умеет ее анализировать.Вот как загрузчик указывает ядру на его командную строку.Видеть Документация/x86/boot.txt для получения дополнительной информации.

Linux принимает переменные из загрузчика, чтобы разрешить использование определенных опций.Я знаю, что одна из вещей, которую вы можете сделать, это сделать так, чтобы вам не приходилось входить в систему (режим восстановления), и есть несколько других вариантов.В основном он позволяет вносить исправления, если есть проблемы с чем-то или при смене пароля.Вот как Ubuntu Live-CD загружает Linux, если вы решите использовать другой вариант.

Обычно параметры называются параметрами командной строки, которые передаются в модуль ядра из загрузчика.Загрузчик использует множество прерываний BIOS для обнаружения,

memory
HDD
Processor
Keyboard
Screen
Mouse
ETC...

и все детали оборудования будут обнаружены во время загрузки, то есть в реальном режиме, а затем передать эти параметры в ядро.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top