Gentoo kernel upgrade

Загальні слова про оновлення ядра в Gentoo Linux

Сидів я довгий час на ядрі версії 2.4. Потім оновив залізо і вирішив поставити нову систему з новим ядром - 2.6 на 64 bit. Все було чудово, але пройшов рік, мені на той час знадобилося внести деякі зміни в ядро ​​і пересобрать його. Думав як завжди викликати genkernel і menuconfig і не працювати особливо, але потім вирішив перевірити, а може вийшли нові версії ядра. І дійсно - за рік версія трохи змінилася. Ну що ж, раз збирати заново ядро ​​і правити .config. то тоді відразу на нове з Портаж. З передмовою закінчив приступимо до справи =).

Підготовка до оновлення ядра Gentoo

Для початку відновимо Портаж

Я звик уже користуватися sys-kernel / genkernel. так що оновлюємо і це додаток.

Тепер оновимо пакети app-admin / eselect і sys-kernel / module-rebuild (або якщо їх немає то поставимо з нуля)

emerge module-rebuild module-rebuild populate

Налаштування Genkernel

Так як я люблю використовувати для компіляції ядра Genkernel, то є сенс перед його використанням налаштувати, або хоча б переконатися, що в файлі конфігурації genkernel /etc/genkernel.conf все в порядку.

Наведу основні опції зі свого файлу і коротко опишу їх

OLDCONFIG - запуск до компіляції ядра команди make oldconfig. яка спробує зібрати інформацію про системи, ґрунтуючись на / usr / share / genkernel /. При цьому, якщо активований прапор --clean. то він автоматом перетворюється в --no-clean.

CLEAN - запускає make clean до початку процесу складання (компіляції) ядра, що видаляє всіх залежності і об'єктні файли з вихідного (старого) ядра. При цьому, якщо цей прапор має значення NO. то не буде виконана команда MRPROPER. Так само не буде скопійований поверх конфігураційний файл, буде використаний поточний.

MRPROPER - виконує очистку як і CLEAN. але додатково ще і видаляє всі конфігураційні файли (наприклад .config).

MENUCONFIG - запускає menuconfig. який допомагає в графічному інтерфейсі ncurses налаштувати ядро ​​(.config).

MOUNTBOOT - монтування завантажувального розділу, якщо він не подмонтіровать (BOOTDIR). Зазвичай це / boot

SAVE_CONFIG - в разі успішної компіляції ядра зберігає конфігураційний файл в / etc / kernels

USECOLOR - використовувати кольоровий висновок інформації в роботі Genkernel.


З підготовкою закінчили. Тепер саме час приступати до оновлення.

Установка початкових кодів (source) ядра

Для початку давайте подивимося, а що за систему ми маємо в даний момент:

Тепер перевіримо, а що є нового в Портаж до даного моменту.

emerge -pv gentoo-sources

Ми отримаємо на екрані щось типу

де NS означатиме, що вихідні ядра будуть встановлені поруч зі старим в новий слот. Загалом ставимо їх, а точніше качаємо з нету, стандартно виконавши:

Чи можемо тепер подивитися на них

Якщо все в порядку, то ми повинні побачити в папці підпапку з кодами нового ядра Gentoo. Тепер переходимо до налаштування системи, самого ядра і його компіляції (збірки ядра Gentoo).

Налаштування системи і конфігурація початкових кодів ядра

Загалом зберігаємо конфіг старого ядра:

eselect kernel list

Буде виведено щось типу:

Note: Зірочкою (*) виділена поточна версія ядра

Націлюємо файл linux на свіжі вихідні командою

eselect kernel set 3

Все тепер сміливо можемо приступати до складання нового ядра!

Компіляція нового ядра з початкових кодів

Для складання нового ядра з вихідних запускаємо улюблений мною genkernel

Усередині інтерфейсу консольної програми, написаного з використанням ncurses, знаходимо пункт меню

Load an Alternate Configuration File

Що дозволяє нам завантажити наш конфігураційний файл. Відповідно нам просто треба вказати шлях, куди ми забекапіть старий конфиг (наприклад /root/.config_backup.

Save an Alternate Configuration File

Де в якості повного імені файлу вказуємо .config. що і збереже його відразу в потрібну папку (/ usr / src / linux /).

Note: Чи можемо виконати цю процедуру ще раз, щоб забекапіть новонастроенний під нове ядро ​​конфиг, але на цей раз вказавши нехай типу домашньої папки root'а або кудись ще.

Все тепер перебуваючи в головному меню menuconfig'а натискаємо два рази esc і наше ядро ​​починає компілюватиметься!

Далі ми можемо пересобрать все зовнішні модулі, які ми не вбудували в ядро, а вибрали букву M замість *.

Видалення старого ядра

У разі успішного встановлення нового ядра і прі не потреби старого, його можна видалити. Для початку видалимо вихідні старого ядра:

emerge -P gentoo-sources

Тепер є сенс видалити тимчасові файли, що залишилися після компіляції старого ядра

rm -rf /usr/src/linux-2.6._Старое_ядро

Тепер видаляємо модулі, що залишилися від старого ядра:

rm -rf /lib/modules/2.6._Старое_ядро

Успішність виконаних нами операцій можна перевірити командою

eselect kernel list