Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Установка нового ядра
На страницу 1, 2  След.
 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Ядро
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Чт Dec 14, 2006 3:17 pm    Заголовок сообщения: Установка нового ядра
Ответить с цитатой

Автор статьи: Ananas
Дата: 15.10.2003

Установка нового ядра

В статье я попытаюсь описать процесс установки нового ядра в систему так, как это делаю я. Описанный способ не предендует на исключительность.

Сборка ядра

Первое, что необходимо сделать - скачать исходные коды ядра. Их можно взять с http://www.kernel.org Для тех, у кого установлен дистрибутив с оригинальным ядром (например Slackware) достаточно будет только выкачать патчи, обновляющие ядро до новой версии. Тем же, у кого ядро только от дистрибутива рекомендуется выкачивать тарбол с исходными кодами в полном объеме, так как наложение патчей на дистрибутивные ядра не всегда приводит к ожидаемому результату.

Нумерация версий ядра следующая: номер состоит из трех чисел - MAJOR_VER.MINOR_VER.SUB_VER

Первые два MAJOR_VER и MINOR_VER определяют ветку ядра, SUB_VER - это номер релиза в ветке. Следует помнить, что для стабильных веток MINOR_VER - четное число. Не стоит брать нестабильные (aka девелоперские) версии ядра, если вы конечно не собираетесь стать kernel-hacker-ом Wink

После получения исходных кодов ядра распакуйте тарбол в директорий /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 Smile

Если у вас 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 Smile Скорее всего вы несколько неправильно сконфигурировали ядро. Проанализируйте ситуацию, при которой возник panic, попытайтесь понять, чего не хватает, перезагрузитесь со старым ядром и повторите процесс конфигурирования сборки и установки ядра.

Загрузка модулей при старте

Бывают ситуации, когда поддержка необходимых для загрузки устройств была собрана модулем. Например, для rescue компакт-диска, когда неизвестно, какие диски будут на машине, всключать поддержку всех возможных вариантов в ядро не хочется, а работать должно везде. Для этих целей служат так называемые загрузочные рамдиски (initial ramdisks). Это файлы-образы для создания виртуальных дисков в памяти, которые содержат модули, необходимые для нормальной загрузки системы. Рамдиски создаются при помощи команды mkinitrd. Подробное описание ключей и принципов использования команды можно прочитать в соответсвующей ман-страничке. Для задания рамдиска который нужно использовать при загрузке используется параметр initrd в конфигурационном файле загрузчика (как для lilo, так и для grub).

Загрузочные дискеты

Загрузочные дискеты (или образы загрузочных дискет) создаются при помощи команд mkbootdisk или mkrescue. Если же Вы желаете создать этот образ вручную (например, для загрузочного cdrom-а) необходимо создать файл образа (при помощи команды dd), подмонтировать его через устройство loop и создать на нем файловую систему msdos. После чего скопировать туда ядро и необходимые конфигурационные файлы и воспользоваться утилитой syslinux для создания загрузочного сектора образа. Подробности можно посмотреть по man syslinux.

Взять пакет syslinux можно на 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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Krow

Злостный хелпер


Зарегистрирован: 09.06.2006
Сообщения: 324
Откуда: Краснодар->Ейск

СообщениеДобавлено: Пт Dec 15, 2006 6:50 pm    Заголовок сообщения:
Ответить с цитатой

статтья интересная, но вот что если у меня после загрузки через лило нифига не высвечивается.. ладно было бы если б кернел паник, а вот вообще тёмный экран и хоть бы что.... Confused
_________________
если вы чего то не знаете то не значит что этого нет.
разработчики никогда не бывают не правы!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Владимир Кононенко

Новенький


Зарегистрирован: 13.11.2008
Сообщения: 29
Откуда: Миргород, Полтавская обл.

СообщениеДобавлено: Вс Янв 11, 2009 10:04 am    Заголовок сообщения:
Ответить с цитатой

