[TIP] Instalando LXD en Ubuntu 20.04 (bajo WSL2)

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jmtella
    Administrator
    • Nov
    • 19902

    [TIP] Instalando LXD en Ubuntu 20.04 (bajo WSL2)

    Para los que hayan seguido los artículos de LXD (en este orden)
    En WSL 2 Ubuntu 20.04 no puede ejecutar paquetes que requieren snapd como es el caso de LXD, a no ser que se cambiase el microkernel de WSL. (no aconsejado)

    Pero si conocemos algo de Linux...supongo que los namespaces y el demonizar procesos os suena... vamos a hacerlo con Ubuntu 20.04.

    Ahora actualizamos el sistema e instalamos los paquetes que son necesarios:
    Código:
    sudo apt update && sudo apt upgrade
    sudo apt install -yqq daemonize dbus-user-session fontconfig
    sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
    exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
    Si ejecutamos ahora:

    snap version

    veremos que está correctamente configurado.

    Para tener todo el entorno preparado cada vez que reinicimos, nos creamos el fichero /etc/profile.d/00-wsl2-systemd.sh

    Hace falta hacerlo con privilegios por tanto:

    sudo nano /etc/profile.d/00-wsl2-systemd.sh

    Y le copiamos el contenido:

    Código:
    SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic-target$' | grep -v unshare | awk '{print $2}')
    
    if [ -z "$SYSTEMD_PID" ]; then
       sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic-target
       SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic-target$' | grep -v unshare | awk '{print $2}')
    fi
    
    if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
       exec sudo nsenter -t $SYSTEMD_PID -a su - $LOGNAME
    fi
    Igualmente damos permisos de SUDO. Para ello:

    sudo visudo

    Y le añadimos al final:
    Código:
    %sudo ALL=(ALL) NOPASSWD: /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic-target
    %sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*
    Usar copiar y pegar ya que debe ser exaco los permisos de sudo con los coamanso del script anterior,

    BIen, salimos y terminaos la instlacion de Ubuntu con el comando:

    wsl --terminate <instancia>

    Siendo <instancia> el nombre con el que lo tengamos registrado. Se pueden ver todos los registrados (instlados) con el comando:

    wsl -l -v

    Una vez terminado lo arrancamos de nuevo ya ya podremoa ejecutar:

    sudo lxd init (ver articulos anteriores para configurarlo)

    sudo lxc ... parametros.... (todo lo definido en anteriores articulos)

    NOTA: Por defecto el wsl no arranca las instancias de los containers... para que arranque sin necesida de hacer logon podemos ejecutar (en una bateria por ejemplo):

    Código:
    wsl -d <instancia ubunte-2004> -u root /bin/sh /etc/profile.d/00-wsl2-systemd.sh ^& sleep 3 >nul
    Lo anterior es valido *solo* para Ubuntu 20.04 en el que hayamos demonizado el systemd.
Trabajando...
X