Все о Linux. LinuxRSP.Ru


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


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

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

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

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

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

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

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







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-2017 LinuxRSP