Большинство параметров загрузки ОС Linux представляет из себя, что то типа: имя(=значение_1][,значение_2]…[,значение 11] — причем имя, это уникальное ключевое слово, которое определяет часть ядра, которому передаются эти значения, но не больше чем 11 параметров.

Большая часть разбора параметров загрузки происходит именно в linux/init/main.c. С самого начала ядро проводит проверку не являются ли параметры специальными: root=, rо, rw или debug. Вобще вся эта процедура довольно трудоемкая, но наверное это проще чем купить охотничье оружие в украине, итак продолжим.

После этого оно просматривает так называемый — список функций установки, который находится в некотором массиве bootsetups, в поиске совпадений данной строки параметра с функцией установки устройства или же части ядра. Если передавать ядру строку foo=3,4,5,б,bar, то ядро будет искать не присутствует ли foo в массиве bootsetups. Если есть, то ядро вызовет функцию связаную с foo(foo setup) и передаст ей значения указанные выше:3,4,5 и б, которые указанные в консоли ядра, и строковый параметр bar.

Если эта строка не подходит ни одной функции установки, то то это считается установкой переменной окружения. Примером может служить указание переменных окружения TERM=vtioo или iMAGE=vmiinuz .bak в качестве параметров загрузки. Как правило эти переменные приверяюстся с помощью скриптов инициализации для разрешения или запрещения большого диапазона параметров. Любые ппараметры которые не были выбраны ядром и не инициализированые как переменные окружения проходят дальше на стадию обработки, которая выполняется программой init. Очень часто процессу init передается параметр single который «говорит» init о необходимости загрузки системы в однопользовательском режиме.

Список параметров программы init можно найти в соответствующей ей справочной документации.

Понравилось? Поделись с друзьями!