网上对于Gentoo Linux 的教程少之又少,所以这里我将自己的安装记录贴出来
希望对正在研究Gentoo 的小伙伴们有帮助!

1.确认连接到互联网,使用net-setup工具配置网络

root# net-setup eth0

2.分区

推荐分区方案:

分区 描述
/dev/sda1 boot引导分区
/dev/sda2 /根分区
/dev/sda3 swap交换分区
 
Command (m for help):p
Disk /dev/sda: 30.0 GB, bytes
heads, sectors/track, cylinders
Units = cylinders of * = bytes Device Boot Start End Blocks Id System
/dev/sda1 * + Linux
/dev/sda2 Linux
/dev/sda3 Linux swap
敲击 a 键来切换一个分区是否为可引导的标记,然后敲击 1。之后再一次敲 p键,您可以发现一个“*”被放置于相应分区的“boot”列。
 

3.格式化分区并挂载磁盘

root# mkfs.ext4 /dev/sda1
root# mkfs.ext4 /dev/sda2
root# mkswap /dev/sda3
root# swapon /dev/sda3
root# mount /dev/sda2 /mnt/gentoo
root# mkdir /mnt/gentoo/boot
root# mount /dev/sda1 /mnt/gentoo/boot

4.设置时间

root# date  //05表示月份08表示号数1430表示14点30分2016表示年份

5.下载stage3,并解压tar包

stage3压缩包是一个包含有最小化Gentoo环境的文件

root# cd /mnt/gentoo
root# links https://www.gentoo.org/downloads/mirrors/
root# tar xvjpf stage3-*.tar.bz2 --xattrs

6.配置编译选项

root# nano -w /mnt/gentoo/etc/portage/make.conf
CFLAGS="-O2 -pipe" //-O2表示gcc优化级别,(已知O3会在全系统时有问题,所以推荐使用O2即可) -pipe表示使用管道而不是编译的各个阶段之间的通信的临时文件,这里我推荐大家就使用这两个标记即可,如果有需要可以查看GUN GCC的一些选项来自行设定
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j8" //根据你的CPU核心数来设置,表示编译安装包时并行执行的线程数

7.配置镜像站点

root# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
#选择一个你所在地理位置的镜像站点即可

8.创建主仓库

root# mkdir /mnt/gentoo/etc/portage/repos.conf
root# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

9.复制DNS信息

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

10.挂载必要的文件系统

root# mount -t proc proc /mnt/gentoo/proc
root# mount --rbind /sys /mnt/gentoo/sys
root# mount --make-rslave /mnt/gentoo/sys //如果你不打算安装systemd则可不必使用这句话
root# mount --rbind /dev /mnt/gentoo/dev
root# mount --make-rslave /mnt/gentoo/dev //如果你不打算安装systemd则可不必使用这句话
root# rm /dev/shm && mkdir /dev/shm
root# mount -t tmpfs -o nosuid,nodev,noexec shm /dev/shm
root# chmod /dev/shm
--make-rslave操作是稍后安装systemd支持时所需要的。
 

11.进入新环境

root# chroot /mnt/gentoo /bin/bash
root# source /etc/profile
root# export PS1="(chroot) $PS1"

12.安装Portage快照

root# emerge-webrsync //emerge-webrsync命令将安装一个最近的Portage快照(通常是24小时以内)
root# emerge --sync //使用rsync协议来更新Portage树(之前通过emerge-webrsync获得的)到最新状态。

13.选择正确的配置文件

root# eselect profile list
root# eselect profile set [number]
root# eselect profile list

14.更新你的系统

root# emerge --ask --update --deep --newuse @world

15.配置USE变量

USE是Gentoo为用户提供的最具威力的变量之一。很多程序通过它可以选择编译或者不编译某些可选的支持。例如,一些程 序可以在编译时加入对gtk或是对qt的支持。其它的程序可以在编译时加入或不加入对于SLL的支持。有些程序甚至可以在编译时加入对 framebuffer的支持(svgalib)以取代X11(X服务器)。

