Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 8. Делаем систему LFS загружаемой Вперед

8.3. Пакет Linux-2.6.37

В этом пакете находится ядро Linux.

Приблизительное время сборки: 1,0 – 5,0 SBU

Требуемое дисковое пространство: 540 - 800 MB

8.3.1. Установка ядра

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

Подготовьтесь к компиляции, запустив для этого следующую команду:

make mrproper

Эта команда о обеспечивает, что дерево ядра будет абсолютно чистым (т. е. будет очищено от всяких предшествующих настроек — прим.пер.). Разработчики ядра рекомендуют выполнять эту команду перед каждой компиляцией ядра. Не полагайтесь на то, что дерево исходных кодов будет чистым после распаковывания архива tar.

Конфигурирование ядра осуществляется через интерфейс, имеющий меню. Для получения общей информации, связанной с конфигурированием ядра, смотрите http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt. В BLFS есть некоторая информация, касающаяся конкретных требований к конфигурированию ядра для пакетов, которые не входят в проект LFS - смотрите http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index:

make LANG=<host_LANG_value> LC_ALL= menuconfig

Пояснение параметров make:

LANG=<host_LANG_value> LC_ALL=
 

Этот параметр задает настройку локали, совпадающей с одной из локалей, имеющихся на хост системе. Она нужна для правильного отображения в текстовой консоли UTF-8 linux интерфейсных строк, выдаваемых командой menuconfig ncurses.

Не забудьте заменить <host_LANG_value> на значение переменной $LANG из вашей хост системы. Если эта переменная не установлена, то вместо нее можно использовать значение переменной $LC_ALL или $LC_CTYPE, взятое из хост системы.

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

При желании пропустите конфигурирование ядра, скопировав из хост-системы в распакованный директорий linux-2.6.37 конфигурационный файл ядра .config (если он имеется). Однако, мы не рекомендуем использовать эту возможность. Часто лучше изучить все меню настройки и выполнить конфигурирование ядра с нуля.

Откомпилируйте образ ядра и модули:

make

Если используются модули ядра, то в /etc/modprobe.d может потребоваться задать конфигурацию модулей. Информация, касающаяся конфигурации модулей и ядра, приведена в разделе 7.9 "Управление устройствами и модулями в системе LFS" и в документации ядра в директории linux-2.6.37/Documentation. Также может быть интересна информация, выдаваемая командой modprobe.conf(5).

Установите модули, если они используются в конфигурации ядра

make modules_install

После того, как компиляции ядра будет завершена, для завершения установки ядра потребуются дополнительные шаги. В директорий /boot нужно будет скопировать некоторые файлы.

Путь к образу ядра может варьироваться в зависимости от используемой платформы. Имя файла, приведенное ниже, можно изменить по вашему вкусу, но оно должно начинаться с vmlinux с тем, чтобы его можно было использовать для автоматической настройки процесса загрузки, который будет описан в следующем разделе. В следующей команде предполагается, что используется архитектура x86:

cp -v arch/x86/boot/bzImage /boot/vmlinux-2.6.37-lfs-6.8

Файл System.map является файлом отображений символов ядра. В нем точки входа функций отображаются в API ядра, а для работающего ядра также отображаются адреса структур данных ядра. Файл используется при поиске проблем в ядре. Выполните следующую команду, чтобы установить файл отображения символов:

cp -v System.map /boot/System.map-2.6.37

Конфигурационный файл ядра .config созданный на шаге make menuconfig, приведенном выше, содержит все конфигурационные параметры для только что собранного ядра. Было бы хорошо сохранить этот файл для последующего к нему обращения:

cp -v .config /boot/config-2.6.37

Установите документацию ядра Linux:

install -d /usr/share/doc/linux-2.6.37
cp -r Documentation/* /usr/share/doc/linux-2.6.37

Важно отметить, что файлы в директории с исходными кодами ядра не принадлежат пользователю root. Независимо от того, распаковывался ли пакет пользователем root (в той роли, что мы используем в среде chroot) или нет, файлы будут иметь идентификаторы пользователя и группы, какие у них были на компьютере, где собирался пакет. Обычно при установке любого другого пакета, это не будет проблемой, поскольку сразу после установки дерево с исходными кодами удаляется. Однако, дерево исходных кодов Linux часто хранится в течение длительного времени. Так что есть шанс, что независимо от того, какой идентификатор использовался при сборке пакета, он может быть присвоен одному из пользователей компьютера. Тогда это лицо будет иметь доступ к исходным кодам ядра.

Если дерево исходных кодов ядра будет сохранено, запустите в директории linux-2.6.37 команду chown -R 0:0 с тем, чтобы обеспечить, что у всех файлов владельцем будет пользователь root.

Предупреждение

В документации к некоторым ядрам рекомендуется создавать в /usr/src/linux символическую ссылку, указывающую на директорий с исходным кодом ядра. Эта особенность характерна для версий, предшествующих серии 2.6, и ссылку не следует создавать в системе LFS, поскольку из-за нее могут возникнуть проблемы для пакетов, которые вы, возможно, захотите собрать уже после того, как завершите создание базовой системы LFS.

Предупреждение

Заголовки в системном директории include всегда должны быть именно теми, с которыми компилировался пакет Glibc, т. е. именно теми, что взяты из архива tar ядра Linux. Поэтому их никогда не следует заменять "сырыми" заголовочными файлам или заголовками, взятыми из другого ядра.

8.3.2. Конфигурирование порядка загрузки модулей Linux

Чтобы драйверы USB (ehci_hcd, ohci_hcd и uhci_hcd), если они собраны в виде модулей, загружались в правильном порядке, необходимо создать файл /etc/modprobe.d/usb.conf; модуль 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

8.3.3. Описание пакета Linux

Установленные файлы: config-2.6.37, vmlinux-2.6.37-lfs-6.8-2.6.37 и System.map-2.6.37

Установленные директории: /lib/modules, /usr/share/doc/linux-2.6.37

Краткое описание

config-2.6.37

Содержит все конфигурационные настройки ядра

vmlinux-2.6.37-lfs-6.8

Движок системы Linux. Когда компьютер включается, то первое, что загружается, это ядро операционной системы. Оно определяет и инициализирует все аппаратные компоненты компьютера, затем отображает все эти компоненты в виде дерева файлов, доступных для программного обеспечения, и превращает единственный имеющийся процессор в многозадачную машину, которая способна "одновременно" запускать множество программ.

System.map-2.6.37

Список адресов и символов; отображает точки входа и адреса всех функций и структур данных ядра


Предыдущий раздел: Оглавление Следующий раздел:
Создание файла /etc/fstab   Использование загрузчика GRUB для настройки процесса загрузки