安装gentoo折腾

介绍

首先本文章参考了Gentoo 安装手册,Gentoo是一个非常著名的发行版,在Linux高手中非常流行。
Gentoo 是一种快速、现代的元分布,设计简洁灵活。它建立在自由软件的生态系统之上,不会向用户隐藏引擎盖下的内容。Portage 是 Gentoo 使用的包维护系统,用 Python 编写,这意味着用户可以轻松查看和修改源代码。Gentoo 的打包系统使用源代码(尽管还包括对预编译包的支持),并且通过常规文本文件配置 Gentoo。换句话说,到处都有开放。
Gentoo的安装比Archlinux的确难很多,当然Gentoo比LFS会简单点,至少编译时间不会那么多。

虚拟机准备

下载gentoo镜像:
首先到Gentoo官网下载所需的网络安装镜像,和Arch一样,Gentoo没有提供完整安装包,只有一个网络安装镜像。

下载mini cd和stage3即可;

(这个一般都是安装在物理机的做法)

使用ultraiso或者usbwriter把gentoo的iso写入u盘
ultraiso-》启动-》写入硬盘映像
写完后,u盘仍然可以使用,把下载的stage3也放进去,安装时要用到。

我这里是虚拟机安装,所以下载了mini cd,而stage3在安装系统时候才下载;
在这里插入图片描述

接下来就是虚拟机的配置了:

以下是我个人的虚拟机配置
在这里插入图片描述
在这里插入图片描述

好了,可以启动虚拟机了:

在这里插入图片描述
发现进入了命令行终端后,鼠标也可以动;这点我在archlinux没有遇到,挺有意思的。
在这里插入图片描述

如果个人不习惯在虚拟机操作,那么接下来就开启ssh啦:

毕竟很多时候,都是习惯复制粘贴的嘛。

命令: rc-service sshd start

默认root密码为空,为了能够SSH,还要手动设置一下root密码。

命令:  passwd

启动后,输入ip a命令查看一下虚拟机的IP,然后我们就可以通过SSH连接虚拟机内部了
在这里插入图片描述

安装stage3
磁盘分区:(也可以使用fdisk)

因为是虚拟机安装,所以烧录镜像、配置网络等复杂步骤不需要进行,我们直接从磁盘分区开始。因为我是EFI方式启动,所以要分两个区,ESP以及根分区。

parted /dev/sda mklabel gpt
parted /dev/sda mkpart efi fat32 0% 512M
parted /dev/sda mkpart root ext4 512M 100%
parted /dev/sda set 1 esp on

#格式化分区
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2

将根目录分区挂载为/mnt/gentoo
mount /dev/sda2 /mnt/gentoo		

在这里插入图片描述


// 下面的是MBR方案
parted /dev/sda        // 使用parted给/dev/sda硬盘分区,注意一定要选对硬盘,我这里是sda,可以用ls /dev/s*来查看有哪些设备,一般第一块硬盘是sda,第二块是sdb…
mklabel gpt          // 采用gpt分区
unit mib            // 设置单位为mib
mkpart primary 1 3      // 在第1到第3mib创建一个分区(2mib)
name 1 grub          // 设置第一个分区名字为grub,第一个创建的分区就是上面的命令所创建的
set 1 bios_grub on      // 设置第一个分区为bios_grub启动分区
mkpart primary 3 131     // 创建第3到131mib为第二个分区,(128mib)
name 2 boot          // 设置第二个分区名称为boot分区
mkpart primary 131 -1    // 创建第三个分区,-1表示到最后
name 3 rootfs         // 设置第3个分区名为rootfs
set 2 boot on         // 设置第二个分区为启动分区
print              // 简写为p,打印分区信息
q                // quit,退出分区

	 

// MBR
mkfs.ext2 /dev/sda2          // 格式化boot分区,boot分区最好用ext2,切记一定要选对分区,不要照搬,ls /dev/sda*可以查看sda磁盘的分区
mkfs.ext4 /dev/sda3          // 格式化根分区(sda3)为ext4格式

mount /dev/sda3 /mnt/gentoo     // 挂载第3个分区rootfs为根分区(/mnt/gentoo在系统里面已经帮你建好了)
mkdir /mnt/gentoo/boot        // 在新系统的根分区创建boot目录(boot分区目录还不存在,必须创建才能挂载)
mount /dev/sda2 /mnt/gentoo/boot  // 挂载第二个分区boot为boot分区

命令: mount /dev/sda2 /mnt/gentoo
以下两个在物理机操作,虚拟机不用管:
mkdir -p /mnt/gentoo/boot/ESP      // 挂载gpd分区的ESP分区,ESP目录名你可以取别的名字,你也可以挂载到别的目录,一旦安装好grub就可以不用挂载了
mount /dev/sda1 /mnt/gentoo/boot/ESP

