LINUX.ORG.RU

Отключение ненужных модулей при загрузке Gentoo


5

1

Приветствую всех. Установил Gentoo (базовая система без иксов). Собирал при помощи genkernel, т.к. ранее с gentoo дела не имел. Собралось и загрузилось без проблем. Что меня смущает - это время загрузки: от старта до приглашения на логин рута проходит 34 сек. Рядом на другом разделе debian squeeze стоит - тот кеды загружает за 30 сек. Заметил, что много времени уходит на activating mdev (ок 8 сек) и на старт dhcp (11 сек). Посмотрел lsmod - там загружена куча модулей, которые useb by 0. Точное количество - 114 штук. В debian+kde модулей значительно меньше, а неиспользуемых так вообще только 11 шт. Полагаю, это результат использования genkernel. Можно ли как-то отключить загрузку этих модулей? Пробовал занести их в blacklist - не помогло, все равно грузятся.

★★★★

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

По умолчанию в initramfs, собранный genkernel включаются все модули, относящиеся к поддержке контроллеров жёстких дисков и файловых систем, затем при старте они все подгружаются.

kostik87 ★★★★★
()

А собрать ядро руками с указанием только нужных модулей не судьба?

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

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

Chord ★★★★
() автор топика

Про пересборку ядра уже сказали, а чтобы dhcp не тормозил - добавить в /etc/conf.d/net такую строчку (предполагается, что в качестве dhcp-клиента используется dhclient, а сетевой интерфейс - eth0):

dhclient_eth0="-nw"
Для dhcpcd строчка такая:
dhcpcd_eth0="-b"
Это позволит dhcp-клиенту сразу перейти в фоновый режим, не дожидаясь получения адреса. В случае, если планируется использовать NetworkManager или прочие службы для настройки сети, нужно просто удалить файл /etc/init.d/net.eth0.

Ещё для уменьшения времени загрузки можно разрешить параллельную загрузку, для этого найти и исправить/раскомментировать/добавить строчку в /etc/rc.conf:

rc_parallel="YES"

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

Вам не столько список модулей нужен, сколько список нужных опций.

Загружайтесь с system rescuecd и выполните в директории с исходными кодами ядра:

  localmodconfig  - Update current config disabling modules not loaded
  localyesconfig  - Update current config converting local mods to core

Так же можете всё же распаковать initramfs и удалить не нужные модули.

http://www.opennet.ru/base/sys/initrd_intro.txt.html

С помощью этих командой можно посмотреть структуру существющего initramfs:

        mkdir /tmp/initramfs
        cd /tmp/initramfs
        gunzip -c -9 /boot/initrd.img-2.6.18-1-686 | \
        cpio -i -d -H newc --no-absolute-filenames 

А запаковать обратно измененный можно командой:
        cd /tmp/initramfs
        find . | cpio -o -H newc | gzip -9 > /boot/initrd.img-2.6.18-1-686

После распаковки удалите лишние модули из /tmp/initramfs/lib/modules из initramfs и запакуйте обратно

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

Ещё для уменьшения времени загрузки можно разрешить параллельную загрузку, для этого найти и исправить/раскомментировать/добавить строчку в /etc/rc.conf:

rc_parallel="YES"

В последних версиях openrc поддержки этой опции нет, её убрали, т.к. в багзиллу присылали много баг репортов с ошибками запуска сервисов из-за включения это опции. Если меня не подводит память, её убрали из openrc-0.9.8.

Прописать вы её можете но она будет не корректно работать.

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

её не убрали
убрали её упоминание в конфиге, дабы нубы не плакали
но она на самом деле есть и работает

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

Чорд, похоже я перестарался...

Сделал make menuconfig, собрал ядро и initramfs. Из дебиана сделал update-grub, он генту находит, но по неизвестной причине в grub.cfg не вносит. Пришлось вручную его туда вставить. Может ему не понравились мои модули? При загрузке пишет что неправильные параметры переданы. Но взлетает как ракета, вернее как пустая ракета: ровно 6 сек до логина. В lsmod после моей оптимизации осталось всего 3 модуля: ext4, crc16 и jbd2.

Пошёл я качать rescuecd.

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

