LINUX.ORG.RU

gentoo, модули ядра, велосипед.


0

0

Всё началось с gentoo. По хэндбуку после сборки ядра рекомендуют следущее:

найти модули

find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'

и ручками править файл

nano -w /etc/modules.autoload.d/kernel-2.6

Устав работать руками, написал небольшой скрипт:

#!/bin/bash
#This is a simple script to collect the names of the kernel modules
# and put them into /etc/modules.autoload.d/kernel-2.6
WHERE_TO_SEARCH='/lib/modules/'`ls -l /usr/src/linux | sed 's/.*linux-//'`
echo "Finding the kernel modules in $WHERE_TO_SEARCH ..."

find $WHERE_TO_SEARCH -type f -iname *.o -or -iname *.ko | sed -e 's:.*/::' -e 's:[.]ko::' -e 's:[.]o::' > kernel-2.6.new

echo "`cat kernel-2.6.new | wc -l` modules were found."

read -p "Rewrite /etc/modules.autoload.d/kernel-2.6 (must have write permissions)<yes/no>? "
if [ "$REPLY" = "yes" ]
then
mv -f kernel-2.6.new /etc/modules.autoload.d/kernel-2.6 || echo "Moving error"
else
 echo "See the generated kernel-2.6.new file."
fi

Собственно

  • Покритикуйте, пожалуйста, скрипт
  • Чем пользуются настоящие гуру вместо велосипеда?
★★★★★

Не верю я в ручную работу, наверняка что-то лучше есть.

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

Эээ... а зачем грузить ВСЕ модули из /lib/modules ?

У меня самое нужное вкомпилено в ядро, а то что не всегда использую собираю модулями. В автозагрузке стоят только модули звуковухи и виртуалбокса.

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

Спасибо, что откликнулся.

Вопрос немного не в том. Что загружать, a что нет решается у меня комментированием или отсутствием комментирования.

Интересно, как люди работают, какие инструменты используют, может быть специфичные для gentoo.

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

Да в общем-то (именно в этом направлении) никак не работаем, потому что давно udev загружает только то, что нужно. Если промахивается (видел только на какой-то гигабитной рилтековской сетевухе), то тогда решается одной строчкой. А чтобы вот так, полторы тысячи модулей (у меня примерно столько, потому что собираю почти всё, так как частенько приходится клонировать систему знакомым), ручками...

Lumi ★★★★★
()

> WHERE_TO_SEARCH='/lib/modules/'`ls -l /usr/src/linux | sed 's/.*linux-//'`

а если у меня несколько версия ядра там лежит? да и ls -l както некошерно. Везде в скриптах для этих целей юзают вывод uname -r

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

$ ls -l /usr/src/linux

lrwxrwxrwx 1 root root 22 Фев 2 13:47 /usr/src/linux -> linux-2.6.27-gentoo-r8

$ ls -l /usr/src/linux | sed 's/.*linux-//'

2.6.27-gentoo-r8

$ WHERE_TO_SEARCH='/lib/modules/'`ls -l /usr/src/linux | sed 's/.*linux-//'`

$ echo $WHERE_TO_SEARCH

/lib/modules/2.6.27-gentoo-r8

Т.е. Ищем модули нового собираемого ядра, на какое указывает ссылка /usr/src/linux

А uname -r это информация по загруженному уже ядру, если я правильно понимаю.

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

Да, извиняюсь, немного невнимательно прочитал.

Если система ставится с лив-цд то конечно твой вариант правильный. (т.к. загружено лив-цдшное ядро)

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

>потому что давно udev загружает только то, что нужно.

:-)Вообще убрал /etc/modules.autoload.d/kernel-2.6

Перегрузился, сразу после загрузки их было 23 (lsmod | wc -l), теперь уже 29... Как udev решает, что нужно, а что нет? Во всяком случае, где почитать, как работает udev именно c модулями ядра. Гугл не помогает...

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

Загрузка модулей по мере необходимости imho правильно.

Так что, файл /etc/modules.autoload.d/kernel-2.6 не нужен?

Во всяком случаем, пока ничего нужного не отвалилось без него.

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