利用kickstart、http、dhcp、pxe实现多系统自动安装

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。安装syslinux的 磁盘将改变磁盘上的 引导扇区,并复制ldlinux.sys文件到其根目录(或者复制到指定的目录)下。注意:SYSLINUX不支持NTFS文件系统,所以磁盘必须是FAT(FAT16/FAT32)文件系统

一.部署环境

1.关闭selinx和防火墙

关闭selinux

sed -i 's/SELINUX=enforing/SELINUX=disabled/g' /etc/sysconfig/selinux

修改完之后要不就直接重启,要不就是用 getenforce 0

关闭防火墙

[root@localhost ~]# /etc/init.d/iptables stop

2.搭建必须的服务

安装http xinet dhcp tftp

[root@localhost ~]# yum -y install dhcp tftp-server httpd xinetd

设置开机启动

[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# chkconfig dhcpd on
[root@localhost ~]# chkconfig xinetd on
[root@localhost ~]# chkconfig tftp on

修改tftp参数

sed -i 's/disable = no/disable = no/g' /etc/xinetd.d/tftp

server_args = -s /var/lib/tftpboot    #tftp的默认目录

修改dhcp参数

[root@localhost ~]# cat > /etc/dhcp/dhcpd.conf <<EOF
ddns-update-style interim;
ignore client-updates;
subnet 192.168.117.0 netmask 255.255.255.0 {             #dhcp的网段
option routers 192.168.117.1;                                         #网关
option subnet-mask 255.255.255.0;                                #掩码
filename "pxelinux.0";                                                      #syslinux启动程序
next-server 192.168.117.135;                                         #注意,这里一定要是服务本机
option domain-name-servers 192.168.117.1;                 #DNS服务器可忽略
range dynamic-bootp 192.168.117.128 192.168.117.254; #dhcp的IP范围
default-lease-time 21600;
max-lease-time 43200;
}
EOF

重启dhcp xinetd http服务

[root@localhost ~]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[ OK ]

重启httpd的时候报警告下面这段话,这个其实可以忽略。可以修改参数使这项消失。

[root@localhost ~]# sed -i 's/#ServerName www.example.com:80/ServerName www.example.com:80/' /etc/httpd/conf/httpd.conf

[root@localhost ~]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

[root@localhost ~]# /etc/init.d/xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[root@localhost ~]# /etc/init.d/dhcpd restart
Starting dhcpd: [ OK ]

安装syslinux

[root@localhost ~]# yum install syslinx -y

找到pxelinux的位置拷贝到tftp默认路径下去

[root@localhost ~]# find / -name pxelinux.0
/usr/share/syslinux/pxelinux.0

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@localhost ~]# ll /var/lib/tftpboot/
total 28
-rw-r--r-- 1 root root 26759 Dec 19 03:22 pxelinux.0

二.部署系统目录

我使用的是vmware环境来部署的,网卡模式选择nat,cdrom选择一个本地的系统。

挂在系统盘

