安装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、分区
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_*的默认选项
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,重启就能搞定。
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的修改/.xinitrc,gnome用的是GDM),通过网友的知道终于找到了解决办法,需要在~/.pam_environment里贴上对应代码。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export 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的软件时会有提示。