Gentoo掘金之路

tip: Gentoo 的 wiki 写的非常好,边折腾边学习。


安装

启动

先找个镜像站下载iso文件。然后直接创建个虚拟机
启动。这时会显示一个启动提示符。 此时按Enter键将使用默认的启动选项启动。如果要使用自定义引导选项引导安装媒介,请按照启动选项指定一个内核,然后按Enter键。 在启动提示符下,用户可以按 F1 键显示可用的内核,按 F2 按键显示可用的启动选项
直接boot: gentoo Enter
然后显示lived ~ #说明启动成功
如果网络已配置,lived ~ # ifconfig命令应该会列出一个或多个网络接口

准备磁盘

分区方案将被使用:

Partition Description
/dev/sda1 BIOS boot partition 给bios下grub留的空间
/dev/sda2 Boot partition EFI分区 格式化成fat32格式,不然装gurb出错
/dev/sda3 Swap partition 交换分区
/dev/sda4 Root partition 根分区

注意 parted 不像fdisk 不能撤销

root # parted -a optimal /dev/sda  /*对这块磁盘分区并优化分区对齐*/
(parted)mklabel gpt  /*设置标签,相对于msdos*/
(parted)rm 2 /*删除一个分区*/
(parted)unit mib /*设置操作单位为MB*/
(parted)mkpart primary 1 3 /*创建一个从1mb开始到3mb结束的分区*/
(parted)name 1 grub /*设置第一个分区名字*/
(parted)set 1 bios_grub on /*设置标志*/
(parted)print /*打印当前*/

(parted)mkpart primary 3 131
(parted)name 2 boot 
(parted)set 2 boot on /*有这个标志是EFI分区 在UEFI安装时,引导标志将出现在引导分区(ESP)*/

parted)mkpart primary 131 643
(parted)name 3 swap
(parted)mkpart primary 643 -1  /*剩余所有空间*/
(parted)name 4 rootfs
(parted)print
(parted)exit

安装文件系统

root #mkfs.vfat -F 32 /dev/sda2
root #mkfs.ext4 /dev/sda4

初始化并激活swap分区

root #mkswap /dev/sda3
root #swapon /dev/sda3

挂载root分区

root #mount /dev/sda4 /mnt/gentoo   /*目录自己建*/
(可选)如果/tmp/需要放在一个独立分区,确保在挂载后变更它的权限:
root #chmod 1777 /mnt/gentoo/tmp

睡觉去了

安装stage包

在/mnt/gentoo/目录下

root #wget http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/stage3-amd64-20181211T214502Z.tar.xz
root #tar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner /*解压并保持权限*/

确保你使用了同样的参数 ( xpf 和 --xattrs-include='.')。 x表示解开(Extract),v表示详细信息(Verbose)可以用来查看解压缩时发生了什么(可选参数), j 表示使用bzip2解压缩,p 表示保留权限(Preserve permissions),还有f 表示我们要解开一个文件,而不是标准输入。最后,--numeric-owner 被用于确保从tarball中提取的文件的用户和组ID与Gentoo发布工程团队预期的保持一致,即使大胆的用户使用的不是Gentoo官方安装媒介。

配置编译选项

为了优化Gentoo,可以设置一些影响Portage的变量,Gentoo官方支持包管理器。 所有这些变量可以设置为环境变量(使用export),但这不是永久的。 为了保留设置,Portage读入/etc/portage/make.conf文件 ,一个用于Portage的配置文件。

root #nano -w /mnt/gentoo/etc/portage/make.conf

CFLAGSCXXFLAGS 变量分别定义了GCC C和C ++编译器的优化标志。

#CODE CFLAGS 和 CXXFLAGS 变量示例
CFLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"

chrooting

复制DNS信息,确保即使进入到新环境后网络仍然可以使用。

root #cp --dereference /etc/resolv.conf /mnt/gentoo/etc/  /*--dereference可以保障如果/etc/resolv.conf是一个符号链接的话,复制的是那个目标文件而不是这个符号文件自己*/

挂载必要的文件系统
Linux的根将变更到新的位置。为了确保新环境正常工作,需要确保一些文件系统可以正常使用。
需要提供的文件系统是:

 /proc/ 一个pseudo文件系统(看起来像是常规文件,事实上却是实时生成的),由Linux内核暴露的一些环境信息
 /sys/ 一个pseudo文件系统,像要被取代的/proc/一样,比/proc/更加有结构
 /dev/ 是一个包含全部设备文件的常规文件系统,一部分由Linux设备管理器(通常是udev)管理
 /proc/位置将要挂载到/mnt/gentoo/proc/,而其它的两个都是绑定挂载。字面上的意思是,例如/mnt/gentoo/sys/事实上就是/sys/(它只是同一个文件系统的第二个条目点),而/mnt/gentoo/proc/是(可以说是)文件系统的一个新的挂载。 
root #mount --types proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev  /*--make-rslave操作是稍后安装systemd支持时所需要的。*/

