К основному контенту

Kernel config

Конфигурирование и компиляция ядра Linux
Пересборка ядра Linux дело очень интересное и почему-то часто отпугивает новичков. Но ничего сложного в этом нет, и скомпилировать ядро Linux бывает не сложнее, чем собрать (скомпилировать) любую другую программу из исходников. Пересборка ядра может понадобиться, когда вам требуются какие-нибудь функции, не включенные в текущее ядро, или же, наоборот, вы хотите что-то отключить. Все дальнейшие действия мы будем выполнять в Ubuntu Linux.

Установка утилит

Для настройки и сборки ядра Linux вам потребуется установить несколько пакетов, которые понадобятся для сборки и настройки ядра: kernel-package, build-essential, libncurses-dev. Сделать это можно командой:

sudo apt-get install build-essential kernel-package libncurses-dev


Скачиваем исходный код ядра

Теперь нужно скачать исходный код ядра. Мы будем скачивать ядро для Ubuntu. Вы можете скачать определенную версию ядра, например, ту, которую вы в данный момент используете или же скачать самую последнюю версию. Для того, чтобы определить версию ядра Linux, которую вы используете, выполните команду uname с параметром -r:

uname -r

Вывод команды будет примерно следующим:

$uname -r
2.6.31-16-generic

Имя пакета, содержащего исходные коды ядра обычно имеет следующий вид: linux-source-Версия. Например, для ядра версии 2.6.24: linux-source-2.6.24. Самая последняя версия ядра в репозиториях Ubuntu называется просто linux-source, без указания версии на конце. Для установки исходных кодов последней версии ядра Ubuntu Linux, выполните команду:

sudo apt-get install linux-source

Эта команда скачивает исходники ядра и размещает их в директории /usr/src. На момент написания заметки последняя версия ядра, которая была скачана — 2.6.27, ее мы и будем использовать. Если мы теперь перейдем в директорию /usr/src и выполним команду ls, то увидим, что среди файлов присутствует файл linux-source-2.6.27.tar.bz2. Это и есть исходные коды ядра Linux (ядра Ubuntu).
Распаковываем исходный код ядра

Перейдем в директорию /usr/src и разархивируем ядро. Для этого выполните следующие команды:

cd /usr/src
$ sudo tar xjf linux-source-2.6.31.tar.bz2
$ sudo ln -s linux-source-2.6.31 linux

cd /usr/src/linux
sudo make oldconfig

В результате выполнения команды make oldconfig создастся файл .config, содержащий параметры конфигурации ядра.

Получить справку по всем параметрам make для ядра Linux вы можете, выполнив команду make help.

Для изменения конфигурации ядра мы воспользуемся консольной утилитой menuconfig. Для ее запуска выполните:

sudo make menuconfig

Перед вами появится интерфейс, в котором вы можете включать или отключать определенные опции ядра:
Теперь выберите «Exit» (нажав кнопку Вправо и затем Enter) и выйдите из утилиты. Перед выходом из утилиты выскочит сообщение с вопросом — сохранить проделанные изменения, выберите Yes.
Компиляция ядра

Пришло время скомпилировать ядро с теми изменениями, которые мы внесли на предыдущем шаге. Для начала выполним команду, которая удалит файлы (если они имеются), оставшиеся от предыдущей компиляции:

sudo make-kpkg clean

Наконец, чтобы запустить компиляцию ядра, выполним команду:

sudo make-kpkg --initrd --append-to-version=-mykernel kernel_image kernel_headers

Ключ -append-to-version используется, чтобы добавить к имени файла образа ядра, который мы получим после компиляции, строку -mykernel, чтобы было проще идентифицировать свое ядро. Вместо -mykernel вы можете использовать любой префикс.

Компиляция ядра занимает довольно много времени и может длиться от нескольких десятков минут до нескольких часов, в зависимости от мощности вашего компьютера.
Установка (инсталляция) ядра

После компиляции ядра вы получили на выходе два файла: linux-image-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb, linux-headers-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb. Мы воспользуемся командной dpkg -i, которая автоматически установит ядро и пропишет его в ваш загрузчик GRUB (в файл /boot/grub/menu.lst). Отмечу, что ядро будет установлено, как ядро по умолчанию, поэтому если оно у вас не загрузится вам нужно будет загрузиться, используя ваше предыдущее ядро (оно должно быть в списке меню GRUB при загрузке компьютера) и вручную изменять файл menu.lst. Итак, для установки ядра выполните команды:

dpkg -i linux-image-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb

Запуск системы с новым ядром

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

Комментарии

Популярные сообщения из этого блога

Настройка принтера HP Laserjet 1020 в ubuntu (kubuntu).

1. Скачиваем необходимый драйвер с официального сайта. $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz --2010-01-03 11:19:24-- http://foo2zjs.rkkda.com/foo2zjs.tar.gz Преобразование адреса foo2zjs.rkkda.com... 74.208.41.246 Устанавливается соединение с foo2zjs.rkkda.com|74.208.41.246|:80... соединились. Запрос HTTP послан, ожидание ответа... 200 OK Длина: 1588047 (1,5M) [application/x-tar] Сохраняется в каталог: `foo2zjs.tar.gz'. 100%[============================================================================>] 1 588 047 43,0K/s в 55s 2010-01-03 11:20:19 (28,1 KB/s) - `foo2zjs.tar.gz' сохранён [1588047/1588047] 2. Распаковываем полученный архив: tar zxf foo2zjs.tar.gz cd foo2zjs 3. Теперь компилируем и инсталируем. Файл INSTALL содержит много информации и инструкций. Рекомендуется прочитать. $ make # # Dependencies... # # ... OK! ...

rtorrent

#.rtorrent.rc scgi_port = localhost:5000 min_peers = 10 max_peers = 50 max_uploads = 10 download_rate = 2000K upload_rate = 500K directory = /home/torrents/torrents/ session = /home/torrents/torrents/.rtsession schedule = watch_directory,60,60,load_start=/home/torrents/torrents/watch/*.torrent port_range = 7899-7899 port_random = no check_hash = yes peer_exchange = yes

Unix Toolbox

System Running kernel and system information # uname -a # Get the kernel version (and BSD version) # lsb_release -a # Full release info of any LSB distribution # cat /etc/SuSE-release # Get SuSE version # cat /etc/debian_version # Get Debian version Use /etc/DISTR-release with DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), and so on. # uptime # Show how long the system has been running + load # hostname # system's host name # hostname -i # Display the IP address of the host. # man hier # Description of the file system hierarchy # last reboot # Show system reboot history Hardware Informations Kernel detected hardware # dmesg # Detected hardware and boot messages # lsdev # information about installed hardware # dd if=/d...