T470s 上安装 Linux 滚动发行版 openSUSE Tumbleweed

已经转移到 Linux 操作系统一年多的时间了,所以新机到了之后第一件事就是安装新的操作系统。为了享受滚动发行版及时的新硬件特性支持和应用软件更新,稍稍忍受一下时不时的一些小问题也是值得的,特别是在较新的硬件设备上。现在已经有很多滚动发行的 Linux 了,不过我还是比较喜欢和习惯运行 KDE 桌面的 openSUSE。

注:下面的一些内容已经根据后来的一些经历进行了调整,最后更新时间为 2018-03-18。

背景介绍

这次安装系统折腾了很长时间,所以需要记录一下。开始以为是自己在 BIOS 中关于 UEFI 的设置没搞对才无法启动 U 盘安装,后来发现原来是烧录安装光盘镜像到 U 盘的时候出了问题导致 U 盘无法引导。搞到最后都不知道默认的 BIOS 设置是否能够直接安装成功了。而且似乎最后安装成功的 UEFI 似乎也不是 Secure Boot 模式(多半还真是 Secure boot 模式)。(已确认,不是 Secure Boot 模式,详见后面的更新。)

因为是第一次安装使用 UEFI 而不是传统的 BIOS 引导的系统,所以开始做了不少功课。了解到 openSUSE 已经能够很好地支持 UEFI 引导,并且对 Secure Boot 的支持也没有问题。默认是通过 shim 来完成交接的。既然这样,那就直接在预装的 Windows 10 旁边安装 openSUSE Tumbleweed 吧。本来准备用 UEFI Secure Boot 特性的,结果折腾来折腾去好像弄成了非 Secure Boot 状态(但是引导系统里确实安装了 shim)。下面再解释原因吧。

之前提到过好几次 openSUSE 的安装了(比如 09 年直接从 Windows 分区启动安装,11年通过 Windows 分区中的光盘镜像安装,还有 16 年改用 U 盘镜像安装),这里就不再罗嗦很多细节,只把一些折腾的经历记录一下,长个记性,也给有需要的朋友一些参考。这次稍作改变,因为看到介绍说要用 UEFI 启动的话,需要同样使用 UEFI 启动安装过程,那么就是直接将安装光盘镜像烧录到 U 盘里最方便。咱就不折腾了,相信前辈的经验。

烧录光盘镜像到 U 盘

因为本文内容太长,将这一部分单独列出来了。参见这里:烧录操作系统安装光盘镜像到 U 盘的方法

Windows 10 开机初始化并准备磁盘分区

新机到手自然还是需要先开机试试各项功能是否都正常工作的。预装系统也就这么点用处了。开机自检、进入系统那是非常迅速,跟之前的 T420s 简直不可同日而语。所以有了旧电脑的对比,新电脑就算有不少缺点也都能忍了 :-D

初始化 Windows 10 照例是需要点击一系列关闭或者禁止信息收集之类的选项的,然后终于看到了很炫酷的桌面。WQHD 的 2560×1440 分辨率在 14″ 的显示器上表现果然还是很惊艳。尤其是在看惯了 TN 屏的低劣显示效果之后,IPS 屏幕就更冲击眼球了。图片、文字和色彩表现都非常清晰、锐利和鲜艳。

Windows 10 是预装的,还是留着吧,指不定什么时候就用上了。

准备给它留 100GB 磁盘,分成 C 盘系统盘和一个与系统无关的数据 D 盘,剩下的就都给 Linux 系统了。所以也不用麻烦,直接进入 Windows 10 的磁盘管理(右键单击「开始」图标 -> 「计算机管理」-> 「磁盘管理」)那里执行分区。先给压缩到只留 60GB 作为系统盘,再创建了一个新分区 40GB 作为平常习惯留 Windows 数据的 D 分区。这样一来,以前系统里的那些不需要安装的应用软件就可以直接复制到这里,也许在新系统中也能够直接使用。(其实不能用也没关系,反正现在不用了。)

512GB 的硬盘,实际可用容量是 476 GB。最后确定的分区是这样子的,

EFI     260MB
win c   60GB
win d   40GB
swap    2GB
/       40GB
/home   60GB
/data   240GB

按照网上的说法,留出了大约 7% 的容量未分配。之所以除了 //home 之外另留了个 /data 分区,是想着可以将不需要高频率备份的音乐和视频放在那里以减少备份时候的处理时间。是的,备份是使用电脑的第一要务。这是多年来的血泪教训。

建议不要在 Windows 10 下直接给 Linux 的部分磁盘进行分区,而是等到安装 Linux 系统的时候使用安装光盘上的分区工具进行分区。因为 Windows 10 的磁盘管理在分区的时候会给这些 Linux 分区设定分区类型为「Microsoft basic data」,仅仅格式化而不是修改 GPT 分区表的话是不会修改这个类型标记的。虽然似乎也可以在安装 Linux 之后通过 gdisk 程序修改分区类型,但是多一事不如少一事啊。

另外,因为计划中是 8GB+16GB 的内存配置,所以不打算用休眠功能,所以 /swap 分区只给了 2GB。平常使用电脑应该是不会用到 /swap 的,也就是个摆设,以提高系统的兼容性。实话实说,如果在不用虚拟机的情况下,我尽情折腾也用不完 24GB 内存的一个零头。

为了避免以后产生麻烦,在重启或者关闭 Windows 10 之前需要到「开始菜单」->「电源选项」->左侧「选择电源按钮的功能」->单击「更改当前不可用的设置」->下面「关机设置」里**取消勾选**「启用快速启动(推荐)」->下面「保存更改」这样来关闭 Windows 10 的快速启动功能。网上应该有很详细的图文教程。另外,如果关闭了 Windows 下的「休眠 hybernate」功能,则系统中不会再有「快速启动」选项,也就不需要关闭它了。

