Chinaunix首页 | 论坛 | 博客
  • 博客访问: 360871
  • 博文数量: 86
  • 博客积分: 1460
  • 博客等级: 上尉
  • 技术积分: 848
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-12 14:07
文章分类

全部博文(86)

文章存档

2017年(36)

2016年(17)

2015年(1)

2013年(12)

2012年(2)

2011年(1)

2010年(1)

2009年(16)

我的朋友

分类: LINUX

2009-08-13 11:02:32

3 自定义安装过程

CentOS的安装主要是由anaconda来实现的,它通过kickstart配置文件来控制整个安装进程,以到达无人值守安装的效果。

kickstart文件具体配置可以参看:





进行配置前,需要创建目标ks文件

#cd /disk

#vi ks.cfg



ks文件主要分为三个部分

1、系统安装及配置

2、自定义安装准备(%post --nochroot)

3、用户自定义安装(%post)


3.1 系统安装及配置

kickstart文件首先进行系统的设置,比如机器语言、时区、键盘等参数的设置,然后检查安装所需RPM是否都完整,然后根据分区信息进行格式化。

这部分配置信息写在ks文件的最前面,以“%post --nochroot”为结束,典型的配置信息如下:

#System  language

#系统语言 简体中文

lang zh_CN

#Language modules to install

#要安装的语言模块以及默认语言

langsupport zh_CN --default=zh_CN

#System keyboard

#系统键盘类型

keyboard us

#System mouse

mouse

#Sytem timezone

#系统时区

timezone Asia/Shanghai

#Root password

#管理密码,值为已加密字符串

rootpw --iscrypted $1$MGv8U4W0$BS7JLb3MZT70Z30mutWwO1

#Reboot after installation

#安装完成后是否自动重起

reboot

#Use text mode install

#使用文本安装界面

text

#Install OS instead of upgrade

install

#Use CDROM installation media

#使用光盘作为安装媒体

cdrom

#System bootloader configuration

bootloader --location=mbr

#Clear the Master Boot Record

zerombr yes

#Partition clearing information

#清除原有分区信息

clearpart --all --initlabel

#Disk partitioning information

#建立一个200-500M的引导区,一个300-500M的交换区,剩余磁盘空间划分给根路径/

part /boot --fstype ext3 --size 200 --grow --maxsize 500

part swap --size 300 --grow --maxsize 500

part / --fstype ext3 --size 1 --grow

#System authorization information

#设置系统验证方式

auth  --useshadow  --enablemd5

#Network information

#使用dhcp获取ip

network --bootproto=dhcp --device=eth0

#Firewall configuration

#关闭防火墙

firewall --disabled

selinux --disabled

#Do not configure XWindows

#不设置xwindows

skipx

#Package install information

%packages –resolvedeps

#以下全部是系统需要安装的rpm包,我们假设此时已经知道所有需要的包,并且全部放在/CentOS路径下

kernel

#autoconf

#e2fsprogs

#fonts-chinese

#...



请注意必须保证要安装的RPM包以及被依赖的RPM都存放在/CentOS目录下,在ks配置文件里只需要写要安装的RPM包名即可,anaconda会解析依赖关系并自动安装关联的包,如果没有需要的包,则会报错并终止安装。


3.2 自定义安装准备

自定义安装准备部分以“%post --nochroot”作为开始,以“%post”作为结束。该部分脚本使用bash语法,通常在这一段脚本中将用户自己的安装包从安装光盘复制到已经安装好的系统上。

这一阶段的脚本编写需要注意两个问题

1、此时要访问磁盘路径,则要在目标路径前增加“/mnt/sysimage”,例如要将某个文件复制硬盘的/var/log,则脚本应为#cp somefile /mnt/sysimage/var/log。

2、如果要从光盘复制文件到硬盘,需要先将光驱mount到系统,但是根据主板不同,此时的光盘设备名不一定是/dev/cdrom,所以可能需要根据自己的情况创建一个link,以便进行mount,如:

#mkdir /mnt/cdrom/

光驱为usb外接光驱,建立链接

#ln -s /dev/scd0 /dev/cdrom

mount设备为只读

#mount /dev/cdrom /mnt/cdrom/ -o ro


3.3 自定义安装

自定义安装部分以“%post”作为开始,在前一部分将自定义安装包复制到硬盘之后,就可以在这里使用bash脚本进行软件的安装控制了。唯一需要注意的是,此时访问磁盘路径已经不需要添加“/mnt/sysimage”,直接访问即可,如

#cp somefile /var/log



此外,因为此时还没有设置用户的环境路径,所以调用系统命令时最好尽量带上完整地路径名,如:

/usr/sbin/groupadd xxxx

/usr/sbin/adduser xxxx -g xxxx
4 生成安装盘

现在我们已经完成了自定义安装光盘的全部调整,就可以制作光盘镜像了。生成安装盘ISO镜像,需要先在系统安装好createrepo和mkisofs两个软件包。



首先,必须同步光盘中RPM包的查询信息,否则安装过程中会提示找不到RPM包

# createrepo -g /disk/repodata/comps.xml /disk/

comps.xml是CentOS自带的RPM所属功能组以及依赖关系的信息,createrepo需要根据该文件来同步信息,最好不要手动修改该文件。



同步成功之后,就可以进行iso的创建了,我们假定光盘标签为sample,输出iso文件名为/sample.iso

#cd /disk

#mkisofs -o /sample.iso -A ‘sample’ -V ‘sample’ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -allow-leading-dots -allow-multidot -udf -R -r -T -boot-info-table -J /disk/



该命令执行成功之后就会在生成sample.iso的镜像,刻录到光盘上就可以作为自制CentOS安装盘使用了。
5 裁减RPM包

CentOS 5.1完整版本容量接近4G,其中大部分功能包都不是必要的,完整安装不仅耗费磁盘空间,增加安装时间,还会因为运行无用服务影响系统性能,所以必须要对RPM包裁减。

RPM裁减,即是选出需要的包,去掉其他无用包。但是Linux下安装RPM时,常常还需要依赖其他包,否则安装会失败,而被依赖的RPM包也常常需要依赖其他包,经常导致多层依赖,手动检查起来非常麻烦。还好CentOS提供了RPM包安装工具yum,我们可以通过这个工具自动获取所有的关联包。
 
 
[root@centos ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp --hostname centos
rootpw --iscrypted $1$cCKN9aAr$hmuUWvGux0dPBWe82ncNr0
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --md5pass=$1$ZX86sy7/$ZK88h01B7rHdXNDHHu8Jr/
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux
#part / --fstype ext3 --start=132 --end=2088 --ondisk=sda
#part swap --size=1024 --start=1 --ondisk=sda
%packages
@development-libs
@core
@base
@legacy-software-development
@java
@java-development
@legacy-software-support
@development-tools
device-mapper-multipath
imake
-sysreport

阅读(3191) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~