"Философия Linux - смейся в лицо опасностям." Линус Торвальдс
"Философия Linux - смейся в лицо опасностям." Линус Торвальдс
Join Us
Для корректной работы некоторых драйверов требуется установка дополнительных файлов прошивки. Часто подобное требуется для сетевых интерфейсов, особенно беспроводных. Также, современные видеочипы от AMD, NVidia и Intel, при использовании отрытых драйверов, часто нуждаются во внешних файлах firmware. Большинство файлов прошивки поставляется в пакете sys-kernel/linux-firmware:
Принимаем лицензии linux-fw-redistributable, так и лицензии без исходного кода.
nano /etc/portage/package.license
app-arch/unrar unRAR
sys-kernel/linux-firmware linux-fw-redistributable no-source-code
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
emerge --ask sys-kernel/linux-firmware
Installkernel может использоваться, среди прочего, для автоматизации установки ядра, генерации initramfs, создания единого образа ядра и/или настройки загрузчика. sys-kernel/installkernel реализует два пути достижения этой цели: традиционный installkernel, происходящий из Debian, и kernel-install из systemd.
Чтобы автоматически запускать grub-mkconfig при установке ядра, включаем USE-флаг grub:
vim /etc/portage/package.use
sys-kernel/installkernel grub
emerge --ask sys-kernel/installkernel
Запуская ручную настройку ядра, следует знать состав аппаратуры своего компьютера.
Большую часть информации можно собрать, установив пакеты lspci и lsusb.
Устанавливаем их:
emerge --ask sys-apps/pciutils
emerge --ask sys-apps/usbutils
Скачиваем исходник ядра:
USE="-doc symlink" emerge --ask sys-kernel/gentoo-sources
Просмотр папки с исходными кодами ядра
ls -l /usr/src/
Вызов меню настройки
cd /usr/src/linux
make menuconfig
Включение devtmpfs поддержку
Device Drivers --->
Generic Driver Options --->
-*- Maintain a devtmpfs filesystem to mount at /dev
[ ] Automount devtmpfs at /dev, after the kernel mounted the rootfs
Выбор необходимых файловых систем
File systems --->
(Select one or more of the following options as needed by your system)
< > Second extended fs support
< > Ext3 journalling file system support
<*> The Extended 4 (ext4) filesystem
[*] Use ext4 for ext2/ext3 file systems
[*] Ext4 POSIX Access Control Lists
[*] Ext4 Security Labels
< > Ext4 Encryption
[*] EXT4 debugging support
...
<*> FUSE (Filesystem in Userspace) support
Поддержка CD-ROM
CD-ROM/DVD Filesystems --->
<M> ISO 9660 CDROM file system support
[*] Microsoft Joliet CDROM extensions
[*] Transparent decompression extension
<*> UDF file system support
...
-*- Native language support --->
--- Native language support
(utf8) Default NLS Option
<*> Codepage 437 (United States, Canada)
...
Кодовая страница ISO8859-1 должна быть включена, чтобы смонтировать раздел EFI
[*] NLS ISO 8859-1 (Latin 1; Western European Languages)
...
<*> NLS KOI8-R (Russian)
...
<*> NLS UTF-8
Pseudo Filesystems --->
-*- /proc file system support
-*- Tmpfs virtual memory file system support (former shm fs)
Поддержка, активация SMP
Processor type and features --->
[*] Symmetric multi-processing support
Включение поддержки USB для устройств ввода
Device Drivers --->
HID support --->
[*] USB support --->
...
<*> USB Monitor
...
<*> EHCI HCD (USB 2.0) support
...
<*> UHCI HCD (most Intel and VIA) support
Выбор типа процессора и возможностей:
Processor type and features --->
[ ] Machine Check / overheating reporting
[ ] Intel Features MCE
[ ] AMD MCE Features
Processor family (AMD-Opteron/Athlon64) --->
( ) Opteron/Athlon64/Hammer/K8
( ) Intel P4 / older Netburst based Xeon
( ) Core 2/newer Xeon
( ) Intel Atom
( ) Generic-x86-64
Executable file formats --->
Binary Emulations --->
[*] IA32 Emulation
Поддержка меток GPT
-*- Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
...
[*] EFI GUID Partition support
Поддержка UEFI:
Processor type and features --->
[*] EFI runtime service support
[*] EFI stub support
[*] EFI mixed-mode support
Device Drivers --->
Graphics support --->
Frame buffer Devices --->
<*> Support for frame buffer devices --->
[*] EFI-based Framebuffer Support
File Systems --->
Pseudo filesystems --->
<*> EFI Variable filesystem
DOS/FAT/EXFAT/NT Filesystems --->
<*> VFAT (Windows-95) fs support
(437) Кодовая страница по умолчанию для FAT
(iso8859-1) Набор символов iochart по умолчанию для FAT
Native Language support --->
[*] NLS ISO 8859-1 (Latin 1; Western European Languages)
Изменение частоты процессора - это метод, в котором частота процессора может быть автоматически изменена "на лету" для сохранения энергии и уменьшения количество выделяемого чипом тепла.
Спецификация ACPI описывает механизм масштабирования как состояния производительности P-state или состояния производительности процессора. Состояние, обозначенное как P0, используется для максимально возможной частоты процессора, а состояния P1-Pn используются для более низких частот.
Более низкая частота процессора приводит к меньшему количеству инструкций, обрабатываемых за единицу времени. Это означает, что необходимо найти баланс между частотой и производительностью.
Убеждаемся, что следующие функции включены BIOS:
"Processor C1E support"
"Enhanced Speedstep (EIST)"
Включение параметров ядра для управления питанием:
Power management and ACPI options --->
[*] ACPI (Advanced Configuration and Power Interface) Support --->
<*> Processor
CPU Frequency scaling --->
[*] CPU Frequency scaling
Default CPUFreq governor (ondemand) --->
Выберите регулятор по умолчанию; см. таблицу ниже
По умолчанию - ondemand
Необходим регулятор, который отвечает за изменение частоты на основании своего профиля:
Регулятор 'performance'; Модуль cpufreq_performance; Статически устанавливает частоту на самое высокое из доступных значений частоты ЦП. Для процессоров Intel core должно быть выбрано по умолчанию.
Регулятор 'powersave'; Модуль cpufreq_powersave Статически устанавливает частоту на самое низкое из доступных значений частоты ЦП. Нельзя установить по умолчанию.
Регулятор 'userspace' для изменения частоты в пользовательском пространстве; Модуль cpufreq_userspace. Для установки частоты ЦП вручную, или когда пользовательская программа должна иметь возможность динамической установки частоты.
Регулятор частоты ЦП 'ondemand'; Модуль cpufreq_ondemand Совершает периодический опрос и изменяет частоту, основываясь на использовании ЦП. Для всех процессоров, за исключением Intel core, должно быть выбрано по умолчанию.
Регулятор частоты ЦП 'conservative'; Модуль cpufreq_conservative Похож на ondemand. Частота плавно увеличивается и уменьшается вместо того, что подпрыгивать до 100%, когда нужна скорость.
Специальные настройки драйверов масштабирования ЦП.
Intel P-state этот драйвер реализует внутренние регуляторы масштабирования (примерно аналогичные энергосбережению и производительности CPUFreq) и работает в зависимости от загрузки процессора. Он предназначен для процессоров последней серии Intel Core (на базе микроархитектуры Sandy Bridge или новее).
Этот драйвер работает либо в активном режиме (intel_pstate) для процессоров с аппаратным P-state (HWP), либо в пассивном режиме (intel_cpufreq). Пассивный режим касается процессоров, не поддерживающих HWP, которые являются поколениями до микроархитектуры Skylake - флаг процессора hwp отсутствует.
В активном режиме процессор самостоятельно устанавливает частоту на основе предоставленных параметров CPUFreq. При этом управление масштабированием частоты передаётся самому процессору. С другой стороны, в пассивном режиме драйвер ведёт себя аналогично обычному драйверу acpi-cpufreq - он взаимодействует с обычными регуляторами масштабирования. Хотя он может использовать весь диапазон частотных ступеней.
В случае активного режима пользовательское пространство, регуляторы ondemand и conservative регуляторы масштабирования не нужны. Регулятор производительности должен быть выбран по умолчанию.
Настройка для Intel Sandy Bridge и более новых процессоров Intel Core
Power management and ACPI options --->
[*] CPU Frequency scaling --->
Default CPUFreq governor (performance) --->
-*- 'performance' governor
<*> Intel P state control
Процессор сохраняет больше всего энергии, когда дольше остаётся в режимах энергосбережения, поэтому уменьшим количество тактов, которые его пробуждают. Подробности о доступных бестактовых режимах могут быть найдены в документации ядра.
Убеждаемся, что следующие функции включены BIOS:
"HPET"
"Multimedia timer"
Включение параметров ядра, которые оптимизируют тик
Processor type and features --->
[*] Tickless System (Dynamic Ticks)
[*] High Resolution Timer Support
[*] HPET Timer Support
Сообщение в TTY* терминале: ACPI: \_PR_.CPU*:Found * idle states
Современные многоядерные процессоры часто загружены не полностью, что даёт возможность приостановить работу неиспользуемых частей и сэкономить электроэнергию. Аппаратное обеспечение переводит неиспользуемые части в состояние ожидания. Тогда ядро не планирует обычные задачи для простаивающих частей, а только специальные задачи.
Спецификация ACPI описывает эти состояния простоя как C-states или состояния питания процессора. Обычно реализуется несколько C-states. Начиная от состояния C0 для регулярно работающего процессора до состояний C1, C2 и более глубоких состояний простоя. Чем глубже состояние простоя, тем выше экономия энергии, но и более длительный переход обратно в рабочее состояние.
Подсистема ядра CPUIdle отвечает за управление состоянием простоя. Подобно CPUFreq, эта подсистема предоставляет два основных средства управления состоянием простоя - регулятор и драйвер. Регулятор пытается предсказать оптимальное C-states и драйвер для выполнения операции на оборудовании.
Убеждаемся, что следующие функции включены BIOS:
"C-States"
"ACPI C states"
Драйвер: Intel Idle Time. Запрашивает часть процессора перейти в состояние простоя с помощью инструкции MWAIT.
Символ модуля/ядра: intel_idle (CONFIG_INTEL_IDLE)
Поддерживаемые процессоры: последний (Nehalem+) Intel Core
Регуляторы простоя процессора:
Лестница регулятора ladder(CONFIG_CPU_IDLE_GOV_LADDER). Регулятор по умолчанию для систем с разрешёнными тактами планировщика в режиме ожидания - CONFIG_NO_HZ_IDLE=n.
Меню регулятора menu(CONFIG_CPU_IDLE_GOV_MENU). Регулятор по умолчанию для бестикальных систем - CONFIG_NO_HZ_IDLE=y.
Регулятор, ориентированный на события таймера (TEO) TEO(CONFIG_CPU_IDLE_GOV_TEO) Альтернативный регулятор для бестактовых систем - CONFIG_NO_HZ_IDLE=y.
Пакет sys-power/cpupower предоставляет набор инструментов для удобного управления и мониторинга функций энергосбережения процессора. В число инструментов входят информация о частоте процессора, набор частот процессора и монитор мощности процессора.
Компилируем ядро:
Возможно включить параллельную сборку, используя make -jX,
где X это число параллельных задач + 1, которые может запустить процесс сборки
make && make modules_install
make install
Проблема INSTALL /boot Cannot find LILO может возникнуть из-за отсутствия в системе /sbin/installkernel.
Это часть пакета sys-kernel/installkernel, который может быть не установлен по какой-либо причине.
В данном случае install.sh просто пытается выполнить установку с помощью LILO.
Необходимо установить данный пакет до запуска 'make install'.
В процессе установки не требуется!!!
Настройка символьной ссылки:
eselect kernel list
Available kernel symlink targets:
[1] linux-3.14.14-gentoo *
[2] linux-3.16.3-gentoo
Эта команда выводит доступные исходные коды ядра.
Звездочкой отмечены выбранные исходные коды.
Для того чтобы изменить исходные коды ядра, например выбрать второй пункт, сделаем следующее:
eselect kernel set 2
Если возникли проблемы при пересборке текущего ядра, может помочь очистка исходных кодов ядра.
Убеждаемся, что сохранили файл .config, так как данная операция удалит в том числе и его.
Убеждаемся, что не используем окончание файла .bak или ~ для бэкапа, так как make distclean очищает и такие файлы тоже.
cp .config /usr/src/kernel_config_bk
make distclean
mv /usr/src/kernel_config_bk .config
Конфигурацию работающего в данный момент ядра необходимо скопировать в новую. Ее можно найти в нескольких местах:
В файловой системе procfs, если параметр ядра Enable access to .config through /proc/config.gz был включен в ядре работающем в данный момент.
zcat /proc/config.gz > /usr/src/linux/.config
В каталоге /boot, если Вы установили файл конфигурации туда:
cp /boot/config-3.14.14-gentoo /usr/src/linux/.config
В каталоге ядра, которое работает в данный момент:
cp /usr/src/linux-3.14.14-gentoo/.config /usr/src/linux/
Перезагружаемся.
Обновляем предыдущий файл конфигурации для нового ядра:
cd /usr/src/linux
make syncconfig
Настройка повторяет конфигурацию с помощью текста.
Для каждого различия между версиями ядра, спрашивается хотите ли Вы включить драйвер или параметр, например:
Anticipatory I/O scheduler (IOSCHED_AS) [Y/n/m/?] (NEW)
Метка (NEW) в конце строки отмечает параметр как новый.
Слева метки в квадратных скобках даны возможные ответы: Yes, no, module или ? для того чтобы вызвать помощь.
Рекомендуемый ответ выделен заглавными буквами (в данном случае Y). Помощь описывает параметр или драйвер.
make oldconfig
Все внешние модули ядра, такие как binary kernel modules, необходимо перекомпилировать для каждого нового ядра.
Если ядро ещё не собрано, оно должно сперва быть подготовлено для компиляции его внешних модулей:
make modules_prepare
Переходим к компиляции ядра. 👆
После каждой компиляции ядра для внешних модулей, необходимо собрать пакеты заново, используя набор:
emerge --ask @module-rebuild
Если была установлена новая версия ядра, и запущена команда --depclean до того, как переключились на новый исходный код, текущие исходный код будет удалён. Однако, если необходимо сохранить текущий исходный код, это удаление нежелательно, так как может понадобиться исходный код, например, для компиляции внешних модулей ядра. Поэтому хорошей практикой считается добавление конкретной версии ядра в world-файл для защиты его от операций --depclean.
emerge --ask --noreplace gentoo-sources:3.X.Y
Заметьте слотовую нотацию, использование двоеточия вместо тире. Каждая версия ядра занимает свой собственный слот.
Удаление остатков ядра.
app-admin/eclean-kernel это программа для очистки/удаления старого ядра. Она удаляет сборочные файлы и каталоги ядра, если на них не ссылается никакое сохранённое ядро.
Например, чтобы сохранить четыре последних ядра:
eclean-kernel -n 4
Удаление старых ядер в ручную:
rm -r /usr/src/linux-3.X.Y-gentoo
rm -r /lib/modules/3.X.Y-gentoo
rm /boot/vmlinuz-3.X.Y-gentoo
rm /boot/System.map-3.X.Y-gentoo
rm /boot/config-3.X.Y-gentoo
Привет Nikolay,
Насчет пальца решил не острить. Сморожу что-нибудь не то - будет крайне печально:)
Ну разумеется я имел ввиду содержание.
Вопрос:)
Ты старые ядра предпочитаешь только ручками удалять?:)
Я бы в том месте где ты пишешь про ядро добавил бы опцию для патологически ленивых:
# eclean-kernel -n 4 :)
Еще раз спасибо тебе! Сайт Супер!
Николай: Привет Michael!
Спасибо за подсказку, обязательно добавлю.
Если есть ещё, какие либо предложения, пожалуйста сообщи, думаю, это будет полезно не только мне но и тем, кто посещает сайт.
Удачи. Николай.
Раньше приходилось лазить по сайтам для решения проблем Gentoo, а здесь всё в одном месте.
Жизнь прекрасна!
Николай: Люди тратили уйму своего времени и труда, чтобы создать этот софт и дарят его Вам. Найдите, пожалуйста, немного времени, чтобы прочитать документацию и научиться это использовать!