一、准备镜像
本文采用最小化安装方式,同时会阐述OpenRC和SystemD两种init环境安装区别。所以,镜像采用的是最小化minimal镜像 Stage3(OpenRC/SystemD),整个过程需要有公网访问能力,因此Stage3镜像不用下载到本地,直接在Live系统中wget即可。镜像可在国内清华Gentoo镜像站下载。
1.OpenRC需要准备的镜像
访问OpenRC下载地址,下载minimal镜像:
以及同目录下的OpenRC Stage3镜像:
可选步骤,这里只要清楚需要哪几个镜像即可,Stage3不用下载到本地。
2.SystemD需要准备的镜像
访问SystemD下载地址,SystemD作为init系统时,Stage3镜像则为:
minimal镜像还是没有变:
3.OpenRC和SystemD的优势对比
1)OpenRC优势
- 具有更低的内存占用,对于低端服务器和资源受限系统来说,OpenRC是一个不错的选择;
- 易于管理和维护,因为它是一个脚本系统,可以轻松通过修改脚本来配置系统;
- 配置文件容易理解,OpenRC使用普通的Shell脚本,它的配置文件相对更容易理解;
2)SystemD优势
- 更快的启动速度,可以更快的启动和停止服务;
- 更多的功能,支持多用户启动,支持多种服务状态的检测和管理,支持热插拔硬件,支持远程管理等;
- 更高的可靠性,SystemD可以更好地处理系统故障,并可以更好地分析和诊断系统问题;
4.选用OpenRC还是SystemD
OpenRC是Gentoo的原生init系统,核心部份处理依赖管理和init脚本分析,通过扫描运行级别,建造依赖图,接着启动需要的服务脚本来工作,启动方式为rc-service <service> <action>
或者/etc/init.d/<service> <action>
:
SystemD,由Fedora 15引入,相对OpenRC较新的init系统,也是当今最流行的init系统,集成了各类工具以便更好的管理系统,目前在各大Linux发行版基本都能见到,绝大部分默认都是以SystemD作为init系统,启动速度比OpenRC快很多,启动方式为systemctl [Option] [Unit]
:
OpenRC是Gentoo的默认Init系统,Gentoo官网整个安装步骤也是围绕此展开讨论,SystemD是Gentoo添加上去的支持,因此安装SystemD需要一些额外的步骤,但个人建议是选用SystemD集大成者,除非你清晰知道OpenRC更适合你的需求场景。
二、创建ESXi虚拟机
将minimal镜像上传到ESXi后,接下来可开始创建虚拟机,已有相关经验的可跳过这一步。
注:这里是用vCenter作为操作平台,界面展示上和ESXi有所区别,但实际就是操纵ESXi。
1.选择创建类型
2.选择名称和文件夹
这里理解为将Gentoo安装到哪一台ESXi上面,如果你直接在ESXi操作则没有此步骤。
3.选择计算资源
选择集群机器,101则为ESXi地址:
4.选择存储
这里将Gentoo安装到16TB的硬盘里:
5.选择兼容性
选默认最高版本即可,这里用的是ESXi 7.0:
6.选择客户机操作系统
操作系统版本:Linux
客户机操作系统版本:其他5.x或更高版本的Linux(64位)
7.自定义硬件
根据主机性能酌情分配,并挂载好minimal镜像。Gentoo安装软件默认都会把源码拉下来编译,性能可以尽量给高点,提升安装效率,编译内核速度也会更快。
虚拟机选项-->引导选项,这里选择BIOS:
三、进入虚拟机并配置网络
1.进入虚拟机
打开虚拟机后,默认第一个LiveCD选项进入系统:
2.配置网络
如果你在【自定义硬件】步骤选用的网络适配器能上公网,那么此步骤可忽略。
使用ifconfig
或ip addr
查看网卡名:
可以看到Live系统默认已经从DHCP地址池中获取到了IP,一般这一步都没有太大问题。
测试公网连通性及DNS解析也没有问题:
如果没网,可以考虑使用net-setup
来配置,比如上面网卡是enp11s0,那么命令则为:net-setup enp11s0
,输出为下面的dialog界面,按照界面提示选择网络环境即可:
配置网络部分不做赘述,可参考官方文档。
3.开启sshd
设置一个密码,并开启sshd来远程登录,这样直接方便复制操纵一些文本:
通过终端ssh进入到live系统后的效果:
四、配置分区
1.分区方案
以100G磁盘为例,分区方案可以如下作为参考:
分区 | 大小 | 描述 |
---|---|---|
/dev/sda1 | 256M | /boot分区。 |
/dev/sda2 | 2G | 交换(swap)分区,一般为内存的两倍,内存足够大可以考虑适量给。 |
/dev/sda3 | 剩余部分 | 根分区。 |
2.使用fdisk分区
选择parted也没啥问题,大于2T的硬盘用不了fdisk。
使用如下命令开始分区硬盘:
代码语言:shell复制fdisk /dev/sda
如果你用的是SSD,那么硬盘名称形如/dev/nvme0n1
。
1)创建/boot分区
代码语言:shell复制Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, /-sectors or /-size{K,M,G,T,P} (2048-209715199, default 209715199): 256M
Created a new partition 1 of type 'Linux' and of size 256 MiB.
2)创建swap分区
代码语言:shell复制Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2):
First sector (526336-209715199, default 526336):
Last sector, /-sectors or /-size{K,M,G,T,P} (526336-209715199, default 209715199): 2G
Created a new partition 2 of type 'Linux' and of size 2 GiB.
Command (m for help): t
Partition number (1,2, default 2):
Hex code or alias (type L to list all): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
3)创建根分区
代码语言:shell复制Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3):
First sector (4720640-209715199, default 4720640):
Last sector, /-sectors or /-size{K,M,G,T,P} (4720640-209715199, default 209715199):
Created a new partition 3 of type 'Linux' and of size 97.7 GiB.
Command (m for help): p
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
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: 0xaf2138c5
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 526335 524288 256M 83 Linux
/dev/sda2 526336 4720639 4194304 2G 82 Linux swap / Solaris
/dev/sda3 4720640 209715199 204994560 97.7G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
3.创建文件系统
比如,在示例分区结构中,有使用FAT32的引导分区(/dev/sda1)和使用Ext4的根分区(/dev/sda3),则使用下面的命令:
代码语言:shell复制mkfs.vfat -F 32 /dev/sda1
mkfs.ext4 /dev/sda3
激活并初始化swap分区:
代码语言:shell复制mkswap /dev/sda2
swapon /dev/sda2
4.挂载root分区
使用mount命令将根分区挂载到目录下面:
代码语言:shell复制mount /dev/sda3 /mnt/gentoo
五、安装Stage包
1.设置日期和时间
建议和UTC
时区保持一致,注意不是UTC 8
,Gentoo网络基础服务使用了安全证书,如果系统时间差的离谱,可能无法下载安装文件,后面步骤会设置为正确的时区。
可以使用内置的ntpd命令和ntp服务器同步:
代码语言:shell复制ntpd -q -g
或者你也可以手动设置,比如设置时间为2023年1月16日18:00,则为:
代码语言:shell复制date 011618002023
2.下载Stage归档文件
1)OpenRC
进入Gentoo的根挂载点:
代码语言:shell复制cd /mnt/gentoo
下载OpenRC Stage3包文件:
代码语言:shell复制wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-openrc-20230108T161708Z.tar.xz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-openrc-20230108T161708Z.tar.xz.CONTENTS.gz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-openrc-20230108T161708Z.tar.xz.DIGESTS
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-openrc-20230108T161708Z.tar.xz.asc
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-openrc-20230108T161708Z.tar.xz.sha256
验证文件下载是否完整,避免文件下载不完全导致后面步骤白做,比如使用SHA512校验:
代码语言:shell复制openssl dgst -r -sha512 stage3-amd64-openrc-20230108T161708Z.tar.xz
cat stage3-amd64-openrc-20230108T161708Z.tar.xz.DIGESTS
确保完全一致即可。
2)SystemD
进入Gentoo的根挂载点:
代码语言:shell复制cd /mnt/gentoo
下载SystemD Stage3包文件:
代码语言:shell复制wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-systemd-20230108T161708Z.tar.xz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-systemd-20230108T161708Z.tar.xz.CONTENTS.gz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-systemd-20230108T161708Z.tar.xz.DIGESTS
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-systemd-20230108T161708Z.tar.xz.asc
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20230108T161708Z/stage3-amd64-systemd-20230108T161708Z.tar.xz.sha256
使用SHA256校验文件是否完整:
代码语言:shell复制openssl dgst -r -sha256 stage3-amd64-systemd-20230108T161708Z.tar.xz
cat stage3-amd64-systemd-20230108T161708Z.tar.xz.sha256
可以看到完全一致。
3.解压Stage3
代码语言:shell复制tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
--numeric-owner
被用于确保从tarball中提取的文件的用户和组ID与Gentoo发布工程团队预期的保持一致。
4.配置编译选项
编辑make.conf文件,优化编译参数:
代码语言:shell复制nano -w /mnt/gentoo/etc/portage/make.conf
改成如下内容:
代码语言:shell复制# 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="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="-j16"
# 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
其中MAKEOPTS
表示编译时使用的线程数量,官方的建议是在CPU的线程数和整个系统的内存 / 2GiB 中选择小的那个比较好,我这里设置为16。
六、安装Gentoo基础系统
1.选择镜像站点
Gentoo默认配置的是官方源,跨境传输速度较慢,这里建议配置为国内源,比如选择清华源或阿里、网易等多个软件源。
代码语言:shell复制mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
空格勾选即可:
2.设置Gentoo ebuild 软件仓库
Portage为Gentoo的包管理器,这里需要创建Portage配置目录,并将Gentoo镜像的配置文件复制到创建的repos.conf目录:
代码语言:shell复制mkdir --parents /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
验证是否成功,可以看下文件内容:
代码语言:shell复制cat /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
3.复制DNS信息
代码语言:shell复制cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
--dereference
,可以保障如果/etc/resolv.conf是一个符号链接的话,复制的是resolv.conf的目标文件而不是这个链接文件。
4.挂载文件系统
想要确保新环境(/mnt/gentoo)能正常工作,需要把Live系统的一些文件系统挂载到/mnt/gentoo,才能确保能正常使用。
代码语言:shell复制mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run
5.chroot
使用chroot
命令进入到Gentoo环境:
chroot /mnt/gentoo /bin/bash #进入到gentoo基础系统,并且使用bash解释器
source /etc/profile #是配置文件重新生效
export PS1="(chroot) ${PS1}" #修改PS1,帮助我们记忆这是在chroot环境
6.挂载boot分区
安装内核及引导程序时需用到boot分区,因此需要提前挂载:
代码语言:shell复制mount /dev/sda1 /boot
7.配置Portage
1)安装Gentoo ebuild数据库快照
代码语言:shell复制emerge-webrsync
2)更新Portage ebuild数据库(可选)
上一步已经建立数据库快照了并且更新ebuild为了最新版本,如果距离上一步有停顿一段时间(几个小时或者一天),可以使用下面命令保持为最新:
代码语言:shell复制emerge --sync
3)eselect news
当更新Portage ebuild数据库后,Portage可能会输出类似下面的信息:
代码语言:shell复制 * IMPORTANT: 9 news items need reading for repository 'gentoo'.
* Use eselect news read to view new items.
一般都是推送的重要消息,可以使用eselect命令来阅读,不然每次emerge安装软件时都会在最后提示此信息。
代码语言:shell复制eselect news list
eselect news read
4)选择正确的profile
使用如下命令查看目前选择的profile:
代码语言:shell复制eselect profile list
最后面*号表示当前选的配置文件。选的时候不能跨版本选择,比如17.1就选17.1的profile,不要17.0、17.1都包含。
因为我们使用最小化安装,这里默认就行,系统已经帮我们选好,如果是OpenRC Stage3包则默认会选OpenRC的profile(序列号1)。
比如选择OpenRC:
代码语言:shell复制eselect profile set 1
5)更新@world集合
@world集合是Gentoo所有软件、配置的集合,进行构建系统之前,更新一下@world集合是必要的:
代码语言:shell复制emerge --ask --verbose --update --deep --newuse @world
6)配置USE变量
USE变量可以在编译时选择编译或者不编译某些可选的支持、扩展包,简单理解为启用或禁用主程序某些其他功能,这样可以做到按需安装,只安装我们想要的包,更加精简化。
比如有以下需求:需要安装nmap,但是nmap的USE变量默认没有nping、ncat子命令,我们需要把它们一并安装上。
每个包的USE定义都可以在/etc/portage/package.use目录下设置,它可能也是一个文件,不管是哪一种,语法都是一样。
比如基于如上需求,需要安装nping、ncat子命令,那么USE变量可以是:
代码语言:shell复制net-analyzer/nmap ipv6 nse ssl -libssh2 ncat nping -symlink (-system-lua) -verify-sig
要看nmap支持哪些USE标记,通过emerge -pv nmap
即可查看:
emerge -pv nmap
因为配置了nmap的USE设置,所以默认会读取设置后的USE变量:
-
开头表示不安装,比如libssh2
不安装libssh2
库文件。
默认的USE设置在make.defaults文件中,可以使用如下命令查看当前USE标记:
代码语言:shell复制emerge --info |grep ^USE
如果对USE不了解,这里建议保持默认。
同时可以在/var/db/repos/gentoo/profiles/use.desc
中找到可用的USE标记的完整描述:
less /var/db/repos/gentoo/profiles/use.desc
以下8、9点根据当前init系统做对应操作,后续操作步骤会多次用到文本编辑器,如果不习惯内置的nano可以通过emerge --ask vim
安装vim命令。
8.使用SystemD作为init系统
1)软链/etc/mtab
代码语言:shell复制ln -sf /proc/self/mounts /etc/mtab
上游仅支持/etc/mtab,如果不建立此软连接,则会导致mount、df命令出现bug(#434090和##477240)。
2)生成Machine ID
创建一个随机机器ID:
代码语言:shell复制systemd-machine-id-setup
3)设置主机名
代码语言:shell复制hostnamectl set-hostname <HOSTNAME>
4)设置时区
时区列表在/usr/share/zoneinfo目录下,查到对应可用的时区后,软链到/etc/localtime。
比如我们要设置到上海时区:
代码语言:shell复制ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5)设置语言环境
代码语言:shell复制vim /etc/locale.conf
习惯使用英文环境,修改成LANG="en_US.utf8"
即可。
9.使用OpenRC作为init系统
1)设置时区
依然以上海为例:
代码语言:shell复制echo 'Asia/Shanghai' > /etc/timezone
重新配置timezone-data:
代码语言:shell复制emerge --config sys-libs/timezone-data
将会基于/etc/timezone去更新/etc/localtime文件,/etc/localtime会让系统的C类库知道系统在什么时区。
10.配置区域设置
1)生成区域设置
完整的locale支持列表可以在/usr/share/i18n/SUPPORTED文件找到。系统支持的locale必须在/etc/local.gen定义。
修改/etc/locale.gen文件,将前面的注释去掉,启用US字符格式:
代码语言:shell复制en_US.UTF-8 UTF-8
运行locale-gen
,将会生成/etc/locale.gen文件中指定的地区:
locale-gen
可以使用locale -a
验证当前选择的locale:
2)选择区域设置
通过如下命令显示可用的配置:
代码语言:shell复制eselect locale list
可以看到,系统默认已经帮我们选择了en_US.utf8
,如果不符合预期,可通过eselect locale set <NUMBER>
选择正确的区域设置,比如选择POSIX,可以是:
eselect locale set 3
完成上述选择后,重新加载环境:
代码语言:shell复制env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
七、安装内核
以下内核安装方式二选一进行,ESXi上运行则更建议使用第一种。
1.安装二进制内核
ESXi安装方式最推荐使用二进制内核,如果你不厌其烦要从源码编译内核,那就需要把vmware虚拟化、相关驱动等诸多内核配置查找出来并勾选,费时费力,最后还不一定能完美兼容。
使用如下命令安装二进制内核:
代码语言:shell复制emerge --ask sys-kernel/gentoo-kernel-bin
可以看到当前源里面最新stable版本为5.15.85-r1,且默认USE了initramfs
。
安装成功后,可以通过eselect
命令看到当前版本:
eselect kernel list
2.源码编译内核
1)安装内核源码
代码语言:shell复制emerge --ask sys-kernel/gentoo-sources
列出已安装的内核:
代码语言:shell复制eselect kernel list
可以看到一共有两个内核,第一个是从源码安装的版本,第二个是刚安装的二进制版本。
如果没有进行二进制内核安装,这里只会看到一个内核,不需要做额外操作。因为这里有两个内核,且第一是源码安装的内核版本,我们选择第一个:
代码语言:shell复制eselect kernel set 1
可以看到,设置为第一个时,其实就是创建一个/usr/src/linux
的链接指向内核目录。
2)手动配置内核
首先可以安装sys-apps/pciutils
包,通过lspci命令来收集硬件信息:
emerge --ask sys-apps/pciutils
lspci
因为下一步配置需要把每个必要的内核模块勾选。
接下来进入内核源码,开始配置内核:
代码语言:shell复制cd /usr/src/linux
make menuconfig
一如既往的dialog视图:
接下来就是最繁琐的步骤,勾选必要的内核模块(空格勾选,*代表勾选上):
① 启用Gentoo特有选项
代码语言:shell复制Gentoo Linux --->
Generic Driver Options --->
[*] Gentoo Linux support
[*] Linux dynamic and persistent device naming (userspace devfs) support
[*] Select options required by Portage features
Support for init systems, system and service managers --->
[*] OpenRC, runit and other script based systems and managers
[*] systemd
② 启用devtmpfs支持
代码语言:shell复制Device Drivers --->
Generic Driver Options --->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
③ 启用SCSI硬盘支持
代码语言:shell复制Device Drivers --->
SCSI device support --->
<*> SCSI disk support
验证SCSI磁盘支持是否已激活(CONFIG_BLK_DEV_SD
),可以通过/
,来搜索CONFIG_BLK_DEV_SD
,这样不用一个个子选项去找,可以看到默认已经勾选:
④ 选择所需要的文件系统
代码语言:shell复制File systems --->
<*> Second extended fs support
<*> The Extended 3 (ext3) filesystem
<*> The Extended 4 (ext4) filesystem
<*> Reiserfs support
<*> JFS filesystem support
<*> XFS filesystem support
<*> Btrfs filesystem support
DOS/FAT/NT Filesystems --->
<*> MSDOS fs support
<*> VFAT (Windows-95) fs support
Pseudo Filesystems --->
[*] /proc file system support
[*] Tmpfs virtual memory file system support (former shm fs)
⑤ 激活SMP支持
CPU多核需要用到,配置名为:CONFIG_SMP
,这里默认也是勾选的,可以检查一遍:
Processor type and features --->
[*] Symmetric multi-processing support
⑥ 启用对GPT的支持
如果在分区时使用GPT分区,则需要启用它(CONFIG_PARTITION_ADVANCED
,CONFIG_EFI_PARTITION
):
-*- Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
[*] EFI GUID Partition support
⑦ 启用对UEFI的支持
如果你用的是UEFI引导,则需要启用EFI stub支持(CONFIG_EFI
,CONFIG_EFI_STUB
,CONFIG_EFI_MIXED
,CONFIG_EFI_VARS
,CONFIG_EFI_FB
)
Processor type and features --->
[*] EFI runtime service support
[*] EFI stub support
[*] EFI mixed-mode support
Device Drivers
Firmware Drivers --->
EFI (Extensible Firmware Interface) Support --->
<*> EFI Variable Support via sysfs
Graphics support --->
Frame buffer Devices --->
<*> Support for frame buffer devices --->
[*] EFI-based Framebuffer Support
⑧ 启用对ESXi的支持
针对ESXi,官方给出了需要勾选的内核模块列表:
代码语言:shell复制[*] Networking support --->
Networking options --->
<*> Virtual Socket protocol
<*> VMware VMCI transport for Virtual Sockets
Device Drivers --->
[*] Fusion MPT device support --->
<*> Fusion MPT ScsiHost drivers for SPI
Misc devices --->
<*> VMware Balloon Driver
<*> VMware VMCI Driver
SCSI device support --->
[*] SCSI low-level drivers --->
<*> VMware PVSCSI driver support
[*] Network device support --->
[*] Ethernet driver support --->
[*] AMD devices
<*> AMD 8111 (new PCI LANCE) support
<*> AMD PCnet32 PCI support
[*] Intel devices
<*> Intel(R) PRO/1000 Gigabit Ethernet support
<*> Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support
<*> VMware VMXNET3 ethernet driver
Input device support --->
[*] Keyboards --->
<*> AT keyboard
File systems --->
<*> FUSE (Filesystem in Userspace) support
配置文件名:
- CONFIG_NET_VENDOR_AMD
- CONFIG_AMD8111_ETH
- CONFIG_PCNET32
- CONFIG_NET_VENDOR_INTEL
- CONFIG_E1000
- CONFIG_E1000E
- CONFIG_KEYBOARD_ATKBD
- CONFIG_VMWARE_BALLOON
- CONFIG_VMWARE_PVSCSI
- CONFIG_VMXNET3
- CONFIG_VMWARE_VMCI
- CONFIG_VMWARE_VMCI_VSOCKETS
- CONFIG_FUSE_FS
- CONFIG_FUSION
同时可以考虑安装vm-tools工具:
代码语言:shell复制emerge --ask app-emulation/open-vm-tools
3)编译和安装内核
代码语言:shell复制make && make modules_install
无需用-j指定线程数,默认从我们前面的/etc/portage/make.conf
读取MAKEOPTS
指定的线程数。
编译完成后,使用如下命令完成安装,将会复制内核镜像到/boot目录:
代码语言:shell复制make install
4)安装initramfs
安装前线安装dracut,用它来生成initramfs:
代码语言:shell复制emerge --ask sys-kernel/dracut
dracut --kver=5.15.80-gentoo
成功后,可以在/boot目录下看到initramfs开头的文件:
八、配置系统
1.创建/etc/fstab
可以通过blkid
命令查看磁盘UUID:
blkid
拿到UUID后,写入到fstab里面:
代码语言:shell复制vim /etc/fstab
vim默认没装,可以使用
emerge --ask app-editors/vim
安装,要么就用nano命令。
比如如上UUID,写入为:
代码语言:shell复制UUID=C8D9-EEED /boot vfat defaults,noatime 0 2
UUID=e483307b-a5ce-44d2-94d6-d88b0584b5e0 none swap sw 0 0
UUID=7a05ddf2-b16c-4b4f-a70b-50288aededa8 / ext4 noatime 0 1
2.配置主机名、域名
1)OpenRC
代码语言:shell复制nano -w /etc/conf.d/hostname
2)SystemD
比如将主机名设置为gentoo:
代码语言:shell复制hostnamectl hostname gentoo
3.配置网络
安装dhcpcd:
代码语言:shell复制emerge --ask net-misc/dhcpcd
如果是OpenRC,默认启用此服务,让它开机自启动:
代码语言:shell复制rc-update add dhcpcd default
rc-service dhcpcd start
SystemD则为:
代码语言:shell复制systemctl enable dhcpcd
4.设置密码
不要忘了给系统设置一个密码,不然无法登录进去:
代码语言:shell复制passwd
5.配置引导和启动
OpenRC无需执行此步骤,保持默认即可。
SystemD则需要通过如下两条命令,从Live环境平滑过渡到安装后的首次启动:
代码语言:shell复制systemd-firstboot --prompt --setup-machine-id
systemctl preset-all
九、安装系统工具
1.安装日志工具
OpenRC可以安装它,如果是SystemD则不需要安装:
代码语言:shell复制emerge --ask app-admin/sysklogd
在OpenRC上添加自启动:
代码语言:shell复制rc-update add sysklogd default
2.安装Cron守护进程(可选)
代码语言:shell复制emerge --ask sys-process/dcron
OpenRC上添加自启动
代码语言:shell复制rc-update add dcron default
SystemD上添加自启动
代码语言:shell复制systemctl enable dcron
初始化
代码语言:shell复制crontab /etc/crontab
3.文件索引(可选)
即locate工具,安装命令如下:
代码语言:shell复制emerge --ask sys-apps/mlocate
4.远程访问(推荐)
sshd服务默认已经内置,我们只需要把它设置为开机自启动服务即可。
OpenRC
代码语言:shell复制rc-update add sshd default
SystemD
代码语言:shell复制systemctl enable sshd
需要注意,默认sshd_config禁用了root登录,可以考虑修改成允许:
代码语言:shell复制sed -ir 's|^#(Permit.*) (pro.*)|1 yes|g' /etc/ssh/sshd_config
之后重启sshd服务即可。
5.时间同步
使用NTP协议进行时钟同步的软件很多,比如ntpd或者chrony,这里建议使用后者:
代码语言:shell复制emerge --ask net-misc/chrony
OpenRC
代码语言:shell复制rc-update add chronyd default
SystemD
代码语言:shell复制systemctl enable chronyd
6.安装文件系统工具
/dev/sda1
和/dev/sda3
我们分别使用了FAT32和EXT4两个文件系统,所以至少需要安装这两个工具:
emerge --ask sys-fs/dosfstools sys-fs/e2fsprogs
十、安装及配置引导
以下选项根据实际引导对应选择
1.BIOS引导
当使用BIOS引导时,无需其他配置直接安装GRUB:
代码语言:shell复制emerge --ask --verbose sys-boot/grub
在/etc/default/grub
添加两行:
GRUB_CMDLINE_LINUX="init=/lib/systemd/systemd"
GRUB_DISABLE_OS_PROBER=false
安装grub到第一块盘:
代码语言:shell复制grub-install /dev/sda
生成grub.cfg配置文件:
代码语言:shell复制grub-mkconfig -o /boot/grub/grub.cfg
2.UEFI引导
同理,先安装grub:
代码语言:shell复制emerge --ask --verbose sys-boot/grub
在将grub安装到引导分区:
代码语言:shell复制grub-install --target=x86_64-efi --efi-directory=/boot
生成grub.cfg
配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
3.重启系统
以上步骤安装完成后,可以退出chroot环境,并使用umount取消挂载,最后重启系统:
代码语言:shell复制(chroot) (none) / # exit
exit
(none) ~ # umount -l /mnt/gentoo/dev{/shm,/pts,}
(none) ~ # umount -R /mnt/gentoo
(none) ~ # reboot
重启后,可以正常进入系统,说明已经成功:
进入系统后,stage3包我们已经不需要了,可以把它们删除掉:
代码语言:shell复制rm /stage3-*.tar.*
同时可以安装neofetch
工具看下系统概览:
emerge --ask app-misc/neofetch
到此,整个系统已经全部安装结束。
附上PDF版本: