一、分区和格式化

我是两块硬盘,/dev/sda是M.2接口的固态硬盘,/dev/sdb是西数的500G的机械硬盘,因为接触Gentoo时间不久,没敢装在固态硬盘里,在安装Gentoo系统和平时安装编译软件的时候会产生大量的零碎文件,有人说把临时文件挂载到内存,我没有尝试过,目前分区方案如下:

/dev/sda1    EFI分区    FAT32   #和Win10共享EFI目录,挂载到/boot/EFI目录下
/dev/sdb1    /分区          ext4
/dev/sdb2    swap分区
/dev/sdb3    /home分区      ext4

相关命令:

使用parted来分区,mkfs.ext4来给/分区与home分区格式化

mkswap /dev/sdb2 && swapon /dev/sdb2  #创建和启动swap分区
mount /dev/sdb1 /mnt/gentoo   #挂载根分区
mkdir -p /mnt/gentoo/boot/EFI  #创建/boot/EFI目录
mkdir /mnt/gentoo/home      #创建home目录
mount /dev/sda1 /mnt/gentoo/boot/EFI #挂载EFI分区到/boot/EFI目录
mount /dev/sdb3 /mnt/gentoo/home     #挂载/home分区

至此,所有分区已创建并挂载


二、下载Stage3与解压

cd /mnt/gentoo
links http://mirrors.163.com/gentoo   #下载Stage3
tar xvjpf stage3-*.tar.bz2 --xattrs  #解压Stage3


三、设置编译参数

cpuinfo2cpuflags-x86 >> /mnt/gentoo/etc/portage/make.conf #使用前先安装它


执行完,修改make.conf,否则出现两行一样的变量。

CFLAGS="-march=native -O2 -pipe"
MAKEOPTS="-j5" (官方Wiki说CPU 核心+1是个不错的选择,这里是4核心)
LANGUAS="zh_CN"(设置软件编译里的 LANGUAS 变量)
VIDEO_CARDS="intel i965"(Intel的wiki页上说skylake应该这样修改VIDEO_CARDS变量)
INPUT_DEVICES="evdev" (我这是个人PC,如果是笔记本记得加synaptics来支持触控版)
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"(163软件源对我来说最快ustc也不错)


四、同步镜像设置

# mkdir /mnt/gentoo/etc/portage/repos.conf (添加软件仓库镜像目录)
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
# vim /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
sync-uri=rsync://mirrors.163.com/gentoo-portage


五、挂载并 Chroot 系统
挂载系统

# cp -L /etc/resolv.conf /mnt/gentoo/etc
# cd /mnt/gentoo
# mount -t proc proc /mnt/gentoo/proc
# mount --rbind sys /mnt/gentoo/sys
# mount --make-rsalve /mnt/gentoo/sys
# mount --rbind dev /mnt/gentoo/dev
# mount --make-rsalve /mnt/gentoo/dev

Chroot 到新系统

# chroot /mnt/gentoo /bin/bash (切换到新系统)
# source /etc/profile (更新配置文件)
# export PS1="(chroot) $PS1"(设置环境变量提示符)


六、同步 Portage 软件包树

# emerge-webrsync (通常不需要,我的网速足够快,直接emerge --sync就可以)
# emerge --sync (更新portage树)


七、选择配置文件

# eselect profile list (列出所有可用profile选项)
# eselect profile set 12(设置profile为systemd,没有desktop/systemd可选,在全局USE里设置了X)


八、USE Flag 设置
# vim /etc/portage/make.conf (编辑 make.conf 文件)
添加 USE Flag 标记
USE=“X systemd jpeg png -kde -ipv6” (根据情况不断增加与减少)


九、时区和本地化设置
时区设置

# echo "Asia/Shanghai" > /etc/timezone

本地化设置
语言设置

# vim /etc/locale.gen
添加如下:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030

更新语言列表

# locale-gen

设置本地语言

# eselect locale list (查看所有可用语言)
# eselect locale set NUM(设置本地语言为英文,我是英文界面支持中文显示和中文输入法就可以了)

更新环境变量及配置文件

# env-update && source /etc/pfofile


十、安装内核
# emerge -avt gentoo-sources (安装内核)


十一、配置内核

cd /usr/src/linux
make menuconfig(这步要注意参考Systemd,Stub_kernel,并根据自己硬件情况来选)
make && make modules_install
make install(内核会生成到/boot目录下vm*文件,由于我是Stub_kernel,需要cp到/boot/EFI/EFI/Boot/bootx64.efi Stub_kernel wiki上要求)



十二、编辑启动挂载文件 fstab

# vim /etc/fstab



十三、为root设置密码

# passwd root


十四、安装引导

由于我不打算安装引导器(Grub2与Lilo之类)来引导,直接使用efibootmgr,之前的内核编译和安装已为此做好准备,EFI目录在/dev/sda的第一个分区,命令如下:

efibootmgr -c -d /dev/sda -p1 -L "Gentoo Linux" -l "\EFI\Boot\bootx64.efi"

这样就写到UEFI固件了,可以efibootmgr -v来看一下引导项,除了Windows的还有一个Gentoo linux的,直接在BIOS里面指定Windows还是Gentoo作为默认启动项,开机按F12也可以临时选择了,非常方便,对于有强迫症的我来说,这比多一层grub优雅多了,还有一层原因是可以开启主板和Windows的快速启动,一点也不影响。网上这块的教程几乎没有,有不懂的小伙伴可以在下面留言交流!


*安装过程过出现的问题:

内核配置systemd方面Build in kernel应该写入

root=PARTUUID=xxxx init=/usr/lib/systemd/systemd

#网卡是r8169模块

#声卡ALC887,要把Realtek Build in勾选。

#intel核显要安装linux-firmware否则dmesg可以看到i915两个错误,要按如下Wiki选择和添入

Device Drivers  --->
    Generic Driver Options  --->
        -*- Userspace firmware loading support
        [*] Include in-kernel firmware blobs in kernel binary
            (i915/skl_dmc_ver1_26.bin)
            (/lib/firmware) Firmware blobs root directory