zoukankan      html  css  js  c++  java
  • Win10安装WSL

    记录一下安装wsl2的步骤。

    安装WSL

    1.检查更新win10版本

    cmd中使用winver命令来检查当前win的版本,如果版本太低,可以在 设置 - 更新和安全 - Windows 更新中更新。但是有时候会没有提示能更新到最新的版本,那就可以使用微软提供的更新助手

    版本要求如上,如果没有别的顾虑,建议升级到最新版。

    2.启用虚拟功能

    powerShell 中以管理员身份运行下面命令以确保开启适用于 Linux 的 Windows 子系统虚拟机平台配置项。

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

    运行完成之后,需要重启电脑完成安装。

    3.下载Linux内核更新程序包

    下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi,下载安装即可。

    4.安装 Linux 分发版本

    打开微软应用商店,搜索 Ubuntu,在列表中选择最新的长期支持版本 20.04 LTS 并安装启动。

    5.确保 WSL 的版本为 2.0

    使用 wsl -l -v命令查看安装版本是否正确(VERSION为2)。

    如果显示当前不是 WSL 2 版本,可以通过以下命令设置 WSL 的默认版本:

    # wsl --set-version <Linux发行版名称> 2
    wsl --set-version Ubuntu-20.04 2
    

    安装成功

    > wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Running         2
    

    迁移WSL 到非系统盘

    默认WSL总是安装到C盘,这样对于C盘空间紧张的用户不友好,我们可以使用LxRunOffline工具来迁移WSL到其他磁盘分区。

    LxRunOffline的下载链接:https://github.com/DDoSolitary/LxRunOffline/releases。在Win10 PowerShell运行需要下载LxRunOffline-vx.x.x-msvc.zip版本。解压到任意目录即可使用。

    LxRunOffline是一个第三方WSL Linux发行版管理工具,可以认为是wsl命令的增强版。它可以安装和卸载Linux发行版,迁移,复制,导入导出和设置环境变量等。具体的使用帮助可执行.LxRunOffline.exe h查看命令介绍。

    迁移过程分为3步:

    1.获取准备迁移的发行版名称

    执行:

    PS C:UsersxxxDesktop> .LxRunOffline.exe list
    Ubuntu-20.04
    

    获取系统当前已安装的发行版。例子中返回的发行版名称为Ubuntu-20.04

    2.执行迁移命令

    格式如下:

    .LxRunOffline.exe m -n <发行版名称> -d <目标路径>
    

    比如我们要将Ubuntu-20.04移动到D:WSLUbuntu-20.04,执行如下命令:

    .LxRunOffline.exe m -n Ubuntu-20.04 -d D:WSLUbuntu-20.04
    

    等待命令执行完毕返回。

    3.查看迁移后发行版的安装路径

    执行:

    PS C:UsersxxxDesktop> .LxRunOffline.exe di -n Ubuntu-20.04
    D:WSLUbuntu-20.04
    

    返回的安装位置是D:WSLUbuntu-20.04,说明迁移成功。

    限制Vmmem 进程内存占用

    我们可以通过WSL的配置文件,限制Vmmem进程的内存占用。在%UserProfile%目录创建.wslconfig文件,添加如下内容:

    [wsl2]
    memory=6GB
    swap=0
    localhostForwarding=true
    

    这里限制了vmmem进程最大内存不超过6GB,不使用交换空间。
    创建完配置文件后,执行wsl --shutdown关闭WSL,再重新启动即可生效。

    关闭虚拟机

    WSL2实际上是在虚拟机中运行。我们一旦进入WSL2 Linux的命令行,虚拟机会自动启动运行。如果我们查看任务管理器,会发现一个Vmmem进程。如下所示:

    该进程是虚拟机的进程。它比较占内存。不使用WSL2的时候我们可以关闭它以节省内存。关闭WSL2 Linux的方法如下。使用管理员打开CMD,运行:

    wsl --shutdown
    

    和宿主机Win10文件系统相互访问

    在Win10下访问Linux子系统文件

    进入CMD或者PowerShell,输入:

    cd \wsl$Ubuntu-20.04
    

    或者打开文件资源管理器,在地址栏输入\wsl$Ubuntu-20.04,也可以跳转到Linux子系统根目录。

    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
    

    解决方案如下:

    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验证是否能够正常操作。

    安装Docker

    首先完成软件源设置

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    sudo add-apt-repository 
       "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu 
       $(lsb_release -cs) 
       stable"
    
    sudo apt update
    

    配置完成软件源之后下一步是安装Docker,命令如下:

    sudo apt install -y docker-ce
    

    启动

    sudo systemctl start docker
    sudo service docker start
    

    另:卸载docker

    # 卸载软件
    sudo apt-get purge docker-ce
    # 删除 docker 的容器,镜像,卷等存储
    sudo rm -rf /var/lib/docker
    

    安装Podman

    Podman已成为CentOS8官方御用容器管理器,并且Kubernetes1.12已经放弃对Docker的支持。相比Docker,Podman无需守护进程,不强制要求使用root用户来管理容器,具有更好的灵活性和安全性。Podman使用方式和Docker完全相同,兼容Docker的镜像格式。
    下面为Podman的安装脚本:

    . /etc/os-release
    sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
    wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O Release.key
    sudo apt-key add - < Release.key
    sudo apt-get update -qq
    sudo apt-get -qq -y install podman
    sudo mkdir -p /etc/containers
    echo -e "[registries.search]
    registries = ['docker.io', 'quay.io']" | sudo tee /etc/containers/registries.conf
    

    安装VcXsrv

    1.安装VcXsrv

    安装地址:https://sourceforge.net/projects/vcxsrv/

    2.WSL安装xface desktop

    sudo apt-get install xfce4-terminal
    sudo apt-get install xfce4
    

    安装过程中会出现要你选择登录界面的选项,选择gdm安装即可。

    3.配置

    vim ~/.bashrc
    

    后面添加

    export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
    

    4.打开XLaunch

    一路next

    完成之后会跳出一个黑框,表示启动成功。

    5.启动桌面

    startxfce4
    

    虚拟桌面即启动

    参考:

    https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
    https://github.com/microsoft/WSL/issues/4166
    https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-18945
    https://forum.snapcraft.io/t/running-snaps-on-wsl2-insiders-only-for-now/13033
    https://www.jianshu.com/p/a20c2d58eaac
    https://dmego.cn/2019/12/21/make-wsl2-as-a-productivity-tool
    https://www.jianshu.com/p/dd1d67fee3aa

  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/zjfjava/p/15256606.html
Copyright © 2011-2022 走看看