跳过正文

将博客工作流迁移到 WSL2

·2263 字·5 分钟·
技术 WSL2 Arch Linux Hugo
Dr. Kee
作者
Dr. Kee
Talk less. Smile more.

本文将介绍安装 WSL2 并进行基础配置的方法,以及在其中复现之前博客工作流的完整过程。

近来学业繁忙,偶然想起我还有一个博客静静地躺在 GitHub 上,于是心血来潮,打算重启这个项目。奈何前段时间电脑坏了,重装了系统,正好借这个机会整理一下我的开发环境。

之前我一直在 Windows 环境下搞开发,弄得十分杂乱,各种配置和环境变量满天飞(确信)。后来有段时间尝试将 Arch Linux 作为主力系统,虽然 Linux 的开发体验很好,但是日常使用远没有 Windows 省心。再加上一些科研要用到的软件只支持 Windows,我不得不捏着鼻子重新投入 Windows 的怀抱。

后来偶然听朋友介绍了 WSL2,我说:“竟有此等好物?”于是忙里偷闲,在新系统上开始了本次尝试。

适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

我目前的想法是:将 Windows 作为主力系统日常使用,在 WSL2 的 Arch Linux 上做开发,各取所长。

安装并配置 WSL2
#

当前我使用的操作系统是 Windows 11 26200.8246,整个安装流程十分丝滑。如果你使用的是 Windows 10 19041 或者更老的版本,可能需要参考微软官方文档进行手动安装。

安装 WSL2
#

我决定安装 Arch Linux 发行版的 WSL,将其命名为 Arch,并将安装目录设置到 D:\10-WSL2\Arch。在 Windows 中打开 Powershell 并执行以下命令:

wsl.exe --install --distribution archlinux --name Arch --location D:\10-WSL2\Arch
如果 WSL 功能尚未启用,首次执行该命令后需要重启电脑,重启后再运行该命令即可开始下载安装。

可以通过命令 wsl.exe --list --online 查询所有可在线下载的 Linux 发行版。

--location 指定的安装目录必须为空或不存在,否则将会报错。

等待自动安装完成后,开始菜单里将会出现名为 Arch(即 --name 设置的值)的 Arch Linux 图标。打开它即可在命令行中运行 Arch Linux。

如果不指定 --distribution,WSL2 会默认安装 Ubuntu。但是 Arch Linux 是最好的 Linux 发行版喵~

fig1

初次启动与基础配置
#

进入安装好的 Arch Linux,像常规配置 Arch Linux 系统那样进行配置就可以了。

设置 root 密码和创建普通用户
#

passwd root  # 设置root密码
useradd -m <username>  # 例如:useradd -m dexter
passwd <username>  # 设置上一步创建的普通用户的密码

配置 Pacman 包管理器、国内镜像源以及 ArchLinuxCN 源
#

pacman -Syyu  # 更新包数据库
pacman -S vi vim sudo  # 安装必要工具

由于国内特殊的网络环境,需要配置一些镜像源以加快软件下载速度。打开 /etc/pacman.d/mirrorlist,将国内镜像源置顶。我比较常用的是以下几个:

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch

然后是添加 ArchLinuxCN 源。在 /etc/pacman.conf 文件末尾添加以下几行:

[archlinuxcn]
SigLevel = Optional TrustAll
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

接着安装 archlinuxcn-keyring

pacman -Syu
pacman -S archlinuxcn-keyring

为普通用户授予 sudo 权限
#

usermod -aG wheel <username>
visudo

在打开的 /etc/sudoers 文件中,找到 %wheel ALL=(ALL:ALL) ALL,取消注释。

设置默认登录用户
#

/etc/wsl.conf 中添加以下内容:

[user]
default=<username>

保存后重启 WSL 即可。

fig2

不得不品的fastfetch环节

配置博客工作环境
#

在之前的文章中,我使用了 Hugo + Blowfish 作为博客的架构。接下来,我们将在刚刚配置好的 WSL2 中完成相关配置。

使用 VS Code 远程连接 WSL2
#

现在我们可以在 Windows 中使用 VS Code 无缝享受到 Arch Linux 的丝滑开发体验了。

  1. 进入 VS Code,按 Ctrl Alt O,选择“连接到 WSL”。
  2. 等待 VS Code 自动安装相应扩展。VS Code 会检测已安装的 WSL 环境,并启动一个新的窗口连接到你的 WSL 环境。

之后,我们可以直接使用 VS Code 像本地开发一样编辑文件和运行终端命令,所有操作将会在 WSL 中执行。

安装基础工具
#

sudo pacman -S git base base-devel wget curl which net-tools openssh hugo

等待下载完成之后验证安装:

git version
hugo version

配置 Git 与 GitHub
#

接下来,我们需要在 WSL2 环境中重新配置 Git 身份信息,并连接 GitHub 仓库。

配置 Git 用户名和邮箱
#

git config --global user.name "你的 GitHub 用户名"
git config --global user.email "你的 GitHub 邮箱"

建立 SSH 连接
#

  1. 生成 SSH 密钥对(一般不设置密码,一路回车即可):

    ssh-keygen -t ed25519 -C "你的 GitHub 邮箱"
    
  2. 输入以下指令,显示公钥的内容并复制。

    cat ~/.ssh/id_ed25519.pub
    
  3. 登录 GitHub,进入 SettingsSSH and GPG keys,点击 New SSH key,将复制的公钥粘贴进去并保存,随便起一个名字。

  4. 测试连接:

    ssh -T git@github.com
    

    如果看到“successfully authenticated”的提示,说明已经成功建立连接。

克隆源代码仓库到 WSL2 本地
#

在之前的文章中,我已经将源代码仓库上传到 GitHub 的私有仓库 BlogSource 中,现在将它重新克隆到本地。

cd ~/dev  # 我希望将仓库放在 /home/dev 目录下
git clone git@github.com:derec30240/BlogSource.git
cd BlogSource

因为上一步已经配置好了 SSH 密钥,这里就使用 SSH 地址(而不是 HTTPS 地址)进行克隆。

这时所有的源代码已经被克隆到本地。如果你注意力惊人,就会发现/themes/blowfish 目录下没有文件。这是因为之前我们将 Blowfish 作为子模块导入到了项目中,所以我们还需要初始化并拉取所有子模块:

git submodule init
git submodule update --recursive

验证环境是否就绪
#

执行以下命令检查一切是否正常:

hugo version
hugo server

如果一切正常,在浏览器中访问 http://localhost:1313 就可以看见之前创建的博客了。太棒了!

日常编辑与发布
#

现在的编辑与发布流程和之前没什么区别。让我们复习一下:

创建新文章
#

hugo new posts/文章名.md

不过为了方便管理文章中的图片等附件,我们一般会在 /content/posts 下新建一个以文章名命名的文件夹,再在该文件夹下创建 index.md 作为文章页面,并为其添加 Front Matter。结构如下:

content
└─ posts
   ├─ 文章名1
   |  └─ index.md
   └─ 文章名2
      └─ index.md

当然如果你不需要为文章添加附件,这种结构属实没必要。我只是强迫症犯了

本地预览
#

hugo server  # 常规预览
hugo server -D  # 预览包括草稿

生成静态文件并提交
#

hugo  # 生成静态文件
git add .
git commit -m "添加新文章"
git push origin main

GitHub Action 自动部署
#

好消息是,我们并不需要做任何配置。写好的 /.github/workflows/*.yml 文件依旧会像以前一样自动触发。

现在开始,我们可以像之前一样继续愉快地写博客了喵~


参考
#