WSL2安装debian命令

服务器技术 3 天前 回复

,

WSL是什么

Windows Subsystem for Linux(简称WSL)是一个在Windows 10/11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。

安装部署

安装wsl

打开Windows的Powershell,运行一下命令

# 安装wsl,不指定linux发行版
wsl --install --no-distribution


# 查看wsl的版本信息
wsl -v


# 设置wsl的版本
# wsl --set-version <version:1/2>
wsl --set-version 2

安装debian

# 查看所有可安装的linux发行版本
wsl --list --online

# 安装debian系统 
# wsl --install <Distribution>
wsl --install -d Debian

# 查看已安装的linux子系统 
# wsl -l -v
wsl --list --verbose

# 设置默认linux发行版 
# wsl --set-default <Distribution>
wsl --set-default Debian

#进入debian系统 wsl --distribution <Distribution> --user <UserName>
wsl -d Debian

迁移系统

# 关闭所有实例
wsl --shutdown

# 导出系统 
# wsl --export <Distribution> <FileName>.tar
wsl --export Debian debian.tar

# 卸载系统 
# wsl --unregister <Distribution>
wsl --unregister Debian

# 导入系统 
# wsl --import <Distribution> <InstallLocation> <FileName>.tar
wsl --import Debian e:\WSL e:\WSL\debian.tar

# 进入系统
wsl -d Debian

遇到的问题

无法使用系统代理

将wsl网络设置为镜像,这样使用的就是windows的网络了。

1、创建或打开c:\Users\<你的用户名>\.wslconfig

[experimental]
autoMemoryReclaim=gradual  
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

2、关闭wsl子系统重新启动

# 关闭所有实例
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、安装软件

# 安装所需软件
apt install -y daemonize fontconfig

2、修改/etc/profile文件,再文件末尾添加

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

3、修改/etc/sudoers文件,再文件末尾添加

%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]*

4、再次执行systemctl命令,不再报错了

#重载
source /etc/profile

#启动docker
systemctl start docker.service

docker运行容器报错

报错:error getting credentials - err: exec: "docker-credential-desktop.exe": executable file not found in $PATH, out: ``

# 进入dockers目录
cd ~/.docker

# 修改config.json文件
vim config.json

#------------------------------
#将 credsStore 修改为 credStore
#------------------------------

# 重启docker
systemctl restart docker.service

docker容器无法被主机访问


vim /etc/docker/damon.json

#------------------------------
#添加:
"iptables": false
#------------------------------

systemctl restart docker.service

参考文章:
https://blog.willxup.top/archives/wsl-install

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)