Maxiee的Gentoo安装笔记

我想开辟这样一个系列,记录自己学习 Gentoo 系统的过程,成为一份有价值的参考。

在Gentoo主页里下载了镜像:install-amd64-minimal-20140313.iso ,就开始新的折腾之旅。

【注】在安装 Gentoo 系统时,应当首要参考 Gentoo Handbook ,针对自己的系统类型、遵循Handbook的指导安装。

准备

选择在虚拟机里安装,这样可以尽管折腾,而不用担心系统崩溃或者硬盘数据丢失。

在 VirtualBox 里加载上 iso 开机,显示界面:

Gentoo-install1让你选择内核,Maxiee选择加载默认的内核,于是直接按下回车。

系统开始加载一通,最终出现了终端:

Gentoo-install2

handbook 说,Alt-F1 和 Alt-F2 可以在多个终端中切换,这样就可以在一个中安装系统,在另一个中看看手册。

下一步是检查网络连接,由于 Maxiee 在虚拟机里,网络已经是可用的了。ping 了一下国内著名的测试网络连通性网站 baidu ,很通透。

硬盘分区

Maxiee 选用 fdisk 来格式化虚拟机磁盘,分区策略按照 handbook 分了4个区:

gentoo-install3

文件系统,启动分区 /dev/sda2 采用 ext2 ,主分区 /dev/sda4 采用 ext4:

# mkfs.ext2 /dev/sda2

# mkfs.ext4 /dev/sda4

初始化 swap 并激活:

# mkswap /dev/sda3

# swapon /dev/sda3

挂载分区:

# mount /dev/sda4 /mnt/gentoo

# mkdir /mnt/gentoo/boot

# mount /dev/sda2 /mnt/gentoo/boot

将当前目录切换到挂载的 gentoo 下:

# cd /mnt/gentoo

下载 stage3

使用 links 命令,这是一个命令行下的浏览器,打开镜像网址,选择一个适合我们的源

links http://www.gentoo.org/main/en/mirrors.xml

找到亚洲——中国:

gentoo-install4

因为 Maxiee 使用教育网,想使用厦大的源,结果发现访问不上,于是选择了搜狐的源。

在源里进入目录 releases/amd64/autobuilds/ ,找到 stage3-amd64-20140313.tar.bz2 ,按D键开始下载

gentoo-install5

解压 stage 包:

# tar xvjpf stage3-*.tar.bz2

/etc/portage/make.conf 是 Portage 的设置文件,用 vi 编辑器打开。

/mnt/gentoo/usr/share/portage/config/make.conf.example 这是一份设置说明,在第二个终端里打开,用来参考。

make.conf 里 Maxiee 只是把 CFLAGS 添加了一个选项,变为了 -march=native -O2 -pipe 。

编译 Gentoo Base System

下面该开始编译 Gentoo Base System 啦!

首先还是要选择镜像源,有一个工具mirrorselect 可以用,Maxiee 决定还是用刚才的那个搜狐源,空格选择,回车确定返回终端:

gentoo-install6

拷贝 DNS 信息:

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

在 chroot 进新系统之前,要挂载需要的文件系统:

把 /proc 文件系统挂载到 /mnt/gentoo/proc ,这样我们在 chroot 到新的环境中进行安装时,使用内核提供的信息。之后也要挂载 /dev 和 /sys 文件系统。

# mount -t proc /proc /mnt/gentoo/proc

# mount --rbind /sys /mnt/gentoo/sys

# mount --rbind /dev /mnt/gentoo/dev

现在,就可以 chroot 进新系统了,chroot 分为三个步骤:

1. 使用 chroot 将根目录从 / 切换到 /mnt/gentoo

2. 要载入一些设定,使用 source 指令

3. 最后要重新定义终端命令提示符,提醒我们知道自己在一个 chroot 环境里

# chroot /mnt/gentoo /bin/bash

# source /etc/profile

# export PS1="(chroot) $PS1"

Portage 快照

下面要安装 Portage 快照,告诉我们都有哪些软件可供安装:

# emerge-webrsync

等待抓取快照(这个文件可有 58M ,小水管伤不起):

gentoo-install7

抓取好后,提示我有6条新闻,eselect news list 列出来,eselect news read 读一下:

离现在最近的一条是 2014-2-25 的,题目是《升级到 >=sys-fs/udev-210 》,大意是说现在内核需要 CONFIG_FHANDLE 和 CONFIG_NET 两个选项了,如果你在升级 >=sys-fs/udev-210 但是没有这俩选项,你将会被警告。

Profile是什么?

A profile is a building block for any Gentoo system. Not only does it specify default values for USE, CFLAGS and other important variables, it also locks the system to a certain range of package versions. This is all maintained by the Gentoo developers.

profile 是任何 Gentoo 系统的积木(雾)。它负责给 USE, CFLAGS 和其他重要的值指定默认值,它也负责把系统锁定在一定的包的版本范围里。这全都由 Gentoo 的开发者来维护。

Previously, such a profile was untouched by the users. However, there may be certain situations in which you may decide a profile change is necessary.

从前,用户并不会接触到 profile ,可是在某些情况下,用户需要来切换 profile 。

查看系统中的profile: # eselect profile list

