Gentoo!
我脑子抽了,我要装Gentoo。
参考链接Surface Gentoo
Install Gentoo
Gentoo可以从一个非Gentoo的USB安装介质安装。那正好,我直接用昨天刚用完的arch盘去。
arch盘!插入!
安装!启动!
一些东西在install arch提到过的我就不在这里细说了
Preparation
进去先设字体
root@archiso ~ # setfont ter-124b
分区
root@archiso ~ # lsblk // 查看分区
// your disk and partition
root@archiso ~ # fdisk /dev/mmcblk0 // 进入disk进行分区
// 这次装双系统,装双系统时windows要设各种选项,参考链接去
设置生成文件系统与交换分区,并设置安装目录
root@archiso ~ # mkfs.ext4 /dev/mmcblk0p2
root@archiso ~ # mkswap /dev/mmcblk0p1
root@archiso ~ # mount --mkdir /dev/mmcblk0p2 /mnt/gentoo
用iwctl
联网,下载wget并用其下载必要文件到gentoo目录下
root@archiso ~ # iwctl // 联网
root@archiso ~ # pacman -Sy
root@archiso ~ # pacman -S wget
root@archiso ~ # wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20250202T154819Z/stage3-amd64-openrc-20250202T154819Z.tar.xz // 用国内镜像下载
root@archiso ~ # tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner // 解压
root@archiso ~ # rm -rf stage3-amd64-openrc-20250202T154819Z.tar.xz
Configuring the make.conf
root@archiso ~ # vim /mnt/gentoo/etc/portage/make.conf
COMMON_FLAGS="-march=native -O2 -pipe" // 特定当前架构优化
MAKEOPTS="-j4 -l5" // 指定编译时线程数与任务数
EMERGE_DEFAULT_OPTS="--jobs=4 --load-average=5 --ask --verbose --quiet --autounmask-continue" // 指定emerge选项
FEATURES="candy parallel-fetch parallel-install sign collision-protect" // 一些特性
ACCEPT_KEYWORDS="~amd64" // 接受不稳定的64arch包
ACCEPT_LICENSE="*" // 接受所有lincense的包
VIDEO_CARDS="intel i965 iris" // 指定显卡
INPUT_DEVICES="libinput" // 指定输入设备
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3" // 指定指令集
GRUB_PLATFORMS="efi-64" // 指定grub安装平台
SYNC="rsync://mirrors.tuna/tsinghua.edu.cn/gentoo-portage" // 国内源,已弃用。请使用sync-url
配置国内源可以在emerge-webrsync
加快访问web速度,但不知道为什么在emerge @world
的时候反而会严重拖慢CPU工作负载,所以在emerge @world
时如果你也工作负载很慢,Load avg: 0.xx
时,建议注释掉源设置并重新尝试emerge @world
。
** SYNC
在emerge @world
中会被提示已经弃用了(虽然我并没有在这一步开启它),具体如果要用的话,google,或看它给的output。
Chroot
root@archiso ~ # mkdir --parents /mnt/gentoo/etc/portage/repos.conf
root@archiso ~ # cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
root@archiso ~ # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
root@archiso ~ # mount --types proc /proc /mnt/gentoo/proc
root@archiso ~ # mount --rbind /sys /mnt/gentoo/sys
root@archiso ~ # mount --make-rslave /mnt/gentoo/sys
root@archiso ~ # mount --rbind /dev /mnt/gentoo/dev
root@archiso ~ # mount --make-rslave /mnt/gentoo/dev
root@archiso ~ # mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
root@archiso ~ # chroot /mnt/gentoo /bin/bash
你可以在第二步的gentoo.conf中去更改sync-url
进行换源,而不是废弃的SYNC
。
至于这样到底行不行,我没耐心试了。
Setup portage
archiso / # source /etc/profile
archiso / # export PS1="(chroot) ${PS1}"
(chroot) archiso / # cd boot
(chroot) archiso /boot # mkdir efi
(chroot) archiso /boot # mount /dev/nvme0n1p1 /boot/efi // 挂在efi分区
(chroot) archiso /boot # cd ..
(chroot) archiso / # emerge-webrsync // like pacman -Sy
这里可以用eselect
去进行一些系统的配置,我用Default
emerge @world
更新所有pkg
(chroot) archiso / # emerge --ask --verbose --update --deep --newuse @world
这一步太慢的话可以直接用bin,需要在make.conf
中的FEATURES
中指定getbinpkg
以及EMERGE_DEFAULT_OPTS
中指定--getbinpkg
。
虽然最后我还是指定了sync-url
国内源并编译源码编译完的…(花了差不多三个小时)
Timezones and Locales
(chroot) archiso / # ls /usr/share/zoneinfo // check available zoneinfo
(chroot) archiso / # echo "Asia/Shanghai" > /etc/timezone
(chroot) archiso / # emerge --config sys-libs/timezone-data
(chroot) archiso / # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(chroot) archiso / # nano -W /etc/locale.gen //edit locale which you want
(chroot) archiso / # locale-gen
(chroot) archiso / # eselect locale list
(chroot) archiso / # eselect locale set 4 // 4 is en_US.utf8 on my go2
(chroot) archiso / # env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
Configuring the kernel
我不知道为啥我的package.accept_keywords
是个目录,所以我提前删除了它
(chroot) archiso / # emerge eselect-repository
(chroot) archiso / # eselect repository enable linux-surface
(chroot) archiso / # echo sys-kernel/surface-sources ~amd64 >> /etc/portage/package.accept_keywords
(chroot) archiso / # emerge --sync
这里–sysnc没进去,怀疑是镜像源的问题,用emerge app-portage/mirrorselect
安了mirrorselect
,再用mirrorselect -i - r
选择最优源
rsync:://rsync.cn.gentoo.org/gentoo-portage
这里选的这个源,不过不知道为啥选了后failed写入失败所以手动写入到sync-uri
中。
不行,sync
不了,访问不了github的surface-sources,可恶的墙。
因为手头没有软路由,所以用个比较蹩脚的方式,电脑热点给go2,关闭win防火墙,网络代理允许局域网链接,gentoo设置网络代理,现在应该就可以直连github了,ok。
(chroot) archiso / # emaint sync -r linux-surface
(chroot) archiso / # emerge --ask sys-kernel/surface-sources
(chroot) archiso / # eselect kernel list
(chroot) archiso / # eselect kernel set 1 // select kernel, for me is 1
(chroot) archiso / # cd /usr/src/linux // if not linux diretory name mv to it
(chroot) archiso /usr/src/linux # make nconfig // configuring and save as .config. Use lz4 kernel compression mode
(chroot) archiso /usr/src/linux # emerge app-arch/lz4
(chroot) archiso /usr/src/linux # make -j4 && make modules_install
(chroot) archiso /usr/src/linux # make install // I failed because couldn't find LILO, but I just jump this step
(chroot) archiso /usr/src/linux # emerge --ask sys-kernel/genkernel
(chroot) archiso /usr/src/linux # genkernel --install --kernel-config=/usr/src/linux/.config initramfs
Configuring the system
(chroot) archiso /usr/src/linux # emerge vim
(chroot) archiso /usr/src/linux # vim /etc/fstab
/dev/nvme0n1p1 /boot/efi vfat defaults,noatime 0 2
/dev/mmcblk0p2 / ext4 noatime 0 1
/dev/mmcblk0p1 none swap sw 0 0
(chroot) archiso /usr/src/linux # vim /etc/conf.d/hostname // set hostname
(chroot) archiso /usr/src/linux # vim /etc/hosts // set same with your hostname
(chroot) archiso /usr/src/linux # passwd
(chroot) archiso /usr/src/linux # vim /etc/portage/make.conf // not use these "USE" when emerge networkmanager
USE="-wext -ppp -modemmanager"
(chroot) archiso /usr/src/linux # emerge networkmanager
(chroot) archiso /usr/src/linux # rc-update add NetworkManager default
(chroot) archiso /usr/src/linux # vim /etc/rc.conf
rc_parallel="YES"
(chroot) archiso /usr/src/linux # vim /etc/conf.d/hwclock
clock="local" # for dual boot
clock_hctosys="YES"
clock_systohc="YES"
(chroot) archiso /usr/src/linux # emerge mlocate e2fsprogs
Configuring grub
(chroot) archiso /usr/src/linux # emerge grub:2 os-prober
(chroot) archiso /usr/src/linux # grub-install --target=x86_64-efi --efi-directory=/boot/efi/
(chroot) archiso /usr/src/linux # vim /etc/default/grub
GRUB_DISABLE_OS_PROBER=false
(chroot) archiso /usr/src/linux # grub-mkconfig -o /boot/grub/grub.cfg
Reboot
(chroot) archiso /usr/src/linux # exit
root@archiso /mnt/gentoo # cd
root@archiso ~ # umount -l /mnt/gentoo/dev{/shm,/pts,}
root@archiso ~ # umount -R /mnt/gentoo
root@archiso ~ # reboot
啊!我cao!boot失败了!
Reinstall Gentoo for single PC (bye dual system)
还是按着gentoo官网指导重来吧,双系统就算了。
切,真回到大学了耶。当初装arch也是连着装了几次都失败了,前前后后装了有一周多才装好。
甚至最后我装arch都熟练到30min装完,虽然现在刚装失败的gentoo用了一整天。。
去tmd gentoo,还是装回我的arch吧!
哇靠,果然不到30分钟就装完了,还得是arch。