利用 rsync 给笔记本安装 Gentoo
序
半年不见,甚是想念~
我有一台性能羸弱不堪的 ChromeBook,
2GB 的 RAM 和一颗 只有 2.6 GHz 的双核老低压 U 对于现在的流行发行版来说已经完全不够用了,目前跑个 Mint 也是 CPU 经常性的 100% 占用。
于是我想着能不能给他装个 Gentoo?
然而就这乌龟U,估计得连续开机一周才能编译完吧…
嗯,不过我想试试能不能通过台式机编译完 Gentoo 再通过 rsync 给它传输到 ChromeBook。
论编译,我感觉哪怕是在 2022 年 E3 神教也不会让我失望吧。
起码比这颗小赛扬快多了。
准备工作
废话不多说,直接开搞。
但我们要准备好这些东西
- Gentoo Wiki
- 安装过程中需要用到官方的指引和文档,必备
- 翻译工具
- 由于 Gentoo 的用户群体较小,文档汉化可能不是很全面,因此可以借助翻译工具,这里推荐 deepl
- 一个 U 盘
- 用来装一个临时的 Linux 作为笔记本的 rsync 接收端。
- 这个没什么好说的,最好支持 USB 3.0~
- 下载好 Gentoo 官方提供的 stage 包
- 这个会在下文中写出过程
- 一个能够操作的 Linux 终端
下载 stage 压缩包
由于我们的安装手段比较特殊,因此可以直接跳到官方 wiki 的这一步
按照官方 wiki 给出的文档,我们进行以下操作:
首先开启 root
|
|
接下来,你可以挂载一个分区到 mnt
,也可以直接创建文件夹,我这边空间很充足就直接空载操作了。
至于如何挂载?可以去参考 Arch Wiki。
|
|
然后我们需要用 wget 下载 stage 包,打开这个页面,这里我们选择 stage3
因为我懒,喜欢用 systemd , 可以根据需要选择。
注意:右键 stage3 systemd ,复制链接
将链接粘贴到终端上
|
|
等待下载。
下载完成之后可以进行一下文件校验,可以参考一下官方的这个条目
一般情况下我这边不会损坏,所以我这里就不写出来了,接下来我们直接进入解压 stage 文件这一步。
解压 stage 压缩包
我们使用 tar 来进行解压,这是官方 wiki 给出的命令:
|
|
有些读者可能看不懂中间那一串,那一串其实是个通配符,不过这个通配符可能跟你下载到的文件不一样,因此我们将中间那段改成准确的文件名。
这一步操作很简单,只需要按一下 Tab 键即可。
|
|
等待解压,一会儿就好,除非你用 IDE 硬盘。
配置编译选项
这一步官方是这么解释的:
为了优化Gentoo,可以设置一些影响Portage的变量,Gentoo官方支持包管理器。 所有这些变量可以设置为环境变量(使用export),但这不是永久的。 为了保留设置,Portage读入/etc/portage/make.conf文件 ,一个用于Portage的配置文件。
附注
所有可能的变量的注释列表可以在 /mnt/gentoo/usr/share/portage/config/make.conf.example中找到。要成功安装Gentoo,只需要设置下面提到的变量。
启动编辑器(在本指南中,我们使用 nano)来更改我们将在下面讨论的优化变量。
1
root #nano -w /mnt/gentoo/etc/portage/make.conf
从make.conf.example文件中可以明显看出文件的结构:注释行以 “#“开头,其他行使用 VARIABLE=“content 语法定义变量。 接下来选取其中的几个进行讨论。
这里我们用 vim 写一下
|
|
将里面的 COMMON_FLAGS=
加入 -march=silvermont
的选项,这样就能让编译器给 silvermont
架构的垃圾 CPU 进行优化了。
完整文件如下:
|
|
安装 Gentoo 基础系统
上面已经完成了第一阶段的操作,可以开始安装基本系统了,诶嘿嘿。
接下来要做的是选择镜像源,我们可以参考 ustc mirror 给出的帮助文档:
直接按照 ustc 给出的帮助设置这两个源地址就好啦~
然后复制 DNS 信息
|
|
挂载必要的文件系统
这里要注意一下了,我这边要打好几条命令
Why?
官方的解释:
稍等片刻,Linux 的根目录将变更到新的位置。为了确保新环境正常工作,需要确保一些文件系统可以正常使用。
需要提供的文件系统是:
- /proc/ 一个pseudo文件系统(看起来像是常规文件,事实上却是实时生成的),由Linux内核暴露的一些环境信息
- /sys/ 一个pseudo文件系统,像要被取代的/proc/一样,比/proc/更加有结构
- /dev/ 是一个包含全部设备文件的常规文件系统,一部分由Linux设备管理器(通常是udev)管理
/proc/位置将要挂载到/mnt/gentoo/proc/,而其它的两个都是绑定挂载。字面上的意思是,例如/mnt/gentoo/sys/事实上就是/sys/(它只是同一个文件系统的第二个条目点),而/mnt/gentoo/proc/是(可以说是)文件系统的一个新的挂载。
因此按顺序执行以下命令进行挂载:
|
|
然而,这还没完
因此,接下来要加上这三条
|
|
Chroot : 进入新环境
当挂载好一切后,就可以 chroot 进去了
|
|
|
|
|
|
接下来终端会变成这样
挂载 boot 分区
这一步我们直接略过,因为最终安装的设备不是本机,而是另一台笔记本。
之后我们再进行手动安装引导介质。
从网站安装 Gentoo ebuild 数据库快照
官方其实这个就相当于 Arch 里面的 sudo pacman -Syyu
不多说,复制粘贴吧。
|
|
选择配置文件
我怎么感觉像是在复制 wiki 的内容呢…
配置文件是任何一个Gentoo系统的积木。它不仅指定USE、CFLAGS和其它重要变量的默认值,还会锁定系统的包版本范围。这些设定全是由Gentoo的Portage开发者们来维护。
|
|
|
|
然后输入以下命令即可:
|
|
其实它会列出很多选项,我们需要选择含有 desktop/system
的版本
设置时区
这里直接用 Arch 的方法
|
|
根据我的情况,我应该这样写:
|
|
然后运行 hwclock 以生成 /etc/adjtime:
|
|
设置 USE
对于 Gentoo 这个系统来说, USE 标记是必备的,因此在编译之前,我们需要设置好全局 USE 标记
|
|
|
|
更新 @world 集合
其实就是跟 Arch 的“滚”差不多,但是它会是一个比较漫长的过程。
|
|
除此之外,在更改USE标记之后,这条命令也用来动态调整系统功能。
配置 locale
麻了,参考这个 Installation guide (简体中文) - ArchWiki
配置内核
嗯哼,你以为我那么傻又编译八个小时?不!这次我选择用 bin 内核!
|
|
节省不少时间呢。
|
|
哎呀不想写了… 写了都是复制粘贴
自己看吧
安装固件
一些驱动需要先在系统上安装附加的固件才能工作。经常网络接口上会使用,特别是无线网络接口。此外,来自 AMD 、 NVidia 和 Intel 等供应商的现代视频芯片在使用开源驱动程序时,通常也需要外部固件文件。大多数固件都打包在 sys-kernel/linux-firmware 里
大多数设备的驱动都依赖于 linux-firmware
这个包
|
|
配置 fstab
这一步操作是在系统启动的时候,让内核认识分区
但是 Gentoo 好像不能用 genfstab
只能手写了
先在笔记本获取 UUID
|
|
接下来将 /
分区对应分区的 UUID
按如下格式写在 /etc/fstab
这个文件里面
|
|
通过 rsync 将系统灌到笔记本上
这个时候需要给笔记本插入一个 ArchISO 的 U 盘,启动到 ISO,并连接 WIFI 和 开启 ssh 服务。
接下来将其原有的分区格式化
|
|
然后挂载它,并将刚刚做好的文件用 rsync 灌进去
|
|
接下来笔记本这一端开启 ssh 服务
|
|
然后使用 rsync 将编译好的文件传输至笔记本的系统分区。
|
|
在笔记本安装启动引导器
这个也是很熟悉的操作了。
|
|
|
|
结语
通过一系列的折腾,这台老本子终于能发挥其最大的性能了。
由此看来通过 rsync 复制 Linux 发行版系统文件到其他的设备看起来是可行的。
不过也折腾了挺久的