WSL是什么 Windows Subsystem for Linux(简称WSL)是一个在Windows 10/11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。
安装部署 安装wsl 打开Windows的Powershell,运行一下命令
1 2 3 4 5 6 7 8 9 wsl --install --no-distribution wsl -v wsl --set-version 2
安装debian 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 wsl --list --online wsl --install -d Debian wsl --list --verbose wsl --set-default Debian wsl -d Debian
迁移系统 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 wsl --shutdown wsl --export Debian debian.tar wsl --unregister Debian wsl --import Debian e:\WSL e:\WSL\debian.tar wsl -d Debian
遇到的问题 无法使用系统代理
将wsl网络设置为镜像,这样使用的就是windows的网络了。
创建或打开c:\Users\<你的用户名>\.wslconfig
1 2 3 4 5 6 [experimental] autoMemoryReclaim=gradual networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true
1 2 3 4 5 wsl --shutdown wsl -d Debian
debian无法使用systemctl
报错:System has not been booted with systemd as init system (PID 1). Can’t operate. Failed to connect to bus: Host is down
1 2 apt install -y daemonize fontconfig
1 2 3 4 5 6 7 8 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 /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME fi
1 2 %sudo ALL=(ALL) NOPASSWD: /usr/sbin/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]*
1 2 3 4 5 source /etc/profilesystemctl start docker.service
docker运行容器报错
报错:error getting credentials - err: exec: “docker-credential-desktop.exe”: executable file not found in $PATH, out: ``
1 2 3 4 5 6 7 8 9 10 11 12 cd ~/.dockervim config.json systemctl restart docker.service
docker容器无法被主机访问 1 2 3 4 5 6 7 8 vim /etc/docker/damon.json "iptables" : false systemctl restart docker.service