用Linux很长时间了,平时用的最多的就是Red Hat,平时也装过其他版本的Debian、Fedora,Ubuntu也使用过一阵子,但是基本安装过程都是很无脑的,gentoo基于自由的软件构建,可以轻松查看和修改源码,安装过程相对复杂,


安装包下载:

ISO: http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/install-amd64-minimal-20131010.iso

stage3: http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/stage3-amd64-20131010.tar.bz2

portage: http://mirrors.163.com/gentoo/releases/snapshots/current/portage-latest.tar.bz2


ISO最小引导镜像、stage3是提供基本的gentoo环境,portage是gentoo软件包信息的一个快照


开始安装


利用VMware软件安装,引导光盘install-amd64-minimal-20131010.iso,启动gentoo内核

#gentoo dopcmcia

修改root密码

#passwd

启动SSH服务

#/etc/init.d/sshd start

手动配置网络,也可以自动网络配置执行net-setup eth0脚本,由于这里利用的是虚拟机网络直接好的。下一步测试网络

#ping -c 3 www.gentoo.org

然后磁盘分区

fdisk /dev/sda 创建启动分区:n新建分区,按p主分区键入1,然后输入+32M,创建一个32M大小的分区,并设置它的启动标记a,输入1,然后p显示boot那列有个*;创建交换分区:n新建分区,按p主分区键入2,输入+512M,创建一个512M的交换分区,然后按t,输入2,再输入82把分区类型设置成“Linux Swap”;创建根分区:n新建分区,按p主分区键入2,然后按回车,创建剩余空间为根分区;w保存退出。

应用文件系统

#mkfs.ext4 /dev/sda1

#mkfs.ext4 /dev/sda3

#mkswap /dev/sda2

激活交换分区

#swapon /dev/sda2

挂在分区

#mount /dev/sda3 /mnt/gentoo

#mkdir /mnt/gentoo/boot

#mount /dev/sda1 /mnt/gentoo/boot

设定时间可以使用date MMDDhhmmYYYY命令(MM月DD日hh小时mm分钟YYYY年)

接下来要把stage3 tarball安装到系统,可以从网上下载,运行uname -m查看cpu是32位还是64位,我是先下载到win8的,然后使用winscp拷贝到/mnt/gentoo,但是当时一直报错,然后就利用wget直接下载到/mnt/gentoo的,后来才发现原来目录不对/mnt/gentoo/boot目录太小了,所以一直报错,囧~~~~

解压stage

#tar jxf stage3-amd64-20131010.tar.bz2

现在stage已经好了,/mnt/gentoo目录下多了linux根下的常用目录

安装Portage

安装portage的快照,它包含

进入/mnt/gentoo目录下,下载portage的一堆文件告诉portage那些软件可以安装,有哪些profile可用等等。

#wget http://mirrors.163.com/gentoo/releases/snapshots/current/portage-latest.tar.bz2

解压快照到/usr目录下

#tar jxf portage-latest.tar.bz2 -C /mnt/gentoo/usr


配置编译选项

打开/mnt/gentoo/etc/make.conf,所有可能的变量都可以参考/mnt/gentoo/usr/share/portage/config/make.conf.example里

CFLAGS="-march=native -02 -pipe" #-march定义服务器cpu架构,-02表示控制优化等级,-02常用于服务器,-03常用于桌面版

CXXGLAGS="${CFLAGS}"

MAKEOPTS="-j2" #定义安装软件时候同时可以产生并行编译的数目,通常是cpu数目加1

CHOST="x86_64-pc-linux-gnu"

ACCEPT_KEYWORDS="~amd64"

LINGUAS="zh_CN"

保存并退出。

选择镜像站点,使用mirrorselect跟新GENTOO_MIRRORS变量

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

使用mirrorselect选择rsync镜像站点

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

拷贝DNS信息

#cp -L /etc/resolv.conf /mnt/gentoo/etc/ #-L是必须的,用来确保拷贝的不是一个符号链接

挂载/proc和/dev/文件系统

#cd

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

#mount -o bind /dev/mnt/gentoo/dev

进入新的系统环境,用chroot把根文件系统切换到/mnt/gentoo

#chroot /mnt/gentoo /bin/bash

#env-update #建立新的环境,也就是创建新的环境变量,使用source加载这些变量

#source /etc/profile

#export PS1="(chroot) $PS1" #官方安装手册上有,这步可选的,只是更改PS1变量

4、配置Portage

更新Portage tree

#emerge --sync #可以添加--quiet选项来加速这个过程

配置USE变量

查看可用的USE标记

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

修改/etc/make.conf

USE=""

