Використання systemd-nspawn у Arch Linux ARM для Kerberos.io
З тих пір, як я почав використовувати kerberos.io, треба було вирішувати, як його встановити на Raspberry Pi 3, який працює під керуванням Arch Linux ARM. Спершу намагався перепаковувати офіційні пакунки .deb для pacman: PKGCONFIG. Це деякий час спрацьовувало до якогось чергового поновлення. Потім спробував збирати самотужки. Виявилося, що це непросто, багато функціональності або працює ненадійно, або довелося взагалі вимкнути. Нарешті, з’явилося ще один розв’язок: запустити справжній raspbian з допомогою systemd-nspawn, щоб можна було встановлювати офіційні збірки з допомогою посібника.
-
Тож спершу я встановив Raspbian у
/var/lib/machines
з допомогою (якби ж то був aconfmgr для Debian!). - Щоб його запустити з командного рядка:
cd /var/lib/machines && systemd-nspawn --bind /dev/video0 --bind /dev/vchiq -bD raspbian`
-
Трішки довелося постаратися, щоб налаштувати систему, встановити kerberos.io,
libraspberrypi-bin
і інші залежності (оновлено: створив скрипт для встановлення raspbian у chroot автоматизовано: prepare-raspbian-kerberosio.sh). -
Потім створив конфігураційні і сервісні файли, щоб raspbian запускався автоматично разом із основною системою: зміна.
-
Примітка: гостьова система використовує мережу батьківської системи для простоти і взаємодії з tinc.
-
Примітка: необхідно чітко зазначити, до яких із відображених файлів пристроїв надати доступ.
- Нарешті, вже можна було прибрати kerberos.io з основної системи.
Як ілюстрація, ось стан контейнера:
[sakhnik@alarmpi3 ~]$ machinectl status raspbian
raspbian(d2c01930a9414d59a6e15d4f40770785)
Since: Mon 2018-06-25 09:35:34 EEST; 22h ago
Leader: 27119 (systemd)
Service: systemd-nspawn; class container
Root: /var/lib/machines/raspbian
OS: Raspbian GNU/Linux 9 (stretch)
Unit: systemd-nspawn@raspbian.service
├─ 956 /usr/bin/kerberosio
├─27117 /usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --sett>
├─27119 /lib/systemd/systemd
├─27133 /lib/systemd/systemd-journald
├─27174 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
├─27175 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─27178 /usr/sbin/cron -f
├─27180 /lib/systemd/systemd-logind
├─27182 /usr/sbin/rsyslogd -n
├─27190 /sbin/agetty --noclear --keep-baud console 115200,38400,9600 vt220
├─27192 php-fpm: pool www
├─27193 php-fpm: pool www
├─27194 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─27195 nginx: worker process
├─27196 nginx: worker process
├─27197 nginx: worker process
├─27198 nginx: worker process
└─27561 php-fpm: pool www