LINUX.ORG.RU

Ядро, модули

 


0

1

1) Как правильно установить модули, при условии, что нужно для другого компа?
Т.е. чтоб не в /lib, а в выборочное место. Есть какая-то переменная для make на этот случай, или как-то вручную? chroot не предлагать.

2) Зачем во все дистры пихают initrd? Ведь 90% вероятности он будет стоять на ext4, а даже если нет, всё равно ведь бинарные дистры с раздутым ядром, почему бы не вкомпилять несколько FS? Зачем такой ужасный костыль в виде initrd?

3) Правильно ли я понимаю, что достаточно закомментировать строку с initrd в grub.cfg, чтобы система успешно загрузилась? Естественно, что всё что нужно вкомпилено.

4) Почему может не работать make O=dir?

★★★★★

Последнее исправление: teod0r (всего исправлений: 1)

Зачем во все дистры пихают initrd?

Зачем ты ноешь? К трём звёздам тебе уже объяснили причины не раз. Бросай быть тряпкой и иди плюнь Марку, Патрику и прочим в морду.

anonymous
()

1) Как правильно установить модули, при условии, что нужно для другого компа?

cd /usr/src/linux
make help
...
Kernel packaging:
  rpm-pkg             - Build both source and binary RPM kernel packages
  binrpm-pkg          - Build only the binary kernel package
  deb-pkg             - Build the kernel as a deb package
  tar-pkg             - Build the kernel as an uncompressed tarball
  targz-pkg           - Build the kernel as a gzip compressed tarball
  tarbz2-pkg          - Build the kernel as a bzip2 compressed tarball
  tarxz-pkg           - Build the kernel as a xz compressed tarball
  perf-tar-src-pkg    - Build perf-3.10.7-gentoo-r1.tar source tarball
  perf-targz-src-pkg  - Build perf-3.10.7-gentoo-r1.tar.gz source tarball
  perf-tarbz2-src-pkg - Build perf-3.10.7-gentoo-r1.tar.bz2 source tarball
  perf-tarxz-src-pkg  - Build perf-3.10.7-gentoo-r1.tar.xz source tarball
...

chroot не предлагать.

Почему ?

2) Зачем во все дистры пихают initrd? Ведь 90% вероятности он будет стоять на ext4, а даже если нет, всё равно ведь бинарные дистры с раздутым ядром, почему бы не вкомпилять несколько FS? Зачем такой ужасный костыль в виде initrd?

Большинство дистрибутивов собирают ядро, в котором поддержка файловых систем, контроллеров дисков, raid и lvm собрана модульно. Кроме всего прочего в initrd реализуется дополнительный функционал, поднятия LVM, сборки RAID, монтирования шифрованной файловой системы, поддержка NFS и проверки файловых систем. В общем такая политика разработчиков, в отношении формирования сборок ядра.

3) Правильно ли я понимаю, что достаточно закомментировать строку с initrd в grub.cfg, чтобы система успешно загрузилась? Естественно, что всё что нужно вкомпилено.

В общем правильно, но опять же, скорее всего, поддержка контроллера жёстких дисков и файловой системы всё равно собрана модульно. Так что без initramfs всё равно не обойтись. Изучите конфигурацию ядра в начале. Если что-то из необходимого для монтирования корневой файловой системы собрано модульно, то придётся пересобрать ядро для того, что бы отказаться от initrd. Ну и опять же, если у вас /usr на отдельной файловой системе, то придётся использовать initramfs, т.к. в большинстве случаев существует необходимость, что бы файлы, расположенные на /usr были доступны на этапе запуска системы.

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

типо make tar-pkg? и в тарболе будут ядро и каталог с модулями?

Почему ?

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

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

Естественно, что всё что нужно вкомпилено.

специально ведь написал

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

ещё вопрос
почему может не работать make O=dir ?

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

1) Как правильно установить модули, при условии, что нужно для другого компа?

Зачем?
Оно ставит в /lib/modules/`uname -r` . Поменяй local version (или как там его) в настройке ядра, вот оно и поставит в нужный каталог.


2) Зачем во все дистры пихают initrd?

Потому что дол... идиоты.

Зачем такой ужасный костыль в виде initrd?

Иногда бывает нужно что-то, что не является частью ядра, но нужно до загрузки этого самого ядра. Я сталкивался с таким когда splash делал. Ну, и еще там дико редкие случаи бывают.

3) Правильно ли я понимаю...

Да

4) Почему может не работать make O=dir?

ХЗ. Никогда не пользовался.

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

Поменяй local version (или как там его) в настройке ядра, вот оно и поставит в нужный каталог.

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

Зачем?

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

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

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

CONFIG_LOCALVERSION="-lix-k05"

или в make menuconfig

General Setup > Local version - append to kernel release

У меня это обычно включает через дефис имя машины и версию конфига (не ядра, а именно конфига). А «k» - просто так :)

Я вообще не понимаю как без этого жить. Или все насколько суровы, что собирают оптимизированное ядро под любое железо без ошибок с первого раза? Я сначала собираю просто рабочее ядро, а потом, когда оно заработало, уже оптимизирую. И с каждым новым экспериментом/изменением меняю версию. Т. о. инсталляция нового ядра не затирает старое. Если накосячил - всегда можно откатиться.

Вот что делает make modules_install :

$ ls -1 /lib/modules/
3.12.0-gentoo-lix-k05
3.6.2-gentoo-lix-k03
3.6.2-gentoo-lix-k04
А это делает скрипт:
$ ls -1 /boot
boot
config-3.12.0-gentoo-lix-k05
config-3.6.2-gentoo-lix-k03
config-3.6.2-gentoo-lix-k04
grub
memtest86plus
Sytem.map-3.12.0-gentoo-lix-k05
Sytem.map-3.6.2-gentoo-lix-k03
Sytem.map-3.6.2-gentoo-lix-k04
tools
vmlinuz-3.12.0-gentoo-lix-k05
vmlinuz-3.6.2-gentoo-lix-k03
vmlinuz-3.6.2-gentoo-lix-k04
А вот сам скрипт:
$ cd /usr/src/linux

$ cat ../kernel_install.sh 
#!/bin/sh
SUFFIX=3.12.0-gentoo-lix-k05
cp .config /boot/config-$SUFFIX
cp System.map /boot/Sytem.map-$SUFFIX
cp arch/i386/boot/bzImage /boot/vmlinuz-$SUFFIX
Мне его нашептал сам лично Капитан Очевидность. (Знаю что можно regexp'ами; мне так хочется)

Ну, и в меню груба, соответственно, несколько пунктов.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
27 мая 2014 г.
Ответ на: комментарий от Kroz

Вот что делает make modules_install

я имел ввиду как самому класть модуи куда мне надо, куда он их кладёт я и так знаю.
искал по имени модуля в директории после компияции, там не нашёл. откуда он их берёт?
как самому руками вытащить модули после компиляции?

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

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

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

INSTALL_MOD_PATH= помещает в путь/lib/modules/версия

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.