Install Gentoo Linux the simple way

简介

什么是Gentoo Linux

Gentoo is a free operating system based on Linux that can be automatically optimized and customized for just about any application or need.
Extreme configurability, performance, and a top-notch user and developer community are all hallmarks of the Gentoo experience.

Gentoo是一个自由的基于Linux的操作系统,因为基于源码发行,借由portage,可以为特定的任何应用做定制和优化。拥有极致的可配置性和性能还有一流的用户和开发者社区。

为什么选择Genoo Linux

因为Gentoo给了你更多选择。

写本文的目的是什么

尝试说明一种构建一个最简单的Gentoo Linux的最简单的方法,希望能够减少大家的心智负担。有些地方也会给出很多选择,但是我推荐的方法,会使用加粗标识出来。

本文基于AMD64的Handbook,仅供参考,一切还是要以英文版的Handbook为准。如果本文长时间没有更新,打开页面时会有提醒。

安装流程

  1. 准备好机器和网络连接,当然还有良好的心态
  2. 进入LiveCD
  3. 配置最基本的Linux操作系统环境
  4. 安装内核和引导
  5. 重启,配置系统
  6. 优化你的Gentoo Linux

安装准备

在安装之前,你需要准备好以下东西:

  • 目标机器
  • 启动介质
  • 网络连接

目标机器

本文以AMD64架构的计算机为例,也可以使用KVM虚拟机

如果想要安装到其他架构,具体请参阅Handbook

启动介质

硬件上,一个U盘就可以了。

软件上,你可以直接将镜像dd进U盘,在Windows上,可以使用rufus制作启动盘,或者使用Ventoy制作可选择镜像引导的启动盘,日常还可以做普通U盘使用。

选择一个livecd镜像,Gentoo提供了三种选择:

  1. AdminCD:带了一些常用工具,比如vim
  2. Install minimal:最小的安装镜像
  3. livegui:带KDE桌面的安装镜像

如果Gentoo的镜像不能启动成功的话,可以选用Arch的镜像,或者基于Arch的SystemRescue镜像。SystemRescue中已经有图形化界面了,此外,还有其他发行版的gui livecd可以使用,比如ubuntumanjaro都会是不错的选择。

网络连接

推荐使用有线网络,或者使用USB进行转换,即无线网卡,或者连接到手机共享网络。

如果只能使用无线网络,那么你可能需要其他发行版的livecd,来获得更好的驱动支持。

进入livecd

进入BIOS,更改启动选项,使用刚才制作的介质引导,进入livecd环境。

现在我们需要在LiveCD中进行一些配置。

联网

有线网络的一般情况下,Gentoo的LiveCD是不需要做什么更改就可以联网的。你可以使用curl检查一下网络。

curl b23.tv
{"code":-404,"message":"啥都木有","ttl":1}

如果在tty下面,中文会显示成方块。或许可以使用另一台机器,通过SSH连接到当前的livecd进行安装。

使用ssh

  • Gentoo livecd

Gentoo的livecd中的sys-auth/pambase包,开启了passwdqc这个USE,这意味着,简单的密码不能通过质量检查。需要使用passwd命令设置一个复杂的密码!

开启sshd服务

/etc/init.d/sshd start
  • other distro

其他的Linux发行版的LiveCD,使用的Init系统是Systemd,而且也没有过高的密码质量检查。

所以直接使用passwd修改livecd的密码。然后使用systemd启用sshd服务。

systemctl start sshd

或者在一个完整的livecd上,我们直接就能够在图形化livecd上一边浏览handbook,一边安装系统。

准备硬盘

给硬盘分区是安装系统的第一步。

依据不同的使用场景,我们一般将一块或者多块磁盘分成不同的目录结构,挂载到Linux系统上面。

对于传统的引导方式,使用BIOS的主板,可以简单的分成一个根,即一块硬盘分一个区,挂载到/

对于uefi引导,需要将bootloader单独划分到一个fat32分区,然后其他分区简单的都划进一个根下面。

这里我只推荐使用cfdisk,图形化,简单直白。

然后需要对分区进行格式化。使用mkfs.ext4 /dev/sda2mkfs.vfat -F 32 /dev/sda1分别格式化根和存放bootloader的fat32分区。

