Gentoo安装流程梳理OpenRC-AMD64

% 个人学习整理,仅供参考 — Xin
同步时间,20231117(同步与个人blog)

Gentoo Linux 中文社区 https://gentoo.site/
QQ交流群: 87709706

本文仅适用于 amd64架构平台,EFI/UEFI的主机可食用

食材准备

做LFS需要,自己四处找食材。做Gentoo呢,需要去官网买准备好的一堆食材。
购物清单: minimal镜像和stage3的系统包(没有外网加速条件的stage3包建议先行下载,复制到安装U盘中)
购买链接: https://www.gentoo.org/downloads/
备菜工具: 启动盘制作,此处略过。可以使用rufus(链接为官网,外网,稍慢)

个人安装环境介绍(作为参考)

CPU、显卡 不同的,需要自行上官网查找对应的安装方法

3A平台,5950X,RX6500,ASUS Gamming WIFI I X570
架构: AMD64
init: Openrc
镜像文件:install-amd64-minimal-20230220T081656Z.iso
系统包:stage3-amd64-openrc-20230220T081656Z.tar.xz

关于 init 选择


System,并行启动,集成度高,执行速度快
OpenRC,串行启动,启动的东西多,开机速度会稍慢些,轻量化

U盘安装阶段

键盘布局,初入系统有一个Keyboard Layout选项,不动默认就是qwerty布局,Dvorak是14,其他的自行查看
键盘布局,没来及输入可以用命令 loadkeys dvorak,dvorak换成自己想要的布局名称就行
服务,推荐 打开ssh服务 rc-service sshd start,然后设置root用户密码 password root 然后提示,输入密码
网络,推荐网线连接,简单。(特别是无线网是中文名称/非英文符号名称的,主要是没有其他的输入法。当然输入对应的编号也成。)

网络/网卡基本信息查看

ip link显示 所有已检测到的网卡(包含虚拟网卡和loop环回路线),也用于查看网卡名称
ifconfig显示 所有网卡的状态与具体信息,同时连接到网络的网卡会显示inet/inet6的ip地址

net-setup 网卡名称
net-setup会询问你关于网络环境的一些问题。流程结束后,网络应该就可以正常工作啦

意外问题(网卡无法使用)

网络模块是否已加载

ls /lib/modules/`uname -r`/kernel/drivers/net
# 有输出就成, 没有看下面

网络模块驱动手动加载

modprobe 驱动名称
# 驱动名称得按实际看

查看系统中可用网络接口名称

ls /sys/class/net
网线连接(强烈推荐)

ip link:可以查看所有可用的网络设备的状态 — ip 命令来自iproute
   <>中有UP,说明开启/启用状态
dhcpcd dev:开启DHCP dev — 网络设备的名字
ping -c 3 www.baidu.com:想ping啥ping啥
ifconfig dev:记住inet 后的ip地址(ssh需要),dev — 同上 — ifconfig 命令来自net-tools(不推荐,圈内已弃用)

一定要做的 - ssh
启动: rc-service sshd start
连接: ssh username@ip地址 >> yes >> 输入密码

DNS配置

DNS配置文件: nano -w /etc/resolv.conf
(镜像内自带的是nano,livecd也有vi;进入chroot后,只有nano)

#/etc/resolv.conf
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

# 如果需要多个不同网络切换,直接多配置几个也可以,会自动轮训的
nameserver 192.168.3.1
nameserver 192.168.8.1
nameserver 192.168.121.154
无线连接

(不适用)注意点

  • 处于英文操作系统/安装流程中,不要使用含有非英文的特殊字符的无线网名称。
  • 无法输入中文,特别是tty2-6中,没有中文输入支持。
  • 安装流程中,不切换为中文,因为安装界面的纯文字不支持中文字符,非ASCII表中的文字一般都无法正确显示 ( / 口 \ )
  • 实在只能用的,你得知道wifi的ESSID的编号
wpa_supplicant — 无线网临连接方案

如遇到 引导盘/常规系统,尚未联网,且没有自带的iw,iwd,等连接软件,可以使用wpa_supplicant临时联网。但此联网方式,不建议作为长久连接网络的方法。

## 生成wpa_supplicant.conf
wpa_passphrase ESSID pssward > /etc/wpa_supplicant/wpa_supplicant.conf

