关于 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地址,我的是连接无线的,则是wlp0s20f3
项inet
(表示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
则输入yes
,t
更改磁盘类型为uefi
- 接下来同样操作建立
32G
的swap
分区 - 创建
/
分区,我分配了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.conf
中COMMON_FLAGS
改为-march=native -O2 -pipe
增加配置如下:1
2
3
4
5
6
7MAKEOPTS="-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
我不希望使用nanovim /etc/locale.gen
生成区域设置
添加如下:1
2en_US.UTF-8 UTF-8 # 去掉注释即可
zh_CN.UTF-8 UTF-8locale-gen
根据/etc/locale.gen
文件中的设置生成所需的语言环境locale -a
可以验证当前所选择的 locale 可用eselect locale list
显示可用目标eselect locale set 5
选择 zh_CN.utf8env-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 和 VFATemerge --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
临时设置编辑器为 vimvisudo
在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
故障
- 问题描述:前期下载用了 OpenRC,Gentoo 启动卡死在了
Setting system clock using the hardware clock [UTC] ...
按任何键都无反应。 - 问题排查:
- 进入 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
- 问题更大:
硬件时间应该是一台电脑只有一个,而系统时间应该可以有多个
- 在 Arch 中
timedatectl set-ntp true
启动System clock synchronized
不对啊,这是在内存中进行的 - 进入修复环境
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
hwclock --verbose
检查硬件时钟正常reboot
显示问题更大
换systemd
吧