配置chroot环境

现在进入新系统的磁盘中

设置时间和日期

如果时间和日期设置不对,晚于正常的时间,会导致autotools配置失败

使用date命令检查系统时间

date
Sat Apr  9 11:05:22 PM CST 2022

如果想要把系统时间设置为2021年10月3日,13时16分,则需要

date 100313162021

安装 Stage3

下载 stage3 tar包。记得选择较近的镜像,如果在ssh里面方便复制网址就可以使用 wget,否则可以使用 links 。

mkdir -p /mnt/gentoo
mount /dev/<device name> /mnt/gentoo
cd /mnt/gentoo
# wget or links
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

设置Stage3

在chroot进入Stage3之前,需要对Stage3进行一些设置。

  • 复制 Gentoo 主源
mkdir /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
  • 修改 make.conf:vim /mnt/gentoo/etc/portage/make.conf
# C/C++的本地化编译
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
# 如果你的CPU一共有两个线程可用,那么就是-j2
MAKEOPTS="-j2"
  • 选择镜像
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
  • 复制DNS信息

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

chroot 进入新环境

cp -L /etc/resolv.conf /mnt/gentoo/etc/
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
chroot /mnt/gentoo /bin/bash
source /etc/profile

如果你使用的是Arch以及基于Arch的livecd,可能可以使用更好用的arch-chroot

同步ebuild仓库

有多种同步方法,因为一开始没有git,所以都是用rsync,区别不大。

emerge --sync
emaint sync -a

更新或编译系统

如果选择使用systemd-networkd,你可能需要在此时重新编译一遍所有的包。

emerge -aev --keep-going --with-bdeps=y @world

如果选择NetworkdManager,则可以只更新系统。

emerge -avuDN @world

区域设置

设置的区域,使用 en_US.UTF-8 字符集。

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen
env-update
source /etc/profile

设置 fstab

例如下面的设置,但是需要根据实际情况,对照fstab文档进行设置。

echo '/dev/vda1 / ext4 defaults 0 1' >> /etc/fstab

或者先emerge sys-fs/genfstab然后使用genfstab生成fstab

genfstab -U -p / >> /etc/fstab

小结

最基本的环境配置就是这样了,其他个性化的配置,在后面阐述

内核和引导

可选:安装固件

一些驱动不在内核里面,固件为其提供了二进制支持。

虽然通过USE可以将这个包拉进依赖树,但是主动将其添加进@world集合,可以保证不会被自动清理掉。

emerge --ask sys-kernel/linux-firmware

安装二进制内核

dist-kernel项目提供的现成可用的二进制内核,可以帮助我们快速安装一个可用的Gentoo Linux。

安装引导 Grub2

需要将对应模式的GRUB平台变量添加进/etc/portage/make.conf

echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf #对于UEFI模式
echo 'GRUB_PLATFORMS="pc"' >> /etc/portage/make.conf #对于BIOS模式

现在安装Grub2,然后生成引导程序和配置

emerge grub
grub-mkconfig -o /boot/grub/grub.cfg # 生成配置
grub-install --target=i386-pc --recheck --force /dev/vda #对于BIOS模式
grub-install --target=x86_64-efi --efi-directory=/boot #对于UEFI模式

重启,配置系统

到现在,你的Gentoo Linux就可以重启了,但是我们仍需要进行一些配置,这些操作也可以在重启进入系统后进行。

设置主机名

echo "Gentoo" > /etc/hostname

DHCP 服务

编辑/etc/systemd/network/50-dhcp.network

[Match]
Name=en*

[Network]
DHCP=yes

启动对应服务,如果使用其他方案,则需要开启对应的服务。

systemctl enable systemd-networkd
ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf # 这一步需要在重启之后进行
systemctl enable systemd-resolved.service

一些工具

emerge dev-vcs/git vim gentoolkit eselect-repository

一些服务

systemctl enable systemd-timesyncd
systemctl enable sshd

设置密码,重启

passwd
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -lR /mnt/gentoo
reboot

优化指南

这是一篇简短的文章,尽可能使用最少的操作安装一个Gentoo Linux。

但是如何利用Gentoo的灵活性定制和优化系统,将会在其他地方阐述。

知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
上一篇
下一篇