进入新环境
完成chroot有三个步骤:

  1. 使用chroot将根位置从/(在安装媒介里)更改成/mnt/gentoo/(在分区里)
  2. 使用source命令将一些设置(那些在/etc/profile中的)重新载入到内存中
  3. 更改主提示符来帮助我们记住当前会话在一个chroot环境里面。
root #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"

挂载 boot 分区
现在已经进入新的环境,必须创建并挂载 /boot 分区。 当编译内核并安装引导加载程序时,这将非常重要:

root #mkdir /boot
root #mount /dev/sda2 /boot

配置portage

# nano etc/portage/make.conf
其中添加内容(此处使用网易开源镜像站):
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"
从网站安装ebuild 数据库快照
这个快照包含一组文件,包括通知Portage中有关可用软件的标题(用于安装),系统管理员可以选择哪些配置文件,软件包或 profile 特定新闻 (news) 项目等。

root #emerge-webrsync

选择正确的配置文件

root #eselect profile list

Available profile symlink targets:
  [1]   default/linux/amd64/13.0 *
  [2]   default/linux/amd64/13.0/desktop
  [3]   default/linux/amd64/13.0/desktop/gnome
  [4]   default/linux/amd64/13.0/desktop/kde
  ...
root #eselect profile set 10

那些想使用systemd作为他们的init系统就应该选择一个在其某个部分中包含了systemd字样的配置文件
更新@world集合老慢了
root #emerge --ask --verbose --update --deep --newuse @world
啥时候能完事啊,我自闭了 4个小时+
配置USE变量
USE是Gentoo为用户提供的最具威力的变量之一。很多程序通过它可以选择编译或者不编译某些可选的支持。例如,一些程序可以在编译时加入对 GTK+或是对Qt的支持。其它的程序可以在编译时加入或不加入对于SLL的支持。有些程序甚至可以在编译时加入对framebuffer的支持(svgalib)以取代X11(X服务器)。
最简单的检查当前活动的USE标记的办法是运行emerge --info并选择以USE开头的那一行:
root #emerge --info | grep ^USE
可以在系统的/usr/portage/profiles/use.desc中找到可用的USE标记的完整描述。
作为示例,我们展示一个支持DVD、ALSA,以及CD录制的基于KDE系统的USE设置:

/etc/portage/make.conf

USE="-gtk -gnome qt5 kde dvd alsa cdr"

时区

为系统选择时区。在/usr/share/zoneinfo/中查找可用的时区,然后写进/etc/timezone文件。

`root #``ls /usr/share/zoneinfo`

假设要选择的时区是Asia/Shanghai

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

请避免使用/usr/share/zoneinfo/Etc/GMT*时区,它们的名字并不意味着想要的时区。例如,GMT-8实际上是GMT+8。
接下来,重新配置sys-libs/timezone-data包,将会为我们基于/etc/timezone条目更新/etc/localtime文件。/etc/localtime文件用于让系统的C类库知道系统在什么时区。

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

配置地区

大多数用户只想在他们的系统上使用一或两个地区。
Locales 不只是指定用户应该使用与系统进行交互的语言,同时也指定了字符串排序,日期和时间的显示等规则。
系统应该支持的地区应该在/etc/locale.gen中提到。
root #nano -w /etc/locale.gen

下面的地区是一个示例,展示了同时使用英语(美国)和中文(中国)及附加字符格式(如UTF-8)。
FILE /etc/locale.gen启用US和CN地区及附加字符格式

en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GBK 
zh_CN.UTF-8 UTF-8

警告
我们强烈建议使用至少一个UTF-8格式的地区设置,因为有些应用程序可能需要它。
下一步是运行locale-gen。它将生成/etc/locale.gen文件中指定的所有地区。
root #locale-gen
要验证所选择的地区当前可用,运行locale -a

等完成后,我们就来设定系统级别的区域设置。我们又一次使用eselect来做这件事,现在使用locale模块。
通过eselect locale list可显示可用的目标:
root #eselect locale list

Available targets for the LANG variable:
  [1]   C
  [2]   en_US
  [3]   en_US.iso88591
  [4]   en_US.utf8
  [5]   POSIX
  [6]   zh_CN
  [7]   zh_CN.gbk
  [8]   zh_CN.utf8
  [ ]   (free form)

通过eselect locale set VALUE可以设定正确的地区:
root #eselect locale set 8
这个还可以通过人工编辑/etc/env.d/02locale文件来完成:

FILE /etc/env.d/02locale手动设置系统地区定义
LANG="zh_CN.UTF-8"

确保设定了一个地区,不然系统会在后面安装中的内核编译和部署其他软件时显示警告和错误。

重新加载环境:

root #env-update && source /etc/profile && export PS1="(chroot) $PS1"


配置Linux内核

安装源码

