本笔记主要是为了方便重装系统,或在Gentoo Handbook网站无法访问时作为备用。
安装介质使用常见linux发行版的live cd均可。为了方便联无线网(命令行会有些麻烦)及在安装时使用浏览器查看handbook等资料,我会推荐使用带桌面环境的lived cd。本篇笔记以ubuntu 24.04.2为例。
从USB启动之后选择try ubuntu,进入到桌面,动动鼠标连接上网络,在设置里面关闭自动锁屏及休眠。
磁盘分区 假设我要安装在/dev/sda
,efi分区为300MB,剩下的全部为根分区/
,根分区的格式为xfs。
1 2 3 4 5 # parted /dev/sda (parted) mkpart ESP fat32 1MB 300MB (parted) set 1 boot on (parted) mkpart primary xfs 300MB 100% (parted) quit
格式化分区 1 2 # mkfs.fat -F32 /dev/sda1 # mkfs.xfs /dev/sda2
挂载分区 1 2 # mkdir /mnt/gentoo && mount /dev/sda2 /mnt/gentoo # mkdir -p /mnt/gentoo/efi && mount /dev/sda1 /mnt/gentoo/efi
下载并安装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
有的发行版/dev/shm/
是一个软链接,chroot之后不可用,所以还需要挂载一下。
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里面编译会减少ssd的寿命,可以将内存挂载在/tmp,然后将编绎目录选为/tmp。
1 2 3 4 # nano /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 # nano -w /etc/fstab /etc/fstab UUID="CC7C-4643" /efi vfat defaults,noatime 0 2 UUID="0ba72bcf-5ecf-4f6e-a82b-2a7966a3ead4" / xfs 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
用户密码
一些自启动项 下面的命令可能已经过期,列出的服务可能不需要自启动,也可能有遗漏,需要自己去翻阅handbook找到最新的配置。
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 24 LC_MESSAGES=C.utf8 MAKEOPTS=-j16 #NINJAOPTS=-j6 ACCEPT_KEYWORDS="~amd64" PORTAGE_TMPDIR="/tmp" PORTDIR="/var/db/repos/gentoo" DISTDIR="/var/cache/distfiles" PKGDIR="/var/cache/binpkgs" PORTAGE_LOGDIR="" GENTOO_MIRRORS="https://distfiles.gentoo.org" #FETCHCOMMAND="proxychains wget -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" #RESUMECOMMAND="proxychains wget -c -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" USE="bluetooth dbus dist-kernel elogind networkmanager policykit pulseaudio udev udisks vaapi vulkan wayland X -systemd" GRUB_PLATFORMS="efi-64" VIDEO_CARDS="intel" INPUT_DEVICES="libinput"
参考文档:Gentoo Handbook