gentoo系统安装
Gentoo是一个基于Linux的高度可定制化操作系统,能够根据不同的应用场景和需求进行灵活优化。其构建于自由软件生态之上,强调透明性与可控性,不对用户隐藏底层实现机制。Gentoo的核心工具链设计简洁且开放:软件包管理系统Portage基于Python实现,而用于定义软件构建规则的ebuild则采用Bash编写。用户可以自由地审查、修改并扩展系统中的各个组件,从而实现对系统行为的精细化控制。
wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20260412T164603Z/install-amd64-minimal-20260412T164603Z.iso
根据系统启动方式的不同如EFI或传统BIOS/GRUB,Gentoo的安装流程会存在一定差异。本文将以基于GRUB的启动方式为例,对安装过程进行说明。
1.磁盘分区与根文件系统
磁盘分区
通过fdisk工具对磁盘vda进行分区,将其划分为启动分区boot、交换分区swap和根分区/,同时标记各个分区类型,针对boot分区设置启动标记。完成磁盘分区规划后,需要对各分区分别进行对应文件系统的格式化。
fdisk /dev/vda
Welcome to fdisk (util-linux 2.41.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/vda: 256 GiB, 274877906944 bytes, 536870912 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa9402dcc
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 35653631 33554432 16G 82 Linux swap / Solaris
/dev/vda3 35653632 536870911 501217280 239G 83 Linux
mkfs.xfs /dev/vda1
mkswap /dev/vda2
mkfs.ext4 /dev/vda3
挂载root分区
mkdir --parents /mnt/gentoo
mount /dev/vda3 /mnt/gentoo
mkdir --parents /mnt/gentoo/boot
mount /dev/vda1 /mnt/gentoo/boot
swapon /dev/vda2
根文件系统
使用livecd中自带的link工具下载gentoo根文件系统,并解压至/mnt/gentoo目录。
links https://distfiles.gentoo.org/releases/amd64/autobuilds
tar xpvf ./stage3-amd64-openrc-20260412T164603Z.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo
挂载虚拟文件系统
将dns解析配置复制只新系统中,同时挂载安装环境必要的虚拟文件系统。
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ # 后期包下载需要解析域名
mount --types proc /proc /mnt/gentoo/proc # 部分命令依赖proc文件系统,比如ps、top、emerge
mount --rbind /sys /mnt/gentoo/sys # 系统安装需要udev、硬件识别,r表示递归
mount --rbind /dev /mnt/gentoo/dev # 设备文件挂载,磁盘、终端等
mount --bind /run /mnt/gentoo/run # 运行时状态,服务管理、网络、DNS
mount --make-rslave /mnt/gentoo/sys # 标记单向映射,主 → 从
mount --make-rslave /mnt/gentoo/dev
mount --make-slave /mnt/gentoo/run
2.Portage工具配置
进入新系统
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
配置portage及相关编译参数
使用国内portage源
emerge-webrsync
emerge --ask --verbose --oneshot app-portage/mirrorselect
mirrorselect -i -o >> /etc/portage/make.conf
emerge --sync
开启portage的binhost功能,添加二进制包源
cat /etc/portage/binrepos.conf/gentoobinhost.conf
[binhost]
priority = 9998
sync-uri = https://mirrors.bfsu.edu.cn/gentoo/releases/amd64/binpackages/23.0/x86-64/
# 在/etc/portage/make.conf中增加binpkg的支持
FEATURES="${FEATURES} getbinpkg"
FEATURES="${FEATURES} binpkg-request-signature"
# 设置编译优化标记
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
RUSTFLAGS="${RUSTFLAGS} -C target-cpu=native"
# 更新Gentoo Portage信任密钥GPG keyring
# 用于后续 ebuild / binpkg 的签名验证
getuto
更新编译cpu-flags参数,该变量用于构建编译特定的汇编代码或其他内置函数,运行优化
emerge --ask --oneshot app-portage/cpuid2cpuflags
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
更新软件许可规定
# 修改/etc/portage/make.conf,覆盖配置文件的ACCEPT_LICENSE默认值
ACCEPT_LICENSE="-* @FREE @BINARY-REDISTRIBUTABLE"
mkdir /etc/portage/package.license
cat /etc/portage/package.license/kernel
app-arch/unrar unRAR # equery meta app-arch/unrar,查询到对应的软件包的license
sys-kernel/linux-firmware linux-fw-redistributable # 网卡等设备固件驱动,允许使用但不允许修改分发
sys-firmware/intel-microcode intel-ucode
更新@world集合(已手动安装的软件集合)
emerge --ask --verbose --update --deep --newuse --getbinpkg @world
3.内核安装
安装固件和微代码
emerge --ask sys-kernel/linux-firmware # 通用固件
emerge --ask sys-firmware/sof-firmware # Sound Open Firmware音频相关固件
二进制内核及源码
# 新增/etc/portage/package.use/installkernel文件
sys-kernel/installkernel grub
sys-kernel/installkernel dracut
# 新增/etc/dracut.conf.d/00-installkernel.conf文件
kernel_cmdline=" root=UUID=2122cd72-94d7-4dcc-821e-3705926deecc " # 请使用blkid获取根分区的uuid
emerge --ask sys-kernel/installkernel # 安装内核安装时所需的工具链
emerge --ask sys-kernel/gentoo-kernel-bin # 官方编译的Linux内核
emerge --ask sys-kernel/gentoo-sources # 内核源码安装
emerge --ask sys-kernel/genkernel # 内核自动编译与生成工具
4.系统引导配置(GRUB与FSTAB)
配置引导项
emerge --ask --verbose sys-boot/grub # 安装grub工具
grub-install /dev/vda # 把GRUB写入磁盘启动区域,让机器具备开机启动Linux的能力
grub-mkconfig -o /boot/grub/grub.cfg
开机挂载fstab
退出chroot环境,执行genfstab工具生成开机挂载项
emerge --ask sys-apps/arch-install-scripts
genfstab -U /mnt/gentoo > /mnt/gentoo/etc/fstab
5.常用工具
emerge --ask sys-apps/mlocate
emerge --ask sys-apps/pciutils
emerge --ask app-shells/bash-completion
emerge --ask app-emulation/qemu-guest-agent
emerge --ask net-misc/chrony
rc-update add sshd default
rc-update add chronyd default
rc-update add qemu-guest-agent default