参考了各路大神的文章,结合自己实践过程,虽中间经历了些困难挫折,最终还是成功完成配置,实现了自动化安装Linux。
安装环境,虚拟机VirtualBox虚拟2台机器,一台做kickstart服务器,一台做客户端
服务器系统为CentOS 6.3 X86_64, 安装光盘为CentOS 6.3 X86_64 DVD
网卡全部配置为“内部网络”
首先,需要用到的服务有,dhcpd, httpd, xinetd, tftp, 用yum 依次安装。
vim /etc/xinetd.d/tftp 修改tftp的守护进程配置文件,红色部分为修改的地方,
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
vim /etc/dhcp/dhcpd.conf 修改dhcp配置文件
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.0.10 192.168.0.50;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.0.1;
}
简单介绍:
Option routers指定网关;
Option domain-name-server指定DNS服务器;
Option subnet-mask指定掩码;
range dynamic-bootp指定分配给客户端的IP地址段;
Filename 指定启动镜像;
Next-server 指定TFTP服务器。
服务器的网卡ifcfg-eth0配置为静态IP:192.168.0.1, 子网掩码255.255.255.0, 网关192.168.0.1
设置开机启动服务,
chkconfig xinetd on
chkconfig dhcpd on
chkconfig httpd on
依次启动服务
service xinetd start
service dhcpd start
service httpd start
注意要关掉防火墙,selinux 设为permissive, 不然会导致PXE加载失败
挂载linux安装盘, mkdir -p /mnt/iso, mount -o loop /dev/dvd /mnt/iso,
cp /mnt/iso/* /var/www/html, 将光盘内容全部复制到html根目录(采用httpd方式安装),
创建目录/tftpboot, 将Linux安装程序的内核、根文件系统文件及其他文件复制到tftp的根目录中,
罗列下/tftpboot目录下大概会用到的文件,
initrd.img (文件,从光盘/mnt/iso/isolinux/目录拷贝)
pxelinux.0(文件,从/usr/share/syslinux目录拷贝,若无,则须安装syslinux)
pxelinux.cfg(目录,自建,里面存放名为default的文件,该文件从/mnt/iso/isolinux/isolinux.cfg复制并改名为default)
vmlinuz (文件,从/mnt/iso/isolinux/目录拷贝)
vesamenu.c32(文件,从/mnt/iso/isolinux/目录拷贝)
注意权限,chmod +x /tftpboot/pxelinux.cfg/default
若要图形化配置kickstart, 则需安装system-config-kickstart,图形化操作较简便,未详述,
若要文本配置kickstart,则要配置ks.cfg文件,
复制/root/anaconda-ks.cfg文件方式:Red Hat操作系统,在系统安装完成后,会自动在root家目录下创建一个anaconda-ks.cfg文件,这个文件真实的记录了系统安装过程中的配置。我们可以复制这个文件,然后在其基础上进行配置
cp anaconda-ks.cfg /var/ww/html/ks.cfg
chmod +r /var/www/html/ks.cfg
【ks.cfg配置文件的内容】
# Kickstart file automatically generated by anaconda.
#version=DEVEL
Install
url --url=http://192.168.0.1/
lang en_US.UTF-8
keyboard us
text
key –skip #红帽的序列号,如果有则写,没有则跳过。注:有些版本的系统会忽略这个,而有些则需要你明确定义跳过该步骤。 否则会影响自动化安装。
network –bootproto=dhcp --device=eth0 --onboot=on
rootpw --iscrypted $1$AbMG5lMV$wpNs2yKuFbz4iev/ #为root用户设密码,明文也行。
# Reboot after installation
reboot
firewall --disabled
authconfig --useshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda
# 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 towork
clearpart --all --initlabel
part /boot --fstype=ext4 --size=500
part swap --size=2048
part / --fstype=ext4 --grow --size=2 #--grow表示将剩余的所有磁盘空间分配给根分区
#逻辑卷分区创建实例
part /boot –fstype=ext4 –size=500 #因为系统启动时无法识别lvm分区表,所以需要为/boot单独分区。
part pv.01 --grow --size=1
volgroup vg0 pv.01
logvol swap --fstype=swap --name=swap --vgname=vg0 --size=1024
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=5120
logvol /tmp --fstype=ext4 --name=tmp --vgname=vg0 --size=5120
logvol /home --fstype=ext4 --name=home --vgname=vg0 --size=5120
logvol /usr/local--fstype=ext4 --name=local --vgname=vg0 --size=10240
%packages
@Base
@Core
@base
@client-mgmt-tools
@debugging
@emacs
@ftp-server
@hardware-monitoring
@large-systems
@network-file-system-client
%end
最后再在pxelinux.0的配置文件/tftpboot/pxelinux.cfg/default文件中指定kickstart文件即可。编辑/tftpboot/pxelinux.cfg/defalut文件,修改的内容我用红色进行标记,
timeout 30
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrdinitrd=initrd.img ks=http://192.168.0.1/ks.cfg
配置完毕后,测试客户端PXE启动,成功引导并加载镜像自动安装!