Ну.... про эти 2 абзаца я тебе и говорю...
Загрузка в 2 фазы - нам НЕ НУЖНА...
Че биос-то приплел сюда ??? Каждая (приличная) система тащит всегда все свое с собой.. то, что есть в BIOS только позволяет "встать из лежачего состояния на колени"... а ходить и уж бегать оно не в состоянии... для этого нужно ядро ОС...
initrd - способ запускать linux на сотнях раличных машин на ОДНОМ УНИВЕСАЛЬНОМ ЯДРЕ (которые и идут в стандартных дистрибутивах линукс).
Машин много, железо разное, порой ОЧЕНЬ разное, чтобы линукс мог загрузится на конкретной машине - ему нужен КАК МИНИМУМ -
набор драйверов контроллера, накопителя и файловой системы, с которого он будет грузится...
Архитектура i386 - такой зоопарк... железа разного немеренно за годы понасоздавали и понаделали... Если ВСЕ это засунуть в ядро - оно будет ОГРОМНОГО размера в памяти... так оно там и не нужно... Значит КАЖДЫЙ должен скомпилить себе свое уникальное ядро ??? Согласен ?
Большинство шарахнется от этого и никогда больше не возьмет в руки линукс...
Можно, конечно, cделать сбалансированное, универсальное ядро, а драйвера положить модулями ядра... отлично НО А КАК загрузить модуль ядра накопителя, если он лежит на том накопителе, драйвер от которого и нужен ??? Тупик...
Вот для этого и придумали initrd с загрузкой в 2 фазы... Драйвера (модули ядра scsi, usb, ide, ext2 и т.п.) минимально необходимые для запуска данной конкретной rootfs на данном конкретном железе (и только они) кладутся на ramdisk, 1 фаза - ядро читает initrd, через int13h, долго и нудно... , запускает драйвера накопителя, на котором и находится реальная rootfs, монтируется реальная rootfs (что теперь возможно т.к. драйвера загружены), initrd уничтожается, она свое дело сделала и больше не нужна... происходит обычная, штатная загрузка...
Результат - ОДНО небольшое универсальное ядро, 90% драйверов в *.ko, грузится (почти) на любом железе... разница только в содержимом initrd, который лепится за 10 секунд для данного железа с помощью mkinitrd (что, никак, не сравнимо с перекомпиляцией ядра)...
Бельды ?
p.s. Если не понял про что я - попробуй загрузить систему
с одним и тем же стандартным ядром от какого-нибудь Debian'а или Fedora'ы или SuSe (по фигу) БЕЗ initrd:
1. со scsi-2/adaptec/minix
2. с EIDE Promise/RAID1/ext3
3. с USB флешки/fat16
Это возможно ТОЛЬКО благодаря initrd, без него тебя ждет во всех 3-х случаях "паника ядра", т.к. ни 1, ни 2, ни 3 - не собраны в ядро... если, только оно не предназначено для чего-то "супер-пупер-необычного"... а теперь представь все богатство комбинаций железа-систем, которые могут случится....
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 16.01.2009 г. в 16:42:39