实现方法:Kickstart+HTTP+DHCP+TFTP+PXElinux

这是一个很古老的方法,但是很实用。

 

步骤1 安装lkickstart所需组件

网络yum安装程序的前提是能上网,yum配置正确。也可以配置本地yum源。

yum -y install httpd* dhcp tftp* xinetd*

 

步骤2 web服务器的配置

现在版本的yum安装好的apache web服务器,在没有特殊需求的时候,几乎不需要配置。只需要把文件传到/var/www/html/这个根目录下,开启httpd进程就可使用。如果访问不了的话有可能是网络问题或者防火墙的问题,排查一下即可。

 

步骤3 拷贝磁盘镜像到apache根目录

mount /dev/cdrom /media  //挂在光盘 
rsync -av /media/ /var/www/html/

 

步骤4 配置DHCP服务

这里把我的DHCP配置文件内容共享一下,具体涉及到的各种IP地址问题,请根据个人具体情况进行修改。

 

 

ddns-update-style interim; 
allow booting; 
allow bootp; 
ignore client-updates; 
set vendorclass = option vendor-class-identifier; 
subnet 10.1.1.0 netmask 255.255.248.0 {
    option routers             10.1.1.250;    #DHCP服务器的IP
    option domain-name-servers 202.106.0.20,8.8.8.8;   #指定DNS服务器地址,多个用逗号,分割      
    option subnet-mask         255.255.248.0;      
    range dynamic-bootp        10.1.1.200 10.1.1.253;  #可供此DHCP服务器地址分配的IP地址池      filename                   "/pxelinux.0";      
    default-lease-time         21600;      
    max-lease-time             43200;      
    next-server                10.1.1.250;#引导服务器,用于bootp方式的引导,可以指向一个tftp服务器,并在tftp服务器上提供引导文件 
    }  
#group for Cobbler DHCP tag: 
default group { }

 

 

步骤5 配置tftp和tftpboot

tftp服务是通过xinetd这个守护进程来进行管理的,开启tftp服务需要修改守护进程配置文件中关于tftp的配置

vim /etc/xinetd.d/tftp 
  将disable = yes 改为 disable = no

将安装需要的文件拷贝到tftpboot目录下,如果目录不存在的话,自行创建。

mkdir -p /tftpboot/ 
cd /tftpboot/ 
cp /usr/share/syslinux/pxelinux.0 /tftpboot/  
cp /var/www/html/p_w_picpaths/pxeboot/initrd.img /tftpboot/  
cp /var/www/html/p_w_picpaths/pxeboot/vmlinuz /tftpboot/  
cp /var/www/html/isolinux/*.msg /tftpboot/

在/tftpboot目录中新建一个pxelinux.cfg目录,并将Linux安装光盘上isolinux目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更名为default。

mkdir -p /tftpboot/pxelinux.cfg
cp /var/www/html/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

修改/tftpboot/pxelinux.cfg/default文件,在第一行添加ks.cfg访问地址。将timeout选项可设为1;,意思是直接引导,不给用户手动选择的时间。

default text ks=
prompt 1
timeout 1

 

 

步骤6 完成ks.cfg文件的配置

我没有通过kickstart的管理命令生成ks.cfg,而是根据本机安装/root/目录下的anaconda-ks.cfg修改后投入使用的。我感觉这样有助于了解里面个个参数的意义,在情况有些许变动的情况下能有的放矢。 

在/var/www/html/目录下(apache的主目录下)创建ks.cfg文件:

cd /var/www/html/
touch ks.cfg
chmod 755 ks.cfg 
vim ks.cfg

ks.cfg内容如下:

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
#cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot no --device em1 --bootproto dhcp --noipv6
network --onboot no --device em2 --bootproto dhcp --noipv6
network --onboot no --device p2p1 --bootproto dhcp --noipv6
network --onboot no --device p2p2 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$bw2zqLppav3sKp0i$Ww6C.dPKbSptx.PuxCnNE/JIP6zw3096rUjRX.2vjFzrjJvJBEExou5sZ9UoShvllR3tKl4Fxnxtbf9PuHJKD/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# 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 --none
clearpart --all --initlabel 
part /boot --fstype=ext4 --size=200
part swap --size=8192
part / --fstype=ext4 --grow --size=200


repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@chinese-support
@core
@server-policy
@workstation-policy
%end

具体参数可具体根据需求自行调整。

启动或重启相关的http,dhcp,tftp(xinetd)进程。不建议设置为开机启动。

步骤7 测试

找一台设备,连接到kickstart服务器所在网络,选择PXE网络启动即可。安装过程中可能会遇到一些问题,按照提示都很容易解决,这里就不列举可能出现的问题了。