%general-entities; ]> kernel &linux-version;
&linux-url;
Linux-&linux-version; Linux <para>Ядро операционной системы.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&linux-ch8-sbu;</seg> <seg>&linux-ch8-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>Установка ядра Процесс сборки ядра состоит из нескольких этапов: настройка, компиляция и установка. Ознакомьтесь с файлом README в дереве исходных кодов пакета чтобы узнать о других способах настройки ядра. Подготовьте пакет к компиляции выполнив следующую команду: make mrproper Выполнение этой команды гарантирует, что дерево исходных кодов ядра абсолютно чистое. Разработчики ядра рекомендуют, чтобы эта команда выполнялась перед каждым процессом компиляции. Обратите внимание что после распаковки пакета с исходным кодом не следует полагаться на его "чистоту". Настройте ядро с помощью псевдографического интерфейса. Для получения общей информации перейдите по ссылке . В книге BLFS есть информация по поводу некоторых требований к конфигурации ядра для поддержки пакетов, которые отсутствуют в книге LFS. Эта информация доступна по ссылке . Дополнительная информация о настройке и сборке ядра расположена по ссылке Хорошей отправной точкой для настройки ядра, может стать запуск команды make defconfig. В результате её выполнения будет создана базовая конфигурация с учётом архитектуры машины. Убедитесь в том, что вы включили/отключили/указали указанные ниже параметры настройки, в ином случае, система может работать не правильно, или вовсе не загрузится: Device Drivers ---> Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] Kernel hacking ---> Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER] General setup --> [ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED] [ ] Enable deprecated sysfs features by default [CONFIG_SYSFS_DEPRECATED_V2] [*] open by fhandle syscalls [CONFIG_FHANDLE] [ ] Auditing support [CONFIG_AUDIT] [*] Control Group support [CONFIG_CGROUPS] Processor type and features ---> [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP] Networking support ---> Networking options ---> <*> The IPv6 protocol [CONFIG_IPV6] Device Drivers ---> Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] [ ] Fallback user-helper invocation for firmware loading [CONFIG_FW_LOADER_USER_HELPER] Firmware Drivers ---> [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID] File systems ---> [*] Inotify support for userspace [CONFIG_INOTIFY_USER] <*> Kernel automounter version 4 support (also supports v3) [CONFIG_AUTOFS4_FS] Pseudo filesystems ---> [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL] [*] Tmpfs extended attributes [CONFIG_TMPFS_XATTR] Kernel hacking ---> Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER] Параметр "The IPv6 Protocol" строго не обязателен, однако разработчиками пакета systemd настоятельно рекомендуется его включить. Также, есть некоторые опции, которые могут понадобиться в зависимости от конфигурации системы. Список параметров, необходимых для пакетов в книге BLFS - BLFS. Если на хост системе используется UEFI, то после выполнения команды 'make defconfig' должны автоматически примениться параметры ядра, связанные с EFI. Для того, чтобы ядро LFS могло загружаться из среды UEFI, необходимо включить соответствующий параметр: Processor type and features ---> [*] EFI stub support [CONFIG_EFI_STUB] Более полное описание управления UEFI из LFS доступно по ссылке: . Разъяснение указанных параметров конфигурации: Support for uevent helper Наличие этого параметра может вызвать конфликт при управление устройствами через Udev / Eudev. Maintain a devtmpfs При использовании этого параметра, будет осуществлена поддержка узлов устройств, заполняемых самим ядром, даже без запуска Udev. Udev будет работать поверх, управляя разрешениями и добавляя необходимые символические ссылки. Этот элемент конфигурации необходим всем пользователям Udev / Eudev. make menuconfig Значение необязательных переменных окружения программы make: LANG=<host_LANG_value> LC_ALL= Задаёт настройку локали на ту, которая используется в хост системе для корректного отображения menuconfig при использовании интерфейса ncurses при генерации строк на текстовой консоли Linux с кодировкой UTF-8. Если используете, то убедитесь что заменили переменную <host_LANG_value> на значение переменной окружения $LANG их хост системы. Или можно использовать значение переменной окружения хос системы $LC_ALL или $LC_CTYPE. Кроме того, команда make oldconfig может быть более уместна в некоторых случаях. Дополнительную информацию см. В файле README. При желании, можно пропустить этап настройки, скопировав файл конфигурации ядра .config с вашей хост системы (в том случае, если такой файл присутствует) в предварительно распакованный каталог ядра linux-&linux-version;. Мы не рекомендуем такой подход. Гораздо полезнее изучить все параметры настройки и создать файл конфигурации ядра самостоятельно. Скомпилируйте образ ядра и модули: make При использовании модулей, могут потребоваться файлы конфигурации, которые должны находиться в каталоге /etc/modprobe.d. Информация о модулях и конфигурации ядра      находится в и в каталоге с документацией ядра linux-&linux-version;/Documentation. Также будет интересным изучение информации modprobe.d(5). Установите модули, если ядро их использует: make modules_install После завершения компиляции, необходимо выполнить еще несколько шагов. Некоторые файлы должны быть скопированы в каталог /boot. Если хост система содержит отдельный раздел для каталога /boot, файлы скопированные ниже, должны находится в нём. Самый простой способ это сделать - выполнить привязку (bind) каталога /boot хост системы (за пределами выполнения в среде chroot) к каталогу /mnt/lfs/boot перед тем, как продолжить. Из-под пользователя root в хост системе выполните команду: mount --bind /boot /mnt/lfs/boot Путь к образу ядра зависит от используемой платформы. Имя файла, указанное ниже, может иметь произвольное наименование, на ваш вкус, но имя файла должно начинаться с vmlinuz для обеспечения совместимости автоматической настройки процесса загрузки, описанного в следующей главе. При выполнении следующей команды, будет считать что используется архитектура x86: cp -iv arch/x86/boot/bzImage /boot/vmlinuz-&linux-version;-lfs-&version; cp -iv arch/x86/boot/bzImage /boot/vmlinuz-&linux-version;-lfs-&versiond; System.map файл, внутри которого находится символьная таблица адресов функций и процедур, используемых ядром операционной системы Linux. В этой таблице перечислены имена переменных и функций и их адреса в памяти компьютера. Эта таблица весьма полезна при отладке ядра в случае Kernel panic или Linux oops. System.map генерируется при компиляции ядра. Выполните следующщую команду для установки файла System.map: cp -iv System.map /boot/System.map-&linux-version; Файл конфигурации ядра .config полученный в результате настройки make menuconfig содержит в себе все опции конфигурации скомпилированного ядра. Хорошей идеей будет оставить этот файл для будующей работы: cp -iv .config /boot/config-&linux-version; Установите документацию ядра: install -d /usr/share/doc/linux-&linux-version; cp -r Documentation/* /usr/share/doc/linux-&linux-version; Важно отметить, что файлы в каталоге исходных кодов ядра не принадлежат пользователю root. Всякий раз, когда пакет распаковывается от пользователя root (как это и выполнялось внутри среды chroot), файлы имеют те идентификаторы пользователя и группы, которые были назначены при распаковке. Обычно это не вызывает проблем для других устанавливаемых пакетов, так как каталог с исходными кодами удаляется после установки пакета. Однако исходный код ядра Linux часто сохраняется в течение длительного времени. Из-за этого существует вероятность того, что идентификатор пользователя, используемый при распаковке, будет назначен другому пользователю. В таком случае, этот пользователь будет иметь доступ на запись в этот каталог. Во многих случаях конфигурация ядра должна быть обновлена для пакетов, которые будут установлены позже в BLFS. В отличие от других пакетов удалять дерево исходного кода ядра не требуется после компиляции и установки. Если вы планируете оставить каталог с исходным кодом ядра, выполните команду: chown -R 0:0 для каталога linux-&linux-version; чтобы указать права для пользователя root. В документации ядра рекомендуется создать символическую ссылку /usr/src/linux для указания местоположения каталога с исходными кодами ядра. Это рекомендация относится к ядрам до версии 2.6 и не должна выполняться в системе LFS, так как это может вызвать проблемы с пакетами, которые вы, возможно, захотите создать, когда ваша базовая система LFS будет готова. Заголовочные файлы в системном каталоге include (/usr/include) должны всегда быть те, которые использовались при компиляции Glibc в главе . Поэтому их никогда не следует заменять на чистые заголовочные файлы ядра или любые другие подготовленные заголовочные файлы. Настройка порядка загрузки модулей Linux /etc/modprobe.d/usb.conf Обычно модули Linux загружаются автоматически, но иногда требуется определенный порядок. Программа, которая загружает модули, modprobe или insmod, использует файл /etc/modprobe.d/usb.conf как раз для этой цели. Этот файл должен быть создан так, что если USB-драйверы (ehci_hcd, ohci_hcd и uhci_hcd) были созданы в виде модулей, то они будут загружены в требуемом порядке; ehci_hcd должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы избежать предупреждений во время загрузки. Создайте новый файл/etc/modprobe.d/usb.conf выполнив следующую команду: install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true # End /etc/modprobe.d/usb.conf EOF Содержимое пакета Linux Установленные файлы Установленные каталоги config-&linux-version;, vmlinuz-&linux-version;-lfs-&version;, vmlinuz-&linux-version;-lfs-&versiond;, and System.map-&linux-version; /lib/modules, /usr/share/doc/linux-&linux-version; Краткое описание config-&linux-version; Файл конфигурации ядра .config содержит в себе все опции конфигурации скомпилированного ядра. /boot/config-&linux-version; vmlinuz-&linux-version;-lfs-&version; vmlinuz-&linux-version;-lfs-&versiond; Ядро системы Linux. При включении компьютера ядро - первая часть операционной системы, которая будет загружена. Она обнаруживает и инициализирует все компоненты оборудования компьютера, делает их доступными в виде дерева каталогов с файлами для доступа к ним программам и превращает один процессор в мультизадачную машину, способную выполнять множество программ как будто одновременно. lfskernel-&linux-version; System.map-&linux-version; файл, внутри которого находится символьная таблица адресов функций и процедур, используемых ядром операционной системы Linux. В этой таблице перечислены имена переменных и функций и их адреса в памяти компьютера. Эта таблица весьма полезна при отладке ядра в случае Kernel panic или Linux oops. System.map генерируется при компиляции ядра. /boot/System.map-&linux-version;