<> = wsl = Windows Subsystem for Linux == Install docker in wsl ubuntu 20.04.6 LTS == {{{#!highlight sh sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $USER sudo service docker start docker run hello-world sudo apt install net-tools docker pull vbodocker/cherrypy-test docker run --rm --name ctest -P -d vbodocker/cherrypy-test docker stop ctest docker system prune -a docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest docker exec -it some-mariadb bash }}} == Install k3s == {{{#!highlight sh curl -sfL https://get.k3s.io | sh - sudo k3s server > /tmp/k3s.log 2>&1 & sudo chmod 644 /etc/rancher/k3s/k3s.yaml kubectl get node }}} == Run cherrypy-test in k3s == {{{#!highlight sh cd ~ git clone https://github.com/vborrego/cherrypy-test.git cd cherrypy-test/ cat README.md kubectl apply -f cherrypy-test-deployment.yaml curl $(kubectl get services | grep cherry | awk '//{print $3}'):8080 kubectl get services kubectl get deployment cat cherrypy-test-deployment.yaml kubectl delete -f cherrypy-test-deployment.yaml }}} == Certificate issue == Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2023-12-12T22:48:20Z is after 2023-05-17T21:01:11Z {{{#!highlight sh sudo rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json sudo kubectl --insecure-skip-tls-verify=true delete secret -n kube-system k3s-serving kill sudo k3s server > /tmp/k3s.log 2>&1 & sudo chmod 644 /etc/rancher/k3s/k3s.yaml kubectl get pods }}} == Install debian in WSL == {{{#!highlight sh wsl --install -d Debian #Installing, this may take a few minutes... #Please create a default UNIX user account. The username does not need to match your Windows username. #For more information visit: https://aka.ms/wslusers #Enter new UNIX username: wsl #New password: #Retype new password: #passwd: password updated successfully #Installation successful! wsl -d debian }}} {{{#!highlight sh sudo apt update sudo apt upgrade sudo apt install ca-certificates curl gnupg lsb-release apt-transport-https podman lsb_release -a sudo apt autoremove podman run hello-world curl -sfL https://get.k3s.io | sh - sudo k3s server > /tmp/k3s.log 2>&1 & sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=4194304 sudo chown root:root /swapfile1 sudo /sbin/mkswap /swapfile1 sudo /sbin/swapon /swapfile1 sudo chmod 0600 /swapfile1 sudo update-alternatives --config iptables # 1 /usr/sbin/iptables-legacy 10 manual mode sudo k3s server > /tmp/k3s.log 2>&1 & sudo chmod 644 /etc/rancher/k3s/k3s.yaml kubectl get pods sudo apt install openjdk-21-jdk sudo apt install nodejs kubectl get node cd ~ sudo apt install git git clone https://github.com/vborrego/cherrypy-test.git cd cherrypy-test/ kubectl apply -f cherrypy-test-deployment.yaml curl $(kubectl get services | grep cherry | awk '//{print $3}'):8080 kubectl get deployments kubectl get pods kubectl logs $(kubectl get pods | tail -1 | awk '//{print $1}') }}} == Install Alpine linux using rootfs == {{{#!highlight sh # in windows git bash wget https://dl-cdn.alpinelinux.org/alpine/v3.24/releases/x86_64/alpine-minirootfs-3.24.2-x86_64.tar.gz wsl --import Alpine-3-24-2 %USERPROFILE%\Alpine-3-24-2 alpine-minirootfs-3.24.2-x86_64.tar.gz wsl -d Alpine-3-24-2 cd ~ apk update apk add bash sudo nano openssh-client openjdk25 less vim git git-lfs wget curl jq zip unzip maven graphviz docker-engine docker-cli docker-cli-compose aws-cli aws-session-manager-plugin openrc docker docker-openrc containerd runc chromium util-linux openssl py3-pip adduser wsl adduser wsl wheel visudo # uncomment wheel exit wsl -d Alpine-3-24-2 -u wsl cd ~ whoami sudo bash echo -e "mkdir -p /run/openrc\ntouch /run/openrc/softlevel\napk update\ntouch /run/openrc/softlevel\ntouch /etc/network/interfaces\nservice docker start\n" > /system_startup.sh chmod 755 /system_startup.sh echo -e '[user]\ndefault=wsl\n\n[boot]\ncommand="/system_startup.sh"' > /etc/wsl.conf apk update rc-service docker start rc-update add docker boot adduser root docker addgroup wsl docker mkdir -p /run/openrc touch /run/openrc/softlevel apk update touch /etc/network/interfaces touch /run/openrc/softlevel service docker start exit exit wsl -d Alpine-3-24-2 docker run hello-world exit wsl -d Alpine-3-24-2 --shutdown wsl -d Alpine-3-24-2 docker ps docker run hello-world exit wsl --export Alpine-3-24-2 alpine-3-24-2.tar.gz --format tar.gz wsl --unregister Alpine-3-24-2 }}} WSL rootfs is a tarball {{{#!highlight sh cat ubuntu.tar | docker import - ubuntu-wsl docker run -it ubuntu-wsl /bin/bash docker export container > rootfs.tar }}} WSL, provides the kernel, file system provided by me == Install Slackware based on docker container == {{{#!highlight sh docker pull liveslak/slackware docker run --rm -d -it --name slack15 liveslak/slackware cat docker export slack15 > slack15.tar cp slack15.tar /mnt/c/Users/userx/ wsl --import slack15 %USERPROFILE%\slack15 %USERPROFILE%\slack15.tar wsl -d slack15 cd / cat /etc/os-release useradd -m -G wheel -s /bin/bash wsl password wsl slackpkg update slackpkg upgrade-all visudo # uncomment wheel echo -e '#!/bin/sh \n /etc/rc.d/rc.crond start' > /startup.sh chmod +x /startup.sh echo -e "[user]\ndefault=wsl\n\n[boot]\ncommand="/startup.sh"" > /etc/wsl.conf mv /etc/fstab /etc/fstab.old touch /etc/fstab slackpkg install procps elogind nano vim sodium ps uax echo -e "export PATH=$PATH:/sbin/:/usr/sbin/\nexport SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt\ncd ~\n" > /etc/profile update-ca-certificates curl https://www.google.com env exit wsl --export slack15 slack15.tar.gz --format tar.gz wsl -d slack15 --shutdown wsl --unregister slack15 wsl --list wsl --import slack15 %USERPROFILE%\slack15 slack15.tar.gz wsl -d slack15 }}}