LINUX.ORG.RU

ext3: в ядро или в модуль?

 ,


0

1

Slackware. Собрал новое ядро с ext3 в виде модуля. Перезагружающемся... Ядро ругаться, мол не может смонтировать rootfs... Это странно, ведь у моего Linux два раздела: / и /home. И оба на ext3. В ядре из ФС кроме ext3 и jbd «из мира Linux» ничего нет. И всё-таки, в ядро?.. У ядра будет initrd. На разных формах по-разниму написано. А как это делателе вы? :)

Если вы собрали поддержку файловой системы корневого раздела в виде модуля, тогда нужно обеспечить доступность этого модуля на этапе загрузки, а именно поместить в initrd. Обычно всё необходимое для монтирования корневой файловой системы включают всё в ядро, драйвер контроллера жёстких дисков и файловой системы корневого раздела. Если же корневая файловая система находится на логическом томе LVM или на шифрованной файловой системе, то вам в любом случае необходимо использовать initrd, в таком случае указанные драйверы можно собрать и модулями, но поместить их в initrd. Если же у вас корневая файловая система располагается просто на разделе, тогда можно включить драйвер контроллера жёстких дисков и файловой системы корневого раздела монолитно в ядро, в таком случае необходимость использования initrd отпадает.

kostik87 ★★★★★
()

Если что-то в модуле, что этот модуль будет читаться из файла в файловой системы. А как ext3 модуль будет читаться, если ядро с этой ФС работать не умеет?
В ядро без разговоров!

Kroz ★★★★★
()

А как это делателе вы

Пользуюсь debian. Но, если таки собираю ядро, все необходимые большую часть времени модули вкомпиливаю в ядро. Использовать при самосборном ядре initrd нет причины в 90% случаев.

anonymous
()

Вообще не понимаю смысла выносить в модуль какой-то функционал. Точнее есть дико редкие случаи, когда это действительно нужно, но они правда очень редкие.

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

За основу вы можете взять linux/arch/x86/configs/, i386_defconfig или x86_64_defconfig - конфиги с базовым набором необходимых опций, а дальше включайте что вам нужно монолитно, а что - модульно.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от MaxMan007

А если собирать монолит, то за основу взять config-huge, да?

Я не знаю что такое config-huge, но я обычно делаю make defconfig, а потом в make menuconfig включаю поддержку оборудования из вывода lspci и lsusb. Говорят есть лучше методы, например, make localyesconfig.

Kroz ★★★★★
()

Возьми за правило — все используемые драйверы встраивай в основное ядро.

ttnl ★★★★★
()

А как это делателе вы? :)

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

  • arch linux - херячим абсолютно все модулями M. затем модули в инитрд.
  • gentoo linux - все модули необходимые для загрузки с железа Y встроены в самом ядре. и инитрд вообще не нужен.

Ну и есть некие переходные варианты…

Я как gentoo но и инитрд не отвергаю а даже наоборот очень даже использую.

init_6 ★★★★★
()

два раздела: / и /home. И оба на ext3.
ext3: в ядро или в модуль?

В ведро, а ext4 — во все поля.

Deleted
()

А как это делателе вы?

А я не пользуюсь убогими файловыми системами, которые во втором десятилетии XXI века не умеют в динамическое выделение inodes.

Что же касается основного вопроса, то модуль для rootfs должен быть включен в ядро, если ты конечно не хочешь снoшать мозг с initrd.

fat_angel ★★★★★
()

Вариантов 2:
1) собрать драйвер корневой ФС в ядро;
2) собрать драйвер корневой ФС модулем, использовать initrd.

Последние версии Slackware традиционно имеют в составе установочно-ремонтное -huge- ядро и рабочее -generic-, в котором всё, что возможно, вынесено в модули. Очевидно, что если не использовать дистрибутивное -generic- ядро, нужно создать initrd:

# /usr/share/mkinitrd/initrd_command_generator.sh -r | bash
и дописать его в загрузчик, добавив в /etc/lilo.conf строчку:
initrd = /boot/initrd.gz
переключить ссылку /boot/vmlinuz на -generic- ядро и позвать lilo:
# (cd /; /var/log/scripts/kernel-generic-*)
# lilo
Если же собираете ядро под свое оборудование, не вижу причин, почему бы сразу не включить в него драйвер корневой ФС. Хотя нет, вижу одну несущественную — задание разделов метками или через UUID в lilo.conf работает только при наличии initrd (обрабатывается его скриптами).

Какой из 2-х вариантов использовать — решать вам.

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