在之前的博客中,我介绍了如何在虚拟机或者真实机上安装archlinux并且进行一定的配置,但是实际上Linux不管怎么配置在日常使用中都没有Windows简单便利,在开发有关Linux的程序时过去用虚拟机或者直接在Windows上使用ssh在远程服务器上进行开发。但是微软发布了wsl以及后续更新的wsl2,可以很方便的实现在Windows中拥有两个系统,并且两个系统可以进行互联。在不改变Windows操作习惯的基础之上操作Linux。进一步提升了Linux的便捷易用性。
晚上的教程大多数都是使用wsl安装Ubuntu的,作为一个铁archlinux党,我不太用得惯Ubuntu,那么就要想办法安装自己习惯的arch,好在在网上有现成的教程。终于完成了这一工作
准备工作
安装wsl2,需要Windows 11或者Windows 10 的19041 及更高版本。因此如果系统版本不够需要提前进行系统的更新操作
我们需要在Windows功能中开启 “适用于Linux的Windows子系统”,如下图所示
勾选之后可能需要重启。
或者也可以在应用商店进行安装。这里就不得不吐槽一下微软的应用商店了,它居然能做到挂梯子和不挂梯子一样卡。我这里死活登录不上,就不演示这种方式了
安装完成之后可以在powershell中查看它的版本
wsl -v
从图上可以看到,我们已经安装上了wsl2
安装 archlinux
安装完wsl2 之后,我们可以在GitHub官网上下载最新的ArchWSL。这里我们要下载两个东西,一个是不带online 标识的appx文件以及同名的cer文件。
下载完成之后双击 .cer
文件,点击“安装证书”,选择“本地计算机”,在下一个页面中选择“将所有的证书都放入下列存储”,点击“浏览”,选择“受信任的根证书颁发机构”,执行安装。
证书安装完成之后,我们双击下载的appx 文件,直接点击安装
appx文件安装完成之后,可以使用
wsl --list
来查看当前wsl中的Linux子系统
此时已经有了对应的系统了
我们在命令行输入 arch
即可进入archlinux子系统,此时是以root的身份进入的
配置arch
配置普通用户
新系统安装之后的第一件事就是创建一个普通用户,并且永远以这个普通用户进行登录,在需要的时候使用 sudo
来申请某些管理员权限进行操作
我们在之前安装archlinux的教程中已经提到过对应的操作方式
useradd -m -G wheel -s /bin/bash arch
我们创建一个名为 arch
的用户,并指定shell
为 bash
接下来我们使用
passwd arch
passwd root
来设置root
和arch
两个用户的密码。
因为archlinux中安装的编辑器是vim,所以我们先将vim设置一个名为vi的别名
ln -sf /usr/bin/vim /usr/bin/vi
然后 使用visudo
将文件中 #%whell ALL=(ALL) ALL
这行的注释去掉,以便当前用户能够使用 sudo
命令
接着可以使用su arch
将当前用户切换到arch
。并且使用命令sudo pacman -Syyu
来更新系统,同时测试一下输入用户密码之后能否执行一些root
命令
之后我们推出 arch 子系统,在powershell中执行
Arch.exe config --default-user arch
来指定默认使用arch 来登录系统
设置完登录用户之后,在powershell中输入 arch
进入archlinux子系统中,此时我们发现,登录用户已经变成arch了
初始化密钥环和更新源
接着我们执行以下命令,来初始化密钥环
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Syy archlinux-keyring
sudo pacman -Su
鉴于目前国内的网络环境,上述几条命令有可能执行出问题或者卡着不动,我们可以进行换源的操作,这里我采用清华源
在/etc/pacman.d/mirrorlist
文件的最顶端添加
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
开启32位软件库支持与ArchLinuxCN库的支持
按照之前博客中的内容,我们先打开 32位软件的支持,在 /etc/pacman.conf
中去掉[multilib]一节中两行的注释,来开启 32 位库支持。
然后在该文件的结尾处加入下面的文字,来开启 ArchLinuxCN 源
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
之后通过以下命令安装 archlinuxcn-keyring 包导入 GPG key。
pacman -Sy archlinuxcn-keyring
具体的使用可以看镜像的官方文档
如果报错可以看官网或者看我博客的办法是否能解决
上述命令都成功之后使用 sudo pacman -S yay
来安装 yay
成功之后我们可以试着安装一下neofetch
yay -S neofetch
安装成功之后,执行neofetch 就可以看到系统信息了
配置终端
基础内容安装完成之后,我们可以对终端进行一下美化和配置,毕竟日常使用上大部分时间都是直接在终端中使用,有一个漂亮点的终端用起来也舒服一点
我们首先安装一下必要的组件
sudo pacman -S net-tools man-db man-pages man-pages-zh_cn texinfo ntfs-3g tree pacman-contrib neofetch wget git usbutils pciutils acpi base-devel
接着我们安装一下相应的字体
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
## 这里我把官方推荐的所有带unicode标识的全装上了,这样后续就不太会出现乱码的情况了
yay -S ttf-ubraille ttf-symbola otf-cm-unicode ttf-arphic-ukai ttf-arphic-uming ttf-dejavu gnu-free-fonts ttf-google-fonts-git nerd-fonts-complete ttf-hack ttf-joypixels
默认的bash
功能比较弱,我们采用zsh
sudo pacman -S zsh
然后将默认的shell
设置为 zsh
chsh -l # 列出系统中存在的所有shell
chsh -s /bin/zsh #根据上一个命令得到的shell路径,设置当前shell
我们推出系统再次登录的时候,shell已经切换到zsh了,我们按照提示生成一个默认的 .zshrc 文件即可
为了支持终端上显示一些图形,我们需要安装 nerd-font
。可以在GitHub上找到 nerd-font
可以通过
git clone https://github.com/ryanoasis/nerd-fonts.git --depth=1
来克隆,也可以通过在宿主机上下载zip包,然后传入archlinux 中。我们可以直接在Windows的文件资源管理器上输入 \\wsl$
来访问archlinux的文件系统
在获取项目之后,在项目的根目录执行 sh ./install.sh
来执行安装
需要注意的是,如果你是通过本地的windows terminal 来ssh到远程archlinux化,本地也需要安装 nerd-font
因为这个时候显示的责任在宿主机的终端程序。需要宿主机本身也有那些字体。Windows上可以使用 .\install.ps1
来安装
字体准备好后,我们可以使用 powerlevel10k 来美化终端
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
source ~/.zshrc
接着按照它的提示选择样式即可,如果不满意了,可以在 .zshrc
中对应的配置,直接重新选择样式即可。完成之后,可以看到终端相对来说比较好看了
接下来我们对zsh
进行一些简单的配置
安装 zsh-autosuggestions ,它是一个命令提示插件,当你输入命令时,会自动推测你可能需要输入的命令,按下右键可以快速采用建议
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
在 .zshrc
中添加下列代码
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
安装完成之后效果如下
我们可以按TAB自动补全
zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
安装完成之后效果如下
autojump 是一个懒人神奇,有了它,当我们此前跳转过某个路径之后,可以很方便的跳转到之前路径。例如我们之前跳转到
/usr/bin
/home/arch
那么我们可以直接使用 j b
跳转到 /usr/bin
中,或者在其他目录使用 j a
跳转到家目录中,如果跳转的目录路径有相似的字符,可能需要多输入一些字符来区分
我们下面来安装它
git clone https://github.com/wting/autojump.git
cd autojump
./install.py
安装好之后,它会提示我们需要手动将下列命令加入到 /zshrc
中,我们添加就好了
thefuck 这也是一个懒人神奇,当命令输入错误的时候只要fuck一下就好了
在archlinux中,我们可以直接使用
sudo pacman -S thefuck
我们将下列代码放入到 .zshrc
中
eval $(thefuck --alias)
安装完成之后,效果如下
使用gui程序
在Windows11和Windows 10 的内部版本在19045以上的时候,wsl本身就可以直接在打开Linux的gui程序。这里我们安装一个firefox作为测试例子
sudo pacman -S firefox firefox-i18n-zh-cn
我们启动firefox,这个时候报错了
不要慌,这里我们需要链接wslg的接口套接字到x11
sudo rm -r /tmp/.X11-unix
ln -s /mnt/wslg/.X11-unix /tmp/.X11-unix
这个时候再打开就能在Windows上看到firefox的界面了
还有一个惊喜,那就是我们可以从开始菜单中找到对应的Linux gui程序,并且直接点击就能打开。
使用rdp连接
除了这种使用方式,我们还可以使用rdp通过Windows的远程连接来进入archlinux子系统。这里我不太推荐这种方式,因为上面那种方式可以直接在Windows上使用linux gui程序,已经特别方便了,而且这种方式需要有桌面环境,需要消耗资源,但是当你的Windows版本不够的时候,可以考虑使用这种方式来使用gui程序
这里我们先安装桌面环境
sudo pacman -S xfce4 xfce4-goodies
这里我采用轻量的xfce4,不管是使用kde 还是gnome,感觉都比较重
接着我们下载rdp相关的软件
yay -S xrdp xorgxrdp-glamor pulseaudio-module-xrdp
根据 arch wiki 的说法,xrdp 仅支持使用XVNC作为后端,所以这里我们需要安装一下 vnc
sudo pacman -S tigervnc
安装完成之后,需要在home目录下,添加一个.xinitrc
文件,这个文件会在rdp新建一个虚拟桌面的时候执行,文件的内容如下
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec dbus-launch startxfce4
最后我们启动一个rdp服务
sudo systemctl start xrdp.service
最后我们就可以使用Windows远程桌面连接上Linux的桌面了
好了,配置到这里也就基本结束了,希望各位小伙伴在其中玩的愉快。总体来说Windows的wsl用起来还是很香的,特别是使用wslg服务在Windows中使用Linux的gui程序。它用起来就跟在Windows上开启一个gui程序一样丝滑,可以很好的将Linux程序融入到Windows的工作流中。