大多数的发行版会使用尽可能多的支持特性编译它们的软件包,这既增加了软件的大小也减慢了启动时间,而这些还没有算上可能会涉及到的大量依赖性问题。Gentoo可以让你自己定义软件编译的选项,而这正是USE要做的事。

在USE变量里你可以定义关键字,它被用来对应相应的编译选项。例如,ssl将会把ssl支持编译到程序中以支持它。-X会移除其对于X服务器的支持(注意前面的减号)。gnome gtk -kde -qt4将会以支持GNOME(和GTK)但不支持KDE(和Qt)的方式编译软件,使系统为GNOME做完全调整(如果架构支持)。

默认的USE设置全放在了系统所使用的Gentoo配置文件的make.defaults文件中。Gentoo对它的配置文件们使用了一个(复杂的)继承系统,在这个阶段我们不去深入。最简单的检查当前活动的USE标记的办法是运行emerge --info并选择以USE开头的那一行:

root# emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
可以在系统的/usr/portage/profiles/use.desc中找到可用的USE标记的完整描述。
root# less /usr/portage/profiles/use.desc
这里我给推荐使用的几个初始USE变量,不包含任何桌面环境(如果要使用桌面环境请查阅相关文档)
USE="-gnome -kde -qt4 -minimal gtk dvd alsa cdr dbus X udev session lock jpeg startup-notification thunar policykit udisks"
INPUT_DEVICES="evdev synaptics"
VIDEO_CARDS="nouveau" //N卡用户
VIDEO_CARDS="radeon" //Intel用户
CPU_FLAGS_X86="" //CPU指令集,为了帮助用户能正确使用标志,提供了一个Python脚本生成使用/proc内/cpuinfo正确的值。它可以在找到app-portage/cpuinfo2cpuflags
root# emerge --ask app-portage/cpuinfo2cpuflags
root# cpuinfo2cpuflags-x86 >> /etc/portage/make.conf

16.配置时区

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

root# ls /usr/share/zoneinfo
root# echo "Asia/Shanghai" > /etc/timezone
root# emerge --config sys-libs/timezone-data

17.配置地区

root# nano -w /etc/locale.gen
en_US ISO--
en_US.UTF- UTF-
zh_CN GBK
zh_CN GB18030
zh_CN.GB2312 GB2312
zh_CN.UTF- UTF-
root# locale-gen
root# eselect locale list
root# eselect locale set [number]
root# env-update && source /etc/profile && export PS1="(chroot) $PS1"

可选操作,配置Systemd代替OpenRC,这一步做了下面安装源代码就不用做了

  • 编辑/etc/fstab文件来使包含有第二个值为/boot/的那条的第一个值指向到正确的设备。
root# nano -w /etc/fstab
/dev/sda1 /boot ext4 defaults
  • 安装Systemd
root# ln -sf /proc/self/mounts /etc/mtab
root# emerge --ask --unmerge sys-kernel/genkernel //如果以前安装过kernel那么卸载之
root# emerge --ask sys-kernel/dracut
root# nano -w /etc/dracut/dracut.conf
# Dracut modules to add to the default
add_dracutmodules+="usrmount"
root# emerge --ask sys-kernel/gentoo-sources
root# emerge --ask sys-kernel/genkernel-next
/etc/genkernel.conf
UDEV="yes"
root# genkernel --install all
root# genkernel --udev --lvm --mdadm initramfs
当使用LVM时,lvmetad守护进程需要被同时启动。否则,systemd将无法挂载LVM卷。 lvmetad可以在/ etc/ LVM启用
root# nano -w /etc/lvm/lvm.conflvm.conf
# Set use_lvmetad to '' for systemd
use_lvmetad =
root# nano -w /etc/portage/profile/packages
# Remove OpenRC from the system profile when using systemd
-*sys-apps/openrc
root# root #emerge -avDN @world
root# emerge --deselect sys-fs/udev
配置使用systemd引导启动
当grub2-mkconfig 被使用时, 增加 init 这一行 GRUB_CMDLINE_LINUX:
/etc/default/grub GRUB2 systemd 配置示例
当使用 genkernel-next's 引导时, 使用real_init 来替换init.
# Append parameters to the linux kernel command line
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
手动配置GRUB2文件时(仅限有经验的用户), 添加init=参数到 linux 或 linux16命令行。
/boot/grub/grub.cfg GRUB2 配置示例片段
linux /vmlinuz-3.10. root=UUID=508868e4-54c6-4e6b-84b0-b3b28b1656b6 init=/usr/lib/systemd/systemd