inux内核是所有发行版的核心。它位于用户程序和系统硬件之间。Gentoo提供给用户一些可选的内核源码。完整的带描述的列表在内核概述页面
针对基于amd64-系统的Gentoo,建议使用包 sys-kernel/gentoo-sources
选择一个合适的内核并使用emerge来安装它。
root #emerge --ask sys-kernel/gentoo-sources
这将在/usr/src/中安装Linux内核源码,并有一个符号连接叫作linux将指向安装的内核源码:
root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

现在是时候来配置和编译内核源代码了。有两种方法:

  1. 手动配置并生成内核。移步wiki
  2. 一个叫作genkernel的工具用来自动化生成并安装Linux内核。

使用genkernel。它将自动配置并编译内核。
genkernel配置内核的工作原理几乎和安装CD配置的内核完全一致。也就是说当使用genkernel建立内核,系统通常将在引导时检测全部硬件,就像安装CD所做的。因为genkernel不需要任何手动内核配置,它对于那些不能轻松的编译他们自动内核的用户来说是一个理想的解决方案。
现在,我们来看看如何使用genkernel。首先emerge sys-kernel/genkernel这个ebuild:
root #emerge --ask sys-kernel/genkernel
这一步出错了尝试#dispatch-conf,注意上面命令的输出会教你该做什么
接下来,编辑/etc/fstab文件来使包含有第二个值为/boot/的那条的第一个值指向到正确的设备。如果是按照本手册的分区示例,则这个设备非常像使用ext2文件系统的/dev/sda2。这将使文件中的这一条目看起来像是:
root #nano -w /etc/fstab

/dev/sda2   /boot   fat32   defaults    0 2

现在,运行genkernel all来编译内核源码。值得注意的是,使用genkernel编译一个内核将支持几乎全部的硬件,这将使编译过程需要一阵子来完成!
root #genkernel all ...又是漫长等待
一旦genkernel完成,将创建一个内核、全部的模块和初始化内存文件(initramfs)。我们将在文档后面配置引导器的时候使用这个内核和initrd。记下内核和initrd名字作为编辑引导器配置文件的信息。initrd将在后执行硬件检测之后、“真实”系统启动之前立即启动。
root #ls /boot/kernel* /boot/initramfs*
initramfs-genkernel-x86_4.14.83-gentoo
kernel-genkernel-x86_64-4.14.83-gentoo

配置模块

要查看所有可用模块,运行下面的find命令。不要忘记替换“<kernel version>”为刚刚编译的内核版本:
root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
例如,为了自动加载3c59x.ko模块(它是特定3Com网卡系列的驱动程序),编辑/etc/.-load.d/network.conf文件并在其中输入模块名称。实际的文件名对于加载程序来说无关紧要。
root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf


配置系统

文件系统信息

创建/etc/fstab文件
/etc/fstab文件使用一种特殊语法格式。每行都包含六个字段。这些字段之间由空白键(空格键,tab键,或者两者混合使用)分隔。每个字段都有自己的含意:

    第一个字段显示要挂载的特殊 block 设备或远程文件系统。 有几种设备标识符可用于特殊块设备节点,包括设备文件路径,文件系统标签,UUID,分区标签以及UUID。
    第二个字段是分区挂载点,也就是分区应该挂载到的地方
    第三个字段给出分区所用的文件系统
    第四个字段给出的是挂载分区时mount命令所用的挂载选项。由于每个文件系统都有自己的挂载选项,我们建议你阅读mount手册(man mount)以获得所有挂载选项的列表。多个挂载选项之间是用逗号分隔的。
    第五个字段是给dump使用的,用以决定这个分区是否需要dump。一般情况下,你可以把该字段设为0(零)。
    第六个字段是给fsck使用的,用以决定系统非正常关机之后文件系统的检查顺序。根文件系统应该为1,而其它的应该为2(如果不需要文件系统自检的话可以设为0)。

Gentoo 提供默认的/etc/fstab不是有效的fstab
root #nano -w /etc/fstab
分区表和UUIDs
MBR(BIOS)和GPT都支持“文件系统”标签和“文件系统”的UUID。
文件系统标签和UUID由LABEL和UUID前缀标识,并且可以通过blkid命令查看:
root #blkid

/dev/sda2 /boot fat32 defaults,noatime 0 2
/dev/sda3 none swap sw 0 0
/dev/sda4 / ext4 noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0

配置网络

在Gentoo Linux安装时,网络已经配置。然而,这是安装的安装光盘本身的配置,并不是新的系统环境的网络配置。现在你所要设置的是Gentoo系统的永久网络配置。
具体这里好多繁琐的查看wiki


配置引导加载程序

移步wiki更详细。。。。
完成就装好了
不更了就到这吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 98,534评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,022评论 2 34
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 4,869评论 0 9
  • 1.描述计算机的组成及其功能 (一)计算机的组成 1.CPU 2.CPU风扇 3.BIOS 4.内存 5.硬盘 6...
    whamai阅读 1,362评论 0 1
  • 贾宝玉和江临风就在相互调侃中把事情定了下来,他们各自去通知想要通知的人,也就是林黛玉和余安安,虽然他们都没有和她们...
    可可豆子阅读 414评论 0 1