Все о Linux. LinuxRSP.Ru
Альт Линукс СПТ 6.0 Сертификат ФСТЭК

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

В GIMP наконец-то появилась обработка с точностью 16 и 32 разряда на канал

В одном окне: GIMP 2.8

Релиз OpenBSD 5.1

HTML-редактор: BlueGriffon 1.5

Релиз Xfce 4.10

Команда Chromium представила кластер для автоматизации выявления уязвимостей

В Microsoft Office 15 будет обеспечена поддержка формата ODF 1.2

Анонсирован новый свободный анимационный фильм Tube

Обновление ядра: Linux 3.0.29, 3.2.16, 3.3.3

Представлен OpenSSH 6.0

Релиз графического редактора Pinta 1.2, претендующего на роль аналога Paint.NET

Вышел Firefox 12

Google прекращает поддержку Linux-версии приложения Picasa

Эмулятор приставок: Mednafen 0.9.21-wip

Линус Торвальдс получил премию Millennium Technology Prize 2012

Canonical не заинтересована в участии в разработке ядра Linux

Распределенные вычисления: BOINC 7.0

Google

 Новые статьи :

Передача снапшота ZFS по сети

Правила хорошего тона: SSH

Некоторые рассуждения о защите от ddos на примере защиты от SSL denial of service attack

Быстрый проброс портов на шлюзе во внутреннюю сеть или на другой хост. Быстро NAT'им порты. rinetd.

NAT'им отдельные порты или "а что делать, если мой веб-сервер внезапно переехал на другую машину". Проброс портов в локалке на шлюзе наружу.

Как справляться с запланированной недоступностью веб-сайта

Архитектура Google 2011

Мониторинг Nginx с помощью MRTG

Решение проблем при использовании "1c предприятие" 8.2 в Linux

25 правил .htaccess, которые должен знать каждый web-разработчик

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Краткое руководство по GNOME Shell в Ubuntu 11.10

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки

   Дистрибутивы и атрибутика



DeveloperWorks Россия





Rambler's Top100


 
 

Отказ от обязательств:

Данный документ по конфигурированию, сборке, обновлению ядра для ix86-based систем, ни в коей мере не является полноценным руководством к действию. Также не является авторизованным переводом, что непозволительно, учитывая уровень языковых знаний автора.  Все ниже сказанное основано на личном опыте и базируется на The Linux Kernel HOWTO  версии v6.3, 4 July 2003 от Al Dev (Alavoor Vasudevan).  

1.   Введение:

1.1.                   Версия  ядра.

Номер версии ядра состоит из трех компонентов - старшего (major), младшего (middle) и версии номера исправления (patch-level или minor). Старший номер увеличивается при внесении существенных изменений в ядро. Младший позволяет судить о устойчивости (стабильности) ядра. Четные номера зарезервированы для стабильных версий, а нечетные  присваиваются версиям, которые находятся в стадии разработки и могут изменяться. Ядра, находящиеся в стадии разработки могут неоднократно подвергаться модернизации. Рассмотрим три примера : первый 2.4.19-трех компонентный номер стабильного ядра 19 версия исправления (patch-level или minor); второй 2.5.70 -70-я стадия модернизации нестабильного ядра (5); третий - 2.4.18-14 - четырехкомпонентный  номер ядра 4 -ый компонент - номер дополнения (EXTRAVERSION)-наиболее часто встречается в системах Red Hat, ASPLinux.

Примечание.

Посмотреть свою версию ядра можно командой # cat /proc/version

1.2.                   Причины.

Существует несколько причин, по которым вы можете принять решение, что вам необходима сборка  ядра вместе с тем достаточно и одной из них:

·        Вы занимаетесь разработкой и тестированием ядра.

·        Вы установили новое оборудование, не поддерживаемое текущей версией.

·        Вы решили собрать ядро, оптимизированное  только под ваше оборудование.

·        У Вас устаревшее/несовременное ядро.

·        Разрабатываемое вами программное обеспечение требует специальной настройки ядра.

·        Вы решили пересобрать ядро для ускорения работы вашей машины или для минимизации ядра.

