Идея с контейнерами в Systemd мне очень понравилась. Можно потыкать разные дистрибутивы без нарушения основной системы и не прибегая к виртуализации. Дистрибутив получается всё равно не слишком полноценный, потому что ядро остаётся от хостовой системы, да и к устройствам доступ довольно ограниченный, но в остальном свободы довольно много.
Итак, Gentoo Linux.
Сначала назло всем ненавистникам надо скачать архив stage3 с профилем "systemd", чтобы не иметь проблем с запуском контейнера. Найти его можно по адресу https://gentoo.org/downloads/.
Архив необходимо скачать и распаковать в удобную для запуска директорию.
Тут я сделаю небольшое отступление.
Все манипуляции я проделаю на Debian 9, в котором юнит "systemd-nspawn@.service" имеет довольно дикий вид. С ним у меня не запустился ни один контейнер. К тому же в тамошнем systemd 232-й версии имеет неприятный баг. Заключается он в том, что при запуске контейнера из примонтированного через bind каталога или с добавленного с помощью символической ссылки каталога в "/var/lib/container" портятся права на файлы.
По этой причине я немного отредактировал юнит:
# sudo systemctl cat systemd-nspawn@.service # /etc/systemd/system/systemd-nspawn@.service.d/override.conf [Service] ExecStart= ExecStart=/usr/bin/systemd-nspawn -b -M %i -D /data/machines/%i
/data/machines/ - каталог с контейнерами на отдельном большом разделе.
Итак, архив stage3 распакован в "/data/machines/gentoo". Теперь надо произвести первичную настройку системы, но для начала надо запустить контейнер:
sudo systemd-nspawn -M gentoo -D /data/machines/gentoo
Вот теперь можно настраивать.
# Изменить пароль для root passwd root # добавить пользователя для дальнейшей работы useradd new_user --create-home --shell /bin/bash # задать для него пароль passwd new_user # добавить его в группу wheel usermod new_user --append -G wheel # поставить sudo emerge --sync emerge app-admin/sudo # раскомментировать в файле /etc/sudoers строку # %wheel ALL=(ALL) ALL # установить SSH-сервер emerge virtual/ssh # или emerge net-misc/openssh # поменять в файле /etc/ssh/sshd_config номер порта # в строке # Port 22 # Включить запуск ssh-сервера systemctl enable sshd.service
Теперь можно выйти из окружения комбинацией Ctrl+]]].
Осталось только запустить контейнер и зайти в него по SSH с логином new_user и заданным паролем:
sudo systemctl enable systemd-nspawn@gentoo.service sudo systemctl start systemd-nspawn@gentoo.service
Посмотреть состояние контейнера можно с помощью команды machinectl. С её же помощью можно подключиться к контейнеру напрямую:
machinectl login gentoo