WSL2安装debian小记
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的网络了。
- 创建或打开
c:\Users\<你的用户名>\.wslconfig
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
- 关闭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
- 安装软件
# 安装所需软件
apt install -y daemonize fontconfig
- 修改
/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
- 修改
/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]*
- 再次执行
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
本文链接:
/archives/wsl-install
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Willxup!
喜欢就支持一下吧