Gentoo的安装介质使用常见linux发行版的live cd均可,如果用gentoo官方的安装介质要配置网络比较麻烦。我这里以ubuntu 23.10.1为例。
从USB启动之后选择try ubuntu的那个选项,进入到ubuntu环境,动动鼠标连接上网络。
磁盘分区 1 2 3 4 5 6 # parted /dev/sdx (parted) mkpart ESP fat32 1MiB 300MiB (parted) set 1 boot on (parted) mkpart primary btrfs 300MiB 80GiB (parted) mkpart primary btrfs 80GiB 100% (parted) quit
格式化分区 1 2 3 # mkfs.fat -F32 /dev/sdx1 # mkfs.btrfs /dev/sdx2 # mkfs.btrfs /dev/sdx3
挂载分区 1 2 3 # mkdir /mnt/gentoo && mount /dev/sdx2 /mnt/gentoo # mkdir -p /mnt/gentoo/efi && mount /dev/sdx1 /mnt/gentoo/efi # mkdir /mnt/gentoo/home && mount /dev/sdx3 /mnt/gentoo/home
下载并安装gentoo安装文件 1 2 3 # cd /mnt/gentoo # wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64-desktop-openrc/stage3-amd64-desktop-openrc-20231015T161657Z.tar.xz # tar xpvf stage3-amd64-*.tar.xz --xattrs-include='*.*' --numeric-owner
设置repo
源 1 2 # 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
复制DNS信息 1 # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
挂载额外的文件系统 1 2 3 4 # 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 --rbind /run /mnt/gentoo/run && mount --make-slave /mnt/gentoo/run
非Gentoo介质的/dev/shm/
可能是一个软链接,chroot之后可能不可用,挂载一个tmpfs分区可以解决这个问题。
1 2 3 # test -L /dev/shm && rm /dev/shm && mkdir /dev/shm # mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm # chmod 1777 /dev/shm /run/shm
进入chroot
环境 1 2 # chroot /mnt/gentoo # source /etc/profile && export PS1="(chroot) ${PS1}"
镜像源的本土化配置 从本地镜像源里面下载编绎所需的源码
1 # nano -w /etc/portage/repos.conf/gentoo
在sync-uri = rsync://rsync.gentoo.org/gentoo-portage
前面加个#
,并在它下面添加sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage
更新portage树
选择profile
更改profile之后更新可能需要很多时间,所以现在也可以先不选,等基本系统安装完毕之后再进行这个操作。
1 2 # eselect profile list # eselect profile set x
编辑make.conf
初步编辑/etc/portage/make.conf
文档。 可以参照本文最后。CPU_FLAGS_*
参数设置
1 2 # emerge -1 app-portage/cpuid2cpuflags # echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
更新系统 如果机器内存较大,同时担心编绎会减少ssd的寿命,可以将内存挂载在/tmp,然后将编绎目录选为/tmp。对openrc采用以下操作
1 2 3 4 # nano -w /etc/fstab /etc/fstab tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0
1 2 # mount -t tmpfs tmpfs /tmp && findmnt --target /tmp # emerge -auvDN @world
设置时区 1 # echo "Asia/Shanghai" > /etc/timezone && emerge --config sys-libs/timezone-data
更新locale
1 2 3 4 5 6 # nano -w /etc/locale.gen /etc/locale.gen en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 zh_TW.UTF-8 UTF-8
1 2 # locale-gen && eselect locale set en_US.utf8 # env-update && source /etc/profile && export PS1="(chroot) $PS1"
安装内核和一些工具 1 2 3 # emerge --ask sys-kernel/gentoo-kernel-bin # sys-apps/pciutils sys-kernel/genkernel sys-kernel/linux-firmware # emerge --ask app-admin/syslog-ng app-admin/logrotate sys-process/cronie net-misc/dhcpcd
编辑/etc/fstab
用blkid
命令可查询各分区的uuid,下面是我的fstab文件:
1 2 3 4 5 6 7 8 # nano -w /etc/fstab /etc/fstab UUID="CC7C-4643" /efi vfat defaults,noatime 0 2 UUID="0ba72bcf-5ecf-4f6e-a82b-2a7966a3ead4" / btrfs noatime 0 1 UUID="35838d1a-cae2-4839-9541-4582bfc841e3" /home btrfs noatime 0 1 tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0
设置主机名 1 2 # nano -w /etc/conf.d/hostname hostname='GentooLinux'
编辑hosts
文件 1 2 3 4 5 # nano -w /etc/hosts /etc/hosts 127.0.0.1 localhost gentoo ::1 localhost gentoo
设置root
用户密码
一些自启动项 1 2 # rc-update add syslog-ng default # rc-update add cronie default
安装grub2
1 2 3 4 # echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf # emerge --ask --update --newuse --verbose sys-boot/grub:2 # grub-install --target=x86_64-efi --efi-directory=/boot/efi # grub-mkconfig -o /boot/grub/grub.cfg
退出安装环境,重启 1 2 3 # exit # cd ~ && umount -l /mnt/gentoo/dev{/shm,/pts,} && umount -R /mnt/gentoo # reboot
make.conf
的备份下面是我电脑的make.conf
文件,仅供参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 COMMON_FLAGS="-march=haswell -O2 -pipe" CFLAGS="${COMMON_FLAGS}" CXXFLAGS="${COMMON_FLAGS}" FCFLAGS="${COMMON_FLAGS}" FFLAGS="${COMMON_FLAGS}" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/tmp" MAKEOPTS=-j8 ACCEPT_KEYWORDS=amd64 GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo" USE="consolekit dbus infinality policykit pulseaudio networkmanager touchpad udev udisk vulkan -bluetooth" GRUB_PLATFORMS="efi-64" VIDEO_CARDS="intel" INPUT_DEVICES="libinput" CPU_FLAGS_X86="avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
参考文档:Gentoo Handbook