Kernel, SystemTools, Grub Gentoo

Kernel, SystemTools, Grub Gentoo



KERNEL

Рекомендуется установить пакет sys-kernel/linux-firmware перед первоначальной перезагрузкой системы, чтобы прошивка была доступна в случае необходимости:

  • root # emerge --ask sys-kernel/linux-firmware

SOF-прошивка

Sound Open Firmware (SOF) — это новый аудиодрайвер с открытым исходным кодом, предназначенный для замены проприетарного аудиодрайвера Smart Sound Technology (SST) от Intel. Для процессоров Intel 10-го поколения+ и Apollo Lake (Atom E3900, Celeron N3350 и Pentium N4200) требуется эта прошивка для определенных функций, а некоторые APU AMD также поддерживают эту прошивку. Матрицу поддерживаемых SOF платформ можно найти здесь для получения дополнительной информации.

  • root # emerge --ask sys-firmware/sof-firmware

Конфигурация и компиляция ядра

Теперь настало время сконфигурировать и скомпилировать исходные тексты ядра. Для целей процесса установки будут представлены три способа управления ядром, однако в любой момент после установки можно выбрать другой способ.

От наименьшего вмешательства к наибольшему:

Полностью автоматический подход: Distribution-ядра

Проект Distribution Kernel используется для конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но по умолчанию включено) файла initramfs. Новые обновления ядра полностью автоматизированы, поскольку они обрабатываются через менеджер пакетов, как и любой другой системный пакет. В случае необходимости можно предоставить пользовательский конфигурационный файл ядра . Это наименее сложный процесс и идеально подходит для новых пользователей Gentoo, так как работает "из коробки" и требует минимального участия системного администратора.

Гибридный подход: Genkernel

Новые обновления ядра устанавливаются через системный менеджер пакетов. Системные администраторы могут использовать инструмент Gentoo genkernel для общей конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но не включено по умолчанию) файла initramfs. Можно предоставить пользовательский файл конфигурации ядра, если необходима кастомизация. Будущая конфигурация, сборка и установка ядра требуют участия системного администратора в виде выполнения eselect kernel , genkernel и, возможно, других команд для каждого обновления.

Полностью ручная настройка

Новые исходные тексты ядра устанавливаются с помощью системного менеджера пакетов. Ядро конфигурируется, собирается и устанавливается вручную с помощью команды eselect kernel и множества команд make . С новыми обновлениями ядра повторяется ручной процесс конфигурирования, сборки и установки файлов ядра. Это самый сложный процесс, но он обеспечивает максимальный контроль над процессом обновления ядра.

Distribution-ядра

Distribution-ядра — это ebuild-файлы, которые охватывают полный процесс распаковки, конфигурирования, компиляции и установки ядра. Основным преимуществом этого метода является то, что ядра обновляются до новых версий менеджером пакетов во время обновления @world. Для этого используется только команда emerge . Distribution-ядра по умолчанию сконфигурированы для поддержки большинства оборудования, для более тонкой настройки предлагаются два механизма: saveconfig и сниппеты конфигурации.

Установка distribution-ядра

Перед установкой пакета ядра dracut необходимо добавить USE-флаг для пакета sys-kernel/installkernel в /etc/portage/package.use :

  • nano /etc/portage/package.use/installkernel

Включить поддержку dracut

  • sys-kernel/installkernel dracut

Чтобы собрать ядро из исходного кода с патчами Gentoo, введите:

root # emerge --ask sys-kernel/gentoo-kernel

Администраторы систем, которые хотят избежать сборки ядра из исходных текстов, могут использовать предварительно скомпилированные образы ядра:

  • root # emerge --ask sys-kernel/gentoo-kernel-bin

Обновление и очистка

После установки ядра менеджер пакетов будет автоматически обновлять его до более новых версий. Предыдущие версии будут храниться до тех пор, пока менеджер пакетов не получит запрос на очистку устаревших пакетов.

Чтобы освободить место на диске, устаревшие пакеты можно удалить, периодически запуская emerge с опцией –depclean:

  • root # emerge --depclean

