LINUX.ORG.RU
ФорумAdmin

Работа initrd


0

0

Капаю в сторону понимая работы initrd в Linux. прочитал: http://www.opennet.ru/base/sys/initrd_intro.txt.html и еще кучу документации, но везде в основном говориться что из себя представляет и как собрать initrd образ, но вот мне не понятно для чего он нужен вообще? Ведь если GRUB способен понять файловую систему /boot где лежит и initrd и само ядро vmlinuz, почему нельзя вкомпилить прямо в основное ядро все драйверы для того же LVM, специфичных SCSI адаптеров и т.д... разве так нельзя?

не пинайте пожалуйста, а помогите разобрать :(

anonymous

Это возможность запустить то, что нужно для того, чтобы получить (и ускорить) доступ к корневой ФС, когда она ещё не доступна. А initrd - это полностью конфигурабельный диск, на который можно сложить всё что нужно для доступа, и запустить там любые кастомные скрипты.

Загрузчик умеет читать не любую фс, общается с HDD через BIOS, что очень мендленно.

>почему нельзя вкомпилить прямо в основное ядро все драйверы для того же LVM, специфичных SCSI адаптеров и т.д... разве так нельзя?

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

Также иногда возникает желание НЕ загружать какой-то модуль. Этого нельзя достичь если он вкомпилен.

gena2x ★★★
()
Ответ на: комментарий от gena2x

Немного не понятна "возможность получить доступ к корневой ФС", я же говорю, даже если корень лежит на каком-то удаленном сторадже SAN на LVM, поверх md рэйда, мы же можем включить все эти необходимые модули в ядро, которое грузиться с файловой системы /boot (которая как я понимаю локальная и понятна GRUBу) зачем тогда вкорячивать всё это в initrd? к тому же на серверах "скорость загрузки" сервера не очень то критична, если он перезагружается например раз в два месяца от силы....

и еще вопросик тогда по initrd - если мы подпихнули в initrd например модули для LVM чтобы понять корневую ФС, нам тогда что, в самом ядре вобще не нужна поддержка LVM?? я так понимаю что подгрузившись из initrd модуль lvm так и останется в памяти??

anonymous
()
Ответ на: комментарий от anonymous

>мы же можем включить все эти необходимые модули в ядро

Баян. Т.е. так и было давным-давно. Неудобно. Пересобрать ядро сильно сложнее, чем файлуху с десятком файликов.

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

>мы же можем включить все эти необходимые модули в ядро, которое грузиться с файловой системы /boot (которая как я понимаю локальная и понятна GRUBу) зачем тогда вкорячивать всё это в initrd? к тому же на серверах "скорость загрузки" сервера не очень то критична, если он перезагружается например раз в два месяца от силы....

Никому из пользователей не нужны все драверы от всех систем и чипсетов в памяти.

>и еще вопросик тогда по initrd - если мы подпихнули в initrd например модули для LVM чтобы понять корневую ФС, нам тогда что, в самом ядре вобще не нужна поддержка LVM?? я так понимаю что подгрузившись из initrd модуль lvm так и останется в памяти??

Разница между модулем и ядром заключается только в способе загрузки. Это тот-же код с теми же функциями. Просто часть ядра можно сделать выгружаемыми, а можно не делать. Вся разница. Просто куча частей - один грузится загрузчиком, другой подгружается потом.

gena2x ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.