安装stage3:

首先,我个人理解stage1、2、3、4:
Stage 1可以简单理解成源代码的包;Stage 2同样包含了Stage 1的所有文件,但是同时还包含了Stage 1编译出来的文件,也就说是Stage 2是自包含的包(阶段 2 tarball 是从阶段 1 tarball 编译的);Stage 3则是包含了系统必备工具的集合,也就是我们这里要安装的系统基础组件(不包括内核和引导器);Stage 4除了Stage 3的文件之外,还包含了内核和系统引导器,所以Stage 4就是一个可运行的包;

金字塔: stage4>stage3>stage2>stage1

详细信息请参考关于Stage Tarball的官方文档

清华镜像寻找最新的Stage 3的包;除了包以外,还有三个附加文件分别包含了归档包的内容信息(CONTENTS)、校验信息(DIGESTS)以及加密的校验信息(DIGESTS.asc)。把截图里这个包和三个校验文件全部下载下来。(Stage 4主要是用于虚拟机快速运行之类的。所以下载Stage 3就可以了)

在这里插入图片描述
在下载之前,必须将工作目录切换到/mnt/gentoo也就是我们的根目录下,这样做的目的很简单,因为一会要将系统文件解压到根目录下。这里的下载链接是我目前复制出来的,假如大家以后看到本文的话,需要自己打开浏览器重新复制一下文件下载链接。

#必须先切换到/mnt/gentoo
cd /mnt/gentoo

wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200605T133220Z.tar.xz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200605T133220Z.tar.xz.CONTENTS.gz
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200605T133220Z.tar.xz.DIGESTS
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200605T133220Z.tar.xz.DIGESTS.asc

还可以使用另外一种方式避免手动输入这么一大长串链接。这就是利用文本浏览器link来上网并下载文件,光标选择,回车点击超链接,d开始下载,q退出浏览器。我们要做的就是用文本浏览器访问清华镜像网站,然后下载文件。

links https://mirrors.tuna.tsinghua.edu.cn/gentoo/

下载后,用下面的命令来校验文件:

sha512sum -c stage3-amd64-*.tar.xz.DIGESTS

显示两个OK两个FIALED代表正确文件;
在这里插入图片描述
最后用下面命令来解压文件,后面的两个选项的作用是保留归档文件中所有文件正确的权限和命名空间关系。这样Gentoo的Stage3文件就算安装完成了。

tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
设置编译选项

Gentoo是一个源代码发行版,安装大多数软件的时候,其实都是安装的源代码,然后在本地编译的。为了能够更快更好的编译软件,还需要配置一下portage的编译选项。

#编辑配置文件
nano /mnt/gentoo/etc/portage/make.conf

#修改COMMAN_FLAGS
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
#添加MAKEOPTS,数字改成虚拟机设置的总内核数+1
MAKEOPTS="-j5"
设置镜像源

推荐选择清华大学镜像源,按空格选中,然后回车确认。

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

#或者你懒得选择,直接把清华镜像源加到配置文件后面也可以
echo 'GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"' >> /mnt/gentoo/etc/portage/make.conf

然后创建Portage配置文件目录,并将Gentoo安装镜像里的配置文件复制给我们的系统。

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信息,这里–dereference参数是必须的,不然可能复制到的只是一个链接。

cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
挂载需要用到的文件系统
这样才可以让系统完美运行
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
切换进入chroot下

最后一条命令不是必须的,但是它会在命令提示符前面添加一个(chroot)提示我们处在新环境中

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
挂载boot分区

常用的挂载点是/boot/efi,ArchWiki里推荐使用/efi,而这里Gentoo文档中介绍的是使用/boot,按照文档走就可以了。

mount /dev/sda1 /boot
配置Portage

Portage是Gentoo的软件包管理器,先从网络上下载数据库快照。

emerge-webrsync

然后选择列出可用的profile,从中选择一个。这里又用到了另外一个工具eselect,它是Gentoo的通用管理界面,让我们方便的完成系统的各种配置和操作。因为Gentoo安装比较复杂,而且又是编译安装,所以这里选择其他profile的话,可能编译时间会非常长。保持默认即可。

#先列出可用的profile,带星号是目前选择的
eselect profile list
#如果想尝试选择的话
eselect profile set 2
更新@world set

@world集合是Gentoo所有软件和配置的集合,要进行下一步的安装和配置,必须先更新@world集合。

emerge --ask --verbose --update --deep --newuse @world
配置USE环境变量

USE环境变量就是Gentoo提供给用户的一个工具,利用它可以指定一些环境变量,在编译的时候启用或者禁用某些功能。这样一来我们就变得主动多了,权限大大提高了;新手默认就可以了,如果想要了解 ,就运行命令:

emerge --info | grep ^USE
想查看USE变量里面所有可用的选项,可以用下面的命令:
less /var/db/repos/gentoo/profiles/use.desc
配置时间和区域

先配置时区

echo Asia/Shanghai > /etc/timezone
emerge --config sys-libs/timezone-data

然后配置区域

echo 'zh_CN.UTF-8 UTF-8' >> /etc/locale.gen
#如果你不用SSH,需要添加英文区域
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen

#列出可用的区域
eselect locale list
#选择中文区域的编号
eselect locale set 2

最后重新加载一下环境变量

env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
安装和配置内核kernel

具体介绍请查看官方文档

首先安装内核源代码和内核编译工具。因为Gentoo的安装是在本地编译的,所以用时比较长。假如你发现安装瞬间完成,是因为没有更新配置文件的原因。需要输入etc-update并选择-3自动更新配置文件,然后重新输入命令即可编译安装。

emerge --ask sys-kernel/gentoo-sources
emerge --ask sys-kernel/genkernel
配置fstab

fstab是用来存放文件系统的静态信息的文件。 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。gentoo有boot分区和根目录分区两个要挂载的分区。
用lsblk -f命令查看分区信息,要注意UUID和标签。
查询到标签和UUID,就可以填写fstab信息了,虽然也可以用/dev/sda1这样的块设备名称,但是不够安全。所以我们用UUID来编写fstab。第一个是分区名,推荐使用标签或者UUID;第二个是挂载点,也就是分区挂载的位置;第三个是分区的文件系统类型;第四个是挂载选项;第五个dump参数,默认0即可;第六个pass参数,对于根分区要设置成1,其他分区设置成2。
你的fstab文件应该类似下面这样。
nano /etc/fstab
在这里插入图片描述
上面对虚拟机不友好,所以选择以下的方式了:
// MBR
/dev/sda2 /boot ext2 defaults,acl,noatime 0 2
/dev/sda3 / ext4 defaults,acl,noatime 0 1

// UEFI
  /dev/sda1   /boot/ESP vfat  defaults          0 2  // 这个分区是挂载ESP分区,可以省略,挂载主要是方便修改ESP
  /dev/sda2   /      ext4  defaults          0 1
// sdb1是我自己的分区,请忽略,如果你有别的分区也可以在这挂载,注意分区名,挂载路径,格式化类型,挂载方式等等,注意defaults是带s后缀的,写错了可能会变成只读系统,无法写入

手动配置kernel

在配置前,要了解硬件的各项信息,需要安装另一个包。

emerge --ask sys-apps/pciutils

还可以通过lsmod命令来查看当前所处的Gentoo Live镜像开启的功能, 这可以作为我们在配置内核时的重要参考。
切换到内核源代码目录并打开配置菜单。

cd /usr/src/linux
make menuconfig

就会打开一个终端界面的图形化配置工具
在这里插入图片描述

有些内核选项是必须的,必须编译到内核中,而不是作为模块加载。*表示包括到内核中,M表示作为模块加载,[]只有包括到内核中和排除在外两种选项,<>则有包括到内核中、排除在外和以模块加载三种选项。下面这些选项都必须以*方式编译到内核中。

devtmpfs支持

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

SCSI磁盘支持

Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

选择支持的文件系统

因为前面我用的FAT32格式化的ESP,EXT4格式化的根目录,所以这里这两项
(FAT32也就是VFAT)必须包括到内核中,虚拟内存和proc文件系统也是必选的。
	File systems --->
  < > Second extended fs support
  < > The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  < > Reiserfs support
  < > JFS filesystem support
  < > XFS filesystem support
  < > Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

使用PPPoE拨号的话,还需要启用以下功能

Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

处理器是多核的,还需要开启SMP(对称多处理器支持)

Processor type and features  --->
  [*] Symmetric multi-processing support

虚拟机经常会使用USB的,所以USB也必须启用

Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support

系统体系相关的内核配置
因为我们选择了multlib,所以32和64位的程序都会安装。为了支持32位程序,必须启用32位程序模拟功能;这里默认勾选了。

Processor type and features  --->
   [*] Machine Check / overheating reporting 
   [*]   Intel MCE Features
   [*]   AMD MCE Features
   Processor family (AMD-Opteron/Athlon64)  --->
      ( ) Opteron/Athlon64/Hammer/K8
      ( ) Intel P4 / older Netburst based Xeon
      ( ) Core 2/newer Xeon
      ( ) Intel Atom
      (*) Generic-x86-64
Binary Emulations  --->

启用GPT支持,因为前面我用的GPT分区表,EFI启动方式

-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support

EFI的支持

Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support
 
Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support  --->
        <*> EFI Variable Support via sysfs

虚拟机相关内核配置
用的是VMware