## 使用wpa_supplicant连接
wpa_supplicant -i 网卡名称 -B -Dwext -c wpa_supplicant.conf文件位置

## 网卡名称 可以使用 查看
ip link
网络周边问题

关于网络管理器network,NetworkManager,systemd-networkd

  • network — 推荐用于服务器上,优势,稳定。命令为network
  • NetworkManager — 是一个综合的模块组成的网络管理器,优势是有GUI界面,对于有desktop的的用户来说,更方便管理网络(不过,说实话,一般用Linux的用户,使用命令行管理网络都是没问题的)。当然,人家自己也是有nmcli命令用作命令行管理的
  • systemd-networkd — 是systemd这个init(初始化)系统现在自带的网络管理器(目前了解不多)

一定要安装/使用dhcpcd么?

  • dhcpcd 用于dhcp服务,自动分配/请求分配和获取ip地址作用。
  • 如果不安装dhcpcd服务,则需要自行设置静态ip地址。

前期准备

磁盘

分区建议(需要独立分区的),具体可参考 Linux FHS 标准
  • 必要分区
    • / 根目录
    • /boot — 方便修引导 — FAT32 mkfs.fat -F 32 /dev/sda1
    • /home — 方便后期扩容
  • 推荐分区
    • /var — 如果有服务器规划则单独分区
    • /usr/local — 如果自编译的库较多或者自己写的Shell文件较多,这里一般放库类文件和Shell文件(自己的理解)
    • /opt — 第三方的二进制包,或者自编译的应用级软件,反正就是较大的非源内的软件就放这里,方便管理嘛
    • swap — 算分区吧,虚拟内存,我是单独的128G换下来的SSD做的Swap(高速U盘可能也行吧,但是毕竟不是装在上面的,容易碰到造成丢失),需要作为额外的内存空间的,所以可能被多次读写。

Swap一般是RAM(的1~2倍),太大也没用,就是防止到时候编译chromium和Firefox这种占内存的软件用的

因为我想跑更多的核心 make.conf配置的 -j12 (5950X 16核32线程,一般是16/2 8个 然后-jobs =2 这样更好),这就需要 大概 12*2 24G的空间,到时候还得余一些用于运行基本程序)

Tip: 不推荐在SDD上划Swap空间。