Хорошая статья! Вот вчера собрал новенькое - все летает! Правда команды для Дебиана немного отличаются, но Гугл их знает))
Спасибо, Денис!
_________________
http://kvelz.org.ua
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Моб. телефон ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Янв 11, 2009 10:22 am    Заголовок сообщения:
Ответить с цитатой

Question Question Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 5:43 am    Заголовок сообщения:
Ответить с цитатой

den, Здравствуйте. Подскажите пожалуйста, можно ли переконфигурировать уже установленное ядро, чтоб включить некоторые нужные мне функции?
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Мар 09, 2009 5:59 am    Заголовок сообщения:
Ответить с цитатой

Уже установленное никак Smile Разве что передав соответствующие параметры ядра, если они предусмотрены (я ж не знаю, что вы хотите сделать), но этим вы не измените само ядро, а только его поведение.

Изменить ядро можно путем редактирования исходного кода. Ну а как это сделать было достаточно подробно расписано в этом топике
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 6:25 am    Заголовок сообщения:
Ответить с цитатой

Оперативно Smile
А если есть deb-пакеты ядра, но без нужных мне функций, я его могу переконфигурировать и установить?
Цитата:

(я ж не знаю, что вы хотите сделать)
в denix 1.0 нет поддержки ext4
Я знаю что это есть уже в 2.6.28, но у меня gprs-интернет ( кризис-надо экономить)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 6:51 am    Заголовок сообщения:
Ответить с цитатой

Кстати есть пограмма для установки ядра KernelCheck-http://kcheck.sourceforge.net. Она загружает с сайта kernel.org информацию о доступных ядрах ( стабильное, развивающееся, патчи), автоматически загружает всё необходимые библиотеки и утилиты для компиляции, а также исходники выбранного вами ядра,патча в списке. После загрузки появляется графическое меня конфигурации ядра, отмечаете нужное , сохраняете и компиляция начинается.
для закачки http://sourceforge.net/project/showfiles.php?group_id=199755&package_id=237113&release_id=610239
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Мар 09, 2009 8:41 am    Заголовок сообщения:
Ответить с цитатой

Да причем тут деб-пакеты! В нем уже откомпилированное ядро. Декомпилировать его нельзя (может и можно, но смысла в этом нет, поскольку есть исходники ядра). Тебе нужно установить исходники ядра и собрать ядро, включив/выключив необходимые/лишние опции.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 9:34 am    Заголовок сообщения:
Ответить с цитатой

Мы легких путей не ищемSmile . Спасибо за разъяснение. Уже собрал ядро 2.6.29rc7, на ubuntu 9.04 amd64.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Мар 09, 2009 9:41 am    Заголовок сообщения:
Ответить с цитатой

9.04 сырая еще... Зачем она тебе?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 10:07 am    Заголовок сообщения:
Ответить с цитатой

уже месяц работаю на Ubuntu 9.04amd64. вроде стабильно ( хотя это понятие относительное,не могу понять когда виноваты кривые руки или система). Хочу выжать максимум из ноута.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Мар 09, 2009 10:12 am    Заголовок сообщения:
Ответить с цитатой

megabon, 9.04 выйдет только 23 апреля. Ты работаешь на альфе! Я вчера скачал альфу 5 9.04 для i386 - глючная страшно
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Мар 09, 2009 10:12 am    Заголовок сообщения:
Ответить с цитатой

Кстати, откуда ты качал?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
megabon

Завсегдатай


Зарегистрирован: 27.01.2009
Сообщения: 922
Откуда: Россия,Уфа

СообщениеДобавлено: Пн Мар 09, 2009 10:30 am    Заголовок сообщения:
Ответить с цитатой

http://cdimage.ubuntu.com/releases/jaunty/alpha-5/jaunty-desktop-amd64.iso
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Ядро Часовой пояс: GMT
На страницу 1, 2  След.
Страница 1 из 2
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис