- 折腾gentoo有段时间, 趁着放假,做做笔记;根据官网的 Gentoo Handbook 来一步步记录装gentoo的详细过程。
A.安装前的一些准备
注意:最小CD镜像的安装,必须要在联网下进行!!!
1.使用台式机电脑
CPU: Intel Core i7-7700 @ 8x 4.2GHz
GPU: GeForce GTX 1060 6GB
2.下载镜像(amd64)
gentoo的安装使用了最小镜像+stage3的方式
这里只下载最小镜像 install-amd64-minimal-20180920T214502Z.iso 即可,文件网址可能失效,建议去Gentoo官网
下载。
最小CD镜像:Minimal Installation CD 2018-09-20
stage archives: Stage3 2018-09-20
默认镜像源是国外的服务器,所以下载镜像时,需要选择国内镜像源来下载,否则奇慢无比!
-
进入官网下载页面
-
选择国内镜像源目录
- 选择镜像源
点击镜像源之后进入文件下载网站。然后依次点击:
releases -> amd64 -> autobuilds -> current-install-amd64-minimal
最后来到下面这个页面,点击如图所示文件,即可下载最新镜像文件:
3.刻录优盘
下载完镜像文件后,在linux下可以采用dd镜像写入方式,在win下可以使用一些常见的优盘启动制作软件,比如:rufus等。
- Linux下使用
dd
命令:
#linux 下
$ sudo if=iospath of=usb
-
windows下使用 rufus 软件:
选择分区方案:'用于UEFI 计算机的GPT分区方案'
选择下载好的镜像文件
底部会提示使用的镜像文件,然后点击 开始
选择镜像写入方式
写入中
写入完成后提示准备就绪,关闭软件即可
B. 开始安装
将刻录的优盘插入待安装的电脑,然后使用默认gentoo内核启动,由于版本更新,启动方式可能不同。
启动之后
1.检查网络
ping www.baidu.com
执行之后,能ping通的话,说明可以正常连上网络:
我用的是台式机有线网,所有基本上不用怎么配置,如果是笔记本的话,则要配置一下无线网络,具体的配置方式请看 Gentoo Handbook 。
2.磁盘分区
关于磁盘分区,需要根据自己的硬盘做出调整,以下的分区方式仅供参考!
此时的电脑上有一个M.2的固态,和两个机械硬盘,一个优盘
磁盘 | 说明 | 分区列表 |
---|---|---|
/dev/nvme0n1 | M.2固态 | /grub、/boot、/ |
/dev/sda | 机械硬盘1 | /home、swap |
/dev/sdb | 机械硬盘2 | 未分区 |
/dev/sdc | 优盘 | 未分区 |
2.1 针对 /dev/nvme0n1 固态的分区(分区工具有fdisk、cfdisk、parted等):
使用 UEFI 做引导时,可以同时识别 MBR 和 GPT 分区
但是在 Windows 系统下只能使用 GPT 分区类型
为方便以后装双系统,这里使用 GPT 分区类型
分区数量:/grub、/boot、/
#使用 parted 分区工具
parted /dev/nvme0n1
parted基本操作
#查看操作说明
(parted) help
#设置 gpt 分区类型 注意:这个设置会格式化整个磁盘
(parted) mklabe gpt
#容量查看 MB
(parted) unit mib
#分区大小 start:起始容量 end:结束容量,分区大小:end - start
(parted) mkpart primary start end
#打印整个磁盘分区
(parted) print
a. 启动分区:10MB
(parted) mkpart primary 1 11
(parted) name 1 grub
(parted) set 1 bios_grub on
b. 引导分区:128MB
注意:如果你是在 win10(举例) 下安装的 gentoo ,想组双系统的话,那么你需要保证已有一个 EFI分区(这个分区在你安装 win10 时会自动生成),此时直接跳过 ‘引导分区’ 这一步。
使用UEFI接口引导系统(而不是BIOS)时,将引导分区标记为EFI系统分区。当在分区上设置引导选项时,Parted会自动执行此操作,完成后会有一个esp标志:
(parted) mkpart primary 11 139
(parted) name 2 boot
(parted) set 2 boot on
c. 根分区:110GB
(parted) mkpart primary 139 112779
(parted) name 3 root
d. M.2固态分区过程图
2.2 针对 /dev/sda机械硬盘1的分区(分区工具有fdisk、cfdisk、parted等):
分区数量:/home、swap
#使用 parted 分区工具
parted /dev/sda
parted基本操作
#查看操作说明
(parted) help
#容量查看 GB
(parted) unit Gib
#分区大小 start:起始容量 end:结束容量,分区大小:end - start
(parted) mkpart primary start end
#打印整个磁盘空闲分区
(parted) print free
a. swap分区:10GB
(parted) mkpart primary 0 10
b. home分区:290GB
(parted) mkpart primary 10 300
c. 机械硬盘1分区过程图
3. 格式化分区
分区 | 格式 |
---|---|
/boot | fat32 |
/ | ext4 |
/home | ext4 |
swap | none |
a. 格式化启动分区
mkfs.ext2 /dev/nvme0n1p
b. 格式化引导分区
官方UEFI规范表示UEFI固件将识别FAT12,16或32文件系统,但建议ESP使用FAT32。继续将ESP格式化为FAT32:
注意:如果你是在 win10(举例) 下安装的 gentoo ,想组双系统的话,那么你需要保证已有一个 EFI分区(这个分区在你安装 win10 时会自动生成),此时直接跳过 ‘格式化引导分区’ 这一步。
mkfs.fat -F 32 /dev/nvme0n1p2
c. 格式化根分区
mkfs.ext4 /dev/nvme0n1p3
d. 格式化home分区
mkfs.ext4 /dev/sda3
e. 格式化并启用swap
mkswap /dev/sda2
swapon /dev/sda2
4. 挂载分区
所有分区格式化完成之后,挂载分区到/mnt/gentoo下:
注意:EFI 引导需要在 boot 下创建一个 efi 目录
#创建boot home目录
mkdir -p /mnt/gentoo/boot/efi
mkdir /mnt/gentoo/home
mount /dev/nvme0n1p3 /mnt/gentoo
mount /dev/nvme0n1p2 /mnt/gentoo/boot/efi
mount /dev/sda3 /mnt/gentoo/home
挂载完之后可以使用mount 命令
检查一下挂载是否成功,没有挂载成功的需要重新挂载一下:
mount
5.下载stage3
a. 验证时间
当前时间:9月22日 17:08 2018
date
#Sat Sep 22 09:12:08 UTC 2018
时间显示应与当前日期为准
举例
#本地时间:9月22日 17:08 2018
#设置时间: 9月22日 17:08 2018
date 092217082018
b. 下载stage3
官方源默认是国外服务器,所以需要在国内源中下载stage3文件:
cd /mnt/gentoo
links https://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/
此时出现一个命令行网页浏览器,选择stage3下载即可。
下载完之后,按
ESC -> 回车 -> Exit -> 回车
退出
c. 解压stage3
文件名按自己下载的为准
time tar xvf stage3-amd64-20180920T214502Z.tar.xz
d. 配置 /etc/portage/make.conf
首先,要知道自己的电脑cpu核心数
然后设置变量 :MAKEOPTS="-j核心数+1"
检查电脑核心数:
cat /proc/cpuinfo | grep processor
还有一种比较简单的方法,使用
top
命令,然后按数字键 1,就会出现所有cpu的数量 :
%Cpu0 - %Cpun 核心数就是 n+1
所以我的电脑设置是:
MAKEOPTS="-j9"
执行以下命令在最后一行添加配置变量
echo 'MAKEOPTS="-j9"' >> /etc/portage/make.conf
e. 选择镜像
将光标移至所有国内镜像地址,然后按空格键
确认,所有选完后,按回车
即可:
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
配置Gentoo ebuild存储库:此文件包含更新软件包存储库所需的同步信息(包含Portage下载和安装软件包所需的所有信息的ebuild和相关文件的集合)
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
接下来,将Portage提供的Gentoo存储库配置文件复制到(新创建的)repos.conf目录中:
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
f. 复制DNS信息
确保在接下来chroot之后依然能连上网络
--dereference
:确保复制的是文件本身而不是符号链接。
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
g. 挂载文件系统
gentoo默认的init系统是OpenRC类型,所有要挂载相关系统文件,不然有些命令无法使用,在以后修复系统的时候,也要记得挂载一下。
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
如果是安装init系统为systemd的,则需要加 --make-rslave
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
h. 进入新环境
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
i. 从Web安装ebuild存储库快照
emerge-webrsync
注意:这一步跟上面的选择镜像有关,如果发现一直处于执行状态,那么检查一下文件 /mnt/gentoo/etc/portage/make.conf
是否正确。
j. 选择配置
配置列表是实时更新的,所以需要根据实际做出选择,这里选择默认12即可,如果是systemd,则需要选择带systemd字样的配置。
eselect profile list
eselect profile set 12
配置列表
k. 更新@world集
因为没有选择桌面环境,所有更新时间会短一些。
time emerge --ask --quiet --update --deep --newuse @world
这里使用了 --quiet 静默安装,不会输出安装过程。
安装过程图
l. 时区
选择本地时区
ls /usr/share/zoneinfo/Asia
echo "Asia/Shanghai" > /etc/timezone
更新时区
emerge --config sys-libs/timezone-data
m. 配置语言环境
nano -w /etc/locale.gen
根据如下修改,这里需要注意,gentoo默认不支持zh_CN.UTF-8,需要
下一步是运行locale-gen。它将生成/etc/locale.gen文件中指定的所有语言环境。
locale-gen
eselect locale list
eselect locale set 8
这里设置中文语言
确保设置了区域设置,否则系统会在内核构建期间以及安装后期的其他软件部署中显示警告和错误。
n. 重新加载环境:
env-update && source /etc/profile && export PS1="(chroot) $PS1"
o. 安装内核源码
对于基于amd64的系统,Gentoo推荐使用sys-kernel / gentoo-sources包。
选择适当的内核源并使用emerge安装它:
emerge --ask sys-kernel/gentoo-sources
如果提示needs updating
则运行:
etc-update
然后输入-3
-> 回车 -> yes ,之后在重新装一次即可。
p. 配置kernel
这里使用自动配置方式,需要手动配置的请看Gentoo Wiki。
安装kernel自动配置工具genkernel
time emerge --ask --quiet sys-kernel/genkernel
安装时如果提示
USE changes
,则运行:
etc-update
然后输入-3
-> 回车 -> yes ,之后在重新执行 time emerge --ask --quiet sys-kernel/genkernel
即可。
安装完成之后,编辑 /etc/fstab
系统的挂载点:
nano -w /etc/fstab
添加如下挂载点:
然后开始编译kernel:
这需要不少的时间,可以喝杯茶放松一下~
time genkernel all
编译完成之后,检查一下:
ls /boot/kernel* /boot/initramfs*
#会显示两个文件
q. 安装固件
某些驱动程序在工作之前需要在系统上安装其他固件。这通常是网络接口的情况,尤其是无线网络接口。此外,在使用开源驱动程序时,来自AMD,Nvidia和Intel等供应商的现代视频芯片通常需要外部固件文件。大多数固件都封装在sys-kernel / linux-firmware中:
time emerge --ask --quiet sys-kernel/linux-firmware
r. 修改主机名
nano -w /etc/conf.d/hostname
#将hostname变量设置为自己取的主机名字
hostname =“Guard”
其次,如果需要域名,请在/etc/conf.d/net中设置:
nano -w /etc/conf.d/net
#将dns_domain_lo变量设置为所选域名
dns_domain_lo =“homenetwork”
如果设置域名,登录屏幕会显示This is hostname.(none)
想要将它去掉,只需要修改:
nano -w /etc/issue
#将 .\O 删掉即可
s. 配置网络
time emerge --ask --quiet --noreplace net-misc/netifrc
如果提示
needs updating
则运行:
etc-update
然后输入-3
-> 回车 -> yes ,之后在重新装一次即可。
t. 设置启动时自动启动网络
要在引导时激活网络接口,需要将它们添加到默认运行级别。
首先需要知道网络接口名称:
使用 ifconfig
查看是 eth0
,还是 enp3s0
这里使用 enp3s0:
cd /etc/init.d
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default
如果在启动系统后我们发现有关网络接口名称(当前记录为eth0)的假设是错误的,那么执行以下步骤来纠正这个问题:
- 使用正确的接口名称更新/etc/conf.d/net文件(enp3s0而不是eth0)。
- 创建新的符号链接(如/etc/init.d/net.enp3s0)。
- 删除旧的符号链接(rm /etc/init.d/net.eth0)。
- 将新的添加到默认运行级别。
- 使用rc-update del net.eth0 default删除旧的。
u. 设置主机hosts
nano -w /etc/hosts
按如下设置hosts文件,这里以Guard
为主机名
v. 设置root密码
使用passwd命令设置root密码。
passwd
w. 设置时钟
nano -w /etc/conf.d/hwclock
#修改:clock="local"
如果硬件时钟未使用UTC,则必须clock="local"
在文件中进行设置。否则系统可能会显示时钟偏差行为。
x. 安装工具
- 系统日志记录
提供传统的系统日志记录守护程序集。默认的日志记录配置可以很好地开箱即用,这使得这个软件包成为初学者的一个很好的选择。
emerge --ask app-admin/sysklogd
rc-update add sysklogd default
- Cron守护程序
cron守护程序执行计划的命令。如果需要定期执行某些命令(例如每天,每周或每月),则非常方便。
emerge --ask sys-process/cronie
rc-update add cronie default
- 文件索引
要索引文件系统以提供更快的文件位置功能,请安装sys-apps / mlocate。
emerge --ask sys-apps/mlocate
- 远程访问
要在安装后远程访问系统,请将sshd init脚本添加到默认运行级别:
rc-update add sshd default
- 如果需要串行控制台访问(在远程服务器的情况下可以访问),请取消注释/ etc / inittab中的串行控制台部分:
nano -w /etc/inittab
#SERIAL CONSOLES
s0:12345:respawn:/ sbin / agetty 9600 ttyS0 vt100
s1:12345:respawn:/ sbin / agetty 9600 ttyS1 vt100
- 网络工具
- 6.1 安装DHCP客户端
为了使系统能够使用netifrc脚本自动获取一个或多个网络接口的IP地址,必须安装DHCP客户端。我们建议使用net-misc / dhcpcd,尽管通过Gentoo存储库可以获得许多其他DHCP客户端:
emerge --ask net-misc/dhcpcd
- 6.2安装无线网络工具
如果不需要无线可以跳过此步骤
如果系统将连接到无线网络,请为Open或WEP网络安装:net-wireless / iw;
WPA或WPA2网络安装:net-wireless / wpa_supplicant;
iw也是用于扫描无线网络的有用的基本诊断工具。
emerge --ask net-wireless/iw net-wireless/wpa_supplicant
y. 配置引导加载程序
- 合并GRUB2 软件到系统中
- UEFI用户注意事项:
用户需要确保GRUB_PLATFORMS="efi-64"
已启用(默认情况下是这种情况)。如果不是设置的情况,GRUB_PLATFORMS="efi-64"
则需要在出现GRUB2 之前将其添加到/etc/portage/make.conf
文件中,然后在安装GRUB2 :
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask sys-boot/grub:2
如果GRUB2以某种方式出现而没有启用GRUB_PLATFORMS="efi-64"
,则可以将该行(GRUB_PLATFORMS="efi-64"
)添加到make.conf中,然后通过将选项传递给emerge来重新计算世界包集的依赖关系:--update --newuse
emerge --ask --update --newuse --verbose sys-boot/grub:2
- 使用仅支持MBR分区表的旧BIOS系统时,不需要其他配置就能显示GRUB:
emerge --ask --verbose sys-boot/grub:2
GRUB2软件现已合并到系统中,但尚未安装。
- 安装GRUB2软件
接下来,通过grub-install
命令将必要的GRUB2文件安装到/boot/grub
目录。假定第一个磁盘(系统从中引导的磁盘)是/dev/sda
,以下命令之一将执行:
- UEFI用户:
grub-install --target=x86_64-efi --efi-directory=/boot/efi
如果grub_install返回类似的错误Could not prepare Boot variable: Read-only file system
,可能需要将efivars特殊挂载重新安装为读写才能成功:
mount -o remount,rw /sys/firmware/efi/efivars
另外需要注意
:
一些主板制造商似乎只支持EFI系统分区(ESP)中的.EFI文件的/ efi / boot /目录位置。GRUB安装程序可以使用该--removable
选项自动执行此操作。在运行以下命令之前验证是否已安装ESP。假设ESP安装在/ boot(如前所述),执行:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable
这将创建由UEFI规范定义的默认目录,然后自动将 grubx64.efi 文件复制到由相同规范定义的“默认”EFI文件位置。
我的电脑主板是华硕的,只支持EFI系统分区(ESP)中的.EFI文件的/ efi / boot /目录位置。所以得加 --removable
如果发现自己的系统引导不了,出现 GRUB 字样,则尝试加 --removable
- BIOS用户:
grub-install /dev/sda
#/dev/sda 为 /boot 挂载分区
- GRUB2配置
注意:如果是安装win10 与gentoo 双系统,需要另外安装 os-prober
用以检测 win10 的引导:
emerge --ask os-prober
然后执行
os-prober
接下来,根据 /etc/default/grub 文件和 /etc/grub.d 脚本中指定的用户配置生成GRUB2配置。
在大多数情况下,用户不需要配置,因为GRUB2将自动检测要引导的内核来生成最终的GRUB2配置,
请运行 grub-mkconfig 命令:
grub-mkconfig -o /boot/efi/grub/grub.cfg
如果是win10与gentoo双系统则:
假如没有出现Found
开头的文字,则表明检测不到系统,此时:
- 运行
ls /boot/kernel* /boot/initramfs*
查看是否会输出两个文件;
如果没有,则运行ls /boot/efi/kernel* /boot/efi/initramfs*
,查看是否会输出两个文件,如果有输出,则将两个文件复制到/boot
目录下,之后重新grub-mkconfig -o /boot/efi/grub/grub.cfg
即可。
如果都没有输出,则重新genkernel all
一下,然后在自动生成GRUB2配置。
z. 重新启动系统
退出chroot环境并卸载所有已安装的分区。
然后重新启动:reboot
。
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
不要忘记拔掉优盘,否则可能会再次引导CD而不是新的Gentoo系统。
win10与gentoo双系统引导界面:
gentoo命令行登录,此时输入
root -> 回车 -> 输入密码
,即可进入gentoo系统。
至此,Gentoo的基本系统已安装完成!
感慨一下:Gentoo确实是一个挺折腾的系统,同时需要更多的耐心!不过折腾完,就会发现对Linux更熟悉了一点!
谢谢阅读~
下一篇:根据Gentoo handbook安装——KDE桌面+NVIDIA显卡