首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在VMware上从零安装Gentoo Linux (第三篇:系统配置与内核编译)

在VMware上从零安装Gentoo Linux (第三篇:系统配置与内核编译)

作者头像
一根头发丝的宽度
发布2026-05-06 20:11:37
发布2026-05-06 20:11:37
970
举报

欢迎回来!这里是《在VMware Workstation 17 Pro 上安装 Gentoo Linux》系列指南的第三篇,也是整个安装过程的核心攻坚阶段。

上一篇中,我们成功 chroot 进入了新系统,为后续所有操作打下了基础。从这一刻起,我们才真正开始构建属于我们自己的 Gentoo 系统。本篇我们将完成大量关键配置,并迎来整个安装过程中最令人兴奋(也可能最耗时)的一步——编译 Linux 内核。

本篇我们将依次完成以下任务:

  • 配置系统基础:设置时区、Locale,安装硬件所需的固件和微码。
  • 驯服 Portage:同步软件库、阅读新闻、选择系统 profile,让我们的软件包管理器做好准备。
  • 挑战核心:获取内核源码,并使用 genkernel 工具完成内核的自动编译与安装。
8.1 挂载启动分区

对于UEFI系统,/dev/sda1 已格式化为 FAT32 文件系统,并将用作 EFI 系统分区(ESP)。创建新的/ efi 目录(若尚未创建),然后将ESP挂载至该目录:

代码语言:javascript
复制
(chroot) livecd / # mkdir /efi
(chroot) livecd / # mount /dev/sda1 /efi
9. 配置 Portage
9.1 从网站安装 ebuild 数据库快照

安装 Gentoo ebuild 数据库。这个快照包含一组文件,包括通知 Portage 中有关可用软件的标题(用于安装),系统管理员可以选择哪些配置文件,软件包或 profile 特定新闻 (news) 项目等。

代码语言:javascript
复制
(chroot) livecd / # emerge-webrsync
9.2 阅读新闻条目

新闻条目是为了提供一个通信媒介,通过 Gentoo ebuild 数据库来给用户推送重要的消息。

对于news模块,最常用的有三个操作:

  • 使用list显示一个可用新闻条目的预览。
  • 使用read来阅读新闻条目。
  • 使用purge将在新闻条目阅读后删除,并且不能再次阅读。
代码语言:javascript
复制
(chroot) livecd / # eselect news list
(chroot) livecd / # eselect news read
9.3 选择正确的配置文件

配置文件是任何一个Gentoo系统的积木。它不仅指定USE、CFLAGS和其它重要变量的默认值,还会锁定系统的包版本范围。

运行 eselect 使用 profile模块,能看到当前系统正在使用什么配置文件:

代码语言:javascript
复制
(chroot) livecd / # eselect profile list
# 默认配置是自己期望的配置文件,则跳过下面这条配置文件设置命令。
(chroot) livecd / # eselect profile set 2

若要使用 systemd, 请选择名称中包含 "systemd" 的配置文件。否则,选择相反的配置文件。

9.4 配置 USE 变量

USE是Gentoo为用户提供的最具威力的变量之一,很多程序通过它可以选择编译或者不编译某些可选的支持。

使用命令 emerge --info | grep ^USE查看当前的 USE 变量,本次实践安装不作修改,保持默认即可。如需修改请参考官方 Wiki 。

9.5 更新 @world 集合

当系统应用了任何升级,或从 任何 profile 构建了stage3 后,应用了变化的 use 标记时,这一步是必要的。

此步骤比较耗时,请耐心等待~

代码语言:javascript
复制
(chroot) livecd / # emerge --ask --verbose --update --deep --newuse @world

系统升级后务必清除过时软件包。通过 emerge --depclean --pretend命令仔细检查输出结果,确认是否存在需保留的待清理软件包(若您正在使用这些软件包)。若需保留某软件包使其免于被 depclean 清除,使用emerge --noreplace foo命令。如果满足条件,则执行真正的 depclean:

代码语言:javascript
复制
(chroot) livecd / # emerge --ask --pretend --depclean
(chroot) livecd / # emerge --ask --depclean
10. 设置时区

为系统选择时区。在 /usr/share/zoneinfo/ 中查找可用的时区,然后写进 /etc/timezone 文件。

代码语言:javascript
复制
(chroot) livecd / # ls /usr/share/zoneinfo
(chroot) livecd / # ls /usr/share/zoneinfo/Asia/
(chroot) livecd / # ln -sf ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
11. 配置区域设置
11.1 生成区域设置

Locale 不只是指定用户应该使用与系统进行交互的语言,同时也指定了字符串排序,日期和时间的显示等规则。Locale 是 "区分大小写" 的,必须完全按照描述的方式表示。接着运行 locale-gen命令。此命令会生成 /etc/locale.gen 文件中所有指定的地区。

代码语言:javascript
复制
(chroot) livecd / # nano /etc/locale.gen
# 取消相应区域的设置
# 添加 zh_CN.UTF-8 UTF-8
(chroot) livecd / # locale-gen
11.2 选择区域设置

