В ходе этой главы Вы обеспечите возможность загрузки LFS. Эта глава объяснит, как создать новый файл fstab, собрать новое ядро для системы LFS и установить загрузчик Grub так, чтобы можно было выбрать загрузку LFS.
Файл /etc/fstab используется рядом программ для определения того, какие разделы будут смонтированы по умолчанию, какие файловые системы должны быть проверены и т.д. Создайте новую таблицу файловых системм как здесь:
cat > /etc/fstab << "EOF" # Begin /etc/fstab # filesystem mount-point fs-type options dump fsck-order /dev/xxx / fff defaults 1 1 /dev/yyy swap swap pri=1 0 0 proc /proc proc defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 shm /dev/shm tmpfs defaults 0 0 # End /etc/fstab EOF
Само собой, замените xxx, yyy и fff на значения, соответствующие Вашей системе, к примеру, на hda2, hda5 и reiserfs. За более полной информацией обратитесь к man 5 fstab.
При использовании раздела reiserfs, 1 1 в конце строк надо будет заменить на 0 0, поскольку этой файловой системе не нужны дампы или проверки.
Точка монтирования /dev/shm для tmpfs включена для возможности использования POSIX shared memory. Ваше ядро должно быть собрано с поддержкой этой системы, более подробно об этом смотрите в следующем разделе. Имейте в виду, что небольшое количество аппаратного обеспечения использует POSIX shared memory. Поэтому надо знать, нужна ли Вам точка монтирования /dev/shm. Для получения более подробной информации смотрите файл Documentation/filesystems/tmpfs.txt в каталоге с исходными текстами ядра.
Также Вы можете добавлять другие строки в файл fstab. Вот пример строки, использующейся intend для поддержки USB-устройств:
usbfs /proc/bus/usb usbfs defaults 0 0
Эти параметры, конечно, будут работать только в случае, если Вы собрали ядро с поддержкой соответствующих систем.
Ожидаемое время сборки: При параметрах по умолчанию: 4.20 SBU Ожидаемое место на диске: При параметрах по умолчанию: 180 MB
Ядро Linux является основой любой системы Linux. Это и есть Linux. Когда компьютер включается и загружает Linux, первой из всех программ для Linux загружается ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. Если короче, то ядро делает доступным оборудование системы для запускаемых в дальнейшем программ и позволяет им запускаться.
Устанавливаемые файлы: ядро и его заголовки.
Linux зависит от Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.
Сборка ядра состоит из следующих этапов: конфигурирование, компиляция и установка. Если Вам не нравится способ установки, описанный в этой книге, то посмотрите файл README в каталоге с исходными текстами ядра на предмет поиска альтернативы.
Подготовьтесь к компиляции запуском следующей команды:
make mrproper
Это позволит убедиться, что дерево исходных текстов будет абсолютно чистым. Команда разработки ядра рекомендует запускать эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в отсутствии лишних файлов даже после распаковки архива.
Сконфигурируйте ядро с помощью меню:
make menuconfig
make oldconfig может быть более полезно в ряде случаев. Смотрите файл README для получения более полной информации.
Если Вы хотите, то можете пропустить конфигурирование ядра и просто скопировать файл .config из Вашей основной системы (если, конечно, она доступна) в распакованный каталог linux-2.4.22. Но я не рекомендую делать это. Намного лучше будет просмотреть все меню настроек ядра и создать его конфигурацию с нуля.
Для поддержки POSIX shared memory убедитесь, что параметр "Virtual memory file system support" выбран. Он расположен в меню "File systems" и обычно отмечен по умолчанию.
Проверьте зависимости и создайте информационный файл о них:
make CC=/opt/gcc-2.95.3/bin/gcc dep
Скомпилируйте образ ядра:
make CC=/opt/gcc-2.95.3/bin/gcc bzImage
Скомпилируйте драйверы, доступные в виде модулей:
make CC=/opt/gcc-2.95.3/bin/gcc modules
Если Ваш intend использует модули ядра, то Вам нужен файл /etc/modules.conf. Информацию относительно модулей и конфигурации ядра в целом можно найти в документации на ядро, которая находится в каталоге linux-2.4.22/Documentation. Man-страница по modules.conf и документ kernel HOWTO на http://www.tldp.org/HOWTO/Kernel-HOWTO.html также могут Вам пригодиться.
Установите модули:
make CC=/opt/gcc-2.95.3/bin/gcc modules_install
Создайте документацию по ядру:
make mandocs
Теперь установите ее:
cp -a Documentation/man /usr/share/man/man9
Компиляция ядра закончена, но ряд файлов есть только в каталоге с исходными текстами ядра. Для завершения установки надо скопировать два файла оттуда в каталог /boot.
Путь к файлам ядра зависит от типа используемой платформы. Используйте следующую команду для установки ядра:
cp arch/i386/boot/bzImage /boot/lfskernel
Файл System.map является файлом карты символов для ядра. Он содержит карту точек входа всех функций в API ядра. Используйте следующую команду для установки этого файла:
cp System.map /boot
Вы полностью установили новую систему LFS. Теперь надо обеспечить возможность ее загрузки. Следующие инструкции применимы только для компьютеров с архитектурой IA-32, то есть к большинству PC. Информация о загрузке системы на других архитектурах может отличаться и использовать другие ресурсы.
Загрузка может быть комплексной задачей. Для начала, несколько предостережений. Вы очень сильно зависите от текущего загрузчика, и любая операционая система на жестком диске (дисках) может перестать загружаться. Убедитесь в том, что у Вас есть резервная загрузочная дискета или диск, иначе рискуете получить нерабочий компьютер (точнее, незагружающийся, что вообще-то лишь немногим лучше).
Вы скомпилировали и установили загрузчик Grub именно для этого шага. Процедура включает запись определенных файлов Grub на специальное место на жестком диске. Перед тем как Вы сделаете это, я крайне рекомендую создать загрузочную дискету с Grub. Вставьте пустую дискету и запустите следующие команды:
dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1 dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1
Выньте дискету и сохраните ее где-нибудь в надежном месте. Теперь запустите команду grub:
grub
Grub использует свою структуру имен для дисков и разделов в форме (hdn,m), где n является номером жесткого диска, а m номером раздела, которые начинаются с нуля. Таким образом, раздел hda1 будет (hd0,0), а hdb2 называется (hd1,1) для Grub. В отличие от Linux, Grub не считает CD-ROM приводы за жесткие диски, так что если у Вас есть CD на hdb, к примеру, а второй жесткий диск на hdc, то второй жесткий диск будет называться (hd1).
Используя приведенную информацию, определите правильное название для Вашего корневого раздела. В нижеприведенных примерах будем считать, что он находится на hda4.
Для начала, скажите Grub, где ему искать файлы stage{1,2}: Вы можете использовать клавишу Tab, как и в обычной оболочке:
root (hd0,3)
Предупреждение! Нижеприведенные команды перезапишут текущий загрузчик. Не запускайте эти команды, если Вам этого не надо. К примеру, Вы можете использовать загрузку в несколько этапов путем манипуляций с MBR (Master Boot Record). В этом случае стоит установить Grub в загрузочный сектор раздела LFS, в нашем случае это делается командой setup (hd0,3).
Теперь дайте команду на установку загрузчика в MBR (Master Boot Record) на hda:
setup (hd0)
Если все в порядке, то Grub сообщит о том, что нашел файлы в /boot/grub. В этом случае все сделано. Завершите работу:
quit
Теперь надо создать файл меню, для загрузчика Grub:
cat > /boot/grub/menu.lst << "EOF" # Begin /boot/grub/menu.lst # By default boot the first menu entry. default 0 # Allow 30 seconds before booting the default. timeout 30 # Use prettier colors. color green/black light-green/black # The first entry is for LFS. title LFS 5.0 root (hd0,3) kernel /boot/lfskernel root=/dev/hda4 ro EOF
Вы можете захотеть добавить пункт для основной системы. Это делается примерно так:
cat >> /boot/grub/menu.lst << "EOF" title Red Hat root (hd0,2) kernel /boot/kernel-2.4.20 root=/dev/hda3 ro initrd /boot/initrd-2.4.20 EOF
Также, если у Вас есть Windows, следующая команда добавит пункт для ее загрузки:
cat >> /boot/grub/menu.lst << "EOF" title Windows rootnoverify (hd0,0) chainloader +1 EOF
Если info grub не даст исчерпывающей информации, стоит посетить страничку Grub по адресу: http://www.gnu.org/software/grub.