windows配置wsl2,以及docker和wsl2的配置

2021-2-19

配置windows10 开发环境

升级windows10

百度搜索易升

我还未尝试过,有时间可以试一下

wsl2安装

windows10安装wsl2 官方文档

大致如下:

  1. 启用适用于 Linux 的 Windows 子系统

    
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    
  2. 启用虚拟机功能

    
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
    
  3. 重新启动 计算机,以完成 WSL 安装并更新到 WSL 2

  4. 下载 Linux 内核更新包 适用于 x64 计算机的 WSL2 Linux 内核更新包

  5. 将 WSL 2 设置为默认版本

    
    wsl --set-default-version 2
    
    
  6. 安装所选的 Linux 分发 打开 Microsoft Store

  7. 首次启动新安装的 Linux 分发版时,需要为新的 Linux 分发版创建用户帐户和密码。

  8. 检查状态 wsl -l -v

  9. 设置wsl2 默认root登录

    
    ubuntu2004.exe config --default-user root
    
    

    重新打开wsl2 就是默认root登录了,可以设置root密码 sudo passwd

wsl2 设置

  1. 备份原来的源

    
    cp /etc/apt/sources.list /etc/apt/sources_init.list
    
    
  2. 写入阿里源,vim dG 删除所有,写入

    
     deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    
     deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    
    
    
     deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    
     deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    
    
    
     deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    
     deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    
    
    
     deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    
     deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    
    
    
     deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    
     deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    
    
  3. 更新

    
    sudo apt update && sudo apt upgrade
    
    
  4. systemctl命令无法使用?

    现象为在命令行执行systemctl命令,报如下错误:

    
     System has not been booted with systemd as init system (PID 1). Can't operate.
    
     Failed to connect to bus: Host is down
    
    

    解决方案:

    暂且不要使用下面的解决方案。o(╯□╰)o

    很奇怪,有时候好用,有时候不好用,使用curl -vv google.com查看一下

    1. 安装daemonize和fontconfig

      
      apt install -y fontconfig daemonize
      
      
    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. 执行source /etc/profile或者是重新打开terminal,执行systemctl验证是否能够正常操作。

配置wsl科学上网

WSL2获取Win10ip

在Win10 -> WSL2这个方向, 是可以直接通过Localhost来访问的, 但是WSL2 -> Win10这个方向就不能直接访问Localhost了, 需要指定Win10的ip, 想要查看WSL2中Win10的ip, 只需要查看 : cat /etc/resolv.conf


# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:

# [network]

# generateResolvConf = false

nameserver 172.18.176.1

这个172.18.176.1就是在WSL2中Win10的ip,想要方便获取这个IP, 可以直接使用下方命令 :


cat /etc/resolv.conf|grep nameserver|awk '{print $2}'

WSL2设置环境变量

由于上面已经可以获取到Win10的ip, 这个时候就可以很方便的对各种环境变量进行设置, socks5端口为1080, 所以可以直接设置环境变量 ,编辑~/.bashrc,最后加上这些内容


export windows_host=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`

export ALL_PROXY=socks5://$windows_host:1080

export HTTP_PROXY=$ALL_PROXY

export http_proxy=$ALL_PROXY

export HTTPS_PROXY=$ALL_PROXY

export https_proxy=$ALL_PROXY

  

### 这一步很重要,我也是摸索了一段时间

### 由于 apt 不支持scoks,必须要过滤掉

export no_proxy="mirrors.aliyun.com"

  

if [ "`git config --global --get proxy.https`" != "socks5://$windows_host:1080" ]; then

            git config --global proxy.https socks5://$windows_host:1080

fi

Git 配置


git config --global proxy.https socks5://$windows_host:1080

设置小飞机允许局域网连接

测试


curl https://google.com

迁移WSL到其他盘

下载 LxRunOffline

  1. 从github下载压缩包,下载地址

  2. 首先需要停止自己的WSL,先执行wsl --shutdown,stop所有的wsl

  3. 解压,执行里面的exe文件,

    
    .\LxRunOffline.exe l 
    
    #或者
    
    .\LxRunOffline.exe list
    
    

    查看所有的wsl

    
    PS F:\LxRunOffline-v3.5.0-mingw> .\LxRunOffline.exe l
    
    Ubuntu-20.04
    
    
  4. 迁移到F盘

    
    .\LxRunOffline.exe move -n Ubuntu-20.04 -d F:\WSL\Ubuntu
    
    

    等待迁移完成

  5. 完成后使用命令查看有没有成功

    
    .\LxRunOffline.exe di -n Ubuntu-20.04
    
    

    输出

    
    F:\WSL\Ubuntu
    
    

    即迁移成功

  6. LxRunOffline 还有一些 额外的功能

    1. 使用 LxRunOffline 安装自定义发行版

    2. 备份/恢复 WSL 发行版

    3. 不使用官方的wsl命令,使用 LxRunOffline 运行 WSL

安装Docker

下载docker

  1. 从官网下载 docker desktop for windows 下载链接

  2. 安装完可以从windows 和 wsl中查看 docker --version

配置oh my zsh

参考我的另一篇mac配置文章,文章链接

有很多相似的地方

文件管理 \\wsl$\Ubuntu-20.04\可以访问到wsl2内部

配色喜欢 Dracula,也可以在这里找自己喜欢的

单独贴出来


{

   "name": "Dracula",

   "black": "#000000",

   "red": "#ff5555",

   "green": "#50fa7b",

   "yellow": "#f1fa8c",

   "blue": "#bd93f9",

   "purple": "#ff79c6",

   "cyan": "#8be9fd",

   "white": "#bbbbbb",

   "brightBlack": "#555555",

   "brightRed": "#ff5555",

   "brightGreen": "#50fa7b",

   "brightYellow": "#f1fa8c",

   "brightBlue": "#bd93f9",

   "brightPurple": "#ff79c6",

   "brightCyan": "#8be9fd",

   "brightWhite": "#ffffff",

   "background": "#1e1f29",

   "foreground": "#f8f8f2"

}

主题使用


git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

在 zsh 的配置文件 ~/.zshrc 中设置 ZSH_THEME="powerlevel10k/powerlevel10k" 即可,source 一下

执行 p10k configure配置

配置:


git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

  

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

  

# 然后也是改配置文件,把这个插件添加进去

vim ~/.zshrc

  

# 找到 `plugins` .默认应该是 plugins=(git) 改为

plugins=(git z zsh-autosuggestions zsh-syntax-highlighting)

  

# 保存,执行文件

source ~/.zshrc

评论区