Также можно удалить именно устаревшие ядра:

  • root # emerge --prune sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin

SYSTEM_TOOLS

Установка системных средств

Системный журнал

OpenRC

Gentoo предоставляет несколько утилит для ведения системного журнала. Некоторые из них перечислены здесь:

app-admin/sysklogd — предоставляет традиционный набор возможностей. Настройки по умолчанию работают хорошо из коробки, что делает этот пакет хорошим вариантом для начинающих.
app-admin/syslog-ng — расширенные возможности ведения системного журнала. Требуются дополнительные настройки для того, чтобы журналировать что-либо в один большой файл. Некоторые продвинутые пользователи могут выбрать этот пакет за его потенциал; имейте ввиду, что дополнительные настройки необходимы для любого вида умного журналирования.
app-admin/metalog — гибко настраиваемая система журналирования.

Установите выбранный пакет для ведения системного журнала. Для OpenRC, добавьте его в уровень запуска по умолчанию (default runlevel), используя rc-update. Следующий пример устанавливает и активирует app-admin/sysklogd в качестве системной утилиты для ведения системного журнала:

-root # emerge --ask app-admin/sysklogd

-root # rc-update add sysklogd default

Планировщик задач

OpenRC

Хотя планировщик задач (cron, от греч. χρόνος — время) является необязательной для системы программой, всё-таки рекомендуется его установить.

Демон cron выполняет команды через заданные интервалы времени. Интервалы могут быть ежедневными, еженедельными или ежемесячными, раз в вторник, раз в две недели и т.д. Знающий системный администратор может использовать сron-демон для автоматизации рутинных задач по обслуживанию системы.

Все cron-демоны поддерживают высокий уровень детализации запланированных задач и обычно включают возможность отправки электронного письма или другой формы уведомления, если запланированная задача не выполнилась или выполнилась не так, как ожидалось.

Gentoo предлагает для выбора несколько возможных демонов cron, включая:

sys-process/cronie — cronie основан на оригинальном cron и содержит улучшения безопасности и конфигурации, такие как возможность использования PAM и SELinux.
sys-process/dcron — Этот лёгкий демон cron стремится быть простым и безопасным, с достаточным количеством функций, чтобы оставаться полезным.
sys-process/fcron — Планировщик команд с расширенными возможностями по сравнению с cron и anacron.
sys-process/bcron — Более современная система cron, разработанная с учетом безопасности операций. Для этого система разделена на несколько отдельных программ, каждая из которых отвечает за отдельную задачу, со жёстко контролируемыми сообщениями между частями.

cronie

Следующий пример использует sys-process/cronie:

  • root # emerge --ask sys-process/cronie

Добавьте cronie на уровень запуска по умолчанию, чтобы он запускался при запуске системы:

  • root # rc-update add cronie default

Индексирование файлов

Индексирование файлов поможет искать файлы в системе гораздо быстрее. Для этого установите sys-apps/mlocate.

  • root # emerge --ask sys-apps/mlocate

Автодополнения командной строки

Bash

Bash — это оболочка по умолчанию для систем Gentoo, поэтому установка расширений завершения может повысить эффективность и удобство управления системой. Пакет app-shells/bash-completion установит дополнения, доступные для конкретных команд Gentoo, а также многих других распространенных команд и утилит:

  • root # emerge --ask app-shells/bash-completion

Синхронизация времени

Важно использовать какой-то метод синхронизации системных часов. Обычно это делается с помощью протокола NTP и программного обеспечения. Существуют и другие реализации протокола NTP, например, Chrony.

Например, чтобы настроить Chrony:

  • root # emerge --ask net-misc/chrony

OpenRC

Для OpenRC, запустите:

  • root # rc-update add chronyd default

Утилиты для файловых систем

В зависимости от используемых файловых систем может понадобиться установка соответствующих утилит для их обслуживания (проверки целостности, (пере-)форматирования файловых систем и так далее). Обратите внимание, что пользовательские утилиты для ext4 (sys-fs/e2fsprogs) уже установлены как часть набора @system.