2.   Первые шаги.

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

2.1. Если вы решили оптимизировать или переконфигурировать текущую версию ядра, то для начала проверьте наличие исходных кодов, обычно они располагаются в каталоге /usr/src/linux-X.X.X, где X.X.X номер версии ядра. Если таковых не оказалось вам необходимо установить их с дистрибутивного диска  или взять с ftp://ftp.kernel.org/pub/linux/kernel/.

2.2. Если у вас установлено действующее ядро, и вы просто решили произвести обновление до последней новейшей версии, т.е. другими словами произвести minor-update (к примеру, у вас установлено скомпилированное (build) 2.4.19 вырешили произвести обновление до 2.4.20). В таком случае вам необходимо сохранить конфигурационный файл вашего ядра для дальнейшего использования и с целью минимизировать затраты времени в дальнейшем, так как выполнение команды make mrproper удалит имеющийся у вас конфигурационных файл.

        bash# mkdir /usr/src/kernelconfigs                                    
        bash# mv /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save 
Еще один метод это копирование старого конфигурационного файла из дерева старого ядра
 в дерево нового а также специфично для некоторых версий linux (например, Red Hat).
        bash# rm /usr/src/linux-2.4                                          
        bash# ls -l /usr/src/linux-2.4 /usr/src/linux-2.4.X, где X ваше ядро  
        bash# cd /usr/src/linux-2.4                                          
        bash# cp /usr/src/linux-2.4.19/.config .                             
Есть и еще один метод make oldconfig в данном случае конфигуратор самостоятельно
 ответит на большинство вопросов обращенных обычно к вам.
Замечание:
Если у вас недостаточно места в каталоге /usr/src/ для выполнения операций вы мжете осуществить
 эти операции в любом каталоге единственное что симлинк в /usr/src должен указывать на местоположение нового ядра.

3.   Шаг второй - Make.

1.      Распакуйте исходные коды ядра, например командой

tar xzvf linux-2.4.20.tar.gz                                                                                                     

2.  Далее комментариев не требуется.

cd /usr/src/linux;                                                                                                                    

mkdir /usr/src/kernelconfigs;                                                                                                  

cp /usr/src/linux/.config /usr/src/kernelconfigs/.config.save; #при условии если вы   хотите сохранить конфигурацию.                                                                                   

make clean;                                                                                                                          

make mrproper;                                                                                                                    

make clean;                                                                                                                          

cp /usr/src/kernelconfigs/.config.save .config                                                              

2.      Далее в зависимости от ваших желаний:

make config # выполнить конфигурирование в консоли                                                

make menuconfig # выполнить конфигурирование с помощью меню (не меня)           

в консоли  (требует наличие библиотеки ncurses)                                                         

make oldconfig # выполнить конфигурирование с учетом старой конфигурации        

(вам придется ответить на вопросы связанные только с устанавливаемым ядром   

все остальное самостоятельно)                                                                                        

make xconfig # для предпочитающих графический интерфейс настройки                   

 (только с Х терминала)                                                                                                    

make dep                                                                                                                                                     

3.      Теперь Вы можете указать на версию сборки, т.е. установить  EXTRAVERSION. Поправьте соответствующую строку /usr/src/linux-2.4/Makefile, обычно эта строка пустая.

4.      make bzImage

5.      make modules

6.      make modules_install

7.      make install #не рекомендуется верно работает только в Red Hat и то только благодаря скрипту kernel_install от Red Hat. Лучше сделать так:

 cp /usr/src/linux/arch/i386/boot/bzImage /boot/wmlinux-2.4.X                                              

                                                          

8.      Сконфигурируйте загрузчик lilo или grub (это не тема для обсуждения здесь)

9.      Подготовьтесь к самому страшному - запаситесь загрузочной дискетой

  bash #mkbootdisk                                                                                                                                      

10.  Перезагружайте машину и с богом!

11.  Если все нормально у вас есть еще дела make rpm (только если у вас rpm-based linux и вам нет желания при каждой установке повторять сборку заново)

12.  make clear (если нет желания захламлять жесткий диск)

4. Установка заплат.

