admin 管理员组

文章数量: 887021

在工作中需要用到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子系统:

全文完

本文标签: 子系统 Linux