Создание базовых директорий и символических ссылок⚓︎
Создание каталога $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
, ссылка будет некорректная.