18.1.安装源代码(手动编译安装)

root# emerge --ask sys-kernel/gentoo-sources
当手动配置内核时,了解(硬件)系统是至关重要的。大多数信息可以通过安装包含lspci命令的sys-apps/pciutils来收集:
root# emerge --ask sys-apps/pciutils
另一个系统信息来源是运行lsmod来查看安装CD使用什么内核模块,它可能对启用什么提供了一个好的暗示。
现在进入内核源码目录并执行make menuconfig。这将启动一个菜单驱动的配置屏幕。
root# cd /usr/src/linux
root# make menuconfig
root# make && make modules_install
root# make install

可选:生成一个initramfs

在某些情况中需要建立一个initramfs——一个基于内存的初始化文件系统。最觉的原因是当重要的文件系统位置(如/usr/或/var/)在分离的分区。通过一个initramfs,这些分区可以使用initramfs里面的工具来完成挂载。

如果没有initramfs的,存在着巨大的风险,系统将无法正常开机,因为这是负责安装的文件系统工具需要驻留在这些文件系统的信息。 initramfs中的一个将在必要的文件拉进它的内核启动之后使用的档案,但控制被移交前转移到初始化工具。在initramfs的脚本,然后将确保分 区正确地安装在系统继续启动之前。

要安装一个initramfs,首先安装sys-kernel/genkernel,然后用它生成一个initramfs:

root# emerge --ask sys-kernel/genkernel
root# emerge genkernel
root# genkernel --lvm --mdadm --install initramfs

18.2.安装源代码(自动方式-推荐新手用)

如果手动配置看起来太恐怖,建议使用genkernel。它将自动配置并编译内核。

genkernel配置内核的工作原理几乎和安装CD配置的内核完全一致。也就是说当使用genkernel建立内核,系统通常将在引导时检测全部硬件,就像安装CD所做的。因为genkernel不需要任何手动内核配置,它对于那些不能轻松的编译他们自动内核的用户来说是一个理想的解决方案。

现在,我们来看看如何使用genkernel。

root# emerge --ask sys-kernel/gentoo-sources
root# emerge --ask sys-kernel/genkernel
接下来,编辑/etc/fstab文件来使包含有第二个值为/boot/的那条的第一个值指向到正确的设备。
root# nano -w /etc/fstab
/dev/sda1 /boot ext4 defaults
现在,运行genkernel all来编译内核源码。值得注意的是,使用genkernel编译一个内核将支持几乎全部的硬件,这将使编译过程需要一阵子来完成!
root# genkernel all

19.可选操作,配置模块,安装固件

在/etc/conf.d/modules中列出需要自动加载的模块。如果有必要,附加选项也可以添加到模块中。

要查看所有可用模块,运行下面的find命令。不要忘记替换“”为刚刚编译的内核版本:

root# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
比如,要自动加载3c59x.ko模块(3Com网卡家族的特定驱动),编辑/etc/conf.d/modules文件并在里面输入模块名字。
root# nano -w /etc/conf.d/modules
modules="3c59x"
一些驱动需要先在系统上安装附加的固件才能工作。这经常用于网络接口,特别是无线网络接口。非常多的固件都打包在sys-kernel/linux-firmware里:
root# emerge --ask sys-kernel/linux-firmware

20.配置fatab

