Gentoo安装

安装Gentoo

本文主要参考的是官方Wiki,还有一些网友的经验,在后面的具体安装步骤里会分享对应网友的一些解决办法和相关文章

官方Wiki:https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/About/zh-cn

1、在官网下载对应的安装包(Minimal Installation CD和最新的stage3,本文使用的是OpenRC的),然后使用软碟通制作启动U盘,把Minimal Installation CD写入U盘,之后把stage3包复制到U盘的根目录(本文不使用在安装过程中从网上下载的方式)

2、重启电脑,进入安装过程,选择Gentoo内核

3、选择键盘布局,这一步一般不用选择,默认是US键盘

4、建立账号,这一步官网上说可选的,因为目前还是在LiveCD中,即使建立了用户,也不会出现在新安装的系统中,所以就不用建立账号了。

5、配置网络(这一步在官网中写的比较简单,而且使用wpa_supplicant的,但是这个客户端实际使用中更换网络比较麻烦,所以咱们不安装wpa_supplicant而是NetworkManager

a、连接网络

这一步里我是使用USB网络共享的,而且整个安装过程中使用的都是USB共享网络,官网里是直 安装wpa_supplicant然后连接Wifi,因为咱们要安装NetworkManager,这里就不采用官网的这种 方式了,因为后面还要多余配置一些东西,如果流量不够用的话,可以使用官网的方式,先安wpa_supplicant,系统安装完成之后在卸载,重新安装NetworkManager,具体可以参考这篇文章,我的这一部分就是结合官方Wiki和这篇文章做的。

b、测试网络 ping www.baidu.com

如果没有ping通的话,改下DNS

nano /etc/resolv.conf

添加 nameserver 114.114.114.114

这里到这就行了,NetworkManager的安装配置在后文中介绍。

6、磁盘分区

磁盘分区这里比较简单,不过要强调一点,对于小白的我来说,之前就卡在了这,不知道双系统的/boot挂载点怎么设置。在看了不少的文章后((lll¬ω¬)),才发现这里只需要将原系统的EFI分区挂到/boot里就行了。而且还需要确定自己系统的分区类型是MBR的还是GPT的,官方Wiki建议使用GPT类型的,如果需要MBR转GPT或者GPT转MBR,则需要提前在安装系统前进行设置(使用DiskGenius进行格式转换),

下面做具体设置(使用parted程序):

a、parted -a optimal /dev/sda

b、mklabel gpt 设置gpt标签,这里要慎重,官方Wiki上说如果在分区程序里改变分区格式,程序会移除磁盘上所有分区,而且数据也会丢失,实际安装中,我的磁盘分区类型是GPT的,就没改。MBR分区用mklabel msdos(parted命令可以看到自己的分区类型)

c、unit mib 设置磁盘容量显示单位,GB用unit Gib

d、分区

磁盘

文件系统

挂载点

大小

/dev/sda1

fat32

/boot

sda1是已经存在的分区

/dev/sda10

ext4

/

125G

/dev/sda11

ext4

/home

200G

/dev/sda12

ext4

swap

8G

mkpart root [start] [end] 创建名字叫root的分区,区间为[start,end],例如xxx xxx+12800

mkpart home [start] [end] 创建名字叫home的分区,区间为[start,end]

mkpart swap [start] -1 创建名字叫home的分区,区间为start到磁盘尾部,-1表示磁盘尾部减去1MB,这里是分区能够到达的最远处

这里不需要设置boot分区了,咱们直接利用已经存在的windows系统的ESP分区,如果是单系统的话,这里需要boot分区,注意boot分区需要格式化为fat32(mkfs.vfat)

e、print或者p 查看分区信息

f、格式化、激活swap

mkfs.ext4 /dev/sda10

swap分区不需要格式化

初始化swap:mkswap /dev/sda12

激活swap:swapon /dev/sda12

g、mount /dev/sda10 /mnt/gentoo 挂在root分区,下面进入root分区安装系统

7、安装stage3包

a、设置系统日期时间:date [MMDDhhmmYY].[ss]

如2021年4月21日16:50:30 :date 042116502021.30

b、把U盘内的stage3包复制到系统内

cp /mnt/cdrom/stage* /mnt/gentoo/

c、解压缩:tar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner(参数解释见Wiki)

d、配置编译选项:

nano /mnt/gentoo/etc/portage/make.conf

设置COMMON_FLAGS="-march=native -O2 -pipe"

添加MAKEOPTS="-j2" 这里的j2表示电脑的核心数+1,比如8核用“-j9”

e、镜像源、仓库、DNS设置、挂载目录

镜像源:

mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

镜像源建议选择163的

仓库:

创建仓库: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:复制LiveCD里的DNS信息:cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

这里建议复制完成后看一下,自己给设置成114.114.114.114

挂载目录:

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

--make-rslave操作是稍后安装systemd支持时所需要的,我安装的是OpenRC所以带--make-rslave的命令就不用敲了

f、进入新环境

chroot /mnt/gentoo /bin/bash

source /etc/profile

export PS1="(chroot) ${PS1}"

g、挂载分区

mount /dev/sda1 /boot 这里直接把sda1(ESP分区)挂到Gentoo的/boot分区就行了,后面再安装grub就能实现双系统的引导了

7、设置用户

passwd 设置root密码

新建用户:

useradd -m -G users,video,audio,cdrom hlfl

passwd hlfl

安装sudo(具体的软件名查询用 emerge --search sudo,emerge--ask xxx/xxx安装)

nano /etc/sudoers

在root行(root ALL=(ALL) ALL)添加hlfl ALL=(ALL) ALL

8、配置portage

a、更新系统软件包

emerge --sync (这个命令需要时间比较长,可以用emerge-webrsync代替,只更新快照(虽然我也不知道什么是快照(lll¬ω¬)))

b、选择配置文件

eselect profile list 查看有哪些配置文件

eselect profile set 2 选择第2个profile(因为后面要安装Gnome,而且不用systemd,所以选择对应的profile...没有图这里就不列了...大概是/default/linux/amd64/17.1/desktop/gnome),注意不要选择带no-multilib,因为这个表示只能用64位的程序。

d、更新world

emerge --ask --verbose --update --deep --newuse @world 这个耗时比较久

这里更新时可能会提示USE有问题,这时候需要编辑USE标签(/etc/portage/make.conf),一般提示循环以来问题,这时候要根据提示,把某一个标签在USE里去掉USE=“-x1 -x2”

e、时区设置:echo "Asia/Shanghai" > /etc/timezone

更新时区:emerge --config sys-libs/timezone-data

f、配置locale

a、设置语言区域:nano /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

b、生成locale.gen中指定的区域

locale-gen 使用locale可以查看生成了哪些地区

c、选择地区

eselect locale list

eselect locale set xx 这里选择英文的locale,避免中文在终端显示乱码

d、通过编辑/etc/env.d/02locale(有的文章说要在100i18n里设置,经测试编辑这个文件没有效果,而且官网也是编辑02locale,这里用官网的方法)进行详细设置,这里设置的是电脑的各种显示格式

LANG=en_US.UTF-8

LC_CTYPE=zh_CN.UTF-8 这里好像不能设置成zh_CN.GBK,我之间这样设置总会导致gnome-shell打不开,想要使用中文输入法,这里必须设置成中文

这里的优先级:LC_ALL>LC_*>LANG

LC_ALL:强制设置所有的LC_*

LANG:是那些未设置的LC_*的默认选项

关于locale,可以看看这篇文章这篇

e、更新环境变量让设置起效

sudo env-update && source /etc/profile

9、安装Gnome

1、设置USE

nano /etc/portage/make.conf

添加 USE=“-qt5 -kde X gtk gnome”

2、 emerge --ask gnome-base/gnome

env-update && source /etc/profile 更新环境变量

gpasswd -a <YourUserName> plugdev

3、配置X和GDM(退出管理员,登录自己的账户,否则普通用户无法使用)

echo "exec gnome-session" > ~/.xinitrc 设置使X开机启动

emerge --ask gnome-extra/gnome-shell-extensions 安装插件

10、重新加载环境:env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

11、安装内核:emerge --ask sys-kernel/gentoo-sources

12、自动配置内核和设置fstab

emerge --ask sys-kernel/genkernel

fstab是系统启动时挂载相关磁盘的命令配置文件

nano /etc/fstab (这里使用UUID的方式编辑fstab,UUID使用blkid查看注意UUID区分大小写)注意这里的参数一定要写正确,不然可能某个磁盘无法挂载,我之前就是home分区没挂载上,导致root分区空间使用非常快,刚开始还以为是日志哪里有问题。。。实际上如果有的磁盘没有挂载上的话,开机时会有红色提示的。我当时的解决办法就把home目录下的文件全部复制到那个将要作为home分区的磁盘,注意权限之类的一定要正确,然后删除当前home,更正fstab,重启就能搞定。

挂载磁盘

挂载点

磁盘文件系统

挂载参数

磁盘检查参数

UUID=xxx

/boot

vfat

defaults,noatime

0 2

UUID=xxx

/

ext4

noatime

0 1

UUID=xxx

/home

ext4

defaults,noatime

0 2

UUID=xxx

none

swap

sw

0 0

genkernel all 自动编译内核源码(这里会自动创建initramfs)

13、安装固件

emerge --ask sys-kernel/linux-firmware

14、设置主机名:nano /etc/conf.d/hostname

hostname="Gentoo"

15、安装NetworkManager

a、安装net-misc/netifrc,这个无论是安装wpa_supplicant还是NetworkManager都必须要安装的

emerge --ask --noreplace net-misc/netifrc

b、配置网络

nano /etc/conf.d/net

config_eth0="dhcp" 获取动态IP,config_eth0可以是config_eth1,这个依赖于你电脑上的网络接口,用ifconfig可以查看

c、添加networkmanage的USE标签(/etc/portage/make.conf,USE=“(这里之前存在的USE不要改)networkmanage”)

emerge --ask --changed-use --deep @world

d、安装networkmanager

emerge --ask net-misc/networkmanager

emerge --ask net-vpn/networkmanager-pptp 这个插件包括nm-applet

e、把用户添加到networkmanager组

gpasswd -a lin plugdev

f、设置networkmanager开机启动

rc-update add NetworkManager default

16、设置系统时间,防止双系统更换系统时另一个系统时间出问题

hwclock --systohc 将系统时间同步到硬件时间,这里要确保系统时间是正确的

hwclock --show 查看硬件时间是否设置成功

17、系统工具安装

emerge --ask app-admin/sysklogd 安装日志工具

rc-update add sysklogd default 日志工具开机启动

emerge --ask sys-apps/mlocate 安装文件索引工具(使用前要更新数据库,命令忘了。。)

为了能访问win的分区,需要安装几个工具

emerge --ask sys-fs/ntfs-3g 可以识别NTFS文件系统

这里注意在系统中如果打开NTFS分区提示错误,执行这个命令sudo ntfsfix /dev/sdax

emerge --ask sys-fs/dosfstools 可以识别fat32文件系统

18、安装grub引导

echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf

emerge --ask --verbose sys-boot/grub:2

对于UEFI:

grub-install --target=x86_64-efi --efi-directory=/boot

生成grub配置:

grub-mkconfig -o /boot/grub/grub.cfg 这里的配置只能引导linux,想要引导windows添加下面这些

menuentry "Windows 10(loader)"{
insmod part_gpt
insmod fat
set root='hd0,gpt1'			#这里hd0指第一个硬盘(ESP分区存在的硬盘),gpt1指gpt类型分区的硬盘的第一个分区,我的系统里这个是系统ESP分区,
search --no-floppy --set=root --fs-uuid 7ABF-C90C  #这里时ESP分区的UUID,一定注意大小写
chainloader /EFI/Microsoft/Boot/bootmgfw.efi

}

安装成功!!

cd

umount -l /mnt/gentoo/dev{/shm,/pts,}

umount -R /mnt/gentoo

reboot

输入法问题:

emerge --ask app-i18n/fcitx 安装fcitx

还要安装fcitx-configtool fcitx-googlepinyin,由于Gentoo的包名比较长,如果不记得全名,可以用这个命令搜索 emerge --search fcitx,搜索带有fcitx的包,这个命令同时会显示被搜索到的包是否已经安装和是否Masked。

输入法安装后,需要在配置文件里做设置才能用,实际上这里按照网上和fcitx-wiki里说的设置不行(这里不清楚为什么,其实第一次安装Gentoo是可以的,但是第二次安装不知道为啥不行了,读者可以先先用传统的官网方法试试,官方wiki:使用GDM、LightDM的修改/.xprofile,使用Startx、Slim的修改/.xinitrc,gnome用的是GDM),通过网友的知道终于找到了解决办法,需要在~/.pam_environment里贴上对应代码。

export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS=@im=fcitx

中文乱码:

需要安装中文字体,可以使用emerge命令安装字体

我是在win系统里复制的微软雅黑文字安装的,具体如下:

cp xxx.ttc(.ttf) /usr/share/fonts/new-dir 这里最好新建一个文件夹

mkfontscale

mkfontdir

sudo fc-cache 刷新字体缓存

之后再在设置里设置中文字体就行了

软件被Masked的问题:

有些软件出于各种原因可能不是太稳定,这种软件就会被Masked,无法安装,只能修改一些文件才能正常安装

echo "软件全名 ~keyword" > /etc/portage/package.keywords

这里的~keyword安装被Masked的软件时会有提示。