2007/03/07

Сборка ядра Linux

Статья "Некоторые замечания о сборке ядер Линукс" заставила в очередной раз обратить внимание на Linux ядро, его сборку, конфигурирование и для меня, наконец, этот процесс стал более прозрачным и понятным.

Если используется Debian-ориентированная система, то для установки всего необходимого можно воспользоваться менеджером пакетов, он установит все необходимые промежуточные зависимости:

# apt-get install linux-source-2.x.x libncurses5-dev kernel-package
# cd /usr/src
# tar xfj kernel-source-2.x.x.tar.bz2
# cd kernel-source-2.x.x
# make menuconfig
...
(конфигурирование параметров ядра)
...
# make-kpkg --append-to-version=.cramfsasmodule --revision=1.0 kernel_image
dpkg -i kernel-image-(2.x.x)(--append-to-version)_(--revision)_(architecture).deb
  • append-to-version - опция для указания версии ядра (можно использовать символы '+' и '.', нельзя использовать '_')
  • revision - опция для указания версии пакета в Debian-репозитарии (можно использовать символы '+' и '.', нельзя использовать '_'). По умолчанию используется "10.00.Custom"
  • kernel_image - сделать debian-пакет ядра

Либо всё делать вручную: скачать ядро с сайта www.kernel.org в /usr/src

# cd /usr/src
# tar xfj kernel-source-2.x.x.tar.bz2
# cd kernel-source-2.x.x
# make clean
# make menuconfig
...
(конфигурирование параметров ядра)
...
# make bzImage modules # Сборка ядра и модулей
# make modules_install install # установка модулей и ядра
# update-grub # Обновление меню загрузчика GRUB

Чтобы установить версию ядра в ручном методе, в файл /usr/src/Makefile необходимо внести поправку:

EXTRAVERSION = 20070304withusb

Статья "Ставим ядро 2.6, или Ядерная физика для домохозяйки" очень может помочь в процессе выбора необходимых опций на этапе конфигурации.

Чтобы не использовать initrd должны быть монолитно собраны драйвера корневой файловой системы (например ext3) и следущие опции:

Device Drivers -> Block devices

[*] RAM disk support
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Также должен присутствовать в виде модуля (или монолитно)

File systems -> Miscellaneous filesystems

[*/M] Compressed ROM file system support (cramfs)

Ссылки:

  1. Некоторые замечания о сборке ядер Линукс.
  2. Ставим ядро 2.6, или Ядерная физика для домохозяйки.
  3. How To Roll A Kernel the Ubuntu/Debian Way
  4. Creating custom kernels with Debian's kernel-package system

2 comments:

virens said...

Замечательный пост, много ценных дополнений. Спасибо за ссылку :-)

Roman Sozinov said...

Михаил, и Вам спасибо - вы главный инициатор данного поста :)