СообЧа > База Знаний > Unix, Linux > Ядро

Вопрос

Как в RadHat 8.0 перекомпелиросать ядро на более новое? Я пытался его перекомпелировать, а толку никакого.

Ответ

Когда все устройства сконфигурированы, можно перейти непосредственно к этапу компилирования ядра.

Введите команду
# make dep

После завершения ее работы нужно ввести команду
# make bzImage

Если исходники ядра и компилятор установлены корректно, вы получите откомпилированное ядро. Обычно оно помещается в каталог
/usr/src/linux/arch/i386/boot
Теперь нужно откомпилировать модули, которые будут использоваться ядром
# make modules

И установить их
# make modules_install

Перед установкой модулей сделайте резервную копию модулей старого ядра (каталог /lib/modules)
Теперь можно ввести команду
# make install

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

Откройте в любом редакторе файл /etc/lilo.conf
# vi /etc/lilo.conf

Добавьте следующие строки

image=/usr/src/linux/arch/i386/boot/bzImage
label=my_linux
root=/dev/hda5
append=" mem=128M"
read-only

Естественно, укажите свою корневую файловую систему и объем оперативной памяти.

Введите команду
# lilo

Теперь перезагрузите систему
# reboot

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

Из конференции Expert_FAQ

Вопрос

Как определить, с поддержкой каких модулей собрано ядро?

Ответ

ls -l -R /lib/modules/`uname -r`/kernel

Выводятся все модули твоего ядра

Aleksey Samusenko

/usr/src/~linux/make oldconfig

Unknown

Вопрос

Как перекомпилировать ядро с поддержкой видеокарты geforce4 mx440? Я уже и так, и эдак редактировал xf86config-4 (который обрабатывается) — проблема, как я понял, не в нем. Такая штука в мандрейке, и в моем дебиане. Пока пользуюсь кноппиксом, установленым на хард, и обычным дебианом в консоли. MC установил, и то хорошо… Вообще желательно полный листинг — что набрать, куда щелкнуть, что потом с Lilo делать…

Ответ

Для перекомпиляции с поддержкой твоей карты заходишь в директорию /usr/src/linux т.е. туда, куда распакованы исходники твоего ядра запускаешь make config или make menuconfig или make xconfig(если компилишь под иксами), лучше конечно последние два варианта. Там в настройках видео находишь свою видюху, ставишь галочку сохраняешь изменения(полное описание настройки конфига ищи в нете или спроси у меня).
Далее набираешь:

make dep
make clean
make bzImage
make modules
make modules_install


В итоге в папке /usr/src/linux/arch/i386/boot лежит файл bzImage копирушь его в папку /boot с имненем папример vmlinuz.new
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz.new
затем редактируешь файл lilo.conf в папке /etc
Вот пример моего файла:

# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot = /dev/hda #загрузочный диск куда ставим lilo
message = /boot/boot_message.txt # сообщение выводимое при pагрузке lilo
prompt
timeout = 1200
vga = normal
# End LILO global section
# DOS bootable partition config begins
other = /dev/hda1
label = Win98
table = /dev/hda
# DOS bootable partition config ends
# Linux bootable partition config begins
image = /vmlinuz
root = /dev/hdb1
label = Linux
alias = nix
read-only
# Тебе в пригципе придется добавить только эту часть — ничего
# больше менять не надо
# Linux bootable partition config ends
image = /boot/vmlinuz.new
root = /dev/hda1 # Поставь правильно свой раздел
label = new.kernel
read-only


После сделанных изменений набираешь команду lilo, усе перезагружайся.
НО! Может оказаться что в ядро не в ключена поддержка твоей карточки, тогда идешь на сайт производителя скачиваешь драйвер читаешь README выполняешь то, что там написано, а затем компилишь ядро как уже было описано выше.

Из конференции Expert_FAQ

Вопрос

Как решить следующую проблему с компиляцией ядра. Даю команду:

# make bzImage
(перед этим, конечно, были выполнены 'make config', 'make dep')

Пишет:

gcc -Wall -Wstrict-prototypes -02 -fomit-frame-pointer -o
scripts/split-include script/split-include.c
make: *** No rule to make target `include/linux/autoconf.h`, needed by
`include/config/MARKER`. Stop.

и, ес-но, на этом процесс прерывается.
Версия ядра: 2.4.21rc7
Дистр: ALT Linux Master 2.2 обновленный из Сизифа

Ответ

Такое выдает, когда ты уже один раз пытался собрать ядро, но не довел дело до конца и пытаешься собрать повторно.
Надо файлики поудалять :) а лучше если ставишь из rpm

1. rpm -e kernel-source*
2. del /usr/src/linux-X.X.X
3. rpm -i kernel-source*

если из архива то п.2. а потом поновой распаковать
Правильно собирать ядро надо так

make config (или menuconfig, xconfig)
make dep
make clean
make bzImage
make modules
make modules_install
потом mv /usr/src/linux/arch/i386/boot/bzImage /boot/newkernel
потом правишь /etc/lilo.conf
потом lilo

Если не доходит до modules надо проверять что-то не так делаешь

Из конференции Expert_FAQ

Вопрос

Возникла проблема с установкой ALSA на ядро 2.4.9, делаю как написано: компилю ядро с поддержкой только звука, но без поддержки отдельных звуковух, компилю ALSA, и при загрузке вижу: soundcore.o: insmod failed, cannot find. Все сводится к тому, что файл не под это ядро, как побороть? Если не перекомпилировать, то вообще ничего не работает.

Ответ

Эта строка
soundcore.o: insmod failed, cannot find
означает, что нет такого файла soundcore.o А потому, что ядро, видимо, нужно было собирать с поддержкой модульного звука CONFIG_SOUND=m

Aleksey Samusenko

Вопрос

Что значит ядро «такое-то» и чем оно отличается от ядра с другим набором цифр в названии? Насколько я понял, версия дистрибутива каких-либо разработчиков с версией ядра мало как связана?
А что обеспечивает совместимость между разными дистрибутивами (если она существует) — версия ядра?

Ответ

Цифры, означающие ядро, — это его версия. Например, kernel-2.4.19 означает ядро стабильной ветки 2.4.х, подверсии 19. Есть еще всякие дописки означающие подверсии версий ядра.

Теперь про связь дистрибуторов и разработчиков ядра: в каждом дистрибутиве используется определенная версия ядра, которая может быть немного изменена разработчиками дистрибутива. Однако нет проблем поставить новое ядро на уже установленный дистрибутив. Совместимость между дистрибутивами обеспечивается вызовами ядра и стандартом POSIX. Даже при различии бинарных версий программ (в зависимости от компилятора), их всегда можно пересобрать под специфическую платформу, так как большинство программ идут в исходных кодах.

Андрей Черепанов

Нечетные подверсии часто экспериментальные. Четные — более надежны.

varnik



Copyright © 2000-2004 Сообщество Чайников
Контактная информация