nixp.ru v3.0

18 января 2017,
среда,
08:54:35 MSK

DevOps с компанией «Флант»
ttoorrmmoozz написал 25 января 2005 года в 15:16 (339 просмотров) Ведет себя неопределенно; открыл 21 тему в форуме, оставил 25 комментариев на сайте.

Ситуевина такая :

Вот чего-то мы захотели изменить в ядре .

Берем значится создаем новый каталог , сваливаем туда исходники ядра ,

его конфиг , запускаем тулзу типа xconfig , или же просто чего-то исправляем

в Makefile , компилируем , все ништяк , копируем новый образ в /boot ,

перезагружаемся — и нифига , все колом стоит .

А не забыли ли мы про загружаемые модули ?

Я имею в виду то , что лежит в каталоге /lib/modules ?

fly4life
ttoorrmmoozz
Ситуевина такая :

Вот чего-то мы захотели изменить в ядре .

Берем значится создаем новый каталог , сваливаем туда исходники ядра ,

его конфиг , запускаем тулзу типа xconfig , или же просто чего-то исправляем

в Makefile , компилируем , все ништяк , копируем новый образ в /boot ,

перезагружаемся — и нифига , все колом стоит .

Как, простите, стоит?!

Какой загрузчик у тебя? Если lilo, то после компиляции ядра, во-первых, необходимо прописать новое ядро в соответствующей секции; во-вторых, под рутом прогнать /sbin/lilo.

ttoorrmmoozz
А не забыли ли мы про загружаемые модули ?

Я имею в виду то , что лежит в каталоге /lib/modules ?

В каталоге /lib/modules должны лежать модули ядра, но всё зависит от того, как компилировал ядро. Рассказывай по шагам, что делалось.

ttoorrmmoozz

Да не , я просто моделирую ситуацию , реально я пока ничего не делаю .

При настройке конфига мы устанавливаем опцию — поддержка загружаемых модулей .

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

Допустим , я своими ручками подправил какой-то код в исходниках .

Запустил make.

Образ скомпилировался .

Вопрос первый — что компилируется в результате make ?

Только образ или что-то еще ?

Вопрос второй — если при этом произошла компиляция каких-то внешних загружаемых модулей (я не совсем уверен — это файлы с расширением .so ?) , их нужно копировать в /lib/modules ?

fly4life

после команды 'make' скомпилируются модули и будут лежать в тех поддиректориях, в которых находятся их исходники. Чтобы они скопировались в /lib/modules, нужно прогнать команду 'make modules_install' (или же 'make install', если необходимо, чтобы вновь скомпилированное ядро тоже скопировалось в нужную дирекотрию (/boot))

ttoorrmmoozz

Т.е. получается , что 'make modules_install' как бы является частью 'make install' ?

И запуская 'make install' , мы тем самым копируем модули , а не только образ ?

Uncle Theodore

Нафик make install

Сначала распаковываем сырцы в /usr/src/linux-2.XX.XX

потом идем туда

cd /usr/src/linux-2.XX.XX

и пишем

make xconfig

как насладимся,

make bzImage && make modules && make modules_install

как все проработает,

cp arch/i386/boot/bzImage /boot/linux-2.XX.XX

emacs /etc/lilo.conf

lilo

reboot

Good Luck,

UT

fly4life
ttoorrmmoozz
Т.е. получается , что 'make modules_install' как бы является частью 'make install' ?

Ну это тебе прямо в README к ядру ;)

ttoorrmmoozz
И запуская 'make install' , мы тем самым копируем модули , а не только образ ?

Что такое «образ»?

fly4life
Uncle Theodore
Нафик make install

Ну почему же? Ровно то же, как и действия руками, только несравнимо удобнее ;)

Uncle Theodore
fly4life
Ну почему же? Ровно то же, как и действия руками, только несравнимо удобнее ;)

Одно время Мандрейк (у них перепатченное ядро) при прогонке make install разносил систему в щепки. Потом они, вроде, поправились, но все равно make install сам редактировал lilo.conf и прогонял lilo. Потому и нафик!

Good Luck,

UT

Master
fly4life
Ну почему же? Ровно то же, как и действия руками, только несравнимо удобнее ;)

make install копирует ядро в корень /

а мне это не нравится (для этого есть /boot)

