четверг, февраля 12, 2009

ЯДРО LINUX. Рассмотрение этапов компиляции (сборки) и установки нового ядра операционной системы GNU\Linux Debian Etch.

Что можно сделать с ядром Linux:
  1. Внести изменения в настройки существующего ядра, пресобрав его с новыми параметрами.
  2. Установить новое ядро. В этом случае можно организовать возможность загрузки как со старого так и с нового, да и вообще говоря, с любого установленного ядра.
  3. Наложить патчи на существующее ядро.
ОС Debian, как известно, для обновления программного обеспечения известно использует систему APT. В каждой ветке дистрибутива (stable, testing, unstable) в определенный момент времени доступна та или иная версия ядра. Таким образом по команде apt-get install linux вы сможете установить новую версию ядра, если таковая появилась в используемой вами ветке. Программа установки сама выполнит все необходимые действия и при следующей загрузке системы загрузчик Grub или Lilo предложит выбрать на каком ядре запустить ОС. Сказанное больше справедливо для веток testing и unstable, так как ядро в стабильной ветке обновляется крайне редко. Понятия о стабильности у разработчиков дистрибутивов Debian и разработчиков ядра Linux различаются. Но ни что не мешает вам обновить или установить новое ядро в стабильной ветке на последнее стабильное ядро, скачанное с ftp://ftp.kernel.org/pub/ 
  
1) Итак, вы решили пересобрать ядро, на котором в данный момент работает Debian с новыми параметрами. 
  
Для этого вам потребуются следующие пакеты: 
  • linux-kernel-headers  - пакет, содержащий заголовочные файлы ядра Linux. То есть если ваше ядро версии 'uname -r', а ваша платформа i386 то вам нужен пакет linux-kernel-headers_'uname -r'_i386.deb, например linux-kernel-headers_2.6.18-7:
# apt-get install linux-kernel-headers
После установки этого пакета в директории /usr/include (до там находится только файл initreg.h) появятся директории asm, asm-generic, linux и т.д.
  • linux-source  - пакет, содержащий исходный текст ядра Linux.  Пакет linux-source - виртуальный, его функции представляются пакетами linux-source c указанием версии ядра, исходный текст которого вам нужно получить, то есть если ваше ядро версии 'uname -r', а ваша платформа i386 то вам нужен пакет linux-source_'uname -r'_i386.deb, например linux-source-2.6.18-7_i386.deb
# apt-get install linux-source-2.6.18
После установки этого пакета в директории /usr/src должен появится сжатый архив, в нашем случае это linux-source-2.6.18.tar.bz2
  • linux-header  - архитектурно зависимый пакет, содержащий заголовочные файлы ядра Linux. Виртуальный пакет, то есть при установке необходимо указать версию ядра и архитектуру вашей системы, например linux-headers-2.6.18-5-686.
# apt-get install linux-headers
Устанавливается в директорию /usr/src.
  
Обновим список всех пакетов
# apt-get update
Для работы в этом и следующем разделе нам также будут необходимы следующие пакеты. Обратите внимание на пакет libncurses5-dev! Без него make menuconfig не запустится!
# apt-get intsall kernel-package libncurses5-dev fakeroot wget bzip2 build-essential yaird 
Все дальнейшие действия удобно выполнять из /usr/src. Туда и идем.
# cd /usr/src
 
Распаковываем сжатый архив
# tar -xjf inux-source-2.6.18.tar.bz2
  
На всякий случай удаляем симлинк, если он существует.
# rm linux  
    
Создаем новый и переходим по нему
# ln -s linux-source-2.6.18 linux
# cd linux
Подчищаем мусор, оставшийся после предыдущих сборок, если таковые были. 
# make clean && make rmproper 
   
Перед выполнением настройки рекомендую сохранить существующий в данный момент конфиг ядра.
# make cloneconfig
   
Конфигурируем ядро по своему вкусу) Перевод параметров с комментариями здесь.
# make menuconfig  
   
Компилирование ядра и его модулей. Равносильна поочередному выполнению команд  #make bzImage и #make modules. Новый образ ядра будет помещен в файл /usr/src/[_ЯДРО_РЕЛИЗ_]/arch/i386/boot/bzImage.
# make all
   
Установка ядра в каталог /boot
# make install  
      
Установка модулей ядра
# make modules_install  
   
Создаем файл зависимости модулей
# depmod 2.6.18
   
Cоздаем рамдиск, без которого невозможна загрузка ядра. если команда в ответ скажет что такой рамдиск уже существует, то можно удалить его из /boot и выполнить команду повторно.
# mkinitrd.yaird -o /boot/initrd.img-2.6.18 2.6.18
  
Обновляем загрузчик. Ведь у вас стоит GRUB, не так ли?;)
# update-grub
  
Ну вот и всё. Теперь можно попробовать перегрузиться с измененным ядром.
  
2) Установка нового ядра. 
Здесь речь идео о следующей ситуации. В один прекрасный день, например, в стабильную ветку разработчиками было включено новое ядро. Таким образом вы, выполнив команду apt-get install linux-image, увидите список возможных для установки ядер (пакет linux-image также виртуальный), среди которых обязательно будет новое ядро. Система сама установит новое ядро с параметрами по умолчанию, создаст рамдиск и обновит загрузчик. То есть проделает всю работу самостоятельно. Приятно, но как я уже говорил, такие события происходят не часто и вероятнее всего с появлением сообщения о новом стабильном ядре на kernel.org вам захочется его опробовать, не дожидаясь, пока разработчики Debian включат его в одну из веток. 
  
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.4.tar.bz2
# tar -xjf inux-source-2.6.28-4.tar.bz2
# rm linux
# ln -s linux-source-2.6.28-4 linux
# cd linux
  
Все остальные действия аналогичны части первой.
   
Но можно пойти более простым способом.  Выполняем все пункты части первой до компиляции ядра, то есть до команды # make all.
  
Затем компилируем. После этого шага в /usr/src будет созданы два .deb пакета.
# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-<название, что угодно, только без побелов, например, nukern> kernel_image kernel_headers
   
Устанавливаем их. Певая команда установит само ядро, а вторая заголовки ядра, необходимые для сборки модулей.
# dpkg -i linux-image-2.6.28.4-nukern_2.6.28.4-nukern-10.00.Custom_i386.deb 
# dpkg -i linux-headers-2.6.28.4-nukern_2.6.28.4-nukern-10.00.Custom_i386.deb
  
Инсталляция завершена. Установка рамдиска, редактирование меню загрузчика будут сделаны автоматически. 
     
3) Наложение патчей.
  
Процесс наложения патчей достаточно тривиален и хорошо описан в статье Как собрать новое ядро - Debian Etch на сайте Брянской Группы Пользователей ОС Linux.
   
Ссылки. 
  

1 комментарий:

  1. Hard Rock Hotel & Casino Atlantic City - Mapyro
    Hard Rock Hotel & Casino Atlantic 양주 출장샵 City, NJ. Mapyro - a 충청북도 출장안마 place to 경주 출장샵 stay and play in 수원 출장샵 Atlantic City. Make easy money 태백 출장안마 and never miss out!

    ОтветитьУдалить