Centos 6.* 下搭建pxe+dhcp+nfs+kickstart
一、Linux自动安装系统详细工作过程。
![](https://images2015.cnblogs.com/blog/922303/201603/922303-20160326155412917-782962269.png)
二、配置PXE网络安装的说明及步骤顺序
1)、配置NFS服务器,用与存放Linux系统的安装文件。
2)、配置Tftp服务器,用于提供客户端Pxe引导所必须的文件
3)、配置DHCP用于给客户端提供IP地址及其它信息
4)、配置Kickstart,用于自动应答安装
5)、使用PXE功能引导客户机
三、安装NFS服务及配置文件共享目录
把安装介质从光驱或ISO文件复制服务器上的一个目录,可以使用各种网络协议访问它,比如HTTP,FTP和NFS。
1)、创建共享目录,并将光盘内容拷贝到共享目录中。
[root@pxe ~]# mkdir /data/sys -p
[root@pxe ~]# rsync -avz -P /mnt /data/sys/
2)、安装配置NFS,将共享目录发布出去
[root@pxe ~]rpm -qa | grep nfs
[root@pxe ~]yum -y install nfs-utils portmap
[root@pxe ~]echo "/data/sys/ 192.168.0.0/24(ro,sync)" >> /etc/exports
[root@pxe ~]cat /etc/exports
/data/sys/ 192.168.0.0/24(ro,sync)
3)、NFS、Rpcbind服务启动
[root@pxe ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
Starting rpcbind: [ OK ]
[root@pxe ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
4)、及开机自动启动
[root@pxe ~]#chkconfig nfs on
[root@pxe ~]#chkconfig rpcbind on
[root@pxe ~]#chkconfig --list nfs
[root@pxe ~]#chkconfig --list rpcbind
5)、检查目录/data/sys是否被正确共享
[root@pxe ~]#
四、安装配置Tftp服务
在Pxe安装过程中,客户机通过Tftp协议从Tftp服务下载引导文件并执行。
1)、安装Tftp服务
提示:如果在Yum工具执行前进行下述处理,可以把Yum安装的Rpm包保留下来备用。
[root@pxe ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@pxe ~]#tree /var/cache/yum/base/[root@pxe ~]# yum -y install tftp-server*
2)、配置tftp服务
tftp服务由xinetd服务管理。编辑"/etc/xinetd.d/tftp"文件,将文件中的disable的参数值由yes改为no.
[root@pxe ~]#cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer
# protocol. The tftp protocol is often used to boot diskless
# workstations, download configuration files to network-aware printers,
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot 这里是默认ftfp路径,一会要把启动文件放在这里。
disable = yes 将yes改为no
per_source = 11
cps = 100 2
flags = IPv4
}
从配置文件,可以看出,/tftpboot默认为TFTP服务器的根目录位置,配置完成后重启xinetd服务,使TFTP服务器生效。
[root@pxe ~]#/etc/init.d/xinetd start
Starting xinetd: [ OK ]
3)、PXE引导配置(bootstrap)
pxe启动映像文件由syslinux软件包提供,centos linux光盘中已提供,你也可以到syslinux主页,http://syslinux.zytor.com/下载rpm来安装。
我们只要安装了syslinux(默认已安装),就会生成一个pxelinux.0,将pxelinux.0这个文件复制到“/tftpboot”目录即可:如果没有,可以配置好Yum源,来安装一下:yum -y install syslinux
[root@pxe ~]#cp /usr/share/syslinux/pxelinux.0 /tftpboot
4)、用于网络启动的内核文件
将Centos安装光盘目录中的”images/pxeboot/{Vmlinux,initrd.img}“启动文件复制到某个安装目录,比如:”/tftpboot“
[root@pxe ~]#cp /mnt/images/pxeboot/initrd.img /tftpboot
[root@pxe ~]#cp /mnt/images/pxeboot/vmlinuz /tftpboot
[root@pxe ~]#ls
initrd.img TRANS.TBL vmlinuz
[root@kex tftpboot]# mkdir pxelinux.cfg
[root@kex tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@kex tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@pxe ~]#cp /data/sys/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@pxe ~]#cat /tftpboot/pxelinux.cfg/default
default local 这里选择none为默认安装方式,文本方式为text图形方式为default linux
prompt 1 显示“boot:”提示符。为‘0’时则不提示,将直接启动default参数中指定的内容。
timeout 999999 用户输入之前的超时时间,单位为1/10秒,显示某个文件的内容,注意文件的路径。默认是在/tftpboot目录。也可以类似这样“install /rhel-inst/boot.msg”这样的,路径+文件名
display boot.msg
F1 boot.msg 按下‘F1’这样的键后显示的文件。注意路径。默认是/tftpboot。注:syslinux官方网站上说,目前只能使用F1-F10
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append ks=nfs:192.168.2.253:/data/sys/kickstart/ks.cfg initrd=initrd.img text
这里的nfs:192.168.2.253:/data/sys/kickstart/ks.cfg 为ks.cfg所在的NFS共享路径,后面配置kisckstart时要注意把ks.cfg放到/data/sys/kickstart/ks.cfg
label ks
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append -
#‘label’指定你在'boot:'提示符下输入的关键字。如:boot:linux[ENTER]
#这个会启动'label linux'下标记的Kernel和Initrd.img文件。
#这里还定义了其它几个关键字:
#boot:text
#boot:ks
#Kernet参数指定要启动的内核。同样要注意路径,默认是/tftpboot目录。
#append指定追加给内核的参数,能够在Gurb里使用的追加给内核的参数,在这里也都可以用。
#使用kickstart安装。可以在ks参数后直接指定kickstart文件的位置。
特别提示:部署无人值守安装,如果配置不当有时也会带来严重负面问题,例如:别人的个人计算机或服务器开机时可能莫名奇妙的直接被安装了你定义的Linux系统。
所以:下面的配置很关键:
default local
prompt 1
timeout 999999
五、安装及配置DHCP服务
在PXE引导安装过程中,PXE客户机通过DHCP服务获取PXE客户机的IP地址、PXE引导文件名称;然后客户机在通过TFTP协议从TFTP服务器下载引导文件并执行,从而启动系统安装程序。
1)、安装DHCP软件包
[root@pxe ~]#yum -y install dhcp*
2)、配置DHCP
1、修改/etc/dhcpd.conf文件,指定IP地址等信息。
2、在/etc/dhcp.conf中增加tftp-server需要推送给客户端的启动文件(bootstrap):filename"pxelinux.0";因为tftp的默认目录是/tftpboot,所以文件的绝对路径就是:/tftpboot/pxelinux.0;当然也可以指定为其它路径。
另外需要指定next-server参数,告诉客户端在获取到pxelinux.0文件之后去哪里获取其余的启动文件:next-server 192.168.2.253;
[root@pxe ~]#vi /etc/dhcpd.conf
ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;
default-lease-time 21600;
max-lease-time 43200;
option routers 192.168.2.254;
subnet 192.168.2.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.2.200 192.168.2.250;
next-server 192.168.2.253;
filename "/data/sys/kickstart/ks.cfg";
next-server 192.168.2.253;
filename "pxelinux.0";
}
[root@pxe ~]#chkconfig dhcpd on
[root@pxe ~]#ps -ef | grep dhcp
root 20460 1 0 22:31 ? 00:00:00 /usr/sbin/dhcpd
root 20478 18819 0 22:34 pts/3 00:00:00 grep dhcp
六、Kickstart安装配置
通常我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少交互过程,Kickstart就诞生了。使用这种Kickstart,只需要事先定义好一个Kickstart自动应答配置文件Ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该中读取安装配置,这样就避免了在安装过程中多次人机交互,从而实现无人值守的自动化安装。
生成Kickstart配置文件的三种方法:
方法1、每安装好一台Linux机器,Linux安装程序都会创建一个Kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的Kickstart配置文件来生成自己的Kickstart配置文件。
方法2、Linux提供了一个图形化的Kickstart配置工具。在任何一个安装好的Linux系统运行该工具,就可以很容易地创建自己的Kickstart配置文件。Kickstart配置工具命令为redhat-config-kickstart或system-config-kickstart。
方法3、阅读Kickstart配置文件的手册。用任何一个文本编辑器都可以创建自己的Kickstart配置文件。
[root@pxe ~]#mv anaconda-ks.cfg kickstart/ks.cfg
[root@pxe ~]#cd kickstart/
[root@kex kickstart]# ls
ks.cfg
[root@pxe ~]#vi ks.cfg
# Kickstart file automatically generated by anaconda.
install 表示安装系统而不是升级系统
nfs --server=192.168.2.253 --dir=/data/sys Nfs的安装方式,--Server为Nfs的IP,--Dir为Nfs的共享路径。也可以使用Http方式,如下:Url --Url=Http://192.168.2.253/sys/centos5.8
key --skip
lang zh_CN.UTF-8或en_US.UTF8 字符集设置
keyboard us 键盘布局
network --device eth0 --bootproto dhcp --hostname localhost.com 网络配置,Eth0为第一块网卡,结尾localhost.com
network --device eth1 --onboot no --bootproto dhcp 也可以同时对第二、三块网卡设置地址。
rootpw 123456 root用户密码,可以使用明文,安装完成变成加密状态。如果使用加密的方式见下
#rootpw --iscrypted $1$Mbhhwc.n$9/X3ksgY6PTg8BP4wyWe71
authconfig --enableshadow --enablemd5 系统认证信息
firewall --disabled 关闭防火墙 enforcing 开启
selinux --disabled 关闭防火墙
timezone Asia/Shanghai 系统系统时间
bootloader --location=mbr --driveorder=sda 系统引导相关配置
firstboot --disabled 禁止安装后的agent设置
loging --level=info 设置日志级别
zerombr 清除Mbr引导信息
###############分区####################
#clearpart --all --drives=sda 清除sda上的所有分区。如果sda不存在可能报错,还可以用下面的用法
#clearpart --linux
clearpart --all
#part /boot --fstype ext3 --size=100 --ondisk=sda
#part pv.2 --size=0 --grow --ondisk=sda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=50240
##################安装包选择##############
%packages
@admin-tools
@base
@chinese-support
@core
@dialup
@editors
@gnome-desktop
@graphical-internet
@graphics
@java
@legacy-software-support
@printing
@sound-and-video
@text-internet
@base-x
kexec-tools
iscsi-initiator-utils
fipscheck
device-mapper-multipath
sgpio
emacs
libsane-hpaio
xorg-x11-utils
xorg-x11-server-Xnest