适用于 Linux 的 Windows 子系统 WSL

Windows作为刷剧打游戏等日常使用是相当友好,但在开发上,相比于Unix/Linux还是拉了点。所以微软自家也搞出了个Windows下的Linux子系统,相当于官方支持的一个虚拟机,相比于VMWare在系统配置上又省事了很多。

目前的应用思路是将MySQL、Redis等通过WSL实现在Windows上的运行。

由于某些未知原因,我的电脑上升不了WSL2,难顶

安装

系统版本需要 Win 10 2004及以上

控制面板 > 程序 > 程序与功能 > 启用或关闭windows功能中需要勾选“适用于Linux的Windows子系统”,“虚拟机平台”

  1. 微软商店直接下载
  2. wsl --install进行安装

使用

wsl    # 未提供命令行,将启动默认分发
wsl --help
wsl --exec <CommandLine>  # 在不使用默认linux Shell 的情况下执行指定的命令  ,-e

wsl --set-default-version 2 # 更改新分发的默认安装版本为wsl2
wsl --set-version <分发> 2   # 修改新分发的安装本版为wsl2

wsl --list --online                  # 可用的可安装的分发
wsl -l -o
wsl --install --distribution Ubuntu  # 安装Ubuntu分发  -d

wsl --list --all        # 列出所有分发  
wsl -l -a
wsl --list --running    # 列出正在运行的分发 
wsl --list --verbose    # 列出所有分发的详细信息  
wsl -l -v


wsl --status           # 显示wsl系统的状态
wsl --terminal <分发>   # 终止指定的分发
wsl --shutdown 		   # 立即终止所有运行的分发

<DistributionName> config --default-user <Username>  # 更改发行版的默认用户(此命令不适用于导入的发行版,因为这些发行版没有可执行启动器)

由于WSL 中的 systemd 不是原生的,对一些服务的启动管理不能使用systemctl,而是需要使用sudo service xxx staus

WSL迁移

怎么说WSL也可以看作是一个操作系统了,又一个操作系统挂载在C盘难受的一批,占着自己的系统盘(整整12G+!),一个解决方法就是迁移到其他盘。

默认的安装位置为:C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_**\LocalState\rootfs,这里对应的就是WSL中Ubuntu的文件系统。

  1. 查看正在运行的WSL

    wsl -l --running
    # Ubuntu-20.04
    
  2. 终止当前正在运行的WSL

    wsl --shutdown
    
  3. 将需要迁移的WSL导出

    wsl --export Ubuntu-20.04 D:\WSL\ubuntu2004.tar
    
  4. 将导出的文件放到需要保存的地方,进行导入(此处的版本需要和原来一样)

    wsl --import Ubuntu2004 D:\WSL\ubuntu2004 D:\WSL\ubuntu2004.tar --version 2
    
  5. 将原有的发布进行卸载

    wsl --unregister Ubuntu-20.04
    

操作过程中遇到“RPC服务器连接问题”,导致导入这一步失败。(还好没有导出后就卸载)

—— 2022/8/18 ——
主要是因为版本没选对,目前我的电脑在使用版本2的时候还存在问题。

迁移之后,默认登录用户就会变成root,但不影响原用户的存在,可以改为使用 /etc/wsl.conf 文件(需要新建)来更改导入的发行版的默认用户。具体见WSL 中的高级设置配置

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

Q&A

apt/apt-get无法更新到最新库

原因:DNS没有配置,不能解析

解决(参考【1】)

sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值