Полезная информация голые тети

Next Up Previous Contents Index

6.1 Делаем новое ядро

Building a Custom Kernel

Вместе с появлением модульности в ядре Linux 2.0.x процесс построения ядра значительно поменялся. Раньше, если вы хотели использовать какое-нибудь оборудование или файловую систему, вам было необходимо вкомпилировать поддержку соответствующих компонент в ваше ядро. Для некоторых аппаратных конфигураций размер ядра мог быстро достичь критического уровня. Наличие встроенной поддержки редко используемых компонент приводило к бесполезной трате ресурсов системы. Ядра 2.0.x дают возможность по необходимости подгружать модули драйверов для редко используемого оборудования или файлофой системы. Смотрите секцию 9.6 главы 9, чтобы узнать как работать с модулями ядра.

6.1.1 Построение модульного ядра

Building a modularized kernel

Эти инструкции дадут вам знания, необходимые, чтобы воспользоваться той мощью и гибкостью, которую дает модульность ядра. Если вы не желаете использовать преимущества модульности, то читайте секцию 6.1.3, в которой объясняются различные аспекты построения и инсталяции монолитного ядра. Предполагается, что вы уже установили пакеты kernel-headers и kernel-source и находитесь в директории /usr/src/linux/.

Важно, чтобы перед началом процесса построения ядра дерево исходных текстов находилось в известном состоянии. Поэтому рекомендуется начать с команды make mrproper. Эта команда будет удалять все конфигурационные файлы и остатки всех предыдущих компиляций, которые могут быть разбросаны в дереве исходных текстов. После этого вы должны создать конфигурационный файл, который будет определять, какие компоненты включить в ваше новое ядро. В зависимости от вашего оборудования и вашего личного предпочтения, имеется три доступных метода конфигурирования ядра.

Учтите: Для того, чтобы использовать kerneld (смотри секцию 9.6, чтобы узнать о деталях) и модули ядра, вы должны ответить Yes на вопросы kerneld support и module version (CONFIG_MODVERSIONS) support во время конфигурации.

Обратите внимание: Если вы строите Linux/Intel ядро на машине с ``clone'' процессором (например Cyrix или AMD), то рекомендуется выбрать Processor type как 386.

Если вы хотите построить ядро с конфигурационным файлом (/usr/src/linux/.config), который вы уже построили одним из выше перечисленных методов, то вы можете пропустить команды make mrproper и make config, и сразу использовать make dep, а затем make clean, чтобы подготовить дерево исходных текстов для компиляции.

Следующий шаг состоит в компиляции компонент исходного кода в рабочую программу, которую затем ваша машина может использовать для загрузки. Описанный здесь метод - самый простой способ избавиться от неудачи. Если вы заинтересованы в других возможностях, то детали могут быть найдены в Kernel-HOWTO или в Makefile, лежащем в директории /usr/src/linux.

Если у вас есть SCSI адаптер и вы сделали ваш SCSI драйвер как модуль, постройте новый initrd image (см. Секцию 6.1.2. Заметьте, что существует ряд причин, чтобы сделать SCSI драйвер в виде модуля).

Чтобы избежать возможных ошибок при загрузке нового ядра, вы должны сохранить оригинальное ядро доступным. Чтобы добавить ядро в меню LILO просто переименуйте оригинальное ядро в директории /boot, скопируйте новое ядро в директорию /boot, добавьте несколько строчек в файл /etc/lilo.conf и запустите /sbin/lilo. Ниже дан пример файла /etc/lilo.conf, который поставляется с Red Hat Linux:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
        label=linux
        root=/dev/hda1
        read-only

Сейчас вы должны изменить файл /etc/lilo.conf. Если вы построили новый initrd image, то вы должны сказато LILO, чтобы он его использовал. В этом примере мы добавили в конец файла /etc/lilo.conf четыре строчки, указывающих на загрузку с другого ядра. Мы переименовали ядро /boot/vmlinuz в /boot/vmlinuz.old и изменили его метку на old. Мы также добавили initrd линию для нового ядра:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
        label=linux
        initrd=/boot/initrd
        root=/dev/hda1
        read-only
image=/boot/vmlinuz.old
        label=old
        root=/dev/hda1
        read-only

Теперь, когда вы будете загружаться и нажмете [Tab] на приглашение LILO boot:, будет показано два выбора;

LILO boot:
linux    old

Чтобы загрузить новое ядро (linux) просто нажмите [Enter], или просто ничего не делайте. Если вы хотите загрузить старое ядро (old), просто наберите old и нажмите [Enter].

Вкратце вы должны сделать следующее:

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

6.1.2 Делаем initrd image

Making an initrd image

initrd image необходим для загрузки вашего SCSI модуля во время загрузки. Программа /sbin/mkinitrd может построить правильный initrd image для вашей машины, если следующие условия выполнены:

Чтобы построить новый initrd image, выполните /sbin/mkinitrd с параметрами подобно этим:

	/sbin/mkinitrd /boot/newinitrd-image 2.0.12

где /boot/newinitrd-image - файл для использования вашего нового image-a, а 2.0.12 - ядро, чьи модули (из /lib/modules) должны быть использованы в initrd image ( нет необходимости указывать номер версии текущего ядра).

6.1.3 Строим монолитное ядро

Building a monolithic kernel

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


Next Up Previous Contents Index