Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
23.05.2015
Размер:
184.7 Кб
Скачать

Сборка ядра (The Ubuntu Way)

У каждого дистрибутива существует собственная методология и специфические утилиты для сборки ядра. Мы будем рассматривать сборку ядер лишь для систем из семейства Ubuntu, а если точнее для версий 6.10 и 6.06.

Предлагаемый метод сборки не является единственным или абсолютно верным.

Предварительные действия

Все последующие действия целесообразно выполнять под root'ом. Создать пользователя root можно следующим образом:

sudo passwd root

После чего переключаемся под root: su

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

Если написано apt-get update

вы должны писать sudo apt-get update

И так везде.

/bin/sh в Ubuntu 6.10

В Ubuntu 6.10, по умолчанию, /bin/sh является символической ссылкой на /bin/dash. Но с /bin/dash очень часто возникают проблемы, особенно при сборке программ из исходных текстов. В следствии этого лучше сделать /bin/sh символической ссылкой на /bin/bash.

rm -f /bin/sh

ln -s /bin/bash /bin/sh

Установка пакетов необходимых для сборки ядра

Для начала стоит обновить бд пакетов: apt-get update

Затем устанавливаем необходимые пакеты:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Получение исходников ядра

Зайдите на www.kernel.org и выберите нужную вам версию исходников ядра, к примеру linux-2.6.18.1.tar.bz2 (все версию ядер ветки 2.6 можно найти здесь: http://www.kernel.org/pub/linux/kernel/v2.6/). Затем скачайте ядро и поместите в

директорию/usr/src: cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

Распакуйте исходники и создайте символическую ссылку linux на директорию с исходники ядра:

tar xjf linux-2.6.18.1.tar.bz2 ln -s linux-2.6.18.1 linux cd /usr/src/linux

Конфигурирование ядра:

Рекомендуется использовать конфигурацию текущего работающего ядра как базис для нового ядра. Для этого копируем существующую конфигурацию в

директорию /usr/src/linux:

cp /boot/config-`uname -r` ./.config

Затем запустите make menuconfig

Появится конфигурационное меню. Переходим к пункту Load an Alternate Configuration File и выбираем .config (который содержит конфигурацию текущего рабочего ядра) в качестве файла конфигурации:

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

Сборка ядра

Для сборки ядра выполняем следующее: make-kpkg clean

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

В значении параметра --append-to-version= можно указать любую строчку (неплохой дополнительный идентификатор ядра), но она должна начинаться со знака минус (-)

и не должна содержать пробелы.

Ну вот ядро собирается. Сборка может занят продолжительное время. Все зависит от конфигурации ядра, скорости процессора и параметров оптимизации.

Установка нового ядра

После успешно сборки в директории /usr/src directory появятся два .deb пакета cd /usr/src

ls -l

К примеру (у вас ядро должно быть старше и названия будут красивше =) ), они могут называется следующим образом linux-image-2.6.18.1-custom_2.6.18.1- custom-10.00.Custom_i386.deb (само ядро) и linux-headers-2.6.18.1-custom_2.6.18.1- custom-10.00.Custom_i386.deb (файл необходимый для подключения дополнительных модулей ядра). Устанавливаем их следующим образом:

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

Все господа! Победа! Проверьте /boot/grub/menu.lst, и увидите два новых набора строк:

vi /boot/grub/menu.lst

Вот наборы строк для примера:

title

Ubuntu, kernel 2.6.18.1-custom

root

(hd0,0)

kernel

/boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash

initrd

/boot/initrd.img-2.6.18.1-custom

savedefault boot

title

Ubuntu, kernel 2.6.18.1-custom (recovery mode)

root

(hd0,0)

kernel

/boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single

initrd

/boot/initrd.img-2.6.18.1-custom

boot

 

Теперь перезагружаем систему: shutdown -r now

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

uname -r

Если система не запускается, запустите систему со старым ядром. (Ведь вы не удалили его и соответствующие ему строчки в /boot/grub/menu.lst?)

Попытайтесь заново сконфигурировать новое ядро и собрать его. И не забудьте убрать строчки загрузки бракованного ядра из /boot/grub/menu.lst.