要关闭 Windows 下的「休眠 hybernate」功能,则

  1. 从开始菜单的所有程序中浏览找到命令行工具,右键单击选择使用「管理员 Administrator」身份运行它;
  2. 在打开的命令行终端中输入,
    powercfg /h off

    来关闭休眠功能。

设置 BIOS

前面说过了,我因为折腾了太久,最后 BIOS 也让我改得面目全非。这里只提个大致的思路。(先看本小节下面的 2017-05-06 更新;这个「思路」还留着可以作为不支持 secure boot 的情况下的参考。)

  1. 先在在默认的 BIOS 设置下从 U 盘启动安装(开机按 F12 进入启动设备选择并找到 USB 盘来启动)。
  2. 不行的话,再试试开机按 F1 键进入 BIOS,到「Config」那一页,进入「USB」,开启「USB UEFI BIOS Support」。
  3. 如果还不行,那就试试 BIOS 里最后一个菜单页,将里面的「OS Optimized Defauts」设置为 「Disable」。
  4. 如果还不行,那就只有最后一个相关的设置了。注意,这一项启用后似乎无法恢复到原来的状态了(BIOS 里「恢复默认设置」都不行)开机按 F1 键进入 BIOS,到 「Security」页面,进入 「Secure Boot」 里面设置 UEFI 的「Secure Boot configuration」那里选中「Reset to Setup Mode」并按「Enter」键。在开启这个选项之前,其上方的「Platform Mode」和「Secure Boot Mode」是什么样子的我已经不记得了,开启之后分别变成了「Setup Mode」和「Custom Mode」。见下图。

    T470s BIOS UEFI Secure Boot 配置

    T470s BIOS UEFI Secure Boot 配置

也许是因为这个,我的 Secure Boot 状态现在变成莫名其妙的了:在刚进入 BIOS 的基本信息页面,显示的是 UEFI Secure Boot 那一项后面显示的是「OFF」,而在上图中的页面,Secure Boot 后面显示的是「Enabled」。

注意:如果已经安装好了 Linux 并有了 GRUB2 启动菜单,此时进入 BIOS 选择「恢复默认设置(Reset to Default」则会失去 GRUB2 启动菜单。虽然还可以恢复——里面的 /boot/efi/opensuse 文件夹还在——但是比较麻烦。详见恢复 UEFI 模式的 GRUB 启动菜单

更新 2017-05-06

因为更换硬盘,所以有机会再仔细记录针对 ThinkPad T470s 上 UEFI 模式下安装 openSUSE Tumbleweed 做一些尝试。结论是,

  1. 不管是否开启 secure boot,都可以通过 openSUSE Tumbleweed DVD 安装光盘启动并成功安装。该光盘是可以烧录到 USB 驱动器(U 盘)上使用的,因为 T470s 没有带光驱。
  2. 如果在关闭 secure boot(也就是上面 4. 中提到的「Reset to Setup Mode」)情况下安装,还可以在安装完成后通过「Restore Factory Keys」来再次启用 secure boot。启用后进入 opensuse secureboot 启动项的时候会询问是否信任该启动项。如果没有「Restore Factory Keys」,则该系统 EFI 的 secure boot 模式处于「OFF」也就是「关闭」状态。
  3. 如果烧录的 U 盘无法启动安装,可以尝试使用另一种方法重新烧录 ISO 镜像到 U 盘上。

磁盘文件系统的选择

openSUSE Tumbleweed 安装默认的文件系统是 / 使用 Btrfs 并视磁盘大小开启 snapshot 功能;/home 使用 XFS 文件系统。目前主流的建议都是 Btrfs + EXT4。其实也有人建议在 /home 分区也使用 Btrfs 的。

根据 Phoronix 上的测试,在 Linux 4.10 内核上,Btrfs、XFS 和 EXT4 的性能是各有千秋。而根据 openSUSE 论坛上的这个讨论帖子,Btrfs 现在已经很好的支持 SSD 了,开发也很完善;EXT4 很臃肿,但是相关工具比较多;XFS 是企业级的。

我最后选择了在 /home 分区用 EXT4,但是我真的很想用 Btrfs 的,当然会关闭 /home 上的 snapshot 特性。等待大家的经验分享。当然,根据网友 gogalthorp 的建议,至少应该给 EXT4 分区加上这样的挂载参数,

ext4       noatime,acl,user_xattr 1 1

我最后在 /etc/fstab 里给 EXT4 分区添加了这样的挂载参数,

/home      ext4       noatime,acl,user_xattr 1 2
/data      ext4       users,noatime,acl,user_xattr       1 2

其中,后面的 1 2 是安装系统后默认的,我就没改。在 /data 上增加 users 是为了让所有用户都可访问(因为我修改了系统默认设定的用户目录权限 755700noatime 的意思是在访问文件的时候不写入访问时间记录,可减少对磁盘的写入(估计量也不大),但并不影响记录文件修改时间。具体见我的咨询帖

以后有机会了可能会考虑加密 /home 分区,但是现在还不敢尝试,怕一不留神弄不好要耽误太多时间折腾。万一正忙着的时候里面的数据弄丢了,那我只好跳楼了。

这次安装系统走了不少弯路,权当是花时间买个经验吧。希望这里记录的一点东西能给网友们一些参考。基本的设置就还是按照之前的经验来,后续一些其它的折腾经验都会发到 T470s 标签下面。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/install-rolling-linux-opensuse-tumbleweed-on-t470s/>。转载请保留此信息及相应链接。