root# nano -w /etc/fstab
/dev/sda1 /boot ext4 defaults
/dev/sda2 / ext4 defaults
/dev/sda3 none swap sw
/dev/cdrom /mnt/cdrom auto noauto,user

21.配置主机名

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

22.配置hosts文件

root# nano -w /etc/hosts

23.配置网络

root# emerge --ask --noreplace net-misc/netifrc
root# nano -w /etc/conf.d/net
#如果你要配置静态ip
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
#否则如果需要动态ip
config_eth0="dhcp"

24.配置网卡开机自动启动

root# cd /etc/init.d
root# ln -s net.lo net.eth0
root# rc-update add net.eth0 default
#对于笔记本你的网卡可能是enp0s3之类的,那么就需要改成如下命令
root# ln -s net.lo net.enp0s3
root# rc-update add net.enp0s3 default

25.安装dhcp客户端

root# emerge --ask net-misc/dhcpcd

26.修改密码

root# passwd

27.编辑UTC时间,修改为使用本地时间

root# nano -w /etc/conf.d/hwclock

28.安装日志管理软件

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

29.安装crontab任务计划软件

root# emerge --ask sys-process/cronie
root# rc-update add cronie default
root# crontab /etc/crontab

30.配置开机启动sshd

root# rc-update add sshd default

31.安装Grub2

root# emerge --ask sys-boot/grub:
root# grub2-install /dev/sda
root# grub2-mkconfig -o /boot/grub/grub.cfg

32.重启系统

root# exit
root# cd ~
root# umount -l /mnt/gentoo/dev{/shm,/pts,}
root# umount /mnt/gentoo{/boot,/sys,/proc,}
root# reboot

33.创建日常管理用户

root# useradd -m -G users,wheel,audio -s /bin/bash [username]
root# passwd [username]

34.清理tar包

root# rm /stage3-*.tar.bz2*

到这里安装就结束了!!

 

可选操作:安装Xorg-x11图形化服务器

首先确保你的/etc/portage/make.conf USE中包含X标记

USE="-gnome -kde -qt4 -minimal gtk dvd alsa cdr dbus X udev session lock jpeg startup-notification thunar policykit udisks"
然后安装所需软件
root# emerge --ask x11-base/xorg-x11
root# env-update && source /etc/profile
其他配置请参考gentoo-Xorg官方文档
 

可选操作:安装Xfce4桌面环境

首先,确定你已经安装Xorg 如果没有的话那么本指南下面的步骤可能无法正常工作。
接着,请反复检查 /etc/portage/make.conf 文件里的 USE 标记;多数用户需要设置下面的 USE flags:

USE="-gnome -kde -minimal -qt4 dbus jpeg lock session startup-notification thunar udev X"
接下来进行安装
root# emerge --ask xfce-base/xfce4-meta
如果需要,把系统上的一般用户(们)加到cdrom,cdrw 和 usb 组里,这样他/她们便能挂载和使用照相机、光驱和U盘等之类的设备。
root# for x in cdrom cdrw usb ; do gpasswd -a username $x ; done
更新系统环境变量
root# env-update && source /etc/profile
安装额外软件
root# emerge --ask x11-terms/xfce4-terminal
配置启动xfce
root# echo "exec startxfce4" > ~/.xinitrc
root# startx
其他配置请参考gentoo-Xfce官方文档
 
 
 
 
 

