Для начала поставим пакеты:
kernel-package - система для создания пакетов, касающихся ядра. Этот пакет содержит утилиту make-kpkg, которая нам сделает не просто собранное ядро, а deb-пакет, который мы потом сможем установить на любую другую систему.
fakeroot - специальная команда, которая позволит подхватить переменное окружение рута обычному пользователю и тем самым создавать файлы и директории, назначая им владельцем рута.
build-essential - этот пакет сам по себе кроме информации ничего не несет, но не установится без зависимостей: make, dpkg-dev, gcc, g++ и так далее. То есть поставив этот пустой пакет, мы поставим многие необходимые утилиты и компиляторы.
Кроме того, нам скорее всего понадобятся комплекты подключаемых библиотек для компиляции ядра. Поэтому проверим, какая у нас платформа:
Выпадет несколько пакетов на выбор. Установим только тот, что подходит нам. Например у меня 32-битная система и потому я ставлю:
Также понадобится библиотека zlib:
Теперь переходим в директорию, где будем работать:
Идем в репозиторий и выбираем себе пакет, который начинается с linux-2.6_2.6.NN.orig.tar.gz
Обратите внимание, что это ядро будет заметно больше других файлов по размеру (от 50Mb и выше) и не скачайте просто патч. На данный момент доступны только 26-е, 30-е и 32-е ядра.
Итак выбираем ядро и загружаем его:
Распаковываем скачанный архив:
Создаем линк:
Предположим, что нам понадобилось добавить какие-то патчи.
Тогда создадим директорию, куда их скачаем:
Теперь скачаем их туда.
Далее переходим в эту директорию:
Первым делом накатим патчи, которые мы только что скачали. Обязательно сначала прогнать их в тестовом режиме (dry-run) и только потом, если тест успешный, реально наложить. В зависимости от того в каком архиве патч, он по разному накатывается:
Далее нужно будет отконфигурировать ядро. Чтобы не конфигурировать все сначала и не отрываться от результатов конфигураций умными людьми из Debian, можно взять конфигурацию текущего ядра (но это все же шаг не обязательный):
Теперь можем запустить графическую менюшку конфигурации. Сначала установим для нее набор библиотек:
И запустим ее:
Не забудьте выбрать «Kernel module loader» в «Loadable module support» (не включён по умолчанию). Если его не включить, возникнут проблемы с установкой Debian.
Кроме того, если используете netconsole, не забудьте включить опцию
Пришло время собрать ядро. Запускать из под рута не рекомендуется, тем более, что fakeroot даже и не даст этого сделать. Поэтому, если мы до этого работали под рутом, нужно сменить пользователя. Например пользователя зовут username.
Так как собранное ядро автоматом ложится в /usr/src, то нужен доступ в эту директорию (не думаю, что тут требуется секьюрность, поэтому позволим себе дать права 777):
И перейдем под пользователя в это директорию:
Ну а теперь запустим компиляцию:
где вместо nodesquad1 нужно дописать свою пометку ядру, которая добавится в название.
Это на долго...
После того, как компиляция и сборка пробежали, осталось поставить пакет:
Ну и перезагружаемся:
Здесь:apt-get install kernel-package fakeroot build-essential libncurses5-dev
kernel-package - система для создания пакетов, касающихся ядра. Этот пакет содержит утилиту make-kpkg, которая нам сделает не просто собранное ядро, а deb-пакет, который мы потом сможем установить на любую другую систему.
fakeroot - специальная команда, которая позволит подхватить переменное окружение рута обычному пользователю и тем самым создавать файлы и директории, назначая им владельцем рута.
build-essential - этот пакет сам по себе кроме информации ничего не несет, но не установится без зависимостей: make, dpkg-dev, gcc, g++ и так далее. То есть поставив этот пустой пакет, мы поставим многие необходимые утилиты и компиляторы.
Кроме того, нам скорее всего понадобятся комплекты подключаемых библиотек для компиляции ядра. Поэтому проверим, какая у нас платформа:
uname -mПоищем в репозитории подходящий пакет для нашей платформы:
apt-cache search linux-headers
Выпадет несколько пакетов на выбор. Установим только тот, что подходит нам. Например у меня 32-битная система и потому я ставлю:
apt-get install linux-headers-2.6-686
Также понадобится библиотека zlib:
apt-get install libzlcore-dev zlib1g-dev
Теперь переходим в директорию, где будем работать:
cd /usr/src
Идем в репозиторий и выбираем себе пакет, который начинается с linux-2.6_2.6.NN.orig.tar.gz
Обратите внимание, что это ядро будет заметно больше других файлов по размеру (от 50Mb и выше) и не скачайте просто патч. На данный момент доступны только 26-е, 30-е и 32-е ядра.
Итак выбираем ядро и загружаем его:
wget http://security.debian.org/debian-security/pool/updates/main/l/linux-2.6/linux-2.6_2.6.32.orig.tar.gz
Распаковываем скачанный архив:
tar xzvf linux-2.6_2.6.32.orig.tar.gz
Создаем линк:
ln -s linux-2.6-2.6.32 linux
Предположим, что нам понадобилось добавить какие-то патчи.
Тогда создадим директорию, куда их скачаем:
mkdir /usr/src/patches
Теперь скачаем их туда.
Далее переходим в эту директорию:
cd linux
Первым делом накатим патчи, которые мы только что скачали. Обязательно сначала прогнать их в тестовом режиме (dry-run) и только потом, если тест успешный, реально наложить. В зависимости от того в каком архиве патч, он по разному накатывается:
cat ../patches/name.patch | patch -p1 --dry-runcat ../patches/name.patch | patch -p1илиzcat ../patches/name.patch.gz | patch -p1 --dry-runzcat ../patches/name.patch.gz | patch -p1илиbzcat ../patches/name.patch.bz2 | patch -p1 --dry-runbzcat ../patches/name.patch.bz2 | patch -p1
Далее нужно будет отконфигурировать ядро. Чтобы не конфигурировать все сначала и не отрываться от результатов конфигураций умными людьми из Debian, можно взять конфигурацию текущего ядра (но это все же шаг не обязательный):
cp /boot/config-`uname -r` .config
Теперь можем запустить графическую менюшку конфигурации. Сначала установим для нее набор библиотек:
apt-get install libncurses5-dev
И запустим ее:
make menuconfig
Не забудьте выбрать «Kernel module loader» в «Loadable module support» (не включён по умолчанию). Если его не включить, возникнут проблемы с установкой Debian.
Кроме того, если используете netconsole, не забудьте включить опцию
CONFIG_NETCONSOLE_DYNAMIC
Пришло время собрать ядро. Запускать из под рута не рекомендуется, тем более, что fakeroot даже и не даст этого сделать. Поэтому, если мы до этого работали под рутом, нужно сменить пользователя. Например пользователя зовут username.
Так как собранное ядро автоматом ложится в /usr/src, то нужен доступ в эту директорию (не думаю, что тут требуется секьюрность, поэтому позволим себе дать права 777):
chmod 777 /usr/src
И перейдем под пользователя в это директорию:
su - username
cd /usr/src/linux
Ну а теперь запустим компиляцию:
fakeroot make-kpkg --verbose --initrd --append-to-version=-nodesquad1 kernel_image kernel_headers
где вместо nodesquad1 нужно дописать свою пометку ядру, которая добавится в название.
Это на долго...
После того, как компиляция и сборка пробежали, осталось поставить пакет:
Убеждаемся, что в grub'е для загрузки именно это ядро (команду не дам, потому что у всех разные версии grub'а, а у некоторых вообще lilo).dpkg -i linux-image-2.6.32-nodesquad1_2.6.32-nodesquad1-10.00.Custom_i386.deb
Ну и перезагружаемся:
reboot
Комментариев нет:
Отправить комментарий