The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Установка Linux ядра из исходных текстов. (linux kernel install)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, kernel, install,  (найти похожие документы)
From: Ananas <http://linuxportal.ru>; Date: Mon, 23 Feb 2004 14:31:37 +0000 (UTC) Subject: Установка Linux ядра из исходных текстов. Оригинал: http://linuxportal.ru/entry.php/P709_0_3_0/ Установка нового ядра В статье я попытаюсь описать процесс установки нового ядра в систему так, как это делаю я. Описанный способ не предендует на исключительность. Сборка ядра Первое, что необходимо сделать - скачать исходные коды ядра. Их можно взять с http://www.kernel.org Для тех, у кого установлен дистрибутив с оригинальным ядром (например Slackware) достаточно будет только выкачать патчи, обновляющие ядро до новой версии. Тем же, у кого ядро только от дистрибутива рекомендуется выкачивать тарбол с исходными кодами в полном объеме, так как наложение патчей на дистрибутивные ядра не всегда приводит к ожидаемому результату. Нумерация версий ядра следующая: номер состоит из трех чисел - MAJOR_VER.MINOR_VER.SUB_VER Первые два MAJOR_VER и MINOR_VER определяют ветку ядра, SUB_VER - это номер релиза в ветке. Следует помнить, что для стабильных веток MINOR_VER - четное число. Не стоит брать нестабильные (aka девелоперские) версии ядра, если вы конечно не собираетесь стать kernel-hacker-ом ;) После получения исходных кодов ядра распакуйте тарбол в директорий /usr/src/linux-MAJOR_VER.MINOR_VER.SUB_VER и создайте симлинк /usr/src/linux на этот директорий. cd /usr/src tar -zvxf /path/to/linux-MAJOR_VER.MINOR_VER.SUB_VER rm -f linux ln -s linux-MAJOR_VER.MINOR_VER.SUB_VER linux Если вы скачали патч, обновляющий ядро до следующей версии, наложить его можно следующей командой cd /usr/src/linux-MAJOR_VER.MINOR_VER.OLD_SUB_VER zcat /path/to/patch.gz | patch -p1 mv ../linux-MAJOR_VER.MINOR_VER.OLD_SUB_VER ../linux-MAJOR_VER.MINOR_VER.SUB_VER Кроме этого, вы возможно захотите расширить функциональность ядра за счет каких-либо разработок третьих сторон (например - пакет lm-sensors, позволяющий работать с датчиками температуры, скорости вращения вентиляторов и пр.) или добавить драйверы для специфического оборудования, доступные в виде патчей к ядру. Скачайте их, если надо, и выполните установочные действия, описанные в документации к таким пакетам. Очень неплохая страница с патчами для ядра (как для оптимизации работы, так и для расширения функциональности) - http://members.optusnet.com.au/ckolivas/kernel При смене ветки ядра обычно нужно обновлять некоторые прикладные пакеты, например пакет modutils, предоставляющий утилиты для управления модулями ядра. Эти пакеты тоже можно взять на http://www.kernel.org После этого необходимо убедиться, что директории /usr/include/asm и /usr/include/linux - это симлинки на соответсвующие директории из /usr/src/linux/include/usr/src/linux/include/asm - это тоже симлинк на директорий с ассеблерными хидерами для вашей архитектуры. Если не удалить старые заголовочные файлы ядра, то впоследствии вас могут ожидать очень неприятные сюрпризы при сборке софта, использующего ядерные заголовочные файлы. Теперь можно приступить к конфигурированию ядра. Перед этим вам необходимо точно выяснить спецификации вашего компьютера * тип процессора; * чипсет материнской платы; * тип видеокарты; * тип сетевой платы; * тип саунд-карты; * тип жестких дисков; * usb-устройства; и т.д. Процесс создания конфига ядра достаточно прозрачен. Запуск конфигуратора осуществляется командой make menuconfig (консольный вариант) или make xconfig (графический вариант) из корневого директория с исходными кодами ядра (/usr/src/linux). Лично я предпочитаю графический вариант, так как он более нагляден - видны все возможные опции, а не только доступные, как в консольном. Но это - дело вкуса. Для каждого пункта настройки имеется помошь, правда на английском, но - такова жизнь. Без знания технического английского в понимании юниксов (да и вообще) далеко не продвинешься. Краткое описание подсистем ядра дано ниже. При создании конфига главное - определиться, какие функции и драйверы встроить в ядро, а какие собрать модулями. Принцип тут прост - редкоиспользуемые функции и драйверы, а также драйверы, которые требуют передачи дополнительных параметров (например - старые звуковые платы на шине ISA) лучше собирать модулями. Остальное - встраивать в ядро. Особенно это касается драйверов для вашего жесткого диска и поддержки основной файловой системы - они должны быть встроены в ядро. После создания конфига (файл /usr/src/linux/.config) сделайте его резервную копию и можно приступать к сборке. Вот команда, осуществляющая сборку ядра make dep clean bzImage modules modules_install После завершения работы команды необходимо скопировать собраное ядро и System.map (это файл с таблицей символов, экспортируемых ядром) в нужное место. Обычно - это директорий /boot. cp System.map /boot/System.map-MAJOR_VER.MINOR_VER.SUB_VER cp arch/i386/boot/bzImage /boot/vmlinuz-MAJOR_VER.MINOR_VER.SUB_VER rm -f /boot/System.map ln -s System.map-MAJOR_VER.MINOR_VER.SUB_VER /boot/System.map В RedHat-based системах последняя команда необязательна, так как создание этого симлинка предусмотрено в загрузочных скриптах. Эта фича полезна в том случае, если в системе несколько ядер разных версий. Фича реализуется следующими командами, добавленными в init-скрипт (после монтирования файловой системы) if [ -L /boot/System.map -a -r /boot/System.map-`uname -r` -a ! /boot/System.map -ef /boot/System.map-`uname -r` ] ; then ln -s -f System.map-`uname -r` /boot/System.map fi if [ ! -e /boot/System.map -a -r /boot/System.map-`uname -r` ] ; then ln -s -f System.map-`uname -r` /boot/System.map fi Для чистюль - после этого можно еще раз выполнить make clean :) Если у вас RPM-based дистрибутив - вес процесс сборки можно выполнить командой make rpm. После отработки у вас будет готовый rpm-пакет, находящийся в /usr/src//RPMS/i386. Вам достаточно просто установить его при помощи rpm -Uvh. Этот способ более правилен, чем сборка и установка вручную. Следующий этап - указать новое ядро загрузчику. Если вы используете lilo, добавьте в /etc/lilo.conf строки image = /boot/vmlinuz-MAJOR_VER.MINOR_VER.SUB_VER Label = New read-only root = /dev/ и выполните /sbin/lilo Если в качестве загрузчика используется grub, в его конфиг (обычно /boot/grub/grub.conf) title New root (hd0,) kernel /boot/vmlinuz-MAJOR_VER.MINOR_VER.SUB_VER ro root=/dev/hda2 Все. Ядро установлено и доступно при загрузке под меткой New. можно перезагружаться и наслаждаться новым ядром. Ну или kernel panic, как это частенько бывает у новичков. При появлении kernel panic главное помнить - don't panic :) Скорее всего вы несколько неправильно сконфигурировали ядро. Проанализируйте ситуацию, при которой возник panic, попытайтесь понять, чего не хватает, перезагрузитесь со старым ядром и повторите процесс конфигурирования сборки и установки ядра. Загрузка модулей при старте Бывают ситуации, когда поддержка необходимых для загрузки устройств была собрана модулем. Например, для rescue компакт-диска, когда неизвестно, какие диски будут на машине, всключать поддержку всех возможных вариантов в ядро не хочется, а работать должно везде. Для этих целей служат так называемые загрузочные рамдиски (initial ramdisks). Это файлы-образы для создания виртуальных дисков в памяти, которые содержат модули, необходимые для нормальной загрузки системы. Рамдиски создаются при помощи команды mkinitrd. Подробное описание ключей и принципов использования команды можно прочитать в соответсвующей ман-страничке. Для задания рамдиска который нужно использовать при загрузке используется параметр initrd в конфигурационном файле загрузчика (как для lilo, так и для grub). Загрузочные дискеты Загрузочные дискеты (или образы загрузочных дискет) создаются при помощи команд mkbootdisk или mkrescue. Если же Вы желаете создать этот образ вручную (например, для загрузочного cdrom-а) необходимо создать файл образа (при помощи команды dd), подмонтировать его через устройство loop и создать на нем файловую систему msdos. После чего скопировать туда ядро и необходимые конфигурационные файлы и воспользоваться утилитой syslinux для создания загрузочного сектора образа. Подробности можно посмотреть по man syslinux. Взять пакет syslinux можно на [83]http://syslinux.zytor.com Этот пакет позволяет создавать загрузочные образы для дискет, cdrom-ов и сетевых карт. Краткое описание подсистем ядра Я сознательно не описываю детально все конфигурационные опции ядра, а даю лишь общее описание пунктов в главном меню ядерного конфигуратора. Включать или не включать - решайте сами. Эксперименты - лучший способ набраться опыта. Code maturiry level options - включение поддержки новых экспериментальных подсистем и драйверов. Loadable module support - поддержка модульной структуры ядра и возможности автозагрузки модулей. Processor type and features - тип процессора, памяти и поддержка многопроцессорности (SMP). General setup - Включение подержки различных подсистем, в том числе сетевой. Поддержка шин PCI и PCMCIA и управления питанием. Поддержка различных форматов исполняемых файлов. Memory technology devices - поддержка различных типров памяти, например FLASH, в основном необходима для встраиваемых устройств. Parallel port support - поддержка параллельного интерфейса. Plug and play configuration - поддержка устройств PLUG-N-PLAY на шинах PCI и ISA. Block devices - поддержка блочных устройств (всевозможных дисков), в том числе и loopback устройств, необходимых для работы с обычным файлом, как с отдельным диском. Multi-device support - поддержка RAID. Networking options - сетевая подсистема, поддержка различных сетевых протоколов и файрвол (iptables). Telephony support - поддержка телефонных карт для связи VOICE-OVER-IP. ATA/IDE/MFM/RLL support - IDE подсистема и драйвера для различных IDE-контроллеров. А также эмуляция SCSI для atapi-устройств. SCSI suppot - SCSI подсистема и драйвера SCSI-адаптеров. IEEE 1394 (FireWire) support - поддержка шины FireWire. I2O device support - поддержка архитектуры Intelligent Input/Output Network device support - драйвера сетевых карт. Amateur radio suppport - поддержка устройст для связи по X.25 IrDA (infrared) support - поддержка интерфейса для работы инфра-красным портом. ISND support - поддержка ISDN адаптеров. Old CD-ROM drivers - поддержка старых типов cdrom-ов. Input core support - необходимо для устройст, работающих через USB HID (таких, как мышь, клавиатура, UPS и т.д.) Character devices - поддержка символьных устройств, таких как последоватьный порт AGP, принтер, псевдотерминалы (необходимы для xterm). Multimedia devices - поддержка fm-карт и устройств захвата аудио и видеоизображения. File systems - поддержка различных типов файловых систем, в том числе и сетевых. Console drivers - поддержка консоли. В том числе и фреймбуфера для консоли. Sound - драйвера для звуковых карт. USB support - поддержка USB и различных устройств, работающих через этот интерфейс. Bluetooth support - поддержка устройств для беспроводной связи. Kernel hacking - включение отладочного кода ядра, в частности - Magic SysRq. Маленькие хитрости * Если вам необходимо держать две разных конфигурации одной и той-же версии ядра, вы можете добавить свои суффиксы к версии. Для этого в /usr/src/linux/Makefile пропишите свой суффикс в переменной EXTRAVERSION. Это нужно для того, чтобы держать модулю для каждого экземпляра ядра в отдельной директории. * spec-файл для rpm-пакета генерируется скриптом /usr/src/linux/scripts/mkspec. При необходимости добавить свои поля или секции в spec-файл подредактируйте этот скрипт. * Помните, что модули могут подгружаться автоматически, но выгружаются только вручную. Поэтому лучше использовать скрипты-обвязки, в которых можно загружать и выгружать модули вручную. Например ниже приведен скрипт, который я использую для монтирования cdrom #! /bin/sh if [ $# != 1 ]; then echo "Usage: $0 on|off" exit 1 fi case $1 of on) mount /mnt/cdrom ;; off) eject modprobe -r isofs modprobe -r ide-cd ;; *) echo "Usage: $0 on|off" exit 1 ;; esac Некоторые интересные ссылки Пакет lm-sensors - http://secure.netroedge.com/~lm78 Графическая загрузка -http://www.bootsplash.org

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру