Налаштування ядра Linux - Gentoo Wiki
Встановлення вихідного коду
Всі дистрибутиви будуються довкола ядра Linux. Ядро є прошарком між програмним забезпеченням користувача і фізичним обладнанням. Gentoo надає кілька варіантів вихідного коду ядра. Повний список з описом є у статті загальні відомості про ядро.
Для систем, заснованих на архітектурі amd64, рекомендується пакет sys-kernel/gentoo-sources.
Виберемо відповідний вихідний код ядра і встановимо за допомогою emerge:
Тепер слід налаштувати та зібрати ядро. Тут є два основні підходи:
- Ядро налаштовується та збирається вручну.
- Утиліта genkernel збирає та встановлює його автоматично.
У цій інструкції ми розповімо, як провести налаштування вручну, оскільки це найкращий спосіб оптимізувати оточення.
Основний варіант: Ручне налаштування
Згідно з поширеною думкою, налаштування ядра-найскладніша процедура, з якою стикається користувач Лінукса. Це сильне перебільшення і зібравши пару-трійку ядер ніхто не згадає, що це було складно.
Але один факт варто враховувати. Для ручного настроювання ядра необхідно мати уявлення про те, з чого зібрано комп'ютер. Більшість можна дізнатися, встановивши sys-apps/pciutils і виконавши команду lspci :
Інше джерело інформації про систему можна отримати, виконавши lsmod та подивившись, які модулі ядра підвантажилися на установчому носії.
Залишається перейти в директорію з ядром і виконати make menuconfig. Нас привітає екран конфігурації.
У конфігурації ядра Linux є багато секцій. Спочатку пройдемося по опціях, які повинні бути включені (інакше Gentoo працюватиме неправильно або зовсім не запуститься). Для більшглибокого ознайомлення варто відвідати гайд з налаштування ядра Gentoo.
Включаємо обов'язкові опції
Переконайтеся, що драйвери, необхідні для завантаження системи (наприклад, контролер SCSI і так далі), зібрані прямо в ядрі, а не як модуль. В іншому випадку система може не завантажитися.
Слід вибрати тип процесора, а також рекомендується включити опції MCE, щоб отримувати інформацію про проблеми із "залізом". На деяких архітектурах (наприклад, x86_64) подібні помилки виводяться над dmesg , а /dev/mcelog . Тож знадобиться пакет app-admin/mcelog.
Активуйте опціюMaintain a devtmpfs file system to mount at /dev, тоді критичні для пристроїв файли підвантажуватимуться якомога раніше ( CONFIG_DEVTMPFS і CONFIG_DEVTMPFS_MOUNT ):
Переконайтеся, що підтримка дисків SCSI була включена ( CONFIG_BLK_DEV_SD ):
Далі варто включити підтримку файлових систем, що використовуються. Рутова ФС повинна бути включена в ядро, а не підвантажена як модуль, інакше Gentoo не зможе примонтувати даний розділ. Не забудьте також увімкнутиVirtual memoryта/proc file system. За необхідності виберіть один або кілька параметрів зі списку (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS та CONFIG_TMPFS):
Якщо для підключення до мережі інтернет використовується PPPoE або dial-up модем, тоді увімкніть наступні параметри ( CONFIG_PPP , CONFIG_PPP_ASYNC і CONFIG_PPP_SYNC_TTY ):
Опції стиснення не зашкодять, але не є обов'язковими, як і PPP over Ethernet. Фактично останній використовується тільки коли ppp налаштований на використання PPPoE режиму ядра.
Не забудьте налаштувати підтримку мережевих карток (кабельних та бездротових).
Оскільки більшість сучасних систем є багатоядерними, нам знадобитьсяSymmetric multi-processing support( CONFIG_SMP ):
Якщо використовуються USB-пристрої введення (наприклад клавіатуру та миша) або інші USB-пристрої, не забудьте включити і ці параметри ( CONFIG_HID_GENERIC , CONFIG_USB_HID , CONFIG_USB_SUPPORT , CONFIG_USB_XHCI_HCD , CONFIG_USB_EHCI
Налаштування ядра, специфічне для архітектури
Якщо потрібно підтримувати 32-бітові програми, переконайтеся, що вибрано IA32 Emulation ( CONFIG_IA32_EMULATION ). Gentoo встановлює систему multilib (змішані 32/64 бітові обчислення) за замовчуванням, тому ця опція необхідна, якщо звичайно обраний профіль no-multilib.
Увімкніть підтримку GPT, якщо їх використовували раніше під час розбиття диска ( CONFIG_PARTITION_ADVANCED і CONFIG_EFI_PARTITION ):
Увімкніть підтримку EFI stub і EFI variables в ядрі Linux, якщо для завантаження системи використовується UEFI ( CONFIG_EFI , CONFIG_EFI_STUB , CONFIG_EFI_MIXED і CONFIG_EFI_VARS ):
Компіляція та встановлення
Коли налаштування закінчено, настав час скомпілювати та встановити ядро. Вийдіть з налаштування та запустіть процес компіляції:
Після завершення компіляції скопіюйте образ ядра в каталог /boot/ . Це робиться командою make install :
Ця команда скопіює образ ядра в каталог /boot/ разом із файлом System.map та файлом налаштування ядра.
Опціонально: Збираємо initramfs
У деяких випадках необхідно включити підтримку initramfs - an initial ram-based file system (файлова система, заснована на оперативній пам'яті). Найбільш поширеною причиною є знаходження різних системних шляхів (на кшталт /usr/ або /var/ ) на різних розділах. ПриУ наявності initramfs ці розділи можуть бути підвантажені засобами initramfs.
Без initramfs існує ймовірність неправильного завантаження, так як для запуску деяких ФС може знадобитися інформація на цих розділах. Initramfs підвантажує всю інформацію до невеликого архіву, який читається відразу після завантаження ядра, але до передачі управління службам ініціалізації. Таким чином, набір скриптів initramfs простежить, щоб усі розділи були примонтовані вірно перед продовженням процесу завантаження.
Для установки initramfs спочатку потрібний sys-kernel/genkernel, який його згенерує:
Якщо потрібна підтримка LVM або RA & gt; genkernel . Для більш детальної інформації погляньте на genkernel --help. У наступному прикладі включена підтримка LVM і програмного RA &mt
Initramfs буде розташовано в /boot/ . Можна переглянути файли, що починаються з "initramfs":
Альтернативно: Використовуючи genkernel
Якщо ручна установка здається занадто складною, слід скористатися утилітою genkernel , яка налаштує і збере ядро автоматично.
genkernel конфігурує ядро приблизно так само, як у настановному носії. Таким чином, ядро, налаштоване genkernel, намагатиметься визначити все обладнання в процесі завантаження. Оскільки genkernel не вимагає самостійного налаштування ядра, він рекомендований тим, хто не готовий збирати власне ядро.
Приступимо. Спочатку потрібно встановити sys-kernel/genkernel:
Потім відредагуйте файл /etc/fstab , де слід вказати у рядку /boot/ правильний пристрій у другому полі. Якщо наслідували приклад з даної інструкції, то, швидше за все, це пристрій /dev/sda2 з файловою системою ext2 і рядок має виглядати так:
Залишилося скомпілювати ядро,виконавши genkernel all. Зверніть увагу, що оскільки genkernel включає підтримку якомога більшого діапазону обладнання, процес складання може зайняти деякий час!
На завершення ми отримаємо повний набір модулів та initramfs. Ядро та initrd нам ще знадобляться при налаштуванні завантажувача. Запишіть назву файлів ядра та initrd, тому що вони нам ще знадобляться. Initrd запускається відразу після ядра визначення обладнання, перед запуском самої системи.
Модулі ядра
Налаштування модулів
Вкажіть модулі, які повинні підвантажуватись автоматично в /etc/modules-load.d/*.conf файлах. Один модуль на рядок. Додаткові опції для модулів необхідно вказувати у файлах /etc/modprobe.d/*.conf .
Щоб переглянути доступні модулі, виконайте команду find , не забувши замінити " " на зібрану в попередньому кроці версію:
Наприклад, щоб автоматично підвантажити модуль 3c59x.ko (драйвер для певної родини інтернет-карток від 3Com), відредагуйте файл /etc/modules-load.d/network.conf, додавши ім'я модуля. Фактичне ім'я файлу несуттєве для завантажувача.