前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESXi/vCenter安装部署Gentoo Linux - OpenRC/SystemD

ESXi/vCenter安装部署Gentoo Linux - OpenRC/SystemD

原创
作者头像
RokasYang
修改2024-01-05 11:16:55
4.5K2
修改2024-01-05 11:16:55
举报
文章被收录于专栏:RokasYang

一、准备镜像

本文采用最小化安装方式,同时会阐述OpenRCSystemD两种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.配置网络

如果你在【自定义硬件】步骤选用的网络适配器能上公网,那么此步骤可忽略。

使用ifconfigip 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环境:

代码语言:shell
复制
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变量默认没有npingncat子命令,我们需要把它们一并安装上。

每个包的USE定义都可以在/etc/portage/package.use目录下设置,它可能也是一个文件,不管是哪一种,语法都是一样。

比如基于如上需求,需要安装npingncat子命令,那么USE变量可以是:

代码语言:shell
复制
net-analyzer/nmap ipv6 nse ssl -libssh2 ncat nping -symlink (-system-lua) -verify-sig

要看nmap支持哪些USE标记,通过emerge -pv nmap即可查看:

代码语言:shell
复制
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标记的完整描述:

代码语言:shell
复制
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,如果不建立此软连接,则会导致mountdf命令出现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文件中指定的地区:

代码语言:shell
复制
locale-gen

可以使用locale -a验证当前选择的locale

2)选择区域设置

通过如下命令显示可用的配置:

代码语言:shell
复制
eselect locale list

可以看到,系统默认已经帮我们选择了en_US.utf8,如果不符合预期,可通过eselect locale set <NUMBER>选择正确的区域设置,比如选择POSIX,可以是:

代码语言:shell
复制
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命令看到当前版本:

代码语言:shell
复制
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命令来收集硬件信息:

代码语言:shell
复制
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,这里默认也是勾选的,可以检查一遍:

代码语言:shell
复制
Processor type and features  --->
  [*] Symmetric multi-processing support
⑥ 启用对GPT的支持

如果在分区时使用GPT分区,则需要启用它(CONFIG_PARTITION_ADVANCEDCONFIG_EFI_PARTITION):

代码语言:shell
复制
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support
⑦ 启用对UEFI的支持

如果你用的是UEFI引导,则需要启用EFI stub支持(CONFIG_EFICONFIG_EFI_STUBCONFIG_EFI_MIXEDCONFIG_EFI_VARSCONFIG_EFI_FB

代码语言:bash
复制
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:

代码语言:shell
复制
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两个文件系统,所以至少需要安装这两个工具:

代码语言:shell
复制
emerge --ask sys-fs/dosfstools sys-fs/e2fsprogs

十、安装及配置引导

以下选项根据实际引导对应选择

1.BIOS引导

当使用BIOS引导时,无需其他配置直接安装GRUB:

代码语言:shell
复制
emerge --ask --verbose sys-boot/grub

/etc/default/grub添加两行:

代码语言:shell
复制
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配置文件:

代码语言:shell
复制
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工具看下系统概览:

代码语言:shell
复制
emerge --ask app-misc/neofetch

到此,整个系统已经全部安装结束。

附上PDF版本:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、准备镜像
    • 1.OpenRC需要准备的镜像
      • 2.SystemD需要准备的镜像
        • 3.OpenRC和SystemD的优势对比
          • 1)OpenRC优势
          • 2)SystemD优势
        • 4.选用OpenRC还是SystemD
        • 二、创建ESXi虚拟机
          • 1.选择创建类型
            • 2.选择名称和文件夹
              • 3.选择计算资源
                • 4.选择存储
                  • 5.选择兼容性
                    • 6.选择客户机操作系统
                      • 7.自定义硬件
                      • 三、进入虚拟机并配置网络
                        • 1.进入虚拟机
                          • 2.配置网络
                            • 3.开启sshd
                            • 四、配置分区
                              • 1.分区方案
                                • 2.使用fdisk分区
                                  • 1)创建/boot分区
                                  • 2)创建swap分区
                                  • 3)创建根分区
                                • 3.创建文件系统
                                  • 4.挂载root分区
                                  • 五、安装Stage包
                                    • 1.设置日期和时间
                                      • 2.下载Stage归档文件
                                        • 1)OpenRC
                                        • 2)SystemD
                                      • 3.解压Stage3
                                        • 4.配置编译选项
                                        • 六、安装Gentoo基础系统
                                          • 1.选择镜像站点
                                            • 2.设置Gentoo ebuild 软件仓库
                                              • 3.复制DNS信息
                                                • 4.挂载文件系统
                                                  • 5.chroot
                                                    • 6.挂载boot分区
                                                      • 7.配置Portage
                                                        • 1)安装Gentoo ebuild数据库快照
                                                        • 2)更新Portage ebuild数据库(可选)
                                                        • 3)eselect news
                                                        • 4)选择正确的profile
                                                        • 5)更新@world集合
                                                        • 6)配置USE变量
                                                      • 8.使用SystemD作为init系统
                                                        • 1)软链/etc/mtab
                                                        • 2)生成Machine ID
                                                        • 3)设置主机名
                                                        • 4)设置时区
                                                        • 5)设置语言环境
                                                      • 9.使用OpenRC作为init系统
                                                        • 1)设置时区
                                                      • 10.配置区域设置
                                                        • 1)生成区域设置
                                                        • 2)选择区域设置
                                                    • 七、安装内核
                                                      • 1.安装二进制内核
                                                        • 2.源码编译内核
                                                          • 1)安装内核源码
                                                          • 2)手动配置内核
                                                          • 3)编译和安装内核
                                                          • 4)安装initramfs
                                                      • 八、配置系统
                                                        • 1.创建/etc/fstab
                                                          • 2.配置主机名、域名
                                                            • 2)SystemD
                                                          • 3.配置网络
                                                            • 4.设置密码
                                                              • 5.配置引导和启动
                                                              • 九、安装系统工具
                                                                • 1.安装日志工具
                                                                  • 2.安装Cron守护进程(可选)
                                                                    • 3.文件索引(可选)
                                                                      • 4.远程访问(推荐)
                                                                        • 5.时间同步
                                                                          • 6.安装文件系统工具
                                                                          • 十、安装及配置引导
                                                                            • 1.BIOS引导
                                                                              • 2.UEFI引导
                                                                                • 3.重启系统
                                                                                相关产品与服务
                                                                                数据库
                                                                                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                                                                领券
                                                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档