我们安装Linux系统,需要用到系统安装光盘,它会显示一个交互的界面,让我们进行设置,等设置完成后实现自动安装。这个过程是怎么实现的?我们可不可以自定义一个光盘,来实现自动安装,不进行交互呢?答案是肯定的
Redhat Linux系统的安装有两个阶段:
1,ananconda
它是一个开源的软件,是linux安装前的配置程序,它依赖于光盘中的isolinux目录中的小linux系统来启动。当我们插入系统安装光盘后,出现的那个交互的让用户来选择系统设置,选择要安装软件包等,都是通过这个程序来实现的,可见isolinux这个目录是非常重要的。
2,installation
这一步是真正的安装,根据我们的选择,实现系统安装。
ananconda有两种模式:
1,图形或命令行模式进行交换的配置
2,把系统配置写到一个文件中,用ks指定,ananconda会自动读取
而我们怎么实现自动配置呢?
我们可以自己定义一个配置文件,自定义我们要安装的软件包,自定义系统的设置,让ananconda来读取,这样就不用实现交互了。
那么什么是ks文件呢?
ks即kickstart,它主要用于系统的自动安装。ananconda会读取它指向的配置好的文件,实现自动安装。
kickstart文件主要有三部分:
1,命令段
主要是配置操作系统,例如时区,键盘类型,网络的配置等。
2,软件包段
在安装的过程中,默认要安装的软件包
package_name 指定要安装的单个软件包
@groupname 指定要安装的包组
-package_name 安装包组的时候可以不安装此软件包
3,脚本段
这个是可选的
%pre 指定预安装脚本,系统安装前要运行的脚本,并且脚本中用到的命令,isolinux目录中的小linux系统必须支持
%post 指定后安装脚本,系统安装后要运行的脚本,这些脚本中可以执行很多命令了
一,我们来写一个kickstart文件,这个文件的后缀必须为.cfg
mkdir /myboot
cd /myboot
vi jia.cfg
install
安装方式为安装,而不是升级系统
test
表示安装界面为文本
cdrom
指定系统安装文件的位置,光盘
key --skip
跳过输入序列号
lang en_US
系统安装后默认要使用的语言
keyboard us
指定键盘类型
xconfig --startxonboot --resolution 1024x768 --depth 16
系统安装后,系统启动后启用图形界面,指定分辨率和色深
network --device eth0 --bootproto static --ip=172.16.100.8 --netmask=255.255.0.0 --gateway=172.16.0.1 --nameserver=192.168.0.254
配置系统安装后的网络,配置静态ip,地址,掩码,网关,DNS,系统安装成
rootpw redhat
设定root的密码是redhat
firewall --disabled
默认关闭防火墙
authconfig --useshadow --enablemd5
使用shadow文件存放用户密码,并且用md5加密密码存放
selinux --disabled
不启用selinux
timezone --utc Asia/Shanghai
设定时区
zerombr yes
清空mbr重新安装
bootloader --location=mbr --driveorder=sda
把bootloader安装在mbr中
clearpart --all --initlabel
删除磁盘所有分区,如果磁盘没有初始化,直接初始化
part /boot --fstype ext3 --size=100
创建一个100M的分区,挂载到/boot目录,文件系统为ext3
part pv.01 --size=40960
创建物理卷
volgroup vol0 --pesize=8192 pv.01
在pv.01物理卷中创建卷组
logvol swap --fstype swap --name=swap --vgname=vol0 --size=1024
在vol0上创建逻辑卷,并为其创建swap文件系统,逻辑卷名称为swap
logvol /home --fstype ext3 --name=home --vgname=vol0 --size=2048
在vol0上创建逻辑卷,创建ext3文件系统,逻辑卷名称为home,挂载至/home
logvol / --fstype ext3 --name=root --vgname=vol0 --size=29984
在vol0上创建逻辑卷,创建ext3文件系统,逻辑卷名称为root,挂载至/
reboot
安装完成后自动重启系统
%packages
下面定义的是要系统安装的软件包组和单个软件包,这个可以根据我们的需要,实现自定义的安装
@GNOME Desktop Environment
@X Window System
@Printing Support
@Development Tools
elinks
openssh
openssh-server
openssh-clients
vim-enhanced
samba-common
samba-client
gimp
gimp-data-extras
enscript
libcap
ntp
coreutils
elfutils
elfutils-libelf
gimp-print-plugin
gnome-icon-theme
gstreamer
gstreamer-tools
libgnomeprint22
libgnomeprintui22
libgsf
libIDL
libraw1394
nautilus-cd-burner
openmotif
pyorbit
startup-notification
ttmkfdir
firefox
mutt
screen
%post
下面定义的是系统安装之后所要执行的命令
id fedora &> /dev/null || useradd fedora
echo fedora | passwd --stdin fedora
sed -i 's@^id:5:@id:3:@' /etc/inittab
这个jia.cfg文件写好了,这样是不是很麻烦呀,呵呵!
我们也可以用一个图形化的工具,来创建kickstart文件:
mount /dev/cdrom /media
cd /media/Server
rpm -ivh system-config-kickstart--2.6.19.8-2.el5.noarch.rpm
要安装这个软件包后,才能使用这个工具,不同系统软件包的版本不同
有于我们Linux系统安装之后,会有一个文件存放我们的安装时的配置,这个文件就是/root/anaconda-ks.cfg,我们可以以这个文件为模板进行修改
system-config-kickstart
然后导入这个文件,进行修改,最后保存退出即可
二,插入光盘,我们把光盘目录中的isolinux目录复制到我们的/myboot目录
mount /dev/cdrom /media
cd /myboot
cp -pr /media/isolinux ./
cd isolinux
vi isolinux.cfg
把第一行“default”改为:
default linux ks=cdrom:/jia.cfg
表示默认情况下,这个小linux读取光盘中的ks文件
把第三行“timeout 600”改为:
timeout 5
即那个等待用户输入的界面等待5秒之后,会执行默认选项,即ananconda会依据上面定义的ks文件jia.cfg进行配置
三,做光盘
cd /
mkisofs -o boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T myboot/
会生成一个boot.iso文件,在/下,这就是我们制作的自动引导光盘
到这里我们自定义的配置光盘已经做好了,可以把boot.iso文件做成光盘,然后导入光驱运行,运行一段时间会出现一个界面"The redhat enterprise linux server is not found...",其实这时候ananconda已经从jia.cfg中读取了系统的配置信息,我们再把光盘换成redhat的安装光盘即可实现根据我们jia.cfg文件中的定义实现自动安装
注意:由于我们在jia.cfg文件中定义了多个分区,所有你的磁盘大小要比我们建立的分区的容量之和大,即要大于45G(如果不想要这么大的分区,在jia.cfg文件中更改一下即可)
本文转自 leejia1989 51CTO博客,原文链接:http://blog.51cto.com/leejia/798433,如需转载请自行联系原作者