在日常工作中有时候会遇到有多台服务器需要安装系统,而且服务器配置及安装完全一样,考虑有没有办法可以自动化安装,减少安装系统过程,节约时间?去网上找资料发现linux可以支持无人值守自动化安装,服务器可以通过PXE网卡启动,从dhcp服务器获取IP,通过tftp下载pxelinux.0文件找到pxelinux.cfg里的配置文件,按配置文件找到ks.cfg文件,进行全自动引导安装CentOS5.5。
解决过程:
安装环境,需要一台安装Linux PC(本次使用Redhat6),Linux系统中准备有一个CentOS5.5 32位ISO文件;系统中需要安装以下组件或服务:dhcp、tftp、vsftpd、kickstart。
下面是安装过程:
3.1安装组建包:
# yum-y install dhcp tftp-server vsftpd system-config-kickstart
3.2配置tftp:
配置文件位置:/etc/xinetd.d/tftp,使用vim编辑器进行编辑:
# vim/etc/xinetd.d/tftp
内容如下,蓝色字体是需要修改行:
# default: off
# description: The tftp server serves files using thetrivial file transfer \
# protocol. The tftp protocol is often used to bootdiskless \
# workstations, download configuration files tonetwork-aware printers, \
# and to start the installation process for someoperating systems.
service tftp
{
disable = no #默认是yes 改为no
socket_type =dgram
protocol =udp
wait = yes
user = root
server =/usr/sbin/in.tftpd
#添加nobody可以访问
server_args = -unobody -s /var/lib/tftpboot/
per_source =11
cps = 100 2
flags = IPv4
}
修改之后,保存配置文件,启动tftp服务:
# servicexinetd start
3.3配置ftp:
将ISO文件挂载在ftp的pub/rhel6/dvd目录下:
# mkdir–p /var/ftp/pub/rhel6/dvd #创建pub/rhel6/dvd目录
# vim/etc/fstab #编辑fstab文件,将ISO文件挂载在ftp目录下
#在文件末尾增加一行,一共六段,注意空格:
#1:ISO文件位置,2:挂载ftp路径,3:iso9660,4:loop,defaults,5、6:0
/opt/CentOS-5.5-i386-bin-DVD.iso/var/ftp/pub/rhel6/dvd iso9660 loop,defaults 0 0
# mount -a
启动ftp服务
# servicevsftpd start
如果selinux开启,执行下面命令:
# setsebool–P ftp_home_dir=on
3.4配置DHCP
配置dhcp,配置文件/etc/dhcpd.conf
#vim/etc/dhcpd.conf
dhcpd.conf配置文件,内容比较多,不懂的可以百度或谷歌一下:
# DHCPServer Configuration file.
# see/usr/share/doc/dhcp*/dhcpd.conf.sample
ddns-update-styleinterim;
ignoreclient-updates;
allowbooting;
allowbootp;
subnet192.168.0.0 netmask 255.255.255.0 {
optionrouters 192.168.0.10;
optionsubnet-mask 255.255.255.0;
optiondomain-name-servers 192.168.0.10; #本地IP
optiontime-offset -18000; # Eastern Standard Time
rangedynamic-bootp 192.168.0.100 192.168.0.199; #要分配的IP段
default-lease-time21600;
max-lease-time43200;
#Group the PXE bootable hosts together
#PXE-specific configuration directives...
next-server192.168.0.10;
filename"/pxelinux.0"; #方便查找配置文件,PXE使用
}
启动dhcp服务
#servicedhcpd start
3.5配置PXE
创建PXE需要的文件夹
# mkdir/var/lib/tftpboot/pxelinux.cfg
从ISO中拷贝文件:
# cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #系统中的PXE文件
# cp/var/ftp/pub/rhel6/dvd/isolinux/* /var/lib/tftpboot/ #光盘上的引导文件
# cp /var/lib/tftpboot/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
编辑/var/lib/tftpboot/pxelinux.cfg/default文件,该文件为引导界面文件:
# vim/var/lib/tftpboot/pxelinux.cfg/default在第一个label前,添加下面几行:
labelftp
menu label Install rhel6 from ^ftp
menu default
kernel vmlinuz
append ks=ftp://192.168.0.10/ks.cfginitrd=initrd.img
当服务器上有多块网卡时,会提示选择哪块网卡,可增加ksdevice=eth0,指定使用哪块网卡,即:
append ks=ftp://192.168.0.10/ks.cfgksdevice=eth0 initrd=initrd.img
3.6生成ks.cfg文件
使用Kickstart来生成自动化安装文件,kickstart软件使用很简单,和安装一遍Linux一样,其中安装源选择如下:
如果在实际环境中,可以直接使用/root/anaconda-ks.cfg,要对分区部分稍作修改。
配置好后,将ks.cfg文件保存到ftp目录/var/ftp下,整个配置完成,其他没有安装系统的服务器,选择从网卡引导系统,系统会自动化安装。
在安装时有时会在分区的时候提示,需要交互,即可在ks脚本中增加下面命令解决:
#partition clearing information
clearpart--all--initlable