[root@localhost ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

创建存放系统的目录

[root@localhost centos6.9]# pwd
/var/www/html/iso/centos6.9

拷贝系统到目录中

[root@localhost ~]# cp -r /mnt/* /var/www/html/iso/centos6.9/

然后使用编写自己的ks.cfg文件,可以使用在带图形化界面的linux系统中安装system-config-kickstart.noarch

yum install system-config-kickstart.noarch y

配置文件修改完了,接下来我们制作无人值守安装文件。

在图形化界面运行system-config-kickstart弹出来界面。

 

我们设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导。然后选择安装方法。

 

我们配置ftp服务器的安装方法。选择执行新安装。然后点击引导装载程序选项

 

参考我上面的选择。接着

 

到这一步,选择部分参考我的。布局这里,我们自己设置下分区大小。

 

网络这里,默认没有,点击添加网络,设备名称为eth0,网络类型为dhcp

参考我的配置

 

防火墙和selinux根据自己需求选择开启或者禁用

 

默认

在这里勾选一些包,默认可能没有勾选桌面。根据自己需求勾选。后面剩余的两项不需要配置。

 ks.cfg这个文件存放在http可以访问到目录下即可,我的存放在/var/www/html/iso/centos(这里是你创建的目录)/isolinux/我这边就直接用我做好的ks.cfg

创建放置default的目录

[root@localhost pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg

拷贝isolinux.cfg到这个目录下并改名为default

cp /var/www/html/iso/centos6.9/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/

mv isolinux.cfg default

修改default

default vesamenu.c32    #默认启动选项
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg 
menu title Welcome to CentOS 6.9!
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 centos6.9_http     #标签,配合上面的default使用  
menu label ^AutoInstall centos6.9 #菜单显示选项名称
menu default               #启动菜单后光标默认的位置
kernel vmlinuz           #预加载内核
append initrd=initrd.img ks=http://192.168.117.135/iso/centos6.9/isolinux/ks.cfg ksdevice=eth0  # # 预加载的参数以及ks文件的存放地址,ksdevice表示使用哪个网卡启动,在多个网卡的时候使用。
拷贝vmlinuz和initrd.img到/var/lib/tftpboot/下,也就是tftp的默认目录下

[root@localhost tftpboot]# cp /var/www/html/iso/centos6.9/isolinux/initrd.img /var/lib/tftpboot/

[root@localhost tftpboot]# cp /var/www/html/iso/centos6.9/isolinux/vmlinuz /var/lib/tftpboot/

[root@localhost tftpboot]# cp /var/www/html/iso/centos6.9/isolinux/vesamenu.c32 /var/lib/tftpboot/

[root@localhost tftpboot]# cp /var/www/html/iso/centos6.9/isolinux/splash.jpg /var/lib/tftpboot/

三.安装系统

首先我们来验证安装单系统

修改default文件中的default vesamenu.c32 为default centos6.9_http

default vesamenu.c32    #默认启动选项
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg 
menu title Welcome to linux!
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 centos6.9_http     #标签,配合上面的default使用  
menu label ^AutoInstall centos6.9 #菜单显示选项名称
menu default               #启动菜单后光标默认的位置
kernel vmlinuz           #预加载内核
append initrd=initrd.img ks=http://192.168.117.135/iso/centos6.9/isolinux/ks.cfg ksdevice=eth0  # # 预加载的参数以及ks文件的存放地址,ksdevice表示使用哪个网卡启动,在多个网卡的时候使用。

选择网卡安装

选择网络安装后会自动进行centos6.9的安装。

 

 安装完成

接下来我们来实现安装多系统

修改default文件中的default centos6.9_http 为default vesamenu.c32

default vesamenu.c32    #默认启动选项
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg 
menu title Welcome to linux
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 centos6.9_http     #标签,配合上面的default使用  
menu label ^AutoInstall centos6.9 #菜单显示选项名称
menu default               #启动菜单后光标默认的位置
kernel vmlinuz           #预加载内核
append initrd=initrd.img ks=http://192.168.117.135/iso/centos6.9/isolinux/ks.cfg ksdevice=eth0  # # 预加载的参数以及ks文件的存放地址,ksdevice表示使用哪个网卡启动,在多个网卡的时候使用。

 #添加一项centos7.4的安装项目

label centos7.4_http     #标签,配合上面的default使用  
menu label ^AutoInstall centos7.4 #菜单显示选项名称
kernel vmlinuz           #预加载内核
append initrd=initrd.img ks=http://192.168.117.135/iso/centos7.4/isolinux/ks.cfg ksdevice=eth0  # # 预加载的参数以及ks文件的存放地址,ksdevice表示使用哪个网卡启动,在多个网卡的时候使用。

创建一个centos7.4的目录用来存放镜像

[root@localhost centos7.4]# pwd
/var/www/html/iso/centos7.4

存放镜像的方法和前面centos6.9一样,先挂在在拷贝。

[root@localhost ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cp -r /mnt/* /var/www/html/iso/centos7.4/

然后创建ks.cfg文件这里可以参考http://www.cnblogs.com/Dev0ps/p/9996931.html

选择网络引导

这里需要注意的是centos6和centos7丢应的vmlinuz和initrd.img文件不一样,需要在default中修改。

首先把centos7的这个两个文件拷贝到tftp的默认目录下/var/lib/tftpboot/

mv /var/www/html/iso/centos7.4/isolinux/initrd.img /var/lib/tftpboot/initrd_7.img 

mv /var/www/html/iso/centos7.4/isolinux/vmlinuz /var/lib/tftpboot/vmlinuz_7

修改default中centos7.4的选项,使其使用centos7的引导内核和参数。

 安装界面

安装完成界面

原文地址:https://www.cnblogs.com/hanRR/p/10144102.html