Могу ли я использовать systemd-nspawn для настройки установки "chroot" (в этом случае Debian с использованием debootstrap) перед его загрузкой? Т.е. неконтролируемая установка и настройка.
Мне нужно установить раскладку, имя хоста, возможно, часовой пояс и локаль. И я хотел бы использовать инструменты systemd, такие как hostnamectl, localectl, timedatectl,...
Возможно ли это и как это сделать или мне следует использовать файлы конфигурации? Они вообще распознаются systemd? Например, если я укажу имя хоста в /etc/hostname, распознается ли оно правильно? Могу ли я также установить раскладку клавиатуры таким образом?
решение1
Является ли это возможным
да.
Я запустил Debian в nspawn. Работает.большойс минимальным количеством установок.
С другой стороны, если вы делаете это с установкой на настольном компьютере, то следует ожидать, что вам придется столкнуться с одной или двумя небольшими проблемами, которые придется решать.
следует ли использовать файлы конфигурации? Они вообще распознаются systemd? Например, если я укажу имя хоста в /etc/hostname, оно будет распознано правильно?
/etc/hostname определенно работает, он поддерживается systemd, это именно то, что hostnamectl
нужно редактировать. В общем, сложно понять, о чем вы здесь беспокоитесь. Debian Jessie по умолчанию использует systemd, поэтому любая документация, написанная для Debian Jessie о том, как что-то настраивать, например, в приложении debootstrap руководства по установке, должна работать и для systemd. (Хотя это приложение скорее набросок и не показывает, как заставить его работать без присмотра).
Из того, что вы сказали, вас также может заинтересовать systemd-firstboot
. Я не пробовал его использовать и, насколько я понимаю, он в некотором роде ограничен, но он может быть информативным.
В любом случае, я думаю, вам нужно будет использовать systemd-nspawn --boot
, добавив служебный файл, аналогичный тому, который используется systemd-firstboot. Если вы не загрузите систему, например, hostnamectl
не будет работать... После того, как ваш скрипт завершится тем или иным образом, ему также нужно будет выключить систему.
Одна из заметных проблем заключается в том, что если у вас установлены какие-либо сетевые службы (включая avahi, cups, ...), вы, вероятно, захотите запустить nspawn или --net-veth
эквивалент, чтобы избежать конфликтов с сетевыми службами хоста. Чтобы получить сетевой доступ на этом этапе (например, для установки дополнительных пакетов), настройте DHCP-клиент на интерфейсе host0
.