文件系统类型

  • btrfs (我的选择)mkfs.btrfs /dev/sda1
  • ext4 (常见,推荐第一次用Linux或者了解不多,这个简单,兼容度高)mkfs.ext4 /dev/sda1
  • vfat 一般用于格式化SD卡、U盘等,不推荐移动硬盘用vfat ·mkfs.vfat /dev/sda1`

    Tip: vfat相对于NTFS,可以格式化更小的簇

  • NTFS 属于微软的文件系统,一般用于Winodws下硬盘格式化类型。现在一般的Linux发行版都会有内置的NTFS文件格式的支持,也有需要自行下载的,都一样(反正都是OpenSource的项目)。Mac需要安装插件应用才能正确使用。

其实,还有许多优秀的文件系统,留以后补充,或者直接写详细的Blog吧

GPT分区

工具:

  • 官网 — fdisk — 近几年的教程已经几个使用fdisk分区了
  • 推荐 — parted — 正在逐渐代替fdisk
  • 推荐 — cfdisk — 有UI界面,操作简单,当然功能也比较基本,但是足够分区、mark分区Type了
格式化
mkfs.文件系统名称	指定分区的绝对路径	# 分区语句的一般格式
## 常见的分区
mkfs.vfat -F 32 /dev/sda1	#用于格式化EFI分区,用于挂载/boot目录
mkfs.btrfs --type gentoo /dev/sda2	#用于格式化Btrfs格式,用于挂载根目录(/)、家目录(/home),等等
mkfs.ext4 /dev/sda3		#用于格式化ext4格式,可挂载的目录同上

## swap分区
mkswap /dev/sda4	#初始化swap分区
swapon /dev/sda4	#激活并使用swap分区

## 等等

至此可挂载 /(根目录)

此处,仅挂载 根目录,其他的暂时可以不用挂载
mount /dev/sda2 /mn/gentoo

可选: 打开SSH

rc-service sshd start

Tip: SSH需要一个用户并设置密码,目前可以先用root
设置密码 passwd root
然后,需要设置一个比较复杂的密码

设置弱密码策略(不推荐,但是自己在用)
文件位置 cd /etc/security && vi passwdqc.conf

min=disabled,24,11,8,7
max=30
passphrase=3
match=4
similar=deny
random=47
enforce=none # everyone => none
retry=3

开工啦

一定要写在前面的,make.conf文件的完整内容

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-O3 -march=znver3 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

CHOST="x86_64-pc-linux-gnu"
MAKEOPTS="-j12"
GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"

# NOTE: This stage was built with the bindist Use flag enabled

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C

EMERGE_DEFAULT_OPTS="--keep-going --with-bdeps=y"

## USE g-flag
USE="X wayland udev alsa -systemd -gnome -sddm -lightdm"

#GPU
## AMD/ATI GPU
VIDEO_CARDS="amdgpu radeonsi"
## intel GPU
#VIDEO_CARDS="intel"
## nvidia GPU
#VIDEO_CARDS="nvidia"

## mouse keyboard ...
INPUT_DEVICES="libinput synaptics evdev"

ACCEPT_KEYWORDS="~amd64"

#LANGUAGE
L10N="en-US zh-CN en zh"
LINGUAS="en_US zh_CN en zh"

#GRUB
GRUB_PLATFORMS="efi-64"

#ccache
FEATURES="ccache"
CCACHE_DIR="/var/cache/ccache"
CCACHE_SIZE="16G"

# 32 64
ABI_X86="32 64"

安装基本系统到硬盘

日期检查(很重要)

偏差大,会导致更新错误,软件包同步错误,还有一些奇怪的问题

date — 显示当前系统时间
date mmddHHMMYYYY — 手动设置当前系统的时间 (对应格式说明: 月天时分年)
此处设置,注意角色权限(需要root权限),是否需要 sudo

下载stage包

镜像源目录

## 下载系统文件
cd /mnt/gentoo
links https://www.gentoo.org/downloads/mirrors/#CN  #选一个国内源下载哈
#或者下面是直接清华的源
links https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64
## 解压文件
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner	#等待解压结束
简单设置 make.conf

make.conf文件位置 `cd /mnt/gentoo/ && vi ./etc/portage/make.conf
修改/添加

COMMON_FLAGS="-O3 -march=native -pipe"
MAKEOPTS="-j6"   # 编译最大并行数量
EMERGE_DEAULT_OPTS="--keep-going --with-bdeps=y"
安装
设置镜像mirror
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

网络不好的话,在这里找吧,然后自己追加到make.conf里吧

GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"
设置repos软件库
## 可参考的地址
# 官网
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
# 清华源
sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage

mkdir -p /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
复制DNS信息

cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

挂载必要的文件系统
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run

使用systemd用户仍需要挂载的

mount --make-rslave /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/run

进入 新系统

chroot /mnt/gentoo /bin/bash

source /etc/profile && export PS1="(Xin) ${PS1}"

挂载剩余需要的分区吧

mount /dev/nvme1n1p1 /boot
mount /dev/nvme1n1p3 /home
mount /dev/sdb2	/var
mount /dev/sdb3	/opt
同步新的镜像库
emerge-webrsync
emerge --sync

Error:

Fetching most recent snapshot ...
Trying to retrieve 20230315 snapshot from https://mirrors.tuna.tsinghua.edu.cn/gentoo ...
Fetching file gentoo-20230315.tar.xz.md5sum ...
Fetching file portage-20230315.tar.xz.md5sum ...
Fetching file gentoo-20230315.tar.bz2.md5sum ...
Fetching file portage-20230315.tar.bz2.md5sum ...
Fetching file gentoo-20230315.tar.gz.md5sum ...
Fetching file portage-20230315.tar.gz.md5sum ...
20230315 snapshot was not found
 * Latest snapshot date: 20230314
 * 
 * Approximate snapshot timestamp: 1678841100
 *        Current local timestamp: 1678905601
 * 
 * The current local timestamp is newer than the timestamp of the latest
 * snapshot. In order to force sync, use the --revert option or remove
 * the timestamp file located at '/usr/portage/metadata/timestamp.x'.

Slove:
rm /usr/portage/metadata/timestamp.x

选择合适的profile配置
  • init系统 openrc
  • 是否 桌面 desktop
  • 是否 包含 SE Linux(不清楚这个,自己wiki.gentoo.org看吧)
  • 是否 纯64环境 no-multilib
  • 是否 32位环境 x32