Так же рекомендуется установить пакет sys-block/io-scheduler-udev-rules для правильного поведения планировщика ввода/вывода с, к примеру, NVMe устройствами:

  • root # emerge --ask sys-block/io-scheduler-udev-rules

Сетевые утилиты

Если сеть была уже настроена в разделе Настройка системы и настройка сети завершена, то данный раздел «Сетевые утилиты» можно пропустить. В этом случае, переходите к разделу Настройка загрузчика.

Установка DHCP-клиента

Важно

Большинству пользователей понадобится DHCP-клиент для подключения к собственной сети. Если не установить никакой клиент, то впоследствии система не сможет настроить подключение к сети, что сделает невозможным скачивание DHCP-клиента.

DHCP-клиент автоматически получает IP-адрес для одного или нескольких сетевых интерфейсов во время работы сценария netifrc. Мы рекомендуем использовать net-misc/dhcpcd (смотрите также dhcpcd):

  • root # emerge --ask net-misc/dhcpcd

Установка клиента PPPoE

Если для подключения к Интернету требуется PPP, установите пакет net-dialup/ppp:

  • root # emerge --ask net-dialup/ppp

Установка утилит для беспроводной сети

Если система будет подключатся к беспроводной сети, установите пакет net-wireless/iw (в случае подключения к открытым сетям или защищённым протоколом WEP), и/или пакет net-wireless/wpa_supplicant (в случае подключения к сетям, защищённым WPA или WPA2). iw также является полезной утилитой для сканирования беспроводных сетей.

  • root # emerge --ask net-wireless/iw net-wireless/wpa_supplicant

Теперь продолжайте с раздела Настройка начального загрузчика.


GRUB

Заметка для пользователей UEFI:

запущенная команда выведет включенные значения в переменной GRUB_PLATFORMS, перед компиляцией.

Если используется более новая UEFI-совместимая материнская плата, пользователям сперва нужно убедиться, что GRUB_PLATFORMS=”efi-64” включено (обычно это уже сделано по умолчанию).

Если это не так, добавьте GRUB_PLATFORMS=”efi-64” в файл /etc/portage/make.conf до компиляции GRUB, что позволит собрать пакет с поддержкой EFI:

  • root # echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf

  • root # emerge --ask sys-boot/grub

Если GRUB был каким-то образом был установлен до включения GRUB_PLATFORMS=”efi-64”, то добавьте строку (из примера выше) в make.conf, после чего повторно переопределите зависимости для для набора пакетов world с помощью emerge –update –newuse:

  • root # emerge --ask --update --newuse --verbose sys-boot/grub

GRUB теперь установлен в системе, но еще не активирован.

Установка

При использовании UEFI

For UEFI systems:

root # grub-install --efi-directory=/efi

Installing for x86_64-efi platform.

Installation finished. No error reported.

После успешной установки вывод должен совпадать с выводом предыдущей команды

Настройка

Далее, нужно сгенерировать конфигурационный файл GRUB на основе настроек пользователя, указанных в файле /etc/default/grub и сценариях /etc/grub.d . В большинстве случаев ничего не нужно настраивать, так как GRUB автоматически определяет, какое ядро есть для загрузки (самый высокий приоритет у /boot/ ) и какая файловая система у rootfs. Здесь также можно добавить параметры ядра в /etc/default/grub , используя переменную GRUB_CMDLINE_LINUX .

Для создания окончательной конфигурации GRUB, запустите команду grub-mkconfig :

root # grub-mkconfig -o /boot/grub/grub.cfg

Generating grub.cfg ...

Found linux image: /boot/vmlinuz-6.6.21-gentoo

Found initrd image: /boot/initramfs-genkernel-amd64-6.6.21-gentoo

done

Вывод команды должен содержать по крайней мере один образ Linux, так как он необходим для загрузки системы. Если используется initramfs или ядро создавалось с помощью genkernel , также должен быть указан правильный образ initrd. Если это не так, перейдите в /boot/ и проверьте содержимое, используя команду ls . Если файлы действительно отсутствуют, вернитесь к инструкции по настройке и установке ядра.