2021-01-08 | 研究与探索 | UNLOCK

将 Linux Mint 整体迁移到拯救者 R7000

买了新笔记本,拯救者 R7000。计划让新的 SSD 及其自带的 Windows 10 主要用来打游戏,老笔记本的 Linux Mint 不用重装接着用。

在新电脑上进入原系统

首先是把老笔记本上的硬盘拆下来安到新电脑上。这步挺顺利,R7000 的 D 面很好拆,预留硬盘位是 SSD 、机械硬盘 2 选 1,把机械硬盘架取下来,拿走上面的占位物,用真正的机械硬盘安回去去就行了。

启动时按 F2 进入 BIOS Menu,设置管理员密码来关掉安全启动并选择 Legacy Boot (我的老硬盘是 MBR 分区模式)。R7000 的显卡模式有两种,仅独显(Discrete Graphics)和可切换显卡(Switchable Graphics),R7000 似乎是默认选的 Discrete Graphics,要改为 Switchable Graphics,原因下一节说。

新屏幕下原来的图形显得有些小,需要更改字体设置(原配置下 1.2 倍缩放)、输入法字体设置、任务栏(Linux Mint 叫面板)高度和开始图标的大小。

Sublime Text 的侧边栏字体大小则需要用 PackageResourceViewer 包来改。

显卡设置

Linux Mint 有一个叫驱动管理器的小工具,可以自动帮你装 NIVIDA 驱动,很方便。

我第一次没注意在 Discrete Graphics 下进入了 Linux Mint,安上了 NIVIDA 的驱动,结果换成 Switchable Graphics 模式后会卡在启动图形界面,于是不得不回溯系统……

在 Switchable Graphics 模式下,Windows 10 里就是 Optimus 技术,在 Linux Mint 里则默认只用核显。由于驱动的关系在 Discrete Graphics 模式下 Grub 界面分辨率很低,Linux Mint 启动时还会黑屏,所以日常还是 Switchable Graphics 模式。

包管理器自动给我把 Steam 卸了,再安装也安不上去,算了……

至于要在 Linux 下使用独显运行图形程序,可以在 BIOS 里切换成 Discrete Graphics,但此时 Steam 还是安不上……有一个项目叫 Bumblebee,用于在 Linux 下实现 Optimus,有空再折腾吧。

独显模式下无法调屏幕亮度,网上教程是要改 /etc/X11/xorg.conf.d/ 里的配置,但实际上应该是 /usr/share/X11/xorg.conf.d/

转换硬盘分区格式并重建引导

我的老硬盘是 MBR 分区格式,需要转换为 GPT 分区格式并建立 EFI 引导,这一步可真要人老命,转换为 GPT 分区格式倒没什么问题,但中途我不小心把系统分区写没了,还好用 fsck 能救回来,整个过程经历了各种诡异的状况:Legacy 模式能成功进入,EFI 模式不能,但安装 EFI 模式的 Grub 必须是在 EFI 模式引导下进入的系统才行;之前仅独显能进系统,Switchable Graphics 不能进,后来就都不能进(大概是因为用 boot-repair 修复引导时弄丢了 grub.conf);一度连通过 U 盘启动都做不到……

最后解决办法是装了新版本 Linux Mint,再通过 Timeshift 工具回滚到最后一次备份,才算能正常启动系统。

21/1/24 更新:我发现 Linux Mint 使用 grub-install 在 EFI 分区中产生的 GRUB 二进制启动镜像总是试图在 \\EFI\\ubuntu 下加载 grub.cfg,即使因为指定了 --bootloader-id=GRUB 导致文件放在 \\EFI\\GRUB 下。网上查了查这似乎是因为 Ubuntu 在自己版本的 Grub 里硬编码了各种参数为“ubuntu”,Linux Mint 基于 Ubuntu,使用的 Ubuntu 软件源,所以会这样。而 apt show grub2 显示的 Maintainer 确实是 Ubuntu Developers。这事不太厚道,听群友说是因为 Ubuntu 要支持 Secure Boot 的原因。不管怎么说对 Canonical 的梁木又加深了,有机会改用 Arch 吧。

触摸版

R7000 使用的触控版没有很好的支持,似乎是内核对 AMD CPU 支持的问题导致把该触摸板识别为其它型号。CSDN上有人给出了解决办法,我使用了方法二,目前差不多成功了。

具体细节:

  1. 下载这里的源代码,解压,确保安装了当前内核的 linux-headers,执行 make 进行编译,产生一个 i2c-hid.ko 内核模块文件。
  2. 在编译目录下执行:
    1
    2
    sudo rmmod i2c-hid
    sudo insmod i2c-hid.ko polling_mode=1
    卸载正在运行的内核模块并以轮询模式安上新模块。此时触控版应该正常能用了。
  3. 继续执行以下命令:
    1
    2
    sudo cp i2c-hid.ko /lib/modules/`uname -r`/kernel/drivers/hid/i2c-hid/i2c-hid.ko
    sudo depmod
    替换现有内核模块文件。
  4. 编辑 Grub 选项,使之在启动时自动以轮询模式加载新内核模块。 我是在 /etc/default/grub.d/ 下新增了 40_i2c-hid.cfg 文件,内容是:
    1
    GRUB_CMDLINE_LINUX_DEFAULT=$GRUB_CMDLINE_LINUX_DEFAULT" i2c-hid.polling_mode=1"
    不直接修改 /etc/default/grub 文件。 然后执行:
    1
    2
    sudo update-grub
    sudo update-initramfs -u
    就全部完成了。

Linux Mint 真不愧是 Ubuntu 衍生,显卡驱动等问题都遇上了而且能用搜到的 Ubuntu 解决方案解决。