Installing Linux Using Windows Subsystem for Linux(WSL)
因为现在拿到的电脑OS版本比较低,只能支持wsl1,所以该文章只针对wsl1进行配置和使用。(ps:wsl1没有完整的linux内核,所以很多功能不支持,在这里我只针对我遇到的一些问题提供一些解决方法。也欢迎大家有更好的解决方法可以和我一起分享)
启用Windows的linux支持项:
打开 控制面板-> 程序 ->启用/关闭Windows功能
勾选Windows Subsystem for Linux 和 Virtual Machine Platform
然后等待配置完成,重启电脑。
下载linux 软件
打开 Windows 应用商店->输入linux -> 下载linux 18.08 LTS
等下载完成,启动继续完成后续安装。之后会要求你设置一个用户名和密码,这个是指登录Linux系统的用户名和密码,跟windows系统的用户无关,自己设置一个就可以。
然后我们在shell里输入lsb_release -a
查看Linux系统信息。
到这里一个纯命令行的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后,我们可以看到:
现在可以用远程桌面链接linux的GUI了
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
执行之后,再启动图形界面就不会出现这个问题了。
如果还有遇到其他问题,以后再更新~
推荐阅读
-
Connect SQL Server from Linux Client using Windows Authentication and troubleshoot steps
-
5、Linux常用技巧:Windows10访问Ubuntu子系统(WSL)的桌面环境
-
微软 Win11/Win10 一个命令安装 Windows Linux 子系统(WSL)
-
WSL(Windows Subsystem for Linux) Ubuntu 下byobu状态栏错误的问题
-
wsl-windows下具有真实质感的linux环境
-
Win11应用商店上架 Windows Linux 子系统(WSL):程序升级更快,无需升级操作系统
-
通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序的方法
-
初尝WSL(Windows Subsystem for Linux)
-
Windows Subsystem for Linux
-
WSL(Windows Subsystem for Linux) Ubuntu安装mysql