"Философия Linux - смейся в лицо опасностям." Линус Торвальдс
"Философия Linux - смейся в лицо опасностям." Линус Торвальдс
Для корректной работы некоторых драйверов требуется установка дополнительных файлов прошивки. Часто подобное требуется для сетевых интерфейсов, особенно беспроводных. Также, современные видеочипы от AMD, NVidia и Intel, при использовании отрытых драйверов, часто нуждаются во внешних файлах firmware. Большинство файлов прошивки поставляется в пакете sys-kernel/linux-firmware:
Принимаем лицензии linux-fw-redistributable, так и лицензии без исходного кода.
nano /etc/portage/package.license
# Принимаем обе лицензии для linux-firmware
sys-kernel/linux-firmware linux-fw-redistributable no-source-code
# Принятие любой лицензии, разрешающей распространение
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
emerge --ask sys-kernel/linux-firmware
Запуская ручную настройку ядра, следует знать состав аппаратуры своего компьютера.
Большую часть информации можно собрать, установив пакеты 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
Device Drivers --->
Firmware Drivers --->
EFI (Extrusible Firmware Interfacc) Support --->
<*> EFI Variable Support via sysfs
Компилируем ядро:
Возможно включить параллельную сборку, используя make -jX,
где X это число параллельных задач + 1, которые может запустить процесс сборки
make && make modules_install
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
rm -r /lib/modules/3.X.Y
rm /boot/vmlinuz-3.X.Y
rm /boot/System.map-3.X.Y
rm /boot/config-3.X.Y
Привет Nikolay,
Насчет пальца решил не острить. Сморожу что-нибудь не то - будет крайне печально:)
Ну разумеется я имел ввиду содержание.
Вопрос:)
Ты старые ядра предпочитаешь только ручками удалять?:)
Я бы в том месте где ты пишешь про ядро добавил бы опцию для патологически ленивых:
# eclean-kernel -n 4 :)
Еще раз спасибо тебе! Сайт Супер!
Николай: Привет Michael!
Спасибо за подсказку, обязательно добавлю.
Если есть ещё, какие либо предложения, пожалуйста сообщи, думаю, это будет полезно не только мне но и тем, кто посещает сайт.
Удачи. Николай.
Раньше приходилось лазить по сайтам для решения проблем Gentoo, а здесь всё в одном месте.
Жизнь прекрасна!
Николай: Люди тратили уйму своего времени и труда, чтобы создать этот софт и дарят его Вам. Найдите, пожалуйста, немного времени, чтобы прочитать документацию и научиться это использовать!