WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
В этой главе Вы плавно войдете в фазу сборки и начнете серьезно собирать
LFS-систему. Для этого войдите в среду chroot внутри мини-Linux-системы,
проделайте некоторые дополнительные работы и начните устанавливать
пакеты один за лругим. Установка всех этих пакетов весьма проста, и Вы можете подумать, что
достаточно было бы указать общее описание установки для всех пакетов, а
конкретезировать только если установка их отличается от стандартной. Несмотря
на то, что я согласен с этим утверждением, я решил дать полные инструкции по
установке каждого из пакетов просто для того, чтобы минимизировать
возможность возникновения ошибок. Если Вы решите использовать оптимизацию компилятора в этой главе, то стоит
посмотреть справку по оптимизации на
http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt.
Оптимизация компилятора может сделать программы быстрее, но могут возникнуть
сложности при компиляции и некоторые проблемы при работе этих программ. Если
пакет отказывается компилироваться при использовании оптимизации, попробуйте
скомпилировать пакет без нее, возможно, проблемы исчезнут. Если пакет
компилируется с использованием оптимизации, то есть возможность, что он
скомпилируется некорректно, например, могут появиться проблемы между
интерактивностью в коде и собранными средствами. В общем, использование
оптимизауии при сборке является рискованным. Новичкам в LFS рекомендуется
собирать систему без оптимизации. В Ваших силах сделать систему
быстрой и стабильной одновременно. Список пакетов, которые надо собрать, является строго последовательным,
надо убедиться, что в них не будет прописан путь к /tools. По
некоторым причинам, не стоит компилировать пакеты параллельно.
Параллельная сборка может показаться выгодной иногда (в особенности на
многопроцессорных системах), но в результате у программ появится
зависимость от средств из /tools, и они не смогут работать, когда
Вы удалите этто каталог. Большинство программ и библиотек по умолчанию компилируются с символами
отладки (с опцией -g для gcc). Когда отлаживается программа или библиотека, которая была собрана с
включением отладочной информации, то отладчик может передать Вам не только
адреса в памяти, но и имена всех переменных и функций. Но исключение отладочных символов существенно уменьшает размер программы
или библиотеки. Чтобы получить представление о том, сколько места занимает
отладочная информация, посмотрите следующее: Размер может немного варьироваться в зависимости от используемых
компилятора и библиотеки C. Но размер между программами и библиотеками,
собранными с отладочной информацией и без нее, может различаться в 2-5 раз.
Большинство людей никогда не используют отладчик, и довольно много места
на диске освободится при удалении отладочных символов. Для удаления отладочных символов из исполняемых модулей (которые должны
быть в форматах a.out или ELF), запустите strip --strip-debug filename
. Могут использоваться шаблоны для выбора нескольких файлов (например,
strip --strip-debug $LFS/tools/bin/*). Для Вашего удобства, глава 9 включает одну
простую команду для удаления всех отладочных символов из всех программ и
библиотек в системе. Дополнительную информацию по оптимизации
можно получить на
http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt.
Теперь пришло время войти в среду chroot для установки необходимых
пакетов. Перед тем, как войти в chroot, необходимо войти в систему как
root потому, что только root может
выполнить команду chroot. Убедитесь, что переменная окружения LFS установлена корректно запуском
echo $LFS, и проверьте, что она содержит путь к точке монтирования
раздела LFS, к примеру /mnt/lfs. Из-под привелегий root запустите следующую команду для
входа в среду chroot: Параметр -i, передаваемый команде env, очистит все
переменные окружения среды chroot. После этого Вы устанавливаете только
переменные HOME, TERM, PS1 и PATH. Конструкция TERM=$TERM означает, что
переменная окружения TERM внутри среды chroot примет то же значение, что и
вне среды. Эта переменная нужна таким программам как vim и
less для правильной работы. Если нужны другие переменные, такие
как CFLAGS или CXXFLAGS, то это хорошее место, чтобы задать их. С этого места уже не надо использовать переменную LFS, потому что каталог,
указанный в ней, стал корневым при входе в среду chroot. Вы указали /tools/bin последней в списке путей PATH. Благодаря
этому пакеты из этого каталога не будут использованы, если Вы уже установили
окончательную версию соответствующего пакета. Это действует в том случае,
когда shell не запоминает расположение исполняемых файлов, именно поэтому Вы
отключили эту функцию в предыдущей главе. Запомните, что все команды до конца этой главы и во всех последующих
выполняются из среды chroot. Если Вы покинули эту среду по любой причине
(например, после перезагоузки), то должны снова зайти в среду chroot и
смонтировать файловые системы proc и devpts (описываются позже)
перед продолжением установки. Заметьте, что bash выводит "I have no name!". Это нормально, поскольку
файл /etc/passwd пока еще не создан. На данный момент, права на каталог /tools принадлежат
пользователю lfs, пользователю, который существует только в
основной системе. Хотя Вы все равно удалите каталог /tools, когда
система будет собрана, Вы можете захотеть не делать этого, Например, для
построения другой системы LFS. Но если Вы хотите оставить каталог
/tools, то у нее будет владелец с определенным ID но без логина. Это
опасно потому, что впоследствии созданный пользовательский логин может
получить такой же ID и станет владельцем каталога /tools и всех
файлов внутри него, и использовать это в своих целях. Чтобы избежать этого, Вы можете добавить пользователя lfs в Вашу
новую LFS при создании файла /etc/passwd, и подправить его таким
образом, чтобы ID этого пользователя и группы были идентичны им же в
основной системе. Помимо этого, Вы можете (в этой книге так и делается)
связать содержимое каталога /tools с пользователем
root запуском команды: Команда использует "0:0" вместо "root:root" потому, что
chown не может использовать имя "root" до того, как будет
создан файл паролей. Теперь надо создать структуру файловой системы LFS. Создайте дерево
каталогов, используя следующие команды: По умолчанию, каталоги создаются с правами доступа 755, но это
правильно не для всех из них. Вы сделаете два изменения: одно для домашнего
каталога пользователя root, а другое для каталога, предназначенного
для временных файлов. Первой командой Вы запрещаете доступ в каталог /root для всех,
кроме владельца. То же самое надо будет потом сделать для домашних каталогов
остальных пользователей. Второй командой Вы позволяете всем пользователям
записывать и читать файлы в и из каталогов /tmp и /var/tmp,
но они не смогут удалять оттуда файлы других пользователей. Последнее
достигается установкой "sticky bit", старшего бита в битовой маске 1777. Вы создаете дерево каталогов совместимым со стандартом FHS (доступен на
http://www.pathname.com/fhs). За
исключением каталогов /usr/local/games и /usr/share/games,
поскольку они не нужны в минимальной системе. Тем не менее, можно сделать
Вашу систему FHS-совместимой. Поскольку структура подкаталогов
/usr/local/share не описана в стандарте FHS, то Вы создаете ее так,
как Вам надо. Для правильного функционирования основных программ файловые системы
proc и devpts должны быть доступны из среды chroot.
Файловые системы могут монтироваться несколько раз в различных точках, так
что то, что они будут смонтированы и на Вашей основной системе, не создаст
проблем. Особенно потому, что они являются виртуальными файловыми системами.
Файловая система proc является системой с информацией о
процессах, которая используется ядром для представления
информации о статусе системы. Файловая система proc монтируется в /proc запуском команды: Вы можете получить предупреждение от команды mount следующего вида: Проигнорируйте его, оно выводится только потому, что система еще не
полностью установлена и отсутствуют некоторые файлы. Команда mount все равно
прошла успешно и это все, о чем Вам следует беспокоится здесь. Файловая система devpts описывается проще, она обеспечивает
доступ к терминалам PTY. Файловая система devpts монтируется в /dev/pts командой: Если эта команда не прошла, то появится сообщение вида: Как правило, это означает, что ядро Вашей основной системы было
скомпилировано без поддержки файловой системы devpts. Вы можете проверить,
какие файловые системы поддерживаются ядром запуском команды
cat /proc/filesystems. Если файловая система с названием
devfs будет присутствовать в этом списке, то Вы можете пока работать
без проблем смонтировав основную файловую систему devfs в корне структуры
/dev, которую Вы создадите позднее в разделе "Создание устройств
(Makedev)". Если devfs нет в списке, то не беспокойтесь потому, что не
обязательно использовать именно такую работу с PTY в среде chroot. Вы
исправите это в последующем разделе Makedev. Запомните, если по любой причине Вы прекратили работу с LFS и решили
возобновить позже, важно убедиться, что эти системы будут смонтированы внутри
среды chroot, иначе могут возникнуть определенные проблемы. Некоторые программы имеют встроенные пути к программам, которые пока не
установлены. Чтобы обеспечить доступ к этим программам, создайте ссылки на
них, которые заменят пока реальные файлы до тех пор, пока их не установите.
Для возможности регистрации в качестве пользователя root и для
распознавания имени "root", необходимо создать соответствующие элементы в
файлах /etc/passwd и /etc/group. Создайте файл /etc/passwd запуском команды: Пароль пользователя root (символ "x" заменяет его здесь)
будет определен позднее. Создайте файл /etc/group запуском следующей команды: Созданные группы не являются частью какого-то стандарта, эти группы
используются скриптом MAKEDEV в следующей главе. Помимо группы "root", LSB
(http://www.linuxbase.org) рекомендует
устанавливать GID равный 1 для группы "bin". Все другие имена групп и их GID
могут свободно выбираться пользователем, но некоторые пакеты зависят от имени
группы, хотя и не зависят от номера GID. Наконец, Вы перезайдете в chroot. Имя пользователя и имя группы начнут
работать правильно после создания файлов /etc/passwd и
/etc/group потому, что Вы установили полную Glibc в главе 5. Это
должно убрать вывод сообщения "I have no name!". Замечание по использованию параметра +h. Это скажет
bash не использовать внутренний кэш путей. Без этого
bash будет запоминать пути к исполненным двоичным модулям.
Поскольку Вы собираетесь использовать вновь скомпилированные пакеты по мере
их установки, Вы должны отключить эту функцию в этой главе. Скрипт MAKEDEV создает статические записи для устройств, которые обычно
расположены в каталоге /dev. Детальную информацию об устройствах Вы
можете получить в файле Documentation/devices.txt в каталоге с
исходными кодами ядра. Устанавливаемый скрипт: MAKEDEV. Make зависит от Bash, Coreutils. Заметьте, что распаковка файла MAKEDEV-1.7.bz2 не создаст
каталога, и Вам не надо будет переходить в него с помощью cd, так
как этот файл содержит только сам скрипт. Установите скрипт MAKEDEV: Запустите полученный скрипт для создания файлов устройств: Описание аргументов: Если скрипт не выполниться из-за пропуска какого-либо специального
устройства zzz, попробуйте запустить ./MAKEDEV -v zzz.
Помимо этого, Вы можете создать устройства через программу mknod.
Пожалуйста, загляните на man или info-страницы этой программы для получения
более подробной информации. Помимо этого, если Вы не смонтировали файловую систему devpts в главе
"Монтирование файловых систем proc и devpts", сейчас самое время сделать
это. Если Ваше ядро поддерживает файловую систему devfs, запустите следующую
команду для монтирования devfs: Эта команда смонтирует файловую систему devfs внутри новой статической
структуры /dev. Это не создаст проблем, так как если уже были файлы
устройств, то они перекрылись новой файловой системой devfs. Если у Вас что-либо не сработало, то Вам надо запустить скрипт MAKEDEV
для создания файлов ptyXX и ttyXX, которые в противном случае Вам не нужны.
Убедитесь, что Вы находились в именно в каталоге /dev и запустите
./MAKEDEV -v pty. Последнее создаст более 512 специальных файлов
устройств, которые не понадобятся, когда Вы окончательно загрузите
законченую систему LFS. Ядро Linux является основой любой Linux-системы. Это то, что делает Linux
самой собой. Когда компьютер включается и загружает систему Linux, самым
первым загружается ядро. Ядро инициализирует аппаратные компоненты:
последовательные и параллельные порты, звуковые карты, сетевые карты,
контролеры IDE, контролеры SCSI и много чего еще. Собственно, ядро делает
доступным аппаратные элементы системы и позволяет запускаться программам. Устанавливаемые файлы: ядро и заголовки ядра. 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. Подготовьте заголовки к установке: Это гарантирует, что дерево с исходными текстами ядра будет абсолютно
чистым. Команда разработчиков ядра рекомендует выполнять эту команду перед
каждой компиляцией ядра. Вы не можете быть абсолютно уверены в
чистоте дерева даже после распаковки. Создайте файл include/linux/version.h: Создайте платформно-зависимую ссылку include/asm: Установите платформно-зависимые файлы заголовков: Установите кросс-платформенные файлы заголовков: Некоторые из заголовков ядра используют файл заголовков
autoconf.h. Поскольку Вы пока не сконфигурировали ядро, надо создать
этот файл для того, чтобы компиляция следующих пакетов не закончилась
ошибкой. Создайте пустой файл 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}. Пакет Man-pages содержит более 1200 страниц документации. Это детальная
информация по функциям C и C++, описание наиболее важных файлов устройств и
документация, которая обычно опущена в других пакетах. Устанавливаемые файлы: страницы документации. Man зависит от Bash, Coreutils, Make. Установите Man-pages запуском: Glibc является библиотекой C, которая обеспечивает системные вызовы и
основные функции, такие как open, malloc, printf и другие. Библиотека C
используется всеми динамически скомпонованными программами. Устанавливаемые программы: catchsegv, gencat, getconf, getent,
glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef,
mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln,
sprof, tzselect, xtrace, zdump и zic. Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so],
libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so],
libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a,
libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so,
libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so,
libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so],
librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so]. Glibc зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext,
Grep, Make, Perl, Sed и Texinfo. Система сборки Glibc является весьма самодостаточной и должна установится
корректно, если Ваши компоновщик и spec-файл находятся в /tools. Вы
не можете установить spec и компоновщик перед установкой Glibc потому, что
тест автоконфинурации Glibc даст фиктивные результаты, а от этого
зависит чистота сборки. Замечание: Тестирование Glibc в этой главе является
критичным. Ни в коем случае нельзя его пропускать. Перед началом сборки Glibc не забудьте снова распаковать архив
Glibc-linuxthreads в каталоге glibc-2.3.2 и отключить переменные
окружения, отвечающие за параметры оптимизации. На стадии установки Glibc выдает ошибку при отсутствии файла
/etc/ld.so.conf. Исправьте это командой: Примените ранее использовавшийся патч: Документация по Glibc рекомендует собирать Glibc вне каталога с исходными
текстами в отдельном каталоге для сборки: Теперь подготовим Glibc к компиляции: Описание параметров конфигурации: Скомпилируйте пакет: Протестируйте результаты: Тестирование, описанное в части
"Установка Glibc-2.3.2" главы 5,
будет очень уместно здесь. Убедитесь перед продолжением установки,
что все в порядке. Теперь установите пакет: Локали позволят Вашей системе работать на разных языках. Их установка не
обеспечивается предыдущей командой, надо сделать это с помощью: Альтернативой запуску предыдущей команды будет установка только
необходимых локалей. Это обеспечивается запуском команды
localedef. Информацию о ней можно получить из файла
INSTALL из каталога glibc-2.3.2. Тем не
менее, есть ряд локалей, которые необходимы для успешного прохождения
некоторых тестов других пакетов. Следующие инструкции установят минимально
необходимый набор локалей: Наконец, соберите man-страницы для linuxthreads: Теперь установите их: Вам нужно создать файл /etc/nsswitch.conf потому, что по
умолчанию Glibc не создает этот файл, а без него Glibc не работает с сетью.
Также это надо для работы с Вашей временной зоной. Создайте новый файл /etc/nsswitch.conf запуском следующих команд:
Для определения Вашей временной зоны, запустите скрипт: Когда ответите на некоторые вопросы о Вашем местонахождении, скрипт выдаст
Вашу временную зону. Что-то наподобие EST5EDT или
Canada/Eastern. Создайте файл /etc/localtime запуском: Описание параметров: Само собой, надо заменить Canada/Eastern на Вашу временную зону,
которую определили с помощью скрипта tzselect. По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет
динамические библиотеки, необходимые для программ, в /lib и
/usr/lib. Таким образом, если есть каталоги с библиотеками, отличные
от /lib и /usr/lib, надо указать их в файле
/etc/ld.so.conf. Два наиболее распространенные каталога с
дополнительными библиотеками находятся в /usr/local/lib и в
/opt/lib, и Вы добавите их в путь поиска динамического компоновщика.
Создайте новый файл /etc/ld.so.conf запуском команды: Теперь, когда Вы установили новую библиотку C, пришло время переустановить
все остальные средства. Это надо для того, чтобы вновь скомпилированые
программы использовали именно новую библиотеку C. Если говорить проще, то то,
что Вы сейчас сделаете, это реверсия того, что Вы делали на этапе
интеграции в прошлой главе. Первым делом отрегулируйте компоновщик. Для этого вернитесь к каталогам с
исходными текстами и сборкой из второго шага установки Binutils. Установите
отрегулированый компоновщик запуском следующей команды из
каталога binutils-build: Замечание: Если Вы пропустили предупреждение о
нежелательности удаления каталогов с исходными текстами и сборкой Binutils из
второго шага их установки в главе 5 или по другим причинам удалили их, или у
Вас нет доступа к ним, не беспокойтесь, пока еще не все потеряно. Просто
проигнорируйте вышеприведенную команду. В результате следующий пакет,
Binutils, будет скомпонован с использованием библиотек Glibc из
/tools вместо /usr. Это не идеально, но тестирование
показывает что в обоих случаях двоичный код Binutils будет идентичным. С этого момента все компилируемые программы будут собираться
только с использованием библиотек из /usr/lib и
/lib. Параметр INSTALL=/tools/bin/install необходим
потому, что Makefile, созданый на втором шаге, содержит ссылки на
/usr/bin/install, который пока что еще не установлен. Некоторые
дистрибутивы содержат ссылку ginstall которая имеет первенство в
Makefile, и это может создать здесь проблему. Вышеуказанная команда также
решает и эту проблему. Теперь Вы можете удалить оба каталога Binutils. Теперь необходимо исправить точки в spec-файлах GCC, которые указывают на
динамический компоновщик, так, чтобы они указывали на новый компоновщик.
Самым простым будет следующее: Желательно просто скопировать и вставить эту команду. После этого также
неплохо было бы проверить spec-файлы, чтобы убедиться в сделаных изменениях.
Важно: Если Вы работаете на платформах, на которых имя
динамического компоновщика отличается от ld-linux.so.2, Вы
должны заменить ld-linux.so.2 на имя компоновщика для
Вашей платформы в вишеуказанной команде. Вернитесь к части
"Технические моменты" в
главе 5, если у Вас возникли вопросы. Внимание! На этом месте необходимо остановиться и убедиться, что
основные функции (компиляция и компоновка) новых средств работают корректно.
Для этого есть простой тест: Если все в порядке, то не будет ошибок, и на выводе Вы увидите: Если эта надпись вообще не появилась или появилась другая, то что-то
сильно не так. Вам надо исследовать и повторить все пройденные шаги, чтобы
найти, в чем проблема и устранить ее. Точки для возврата после этого места
уже не будет. Как правило, что-то не так бывает с вышеописаной правкой
spec-файла. Убедитесь, что /lib содержит префикс динамического
компоновщика. Само собой, если Вы работаете на платформе с названием
динамического компоновщика, отличным от ld-linux.so.2, вывод
будет несколько иным. Если все прошло нормально, удалите все тестовые файлы: Binutils является набором средств разработки, содержащим компоновщик,
ассемблер и другие средства для работы с объектными файлами и архивами. Устанавливаемые программы: addr2line, ar, as, c++filt, gprof, ld,
nm, objcopy, objdump, ranlib, readelf, size, strings и strip. Устанавливаемые библиотеки: libiberty.a, libbfd.[a,so] и
libopcodes.[a,so]. Binutils зависит от: Bash, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make, Perl, Sed, Texinfo. Сейчас необходимо проверить правильность работы терминалов (PTY) в среде
chroot. Мы проверим что все в порядке простым тестом: Если Вы получили сообщение вида: То Ваша среда chroot не может оперировать PTY. В этом случае не стоит
запускать тестирование для Binutils и GCC до того, как Вы исправите это.
Пожалуйста. вернитесь к частям
"Монтирование файловых систем proc и devpts" и
"Создание устройств (Makedev-1.7)"
и выполните необходимые действия по устранению проблемы. Замечание: Тестирование Binutils здесь является
критичным. Ни в коем случае не пропускайте его! Этот пакет известен своим нестабильным поведением при компиляции с
измененными опциями оптимизации (включая опции -march и -mcpu). Binutils
рекомендуется компилировать с настройками по умолчанию. Следовательно, если
Вы задали переменные такие, как CFLAGS или CXXFLAGS, изменяющие уровень
оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Binutils.
Изменяя оптимизации для binutils, Вы действуете на свой страх и риск. Документация по Binutils рекомендует собирать Binutils вне каталога с
исходными текстами в отдельном каталоге, выделенном для сборки: Теперь подготовьте Binutils к компиляции: Скомпилируйте весь пакет: Обычно каталог со средствами (каталог, где располагаются
исполняемые файлы) устанавливается в $(exec_prefix)/$(target_alias), куда они
и располагаются, например, /usr/i686-pc-linux-gnu. Когда мы собираем
средства только для своей системы, мы не нуждаемся в этом, достаточно
установить только /usr. Такая установка нужна только в случае
использования cross-компиляции (к примеру, компилируем пакет на машине
Intel, но нужен код для работы на платформе PowerPC). Проверьте результаты компиляции: Тестирование, описанное в части
"Установка Binutils-2.14: Шаг 2
" главы 5 является весьма уместным здесь. Убедитесь, что все в
порядке перед продолжением установки. Теперь установите пакет: Установите заголовки libiberty, которые нужны
для некоторых пакетов: Пакет GCC сдержит коллекцию компиляторов GNU, включая компиляторы C и C++.
Устанавливаемые программы: c++, cc (ссылка на gcc), cc1, cc1plus,
collect2, cpp, g++, gcc, gccbug и gcov. Устанавливаемые библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so,
libstdc++.[a,so] и libsupc++.a. GCC зависит от Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk,
Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo. Замечание: Тестирование GCC в этой главе является
критичным. Ни в коем случае не пропускайте его. Этот пакет известен своим нестабильным поведением при компиляции с
измененными опциями оптимизации (включая опции -march и -mcpu). GCC
рекомендуется компилировать с настройками по умолчанию. Следовательно, если
Вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень
оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC.
Изменяя оптимизацию для GCC, Вы действуете на свой страх и риск. Сейчас Вы собираетесь установить компиляторы языков C и C++, таким образом
Вам надо распаковать архивы GCC-core и GCC-g++: они распакуются в
один и тот же каталог. Вы можете также распаковать пакет GCC-testsuite.
Полный пакет GCC содержит намного больше компиляторов. Инструкции по их
установке Вы можете найти на
http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html.
Сначала наложите патчи:
Второй патч отключает установку libiberty из GCC, которые Вы установили
вместе с binutils. Будьте внимательны, не применяйте патч GCC specs
из главы 5 здесь! Документация на GCC рекомендует собирать GCC вне каталога с исходными
текстами, в отдельном каталоге для сборки: Теперь подготовьте GCC к компиляции: Скомпилируйте пакет: Протестируйте результаты, но не останавливайтесь при ошибках (Вы
должны просто запомнить их): Тестирование из части "Установка
GCC-3.3.1: Шаг 2" главы 5 является весьма желательным здесь.
Убедитесь, что все в порядке перед продолжением установки. Теперь установите пакет: Некоторые пакеты рассчитывают, что C PreProcessor будет установлен в
каталоге /lib. Для удовлетворения нужд этих пакетов, создайте ссылку:
Многие пакеты используют имя cc для вызова компилятора C. Для
этих пакетов тоже создайте ссылку: Замечание: В этом месте рекомендуется повторить тест из
части "Переустановка
средств". Если тест не прошел, то, скорее всего, Вы применили-таки
патч GCC Specs из главы 5. Пакет Coreutils содержит ряд основных утилит для shell. Устанавливаемые программы: basename, cat, chgrp, chmod, chown,
chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname,
du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid,
hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir,
mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv,
printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort,
split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true,
tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc,
who, whoami и yes. Coreutils зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make, Perl, Sed. Нормальное функционирование uname иногда нарушается, тогда
параметр -p всегда возвращает "unknown". Следующий патч исправляет
это для архитектуры Intel: Я не хочу использовать Coreutils для установки программы
hostname потому, что более новая версия содержится в Net-tools.
Отключим эту установку патчем: Теперь подготовим Coreutils к компиляции: Скомпилируем пакет: Программа su из Coreutils не была установлена в главе 5 потому,
что ей нужны привелегии root. Я собираюсь установить ее, поскольку
она нужна для тестирования. Установите ее командой: Этот пакет поддерживает тестирование для определения корректности сборки.
Тем не менее, этот специфический тест использует непревилигированных
пользователей и группы, которые пока не определены в простой системе. Поэтому
создадим фиктивного пользователя и две фиктивных группы для корректной работы
тестов. Если Вы не хотите запускать тестирование, то переходите к установке
пакета. Следующие команды подготовят систему к тестированию. Создайте
фиктивных пользователя и группы: Следующий тест проверит запуск от имени root: Следующий тест проверит запуск от имени фиктивного пользователя: Удалите фиктивные группы и пользователя: Установите готовый пакет: Переместите некоторые программы в правильное место: Наконец, создайте необходимые ссылки: Пакет Zlib содержит библиотеку libz, которая используется некоторыми
программами для функций сжатия и распаковки. Устанавливаемые библиотеки: libz[a,so]. Zlib зависит от Binutils, Coreutils, GCC, Glibc, Make и Sed. Zlib имеет потенциальную опасность переполнения буфера в функции
gzprintf(), которая, для предохранения от использования этой
возможности взлома, исправляется наложением следующего патча: Теперь подготовьте Zlib к компиляции: Замечание: Zlib известна некорректной сборкой shared-библиотеки при
указанной переменной окружения CFLAGS. Если Вы используете эту переменную,
добавите директиву -fPIC на этом этапе и удалите
ее по окончании. Скомпилируйте пакет: Установите shared-библиотеку: Теперь установите остальные библиотеки: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, выполните команду: Теперь установите пакет: Shared-библиотека Zlib устанавливается в каталог /lib. Таким
образо, если Вы хотите загрузиться без каталога /usr, жизненно
важные системные программы не получат доступа к библиотеке: Ссылка /usr/lib/libz.so указывает на несуществующий файл потому,
что Вы только что его переместили. Создайте ссылку на новое
расположение этой библиотеки: Zlib не устанавливает свою man-страницу. Используйте следующую команду
для установки этой документации: Пакет Lfs-Utils содержит разные программы, используемые другими пакетами,
но которые не доступны в виде отдельных пакетов либо в составе каких
либо из них. Устанавливаемые программы: mktemp, tempfile, http-get и iana-net.
Устанавливаемые файлы: protocols, services. Пока не проверены. Скомпилируйте пакет: Теперь установите его: Теперь скопируйте два файла из архива Lfs-Utils на свое место: Файл /etc/services используется для представления номеров
сервисов в читабельном виде, а файл /etc/protocols используется для
того же, но применительно к протоколам. Пакет Findutils содержит программы для поиска файлов, как "на лету"
(для рекурсивного поиска в каталогах и вывода только файлов, удовлетворяющих
шаблону), так и для поиска по базе данных. Устанавливаемые программы: bigram, code, find,
frcode, locate, updatedb и xargs. Findutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make и Sed. Подготовьте Findutils к компиляции: По умолчанию, база данных для updatedb расположена в /usr/var.
Для размещения ее в /var/lib/misc/locatedb для совместимости с
FHS, добавьте опцию
--localstatedir=/var/lib/misc к команде configure. Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Gawk является свободным вариантом языка awk, который используется для
манипуляций с текстовыми данными. Устанавливаемые программы: awk (ссылка на gawk), gawk,
gawk-3.1.3, grcat, igawk, pgawk, pgawk-3.1.3 и pwcat. Gawk зависит от Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Sed. Сначала примените патч по следующим причинам: Теперь подготовьте Gawk к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Пакет Ncurses содержит библиотеки для тектового и консольного интерфейса,
включая панели и меню. Устанавливаемые программы: captoinfo (ссылка на tic), clear,
infocmp, infotocap (ссылка на tic), reset (ссылка на tset), tack, tic,
toe, tput и tset. Устанавливаемые библиотеки: libcurses.[a,so] (ссылка на
libncurses.[a,so]), libform.[a,so], libmenu.[a,so], libncurses++.a,
libncurses.[a,so] и libpanel.[a,so]. Ncurses зависит от Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Grep, Make и Sed. Для начала исправьте две проблемы: Первый патч откорректирует файл заголовков etip.h, а второй
патч устранит проблемы при компиляции конфликтующих заголовков. Теперь подготовьте Ncurses к компиляции: Скомпилируйте пакет: Установите пакет: Установите права на исполнение библиотекам Ncurses: Теперь отметьте библиотеки, которые не должны выполняться: Переместите библиотеки в каталог /lib, где они должны быть: Поскольку библиотеки были перемещены в /lib, некоторые ссылки
теперь указывают на несуществующие файлы. Исправьте их: Если Вы предпочитаете другие редакторы, такие как Emacs, Joe или Nano,
вместо Vim, загляните на
http://www.linuxfromscratch.org/blfs/view/stable/postlfs/editors.html
для получения инструкций по установке. Пакет Vim содержит конфигурируемый текстовый редактор для
эффективного редактирования текста. Устанавливаемые программы: efm_filter.pl, efm_perl.pl, ex (ссылка
на vim), less.sh, mve.awk, pltags.pl, ref, rview (ссылка на vim), rvim
(ссылка на vim), shtags.pl, tcltags, vi (ссылка на vim), view (ссылка на
vim), vim, vim132, vim2html.pl, vimdiff (ссылка на vim), vimm,
vimspell.sh, vimtutor и xxd. Vim зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc,
Grep, Make, Ncurses и Sed. Измените расположение по умолчанию файлов vimrc и
gvimrc на /etc. Теперь подготовьте Vim к компиляции: Скомпилируйте пакет: Теперь установите его: Vim может быть запущен в "старом" режиме vi созданием ссылки,
которая создается командой: Если Вы собираетесь устанавливать систему X Window на Вашей системе LFS,
надо будет перекомпилировать Vim после установки X. Vim содержит хорошую
GUI-версию редактора, который использует X и некоторые другие библиотеки при
установке. Для более подробной информации прочитайте документацию по Vim. По умолчанию vim запускается в режиме совместимости с vi. Некоторым это
нравится, но Вы получите больше преимуществ при запуске vim в режиме vim
(иначе бы я не включил vim в эту книгу, а обошелся бы оригинальным vi).
Создайте /root/.vimrc запуском команды: M4 является макропроцессором. Он копирует ввод в вывод, используя макросы.
Макросы могут быть как встроеными, так и пользовательскими и могут иметь
несколько аргументов. Помимо макропреобразований, m4 имеет встроенные функции
для включения именованных файлов, запуска команд Unix, целочисленной
арифметики, разносторонних манипуляциями с текстом, рекурсию и др. Программа
m4 может использоваться в качестве обработчика для компиляторов или как
макропроцессор на Ваше усмотрение. Устанавливаемые программы: m4. M4 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc,
Grep, Make, Perl и Sed. Подготовьте M4 к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Bison является генератором синтаксических анализаторов, заменой для yacc.
Генерирует программу, которая анализирует структуру текстового файла. Устанавливаемые программы: bison и yacc Устанавливаемые библиотеки: liby.a Bison зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, M4, Make, Sed. Первым делом наложите патч на bison, скачаный с CVS, который исправит
проблемы компиляции с некоторыми пакетами: Подготовим Bison к компиляции: Скомпилируем этот пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, то запустите команду
(это займет много времени): Теперь установите пакет: Less является просмотрщиком файлов или текста. Он отображает содержимое
файла или потока и позволяет его прокрутку. Less имеет некоторые возможности,
которые не включены в просмотрщик more, например,
позволяет прокрутку назад. Устанавливаемые программы: less, lessecho и lesskey. Less зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep,
Make, Ncurses и Sed. Подготовьте Less к компиляции: Описание опций конфигурации: Скомпилируйте пакет: Теперь установите его: Пакет Groff содержит некоторые программы для форматирования текста. Groff
транслирует стандартный текст и специальные команды в форматированый вывод,
так Вы, например, просматриваете все man-страницы. Устанавливаемые программы: addftinfo, afmtodit, eqn, eqn2graph,
geqn (ссылка на eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4,
grops, grotty, gtbl (ссылка на tbl), hpftodit, indxbib, lkbib, lookbib,
mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml,
refer, soelim, tbl, tfmtodit, troff и zsoelim (ссылка на soelim). Groff зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc,
Grep, Make и Sed. Groff использует переменную окружения PAGE для определения размеров бумаги
по умолчанию. При использовании в США, нижеприведенная команда корректна. Но
в России Вам, видимо, надо будет поменять
PAGE=letter на PAGE=A4. Подготовьте Groff к компиляции: Скомпилируйте пакет: Теперь установите его: Некоторые программы документации, например, xman, не работают
правильно без следующих ссылок: Sed является редактором потоков. Редактор потоков используется для простых
трансформаций текста во входном потоке (файл или ввод из командной строки).
Устанавливаемые программы: sed Sed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make, Texinfo. Подготовьте Sed к компиляции: Скомпилируйте весь пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Установите готовый пакет:
Пакет Flex используется для генерации программ, которые могут
обрабатывать шаблоны в тексте. Устанавливаемые программы: flex, flex++ (ссылка на flex) и lex.
Устанавливаемые библиотеки: libfl.a. Flex зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, M4, Make и Sed. Подготовьте Flex к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Некоторые пакеты ищут библиотеку Lex в /usr/lib. Создайте
необходимую им ссылку: Некоторые программы не знают о flex и используют его предыдущий
вариант lex. Для поддержки таких программ создайте shell-скрипт
lex, который будет вызывать flex в режиме эмуляции Lex:
Пакет Gettext используется для интернационализации и локализации.
Программы могут быть скомпилированы с поддержкой родного языка (Native
Language Support, NLS) для получения возможности вывода сообщений
на языке пользователя. Устанавливаемые программы: autopoint, config.charset,
config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp,
msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit,
msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger,
urlget, user-email и xgettext. Устанавливаемые библиотеки: libasprintf[a,so],
libgettextlib[a,so], libgettextpo[a,so] и libgettextsrc[a,so]. Gettext зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC,
Glibc, Grep, Make и Sed. Подготовьте Gettext к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Тем не менее,
тестирование Gettext в этой главе может не пройти успешно из-за зависимостей
от основной системы, к примеру, если будет найден компилятор Java.
Тестирование Gettext занимает много времени и не является критичным. Поэтому
я не рекомендую запускать его здесь. Если же Вы все-таки захотите
использовать его, выполните команду: Теперь установите пакет: Пакет Net-tools содержит набор программ для обеспечения основы
поддержки сети в Linux. Устанавливаемые программы: arp, dnsdomainname (ссылка на
hostname), domainname (ссылка на hostname), hostname, ifconfig, nameif,
netstat, nisdomainname (ссылка на hostname), plipconfig, rarp, route,
slattach и ypdomainname (ссылка на hostname). Net-tools зависит от Bash, Binutils, Coreutils, GCC, Glibc и Make. Если Вы не знаете, как ответить на задаваемые командой
make config вопросы, то просто соглашайтесь со всем. Этого будет
достаточно в большинстве случаев. Вас спросят только о том, какие сетевые
протоколы Вы выберете в ядре. Ответы по умолчанию достаточны для нормальной
работы программ из этого пакета с наиболее распространенными протоколами:
TCP, PPP и рядом других. Вам еще надо будет выбрать поддержку этих протоколов
при сборке ядра: то, что Вы здесь сделаете просто позволит программам
использовать выбранные протоколы, но только включение в ядро сделает их
доступными для системы. Для начала исправьте синтаксическую ошибку в исходных текстах
программы mii-tool: Теперь подготовьте Net-tools к компиляции: Если Вы собираетесь собирать этот пакет с установками по умолчанию, то Вы
можете избавится от необходимости отвечать на каждый вопрос запуском вместо
make config команды yes "" | make config. Скомпилируйте пакет: Теперь установите его: Пакет Inetutils содержит ряд сетевых клиентов и серверов. Устанавливаемые программы: ftp, ping, rcp, rlogin, rsh,
talk, telnet и tftp Inetutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc,
Grep, Make, Ncurses и Sed. Подготовим Inetutils к компиляции: Описание параметров конфигурации: Скомпилируйте пакет: Установите его: Переместите программу ping на ее место: Пакет Perl содержит perl (Practical Extraction and Report Language). Perl
совмещает в себе некоторые лучшие элементы от C, sed, awk и sh в
одном мощном языке. Устанавливаемые программы: a2p, c2ph, dprofpp, enc2xs, find2perl,
h2ph, h2xs, libnetcfg, perl, perl5.8.0 (ссылка на perl), perlbug, perlcc,
perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man, pod2text,
pod2usage, podchecker, podselect, psed (ссылка на s2p), pstruct (ссылка на
c2ph), s2p, splain и xsubpp. Perl зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc,
Grep, Make, Sed. Подготовьте Perl к компиляции: Если Вы хотите контролировать процесс настроек опций сборки Perlt, можете
запустить интерактивный скрипт Configure и указывать опции сборки
Perl. Если хотите оставить настройки (разумные) Perl, которые определяются
автоматически по умолчанию, то просто запустите команду, приведенную выше. Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, то сначала создайте простой файл
/etc/hosts, необходимый для тестов, использующих
сетевое имя localhost: Теперь, если хотите, запустите тест: Теперь установите пакет: Пакет Texinfo содержит программы, используемые для чтения, записи и
преобразования документов Info, которые содержат системную документацию. Устанавливаемые программы: info, infokey, install-info,
makeinfo, texi2dvi и texindex. Texinfo зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make, Ncurses и Sed. Подготовим Texinfo к компиляции: Скомпилируем пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, то запустите: Установим пакет: Дополнительно установите компоненты входящие в установку TeX: Описание параметров сборки: Autoconf создает скрипты, которые автоматически конфигурируют исходный код.
Устанавливаемые программы: autoconf, autoheader, autom4te,
autoreconf, autoscan, autoupdate и ifnames. Autoconf зависит от Bash, Coreutils, Diffutils, Grep, M4, Make, Perl и Sed.
Подготовьте Autoconf к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы
хотите использовать эту возможность, то запустите команду: Теперь установите пакет: Automake генерирует файлы Makefile.in, которые впоследствии
должен использовать Autoconf. Устанавливаемые программы: acinstall, aclocal, aclocal-1.7,
automake, automake-1.7, compile, config.guess, config.sub, depcomp,
elisp-comp, install-sh, mdate-sh, missing,
mkinstalldirs, py-compile, ylwrap. Automake зависит от Autoconf, Bash, Coreutils, Diffutils, Grep, M4,
Make, Perl и Sed. Подготовьте Automake к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Установите пакет: Теперь создайте необходимые ссылки: Bash (Bourne-Again SHell) обычно используется как интерпретатор команд в
Unix-системах. Программа bash считывает данные со стандартного ввода
(клавиатуры, к примеру). Пользователь вводит что-либо, и программа
определяет, что именно пользователь ввел, и что ей с этим делать, например,
запустить другую программу. Устанавливаемые программы: bash, sh (ссылка на bash) и bashbug.
Bash зависит от Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc,
Grep, Make, Ncurses и Sed. Bash содержит несколько известных ошибок. Исправьте их, применив патч: Теперь подготовьте Bash к компиляции: Скомпилируйте программу: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, выполните команду: Теперь установите пакет и документацию: Теперь создайте ссылку для программ, которые используют
sh в качестве системной оболочки: File является утилитой для определения типа файла. Устанавливаемая программа: file. Устанавливаемая библиотека: libmagic.[a,so]. File зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc,
Grep, Make, Sed и Zlib. Подготовьте File к компиляции: Скомпилируйте пакет: Теперь установите его: GNU libtool является общей библиотекой поддержки скриптов. Libtool
скрывает сложность использования системных библиотек обеспечивая
совместимый, портируемый интерфейс. Устанавливаемые программы: libtool и libtoolize. Устанавливаемые библиотеки: libltdl.[a,so]. Libtool зависит от Bash, Binutils, Coreutils, Diffutils, GCC,
Glibc, Grep, Make и Sed. Подготовьте Libtool к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Bzip2 является блочно-сортирующим компрессором файлов, который генерирует
архивы с лучшей степенью сжатия, чем традиционный gzip. Устанавливаемые программы: bunzip2 (ссылка на bzip2), bzcat
(ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2,
bzip2recover, bzless и bzmore. Устанавливаемые библиотеки: libbz2.a, libbz2.so (ссылка на
libbz2.so.1.0), libbz2.so.1.0 (ссылка на libbz2.so.1.0.2) и libbz2.so.1.0.2.
Bzip2 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Make.
Подготовьте Bzip2 к компиляции: Флаг -f нужен Bzip2 для использования при сборке файла, отличного
от Makefile, в Вашем случае это будет Makefile-libbz2_so,
который создает динамическую библиотеку libbz2.so и подключает
ее к утилитам Bzip2. Скомпилируйте пакет и установите его: Установите библиотеку bzip2 в каталог /bin, затем
создайте необходимые ссылки и удалите старые: Программы из этого пакета покажут различия между двумя (или тремя) файлами
или каталогами. Как правило, они используются для
создания патчей к программам. Устанавливаемые программы: cmp, diff, diff3 и sdiff. Diffutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make и Sed. Подготовьте Diffutils к компиляции: Скомпилируйте пакет: Теперь установите его: GNU ed является 8-ми битовым, POSIX-совместимым редактором строк. Устанавливаемые программы: ed и red (ссылка на ed). Ed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc,
Grep, Make и Sed. Замечание: Ed не является чем-то, что многие
используют. Он устанавливается здесь потому, что он используется программой
patch, если Вы применяете ed-файл патча. Это случается довольно редко,
сейчас, в основном, используются diff-патчи. Ed использует функцию mktemp для создания временных файлов в каталоге
/tmp, но эта функция содержит уязвимость (смотрите раздел
"Временные файлы" на
http://en.tldp.org/HOWTO/Secure-Programs-HOWTO/avoid-race.html).
Следующий патч позволяет Ed использовать замену mkstemp, что является
рекомендованным для создания временных файлов. Примените этот патч: Теперь подготовьте Ed к компиляции: Скомпилируйте весь пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Установите готовый пакет: Теперь переместите программы в каталог /bin, для возможности
использования программы при недоступном разделе /usr: Kbd содержит файлы раскладки клавиатуры и утилиты для нее. Устанавливаемые программы: chvt, deallocvt, dumpkeys, fgconsole,
getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn,
openvt, psfaddtable (ссылка на psfxtable), psfgettable (ссылка на psfxtable),
psfstriptable (ссылка на psfxtable), psfxtable, resizecons, setfont,
setkeycodes, setleds, setlogcons, setmetamode, setvesablank, showconsolefont,
showkey, unicode_start и unicode_stop. Kbd зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, GCC,
Gettext, Glibc, Grep, Gzip, M4, Make и Sed. По умолчанию некоторые утилиты Kbd (setlogcons,
setvesablank и getunimap) не устанавливаются. Для
начала выберите установку этих утилит: Теперь подготовьте Kbd к компиляции: Скомпилируйте пакет: Теперь установите его: E2fsprogs содержит ряд системных утилит для использования их с файловой
системой ext2. Они также поддерживают новую файловую систему
ext3 с поддержкой журналирования. Устанавливаемые программы: badblocks, blkid, chattr, compile_et,
debugfs, dumpe2fs, e2fsck, e2image, e2label, findfs, fsck, fsck.ext2,
fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3,
mklost+found, resize2fs, tune2fs и uuidgen. Устанавливаемые библиотеки: libblkid.[a,so], libcom_err.[a,so],
libe2p.[a,so], libext2fs.[a,so], libss.[a,so] и libuuid.[a,so]. E2fsprogs зависит от Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Gettext, Glibc, Grep, Make, Sed, Texinfo. Рекомендуется собирать E2fsprogs вне каталога с исходными текстами: Подготовьте E2fsprogs к компиляции: Описание параметров конфигурации: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Установите основную часть пакета: Также установите разделяемую библиотеку: Grep является программой для печати строк, совпадающих с заданным шаблоном.
Устанавливаемые программы: egrep (ссылка на grep), fgrep (ссылка
на grep) и grep. Grep зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc,
Make, Sed, Texinfo. Подготовьте Grep к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Пакет Grub содержит загрузчик. Устанавливаемые программы: grub, grub-install, grub-md5-crypt,
grub-terminfo и mbchk. Grub зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep,
Make, Ncurses и Sed. Этот пакет известен ошибками при сборке с использованием измененных опций
оптимизации компиляции (включая параметры -march и -mcpu). Таким образом,
если Вы меняли переменные окружения, отвечающие за оптимизацию сборки, такие
как CFLAGS и CXXFLAGS, я рекомендую сбросить их перед началом сборки Grub.
Для начала исправьте проблему с компиляцией при использовании GCC-3.3.1:
Теперь подготовьте Grub к компиляции: Скомпилируйте пакет: А теперь установите его: Замените i386-pc на каталог, соответствующий Вашему железу. Каталог i386-pc содержит также ряд файлов *stage1_5 для
разных файловых систем. Посмотрите какие из них доступны и скопируйте их в
каталог /boot/grub. Обычно следует скопировать файлы
e2fs_stage1_5 и/или reiserfs_stage1_5. Пакет Gzip содержит программы для сжатия и распаковки файлов с
использованием алгоритма сжатия LZ77. Устанавливаемые программы: gunzip (ссылка на gzip), gzexe, gzip,
uncompress (ссылка на gunzip), zcat (ссылка на gzip), zcmp, zdiff, zegrep,
zfgrep, zforce, zgrep, zless, zmore и znew. Gzip зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc,
Grep, Make, Sed. Подготовьте Gzip к компиляции: Программа gzexe встраивает в себя путь к исполняемому модулю
gzip. Поскольку позднее положение этого файла изменится, следующая
команда позволит встроить новый путь: Скомпилируйте пакет: Установите готовый пакет: Теперь переместите программы в каталог /bin и переделайте
ссылки на них: Man является просмотрщиком man-страниц. Устанавливаемые программы: apropos, makewhatis, man,
man2dvi, man2html и whatis. Man зависит от Bash, Binutils, Coreutils, Gawk, GCC, Glibc,
Grep, Make и Sed. Я собираюсь сделать три дополнения к исходникам Man. Первым патчем Вы раскоментируете строку "MANPATH /usr/man" в файле
man.conf для предупреждения излишней многословности результатов при
использовании таких программ как whatis: Второй патч добавит параметр -R в переменную PAGER
для правильного использования escape-последовательностей: Третий и последний патч решит проблему с фоматированием man-страниц,
содержащих более 80 символов в строке в связке с
существующими релизами groff: Теперь подготовьте Man к компиляции: Описание параметров конфигурации: Скомпилируйте пакет: Теперь установите его: Замечание: Если Вы собираетесь отключить SGR
escape-последовательности, Вы можете отредактировать файл man.conf или
добавить параметр -c к вызову nroff. Возможно, Вы захотите также посмотреть страницу BLFS на
http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/compressdoc.html,
которая описывает использование форматированных и сжатых файлов man-страниц.
Make автоматически определяет, какие части больших программ нуждаются в
перекомпиляции, и вызывает команды для их сборки. Устанавливаемая программа: make. Make зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Sed. Подготовьте Make к компиляции: Скомпилируйте пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Пакет Modutils содержит программы, которые Вы можете использовать для
работы с модулями ядра. Устанавливаемые пргограммы: depmod, genksyms, insmod,
insmod_ksymoops_clean, kallsyms (ссылка на insmod), kernelversion, ksyms
(ссылка на insmod), lsmod (ссылка на insmod), modinfo, modprobe (ссылка на
insmod) и rmmod (ссылка на insmod). Modutils зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, M4,
GCC, Glibc, Grep, Make и Sed. Подготовьте Modutils к компиляции: Скомпилируйте пакет: Теперь установите его: Программа patch модифицирует файл в соответствии с файлом патча. Патч
обычно является списком, созданным программой diff, который содержит
инструкции по изменению оригинального файла, нуждающегося в модификации. Устанавливаемая программа: patch. Patch зависит от Bash, Binutils, Coreutils, Diffutils, GCC,
Glibc, Grep, Make и Sed. Подготовьте Patch к компиляции: Опять же, флаг препроцессора -D_GNU_SOURCE необходим на
платформах PowerPC. На других архитектурах его можно опустить. Скомпилируйте пакет: Теперь установите его: Программа procinfo собирает системные данные, такие как использование
памяти и номера IRQ, из каталога /proc и приводит
их к удобному виду. Устанавливаемые программы: lsdev, procinfo и socklist. Procinfo зависит от Binutils, GCC, Glibc, Make и Ncurses. Скомпилируйте Procinfo: Описание параметров сборки: Теперь установите пакет: Пакет Procps содержит программы для мониторинга и завершения системных
процессов. Procps собирает информацию о процессах
из каталога /proc. Устанавливаемые программы: free, kill, pgrep, pkill, pmap, ps,
skill, snice, sysctl, tload, top, uptime, vmstat, w и watch. Устанавливаемая библиотека: libproc.so. Procps зависит от Bash, Binutils, Coreutils, GCC, Glibc, Make и Ncurses.
Для начала исправьте проблему с возможным крахом w
из-за установок локали: Теперь скомпилируйте Procps: Установите полученный пакет: Теперь удалите одну ошибочную ссылку на библиотеку: Пакет Psmisc содержит три программы для работы с каталогом /proc.
Устанавливаемые программы: fuser, killall и pstree. Psmisc зависит от Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Ncurses и Sed. Подготовьте Psmisc к компиляции: Описание параметров конфигурации: Скомпилируйте пакет: Теперь установите пакет: По умолчанию программа pidof не устанавливается. Обычно, это не
является проблемой, поскольку устанавливаемый позже пакет Sysvinit содержит
лучший вариант программы pidof. Но если Вы не собираетесь
использовать Sysvinit, то Вам стоит завершить установку Psmisc
созданием следующей ссылки: Пакет Shadow создан для усиления безопасности системных паролей. Устанавливаемые программы: chage, chfn, chpasswd, chsh, dpasswd,
expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck,
grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers,
passwd, pwck, pwconv, pwunconv, sg (ссылка на newgrp), useradd,
userdel, usermod, vigr (ссылка на vipw) и vipw. Shadow зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make и Sed. Программы login, getty и init (и
некоторые другие) поддерживают лог-файлы для записи кто, когда и где входил
в систему. Эти программы, тем не менее, сами не создают эти лог-файлы, если
они еще не существуют. Таким образом, если Вы собираетесь протоколировать
эти события, то Вам надо создать эти файлы самостоятельно. Пакету Shadow
нужны эти файлы в определенном месте, так что Вы создадите их
для удовлетворения зависимостей: Файл /var/run/utmp содержит список пользователей, которые на
данный момент работают в системе, файл /var/log/wtmp показывает кто,
где подключился к системе и когда. Файл /var/log/lastlog
показывает последние входы для каждого пользователя, а /var/log/btmp
является списком ошибочных входов. Shadow встраивает в себя путь к исполняемому модулю passwd, но
это плохой метод в случае отсутствия этого файла на момент установки. Если
двоичный файл passwd еще не существует перед установкой Shadow,
пакет неверно определит путь как /bin/passwd, а установит его в
/usr/bin/passwd. Это приведет к ошибке при попытке найти файл
/bin/passwd. Для исправления этого, создайте
фиктивный файл passwd: Текущий релиз Shadow содержит проблему с командой newgrp.
Следующий патч (также применяющийся к CVS-версии Shadow)
исправит эту проблему: Теперь подготовьте Shadow к компиляции: Скомпилируйте пакет: Теперь установите его: Shadow использует два файла для настройки параметров аутентификации в
системе. Установите эти файлы: Вы собираетесь изменить метод паролирования выбором паролей MD5, которые,
теоретически, являются более безопасными, чем метод по умолчанию "crypt" и
заодно допускает создание паролей длинее 8-ми символов. Вы также должны
изменить старое расположение /var/spool/mail для пользовательских
почтовых ящиков на /var/mail. Вы сделаете это проведя следующие
изменения конфигурационного файла: Замечание: Будьте очень внимательны при вводе указанной
команды. Лучше всего скопировать и вставить ее вместо того,
чтобы просто набрать. Согласно man-странице vipw, программа vigr также
должна существовать. Поскольку процедура установки не создает эту программу,
создайте ссылку вручную: Поскольку ссылка /bin/vipw не нужна (и ссылается на
несуществующий файл), удалите ее: Теперь переместите программу sg в правильное место: Переместите динамические библиотеки Shadow в более корректное расположение:
Поскольку некоторые пакеты нуждаются в расположении только что
перемещенных библиотек в /usr/lib, создайте следующие ссылки: Coreutils уже установил программу groups в /usr/bin.
Если хотите, то можете удалить такую же, установленную Shadow: Этот пакет содержит утилиты для модификации паролей пользователей,
добавления или удаления пользователей и групп и тому подобные. Я не собираюсь
объяснять здесь что такое 'затенение паролей' ('password shadowing'). Полное
объяснение можно найти в файле doc/HOWTO в распакованном каталоге с
исходными текстами Shadow. Здесь я опишу только то, что Вам понадобится, если
Вы захотите использовать поддержку Shadow: программы, которые должны
проверять пароли (к примеру, xdm, демоны ftp, демоны pop3) должны будут
компилироваться с поддержкой shadow-совместимости, что надо для использования
работы со скрытыми паролями. Для начала использования скрытых паролей, запустите команду: А для использования скрытых паролей для групп, выполните: При нормальных обстоятельствах пока нет надобности создавать пароли.
Запомните, что если Вы решите вернуться к этой главе для включения затенения
паролей, надо будет сбросить пароли всех пользователей командой
passwd и пароли всех групп командой gpasswd. Пакет Sysklogd содержит программы для записи системных сообщений в
протоколы (логи), например, сообщений ядра. Устанавливаемые программы: klogd и syslogd. Sysklogd зависит от Binutils, Coreutils, GCC, Glibc и Make. Скомпилируйте Sysklogd: Теперь установите его: Создайте новый файл /etc/syslog.conf запуском команды: Пакет Sysvinit содержит пограммы для контроля загрузки, запуска и
выключения всех других программ. Установливаемые программы: halt, init, killall5, last, lastb
(ссылка на last), mesg, pidof (ссылка на killall5), poweroff (ссылка на
halt), reboot (ссылка на halt), runlevel, shutdown, sulogin, telinit (ссылка
на init), utmpdump и wall. Sysvinit зависит от Binutils, Coreutils, GCC, Glibc и Make. Когда изменяется уровень запуска (например, при выключении системы), init
посылает сигналы TERM и KILL запущенным процессам. Init печатает "Sending
processes the TERM signal" на экране. Это предполагает, что init отсылает эти
сигналы всем работающим процессам. Чтобы не входить в заблуждение, исправьте
это сообщение на "Sending processes started by init the TERM signal". Исправьте сообщение: Скомпилируйте Sysvinit: Теперь установите его: Создайте новый файл /etc/inittab запуском следующих команд: Tar является архиватором, разработанным для записи и извлечения файлов из
архива, извесного как tar-файл. Устанавливаемые программы: rmt и tar Tar зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc,
Grep, Make, Sed. Подготовьте Tar к компиляции: Скомпилируйте готовый пакет: Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите
использовать эту возможность, запустите команду: Теперь установите пакет: Пакет Util-linux содержит ряд различных утилит. Некоторые из этих утилит
используются для монтирования, размонтирования, форматирования, разбиения и
обслуживания дисков, открытия портов tty и вызова сообщений ядра. Устанавливаемые программы: agetty, arch, blockdev, cal, cfdisk,
chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg,
elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock,
ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs,
mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash,
parse.tcsh, pg, pivot_root, ramsize (ссылка на rdev), raw, rdev, readprofile,
rename, renice, rev, rootflags (ссылка на rdev), script, setfdprm, setsid,
setterm, sfdisk, swapoff (ссылка на swapon), swapon, test.bash, test.tcsh,
tunelp, ul, umount, vidmode (ссылка на rdev), whereis и write. Util-linux зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext,
Glibc, Grep, Make, Ncurses, Sed, Zlib. FHS рекомендует использовать /var/lib/hwclock, вместо обычного
/etc, в качестве расположения для файла adjtime. Для
обеспечения программе hwclock FHS-совместимости,
запустите следующую команду: Подготовьте Util-linux к компиляции: Скомпилируйте весь пакет: Описание параметров компиляции: Теперь установите пакет: Этот пакет известен своим нестабильным поведением при компиляции с
измененными опциями оптимизации (включая опции -march и -mcpu). GCC
рекомендуется компилировать с настройками по умолчанию. Следовательно, если
Вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень
оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC. Это старая версия GCC, которую Вы собираетесь использовать для компиляции
ядра в главе 8. Эта версия рекомендуется
разработциками ядра для абсолютной стабильности. Поздние версии компилятора
GCC не считаются идеальными для тестирования сборки ядра Linux. Можно
использовать и более поздние версии, но я рекомендую следовать советам
разработчиков и собирать ядро именно этой версией компилятора. Замечание: Вы не устанавливаете компилятор и библиотеки
C++ здесь. Тем не менее, Вы можете захотеть установить их. Информацию о том,
как это сделать, можно получить на
http://www.linuxfromscratch.org/blfs/view/stable/general/gcc2.html. Вы будете устанавливать старую версию GCC с нестандартным префиксом
/opt, поскольку используемый в Вашей системе пакет GCC уже
установлен в каталог /usr. Примените следующие патчи: Документация на GCC рекомендует собирать GCC вне каталога с исходными
текстами, в отдельном каталоге для сборки: Скомпилируйте и установите компилятор: Теперь Вы должны покинуть среду chroot и снова войти в нее, это делается
следующим вариантом команды chroot: Причиной этого является то, что Вам уже не надо использовать программы из
каталога /tools. Тем не менее, Вы пока не удаляете его. Он Вам еще
будет нужен в конце книги. Пакет LFS-Bootscripts содержит shell-скрипты в стиле SysV init. Эти
скрипты нужны для выполнения определенных действий на этапе загрузки, таких
как проверка файловых систем, загрузка раскладки клавиатуры, установка сети и
завершения процессов при выходе. Устанавливаемые скрипты: checkfs, cleanfs, functions, halt,
ifdown, ifup, loadkeys, localnet, mountfs, mountproc, network, rc, reboot,
sendsignals, setclock, swap, sysklogd и template. Bzip2 зависит от Bash, Coreutils. Я собираюсь использовать init-скрипты в стиле SysV. Я выбрал этот тип
потому, что его использование наиболее комфортно и часто встречается. Если Вы
собираетесь попробовать что-либо другое, то Marc Heerdink написал советы по
init-скриптам в стиле BSD, они находятся на
http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt. Если
же Вы собираетесь попробовать что-либо более радикальное, посмотрите в архиве
списка рассылки LFS. Если Вы решили использовать стиль BSD или другой в скриптах, то следует
пропустить следующую главу и перейти к главе 8. Установите загрузочные скрипты: Измените владельца скриптов на root: Теперь, когда Вы установили все программы, надо
сделать некоторые настройки. Очень сильно раздражает, когда Linux использует неверную раскладку
клавиатуры. Если у Вас стандартная клавиатура US, Вы можете пропустить этот
раздел, поскольку раскладка US используется по умолчанию,
и не надо это менять. Для изменения раскладки по умолчанию, создайте ссылку
/usr/share/kbd/keymaps/defkeymap.map.gz запуском команды: Само собой, замените /путь/к/раскладке на путь и имя раскладки,
соответствующей Вашей клавиатуре. Например, если у Вас немецкая клавиатура,
используйте i386/qwerty/nl.map.gz. Описание настройки раскладки клавиатуры и локали для российских
пользователей ОС Linux содержится в документе Cyrilic-HOWTO (или
Cyrilic-HOWTO-russian), который спокойно можно скачать из интернета. Но
будьте внимательны! В этом документе, к сожалению, описывается использование
kbd старой версии. Если Вы не собираетесь использовать перекодировку вводимых
символов из koi8-r или из cp1251 в Unicode или Alt, то нечего волноваться. В
противном же случае (для нормального отображения символов псевдографики),
прочитайте документацию к Вашей версии kbd, иначе ничего не получится. Другим путем установки параметров клавиатуры является интеграция раскладки
в ядро. Это позволит клавиатуре корректно работать даже при загрузке в режиме
maintenance (задавая параметр ядру init=/bin/sh), когда загрузочные скрипты
не запускаются и не могут установить Вашу раскладку. Запустите следующую команду для встраивания раскладки в исходные тексты
ядра. Вам надо будет повторять эту команду после каждой новой распаковки ядра:
Установите пароль пользователя root командой:
Глава 6. Установка основных системных программ
Вступление
Про отладочные символы
Вход в среду chroot
chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login
Изменение владельца
chown -R 0:0 /tools
Создание каталогов
mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
mkdir -p /{root,sbin,tmp,usr/local,var,opt}
for dirname in /usr /usr/local do
mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} $dirname
mkdir $dirname/share/{dict,doc,info,locale,man}
mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{tmp,opt,cache,lib/misc,local}
mkdir /opt/{bin,doc,include,info}
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
chmod 0750 /root
chmod 1777 /tmp /var/tmp
Совместимость с FHS
Монтирование файловых систем proc и devpts
mount proc /proc -t proc
warning: can't open /etc/fstab: No such file or directory
not enough memory
mount devpts /dev/pts -t devpts
filesystem devpts not supported by kernel
Создание необходимых ссылок
ln -s /tools/bin/{bash,cat,pwd,stty} /bin
ln -s /tools/bin/perl /usr/bin
ln -s /tools/lib/libgcc_s.so.1 /usr/lib
ln -s bash /bin/sh
Создание файлов passwd и group
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
EOF
exec /tools/bin/bash --login +h
Создание устройств (Makedev-1.7)
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 50 KB
Описание MAKEDEV
Зависимости установки MAKEDEV
Создание устройств
bzcat MAKEDEV-1.7.bz2 > /dev/MAKEDEV
chmod 754 /dev/MAKEDEV
cd /dev
./MAKEDEV -v generic-nopty
mount -t devfs devfs /dev
Установка заголовков Linux-2.4.22
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 186 MB
Описание Linux
Зависимости установки Linux
Установка заголовков ядра
make mrproper
make include/linux/version.h
make symlinks
cp -HR include/asm /usr/include
cp -R include/asm-generic /usr/include
cp -R include/linux /usr/include
touch /usr/include/linux/autoconf.h
Почему Вы копируете заголовки ядра, а не создаете для
них символические ссылки?
Тем, кто компилирует новые ядра, настоятельно рекомендую не создавать
символических ссылок (кроме той, которую создает само ядро,
"linux/include/asm", символическая ссылка, которая используется при
внутренней компиляции ядра.) именно так делаю я. В моем каталоге
/usr/src/linux есть заголовки старого ядра 2.2.13, несмотря на то, что я не
использовал ядро 2.2.13 уже очень давно. Однако именно с этими заголовками
компилировался пакет glibc, соответственно именно эти заголовки соответствуют
файлам объектов библиотеки. Также именно такое положение вещей являлось
рекомендуемым на протяжении последних пяти лет. Я не могу понять, почему вся
эта заморочка с символическими ссылками все еще существует, как зомби.
Практически во всех дистрибутивах есть эта неработающая символическая ссылка,
и люди до сих пор помнят, что исходники ядра Linux должны находится в
"/usr/src/linux", несмотря на то, что это уже давно не так.
Установка Man-pages-1.60
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 15 MB
Описание Man-pages
Зависимости установки Man-pages
Установка Man-pages
make install
Установка Glibc-2.3.2
Ожидаемое время сборки: 12.3 SBU
Ожидаемое место на диске: 784 MB
Описание Glibc
Зависимости установки Glibc
Установка Glibc
touch /etc/ld.so.conf
patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch
mkdir ../glibc-build
cd ../glibc-build
../glibc-2.3.2/configure --prefix=/usr --disable-profile --enable-add-ons \
--libexecdir=/usr/bin --with-headers=/usr/include
make
make check
make install
make localedata/install-locales
mkdir -p /usr/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP
make -C ../glibc-2.3.2/linuxthreads/man
make -C ../glibc-2.3.2/linuxthreads/man install
Конфигурирование Glibc
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
publickey: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: db files
# End /etc/nsswitch.conf
EOF
tzselect
cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime
Настройка динамического загрузчика
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
# End /etc/ld.so.conf
EOF
Переустановка средств
make -C ld INSTALL=/tools/bin/install install
SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \
$SPECFILE > newspecfile &&
mv -f newspecfile $SPECFILE &&
unset SPECFILE
echo 'main(){}' > dummy.c
gcc dummy.c
readelf -l a.out | grep ': /lib'
[Requesting program interpreter: /lib/ld-linux.so.2]
rm dummy.c a.out
Установка Binutils-2.14
Ожидаемое время сборки: 1.4 SBU
Ожидаемое место на диске: 167 MB
Описание Binutils
Зависмости установки Binutils
Установка Binutils
expect -c "spawn ls"
The system has no more ptys. Ask your system administrator to create more.
mkdir ../binutils-build
cd ../binutils-build
../binutils-2.14/configure --prefix=/usr --enable-shared
make tooldir=/usr
make check
make tooldir=/usr install
cp ../binutils-2.14/include/libiberty.h /usr/include
Установка GCC-3.3.1
Ожидаемое время сборки: 11.7 SBU
Ожидаемое место на диске: 294 MB
Описание GCC
Зависимости установки GCC
Установка GCC
patch -Np1 -i ../gcc-3.3.1-no_fixincludes-2.patch
patch -Np1 -i ../gcc-3.3.1-suppress-libiberty.patch
mkdir ../gcc-build
cd ../gcc-build
../gcc-3.3.1/configure --prefix=/usr --enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-clocale=gnu \
--enable-languages=c,c++
make
make -k check
make install
ln -s ../usr/bin/cpp /lib
ln -s gcc /usr/bin/cc
Установка Coreutils-5.0
Ожидаемое время сборки: 0.9 SBU
Ожидаемое место на диске: 69 MB
Описание Coreutils
Зависимости установки Coreutils
Установка Coreutils
patch -Np1 -i ../coreutils-5.0-uname.patch
patch -Np1 -i ../coreutils-5.0-hostname-2.patch
./configure --prefix=/usr
make
make install-root
echo "dummy1:x:1000" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd
make check-root
su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"
sed -i.bak '/dummy/d' /etc/passwd /etc/group
make install
mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
mv /usr/bin/{touch,true,uname,vdir} /bin
mv /usr/bin/chroot /usr/sbin
ln -s test /bin/[
ln -s ../../bin/install /usr/bin
Установка Zlib-1.1.4
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 1.5 MB
Описание Zlib
Зависимости установки Zlib
Установка Zlib
patch -Np1 -i ../zlib-1.1.4-vsnprintf.patch
./configure --prefix=/usr --shared
make
make install
make clean
./configure --prefix=/usr
make
make test
make install
mv /usr/lib/libz.so.* /lib
ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
cp zlib.3 /usr/share/man/man3
Установка Lfs-Utils-0.3
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 1.1 MB
Описание Lfs-Utils
Зависимости установки Lfs-Utils
Установка Lfs-Utils
make
make install
cp etc/{services,protocols} /etc
Установка Findutils-4.1.20
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 7.5 MB
Описание Findutils
Зависимости установки Findutils
Установка Findutils
./configure --prefix=/usr --libexecdir=/usr/bin
make
make check
make install
Установка Gawk-3.1.3
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 17 MB
Описание Gawk
Зависимости установки Gawk
Установка Gawk
patch -Np1 -i ../gawk-3.1.3-libexecdir.patch
./configure --prefix=/usr --libexecdir=/usr/bin
make
make check
make install
Установка Ncurses-5.3
Ожидаемое время сборки: 0.6 SBU
Ожидаемое место на диске: 27 MB
Описание Ncurses
Зависимости установки Ncurses
Установка Ncurses
patch -Np1 -i ../ncurses-5.3-etip-2.patch
patch -Np1 -i ../ncurses-5.3-vsscanf.patch
./configure --prefix=/usr --with-shared --without-debug
make
make install
chmod 755 /usr/lib/*.5.3
chmod 644 /usr/lib/libncurses++.a
mv /usr/lib/libncurses.so.5* /lib
ln -sf ../../lib/libncurses.so.5 /usr/lib/libncurses.so
ln -sf libncurses.so /usr/lib/libcurses.so
Установка Vim-6.2
Ожидаемое время сборки: 0.4 SBU
Ожидаемое место на диске: 34 MB
Альтернативы для Vim
Описание Vim
Зависимости установки Vim
Установка Vim
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h
./configure --prefix=/usr
make
make install
ln -s vim /usr/bin/vi
Конфигурирование Vim
cat > /root/.vimrc << "EOF"
" Begin /root/.vimrc
set nocompatible
set bs=2
" End /root/.vimrc
EOF
Установка M4-1.4
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 3.0 MB
Описание M4
Зависимости установки M4
Установка M4
./configure --prefix=/usr
make
make check
make install
Установка Bison-1.875
Ожидаемое время сборки: 0.6 SBU
Ожидаемое место на диске: 10.6 MB
Описание Bison
Зависимости установки Bison
Установка Bison
patch -Np1 -i ../bison-1.875-attribute.patch
./configure --prefix=/usr
make
make check
make install
Установка Less-381
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 3.4 MB
Описание Less
Зависимости установки Less
Установка Less
./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
make
make install
Установка Groff-1.19
Ожидаемое время сборки: 0.5 SBU
Ожидаемое место на диске: 43 MB
Описание Groff
Зависмости установки Groff
Установка Groff
PAGE=letter
./configure --prefix=/usr
make
make install
ln -s soelim /usr/bin/zsoelim
ln -s eqn /usr/bin/geqn
ln -s tbl /usr/bin/gtbl
Установка Sed-4.0.7
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 5.2 MB
Описание Sed
Зависимости установки Sed
Установка Sed
./configure --prefix=/usr --bindir=/bin
make
make install
Установка Flex-2.5.4a
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 3.4 MB
Описание Flex
Зависимости установки Flex
Установка Flex
./configure --prefix=/usr
make
make bigcheck
make install
ln -s libfl.a /usr/lib/libl.a
cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex
exec /usr/bin/flex -l "$@"
# End /usr/bin/lex
EOF
chmod 755 /usr/bin/lex
Установка Gettext-0.12.1
Ожидаемое время сборки: 7.2 SBU
Ожидаемое место на диске: 55 MB
Описание Gettext
Зависимости установки Gettext
Установка Gettext
./configure --prefix=/tools
make
make check
make install
Установка Net-tools-1.60
Ожидаемое время сборки: 0.1 SBU
Ождидаемое место на диске: 9.4 MB
Описание Net-tools
Зависимости установки Net-tools
Установка Net-tools
patch -Np1 -i ../net-tools-1.60-miitool-gcc33-1.patch
make config
make
make update
Установка Inetutils-1.4.2
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 11 MB
Содержание Inetutils
Зависимости установки Inetutils
Установка Inetutils
./configure --prefix=/usr --disable-syslogd --libexecdir=/usr/sbin \
--disable-logger --sysconfdir=/etc --localstatedir=/var \
--disable-whois --disable-servers
make
make install
mv /usr/bin/ping /bin
Установка Perl-5.8.0
Ожидаемое время сборки: 2.9 SBU
Ожидаемое место на диске: 143 MB
Описание Perl
Зависимости установки Perl
Устанорвка Perl
./configure.gnu --prefix=/usr
make
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
make test
make install
Установка Texinfo-4.6
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 17 MB
Описание Texinfo
Зависимости установки Texinfo
Установка Texinfo
./configure --prefix=/usr
make
make check
make install
make TEXMF=/usr/share/texmf install-tex
Установка Autoconf-2.57
Ожидаемое время сборки: 2.9 SBU
Ожидаемое место на диске: 7.7 MB
Описание Autoconf
Зависимости установки Autoconf
Установка Autoconf
./configure --prefix=/usr
make
make check
make install
Установка Automake-1.7.6
Ожидаемое время сборки: 5.3 SBU
Ожидаемое место на диске: 6.8 MB
Описание Automake
Зависимости установки Automake
Установка Automake
./configure --prefix=/usr
make
make check
make install
ln -s automake-1.7 /usr/share/automake
Установка Bash-2.05b
Ожидаемое время сборки: 1.2 SBU
Ожидаемое место на диске: 27 MB
Описание Bash
Зависимости установки Bash
Установка Bash
patch -Np1 -i ../bash-2.05b-2.patch
./configure --prefix=/tools
make
make tests
make install
ln -s bash /tools/bin/sh
Установка File-4.04
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 6.3 MB
Описание File
Зависимости установки File
Установка File
./configure --prefix=/usr
make
make install
Установка Libtool-1.5
Ожидаемое время сборки: 1.5 SBU
Ожидаемое место на диске: 20 MB
Описание Libtool
Зависимости установки Libtool
Установка Libtool
./configure --prefix=/usr
make
make check
make install
Установка Bzip2-1.0.2
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 3.0 MB
Описание Bzip2
Зависимости установки Bzip2
Установка Bzip2
make -f Makefile-libbz2_so
make clean
make
make install
cp bzip2-shared /bin/bzip2
cp -a libbz2.so* /lib
ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm /usr/bin/{bunzip2,bzcat,bzip2}
mv /usr/bin/{bzip2recover,bzless,bzmore} /bin
ln -s bzip2 /bin/bunzip2
ln -s bzip2 /bin/bzcat
Установка Diffutils-2.8.1
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 7.5 MB
Описание Diffutils
Зависимости установки Diffutils
Установка Diffutils
./configure --prefix=/usr
make
make install
Установка Ed-0.2
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 3.1 MB
Описание Ed
Зависимости установки Ed
Установка Ed
patch -Np1 -i ../ed-0.2-mkstemp.patch
./configure --prefix=/usr
make
make check
make install
mv /usr/bin/{ed,red} /bin
Установка Kbd-1.08
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 12 MB
Описание Kbd
Зависимости установки Kbd
Установка Kbd
patch -Np1 -i ../kbd-1.08-more-programs.patch
make
make install
Установка E2fsprogs-1.34
Ожидаемое время сборки: 0.6 SBU
Ожидаемое место на диске: 48.4 MB
Описание E2fsprogs
Зависимости установки E2fsprogs
Установка E2fsprogs
mkdir ../e2fsprogs-build
cd ../e2fsprogs-build
../e2fsprogs-1.34/configure --prefix=/usr --with-root-prefix="" \
--enable-elf-shlibs
make
make check
make install
make install-libs
Установка Grep-2.5.1
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 5.8 MB
Описание Grep
Зависмости установки Grep
Установка Grep
./configure --prefix=/usr --bindir=/bin --with-included-regex
make
make check
make install
Установка Grub-0.93
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 10 MB
Описание Grub
Зависимости установки Grub
Установка Grub
patch -Np1 -i ../grub-0.93-gcc33-1.patch
./configure --prefix=/usr
make
make install
mkdir /boot/grub
cp /usr/share/grub/i386-pc/stage{1,2} /boot/grub
Установка Gzip-1.3.5
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 2.6 MB
Описание Gzip
Зависимости установки Gzip
Установка Gzip
./configure --prefix=/usr
cp gzexe.in{,.backup}
sed 's%"BINDIR"%/bin%' gzexe.in.backup > gzexe.in
make
make install
mv /usr/bin/gzip /bin
rm /usr/bin/{gunzip,zcat}
ln -s gzip /bin/gunzip
ln -s gzip /bin/zcat
ln -s gunzip /bin/uncompress
Установка Man-1.5m2
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 1.9MB
Описание Man
Зависимости установки Man
Установка Man
patch -Np1 -i ../man-1.5m2-manpath.patch
patch -Np1 -i ../man-1.5m2-pager.patch
patch -Np1 -i ../man-1.5m2-80cols.patch
./configure -default -confdir=/etc
make
make install
Установка Make-3.80
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 8.8 MB
Описание Make
Зависимости установки Make
Установка Make
./configure --prefix=/usr
make
make check
make install
Установка Modutils-2.4.25
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 2.9 MB
Описание Modutils
Зависимости установки Modutils
Установка Modutils
./configure
make
make install
Установка Patch-2.5.4
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 1.9 MB
Описание Patch
Зависимости установки Patch
Установка Patch
CPPFLAGS=-D_GNU_SOURCE
./configure --prefix=/usr
make
make install
Установка Procinfo-18
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 0.2 MB
Описание Procinfo
Зависимости установки Procinfo
Установка Procinfo
make LDLIBS=-lncurses
make install
Установка Procps-3.1.11
Ожидаемое время сборки: 0.1 SBU
Ожидаемое время установки: 6.2 MB
Описание Procps
Зависимости установки Procps
Установка Procps
patch -Np1 -i ../procps-3.1.11-locale-fix.patch
make
make install
rm /lib/libproc.so
Установка Psmisc-21.3
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 2.2 MB
Описание Psmisc
Зависимости установки Psmisc
Установка Psmisc
./configure --prefix=/usr --exec-prefix=/
make
make install
ln -s killall /bin/pidof
Установка Shadow-4.0.3
Ожидаемое время сборки: 0.4 SBU
Ожидаемое место на диске: 11 MB
Описание Shadow
Зависимости установки Shadow
Установка Shadow
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}
touch /usr/bin/passwd
patch -Np1 -i ../shadow-4.0.3-newgrp-fix.patch
./configure --prefix=/usr --libdir=/usr/lib --enable-shared
make
make install
cp etc/{limits,login.access} /etc
sed -e 's%/var/spool/mail%/var/mail%' \
-e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' etc/login.defs.linux > \
/etc/login.defs
ln -s vipw /usr/sbin/vigr
rm /bin/vipw
mv /bin/sg /usr/bin
mv /usr/lib/lib{shadow,misc}.so.0* /lib
ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so
ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so
rm /bin/groups
Настройка Shadow
/usr/sbin/pwconv
/usr/sbin/grpconv
Установка Sysklogd-1.4.1
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 0.5 MB
Описание Sysklogd
Зависимости установки Sysklogd
Установка Sysklogd
make
make install
Настройка Sysklogd
cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# End /etc/syslog.conf
EOF
Установка Sysvinit-2.85
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 0.9 MB
Описание Sysvinit
Зависимоти установки Sysvinit
Установка Sysvinit
cp src/init.c{,.backup}
sed 's/Sending processes/Sending processes started by init/g' \
src/init.c.backup > src/init.c
make -C src
make -C src install
Настройка Sysvinit
cat > /etc/inittab << "EOF"
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab
EOF
Установка Tar-1.13.25
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 10 MB
Описание Tar
Зависимости установки Tar
Установка Tar
./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/bin
make
make check
make install
Установка Util-linux-2.12
Ожидаемое время сборки: 0.2 SBU
Ожидаемое место на диске: 16 MB
Описание Util-linux
Зависимости установки Util-linux
FHS-совместимость
cp hwclock/hwclock.c{,.backup}
sed 's%etc/adjtime%var/lib/hwclock/adjtime%' hwclock/hwclock.c.backup \
> hwclock/hwclock.c
mkdir -p /var/lib/hwclock
Установка Util-linux
./configure
make HAVE_SLN=yes
make HAVE_SLN=yes install
Установка GCC-2.95.3
Ожидаемое время сборки: 1.5 SBU
Ожидаемое место на диске: 130 MB
Установка GCC
patch -Np1 -i ../gcc-2.95.3-2.patch
patch -Np1 -i ../gcc-2.95.3-no-fixinc.patch
patch -Np1 -i ../gcc-2.95.3-returntype-fix.patch
echo timestamp > gcc/cstamp-h.in
mkdir ../gcc-2-build
cd ../gcc-2-build
../gcc-2.95.3/configure --prefix=/opt/gcc-2.95.3 --enable-shared \
--enable-languages=c --enable-threads=posix
make bootstrap
make install
Перезапуск команды chroot
chroot $LFS /usr/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
Установка LFS-Bootscripts-1.12
Ожидаемое время сборки: 0.1 SBU
Ожидаемое место на диске: 0.3 MB
Описание LFS-bootscripts
Зависимости установки LFS-Bootscripts
Установка LFS-Bootscripts
cp -a rc.d sysconfig /etc
chown -R root:root /etc/rc.d /etc/sysconfig
Настройка компонентов системы
Настройка клавиатуры
ln -s /путь/к/раскладке /usr/share/kbd/keymaps/defkeymap.map.gz
loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz > \
/usr/src/linux-2.4.22/drivers/char/defkeymap.c
Установка пароля root
passwd root
Найди своих коллег! |