Складання ядра FreeBSD, Все про ремонт та налаштування комп’ютера
Після прочитання попереднього розділу ви повинні мати можливість спроектувати мінімальну конфігурацію ядра. Перед тим, як додавати до ядра підтримку будь-яких інших можливостей, я рекомендую зібрати та запустити описане мінімальне ядро. Це дозволить зрозуміти, що дійсно необхідно для належної роботи ядра і яке потрібне додаткове налаштування.
Вам необхідно вказати ім'я файлу, який містить конфігурацію вашого ядра, або у командному рядку, або у файлі /etc/make.conf, або у файлі /etc/src.conf у вигляді змінної оточення KERNC0NF.
ftmake KERNCONF=MYKERNEL kernel
Процес складання починається із запуску команди config(8), для пошуку синтаксичних помилок у файлі конфігурації. Якщо config(8) виявить помилки, вона повідомить про них і припинить роботу. Деякі повідомлення про помилки є досить очевидними. Наприклад, можна випадково видалити підтримку файлової системи UNIX (UNIX File System, UFS), але увімкнути підтримку ініціалізації UFS. Одна функція не може обійтися без іншої, тому config точно скаже, у чому полягає помилка. Інші повідомлення про помилки можуть виглядати дивно і незрозуміло, тоді для з'ясування причин може знадобитися тривалий час, як, наприклад, при отриманні наступного повідомлення:
HUMVEE: unknown option "NET6"
Якщо config(8) не знайшла помилок, залишається лише чекати. Процес збирання ядра на 486 комп'ютері може займати кілька годин, але менше години на сучасній та швидкій системі. При цьому екраном пробігатимуть загадкові повідомлення про хід компіляції. Після закінчення збирання система перейменує поточне ядро /boot/kernel.old, а нове ядро буде збережено у вигляді файлу /boot/kernel. Коли все закінчиться, перезавантажте сервер і подивіться на повідомлення,що з'являються під час завантаження.
Виявлення неполадок під час створення ядра
Якщо зібрати ядро зірвалася, то виявлення неполадок передусім необхідно вивчити останні рядки, видані під час компіляції. Деякі з цих рядків можуть здатися незрозумілим шифром, інші досить очевидні. Важливо пам'ятати, що повідомлення виду Stop in ім'я деякого каталогу абсолютно марні - потрібні нам повідомлення про помилки знаходяться перед ними. Про те, як вирішувати ці проблеми, ми говорили в розділі 1: берете текст повідомлення про помилку та звертаєтеся за допомогою до пошукової системи. Як правило, помилки часу компіляції викликані помилками конфігурації.
На щастя, у FreeBSD перед установкою чогось треба повністю скомпілювати все ядро. Завдяки цьому система захищена, а результати невдалої компіляції, як і раніше, знаходяться в каталозі збірки.
Завантаження із запасного ядра
Отже, що робити, якщо нове ядро не працює чи працює нестійко? Можливо, при конфігуруванні не було вказано драйвер пристрою або видалено псевдопристрій ррр і не вдається встановити з'єднання з Інтернетом. Без паніки! Старе ядро збережене, правда? Добре. Ось що слід зробити.
У розділі 3 ми обговорювали механізм завантаження альтернативного ядра. Ми пройдемо цей процес ще раз, але, щоб побачити деякі пояснення щодо деталей управління завантажувачем, вам може знадобитися повернутися до більш раннього розділу. А тепер зосередимо увагу на причинах, які можуть змусити зробити завантаження із запасного ядра, і на тому, як зробити це правильно.
Для початку потрібно вирішити, яке ядро завантажувати. Старе ядро має знаходитись у каталозі /boot – у цьому розділі передбачається, що необхідно завантажити ядро/boot/kernel.good. Запустіть перезавантаження та перервіть його, щоб отримати доступ до командного рядка завантажувача. Згадайте, ми говорили, що до того моменту, коли FreeBSD надасть доступ до командного рядка завантажувача, ядро вже було завантажено, тому в першу чергу необхідно викинути погане ядро за борт:
Тепер можна завантажити потрібне ядро, а також модуль ACPI (якщо він використовується) та будь-які інші модулі ядра, які зазвичай завантажуються на етапі запуску системи:
okload /boot/kernel.good/kernel
okload /boot/kernel.good/acpi. ko
Після цього система буде завантажена старому ядрі.
Джерело: ЛукасМ. FreeBSD. Детальний посібник, 2-ге видання. - Пров. з англ. - СПб.: Символ-Плюс, 2009. - 864 е., іл.