Window10安装Linux子系统(Ubuntu20.04)
在工作中需要用到Ubuntu系统作为支撑系统来编译QT程序和ARM开发板上用的程序,一直以来都是用VMware Workstation虚拟机运行Ubuntu。VMware Workstation这玩意儿耗内存相当厉害,一般的机器正常情况没事,一旦打开VMware Workstation这个软件,那是卡得会让人抓狂。后来微软终于拥抱了Linux,得以摆脱VMware Workstation直接在Windows下面运行Ubuntu,更重要的是,不再需要以启动双系统的方式即可在Windows系统里面直接运行Ubuntu系统,省时省力省开销。这不得不让我们这些需要和Linux接触的人有些小惊喜。
Windows Subsystem for Linux(简称WSL)是一个在Windows 10和Windows 11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,映像内的实用工具能在此子系统上原生运行。适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
子系统这个功能已经在最新版的Windows 10中自带,如果你的Windows10比较老旧,需要先升级至最新版Windows 10,确保Windows10系统版本高于1606。Win + i 组合键打开系统设置,然后打开Windos系统更新,可以检查更新、升级和查看自己的系统版本号,如图:
在Windows10系统里安装Linux Ubuntu的步骤如下:
一、通过“Windows功能”开启子系统
依次打开控制面板 > 程序和功能 > 启用或关闭Windows功能
勾选“适应于 Linux 的 Windows 子系统”,确定
在确定之后,Windows系统会自动安装一些所需的文件,完成后会提示你重启后才会生效,选择“立即重新启动”。
二、安装Linux Ubuntu20作为Windows10子系统
完成上一步的操作并且重新启动之后,通过左下角的放大镜搜索应用商店。
打开Microsoft Store,搜索Ubuntu,会出来一些结果,点击需要的版本(根据自己需要选择要安装的Ubuntu版本),出现安装按钮,最后点击安装按钮,应用商店会自动下载,安装。安装完成会出现打开按钮。
点击“打开”按钮,Windows终端会弹出,首次安装需要等待几分钟。
安装完成后,需要输入用户名和密码,用户名和密码自行设置即可。
至此,Windows子系统的安装就已经完成了。默认的Linux子系统不具备图形桌面,全命令行运行模式。
三、关于WSL1和WSL2
需要注意的是,如果你需要用到串口通讯,WSL1的串口是与Windows共用的,只是叫法与写法不一样,比如Windows下面的串口是COM1,对应的Linux Ubuntu系统则是/dev/ttyS0。如果因为某些原因您需要升级到WSL2,你会发现Ubuntu的串口通讯与Windows串口不能共用了。所以升级需谨慎。
关于WSL1和WSL2的比较,可参考微软官方文档
查看本机安装的Windows子系统,可以在Windows终端(Windows PowerShell)使用命令:
wsl --status或者:wsl -l -v 都可以
我使用了一段时间,发现WSL1和WSL2两个版本都有一些不尽如人意的地方,有时候不得不需要在WSL版本之间切换的才能达到自己的目的,在Windows终端(Windows PowerShell)使用命令:
wsl --set-version Ubuntu-20.04 2
或者
wsl --set-version Ubuntu-20.04 1
在WSL2和WSL1之间切换。比较痛苦的是,这种切换是需要一段时间的,我等过最久的是30分钟左右。所以后来想了一办法,我在Windows中安装了两个Linux子系统,一个Ubuntu20,使用WSL2;一个是Ubuntu18,使用WSL1。根据自己不同的需要决定使用哪个子系统,必要的时候两个同时打开,同时打开两个子系统,比一个子系统在两个WSL版本之间切换可省事太多了。
四、安装和配置SSH
默认情况下,Windows子系统已经安装SSH,但不好用。先卸载再安装,打开Ubuntu子系统,输入命令:
sudo apt-get remove openssh-server
sudo apt-get install openssh-server
配置ssh:(注意同级目录下可能有ssh_config,不要搞错)
sudo vim /etc/ssh/sshd_config
我修改了3处:
● Port 22
● PasswordAuthentication yes
● PermitRootLogin yes
ssh配置完成之后,使用ssh客户端可成功连接到ubuntu子系统:
全文完