关于 Gentoo Linux 的安装 && 选择正确的安装媒介
为避免双系统读取 RTC 时间因为时区不一致导致无法加载 Gentoo 内核问题,在 Windows 端设置写入到 RTC 的时区为 UTC:sudo reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
关闭 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
更改磁盘类型为efi
接下来同样操作建立32G的swap分区
创建/
分区,我分配了300G
创建/home
分区,分配剩下所有空间,文件系统和根分区皆为默认的 Linux filesystem
创建文件系统 1 2 3 4 mkfs.fat -F 32 /dev/nvme0n1p1 mkswap /dev/nvme0n1p2 mkfs.ext4 /dev/nvme0n1p3 mkfs.ext4 /dev/nvme0n1p4
挂载分区 1 2 3 4 5 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基础系统 1 2 3 4 5 6 7 8 9 cd /mnt/gentoochronyd -q vi /etc/resolv.conf links https://www.gentoo.org/downloads/mirrors/或者links https://mirrors.ustc.edu.cn/gentoo/ tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
vi /mnt/gentoo/etc/portage/make.conf中COMMON_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 引导程序的平台目标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 cp --dereference /etc/resolv.conf /mnt/gentoo/etc/arch-chroot /mnt/gentoo source /etc/profileexport PS1="(chroot) ${PS1} " emerge-webrsync emerge news list emerge profile list emerge profile set 27 emerge --ask --oneshot app-portage/cpuid2cpuflags cpuid2cpuflags echo "*/* $(cpuid2cpuflags) " > /etc/portage/package.use/00cpu-flagsemerge --ask --verbose --update --deep --newuse -e @world
设置时区
查看可用时区: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
检测目前语言设置情况
配置内核 1 2 3 4 5 6 7 8 9 10 11 vim /etc/portage/package.use/installkernel emerge --ask sys-kernel/gentoo-kernel emerge --ask sys-kernel/linux-firmware emerge --ask sys-firmware/sof-firmware emerge -a sys-firmware/intel-microcode
配置系统 1 2 3 emerge fstab genfstab -U / >> /etc/fstab echo hostname > /etc/hostname
安装系统工具 1 2 3 4 5 6 7 8 9 10 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
配置引导加载程序 1 2 grub-install --target=x86_64-efi --efi-directory=/efi grub-mkconfig -o /boot/grub/grub.cfg
收尾安装工作 1 2 3 4 5 6 7 8 9 10 11 12 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
吧