Executando o contêiner baseado no systemd no LXC

4

Atualmente, estou tentando executar um contêiner do Arch Linux usando o LXC em um host do Ubuntu 12.04. O Arch Linux migrou recentemente para o systemd , que, de acordo com vários locais, tem alguns problemas em operar como convidado do LXC. No entanto, muitas dessas fontes estão substancialmente desatualizadas, e eu já vi várias outras fontes sugerindo que é possível executar um convidado baseado em systemd, usando coisas como lxc.autodev ou devtmpfs .

Assim, estou tentando descobrir o seguinte:

  1. É possível executar um convidado baseado em systemd dentro de um contêiner LXC (a partir de fevereiro de 2013)?
  2. Alguém tem um modelo de exemplo / arquivo de configuração para usar com '' 'mkarchroot' 'para obter um em execução?

Atualmente, está usando o LXC versão 0.7.5, mas a atualização não deve ser um problema se isso for necessário.

    
por Impredicative 06.02.2013 / 16:25

3 respostas

1

respondendo a mim mesmo. O modelo lxc-archlinux está disponível no link , mas não inclui a migração para systemd (a partir de 15 de fevereiro de 2013).

existem rootfs utilizáveis como parte do archlinux (por exemplo, link para i686 existe também uma versão de 64 bits)

Eu ainda não executei um convidado lxc, mas eu tenho um chroot i686 funcional de dentro do Ubuntu 12.04 x64. 1 / baixar e descompactar a imagem raiz, montá-lo em algum lugar.

2 / como root (sudo) cp -para o sistema de arquivos raiz para sua localização e chroot dentro dele

3 / edite o /etc/pacman.conf e atualize a linha do arco (por padrão, é auto, o que puxa o arch do uname, mas o ubuntu e o arch não usam a mesma designação)

4 / mount / proc / dev / random e / dev / urandom (isso é necessário por pacman e pacman-key)

Eu não consegui fazer o pacman rodar sem a assinatura do pacote corretamente

5 / pacman-key --init (aqui ele precisa de uma boa fonte de entropia)

6 / pacman-key --populate archlinux

7 / opcional: pacman-key --refresh-keys (precisa de uma conexão com a internet)

8 / edit /etc/pacman.d/mirrorlist para ativar os espelhos relevantes para você.

9 / pacman -Syy

pronto para atualizar ou instalar novos pacotes.

O que está faltando (direly) é a inicialização do contêiner. Eu não estou no ritmo do systemd, mas se eu entendi corretamente, isso é principalmente uma questão de iniciar o dbus e o systemd.

    
por 15.02.2013 / 16:38
4

Eu apenas deparei com sua pergunta. Eu tenho em execução contêineres systemd sob Arch. Eu escrevi algumas anotações no Arch Wiki explicando como fazê-lo funcionar. Você precisa de lxc.autodev e também precisa mascarar alguns serviços que não devem ser executados dentro de um contêiner.

Eu faço um mkarchroot básico e faço algumas alterações (chroot no novo archroot):

ln -s /dev/null /etc/systemd/system/systemd-udevd.service
ln -s /dev/null /etc/systemd/system/systemd-udevd-control.socket
ln -s /dev/null /etc/systemd/system/systemd-udevd-kernel.socket
ln -s /dev/null /etc/systemd/system/proc-sys-fs-binfmt_misc.automount

Na sua configuração de contêiner, você precisa

lxc.autodev = 1

E, se você precisar criar algum nó de dispositivo (provavelmente o será), também precisará

lxc.hook.autodev = /path/to/script

mais o arquivo de script

#!/bin/bash
# LXC Autodev hook.
cd ${LXC_ROOTFS_MOUNT}/dev
mknod .....

O /path/to/script é um local no sistema de arquivos HOST - por exemplo, /etc/lxc/mycontainer-autodev-hook .

    
por 11.05.2013 / 12:13
0

De acordo com o wiki do Gentoo, existe um modelo para o arco que é parcialmente funcional (veja link para detalhes) . o modelo pode ser mais antigo que o comutador para systemd. a correção / solução alternativa inclui o uso do pacman do gerenciador de pacotes do arch. Isso é ok com o gentoo, eu consegui fazer isso funcionar no Ubuntu, mas a compilação é uma tarefa árdua.

o modelo pode não estar presente no pacote lxc fornecido com 12.04

se você recompilar o pacman (e sua biblioteca de suporte), então provavelmente será tão bom usar o archbootstrap ( link ) que é descontroladamente inspirado no debootstrap, criando seu próprio template baseado no debian.

    
por 13.02.2013 / 21:23