gentoo linux 安装(转)
来源:https://medium.com/@langleyhouge/gentoo%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B%E5%8F%8A%E6%80%BB%E7%BB%93-1db269cfa8c7
——采用 Gnome 作为默认桌面环境,Intel 集成显卡和 Nvidia 独立显卡配置或者 AMD Ryzen 4000 系列搭配 Nvidia 独立显卡配置,UEFI 安装模式
前言——
关于这篇教程总结写于 2020 年8月25日~8月30日,目前稳定版本的 Gentoo Linux profile 版本号是 17.1。如果后续版本号出现跟进,而我并没有及时跟进信息,请各位朋友以 Gentoo Wiki 文档为准。
为什么写这篇文章——
越来越多的朋友开始熟悉和学习 Linux ,这个开源的操作系统有幸成为默认乃至计算机上第二操作系统。再加上当今桌面级 Linux 系统安装步骤简化,汉化越来越优秀,给新手或者说初学者带很多便捷,这算是桌面级 Linux 发展至今一个非常令人激动的进步。
然后,进步之余,我们不能忽略一些最基础的知识—— Linux 桌面级操作系统的安装和运行方式。而这篇文章就从这个角度出发,结合 Gentoo 这个发行版,给各位朋友一些启发。
准备工作——
1、耐心
2、耐心、耐心
3、耐心、耐心、耐心
4、LiveUSB(推荐 Fedora),稳定的网络,持之以恒的决心和判断力,逻辑思维缜密
我们开始——
我们都知道 Linux 系统是一个基于 Linux 内核运行各种开源和非开源软件的操作系统内核。我们的目的是让这个系统为我们工作,提升工作效率,提供娱乐等属性,而我们不愿意看到的是 Bugs 满天飞,系统时不时死机,重要文件丢失。
那么从工具链开始打造你自己的 Linux 系统就显得尤为重要。
第一步:选择一个适合你的安装媒介
个人推荐 USB 3.0 的U盘一枚。制作 LiveUSB,个人并不推荐 Gentoo 的安装镜像,也不推荐 Debian 系的,前者是因为全是字符界面,对用户不友好;后者的原因是在 Chroot 阶段增加复杂度,另外,Debian 的网卡驱动有时候因为没有开源版,无法驱动,尤其是无线网卡,操作起来并不方便。我个人推荐大家用 Fedora 的安装镜像,可以到 Fedora 官网下载,并使用自己习惯的工具制作 LiveUSB。
备份硬盘中的重要资料。
引导计算机进入 LiveUSB 环境,在这里我用 Fedora Gnome LiveUSB 桌面为例为大家详细讲解。在 LiveUSB 环境下我们连接无线网络或者有线网络就显得简单许多,通过图形化设置完成后。就是准备磁盘,换句话说,就是为 Gentoo 准备安装所需的磁盘分区和文件系统。
在这一步可以通过多种软件实现磁盘的准备。而我们的目的要明确 — — 如何分区,才能方便我们使用系统。以我为例,首先笔电采用了 EFI 方案,需要一个200M~500M(至少200M以上)的分区来作为 /boot,类型选择是 EFI,当然还有一种可行的分区是200M的 /boot/efi 分区,类型是 ESP。随后是 root 分区,或者我们叫它根目录,其次是 /home 分区和 /opt 分区。
在 Gentoo 安装的 Wiki 上,我们可以找到至少两种命令行软件可以实现分区,fdisk 和 parted 来为磁盘分区,它们都是命令行工具,实现起来可能对新手比较困难。我推荐一个字符图形化工具来分区,叫做 cfdisk,这个工具几乎在所有的 Linux 发行版 LiveCD 中都有,图形化操作,设置磁盘大小,类型都比较形象,操作简单。这里推荐大家使用 gpt 分区表,这样后面我们写到 fstab 文件的时候会很方便。
将 /opt 进行单独分区是我的个人喜好,/home 单独分区能够有效保证个人文件和资料的安全。
我的硬盘有3快,两块 NVME 的西数黑盘,各1TB,一块 SATA 的西数蓝盘,也是1TB,在 Linux 的 /dev/ 目录下我们可以看到 nvme 的盘符是按照 nvme0, nvme1, nvme2…以此类推的形式编号的,那么 nvme0n1p1,nvme0n1p2,nvme0n1p3 又属于该磁盘设备向下的盘符。了解了这一点,就来解释下我的分区:
/dev/nvme0n1p1 分配了500M,挂载到 /boot 上,/dev/nvme0n1p2 全部分配给根目录,/dev/nvme1n1p1 完全分配给 /home,/dev/sda1 完全分配给 /opt 。于是就形成了下表:
/dev/nvme0n1p1 — — — — -> /boot — — — ->200M~500M
/dev/nvme0n1p2 — — — — >/ — — — — ->所有剩余空间
/dev/nvme1n1p1 — — — — ->/home — — –>所有空间
/dev/sda1 — — — — — — —>/opt — — — — — ->所有空间
而各位真正在分区的时候只需要把握两点重点就可以了:
第一:/boot 的 flags 或者说类型设置成 EFI;/boot/efi 的类型是 ESP
第二:最好单独分出 /home
用 mkfs 对分出来的磁盘分区格式化,比方说 /boot 用 mkfs.vfat /dev/nvme0n1p1,其他的我都用 mkfs.btrfs格式化成 btrfs。
第二步:配置 Gentoo 的 Portage,USE 和编译环境
在开始之前,我们首先要明白几个基本概念:
1、Portage,这里其实很多朋友都有一种误区,认为 Gentoo 的包管理器是 emerge ,因为安装软件都需要 emerge 来跑,但其实真正的包管理器是 Portage,portage 包含了 emerge 和 ebuild 两部分,emerge 是一个可执行程序,负责将 ebuild 中的内容按照规则进行编译和安装,ebuild 这个文件,更像是个脚本,emerge 按照它进行下载源代码,打补丁,一定的规则编译,然后安装。
2、USE,这是一个 Gentoo Linux 发行版比较独特的“标签”,它定义了编译和构建整个系统需要依赖什么,不需要依赖什么,尽可能让系统简洁,轻快,高效。举个例子,如果你使用的桌面环境是 KDE,那么在系统里面你可以尽可能不使用 Gnome 。当然,这是一种比较极端的实例。那么最常见的 USE 使用就是在配置文件中添加需要的和不需要的,这样构建系统就非常有针对性,自然运行效率就高了。
3、Cflags,这是 GCC 针对源代码编译进行一定优化的标签,通过这些功能,可以将我们需要的软件源码进行一定级别的优化,然后生成可执行程序,从而提高运行效率。
那么现在我们正式开始
首先在 LiveUSB 环境下获取 root 权限,简单的输入 su 或者 sudo su 获得权限。然后,新建一个文件夹,打开终端后输入:
mkdir -p /mnt/gentoo
然后我们将根目录挂载到 /mnt/gentoo 这个文件夹下,以我为例,就是将 /dev/nvme0n1p2 挂载到 /mnt/gentoo 下。
mount /dev/nvme0n1p2 /mnt/gentoo
这个时候再 cd /mnt/gentoo 下,我们就进入到整个根目录了,到这一步,我们才刚刚开始最实质的步骤。而现在,我建议大家可以按照我这样布局 LiveUSB 桌面:
下载 Stage3
我们可以在以下三个网站下载 Stage3,中科大、水木清华和163,这三个源镜像是可信且网速可以保证的。Stage3 是一个包,这个包包含了构建 Gentoo 最基础的工具链,都是稳定版本,也是下一步构建系统的基础。
不论你选择的是哪一个源镜像,按照以下的目录寻找,gentoo->releases->amd64->autobuilds->current-stage3-amd64-systemd->stage3-amd64-systemd-<日期,越接近你现在的日子越好>.tar.xz
然后我们右键复制这个包的地址,在终端使用 wget下载。
wget https://mirrors.ustc.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64-systemd/stage3-amd64-systemd-20200823T214503Z.tar.xz
再次提醒,不要嫌麻烦,去找最新的包,不要复制粘贴这一段。
下载后,用以下的命令解压到根目录。
tar vxpf stage3-amd64-systemd-20200823T214503Z.tar.xz
跑完之后,我们就获得了基础工具链和所有默认文件夹。
当然,你刚刚下载的这个包它依然在根目录下,我们可以使用 rm 命令将它删除。
我们开始配置 make.conf 和源镜像地址:
make.conf 文件位于我们根目录的 /etc/portage/ 下,或者说在 /mnt/gentoo/etc/portage/ 下。我们现在可以根据自己的喜好开始编辑。这里我提供我自己使用的,另外再给大家一些配置建议。
make.conf
下面来仔细谈一谈,这里的内容是很重要的,直接关系到后续是否能够正常和顺利构建系统。
1、COMMON_FLAGS=,这里添加 -march=native ,个人认为 native 比特指的 CPU 型号优化的效果更好,GCC 会根据你计算机的处理器集成的算法来优化,个人推荐;
我自己将 -O2 修改成 -O3 ,这样的优化级别比稳定的要更加好一些,自然稳定性可能会降低,但是目前没有遇到因为这个导致的编译失败。
我想可能会有人像我,加上 -flto 这个优化,个人推荐你可以在内核编译的时候加上,但是用完就关掉,以免后续更新维护造成麻烦。
2、CHOST= 和 CPU_FLAGS_X86=,可以按照我的添加,这里特指牙膏厂的处理器,如果是 AMD 的锐龙,可以在后续构建系统以后,通过安装 cpuid2cpuflags 工具,查看输出填写。
3、USE=,我在这里只添加了一个 -bindist ,其余如果有默认的先删掉,保证初次构建一切顺利。如果后续需要修改和调整 USE 这个标签,我们可以在 /etc/portage/packeage.use/ 下建立相关的标签,据个