Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1329111
  • 博文数量: 464
  • 博客积分: 9399
  • 博客等级: 中将
  • 技术积分: 6364
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-19 09:15
文章分类

全部博文(464)

文章存档

2014年(12)

2013年(123)

2012年(173)

2011年(156)

我的朋友

分类:

2012-11-09 10:57:53

一. 介绍:

网上有很多关于kickstart+pxe+dhcp+vsftp/http实现centos/rhel全自动部署的文章,因此关于原理性的东西我这里就不写了,只说说我的理解和配置过程中遇到的错误以及解决办法。

clip_image002

首先简单介绍下kickstart全自动部署的实现流程:

第一步:加电,并选择从网卡启动。

第二步:主机从dhcp server获取ip地址,并得到tftp服务器的ip地址和pxe名。(由dhcp.conf中的filename "/pxelinux.0";和next-server 192.168.168.1;两项指定。)

第三步:主机从tftp服务器下载pxelinux相关文件,并启动到安装方式选择界面,也就是“boot:”提示的地方。

第四步:最后主机从vsftp server下载到自动应答安装提问的ks.cfg文件以及RHEL或centos的源目录树。

我是在win7+vmware6.5+centos5.3(final)的环境下完成的实验:

1台装好的centos5.3模拟右边的服务器,一台新创建的虚拟机(刚分配了虚拟的硬件)模拟左边的待安装主机,两者通过vmnet4虚拟网络连接,模拟直连或通过网络连接的服务器和客户端。

必要的条件:

Dhcp server、tftp server、vsftp server以及由KickStart所生成的ks.cfg配置文件,最后当然是带有一个 PXE 支持网卡的将安装的主机。

二. 安装

下面就根据以上图示进行相应服务器的安装(上述3个服务其实都装在一台centos5.3的虚拟机中)

1.安装DHCP服务:

[root@lfs ~]# yum install dhcp –y

#因为yum会自动检查系统中是否已经安装了dhcp server,如果已安装,则会比较版本,如果有更新的版本,则会升级安装。

2、生成主配置文件/etc/dhcpd.conf:
ddns-update-style interim;

ignore client-updates;

#add for pxe

filename "/pxelinux.0";

next-server 192.168.168.1;

