Linux From Scratch
Linux From Scratch читать книгу онлайн
Gerard Beekmans
Copyright © 1999-2002 by Gerard Beekmans
Перевод: Денис Каледин, Ник Фролов, Алекс Казанков.
Версия 4.0
Эта книга описывает процесс создания Linux системы с нуля, используя лишь исходные коды необходимого программного обеспечения.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Установка Sysvinit-2.84
Приблизительное время компиляции: 0.06 SBU Необходимое дисковое пространство: 1 MB
Инсталляция Sysvinit
Когда изменяется уровень (runlevel) системы (например, при остановке работы системы), init посылает сигналы TERM и KILL процессам, которые он запустил. На экран init выдает сообщение «Sending processes the TERM signal». Создается впечатление, что init посылает данные сигналы всем запущенным процессам. Во избежание недоразумений, изменим файл init.c, что вывод на экране выглядел следующим образом: «Sending processes started by init the TERM signal». Для этого выполните нижеприведенные команды:
cp src/init.c{,.backup} && sed 's/Sending processes/Sending processes started by init/g' src/init.c.backup > src/init.c
Для инсталляции Sysvinit выполните:
make -C src && make -C src install
Содержимое Sysvinit
Последняя проверка: версия 2.84.
Программы
halt, init, killall5, last, lastb (ссылка на last), mesg, pidof (ссылка на killall5), poweroff (ссылка на halt), reboot (ссылка на halt), runlevel, shutdown, sulogin, telinit (ссылка на init), utmpdump и wall
Описания
halt
halt отмечает в /var/log/wtmp завершение работы системы и сообщает ядру о необходимости остановить, перезагрузить или отключить систему. Если halt или reboot вызваны, когда система не на уровнях выполнения 0 или 6, вместо них запускается (с флагами -h и -r соответственно).
init
init – предок всех процессов. Его основная роль – создание процессов из скрипта /etc/inittab. Этот файл содержит записи для создания getty, к которым подключаются пользователи. initt также контролирует различные автономные процессы.
killall5
killall5 – команда killall из SystemV. Посылается сигнал всем процессам вне собственной сессии, так что интерпретатор, выполняющий скрипт, из которого была вызвана эта команда, не будет завершен.
last
last просматривает /var/log/wtmp (или файл, указанный флагом -f) и выводит список всех пользователей, зарегистрировавшихся и завершивших сеанс с момента создания файла.
lastb
lastb действует аналогично last, но по умолчанию выводится журнал /var/log/btmp, содержащий записи о неудачных попытках регистрации.
mesg
mesg контролирует внешний доступ к терминалу пользователя. Обычно используется для разрешения записи на данный терминал прочим пользователям.
pidof
pidof выводит идентификаторы процессов (PIDs) указанных программ.
poweroff
poweroff действует аналогично shutdown -h -p. Выполняется останов системы и ее физическое отключение (необходим APM совместимый BIOS и поддержка APM в ядре).
reboot
reboot действует аналогично shutdown -r. Выполняется перезагрузка системы.
runlevel
runlevel читает файл utmp (обычно /var/run/utmp), ищет записи об уровне выполнение, и выводит предыдущий и текущий уровни выполнения на стандартный вывод, разделенные пробелом.
shutdown
shutdown безопасно останавливает систему. Все зарегистрированные пользователи уведомляются об останове, регистрация в системе запрещается.
sulogin
sulogin вызывается init, когда система переходит в однопользовательский режим (указывается записью в in /etc/inittab). Init также выполняет sulogin, когда получает флаг -b от загрузчика (например, LILO).
telinit
telinit посылает сигналы init, сообщающие о необходимости смены уровня выполнения.
utmpdump
utmpdump выводит содержимое файла (обычно /var/run/utmp) на стандартный вывод в удобном пользователю формате.
wall
wall посылает сообщение всем зарегистрированным пользователям, но лишь в случае, если mesg установлено yes.
Зависимости Sysvinit
Последняя проверка: версия 2.84.
Bash: sh Binutils: as, ld Fileutils: chown, cp, install, ln, mknod, rm Gcc: cc, cc1, collect2, cpp0 Make: make Sed: sed
Установка Tar-1.13
Приблизительное время компиляции: 0.26 SBU Необходимое дисковое пространство: 6 MB
Инсталляция Tar
Если вы хотите иметь возможность распаковывать файлы bzip2 программой tar напрямую, примените патч с FTP-сервера LFS. Этот патч добавляет возможность использования опции -j к команде tar, которая работает аналогично с опцией -z, использующейся для распаковки файлов gzip.
Примените патч, выполнив следующую команду:
patch -Np1 -i ../tar-1.13.patch
Для инсталляции Tar выполните:
./configure –prefix=/usr –libexecdir=/usr/bin –bindir=/bin && make && make install
Содержимое Tar
Последняя проверка: версия 1.13.
Программы
rmt и tar
Описания
rmt
rmt используется другими программами для удаленного управления приводом магнитных лент.
tar
tar – программа архивации, сохраняющая и извлекающая файлы из архивов tar.
Зависимости Tar
Последняя проверка: версия 1.13.
Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, install, ls, mv, rm Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp0, gcc Glibc: getconf Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Net-tools: hostname Patch: patch Sed: sed Sh-utils: basename, echo, expr, sleep, uname Texinfo: install-info, makeinfo Textutils: cat, tr
Установка Util-linux-2.11u
Приблизительное время компиляции: 0.38 SBU Необходимое дисковое пространство: 10 MB
Замечания по соответствию стандарту FHS
Стандарт FHS рекомендует использовать /var/lib/hwclock для хранения файла adjtime, вместо привычного каталога /etc. Для приведения hwclock, являющегося частью пакета 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
Для инсталляции Util-linux выполните:
./configure && make HAVE_SLN=yes && make HAVE_SLN=yes install
Пояснения команд
HAVE_SLN=yes: Не инсталлировать данную программу, т.к. она уже была установлена при инсталляции пакета Glibc.
Содержание Util-linux
Последняя проверка: версия 2.11t.
Программы
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, 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
Описания
agetty
agetty открывает tty, запрашивает регистрационное имя и запускает /bin/login.
arch
arch выводит информацию об архитектуре машины.
blockdev
blockdev позволяет вызывать ioctls блочного устройства из командной строки.
cal
cal выводит простой календарь.
cfdisk
cfdisk – редактор разделов диска, основанный на библиотеке libncurses.
chkdupexe
chkdupexe находит дублирующиеся исполняемые файлы.
col
col фильтрует перевернутые строки, поступающие с ввода.
colcrt
colcrt фильтрует вывод nroff для предпросмотра CRT.
colrm
colrm удаляет колонки из файла.