Estou tentando entender e brincar com o systemd-nspawn porque gostaria de executar uma instalação de teste do Debian para mim mesmo sem habilitar os repositórios de teste no meu sistema estável principal do Debian.
Eu escrevi este script de shell para ajudar a configurar o processo Debootstrap:
#!/bin/sh
dirpath="$1"
if [ -z "$dirpath" ]; then
dirpath="debian-testing-devel"
elif ! [ -d "$dirpath" ]; then
mkdir -p "$dirpath"
fi
echo "NOTICE: You must run `debootstrap` as a root user! Requesting sudo privilage..."
sudo debootstrap --include="dbus,systemd-container" testing "$dirpath" "https://deb.debian.org/debian"
echo "Debootstrap has finished!"
echo "You may log in to your system by using: systemd-nspawn -D ${dirpath} -U --machine debian-testing-devel"
echo "Make sure to set a secure root password!"
Algo assim, basicamente. Eu o chamei de "debian-testing-devel". Então aprendi rapidamente que machinectl
só posso acessar coisas em "/var/lib/machines/", então movi meu diretório criado para lá. De qualquer forma...
Em seguida, loguei com systemd-nspawn -D /var/lib/machines/debian-testing-devel/ -U --machine debian-testing-devel
, configurei minha senha e tive que adicionar "pts/0" e "pts/1" a "/etc/securetty" para poder fazer login como root.
Quando tentei fazer login com machinectl login debian-testing-devel
, recebi "Falha ao obter login PTY: erro de protocolo"
Então, entrei no contêiner com systemd-nspawn
novamente, descobri que a instalação do pacote foi interrompida por algum motivo com dbus
, então executei apt -f install
, o que pareceu consertar ... mais ou menos. Outra fonte Online afirmou que eu também tinha que instalar systemd
no próprio contêiner, não apenas no DBus, para me livrar do erro de protocolo, então tentei isso!
E, finalmente, quando tento executar machinectl login debian-testing-devel
novamente, ainda fico preso em "Falha ao obter o login PTY: ..." desta vez, diz, Failed to get login PTY: Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms)
.
Então, eu realmente não tenho certeza do que fazer a seguir. Tentar pesquisar esse problema on-line não está trazendo muitos resultados e não tenho certeza do que está acontecendo. Tem sido um pouco frustrante tentar aprender essas coisas e fazê-las funcionar quando... nada do que tento fazer parece funcionar...
Qualquer ajuda é apreciada!
Ok, então finalmente consegui fazer login novamente. Depois de verificar meu diretório, percebi que havia alguns arquivos de propriedade de
root:root
, e outros de propriedade de(random id):(random id)
, mas depois de reconstruí-lodebootstrap
novamente, certificando-me de que terminou sem erros, tentei executarsystemd-nspawn
o comando com o-U
sinalizá-lo, deixe-me entrar bem. Eu realmente gostaria que as pessoas que são novas em contêineres tivessem mensagens de erro melhores que fossem claramente óbvias sobre o que estava errado. Porque fiquei preso nisso por alguns dias, sem saber que meu diretório / raiz do contêiner estava ruim. Então apenas... sim, isso tudo é meio chato. Definitivamente, farei um instantâneo e backup de minhas pastas de contêiner agora, porque aparentemente elas podem ser corrompidas MUITO facilmente apenas por esquecer de usar o usuário sem privilégios. Caramba. Ainda sinto que a estabilidade do contêiner e a facilidade de uso ainda têm um longo caminho a percorrer, IMO.