Библиотека сайта rus-linux.net
Цилюрик О.И. Модули ядра Linux | ||
Назад | Окружение и инструменты | Вперед |
Нужно ли перекомпилировать ядро?
Для сборки и отработки модулей ядра перекомпиляция самого ядра (и загружаемого образа системы), в обязательном порядке, - не нужна. Для работы с модулями достаточно наличия заголовочных файлов ядра (в точности соответствующих загруженной версии ядра!). Обычно заголовочные файлы, необходимые для разработки модулей, присутствуют в вашей системе (это определяется предпочтениями дистрибьюторов вашей Linux системы). Но может оказаться, что это и не так, в этом случае символьная ссылка /lib/modules/`uname -r`/build окажется неразрешённой, а каталог кодов ядра пустой:
$ ls /usr/src/kernels
$
В этом случае нужно доустановить пакет вида:
# yum install kernel-devel.x86_64
... Установка: kernel-devel x86_64 2.6.35.13-92.fc14 updates 6.6 M ... Объем загрузки: 6.6 M Будет установлено: 24 M ... Установлено: kernel-devel.x86_64 0:2.6.35.13-92.fc14
- показана установка в 64-разрядной системе , в 32-разрядной, естественно, это будет kernel-devel.i686.
В любом случае, мы должны убедиться, что заголовочные файлы, соответствующие версии исполняющейся системы, у нас установлены:
$ ls /lib/modules/`uname -r`/build
arch drivers include kernel mm samples sound usr block firmware init lib Module.symvers scripts System.map virt crypto fs ipc Makefile net security tools vmlinux.id
Но и сборка ядра Linux, с чего мы начали обсуждение, может оказаться полезной и нужной для сборки ядра с некоторыми специальными качествами, например, с повышенными отладочными уровнями. Для сложных комплексных и долгосрочных проектов сборка рабочей версии ядра желательна.
Сборка (и установка) нового ядра в новых версиях Linux может быть сопряжена с некоторыми сложностями, связанными не с самой сборкой (сборка ядра в более ранних версиях производилась вообще без проблем), а с некоторыми сопутствующими обстоятельствами взаимодействия ядра с другими частями заружаемой системы, из которых можно назвать: необходимость начального загрузочного образа, установка системы в виртуальную файловую систему...
Если же вы решите пересобрать ядро, то первое, что нужно сделать — выяснить: какое и откуда грузится ваше текущее ядро (все последующие примеры — с реального компьютера!):
$ uname -r
2.6.18-92.el5
$ sudo cat /boot/grub/grub.conf
... title CentOS (2.6.18-92.el5) root (hd1,5) kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.18-92.el5.img ...
Здесь нужно соблюдать величайшую осторожность:
$ ls /dev/hd*
/dev/hda /dev/hde /dev/hde1 /dev/hde2 /dev/hde5 /dev/hdf
/dev/hdf1 /dev/hdf2 /dev/hdf4 /dev/hdf5 /dev/hdf6
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 3 Мар 12 10:15 /dev/cdrom -> hda
$ sudo /sbin/fdisk /dev/hdf
... Команда (m для справки): p Устр-во Загр Начало Конец Блоки Id Система /dev/hdf1 * 1 501 4024251 4f QNX4.x 3-я часть /dev/hdf2 1394 2438 8393962+ f W95 расшир. (LBA) /dev/hdf4 502 1393 7164990 c W95 FAT32 (LBA) /dev/hdf5 1394 1456 506016 82 Linux своп / Solaris /dev/hdf6 1457 2438 7887883+ 83 Linux
На данном компьютере (возможно, вопреки тому, что могло ожидаться на первый взгляд):
а). два HDD,
б). устройство /dev/hda — это CD-ROM,
в). 2-м HDD соответствуют /dev/hde и /dev/hdf (аппаратный EIDE контроллер ... но это не принципиально важно — диски при инсталляции могут быть «расставлены» самым замысловатым образом);
г). диску (hd1,5), указанному как загрузочный в меню загрузчика grub, соответствует /dev/hdf (т. е. 2-й диск) — grub «считает» диски, начиная с 0;
д). по той же причине, загрузочному разделу диска (hd1,5) соответствует /dev/hdf6 (т. е. 6-й раздел);
е). это верно только для старых версий загрузчиков lilo и grub :
$ sudo /sbin/grub
GNU GRUB version 0.97
grub> help
blocklist FILE boot cat FILE chainloader [--force] FILE clear color NORMAL [HIGHLIGHT] ...
grub> quit
ж). Загрузчик grub версий 1.X, только идущий на смену версиям 0.Х - «ведёт счёт» начиная с 1!
Примечание: Выше специально показано, что grub имеет развитую интерактивную командную оболочку ... но это уже выходит за рамки нашего рассмотрения.
Вся дальнейшая детальная информация по сборке и установке ядра вынесены отдельным приложением в конце текста.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Инсталляция модуля | Обсуждение итогов раздела 4 |