# Создание базовых директорий и символических ссылок ## Создание каталога `$LIN/tools` Все программы, которые будут скомпилированы в следующей части, будут установлены в каталог `$LIN/tools`, чтобы можно было оставить их отдельно от сборки конечной системы. Это временные инструменты, которые не будут входить в конечную сборку системы. После использования кросс-компилятора, от него можно избавиться. Использование каталога `$LIN/tools` необходимо для того, чтобы не засорять рабочие каталоги хост-системы. Кросс-компилятор будет установлен в директорию `/tools`, создайте её: ```bash mkdir -pv $LIN/tools ``` ## Создание иерархии файловой системы Теперь создайте базовую иерархию файловой системы. Мы предлагаем вам использовать упрощённую структуру каталогов, когда директории `/bin`, `/sbin`, `/usr/sbin` являются ссылками на `/usr/bin`, а `/lib` - на `/usr/lib`. Подобную структуру использует всё больше дистрибутивов: Fedora, Arch, Ubuntu и др. Если вы хотите создать упрощённую иерархию файловой системы, выполните следующие команды: ```bash {{ include('../scripts/file-system.sh') }} ``` Если вы хотите использовать "классическую" иерархию, в которой `/bin`, `/sbin`, `/usr/bin`, `/usr/sbin`, `/lib` и `/usr/lib` - разные каталоги, выполните следующие команды: ```bash {{ include('../scripts/classic-file-system.sh') }} ``` Такой подход позволит вынести `/usr` в отдельный раздел, либо загружать его по сети. Так же может повыситься безопасность и надёжность ОС. Однако потребуется выполнить множество дополнительных действий при установке пакетов. ???+ bug "Внимание!" Использование раздельной структуры директорий не рекомендуется, если вы планируете собирать systemd. В этой системе инициализации планируют убрать поддержку раздельной структуры (split usr). Кроме того, в некоторых ситуациях, по утверждениям разработчиков, systemd в некоторых ситуациях может работать некорректно в системе с такой структурой директорий. ???+ note "Обратите внимание" Если вы не знаете что выбрать - используйте вариант с упрощенной структурой - он лучше протестирован и требует меньше действий при сборке пакетов. Подробнее об иерархии каталогов можно узнать в спецификации [FHS](https://refspecs.linuxfoundation.org/fhs.shtml). ## Подключение к сети из среды chroot Для работы сети в среде chroot требуется скопировать файлы `hosts` и `resolv.conf` с хост-системы: ```bash cp -v /etc/{hosts,resolv.conf} $LIN/etc ``` Это обязательно, если вы собираетесь собирать пакет `make-ca` в части "Сборка системы". ## Для multilib Создайте директорию для 32-битных библиотек: ```bash mkdir -pv $LIN/usr/lib32 ``` А также символическую ссылку на неё: ```bash ln -sv usr/lib32 $LIN/lib32 ``` ???+ note "Обратите внимание" В случае если вы используете классическую иерархию каталогов, разделение `/lib32` и `/usr/lib32` не имеет смысла, так как 32-битные библиотеки не требуются для запуска системы. ???+ warning "Предупреждение" Обратите внимание, что указанная символическая ссылка правильная. Если указать `$LIN/usr/lib32`, то при входе в среду `chroot`, ссылка будет некорректная.