2009-06-19 6 views
6

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

"Fetching vars from bootloader... OK" 

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

+0

Не должно ли это быть на сервере? –

ответ

2

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

Вот как это делается на ARM. Обычно ядро ​​не может загружать машину с нуля. Может быть из биоса, но потом это не с нуля. Это требует некоторой инициализации, это задача загрузчика.

2

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

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

Посмотрите 10 boot time parameters you should know about the Linux kernel, который объясняет некоторые из общих параметров.

0

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

2

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

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

1

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

0

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

memory 
HDD 
Processor 
Keyboard 
Screen 
Mouse 
ETC... 

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