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
声明:本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 你好!刘
本文地址:WSL2安装debian命令
本文地址:WSL2安装debian命令
发表评论