rub.cfg не вносит. Пришлось вручную его туда вставить. Может ему не понравились мои модули?

Это не взаимосвязано.

При загрузке пишет что неправильные параметры переданы. Но взлетает как ракета, вернее как пустая ракета: ровно 6 сек до логина.

Тык что вас не устраивает? Gentoo всё же загружается ? 6 секунд не плохой результат., но насколько я понял это только консоль, без иксов. Покажите конфигурацию grub.

В lsmod после моей оптимизации осталось всего 3 модуля: ext4, crc16 и jbd2.

Ну смотря что вы собирали монолитно, а что модулями, если большую часть вы собрали монолитно в ядре и всё работает, плюс быстрая загрузка, то для начала можете оставить так, как есть.

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

Вот что я вставил в груб:

menuentry "Gentoo Base System release 2.1 (on /dev/sda6)" {
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set c9ace30d-b91f-41ff-95e1-99553a069c4a
    linux /boot/linux-3.3.8-gentoo real_root=/dev/sda6
    initrd /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
}

насчёт всё работает - не совсем так, сеть не настроена. Модульно я указал в явном виде пару-тройку модулей, в основном всё монолитно. Попробую распаковать initramfs, посмотрю что там.

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

насчёт всё работает - не совсем так, сеть не настроена.

Под «всё работает» подразумевается, что в ядре включены опции поддержки всего оборудования вашего компьютера, ну или по крайней мере большей его части.

А именно:
- контроллера жёстких дисков и файловой системы корневого раздела, раз вы смогли загрузиться так оно и есть;
- поддержка вашей сетевой карты, как минимум той, через которую вы выходите в initernet, если в выводе 'ifconfig -a' есть устройства кроме 'lo', значит поддержка включена;
- звуковая карта - для окончания установки не требуется, если первые два пункта выполнены - то можно двигаться дальше;
- прочие устройства, wifi, card reader, bluetooth - можно донастроить позже;
- видеокарта - либо использование открытых драйверов, тогда нужно проверять наличие нужных опция в ядре или использование проприетарных драйверов, в любом случае это можно решить позже.

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

При загрузке пишет что неправильные параметры переданы

Видимо это сообщение grub2 и ему не нравится параметр real_root, но в итоге система (Gentoo) загружается, можно игнорировать

Попробую распаковать initramfs, посмотрю что там.

А смысл ? Для нового ядра initramfs был собран заново и в нём содержится всего один - два модуля, а именно ext4 и всё. Вы же собрали почти всё монолитно в ядре.

kostik87 ★★★★★
()

добавить к строчке загрузки ядра параметр nodetect. еще есть параметр doload= после равно модуль контроллера диска, если он модулем идет (типа ahci, sata_nv и т.д.) иначе естественно диск не обнаружится.

anonymous
()

Вноси все самое нужное в ядро, остальное модулями. Быстрее загружается.

Заметил, что много времени уходит на activating mdev (ок 8 сек) и на старт dhcp (11 сек).

Говорят systemd распалалеливает загрузку, можешь попробовать. (сам не пробовал)

Можно ли как-то отключить загрузку этих модулей?

Можно попробовать удалить, но не факт что взлетит ( /lib/modules/kernel_name/kernel/ (модули называются module_name.ko) )

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

В общем, сделал make localmodconfig. Собрал ядро, initramfs не стал собирать, решил без него. Впечатление от localmodconfig двоякое: с одной стороны взлетает быстро (8 сек против 34 с дефолтным конфигом), с другой - включена поддержка многих вещей, которые не нужны и которые точно не были задействованы во время билда. Например, 16 типов файловых систем, которые мне даром не нужны. Или поддержка всех возможных чипсетов (SiS, nForce, VIA и т.д.) И ещё куча разных ненужностей. Можно ли вручную поправить .config? Написано DO NOT EDIT. Это что, просто из-за вероятности ошибки редактирования, или содержимое .config как-то связано с другими настройками?

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

DO NOT EDIT.

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

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

В общем, постепенно добрался до десктопа, установил кеды и nvidia. Вроде все работает. Теперь всё сношу и делаю заново с новыми конфигами :-\

Спасибо всем за подсказки и ссылки.

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