简介
什么是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为准。如果本文长时间没有更新,打开页面时会有提醒。
安装流程
- 准备好机器和网络连接,当然还有良好的心态
- 进入LiveCD
- 配置最基本的Linux操作系统环境
- 安装内核和引导
- 重启,配置系统
- 优化你的Gentoo Linux
安装准备
在安装之前,你需要准备好以下东西:
- 目标机器
- 启动介质
- 网络连接
目标机器
如果想要安装到其他架构,具体请参阅Handbook
启动介质
硬件上,一个U盘就可以了。
软件上,你可以直接将镜像dd进U盘,在Windows上,可以使用rufus制作启动盘,或者使用Ventoy制作可选择镜像引导的启动盘,日常还可以做普通U盘使用。
选择一个livecd镜像,Gentoo提供了三种选择:
- AdminCD:带了一些常用工具,比如vim
- Install minimal:最小的安装镜像
- livegui:带KDE桌面的安装镜像
如果Gentoo的镜像不能启动成功的话,可以选用Arch的镜像,或者基于Arch的SystemRescue镜像。SystemRescue中已经有图形化界面了,此外,还有其他发行版的gui livecd可以使用,比如ubuntu和manjaro都会是不错的选择。
网络连接
推荐使用有线网络,或者使用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/sda2
和mkfs.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的灵活性定制和优化系统,将会在其他地方阐述。