Ожидаемое время сборки: 0.1 SBU
|
Ядро Linux - это основа любой Linux системы. Это то, что делает Linux собой. Когда компьютер включается и загружает систему Linux, самым первым загружается ядро. Ядро инициализирует аппаратные компоненты: последовательные и параллельные порты, звуковые карты, сетевые карты, контролеры IDE, контролеры SCSI и много чего еще. Собственно, ядро делает доступным аппаратные элементы cbcntvs и позволяет запускаться программам.
Устанавливаемые файлы: ядро и заголовки ядра
Linux зависит от: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.
На данном этапе мы не будем компилировать ядро -- мы сделаем это после установки всех пакетов. Однако, в связи с тем, что некоторые пакеты требуют заголовочных файлов ядра, мы распакуем ядро, настроим его и скопируем заголовки туда, где их будут искать пакеты при компиляции.
Важно отметить. что файлы в директории с исходниками ядра не являются файлами с владельцем root. Когда вы распакуете пакет как пользователь root (как это происходит здесь, в среде chroot), конечные файлы будут иметь ID владельца и группы как на компьютере, где создавался пакет. Это обычно не создает проблемы для любых других пакетов потому, что вы обычно удаляете директорию с исходниками после установки. Но директории с исходниками ядра Linux будут еще нужны очень долго, и может получиться, что какой-либо пользователь вашей системы получит доступ к исходникам ядра.
Чтобы исправить это, запустите команду chown -R 0:0 в директории linux-2.4.22 чтобы убедиться, что владельцем всех файлов оттуда будет root.
Подготовим заголовки к установке:
make mrproper
|
Это гарантирует нам, что дерево с исходниками ядра будет абсолютно "чистым". Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в чистоте дерева исходников ядра даже после распаковки.
Создадим файл include/linux/version.h:
make include/linux/version.h
|
Создадим платформо-зависимую ссылку include/asm:
make symlinks
|
Установим платформо-зависимые файлы заголовков:
cp -HR include/asm /usr/include
|
Установим кросс-платформенные файлы заголовков:
cp -R include/linux /usr/include
|
Некоторые из заголовков ядра используют файл заголовков autoconf.h. Поскольку мы пока не сконфигурировали ядро, нам надо создать этот файл для того, чтобы компиляция следующих пакетов не закончилась ошибкой. Создадим пустой файл autoconf.h:
touch /usr/include/linux/autoconf.h
|
Раньше было принято создавать символические ссылки директорий /usr/include/{linux,asm} на /usr/src/linux/include/{linux,asm}. Однако, это была плохая идея, как объясняет Линус Торвальдс в списке рассылки ядра Linux (Linux Kernel Mailing List, отрывок):
Тем, кто компилирует новые ядра, настоятельно рекомендую:
|
Наиболее важная часть сообщения Линуса заключается в том, что файлы заголовков должны быть именно теми, с которыми компилировался пакет glibc. Это те заголовки, которые следует использовать в будущем при компиляции других пакетов, т.к. именно они соответствуют файлам библиотек объектного кода. Копируя заголовки, мы удостоверяемся, что они останутся доступными, если позже мы решим обновить ядро.
Заметьте, что не страшно если исходники ядра находятся в /usr/src/linux, главное, чтобы у вас не было ссылок на /usr/include/{linux,asm}.