eselect profile list

eselect profile set 1
安装cpuid2cpuflags
emerge --ask app-portage/cpuid2cpuflags
cpuid2cpuflags >> /etc/portage/make.conf

vim /etc/portage/make.conf
## 修改 替换 空格 为 =
CPU_FLAGS_X86 "aes avx ..." 
## 修改后
CPU_FLAGS_X86="aes avx ..."
可选:更新一次

完全新手的话,这里不推荐更新

emerge --ask --verbose --update --deep --newuse @world

进击

内核 kernel

安装微码,添加kernel use

(可选) AMD zenver1,2,3有内核选项,需要添加执行use
echo "sys-kernel/gentoo-sources experimental" >> /etc/portage/package.use/sys-kernel

Intel 需要安装微码
emerge --ask sys-kernel/linux-firmware

安装kernel source

emerge --ask sys-kernel/gentoo-sources

选择/增加 linux软链接
eselect kernel list		#显示kernel列表
eselect set 数字			#选择kernel
eselect kernel list		#显示kernel列表,重新确认
使用genkernel生成.config文件
cd /usr/src/linux		#进入kernel source
# 运行genkernel  
genkernel kernel	#如果你需要在自动配置之后,再手动调整,请使用次命令
genkernel all	#完全自动 直到 自动的生成initramfs文件结束
(可选)手动调整
- 安装pciutils:  `emerge --ask sys-apps/pciutils`
- `pwd` 确定自己在source文件内 `/usr/src/linux`
- `make menuconfig` 调整,save > exit
- `make && make modules_install`
- `make install`
(可选)initramfs
emerge --ask sys-kernel/dracut
dracut --kver=使用对应的内核文件名称

##检测是否成功生成
ls /boot/initramfs*

准备就绪

安装gentoolkit

gentoolkit — 提供一组安装软件需要使用的命令

equery 属于比较常用的 — equery uses 包名 查看当前包的use flags有哪些以及选装状态
emerge --ask app-portage/gentoolkit

安装genfstab — 自动生成fstab工具
`emerge --ask --verbose sys-fs/genfstab`
先把需要的都挂好再执行哈~
`genfstab / >> /etc/fstab`
`cat /etc/fstab` 检查一下
设置hostname
`echo xin > /etc/hostname`
(可选)使用DHCP — 安装dhcpcd
`emerge --ask net-misc/dhcpcd`
启用 `rc-update add dhcpcd default`
运行 `rc-service dhcpcd start`
设置hosts文件
#查看是否已有内容,不为空就 vim / nano手动添加
cat /etc/hosts
#为空的话,指令可以放执行;否则,会将原内容完全覆盖且无法恢复
echo '#/etc/hosts: Local Host Database
127.0.0.1	localhost
::1	localhost' > /etc/hosts
键盘布局设置
配置文件patch `/etc/conf.d/keymaps`
建议: 不需要/修改的语句,推荐复制并注释,以便保证原文件的完整度
```bash
#keymaps='us'
keymaps='dvorak'
```
无线网络工具
统一的管理工具 — NetworkManger

NetworkManager 会统一管理,以接管的网络设备,会覆盖network的工作和dhcpcd的工作,所以需要停止network的运行,取消dhcpcd的运行

  • 安装
    equery uses net-misc/networkmanager
    emerge --ask net-misc/networkmanager
  • 将NetworkManager添加到全局use中
    USE="..... networkmanager -network -dhcpcd"
  • 添加启动项
    rc-update del dhcpcd default
    rc-service NetworkManager start 有严格的大小写区分,所以一定要写对这个服务的名称鸭
    rc-update add NetworkManager default
临时连接工具 — wpa_supplicant
`equery uses net-wireless/wpa_supplicant`
`emerge --ask net-wireless/wpa_supplicant`
安装&配置引导程序 — grub2
  • 先添加 GRUB_PLATFORMS="efi-64"/etc/portage/make.conf
    'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
  • 安装grub工具
    emerge --ask --verbose sys-boot/grub
  • 安装grub到指定位置
    grub-install --target=x86_64-efi --efi-directory=/boot
  • 生成/更新 grub.cfg文件
    grub-mkconfig -o /boot/grub/grub.cfg

END

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值