- Добавлена информация об использовании split usr и systemd. - Добавлен комментарий по поводу работы сети в chroot-окружении
5.0 KiB
Создание базовых директорий и символических ссылок
Создание каталога $LIN/tools
Все программы, которые будут скомпилированы в следующей части, будут установлены в каталог $LIN/tools
, чтобы можно было оставить их отдельно от сборки конечной системы. Это временные инструменты, которые не будут входить в конечную сборку системы.
После использования кросс-компилятора, от него можно избавиться. Использование каталога $LIN/tools
необходимо для того, чтобы не засорять рабочие каталоги хост-системы.
Кросс-компилятор будет установлен в директорию /tools
, создайте её:
mkdir -pv $LIN/tools
Создание иерархии файловой системы
Теперь создайте базовую иерархию файловой системы. Мы предлагаем вам использовать упрощённую структуру каталогов, когда директории /bin
, /sbin
, /usr/sbin
являются ссылками на /usr/bin
, а /lib
- на /usr/lib
.
Подобную структуру использует всё больше дистрибутивов: Fedora, Arch, Ubuntu и др. Если вы хотите создать упрощённую иерархию файловой системы, выполните следующие команды:
{{ include('../scripts/file-system.sh') }}
Если вы хотите использовать "классическую" иерархию, в которой /bin
, /sbin
, /usr/bin
, /usr/sbin
, /lib
и /usr/lib
- разные каталоги, выполните следующие команды:
{{ include('../scripts/classic-file-system.sh') }}
Такой подход позволит вынести /usr
в отдельный раздел, либо загружать его по сети. Так же может повыситься безопасность и надёжность ОС. Однако потребуется выполнить множество дополнительных действий при установке пакетов.
???+ bug "Внимание!" Использование раздельной структуры директорий не рекомендуется, если вы планируете собирать systemd. В этой системе инициализации планируют убрать поддержку раздельной структуры (split usr). Кроме того, в некоторых ситуациях, по утверждениям разработчиков, systemd в некоторых ситуациях может работать некорректно в системе с такой структурой директорий.
???+ note "Обратите внимание" Если вы не знаете что выбрать - используйте вариант с упрощенной структурой - он лучше протестирован и требует меньше действий при сборке пакетов.
Подробнее об иерархии каталогов можно узнать в спецификации 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
???+ note "Обратите внимание"
В случае если вы используете классическую иерархию каталогов, разделение `/lib32` и `/usr/lib32` не имеет смысла, так как 32-битные библиотеки не требуются для запуска системы.
???+ warning "Предупреждение"
Обратите внимание, что указанная символическая ссылка правильная. Если указать `$LIN/usr/lib32`, то при входе в среду `chroot`, ссылка будет некорректная.