Перейти к содержанию

Создание базовых директорий и символических ссылок⚓︎

Создание каталога $LIN/tools⚓︎

Все программы, которые будут скомпилированы в следующей части, будут установлены в каталог $LIN/tools, чтобы можно было оставить их отдельно от сборки конечной системы. Это временные инструменты, которые не будут входить в конечную сборку системы.

После использования кросс-компилятора, от него можно избавиться. Использование каталога $LIN/tools необходимо для того, чтобы не засорять рабочие каталоги хост-системы.

Кросс-компилятор будет установлен в директорию /tools, создайте её:

mkdir -pv $LIN/tools

Создание иерархии файловой системы⚓︎

Теперь создайте базовую иерархию файловой системы. Мы предлагаем вам использовать упрощённую структуру каталогов, когда директории /bin, /sbin, /usr/sbin являются ссылками на /usr/bin, а /lib - на /usr/lib.

Подобную структуру использует всё больше дистрибутивов: Fedora, Arch, Ubuntu и др. Если вы хотите создать упрощённую иерархию файловой системы, выполните следующие команды:

mkdir -pv $LIN/{usr,etc,var,lib64}
mkdir -pv $LIN/{boot,home,mnt,opt,srv}
mkdir -pv $LIN/usr/{,local/}{bin,include,lib,src}
mkdir -pv $LIN/{dev,proc,sys,run}

ln -sfv usr/bin $LIN/bin
ln -sfv usr/lib $LIN/lib
ln -sfv usr/bin $LIN/sbin
ln -sfv bin $LIN/usr/sbin

mkdir -pv $LIN/etc/{opt,sysconfig}
mkdir -pv $LIN/lib/firmware
mkdir -pv $LIN/media/{floppy,cdrom}
mkdir -pv $LIN/usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -pv $LIN/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv $LIN/usr/{,local/}share/man/man{1..8}
mkdir -pv $LIN/var/{cache,local,log,mail,opt,spool}
mkdir -pv $LIN/var/lib/{color,misc,locate}

ln -sfv /run $LIN/var/run
ln -sfv /run/lock $LIN/var/lock

install -dv -m 0750 $LIN/root
install -dv -m 1777 $LIN/tmp $LIN/var/tmp

Если вы хотите использовать "классическую" иерархию, в которой /bin, /sbin, /usr/bin, /usr/sbin, /lib и /usr/lib - разные каталоги, выполните следующие команды:

mkdir -pv $LIN/{bin,etc,lib,lib64,sbin,usr,var}
mkdir -pv $LIN/{boot,home,mnt,opt,srv}
mkdir -pv $LIN/usr/{,local/}{bin,sbin,include,lib,src}
mkdir -pv $LIN/{dev,proc,sys,run}

mkdir -pv $LIN/etc/{opt,sysconfig}
mkdir -pv $LIN/lib/firmware
mkdir -pv $LIN/media/{floppy,cdrom}
mkdir -pv $LIN/usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -pv $LIN/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv $LIN/usr/{,local/}share/man/man{1..8}
mkdir -pv $LIN/var/{cache,local,log,mail,opt,spool}
mkdir -pv $LIN/var/lib/{color,misc,locate}

ln -sfv /run $LIN/var/run
ln -sfv /run/lock $LIN/var/lock

install -dv -m 0750 $LIN/root
install -dv -m 1777 $LIN/tmp $LIN/var/tmp

Такой подход позволит вынести /usr в отдельный раздел, либо загружать его по сети. Так же может повыситься безопасность и надёжность ОС. Однако потребуется выполнить множество дополнительных действий при установке пакетов.

Внимание!

Использование раздельной структуры директорий не рекомендуется, если вы планируете собирать systemd. В этой системе инициализации планируют убрать поддержку раздельной структуры (split usr). Кроме того, в некоторых ситуациях, по утверждениям разработчиков, systemd в некоторых ситуациях может работать некорректно в системе с такой структурой директорий.

Обратите внимание

Если вы не знаете что выбрать - используйте вариант с упрощенной структурой - он лучше протестирован и требует меньше действий при сборке пакетов.

Подробнее об иерархии каталогов можно узнать в спецификации FHS.

Подключение к сети из среды chroot⚓︎

Для работы сети в среде chroot требуется скопировать файлы hosts и resolv.conf с хост-системы:

cp -v /etc/{hosts,resolv.conf} $LIN/etc

Это обязательно, если вы собираетесь собирать пакет make-ca в части "Сборка системы".

Для multilib⚓︎

Создайте директорию для 32-битных библиотек:

mkdir -pv $LIN/usr/lib32

А также символическую ссылку на неё:

ln -sv usr/lib32 $LIN/lib32
Обратите внимание

В случае если вы используете классическую иерархию каталогов, разделение /lib32 и /usr/lib32 не имеет смысла, так как 32-битные библиотеки не требуются для запуска системы.

Предупреждение

Обратите внимание, что указанная символическая ссылка правильная. Если указать $LIN/usr/lib32, то при входе в среду chroot, ссылка будет некорректная.

К началу