Привет, это снова Егор Гаврилов. И я сегодня и дальше познакомлю аудиторию с systemd-nspawn.

Перед тем, как читать эту статью, прочитайте предыдущую мою статью про systemd-nspawn. Это небольшая вводная статья (getting start guide, GSG) по данной технологии.

Да как оно же работает?

systemd-nspawn - это расширенная версия привычного линуксоидам инструмента chroot, позволяющий "менять корень системы" (это если переводить буквально - на самом деле, это, по сути, запуск одного дистрибутива Linux из под другого, используя общее ядро).

Однако systemd-nspawn - это не просто chroot. Оно использует Linux namespaces и для реализации chroot-подобной функциональности (с возможностью запуска systemd внутри гостевой системы), и для полного разграничения гостевой и хост-системы. По сути, это аналог контейнеризации (в частности - Podman, который также умеет запускать systemd, а также более привычного нам Docker'а), но более интегрированный с экосистемой systemd.

systemd-nspawn предоставляет 2 способа работы с "машинами" (хотя это и не полноценная ВМ в привычном понимании, и концепция больше напоминает OpenVZ) - непосредственно через systemd-nspawn, а также через machinectl. systemd-nspawn - это прямая команда на запуск "машин", тогда как machinectl - это удобный "CLI-фронтенд" для управления "машинами".

machinectl - mission control для ваших "машин"

machinectl представляет с собой полноценный инструмент по работе с "машинами".

Запуск и остановка "машин"

Для этого мы можем использовать команду machinectl start, позволяющий работать с "машинами".

Примерно это так выглядит:

machinectl start container-name

Корень "машины" должна находится в /var/lib/machines/container-name, и это будет касаться всего, что будет управлятся machinectl'ом. Все команды, связанные с запуском и остановки "машин" (в том числе и по включению/отключению их автозапуска) запускаются от имени суперпользователя!

А для остановки:

machinectl stop container-name

Список запущенных "машин"

Для получения списка запущенных "машин" достаточно использовать эту команду:

machinectl list

Вход в "машину"

Для вызова интерактивной login-сессии достаточно использовать следующую команду:

machinectl login container-name

А для прямого входа в shell минуя login-сессию:

machinectl shell [username@]container-name

Автозапуск "машины"

Автозапуск включается следующим образом:

machinectl enable container-name

А для отключения:

machinectl disable container-name

Итоги

systemd-nspawn - это один из лучших инструментов по работе с контейнеризированными ВМ ("машинами"). И именно поэтому сейчас каждый раз, когда включаю свой лэптоп, запускается сразу 2 ОС - моя основная (Arch Linux), и Debian 13 из под systemd-nspawn, которая используется для выхода в Фидонет через изолированное, надёжное, и стабильное окружение, с возможностью до него "достучаться" по SSH через PuTTY (чтобы можно было удобно работать с КОИ-8, который до сих пор используется в GoldED+).

Комментарии (0)