subnet 192.168.168.0 netmask 255.255.255.0 {

# --- default gateway

option routers 192.168.168.1;

option subnet-mask 255.255.255.0;

option domain-name-servers 192.168.60.254;

option time-offset -18000

range dynamic-bootp 192.168.168.128 192.168.168.254;

default-lease-time 21600;

max-lease-time 43200;

#配置文件每行末尾都应加上分号(;),否则语法错误,dhcp server无法启动。

#启动DHCP服务:
[root@lfs ~]# /etc/init.d/dhcpd start

2. 安装Vsftp服务:
[root@lfs ~]# yum install vsftpd -y
[root@lfs ~]# /etc/init.d/vsftpd start
-----------------------------------------------
3. 安装tftp服务,并复制PXE启动时所需要的文件:

[root@lfs ~]# yum install tftp-server -y
[root@lfs ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
[root@lfs ~]# mkdir /tftpboot/pxelinux.cfg

[root@lfs~]#cp /cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@lfs ~]# cp /cdrom/images/pxeboot/initrd.img /tftpboot/
[root@lfs ~]# cp /cdrom/images/pxeboot/vmlinuz /tftpboot/

#修改tftp的配置文件,并启动tftp服务:

[root@lfs ~]#vim /etc/xinetd.d/tftp

#我这里只是简单的把”disable =yes”改成了”disable =no”

#然后启动xinetd服务,因为tftp服务是由xinetd统一管理的

[root@lfs ~]#/etc/init.d/xinetd start
#修改/tftpboot/pxelinux.cfg/default文件
[root@lfs ~]# vim /tftpboot/pxelinux.cfg/default

default ks

timeout 6

label ks

kernel vmlinuz

append ks initrd=initrd.img ks=ftp://192.168.168.1/ks.cfg

#这里我只把修改过的行粘贴了出来。这里要注意,default标签后面跟的名称一定和label标签后的名称一样,安装程序才能自动跳转,第一次改的时候,我没有注意到,结果到了boot:提示符就停住了,不过可以进行交互式的安装,呵呵。

#另外,当以后系统出现故障时,也可以直接从pxe引导,到了boot:提示符,输入linux rescue就可以直接从网络上进入救援模式进行系统修复了。

clip_image004

 

.生成ks.cfg安装配置文件:
#由于我的linux没有安装x或gnome环境,所以我是参考着rhel5和centos5的手册,直接来修改的anaconda-ks.cfg文件。

[root@lfs ~]#cp anaconda-ks.cfg{,.bak}

#修改完后将文件拷贝到vsftp的根目录

[root@lfs ~]# cp ks.cfg /var/ftp/

#以下是我的ks.cfg文件的内容:

########install linux in real text method#########

cmdline

install

lang en_US

keyboard us

network --bootproto=dhcp --device=eth0 --onboot=on --hostname=cent_pxe1

######use the ftp method to install the linux###########

url --url=ftp://192.168.168.1/pub

rootpw --iscrypted **********************

authconfig --enableshadow --enablemd5

firewall --disabled

firstboot --disable

selinux --disabled

timezone --utc Asia/Shanghai

##########just use when install rhel###########

#key –skip

####part the disk######

bootloader --location=mbr --driveorder=sda,hda

clearpart --all --initlabel

part /boot --fstype=ext3 --size=200 --asprimary

part swap --fstype=swap --recommended

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

reboot

####install packages#########

%packages

@development-libs

@editors

@text-internet

@core

@base

@admin-tools

@development-tools

kexec-tools

device-mapper-multipath

imake

%post

sed -i -e 's/#\(set bell-style\).*/\1 none/' /etc/inputrc

#########configure the dns file####################

sed -i -e '1i\nameserver 202.181.202.140\nnameserver 8.8.8.8' -i -e '1,$d' /etc/resolv.conf

########make the resolv.conf unchangeable###########

chattr +i /etc/resolv.conf

##############update the time#############

echo -n "*/15 * * * * /usr/sbin/update 210.72.145.44 > /dev/null 2>&1" >> /var/spool/cron/root

cp /usr/share/vim/vim70/vimrc_example.vim /root/.vimrc

#########configure the vim editor##############

sed -i -e '/set mouse/s/^/" /' /root/.vimrc

sed -i -e '/set mouse/a\set vb\n' /root/.vimrc

sed -i -e "/alias mv/a\alias vi='vim'" /root/.bashrc

#######kill the useless services############

for sers in `ls /etc/rc3.d/S* | cut -c 15-`

do

echo $sers

case $sers in

crond | irqbalance | microcode_ctl | network | random | sendmail | sshd | syslog | local | xinetd )

echo "Skip these services!"

;;

*)

echo "change $sers to off"

chkconfig --level 235 $sers off

service $sers stop

;;

esac

done

#一些比较重要的选项的解释:

##之所以用cmdline代替text,是因为cmdline模式可以将安装过程中的步骤完全显示在输出中。

##Install表示是全新安装,而不是update

## url --url=ftp://192.168.168.1/pub指定系统源目录树(我这里使用的ftp方式)。如果是http方式,则应该是url=http://*****

## network选项指定待安装主机的网卡参数,以及主机名等。

##rootpw 指定root用户的密码;iscrypted表示密码是加密过的。

##reboot选项表示系统安装完毕后自动重启,必须要放在%packages部分之前,上一部分之后,不然会出错。

##%packages部分就是要安装的软件包,5.3版本会自动解决依赖问题。

##最后的%post部分就是做一些个性化的配置。例如我这里的关闭beep报警、设置resolv.conf等。

三.故障处理:

1.python报错:

File "/usr/bin/anaconda", line 1006, in ?

anaconda.intf.run(anaconda)

OSError: [Errno 2] No such file or directory

#这里只截取了错误的最后部分:

刚开始我以为是python版本过低或者anaconda程序有问题造成的,于是我就把python和anaconda都修复升级了一下,结果问题依旧。最后请出无敌的google,一搜终于发现问题了,原来是需要安装linux的虚拟机内存太小(只分配了256M)。

2.kickstart中%post部分无法执行:

报以下错误:

File "/usr/bin/anaconda", line 1006, in ?

anaconda.intf.run(anaconda)

IOError: [Errno 2] No such file or directory: '/var/log/post_install.log'

后来发现是因为我参考网上文档在%post后面加上了--log=/var/log/post_install.log 但是在rhel5.3和centos5.3中已经不存在这个选项了,所以出现问题。

3.%post部分中修改/etc/resolv.conf文件不生效:

Post部分的命令都已经生效了,但就是涉及resolv.conf文件的修改不成功。最后发现是由于开机的时候运行dhclient程序造成。于是做了个简单的改变:

[root@lfs ~]# chattr +i /etc/resolv.conf






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