Gentoo安装教程

Gentoo 安装

准备

Copy
# 格式化U盘
sudo mkfs.vfat /dev/sdb -I
# 刻录LiveCD
sudo dd if=install-amd64-minimal-20210829T170531Z.iso of=/dev/sdb
# 插入到要安装的电脑, 重启到livecd
# 查看网卡
ifconfig
# 使用网线或WIFI
## 如果使用网线跳转到sshd的配置
# ----------------连接WIFI-------------------
## 如果使用WIFI
wpa_supplicant -B -i 网卡 -C /var/run/wpa_supplicant
wpa_cli -i 网卡
# 扫描
> scan
# 查看扫描结果
> scan_result
# 一般返回0
> add_network
> set_network 0 ssid "要连接的wifi名称"
> set_network 0 psk "要连接的wifi密码"
# 连接wifi
> enable_network 0
# 退出
> quit
# 查看网络
ifconfig
# ----------------sshd-------------------
# 生成密钥
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 运行
/usr/sbin/sshd
# 修改livecd的root密码
passwd
## 然后再另外一台局域网内的机器通过ssh连接要安装的机器

准备磁盘

Copy
# 分区
# 如果磁盘标签类型不是GPT还需要把磁盘标签更改为GPT
# 先安装parted更改磁盘标签类型
# sudo emerge -av sys-block/parted
# sudo parted
# mklabel gpt
# quit # 就完成了，接下来使用cfdisk进行分区
#sudo su
cfdisk /dev/sda
#sda1 ---/boot--->vfat >=200M #注意分区设置flags为esp
#sda2 ---/--->ext4,btrfs,xfs,jfs.etc >=20G #建议至少20G大小
#sda3 ---swap---> >=2G #除非你16G内存

写入后退出，输入sudo fdisk -l查看是否分区成功。接下来进行格式化：

Copy
# 如果没有mkfs.vaft命令需要安装
emerge -av sys-fs/dosfstools
mkfs.vfat /dev/sda1
mkfs.ext4 /dev/sda2
mkswap /dev/sda3

安装基本文件

中国备用站点:

Name | Protocol | IPv4/v6 | URL
Alibaba Cloud Computing | http | IPv4 only | https://mirrors.aliyun.com/gentoo/
Netease.com, Inc. | http | IPv4 only | https://mirrors.163.com/gentoo/
Tsinghua University | http | IPv4 + IPv6 | https://mirrors.tuna.tsinghua.edu.cn/gentoo

下载镜像stage3-amd64-systemd-20210630T214504Z.tar.xz

注意选择合适的镜像，比如要安装桌面环境就选择带 desktop 的镜像.

Copy
# 创建目录
# mkdir /mnt/gentoo
# 挂载
mount -v /dev/sda2 /mnt/gentoo
cd /mnt/gentoo
# 以下URL替换为上面最新的URL
wget https://mirrors.ustc.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64-systemd/stage3-amd64-systemd-20220417T171236Z.tar.xz
# 复制
# cp stage3-amd64-systemd-*.tar.xz /mnt/gentoo
# 解压
xz -d /mnt/gentoo/stage3-amd64-*.tar.xz
tar -xvf /mnt/gentoo/stage3-amd64-*.tar
# 删除
rm /mnt/gentoo/stage3-amd64-*.tar

配置 make.conf

Copy
# 直接复制现在的配置
sudo cp /etc/portage/make.conf /mnt/gentoo/etc/portage/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.

# GCC
COMMON_FLAGS="-march=native -O3 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
CHOST="x86_64-pc-linux-gnu"
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
MAKEOPTS="-j8"

FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

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

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

# Else
#VIDEO_CARDS="intel i965 nvidia"
VIDEO_CARDS="intel i965"

QEMU_SOFTMMU_TARGETS="alpha aarch64 arm i386 mips mips64 mips64el mipsel ppc ppc64 s390x sh4 sh4eb sparc sparc64 x86_64"
QEMU_USER_TARGETS="alpha aarch64 arm armeb i386 mips mipsel ppc ppc64 ppc64abi32 s390x sh4 sh4eb sparc sparc32plus sparc64"

USE="-bindist bluetooth"
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
EMERGE_DEFAULT_OPTS="--keep-going --with-bdeps=y"
ACCEPT_KEYWORDS="~amd64"
ACCEPT_LICENSE="*"
GRUB_PLATFORMS="efi-64"

配置源

Copy
cd /mnt/gentoo
mkdir /mnt/gentoo/etc/portage/repos.conf
nano /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
# 内容为
[gentoo]
location = /var/db/repos/gentoo
sync-type = rsync
#sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage/
sync-uri = rsync://rsync.mirrors.ustc.edu.cn/gentoo-portage/
auto-sync = yes

进入 chroot

复制 dns

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

挂载

Copy
mount -t 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

如果是 debian 发行版还需要

Copy
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm

进入 chroot

Copy
chroot /mnt/gentoo /bin/bash
source /etc/profile

记得挂载 boot

Copy
mount /dev/sda1 /boot

选择 Profile 并更新系统

Copy
#使用快照更新Portage:
emerge-webrsync
# 列出profile:
eselect profile list

这里我直接选择了：15

