Компиляция ядра Linux
Статьи
→
Установка Nix-ПО
Дата публикации: 15.08.2007
Автор статьи:
Источник: (Оригинал: Перейти)
Взято с http://www.hardtek.ru
Итак, наконец, ты поставил себе Линух и сидишь
под ним вот уже который день/неделю/месяц (нужное подчеркнуть :)) . Но вот
продвинутый друг/подруга намекнул тебе (а может, ты и сам догадался), что ядро
твоей операционки, как бы это помягче сказать… морально устарело и его
требуется обновить.
Намекнуть то намекнул (догадаться то догадался), а вот как
это сделать? Не дрейфь, объясню «на пальцах»…
Итак… пристегнуть ремни и… прямым ходом на
http://ftp.kernel.org, а если влом тратить бабло на трафик или повремёнку, то
сливай с какого-нибудь диска (а на сэкономленные деньги купи пива: отпраздновать
твою первую компиляцию ядра :)) . С http://ftp.kernel.org качаешь подходящую
версию ядра… здесь скажу пару слов о существующих ядрах Linux. Сейчас
существуют, можно сказать, четыре ветви развития ядер:
1. Ядра версии 2.4.xx наиболее «качественные» на мой взгляд ядра, xx цифра, чем она выше, тем новее ядро (далее везде: x цифры версии слитого ядра).
2. Ядра версии 2.5.xx так называемые
экспериментальные, нестабильные ядра, если ты в душе экспериментатор и в детстве
взрывал на балконе магний или селитру, можешь смело качать :), ощущения
получишь незабываемые.
3. Ядра версии 2.2.xx скажу честно, что ЭТО
такое я не знаю, не знаю и того, ПОЧЕМУ до сих пор развивается эта ветвь, когда
существует 2.4.xx. Себе я эти ядра не ставил, так что советовать не буду.
4. Ядра версии 2.6.xx эти ядра вобрали в себя
всё наиболее стабильное из ветки 2.5.xx. Ядро работает значительно быстрее всех
остальных, но есть маленькое но: новый формат модулей и как следствие проблемы с
установкой дров (всё описанное ниже к этой ветке не применимо).
Ядро слил? Слил… Теперь логинишься в систему
под root'ом. Далее, если у тебя дистриб «Красной шапки» или «Мандрэйка» даёшь
команду:
rpm -q kernel-headers
kernel-source make dev86
Если
эти rpm'ы не установлены, поставь их. Возможно, на других дистрибах тоже
придётся проверить их наличие.
Потом идёшь в папку, куда слил ядро (заметь
папка должна находиться на Linux-разделе, т. е. Ext2/Ext3/ReiserFS (нужное
подчеркнуть)) и даёшь команду:
tar zxvf имя_слитого_файла.tar.gz
Эта команда распакует ядро. Теперь идёшь в
появившуюся папку (что-то вроде linux-x.x.xx) и даёшь одну из следующих команд,
на выбор:
если ты сидишь под Иксами:
make xconfig
если ты консольник:
make config
или
make menuconfig
Все эти команды запускают утилиту настройки
будущего ядра. На мой взгляд, наиболее удобна утилита, вызываемая последней
командой. Все эти тулзы делают ОДНО И ТОЖЕ и выбор одной из них, определяется
лишь личными предпочтениями.
По конфигурированию ядра могу дать лишь общие
советы, т. к. настройка ядра индивидуальна для каждого компа. Общие советы:
1. Если у тебя PentiumPro/II/III/IV, Celeron или AMD K6 и выше, включи поддержку MTRR;
2. Запрети установку модулей для чипсетов,
которых у тебя нет, например: CMD640, etc;
3. Разреши поддержку Generic PCI bus-master
DMA и использование DMA по умолчанию (Use DMA be defaults);
4. Разреши поддержку твоего чипсета, например:
VIA82C586 для VIA VP2/3 и MVP3 материнских плат;
5. Разреши только те SCSI-контроллеры, которые
у тебя есть, если их у тебя нет, запрещай все нафиг;
6. Запрети все сетевые устройства, которых у
тебя нет, и поддержка которых тебе нафиг не сдалась;
7. Установи значение Unix98 PTYs равное 128;
8. Установи 'persistant dma buffer' в
настройках звука;
9. Запрети все файловые системы, которые тебе
не нужны, оставь лишь те, которые у тебя действительно есть, например: ISO 9660
CDROM, VFAT, Second extended fs, Ext2, Ext3, /dev/pts, /proc;
10. Если твой комп не сервак, то запрети все
сетевые файловые системы (NFS);
11. Если у тебя нет ISDN-модема, запрети все
ISDN-устройства;
12. Запрети поддержку IPv6;
13. Если у тебя нет ноутбука или PCMCIA-карт
запрети их поддержку;
14. Если юзаешь dial-up, разреши поддержку
протокола PPP (Point to Point Protocol);
В общем, разреши поддержку только тех
устройств, которые у тебя есть! И ещё: в некоторых пунктах можно выбрать одно из
трёх значений: Y/M/N, так вот:
Y разрешить поддержку на уровне ядра;
M разрешить поддержку на уровне модуля ядра;
N запретить поддержку.
«Что же выбирать, если хочешь включить
поддержку, Y или M» спросишь ты. Мой совет: если хочешь, чтобы ядро быстрее
грузилось и не хочешь лишнего геморроя с подключением модулей, выбирай Y; если же хочешь, чтобы ядро занимало меньше памяти, выбирай M, но тогда придётся
возиться с подключением модулей, а это тема для другой статьи… которая может
быть и появится… Когда закончишь, сохрани все изменения и вываливайся в
консоль. Теперь даёшь команду:
make dep
Создаётся так называемый файл зависимостей.
Следующие команды с пояснениями:
make clean убираем лишний исходный
код;
make bzImage создаём сжатый модуль
ядра;
make
modules
создаём модули;
make modules_install -
устанавливаем модули;
Всё,
ядро скомпилено, но не спеши давать команду reboot, необходимо внести изменения
в загрузчик. Сначала копируй файлик /путь_к_ядру/arch/i386/boot/bzImage в папку
/boot. Далее привожу пример конфигурации LILO. Правь файл /etc/lilo.conf. Вот
пример:
boot=/dev/hda
map=/boot/map
timeout=50
prompt
message=/boot/message
default=kernel-2.2.16
vga=normal
read-only
install=/boot/boot.b
image=/boot/bzImage
label=kernel-2.2.16
root=/dev/hda3
image=/boot/kernel-x.x.xx
label=kernel-x.x.xx
root=/dev/hda3
Вместо
hda3 ставь свой Linux-раздел и вместо kernel-2.2.16 будет стоять твоё
собственное старое ядро. Код, выделенный зелёным, код загрузки нового
ядра (подробнее смотри в доках по LILO). После сохранения даёшь команду:
lilo
Вот и всё!
reboot
После чего в меню выбираешь kernel-x.x.xx и
смотришь: если не грузится, загрузи старое ядро и проверь все свои шаги,
особенно, конфигурирование; если ядро загрузилось, даёшь команду:
uname -r
Должна появиться версия слитого ядра. Потом
создаешь загрузочную дискету, так, на всякий случай:
mkbootdisk --device /dev/fd0
x.x.xx
Всё!
Идёшь пить пиво… если деньги сэкономил
:)
Взято с http://www.hardtek.ru
Дата публикации: 15.08.2007
Автор статьи:
Источник: (Оригинал: Перейти) |