5、配置内核

设置时区信息

#ls /usr/share/zoneinfo #所有时区

#cp /usr/share/zoneinfo/GMT /etc/localtime

安装内核源码

#emerge gentoo-sources

查看内核源码符号链接

#ls -l /usr/src/linux

默认:手动配置内核

进入内核目录并执行make menuconfig,启动一个基于ncureses的配置菜单。也可以在非chroot环境执行lspci,也可以运行lsmod查看光盘使用了那些内核模块。

#cd /usr/src/linux

#make menuconfig

将会看到一些图形化的配置条目,选择处理器类型和特性

Processor type and features --->

Processor family (AMD-opteron/Athlon64) --->

()opteron/Athlon64/Hammer/K8

()Inter P4/older Netburst based Xeon

()Core 2/newer Xeon

(*)Generic-x86-64 #我是inter i5-2410M的推测可以选上边的,其实俩差不多

Executable file formats / Emulations --->

[*]IA32 a.out.support #解决64位系统运行32位程序

选择需要的文件系统ext4,pppoe驱动,多核cpu开启SMP支持,启用USB接口的输入设备支持,现在内核配置成功了开始编译和安装

#make

#make modules_install

内核编译完后,复制内核镜像到/boot,启动时系统引导GRUB会用到

#cp arch/x86_64/boot/bzImage /boot/kernel-3.12.0-gentoo

备选:使用genkernel

#emerge genkernel

复制光盘安装的内核配置文件到genkernel搜索配置文件的默认位置

#zcat /proc/config.gz >/usr/share/genkernel/arch/x86_64/kernel-config

现在可以执行genkernel all编译内核,genkernel编译的内核支持几乎所有硬件,编译需要很长时间,如果启动分区没使用ext2或ext3的话,必须genkernel -menuconfig all手动配置然后自动编译很久

查看内核和initrd的名字

#ls /boot/

内核模块的配置:

先查看所有可用的模块

#find /lib/modules/kernel-3.12.0-gentoo/ -type f -iname '*.o' -or -iname '*.ko' |less

如果要全部加在模块,编辑kernel-3.12.0文件写入模块名字

#find /lib/modules/kernel-3.12.0-gentoo/ -type f -iname '*.o' -or -iname '*.ko'|awk -F/ '{pring$NF}'|awk -F. '{print$1}' > /etc/modules.autoload.d/kernel-3.12.0

配置文件系统信息

创建/etc/fstab,修改为

/dev/sda1 /boot ext4 defaults,noatime 1 2

/dev/sad3 / ext4 noatime 0 1

/dev/sda2 none swap sw 0 0

配置网络信息

#echo 'HOSTNAME="gentoo"; >> /etc/conf.d/hostname #设定主机

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

config_eth0=("192.168.1.2 netmask 255.255.255.0 brd 192.168.1.255")

routes_eth0=("default via 192.168.1.1")

如果是DHCP则为

config_eth0=("dhcp")

创建启动脚本

#cd /etc/init.d

#ln -s net.lo net.eth1

#rc-update add net.eth0 default #添加net.eth0到默认的运行级别

修改/etc/hosts

#passwd #设置root密码,我当时忘了,然后login的时候进不去,然后进入grub2的高级选项的恢复模式,也就是单用户模式发现也得要root密码,后来挂在livecd镜像chroot来更改了root密码

然后修改系统信息/etc/rc.conf、/etc/conf.d/keymap(键盘设置),/etc/conf.d/clock


安装必要的系统工具

系统日志工具

这当中有sysklogd(传统的系统日志守护进程),syslog-ng(一个高级系统日志工具),metalog(一个可以灵活配置的系统日志工具),如果你打算使用sysklogd或者syslog-ng你很可能会随后希望安装logrotate,因为这些系统日志工具并没有提供系统日志文件的滚动功能。

#emerge syslog-ng

#rc-update add syslog-ng default

可选的:Cron守护进程、文件索引slocate

文件系统工具:ext2、ext3、ext4都得安装e2fsprogs

#emerge e2fsprogs

#rc-update add e2fsprogs default


配置主引导grub (这里用的是grub2)

#emerge grub

#grub-install --no-floppy /dev/sda

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

重启系统

#exit

#cd

#umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo

#reboot

Gentoo安装已经完成了,通过这次学习熟悉了linux内核编译、内核模块、grub2、gentoo。还有就是grub2比grub简单了进入单用户可以直接高级选项选恢复模式(recovery mode),但是gentoo的单用户还得要root密码,不能靠单用户来修改密码,所以只能用LiveCD,挂在磁盘,chroot过去修改root密码。