虽然已经有了ArchWSL可以直接用,但是Arch的理念不正是自己动手的才是最好的么。
获取tar文件
将Linux导入Windows Linux子系统需要首先获得Linux发行版的tar文件,最简单的方式就是将Docker镜像打包得到,这里使用podman来制作,如果使用docker的话替换一下就行了。
首先执行以下命令启动Arch Linux容器:
podman run -t archlinux
然后看一下容器名字,如果在上一条命令指定名称,这时候就不用看了。接下来导出容器:
podman export 容器名 > 保存文件名.tar
例如
podman export archlinux > ~/archlinux.tar
将得到的tar文件保存好就行了。
导入tar文件到WSL中
首先建好存放WSL文件的文件夹,然后执行:
wsl --import WSL名 WSL存放文件夹 tar文件路径
例如:
wsl --import "Archlinux" "C:\Users\Username\WSL\Archlinux" "C:\Users\Username\archlinux.tar"
注意WSL名不能有空格,然后输入wsl -l -v
来查看导入是否成功。
还原pacman设置
Arch Linux 的Docker镜像中精简掉了一些内容,比如中文locale,现在要还原回来。
先安装一个文件编辑器:pacman -S nano
将/etc/pacman.conf
文件中最后[options]
中的noextract
项目注释掉,然后使用pacman -S $(pacman -Qnq)
重新安装所有软件包。
添加中文支持
生成区域设置
虽然上一步还原了国际化所需的文件,但是设置文件/etc/locale.gen并没有还原,需要手动在文件末尾添加中文设置,例如:
zh_CN.UTF-8 UTF-8
然后执行:
locale-gen
来生成区域设置。
修改全局设置
虽然官方百科为了避免终端乱码并不推荐将全局locale设置为中文,但是WSL本来就支持中文,如果想要修改的话并没有问题。如果不想修改的话可以参考官方百科来修改用户个人设置
修改/etc/locale.conf
文件,将其改为:
LANG=zh_CN.UTF-8
然而在WSL中,光是这么做还不够,接下来需要将上面的locale.conf
文件复制并命名成/etc/default/locale
文件,或者干脆用ln命令设置连接。
完成之后退出并重启WSL。再次进入即可显示中文。
添加用户
导入之后默认的用户为root用户,如果常用的话不是很安全,所以这里需要建立新的用户来进行日常使用。
首先为root用户设置密码,如果没有为root和新用户设置密码,后面创建用户后将无法使用root权限。输入passwd
并设置密码。
然后安装sudo
:
pacman -S sudo
为了方便后面使用,首先创造一个变量:
myUsername=用户名
然后创建用户:
useradd -m -G wheel $myUsername
设置为WSL默认用户:
echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
设置密码:
passwd $myUsername
最后修改sudoer文件,因为之前安装的是nano而不是vi,所以要为visudo指定使用的编辑器,如果已经安装了vi的话可以直接执行visudo
命令,使用visudo的原因是visudo会检查修改后的文件,避免出现错误导致无法使用root权限:
EDITOR=nano visudo
翻到最后,取消%wheel ALL=(ALL:ALL) ALL
的注释符号#
,如果想不输入密码的话就取消%wheel ALL=(ALL:ALL) NOPASSWD: ALL
前面的注释符号。
完成后重启WSL即可。
参考文章
https://docs.microsoft.com/zh-cn/windows/wsl/use-custom-distro
https://bbs.archlinux.org/viewtopic.php?id=253198
https://wiki.archlinux.org/title/Locale_(简体中文)
https://wiki.archlinux.org/title/Localization_(简体中文)/Simplified_Chinese_(简体中文)
https://wiki.archlinux.org/title/Users_and_groups_(简体中文)#用户管理
Comments NOTHING