再次使用 eselect 设定区域设置,现在使用 locale模块。通过 eselect locale list命令可显示可用的目标,使用 eselect locale set <NUMBER>选择正确的区域设置:

代码语言:javascript
复制
(chroot) livecd / # eselect locale list
(chroot) livecd / # eselect locale set 6
11.3 重载环境

现在重新加载环境:

代码语言:javascript
复制
(chroot) livecd / # env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
>>> Regenerating /etc/ld.so.cache...
12. 安装固件和微码
12.1 固件

在许多系统中,某些硬件需要非自由开源软件(FOSS)固件才能正常工作。sys-kernel/linux-firmware软件包包含了大量设备(但并非全部)的固件。

代码语言:javascript
复制
(chroot) livecd / # emerge --ask sys-kernel/linux-firmware

提醒:较新的设备可能需要安装 sys-firmware/sof-firmware固件。

12.2 微码

除了独立显卡硬件和网络接口之外,CPU 可能也需要固件更新。通常这种固件被称为微码(microcode)。有时需要更新版本的微码来修补 CPU 硬件中的不稳定性、安全问题或其他复杂的错误。

AMD CPU 的微码更新在前面提到的 sys-kernel/linux-firmware软件包内分发。Intel CPU 的微码可以在 sys-firmware/intel-microcode包中找到,并且需要单独安装。

代码语言:javascript
复制
(chroot) livecd / # emerge --ask sys-firmware/intel-microcode
13. 安装内核 - 使用 Genkernel
13.1 安装内核源码

当为基于 amd64 的系统安装和编译内核时,Gentoo 推荐使用 sys-kernel/gentoo-sources软件包。

代码语言:javascript
复制
(chroot) livecd / # emerge --ask sys-kernel/gentoo-sources

列出所有已安装的内核,选择内核,并创建一个符号连接:

代码语言:javascript
复制
(chroot) livecd / # eselect kernel list
(chroot) livecd / # eselect kernel set 
(chroot) livecd / # ls -l /usr/src/linux
lrwxrwxrwx 1 root root 20 Aug 29 08:34 /usr/src/linux -> linux-6.12.41-gentoo
13.2 使用 genkernel 安装内核

安装 genkernel,并使用命令 genkernel all安装内核 。

代码语言:javascript
复制
(chroot) livecd / # emerge --ask sys-kernel/genkernel
(chroot) livecd / # genkernel all

内核安装成功后将显示类似如下界面:

代码语言:javascript
复制
...
Kernel compiled successfully!
* 
* --no-bootloader set; Skipping bootloader update ...
* 
* Required kernel parameter:
* 
*       root=/dev/$ROOT
* 
* Where $ROOT is the device node for your root partition as the
* one specified in /etc/fstab

* If you require Genkernel's hardware detection features, you MUST
* tell your bootloader to use the provided initramfs file '/boot/initramfs-6.12.41-gentoo-x86_64.img'.
...

恭喜!看到 Kernel compiled successfully! 的提示,意味着我们已经成功跨过了 Gentoo 安装中最有挑战性的关卡之一! 一个为我们当前硬件定制的内核已经准备就绪。


本篇小结 & 下篇预告

至此,我们已经成功完成了 Gentoo 安装的第三阶段:系统配置与内核构建。我们来回顾一下本篇的巨大进展:

  1. 完善系统配置:设置了正确的时区、Locale,并安装了 CPU 微码和硬件固件,为系统的稳定性和国际化打好了基础。
  2. 搞定 Portage:同步了 ebuild 数据库、处理了新闻条目、选择了 systemd profile,并更新了整个系统体系 (@world),确保软件管理环境是最新的。
  3. 攻克核心难关:成功编译并安装了 Linux 内核!这是我们亲手为虚拟机打造的“引擎”,是系统能否成功启动的关键。

现在,我们的 Gentoo 系统已经拥有了灵魂(Stage3)、躯体(分区)和强大的心脏(内核)。

在下一篇,也就是系列的收官之作《Gentoo 安装指南第四篇:配置引导与系统收尾》中,我们将:

  • 配置 fstab 文件,告诉系统如何挂载分区。
  • 配置网络、主机名并为 root 用户设置密码。
  • 安装并配置 GRUB 引导加载程序,让我们的系统能够正常启动。
  • 完成重启,并创建一个用于日常操作的普通用户。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一根头发丝的宽度 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 8.1 挂载启动分区
  • 9. 配置 Portage
    • 9.1 从网站安装 ebuild 数据库快照
    • 9.2 阅读新闻条目
    • 9.3 选择正确的配置文件
    • 9.4 配置 USE 变量
    • 9.5 更新 @world 集合
  • 10. 设置时区
  • 11. 配置区域设置
    • 11.1 生成区域设置
    • 11.2 选择区域设置
    • 11.3 重载环境
  • 12. 安装固件和微码
    • 12.1 固件
    • 12.2 微码
  • 13. 安装内核 - 使用 Genkernel
    • 13.1 安装内核源码
    • 13.2 使用 genkernel 安装内核
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档