用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密码。