Запуск hasher внутри schroot
Nov. 13th, 2019 01:18 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Да, это напоминает "почему мой эмулятор 8-битной игровой коноли для 16-битной DOS звпущенный в 32-битной виртуальной машине с Windows работающей на 64-битом хосте не издает звуков?"
Но иногда приходится.
Потому что есть логин на машинку с относительно древним RHEL (7.5) и на ней хочется собирать пакеты для кучи разных дистрибутивов. Потому что у этой машинке архитектура ppc64le. Такую за копейки на aliexpress не купишь.
(впрочем, arm64 который покупается за копейки на aliexpress, для сборки пакетов тоже пригоден не слишком. Хотя надо попробовать укупить там что-то побыстрее RaspBerry PI 3B)
Так вот, разводить там полнценные контейнеры там не хочется. Возни много, а толку мало. Для компиляции программ той степени изоляции, которую обеспечивает банальный chroot вполне достаточно. Тем более если пакеты мы будем компилировать в хэшере. который сам по себе именно такой уровень изоляции от хост-системы использует.
К сожалению, вот просто так взять и поставить хэшер на RHEL - мероприятие, не слишком простое и очевидное.
А вот schroot есть в EPEL.
Как оказалось, делать это следует следующим способом
Ура, можно пересобирать пакеты.
Но иногда приходится.
Потому что есть логин на машинку с относительно древним RHEL (7.5) и на ней хочется собирать пакеты для кучи разных дистрибутивов. Потому что у этой машинке архитектура ppc64le. Такую за копейки на aliexpress не купишь.
(впрочем, arm64 который покупается за копейки на aliexpress, для сборки пакетов тоже пригоден не слишком. Хотя надо попробовать укупить там что-то побыстрее RaspBerry PI 3B)
Так вот, разводить там полнценные контейнеры там не хочется. Возни много, а толку мало. Для компиляции программ той степени изоляции, которую обеспечивает банальный chroot вполне достаточно. Тем более если пакеты мы будем компилировать в хэшере. который сам по себе именно такой уровень изоляции от хост-системы использует.
К сожалению, вот просто так взять и поставить хэшер на RHEL - мероприятие, не слишком простое и очевидное.
А вот schroot есть в EPEL.
Как оказалось, делать это следует следующим способом
- Качаем образ минимальной системы требуемой архитектуры с альта.
- Распаковываем ее в /srv/chroot/altlinux9
- Пишем близкий к тривиальному конфиг schroot в /etc/schroot/chroot.d
[altlinux9] descriotion=AltLinux 9 with hasher type=directory directory=/srv/chroot/altlinux9 users=vitus
- Копируем в chroot /etc/sudoers
- Заходим в chroot рутом (sudo schroot -c altlinux8)
и делаем apt-get install sudo, потому что в минимальной системе sudo нет - Далее, из под рута же выполняем инструкцию
- Выходим из chroot и копируем из chroot-а /etc/passwd, /etc/group и /etc/shadow в хост-систему
(потому что schroot их копирует из хост-системы при каждом входе. Это можно отключить но не нужно. так как простейший chroot свойства юзера, включая членство в группе наследует из хост-системы.) - Выходим из хост-системы и заходим обратно, после чего заходим в chroot уже юзером и выполняем ту часть инструкции, которая из-под юзера.
Ура, можно пересобирать пакеты.