Gentoo(贱兔)Linux安装笔记的更多相关文章

  1. gentoo(贱兔) Linux作业系统的基本使用

    emerge是gentoo linux的portage包管理器的命令行工具emerge的基础使用:emerge 软件包名:安装某软件包 emerge nanoemerge --ask 软件包名:交互式 ...

  2. Open Dynamics Engine for Linux 安装笔记

    下载 在Bitbucket上可以下载到最新的版本(截止目前为0.14版) 或者直接用wget下载 wget "https://bitbucket.org/odedevs/ode/downlo ...

  3. 开始使用gentoo linux——gentoo安装笔记(上)

    gentoo linux安装笔记(上) 家里有一台破旧的富士通笔记本,08年至今质量依然杠杠的,但是性能已经不能和现代超极本同日而语,装上了ubuntu更是不敢恭维,别提gnome和kde的linux ...

  4. 开始使用gentoo linux——gentoo安装笔记(下)

    gentoo安装笔记(下) 上一章,已经对操作系统安装做了充分准备,并且已经从livecd(u盘系统)切换进入了gentoo安装环境中. 不过现在才是真正的开始!打起精神!这可不是在装ubuntu! ...

  5. Linux:Gentoo系统的安装笔记(三)

    这期笔记将是gentoo安装的最后一期了,虽然已经配置内核了,但是也要完成剩下的安装步骤,这离安装完成已经不远了,继续加油!!! 如果中断了安装,请看第二期的笔记进行恢复安装,但请重新编译一次内核,否 ...

  6. Linux:Gentoo系统的安装笔记(一)

    这次我选择安装Gentoo,用来做我学习的笔记.这次我是使用虚拟机安装Gentoo,一是方便操作,二是可以看着手册,一边看一边操作,严格按照手册上的步骤执行,一般是不会出现问题的. 查看手册最好学会看 ...

  7. gentoo在KVM+QEMU中安装笔记

    gentoo是比较难安装的,本笔记主要是记录本次安装过程,以备参考. 1.首先,下载镜像,可以去国内各大镜像网站下载,我选择的是清华的镜像源:https://mirrors.tuna.tsinghua ...

  8. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始

    我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...

  9. [linux笔记]理清linux安装程序用到的(configure, make, make install)

    我作为一名经常和linux打交道的程序员,每次在linux安装软件都祈求可以用——apt-get,yum,brew等应用程序管理器安装,有的时候事与愿违,你只能自己编译安装-wtf,说好的美丽世界呢? ...

随机推荐

  1. Spark算子--SortByKey

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/076a31e7caab1316b07990c02ac65e9c.html  SortByKey--Transf ...

  2. sql for xml 输出结果带单引号出现转成&apos的解决方案

    select '''' + ID +''',' from  表 for xml path('') 此SQL语句,输出结果如‘1’,’2‘,’3‘, 但是在因xml会出现path转译的问题将‘转成&am ...

  3. LNMP环境的搭建

    http://blog.csdn.net/wzy_1988/article/details/8438355#

  4. Linux apache的运行用户和用户组

    我们在安装apache后,有时在上传文件的时候,提示没有权限或者是不可写,我们都会去查文件夹的权限. 通过ls -l /var/www/html/website可以很直观的看出我们文件和文件夹的权限, ...

  5. PHP正则式PCRE

    PHP正则式PCRE的总结差不多就下边这些了.参考 PCRE与perl的差异 .   锚(^.$.\A.\Z/\z):^.$在多行模式下是非紧固的,在单行模式下是紧固的:而\A.\Z / \z在任何模 ...

  6. jstl 的判断使用

    JSTL  是JSP的标准标记库 1.必须引入的头部标签 <%@ taglib uri="http://java.sun.com/jstl/core_rt"prefix=&q ...

  7. CCF系列之相反数(201403-1)

    试题名称: 相反数 试题编号: 201403-1时间限制: 1.0s 内存限制: 256.0MB 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对 ...

  8. Java读写Excel之POI超入门(转)

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.Apache POI ...

  9. phthon网络编程

    软件开发架构 既然谈起网络编程,就得说说软件开发的架构: c/s架构 C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入.输出设备,而是具有了一定的数据处理和数 ...

  10. idea 远程调试 tomcat web应用

    最近在做的一个东西,测试环境和本地环境差距太大,本地能运行的代码,放到测试环境上到处报错,哪里哪里都连不上,所以决定把代码部署到远程服务器上调试,节省时间. 网上看了很多教程,大部分都是互相抄来抄去, ...