linux下Pxe+Dhcp+Nfs+Kickstart无人值守自动安装linux系统
1PXE介绍
PXE(Pre-bootExecution Environment)是由Inter设计的协议,它可以使计算机通过网络启动,协议扥为server和client两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入到内存中执行,并显示出菜单命令,经用户选择PXE启动后PXE client获得网络地址信息,然后将放置在远端服务器上的操作系统文件通过网络下载到本地运行。
既然是通过网络传输,就需要ip地址,就是说在PXE启动过程中,PXE客户机会向DHCP服务器请求分配ip地址,之后PXE client使用TFTPclient通过TFTP(Trivial File Transfer Protocol)协议连接服务器下载启动安装程序所需的文件到本地。
2无人值守安装过程
1、 PXEclient向DHCP server发送请求
首先,将支持PXE的网络接口卡的计算机的BIOS设置成以PXE方式优先启动,此时,PXE client通过PXE Boot ROM(自启动芯片)会以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配ip地址等相关信息。
2、 DHCP服务器应答PXE client
DHCP服务收到客户端的请求,验证是否来自合法的PXE client,验证通过后,它会回应PXE client,会应中包含了为PXE client分配的ip地址、pxelinux启动程序(tftp位置),以及配置文件所在的位置。
3、 PXE客户端请求下载启动文件
客户端收到服务端的回应后,会向tftp服务器请求传送启动系统安装所需的文件,这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initird.img等文件。
4、 TFTP服务器响应客户端请求并传送文件
当TFTP服务器收到客户端的请求后,它们之间将有更多的信息在客户端与服务端间进行应答,用以决定决动参数,BootROM由tftp通讯协议从boot server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default),default文件下载完成后,会根据文件中定义的引导顺序,启动linux安装程序的引导内核。
5、 请求下载自动应答文件
PXE client通过pxelinux.cfg/default文件成功的引导linux安装内核后,安装程序首先必须确定你通过什么安装介质进行安装linux,如果是通过网络安装(NFS、 HTTP、 FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据ks.cfg文件请求下载相关文件。
6、 客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS server(可以使NFS、 HTTP、 FTP)等,并按照该文件的配置请求下载安装过程所需的软件包。
OS server和客户端建立连接后,将开始传输软件包,客户端开始安装操作系统,安装完成后将提示重启计算机。
1配置NFS服务器,用于存放linux安装文件。
2配置TFTP服务器,用于提供客户端PXE引导所必需的文件。
3配置DHCP服务器,用于给客户端提供ip地址及其他信息。
4配置Kickstart,用于自动应答安装。
5使用PXE功能引导客户机。
1安装NFS服务及配置文件共享目录
1) 创建共享目录,并将光盘中的内容拷贝到共享目录中去
mkdir/data/ -p
mount/dev/sr0 /mnt/
cp -a/mnt/* /data/ (太慢)
mount/dev/sr0 /data/
2) 安装配置NFS,将目录共享出去
rpm -qa nfs*
nfs-utils-1.2.3-39.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
echo "/data/ 192.168.0.0/24(ro,sync)" >> /etc/exports
cat /etc/exports
/data/ 192.168.0.0/24(ro,sync)
3) 启动NFS使配置生效
portmap服务在centos中被改名为rpcbind
/etc/init.d/rpcbind start
正在启动 rpcbind: [确定]
/etc/init.d/nfsrestart
关闭 NFS 守护进程: [确定]
关闭 NFS mountd: [确定]
关闭 NFS quotas: [确定]
关闭 NFS 服务: [确定]
Shuttingdown RPC idmapd: [确定]
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
配置portmap及nfs服务开机启动
chkconfig nfs on
chkconfig rpcbind on
chkconfig --list nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
chkconfig --list rpcbind
rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用6:关闭
4) 检查目录是否被正确的共享出来
showmount -e 192.168.152.129
Export list for 192.168.152.129:
/data 192.168.0.0/24
2安装配置TFTP服务器
yum install tftp-server*
配置tftp服务
#default: off
#description: The tftp server serves files using the trivial file transfer \
#protocol. The tftp protocol is often used to bootdiskless \
#workstations,download configuration files to network-aware printers, \
# andto start the installation process for some operating systems.
servicetftp
{
socket_type =dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot默认的tftp路径,把启动文件放在这里
disable = no 将yes改成no
per_source =11
cps = 100 2
flags = IPv4
}
重新启动xinetd使配置的tftp生效
/etc/init.d/xinetdrestart
正在启动 xinetd: [确定]
chkconfigxinetd on
chkconfig--list xinetd
xinetd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
3 PXE引导配置(bootstrap)
pxe启动镜像文件由syslinux软件包提供,安装syslinux后生成一个pxelinux.0,将pxelinux.0复制到/tftpboot下即可。
mkdir/tftpboot
cp -a/usr/share/syslinux/pxelinux.0 /tftpboot/
ls -l/tftpboot/
总用量 28
-rw-r--r--.1 root root 26828 2月 22 2013 pxelinux.0
用于网络启动的内核配置
将安装光盘目录中的isolinux/{vmlinuz,initrd.img}启动文件复制到某个安装目录比如/tftpboot
cp isolinux/{vmlinuz,initrd.img} /tftpboot/
在/tftpboot目录下创建pxelinux.cfg目录
将光盘中的/isolinux/isolinux.cfg复制成pxelinux.cfg/default
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
default vesamenu.c32//text就是文本安装,linux就是图形安装
#prompt 1//显示boot改成0就不提示,就会直接启动default参数中指定的内容
timeout 600//用户输入前的超时时间,单位为0.1秒
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Install or upgradean existing system
menu default
kernel vmlinuz
append initrd=initrd.imgks=nfs:192.168.152.129:/data/kickstart/ks.cfg
ksdevice=eth0 //如果有多块网卡用此参数
label vesa
menu label Install system with^basic video driver
kernel vmlinuz
append initrd=initrd.imgxdriver=vesa nomodeset
label rescue
menu label ^Rescue installedsystem
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^localdrive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append –
label指定在boot提示符下输入的内容如:boot:linux 【enter】
这个会启动“label linux“下标记的kernel和initrd.img 文件
kernel参数指定要启动的内核,同样要注意,默认的路径/tftpboot
append指定追加给内核的参数,能够在grub里使用的追加给内核的参数,在这里也可以使用。
使用kickstart安装,可以在ks参数后直接指定kickstart文件的位置
4安装及配置DHCP服务
1配置dhcp
(1)修改vi /etc/dhcp/dhcpd.conf,指定ip地址等信息。
(2)在vi /etc/dhcp/dhcpd.conf中增加tftp-server需要推送给客户端的启动文件(bootstrap),filename “pxelinux.0”;因为tftp默认目录是/tftpboot,所以文件的绝对路径就是/tftpboot/pxelinux.0,当然也可以指定别的目录,还需要指定next-server参数告诉客户端在获取到pxelinux.0文件之后去哪里去获取其余的指定文件next-server 192.168.152.129;
vi/etc/dhcp/dhcpd.conf
ddns-update-stylenone;
ignoreclient-updates;
allowbooting; //允许PXE启动
allowbootp; //允许boottp
default-lease-time600;
max-lease-time21600;
optionrouters 192.168.152.1;
subnet192.168.152.0 netmask 255.255.255.0 {
range192.168.152.110 192.168.152.120;
next-server 192.168.1.129; //tftp serverip地址
filename"/data/kickstart/ks.cfg";
filename"/tftpboot/pxelinux.0" ; //pxelinux启动文件位置
}
启动dhcp并设置为开机自启动
/etc/init.d/dhcpdrestart
chkconfigdhcpd on
chkconfig--list dhcpd
dhcpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
5kickstart安装配置
安装好一台linux服务器后,安装程序都会创建一个kickstart配置文件,记录真实的安装配置生成的文件名叫anaconda-ks.cfg(位置/root/anaconda-ks.cfg)
图形化kickstart配置工具redhat-config-kickstart
cp/root/anaconda-ks.cfg /data/kickstart/ks.cfg
chmod644 /data/kickstart/ks.cfg
kickstart配置文件详解
# Kickstart file automaticallygenerated by anaconda.
#version=DEVEL
install //表示系统安装不是升级
nfs –server=192.168.152.129 --dir=/data/centos nfs方式安装 –server为nfs的ip --dir为nfs的共享路径
使用http方式
#url –url=http://192.168.152.129/centos5.8
lang zh_CN.UTF-8 字符集设置
keyboard us键盘设置
network --onboot yes --deviceeth0 --bootproto dhcp --noipv6
firewall --disabled //禁用防火墙
authconfig --enableshadow --passalgo=sha512//系统认证信息
selinux --disabled //禁用selinux
timezone --utc Asia/Shanghai
bootloader --location=mbr--driveorder=sda --append="crashkernel=auto rhgb quiet" //系统引导
# The following is the partitioninformation you requested
# Note that any partitions youdeleted are not expressed
# here so unless you clear allpartitions first, this is
# not guaranteed to work
zerombr
#clearpart --linux --drives=sda
clearpart --all
part /boot --fstype=ext3 --size=200 --asprimary
part /home --fstype=ext3 --size=5000
part /usr --fstype=ext3 --size=7000
part / --fstype=ext3 --size=13000 --asprimary
part swap --size=200
reboot
#part pv.008002 --grow --size=1
#volgroup vg_centos--pesize=4096 pv.008002
#logvol / --fstype=ext4--name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200
#logvolswap --name=lv_swap --vgname=vg_centos --grow --size=2016 --maxsize=2016
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages
@base
@chinese-support
@core
@basic-desktop
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@internet-applications
@internet-browser
@network-file-system-client
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
@base
@chinese-support
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@internet-applications
@internet-browser
@network-file-system-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
%end
%post
useradd zhuwei
echo “zhuwei” |passwd --stdin zhuwei
注意:chmod 755 pxelinux.cfg/权限
chmod 700 /data/kickstart/ks.cfg