Linux From Scratch
Шрифт:
chown -R 0:0 /static
Эта команда использует «0:0» вместо «root:root», т.к. оболочка не может резольвировать имя «root», т.к. пакет glibc еще не был установлен.
Создание директорий
Давайте создадим структуру файловой системы LFS. Начнем с создания более или менее стандартного дерева с помощью следующих команд:
mkdir -p /{bin,boot,dev/pts,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}} &&
ln -s ../var/tmp /usr
По
chmod 0750 /root &&
chmod 1777 /tmp /var/tmp
Первое изменение гарантирует, что не все пользователи имеют доступ к директории /root directory – аналогичные действия выполняет обычный пользователь со своим домашним каталогом. Второе изменение дает любому пользователю право на запись в директории /tmp и /var/tmp, однако не разрешает удалять из них файлы других пользователей. Удаление чужих файлов определяется параметром «sticky bit» – наивысший двоичный знак в двоичной маске 1777.
Итак, после создания директорий переместите tar-архивы исходных кодов пакетов, загруженных по инструкциям Главы 3, в некоторый самостоятельно созданный подкаталог в /usr/src.
Соответствие FHS
При создании директорий мы основывались на стандарте FHS (см.. Помимо созданных каталогов данный стандарт ставит условием наличие каталогов /usr/local/games и /usr/share/games, но, по нашему мнению, для базовой системы они не нужны. Однако можете смело привести свою систему к полному соответствию с FHS. Что касается структуры каталога /usr/local/share, стандарт FHS строго не оговаривает его содержимое, так что мы решили создать в нем необходимые, по нашему убеждению, подкаталоги.
Монтирование файловой системы proc
Для обеспечения корректной работы некоторых программ, необходимо установить файловую систему proc в среде chroot.
Для монтирования файловой системы proc в /proc, выполните:
mount proc /proc -t proc
Вероятно, следующие предупреждения команды mount будут выведены на экран:
warning: can't open /etc/fstab: No such file or directory
not enough memory
Не обращайте на них особого внимания – наша система полностью не установлена, и некоторые файлы отсутствуют. Само монтирование файловой системы будет выполнено, и на данном этапе нам больше ничего не требуется.
Создание символической ссылки mtab
Следующий шаг – создание символической ссылки /etc/mtab на /proc/mounts. Для этого выполните:
ln -sf /proc/mounts /etc/mtab
Создание этой символической ссылки предотвращает возможные проблемы при монтировании / только для чтения, когда информация в /etc/mtab устарела. Символическая ссылка на /proc/mounts позволяет всегда иметь свежую информацию о монтированных устройствах.
Примечание: Использование данной символической ссылки предполагает, что в ядро вашей системы встроена поддержка файловой системы proc. Данная поддержка встроена по умолчанию, не удаляйте ее, если вы не уверены в своих действиях, т.к. множество других вещей кроме символической ссылки /etc/mtab зависят от нее. Вкратце, убедитесь, что поддержка файловой системы proc включена в ядре.
Создание символических ссылок bash и sh
Некоторые программы при компиляции прописывают ссылки на пока не существующие программы. Для предотвращения связанных с этим проблем, создадим символические ссылки /bin/bash и /bin/sh, указывающие на программу bash, скомпилированную с использованием статических ссылок.
Для создания символических ссылок /bin/bash и /bin/sh, выполните:
ln -s /static/bin/bash /bin/bash &&
ln -s bash /bin/sh
Создание файлов passwd и group
Для возможности входа в систему под учетной записью root и для распознавания оболочкой имени «root», необходимо создать соответствующие записи в файлах /etc/passwd и /etc/group.
Для создания файла /etc/passwd, выполните:
echo «root:x:0:0:root:/root:/bin/bash» > /etc/passwd
Пароль для root ( "x" всего лишь метка заполнения) будет задан позже.
Для создания файла /etc/group, выполните: