gentoo 安装记录

  • ~6.12K 字
  1. 1. 关于 Gentoo Linux 的安装 && 选择正确的安装媒介
  2. 2. 配置网络
  3. 3. 准备磁盘
    1. 3.1. 磁盘分区
    2. 3.2. 创建文件系统
    3. 3.3. 挂载分区
  4. 4. 安装Gentoo基础系统
    1. 4.1. 设置时区
  5. 5. 配置内核
  6. 6. 配置系统
  7. 7. 安装系统工具
  8. 8. 配置引导加载程序
  9. 9. 收尾安装工作
  10. 10. 故障

关于 Gentoo Linux 的安装 && 选择正确的安装媒介

  • 关闭 bit locker 加密和 secure boot
  • 在选择gentoo的boot in normal mode安装时,会直接进入 grub rescue 环境,退出后再进入 Windows 则显示”你的PIN不可用,单击以重新设置PIN”
  • 要选择boot in grub2 mode
  • passwd root如果有公网IP,则设置一个强密码
  • rc-service sshd start启动ssh服务

配置网络

  • net-setup显示enp12s0(以太网接口)和wlp0s20f3(无线局域网)
    • p表示设备连接到主板的第几号PCI总线
    • s表示设备在第几号插槽
    • f表示该插槽的功能编号为几
    • open/wep表示开放或者等效有线保密,由于安全性低,现已废弃
    • wpa-psk/wpa2-psk
  • ip link set wlp0s20f3 up显示RFNETLINK answers: Operation not possible due to RF-kill 需要rfkill unblock wifi
  • 默认dpcp服务没有启动,需要echo 'config_eth-=("dhcp")' >> /etc/conf.d/net,修改后,重启网络服务/etc/init.d/network restart
  • ip addr查看本机ip地址,我的是连接无线的,则是wlp0s20f3inet(表示IPV4协议)后 192.168.43.57/24去掉/24(表示网络部分占用前24位,子网掩码为255.255.255.0
  • 在另一台处于同一个局域网(热点)的电脑远程连接ssh root@192.168.43.57后出现提示输入yes,再输入刚才设置的root密码

    如果你在接下来的安装中,不小心断开了连接,重新连接继续之前的操作即可 ,注意服务器的ip地址可能会发生变化
    如果你的 ssh 卡住,可以ps aux | grep ssh 查找进程 PID 并使用 kill -9 PID 杀掉这个 ssh 进程,再重新连接

准备磁盘

磁盘分区

  • lsblk -f显示有sda nvme0n1 nvme1n1分别对应U盘,加装的固态硬盘,原装的固态硬盘
  • fdisk /dev/nvme0n1
    • g创建一个新的GPT磁盘分区表GUID: AEE90FFF-915C-471C-BF7D-4CB8CD08E2D
    • n创建一个新的分区,按2次enter选择默认的分区号,和分区开始位置,结束位置设置为+1G,如果有显示Do you want to remove the signature则输入yest更改磁盘类型为uefi
    • 接下来同样操作建立32Gswap分区
    • 创建/分区,我分配了300G
    • 创建/home分区,分配剩下所有空间,文件系统和根分区皆为默认的 Linux filesystem

创建文件系统

  • mkfs.fat -F 32 /dev/nvme0n1p1
  • mkswap /dev/nvme0n1p2
  • mkfs.ext4 /dev/nvme0n1p3
  • mkfs.ext4 /dev/nvme0n1p4

挂载分区

  • swapon /dev/nvme0n1p2
  • mount /dev/nvme0n1p3 /mnt/gentoo得先有根目录,才能创建下面的目录
  • mount /dev/nvme0n1p4 /mnt/gentoo/home --mkdir
  • mount /dev/nvme0n1p1 /mnt/gentoo/efi --mkdir
    如果分错了,可以umount /mnt/gentoo/home,中途随时可以使用lsblk -f或者fdisk -l来查看分区状况

安装Gentoo基础系统

  • cd /mnt/gentoo
  • chronyd -q同步时间
  • vi /etc/resolv.conf加入:nameserver 1.1.1.1系统将使用1.1.1.1(Cloudflare提供)作为DNS服务器进行域名解析
  • links https://www.gentoo.org/downloads/mirrors/或者links https://mirrors.ustc.edu.cn/gentoo/选择releases->amd64->autobuilds->current-stage3-amd64-desktop-systemd/ 下载.tar.xz文件
  • tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
    • x extract(提取),指示 tar 提取存档的内容
    • p preserve(保留),保留权限
    • V verbose(详细),提供详细输出
    • f file(文件),为 tar 提供输入存档的名称
    • --xattrs-include='*.*' 在存档中存储的所有命名空间中保留扩展属性
    • --numeric-owner 确保从 tarball 中提取的文件的用户和组 ID 与 Gentoo 的发布工程团队的预期相同(即使冒险的用户在安装过程中没有使用官方的 Gentoo live 环境)
  • vi /mnt/gentoo/etc/portage/make.confCOMMON_FLAGS改为-march=native -O2 -pipe
    增加配置如下:
    1
    2
    3
    4
    5
    6
    7
    MAKEOPTS="-j12"
    GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
    USE="-gtk -gnome qt6 qt5 gtk3 gtk2 kde alsa X wayland yulkan fcitx dist-kernel dbus vdpau nvenc"
    VIDEO_CARDS="nvidia"
    ACCEPT_LICENSE="@FREE @BINARY-REDISTRIBUTABLE @EULA"
    ACCEPT_LICENSE="en en_US zh zh_CN"
    GRUB_PLATFORMS="efi-64"

上文配置解读:
指定12线程并行编译,1job对应内存2G
指定 Gentoo 软件包的镜像源
USE 标志用于控制软件包的编译选项,-gtk 意为禁用 GTK 支持,vulkan 为图形 API 支持,dist-kernel 为启用分布式内核(Gentoo 提供的预编译内核),dbus 用于进程间通信
指定系统使用显卡驱动VIDEO_CARDS
指定系统可以接受的软件许可协议
设置接受的软件本地化语言
指定 GRUB 引导程序的平台目标

  • cp --dereference /etc/resolv.conf /mnt/gentoo/etc//etc/resolv.conf文件复制到 Gentoo 的根文件系统中,确保在 chroot环境可以解析域名
  • arch-chroot /mnt/gentoo进入到 Gentoo 的 chroot 环境,为后续配置提供虚拟根目录
  • source /etc/profile加载 Gentoo 环境的用户配置文件
  • export PS1="(chroot) ${PS1}"设置提示符以指示当前处于 chroot 环境中
  • emerge-webrsync从网站安装 Gentoo ebuild 数据库快照
  • emerge news list检查是否有新的新闻条目
  • emerge profile list列出可用的 Gentoo 配置文件
  • emerge profile set 27
  • emerge --ask --oneshot app-portage/cpuid2cpuflags 安装cpuid2cpuflags工具
  • cpuid2cpuflags输出当前 CPU 支持的指令集
  • echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags 将 CPU 指令集标志写入 Portage 配置文件,以便为系统的所有软件包启用这些优化
  • emerge --ask --verbose --update --deep --newuse -e @world 重新编译系统中的所有软件包,确保启用了新设置的 USE 标志,同时处理深层依赖项和新增功能,如果在此时你不小心断开了网络连接(比如我第一次安装时连的手机热点,然后中途带着手机出门了),那它中途断开

设置时区

  • 查看可用时区:ls /usr/share/zoneinfo/...
    OpenRC:
  • echo "Asia/Shanghai" > /etc/timezone
  • emerge --config sys-libs/timezone-data
    systemd:
  • ln -sf ../usr/share/zoneinfo/Europe/Brussels /etc/localtime之后当 systemd 运行时,时区和相关设置可以使用 timedatectl 命令设置
  • emerge vim 我不希望使用nano
  • vim /etc/locale.gen 生成区域设置
    添加如下:
    1
    2
    en_US.UTF-8 UTF-8 # 去掉注释即可
    zh_CN.UTF-8 UTF-8
  • locale-gen 根据 /etc/locale.gen 文件中的设置生成所需的语言环境
  • locale -a 可以验证当前所选择的 locale 可用
  • eselect locale list 显示可用目标
  • eselect locale set 5 选择 zh_CN.utf8
  • env-update && source /etc/profile && export PS1="(chroot) ${PS1}" 重新加载环境
  • nano 检测目前语言设置情况

配置内核

  • vim /etc/portage/package.use/installkernel
    加入如下:
    1
    sys-kernel/installkernel dracut grub
  • emerge --ask sys-kernel/gentoo-kernel 编译内核
  • emerge --ask sys-kernel/linux-firmware 安装固件
  • emerge --ask sys-firmware/sof-firmware
  • emerge -a sys-firmware/intel-microcode 如果你使用 Intel 的 CPU 的话

配置系统

  • emerge fstab
  • genfstab -U / >> /etc/fstab
  • echo hostname > /etc/hostname 设置主机名

安装系统工具

  • emerge --ask app-admin/sysklogd 安装系统日志
  • rc-update add sysklogd default
  • emerge --ask sys-process/cronie 安装守护进程
  • rc-update add cronie default
  • emerge --ask sys-apps/mlocate 安装文件索引
  • emerge --ask app-shells/bash-completion
  • emerge --ask net-misc/chrony 时间同步
  • rc-update add chronyd default
  • emerge -a sys-fs/e2fsprogs sys-fs/dosfstools 安装文件系统工具,对应 ext4 和 VFAT
  • emerge --ask sys-block/io-scheduler-udev-rules

配置引导加载程序

  • grub-install --target=x86_64-efi --efi-directory=/efi
  • grub-mkconfig -o /boot/grub/grub.cfg

收尾安装工作

  • useradd -m -G users,wheel,audio,video -s /bin/bash name
  • passwd name
  • passwd root
  • emerge sudo
  • export EDITOR=vim 临时设置编辑器为 vim
  • visudo
    etc/sudoers.tmp 文件中查找 root ALL=(ALL:ALL) ALL 并在其下添加 name ALL=(ALL:ALL) ALL 其中,name为你自己刚设置的用户名
  • rm /stage3-*.tar.* 删除安装后的残留文件
  • emerge openssh
  • rc-update add sshd default
  • exit
  • reboot

故障

  1. 问题描述:前期下载用了 OpenRC,Gentoo 启动卡死在了 Setting system clock using the hardware clock [UTC] ... 按任何键都无反应。
  2. 问题排查:
  • 进入 BIOS 界面,查看系统时间为北京时间
  • 进入修复环境 mount /dev/nvme1n1p3 /mnt arch-chroot /mnt
  • hwclock --verbose 查看硬件时钟为 UTC 时间,但数值却为 CST 时间
  • 回顾设置时区部分,执行 emerge --config sys-libs/timezone-data 时,显示 Assuming your /etc/localtime symlink is what you want; skipping update
  1. 问题更大:
    硬件时间应该是一台电脑只有一个,而系统时间应该可以有多个
  • 在 Arch 中 timedatectl set-ntp true 启动 System clock synchronized 不对啊,这是在内存中进行的
  • 进入修复环境 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • hwclock --systohc
  • hwclock --verbose 检查硬件时钟正常
  • reboot 显示问题更大
    systemd

参考:gentoo linux wiki