Вход в среду chroot

Теперь пришло время войти в среду chroot для установки необходимых пакетов. Перед тем, как войти в chroot, вам необходимо войти в систему как root, потому что только root может выполнить команду chroot.

Убедитесь, что переменная окружения LFS установленна корректно запуском echo $LFS, и проверьте, что она содержит путь к точке монтирования раздела LFS, к примеру /mnt/lfs.

Из-под привелегий root запустите следующую команду для входа в среду chroot:

chroot $LFS /tools/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login

Параметр -i, передаваемые команде env, очистит все переменные окружения среды chroot. После этого мы устанавливаем только переменные HOME, TERM, PS1 и PATH. Конструкция TERM=$TERM означает, что переменная окружения TERM внутри среды chroot примет то же значение, что и вне среды; Эта переменная нужна таким программам как vim и less для правильной работы. Если вам нужны другие переменные, такие как CFLAGS или CXXFLAGS, то это хорошее место задать их.

С этого места нам уже не надо использовать переменную LFS, потому что директория, указанная в ней стала корневой при входе в среду chroot.

Мы указали /tools/bin последней в списке путей PATH. Благодаря этому пакеты из этой директории не будут использованы, если мы уже установили окончательную версию соответствующего пакета. Это действует в том случае, когда shell не запоминает расположение исполняемых файлов, именно поэтому мы отключили эту функцию в предыдущей главе.

Запомните, что все команды до конца этой главы и во всех последующих выполняются из среды chroot. Если вы покинули эту среду по любой причине (например, после перезагоузки), то вы должны снова зайти в среду chrrot и примонтировать файловые системы proc и devpts (описываются позже) перед продолжением установки.

Заметьте, что bash выводит "I have no name!". Это нормально, поскольку /etc/passwd еще не создан.