Одновременно с появлением новой версии ядра могут появиться веские причины для его обновления. Сберегите свое время, нервы и здоровье, своевременно устанавливая заплаты для исправления ошибок.

В первую очередь загрузите заплату ядра. Если версия текущего ядра имеет номер 2.4.19, то в этом случае используется файл заплаты patch-2.4.20. bz2. При каждом исправлении можно подняться только на один уровень. Чтобы перейти на два уровня, нужно установить две заплаты.

Поместите файл заплаты в каталог /usr/src. В том случае, если существует символиче-ская связь с ядром linux-2 .4.19, которая называется linux (или же исходные файлы ядра расположены в каталоге linux), продолжите процесс, введя следующую команду:

# bzcat patch-2.4.20.bz2 | patch -p0 --dry-run

Если предшествующая команда будет выполнена без появления сообщения со строками FAILED, параметры --dry-run можно удалить и безбоязненно установить заплату.

В том случае, если каталог linux отсутствует (или отсутствует символическая связь), вос-пользуйтесь командой cd и перейдите в дерево исходных кодов ядра linux. После этого введи-те следующую команду:

bzcat ../patch-2-4.20.bz2 | patch -p1 --dry-run

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

# error.log | grep FAIL > error.log

 Отсутствие сообщения FAIL, выводимого командой grep, говорит о том, что заплата бу-дет установлена корректно.

 

Одно из преимуществ подобного метода установки заплат состоит в том, что он позволяет вам пропустить этапы make mrproper и make [x| menu]config и перейти непосредст-венно к сборке ядра (предполагая, что заплата не обеспечивает новых функциональных воз-можностей, которые вы хотите ввести. В противном случае вам придется снова воспользо-ваться командой make config, выполнить изменение и сохранить конфигурацию).

5. Сборка единичного модуля.

 

Часто возникает необходимость добавить один два модуля к готовому ядру. При этом естественно нет никакого желания производить полную перекомпиляцию ядра в целом или всех модулей. Для примера рассмотрим вопрос добавления поддержки файловой системы ntfs. Например, RedHat 7.2 и 8.0  не умеют читать разделы ntfs.

Что бы произвести добавление этого модуля вам необходимо произвести изменение конфигурационного файла. Выполните по вашему желанию  make [x| menu]config. В разделе  filesystems включите поддержку ntfs - модулем и сохраните конфигурацию.

Далее:

cd /usr/src/linux
        cp Makefile Makefile.original
        cp Makefile.original Makefile.my
        vi Makefile.my
        # Закомментируйте имеющуюся переменную 'SUBDIRS' а добавьте свою
        # директорию, для примера, fs/ntfs:
               #SUBDIRS       =kernel drivers mm fs net ipc lib abi crypto
               SUBDIRS        =fs/ntfs
        # Сохраните  Makefile.my и выполните команду -
        make -f Makefile.my modules
        # таким образом мы получим модуль ntfs.o
# теперь скопируйте полученный модуль в директорию 
#действующего ядра /lib/modules
        # ВНИМАНИЕ: Не выполняйте - "make -f Makefile.my modules_install"
        # Это может привести к стиранию иных модулей системы 
        cp ntfs.o /lib/modules/2.4.20/kernel/fs/autofs

 

 

Источники:

3.1.1.      The Linux Kernel HOWTO  версии v6.3, 4 July 2003 от Al Dev (Alavoor Vasudevan). 

3.1.2.      "Использование Linux" Дэвид Бендел, Роберт Нейпир.

Благодарности:                  

Пивоваренным компания - за задание тонуса в работе.
San Андреев - за наставления на путь истинный.
freeman73  freeman73@mail.ru  - за помощь в написании пункта 4 - рекомендации
Linux - за то что он есть.
Red Hat Inc - за то что я неустанно что-то привожу в надлежавший вид.    
               
понедельник, 4 августа 2003 г.
Andrew E. Kuznetsoff  ака Разгильдяй на обкуренной кошке         

 

 

 

 

 

 

 

 

 

 

 


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2012 LinuxRSP


Реклама:
Мы продаем люстры для простых людей