Maxiee 就选择 default/linux/amd64/13.0/desktop 把,看起来很适合桌面用户。

eselect profile set 3

学习 USE 变量

USE is one of the most powerful variables Gentoo provides to its users. Several programs can be compiled with or without optional support for certain items. For instance, some programs can be compiled with gtk-support, or with qt-support. Others can be compiled with or without SSL support. Some programs can even be compiled with framebuffer support (svgalib) instead of X11 support (X-server).

USE 是 Gentoo 给用户提供的最牛的变量之一。许多程序可以在编译时带有或者不带有某些项目的支持。例如,一些程序可以编译成支持 gtk 的,或者编译成 支持 qt 的。再例如有些软件可以编译成支持/不支持 SSL。一些程序甚至可以编译成支持 framebuffer ,从而避免对 X11 的依赖。

Most distributions compile their packages with support for as much as possible, increasing the size of the programs and startup time, not to mention an enormous amount of dependencies. With Gentoo you can define what options a package should be compiled with. This is where USE comes into play.

大多数发行版在编译包时尽可能多地添加支持,这就增加了程序的大小和启动速度,更不用说数量庞大的依赖。使用 Gentoo ,你可以定义一个包应当编译哪些支持。这就是 USE 的作用。

In the USE variable you define keywords which are mapped onto compile-options. For instance, ssl will compile ssl-support in the programs that support it. -X will remove X-server support (note the minus sign in front). gnome gtk -kde -qt4 will compile your programs with gnome (and gtk) support, and not with kde (and qt) support, making your system fully tweaked for GNOME.

在 USE 变量中,你定义关键字,这些关键字是被映射到相应的编译选项的。举例说,ssl (关键字)将会对支持 SSL 的程序,再其编译时,加入对它的支持。 -X (关键字)将会删除对 X-服务器的支持。gnome gtk -kde -qt4 将会编译你的程序支持 gnome 和 gtk ,但是不支持 qt4 ,这确保你的系统为 GNOME 充分优化。

The default USE settings are placed in the make.defaults files of your profile. You will find make.defaults files in the directory which /etc/portage/make.profile points to and all parent directories as well. The default USE setting is the sum of all USE settings in all make.defaults files. What you place in /etc/portage/make.conf is calculated against these defaults settings. If you add something to the USE setting, it is added to the default list. If you remove something from the USE setting (by placing a minus sign in front of it) it is removed from the default list (if it was in the default list at all). Never alter anything inside the /etc/portage/make.profile directory; it gets overwritten when you update Portage!

默认的 USE 选项放在你的 profile 的 make.defaults 里面。/etc/portage/make.profile 指向那里。默认的 USE 设置是所有make.default文件 USE 设置的总和。而你放在 /etc/portage/make.conf 的是与这些默认选项计算过的。如果你加入一些 USE 设置,它们会被加入到默认的列表中。如果你删除(通过减号)一些 USE 设置,他们将会从默认列表中删除。记住,永远不要改变/etc/portage/make.profile 目录,它会在 Portage 更新时被覆盖掉。

A full description on USE can be found in the second part of the Gentoo Handbook, USE flags. A full description on the available USE flags can be found on your system in /usr/portage/profiles/use.desc.

浏览所有可用的 USE:

# less /usr/portage/profiles/use.desc

我把 USE 设置成了:

USE="-bindist -gtk -gnome -kde qt4 qt5 mmx sse sse2"

赶脚这是作大死的节奏……

设置时区

# echo "Asia/Shanghai" > /etc/timezone

# emerge --config sys-libs/timezone-data

locales Maxiee 没有设置,以前再装别的发行版的时候,有时 locales 设置了,却没有相应的字体,结果文字全显示成了小方块%>_<%,还是先不设置这个了……

安装内核

安装内核代码:# emerge gentoo-sources

下面就该是构建内核了,时间关系,Maxiee 打算先用 genkernel 自动构建。等找时间,再研究一下手动编译内核。

# emerge genkernel

# genkernel all

下面是一些设置:

设置主机名:

# nano -w /etc/conf.d/hostname

hostname="Maxiee"

开机自动启动网络服务:

# cd /etc/init.d

# ln -s net.lo net.eth0

# rc-update add net.eth0 default

设置 root 密码:

# passwd

安装系统日志记录软件:

有多款软件可以选择,这里 Maxiee 选择 syslog-ng

# emerge syslog-ng

# rc-update add syslog-ng default

安装 DHCP 客户端:

# emerge dhcpcd

安装GRUB

# emerge sys-boot/grub

在 /boot/grub 中安装 grub 必要的文件:

# grub2-install /dev/sda

配置 grub:

# grub2-mkconfig -o /boot/grub/grub.cfg

后续工作

退出 chroot 环境、重启:

# exit

cdimage ~# cd

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

cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}

cdimage ~# reboot

添加用户:

# useradd -m -G users,wheel,audio -s /bin/bash john

# passwd john

Password: (Enter the password for john)

Re-enter password: (Re-enter the password to verify)

大功告成!

gentoo-install8

还有一些不完善的地方,还要多学习学习。

至于下一步的打算,是安装一个图形界面,Maxiee 打算装一个 xfce~