Install archlinux on Thinkbook14 G4+ ARA

0 前言

​ 新到的Thinkbook 14+ AMD 6800h 到手后迫不及待的试图安装双系统Win11+Archlinux

由于是新笔记本新CPU,在安装过程中出现了许多问题,特意记录一下。

1. 安装windows11

​ 出厂windows带了太多捆绑软件,包括但不限于联想管家等。本人选择重新安装

  1. 使用rufus将windows11镜像烧录至U盘制作系统启动盘

  2. 启动阶段按F12(不需要按住Fn)进入启动选项,选择USB启动

  3. windows安装一路点点点就好

  4. 安装驱动

    由于windows镜像中不包含螃蟹无线网卡的驱动,在安装系统连接网络部分选择连接网线(这款笔记本居然有网口)。

    当然也可以选择进入系统后安装驱动,驱动由联想官方提供,下载后直接安装即可

  5. 设置中文输入法

    安装系统后发现微软拼音不出现候选词,而是直接敲回车后出现文字

    解决方法:在键盘中其启用旧版微软拼音,具体操作流程如下

    设置 -> 时间和语言 -> 语言&区域 -> Microsoft拼音 -> 常规 -> 兼容性 -> 使用以前版本的微软拼音输入法

2. 安装Archlinux

2.1 系统安装

​ Arch Linux系统安装过程整体上与archlinux 简明教材一致,主要差别在于我使用sysemd-boot作为bootloader进行系统的引导,没有采用原文中较为臃肿的grub2进行系统引导。

需要改变的地方

  • EFI分区挂载点不同

    原文在基础安装 步骤8将EFI分区挂载到系统镜像/boot/efi,要持续更新内核,建议将 ESP 挂载到 /boot,安装内核时会自动复制到/boot目录下. 如果没将 ESP 挂载到 /boot,需要手动将内核和 initramfs 复制到 ESP

    1
    2
    3
    4
    5
    6
    mount -t btrfs -o subvol=/@,compress=zstd /dev/nvmexn1pn /mnt # 挂载 / 目录
    mkdir /mnt/home # 创建 /home 目录
    mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvmexn1pn /mnt/home # 挂载 /home 目录
    mkdir -p /mnt/boot # 创建 /boot/efi 目录
    mount /dev/nvmexn1pn /mnt/boot # 挂载 /boot/efi 目录
    swapon /dev/nvmexn1pn # 挂载交换分区
  • bootloader不同

    原文在基础安装 步骤17使用grub进行引导,由于不需要引导legacy或者其他的系统,我选择仅支持EFI启动的systemd-boot作为bootloader,具体步骤如下

    1. 安装 systemd-boot EFI 启动管理器

      1
      2
      esp=/boot #EFI分区挂载点
      bootctl --path=$esp install
    2. 启动菜单配置

      启动菜单文件位于$esp/loader/loader.conf,内容示例如下

      1
      2
      3
      4
      default  arch.conf
      timeout 4
      console-mode max
      editor no
    3. 增加启动选项

      如果存在的话,bootctl 会自动为 “Windows Boot Manager (Windows 启动管理器)” (\EFI\Microsoft\Boot\Bootmgfw.efi), “EFI Shell” (\shellx64.efi) 和 “EFI Default Loader” (\EFI\Boot\bootx64.efi)增加启动选项. 但并不会为其他EFI应用程序创建启动选项,所以需要进行进一步设置. 如果你是和Windows 组成双重启动,建议禁用 Windows 中的"快速启动" 选项.

      为archlinux增加启动选项,新建文件$esp/loader/entries/arch.conf

      内容如下,实际上就是kernel的启动参数

      1
      2
      3
      4
      5
      title          Arch Linux
      linux /vmlinuz-linux
      initrd /amd-ucode.img
      initrd /initramfs-linux.img
      options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw rootflags=subvol=@

​ 4. reboot 重启即可进入进入系统选择界面进入系统

2.2 内置键盘失灵

​ ThinkBook 14+/16+ 2022 锐龙版(AMD 锐龙 6000系列处理器 )由于其独特的IRQ设计,键盘无法兼容原版Linux内核,其反应为键盘像所有键同时按住而卡住,想要解决此问题,需要打上path进行修改并重新编译Linux内核

这里采用ABS(Arch Build System)进行自定义kernel的编译(既然archlinux提供了好用的构建系统,为何不用呢:) )

主要步骤参考Kernel/Arch Build System,这里贴出自己的全部过程

  1. 新建编译目录

    1
    2
    mkdir -p ~/build
    cd ~/build
  2. 安装asp 和base-devel

    1
    sudo pacman -S asp base-devel
  3. 获取原始内核作为自己编译kernel的基础

    1
    2
    asp update linux #由于网络问题我无法更新,不影响
    asp export linux

    执行完后查看目录树应该是这样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .
    └── linux
    ├── config
    ├── keys
    │   └── pgp
    │   ├── 647F28654894E3BD457199BE38DBBDC86092693E.asc
    │   ├── A2FF3A36AAA56654109064AB19802F8B0D70FC30.asc
    │   ├── ABAF11C65A2970B130ABE3C479BE3E4300411886.asc
    │   └── C7E7849466FE2358343588377258734B41C31549.asc
    └── PKGBUILD

    3 directories, 6 files
  4. 下载需要打上的补丁,并放在与PKGBUILD同级目录下(改为patch后缀是因为ABS会自动为后缀为patch进行打补丁)

    1
    2
    cd linux
    wget https://patchwork.kernel.org/project/linux-acpi/patch/20220712020058.90374-1-gch981213@gmail.com/raw -O irq.patch #下载diff文件并重命名为irq.patch(你也可以手动的下载diff文件)
  5. 修改PKGBUILD文件

    找到 pkgbase 修改为自定义软件包的名称

    1
    pkgbase=linux-test

    如果你想要直接替换原有的kernel,就可以不改。改了之后你要更新引导加载程序的配置文件,为新的内核和initramfs映像添加新的引导菜单项。

    找到 source数组(18行左右)添加需要打的patch

    1
    2
    3
    4
    5
    source=(
    "$_srcname::git+https://github.com/archlinux/linux?signed#tag=$_srctag"
    irq.patch # 下载的补丁
    config # the main kernel config file
    )

    为提高编译速度,可采用多线性并行编译,找到build(63行左右),修改,可以自己选择线程数,还可以参考Kernel/Arch Build System的2.1避免创建文档

    1
    2
    3
    4
    build() {
    cd $_srcname
    make all -j 16
    }
  6. 生成新校验和

    1
    2
    sudo pacman -S pacman-contrib
    updpkgsums
  7. 编译

    1
    2
    sudo pacman -S pahole cpio xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick texlive-latexextra #安装必要依赖
    makepkg -s --skippgpcheck
  8. 安装

    编译完成后,build/linux文件夹中应有两个包,分别是内核和内核的头文件。进行安装(会在/boot下生成initramfs-linux-test和vmlinuz-linux-test)

    1
    pacman -U linux-test-5.19.19-x86_64.pkg.tar.zst linux-custom-headers-5.8.12-x86_64.pkg.tar.zst
  9. 为新的kernel配置启动项,见本文2.1中的增加启动选项

  10. 如果更换了内核,别忘了把之前在原来内核的软件重新装一遍,比如说桌面环境,我发现后续在新内核安装的程序在桌面应用程序找不到,重新安装一下kde就好了

2.3 网卡驱动

安装8852be驱动

2.4 无法播放声音

声卡驱动有,但是无法播放声音,缺失alas固件

解决方法

1
sudo pacman -S sof-firmware alsa-ucm-conf