Copy
# systemd无桌面系统环境
eselect profile set 15
# 然后就是漫长的更新了
date && emerge -auvDN --with-bdeps=y @world && date
# 如果碰到未满足的xxx或者其它提示:
emerge -auvDN --with-bdeps=y --autounmask-write @world
# 输入更新配置,确保再次运行时没有可更新的文件
etc-update --automode -3
emerge -auvDN --with-bdeps=y @world
# 如果以上还是不能解决问题,则进入/etc/portage目录删掉package.use,package.mask和package.unmask文件或目录再次尝试
# 到了这里,你可以去看电影了...
# 等它跑完了,先别急，运行下这几个命令:
emerge @preserved-rebuild
perl-cleaner --all
emerge -auvDN --with-bdeps=y @world
# 确定没有更新之后再继续，否则查看输出尝试重复运行
# 2021-07-02 15:05 - 2021-07-02 16:46
# 2021-08-18 12:00 - 2021-08-18 13:47
# 2021-12-04 11:27 - 2021-12-04 12:30

配置时区和地区

Copy
echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data

echo "en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8" >> /etc/locale.gen

locale-gen

eselect locale list

eselect locale set X # X换成上面命令显示的序号

配置 fstab

Copy
# 查看UUID
blkid
nano /etc/fstab
# 内容
UUID=4BB8-C88F /boot vfat defaults 0 0
UUID=8240d786-8908-4cdd-a00c-e3d265515a1e / ext4 defaults 0 0
UUID=02e6ac33-adfe-4fee-94ff-09141e1b809a none swap defaults 0 0

安装 NetworkManager

Copy
emerge -av networkmanager

如果它说有未满足的 xxxx 或者其它提示:

Copy
emerge --autounmask-write networkmanager
# 输入yes
etc-update --automode -3
emerge networkmanager

systemd 添加开机服务:

Copy
systemctl enable NetworkManager

在 /etc/conf.d/hostname 内修改主机名，例如:

Copy
echo hostname=\"intent-gentoo\" > /etc/conf.d/hostname

安装一些必要工具并配置

Copy
emerge app-admin/sysklogd sys-process/cronie sudo layman grub
sed -i 's/\# \%wheel ALL=(ALL:ALL) ALL/\%wheel ALL=(ALL:ALL) ALL/g' /etc/sudoers
# 或手动编辑/etc/sudoers文件修改
passwd #是时候设置root密码了
# gentoo默认的密码规则必须大小写混用
# 可以编辑以下文件修改
nano /etc/security/passwdqc.conf
# 内容如下
min=8,7,6,5,4
max=72
passphrase=3
match=4
similar=deny
random=47
enforce=everyone
retry=20

如果你是 systemd:

Copy
sed -i 's/\# GRUB_CMDLINE_LINUX=\"init=\/usr\/lib\/systemd\/systemd\"/GRUB_CMDLINE_LINUX=\"init=\/usr\/lib\/systemd\/systemd\"/g' /etc/default/grub
ln -sf /proc/self/mounts /etc/mtab
systemd-machine-id-setup

配置编译安装内核

编译内核一定要勾选 vfat 模块！！！

Copy
# 当前运行着一个正常使用的Linux的话也可以：
sudo cp -r /usr/src/linux* /mnt/gentoo/usr/src
# 或
scp /usr/src/linux/.config root@192.168.110.7:/mnt/gentoo/usr/src/linux
# 也可以使用xanmod
# 先安装app-eselect/eselect-repository
emerge -av app-eselect/eselect-repository
# 再选择镜像
# eselect repository list | grep src_prepare-overlay
# 选择src_prepare-overlay这个源
# eselect repository enable 320
sudo eselect repository enable src_prepare-overlay

emerge -av dev-vcs/git
# 更新源
emerge --sync
# 再搜索xanmod
emerge -s xanmod-sources
# 安装，可能需要翻墙
emerge -av xanmod-sources

ln -s linux-* linux

# 也可以安装gentoo官方的源
emerge -av sys-kernel/gentoo-sources
# 也可以选择gentoo官方编译好的镜像
emerge -av sys-kernel/gentoo-kernel

make localyesconfig # 或make menuconfig
# 中间提示缺少bc
emerge -av sys-devel/bc
# 如果询问新选项，一路回车吧，23333
make -j8
make modules_install
make install
emerge -av sys-kernel/genkernel
genkernel --install initramfs

安装 GRUB 并创建用户

Copy
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo
grub-mkconfig -o /boot/grub/grub.cfg
# 创建EFI BOOT文件夹
mkdir /boot/EFI/BOOT
cp /boot/EFI/Gentoo/grubx64.efi /boot/EFI/BOOT/BOOTx64.efi

创建一个管理员并设置密码:

Copy
useradd -m -G users,wheel,portage,usb,video intent
passwd intent

显卡驱动

查看：https://wiki.gentoo.org/wiki/Intel

Intel 单显卡:

Copy
emerge -av x11-drivers/xf86-video-intel
# 如果它说有未满足的xxxx或者其它提示:
# 输入yes
etc-update --automode -3
emerge -av x11-drivers/xf86-video-intel

安装桌面

Copy
emerge -av xorg-server

GNOME

Copy
emerge -av gnome-shell gdm gnome-terminal
systemctl enable gdm

如遇需要更新配置则运行 etc-update --automode -3 并再次运行命令

参考

gentoo.org-Handbook

yangmame.org-Gentoo 安装教程