fly4life
Uncle Theodore
Одно время Мандрейк (у них перепатченное ядро) при прогонке make install разносил систему в щепки. Потом они, вроде, поправились, но все равно make install сам редактировал lilo.conf и прогонял lilo. Потому и нафик!

Ну, по мандрейку не стОит делать столь радикальные выводы, потому как я могу привести множество дистрибутивов, которые не «разносят систему в щепки» ;) Да и lilo.conf сами не редактируют.

fly4life
Master
make install копирует ядро в корень /

а мне это не нравится (для этого есть /boot)

Неправильный какой-то у тебя дистрибутив ;). Или исходники ядра… У меня почему-то всё копирует куда надо (т.е. в /boot)

Master
fly4life
Неправильный какой-то у тебя дистрибутив ;).

Слака 10.0

fly4life
Или исходники ядра…

исходники c kernel.org

вот так

fly4life
Master
исходники c kernel.org

вот так

Хм… Кучу раз брал исходники оттуда же (под разными дистрибутивами), всё у меня копируется в /boot (ну, не прям всё, а ядро ;)). Что я делаю не так?

Master
fly4life
Хм… Кучу раз брал исходники оттуда же (под разными дистрибутивами), всё у меня копируется в /boot (ну, не прям всё, а ядро ;)). Что я делаю не так?

Может у тебя установлена переменная окружения INSTALL_PATH=/boot

???

fly4life
Master
Может у тебя установлена переменная окружения INSTALL_PATH=/boot

???

Нет, ничего такого не установлено.

Master

На слаке нет скрипта kernelinstall в /bin или /sbin — в этом и отличие.

Genie
make install копирует ядро в корень /

а мне это не нравится (для этого есть /boot)

а Makefile поправить немного было не судьба?

Комментарии там к месту расставлены.

Неправильный какой-то у тебя дистрибутив ;). Или исходники ядра… У меня почему-то всё копирует куда надо (т.е. в /boot)

элементарное незнание того, что и где, к тому же и как. ;)

Потом они, вроде, поправились, но все равно make install сам редактировал lilo.conf и прогонял lilo. Потому и нафик!

а вот в дебиане, если ставишь пакет ядра, конфиг lilo сам поправляется. так что ж теперь? ;)

я так думаю, что если стоял бы grub, было бы аналогично.

плохо разве?

Может у тебя установлена переменная окружения INSTALL_PATH=/boot

В самом Makefile именно её можно выставить как удобно.

кроме того, некоторые особенности систем внутри ядерного Makefile учтены.

Кстати, никто не прбовал сделать `make rpm`? (или что-то подобное, см. внимательнее этот самый Makefile)

поудивляйтесь.

кстати, начиная с 2.6.8 появилась цель сборки и для debian пакета.

правда, make-kpkg для него куда более правильное решение….

(только опять же, несколько некорректно работающее с ядрами 2.6)

в общем-то, не правильно использовать в пакетно-ориентированных дистрибутивах `make {,modules_}install`.. потому как «сам себе злобный Буратино» получается..

anonymous

А еще mkinitrd -o …

anonymous

Вот такая у меня ерунда выскочила.

root@darkstar:/usr/src/linux# make xconfig
rm -f include/asm
( cd include ; ln -sf asm-i386 asm)
make -C scripts kconfig.tk
make[1]: Entering directory `/usr/src/linux/scripts'
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o tkparse.o tkparse.c
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o tkcond.o tkcond.c
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -c -o tkgen.o tkgen.c
gcc -o tkparse tkparse.o tkcond.o tkgen.o
cat header.tk >> ./kconfig.tk
./tkparse < ../arch/i386/config.in >> kconfig.tk
echo "set defaults \"arch/i386/defconfig\"" >> kconfig.tk
echo "set ARCH \"i386\"" >> kconfig.tk
cat tail.tk >> kconfig.tk
chmod 755 kconfig.tk
make[1]: Leaving directory `/usr/src/linux/scripts'
wish -f scripts/kconfig.tk
make: wish: Команда не найдена
make: *** [xconfig] Ошибка 127

Что делать? Может пойти почитать Фак да и поставить себе 2.6.* ядро?

Genie

видимо, установить Tcl/Tk.

либо установить ncurses-dev, и пользоваться make menuconfig, не настолько оно и страшное. ;)

ps: -dev означает библиотеки и файлы заголовков, предназначенные для использования при компиляции программ.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.