[*] Networking support  --->
        Networking options  --->
            <*> Virtual Socket protocol
            <*>   VMware VMCI transport for Virtual Sockets 
    Device Drivers  --->
            Misc devices  --->
                <*> VMware Balloon Driver
                <*> VMware VMCI Driver
            SCSI device support  --->
                [*] SCSI low-level drivers  --->
                   <*>   VMware PVSCSI driver support
        [*] Network device support  --->
                [*]   Ethernet driver support  --->
                    [*]   AMD devices
                    <*>     AMD 8111 (new PCI LANCE) support
                    <*>     AMD PCnet32 PCI support
                    [*]   Intel devices
                    <*>     Intel(R) PRO/1000 Gigabit Ethernet support
                    <*>     Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support 
                <*>   VMware VMXNET3 ethernet driver
            Input device support  --->
						 [*]   Keyboards  --->
                   			 <*>   AT keyboard
    File systems  --->
        <*> FUSE (Filesystem in Userspace) support

配置完成后,选择save保存配置文件,然后exit退出。
默认配置文件名是.config,但是最好手动复制一个备份,有时候默认名称的配置文件会莫名丢失,只能重头再配置一次。
接着就可以开始编译和安装了。快慢取决于电脑配置。

#编译内核
make && make modules_install
#编译完成后安装内核到boot分区
make install
自动编译内核

第二种方式就是自动编译内核。这种方式有个缺点就是会开启大部分选项,所以编译内核用时比较长。
网上查了一下可能需要几十分钟到两三个小时,在虚拟机中编译会用时更长。

genkernel all
安装firmware和initrampfs

官方文档说这是可选的

emerge --ask sys-kernel/linux-firmware

安装initramfs,如果你是自动编译内核的话,可以不用安装initramfs,因为genkernel all会自动安装内核以及initramfs。

genkernel --install initramfs

查看/boot分区内容,看到initramfs和vmlinuz文件,这样内核就准备就绪了。

开始配置系统了
网络配置
nano -w /etc/conf.d/hostname
#设置主机名
hostname="mygentoo"

安装网络软件包

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

dhcp配置

nano -w /etc/conf.d/net

#添加DHCP配置
config_eth0="dhcp"

设置网络自启

cd /etc/init.d

rc-update add net.eth0 default

进入系统后,也许不能上网,可能因为设备不是叫eth0;这时候需要ip a查看一下;然后重新配置

#添加正确的网络配置
cd /etc/init.d
ln -s net.lo net.eno16777736
rc-update add net.16777736 default

#删除错误的配置
rm /etc/init.d/net.eth0
rc-update del net.eth0 default
#启动网络
rc-service net.16777736 start

设置root密码:

passwd

安装和启动日志工具。

emerge --ask app-admin/sysklogd
rc-update add sysklogd default

直接预先开启SSH服务,方便以后远程登录

rc-update add sshd default

系统使用了FAT32和EXT4两个文件系统,至少这两种工具必须安装

emerge --ask sys-fs/dosfstools sys-fs/e2fsprogs

安装DHCP工具

emerge --ask net-misc/dhcpcd

为了安全,需要添加用户

useradd -m -G users,wheel,audio -s /bin/bash yitian
passwd yitian
磁盘清理

下载的stage3文件,假如最后系统成功启动,就已经没用了,可以安全的删除掉。

rm /stage3-*.tar.
安装grub系统引导(这里也和arch一样)
emerge --ask --verbose sys-boot/grub:2

将grub安装到系统中

grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg

// MBR

        grub-install /dev/sda    // 某些系统可能是grub2-install /dev/sda,切记一定要选对硬盘

// UEFI

  grub-install --target=x86_64-efi --efi-directory=/boot/ESP --bootloader-id=grub  // x86_64-efi用于指定64位, /boot/ESP用于指定ESP目录,如果你挂载的地方不同要修改
  // 如果运行上面的命令提示错误,没有权限,可以使用此命令修复:mount -o remount,rw /sys/firmware/efi/efivars,注意你必须是uefi启动的才能安装
vim /etc/default/grub    // 可以在这里修改倒计时
grub-mkconfig -o /boot/grub/grub.cfg  // 记得更新配置否则修改得不到应用

安装后,输入exit退出chroot环境

(chroot) livecd ~ # exit

卸载挂载分区,重启系统

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

在这里插入图片描述
安装screenfetch截个图,做个纪念
emerge app-misc/screenfetch
在这里插入图片描述

在这里插入图片描述

结束

至于安装桌面,有多种选择:
Xfce/指南: 是一个快捷的、轻量级的,功能齐全的桌面环境。
Xorg/指南:允许用户通过他们的指尖创造一个图形环境。
GNOME/指南:能够启动 Xorg 和 Wayland 会话。
KDE:提供了一组应用程序,包括流行的 Plasma 桌面环境。

编译这个一般都要3~4个小时,接下来大家感兴趣就参照维基里面折腾啦!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值