欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Installing Linux Using Windows Subsystem for Linux(WSL)

程序员文章站 2022-06-12 10:32:09
...

因为现在拿到的电脑OS版本比较低,只能支持wsl1,所以该文章只针对wsl1进行配置和使用。(ps:wsl1没有完整的linux内核,所以很多功能不支持,在这里我只针对我遇到的一些问题提供一些解决方法。也欢迎大家有更好的解决方法可以和我一起分享)

启用Windows的linux支持项:

打开 控制面板-> 程序 ->启用/关闭Windows功能
Installing Linux Using Windows Subsystem for Linux(WSL)
勾选Windows Subsystem for Linux 和 Virtual Machine Platform
Installing Linux Using Windows Subsystem for Linux(WSL)
然后等待配置完成,重启电脑。

下载linux 软件

打开 Windows 应用商店->输入linux -> 下载linux 18.08 LTS
Installing Linux Using Windows Subsystem for Linux(WSL)
等下载完成,启动继续完成后续安装。之后会要求你设置一个用户名和密码,这个是指登录Linux系统的用户名和密码,跟windows系统的用户无关,自己设置一个就可以。
Installing Linux Using Windows Subsystem for Linux(WSL)
然后我们在shell里输入lsb_release -a 查看Linux系统信息。
Installing Linux Using Windows Subsystem for Linux(WSL)
到这里一个纯命令行的Linux环境就好了。现在我们来鼓捣图形界面。

安装linux图形界面xfce4

sudo -i
apt install xfce4 tightvncserver -y// this step to install GUI

#if meet error log:
#dpkg: unrecoverable fatal error, aborting:
#unable to truncate for updated status of 'firefox': Invalid argument
#E: Sub-process /usr/bin/dpkg returned an error code (2)
 
#then run :
dpkg --configure -a
apt --fix-broken install
apt update
apt upgrade -y

在Windows上启动并访问桌面的两种方式

1.通过xrdp和远程桌面

apt install xrdp -y
echo "xfce4-session" >~/.xsession
 
vim /etc/xrdp/xrdp.ini // port:3389 -> 3391 (avoid conflict with other service)
service xrdp restart

启动xrdp后,我们可以看到:
Installing Linux Using Windows Subsystem for Linux(WSL)
现在可以用远程桌面链接linux的GUI了
Installing Linux Using Windows Subsystem for Linux(WSL)
Installing Linux Using Windows Subsystem for Linux(WSL)
2.通过vcxsrv来构建桌面
首先下载vcxsrv windows X server,等安装完成我们会在桌面看到X-Launch图标,以默认设置启动,现在我们来设置linux图形界面启动设置。

> echo 'export DISPLAY=:0.0' >> ~/.bashrc
> source ~/.bashrc
> startxfce4

然后我们就能看到桌面启动了。这种方式构建的图形桌面,桌面窗口和应用窗口分离,我们可以只保留需要的应用窗口就可以了。桌面可以关掉,我觉得还挺方便的。

在WSL1中安装并使用Docker

安装Docker
1.通过命令行安装(也可以直接根据官方文档来执行)

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

2.通过.deb包安装Docker

首先下载包,总共需要下载三个,可以在https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/上选择最新版:
https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/containerd.io_1.2.0-1_amd64.deb
https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce-cli_18.09.03-0ubuntu-bionic_amd64.deb
https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_18.09.03-0ubuntu-bionic_amd64.deb

然后按顺序安装:
按顺序安装三个包,注意顺序不能错:

sudo dpkg -i docker-ce-cli_18.09.0~3-0~ubuntu-bionic_amd64.deb
sudo dpkg -i containerd.io_1.2.0-1_amd64.deb
sudo dpkg -i docker-ce_18.09.0~3-0~ubuntu-bionic_amd64.de

然后docker -v 能查看dockers的版本,但这时你会发现,如果要用docker pull的时候,就会报错:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See ‘docker run --help’.
(ps: 基本上是其他的docker命令都会出这个问题,除了查看版本。)
此时,你可能会尝试通过执行systemctl start docker命令来启动Docker服务,因为错误信息告诉我们,Docker的守护进程没有启动,可你会发现这样依然报错。可是为什么呢?明明Docker都在WSL里安装成功了啊,事实上除了docker -v不需要依赖守护进程,其余的命令都需要依赖守护进程,而WSL恰恰是不支持docker-engine的,所以,一种曲线救国的思路就是,让WSL去连接宿主机上的docker engine。所以确保windows系统开启Hyper-V,然后安装Docker for Windows,并打开对宿主机Docker的监听.
接下来,我们给WSL中的Docker设置宿主机的地址,在终端中输入下列命令即可:

echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

这样我们就可以正常使用docker了。
如果你在使用Docker的过程中,需要处理分区挂载相关的东西,一个比较好的建议是修改WSL的配置文件(如果不存在需要自行创建):

sudo nano /etc/wsl.conf
[automount]
root = /
options = "metadata"

cannot read realtime clock: Invalid argument

如果你在启动图形界面的时候遇到这个错误,那可能是内部系统时钟出了问题。
要修复这个问题,可以通过下面的命令来实现:

wget https://launchpad.net/~rafaeldtinoco/+archive/ubuntu/lp1871129/+files/libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb
dpkg --install libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb
apt-mark hold libc6
apt --fix-broken install
apt full-upgrade

执行之后,再启动图形界面就不会出现这个问题了。

如果还有遇到其他问题,以后再更新~