Загальні слова про оновлення ядра в 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