Например. Возьмём не очень бородатый, но дистрибутив, какой-нибудь SLAX — прошлый выпуск с KDE, у которого устаревший glibc, или Debian — на VPS, тоже устаревший. Хотим установить современную ОСь в chroot чтобы в будущем перенести на новое устройство. На первом же этапе фейл, почему? Потому что старый glibc.
chroot . /bin/bash
chroot: failed to run command "/bin/bash": Input/output error
Это ниразу не проблема, ну не работает chroot, потому что на хостевой (от слова «хост», я не украинец) ОС стоит старый glibc, а мы пытаемся подключиться к bash, который собран с новым glibc.
Лааадно.
Снова берём Debian на VPS, хотим собирать-обновлять Gentoo в chroot 24/7, чтобы потом просто запаковал-распаковал образ на новом устройстве. Я бы для такого дела даже не пожалел приобрести самый дорогой тариф VPS за 1500 рублей: 6 ядер и 6гб памяти, чтобы круглосуточно крутить автосборку образов дистрибутивов.
* Messages for package sys-libs/glibc-2.30-r3:
* In order to use glibc with USE=-suid, you must make sure that
* you have devpts mounted at /dev/pts with the gid=5 option.
* Openrc should do this for you, so you should check /etc/fstab
* and make sure you do not have any invalid settings there.
* ERROR: sys-libs/glibc-2.30-r3::gentoo failed (pretend phase):
* mount & fix your /dev/pts settings
*
* Call stack:
* ebuild.sh, line 125: Called pkg_pretend
* glibc-2.30-r3.ebuild, line 757: Called sanity_prechecks
* glibc-2.30-r3.ebuild, line 628: Called check_devpts
* glibc-2.30-r3.ebuild, line 554: Called die
* The specific snippet of code:
* die "mount & fix your /dev/pts settings"
*
* If you need support, post the output of `emerge --info '=sys-libs/glibc-2.30-r3::gentoo'`,
* the complete build log and the output of `emerge -pqv '=sys-libs/glibc-2.30-r3::gentoo'`.
* The complete build log is located at '/var/tmp/portage/sys-libs/glibc-2.30-r3/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/sys-libs/glibc-2.30-r3/temp/die.env'.
* Working directory: '/var/tmp/portage/sys-libs/glibc-2.30-r3/homedir'
* S: '/var/tmp/portage/sys-libs/glibc-2.30-r3/work/glibc-2.30'
Даже не вчитываясь сразу понятно, что дело тут не в /dev/pts, а том, что Debian by-design не создаёт всех необходимых условий для пересборки «мира» Gentoo.
По итогу, chroot совсем не пригоден для содержания всех видов пингвинов в одной клетке?
chroot пригоден только если собирать точно такой же дистрибутив, какой и установлен на хосте.
Ни для безопасности, ни для контейнеризации использовать его нельзя.
Печалька. Придётся возвращаться к своим железкам.