Centos7使用PXE+Kickstart无人值守安装服务

最近更新:2021.12.09
首先,关闭selinux和防火墙
PXE是一种引导方式,即预启动执行环境。客户端通过dhcp获取IP,从ftp和http上下载启动配置文件(通过kickstart生成)和系统镜像,从而实现无人值守安装。 
我们需要安装的软件如下
dhcp(用来获取ip) tftp-server httpd syslinux(不安装这个后面会没有pxelinux.0这个文件) system-config-kickstart.noarch(用来得到安装系统时代替手动选择的配置文件) vsftpd tftp xinetd(管理tftp或者vsftpd的,具体不是很懂)

下载iso系统光盘
cd /usr/local/src
wget -c http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
mkdir /mnt/cdrom 创建一个文件夹,用来挂载系统光盘
mount -o loop CentOS-7-x86_64-DVD-1611.iso /mnt/cdrom
把系统光盘里面的文件全都复制到网站目录下
cp -rf /mnt/cdrom/* /var/www/html -rf是强制递归复制所有文件的意思

除此之外,还需要把系统光盘里面的文件复制到vsftpd文件夹里面
cp -rf /mnt/cdrom/* /var/ftp
修改tftp配置文件/etc/xinetd.d/tftp
把里面的disable的值改为no即可

[root@bogon ~]# 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
    disable         = no
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}
[root@bogon ~]# 

重启xinetd
systemctl restart xinetd

然后复制各种文件到tftp

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /var/www/html/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /var/www/html/isolinux/*.msg /var/lib/tftpboot/
cp /var/www/html/isolinux/vesamenu.c32 /var/lib/tftpboot/
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cp /var/www/html/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf    #这个路径是需要根据自己的实际情况写的,多用tab补全是个好办法

配置dhcp配置文件/etc/dhcp/dhcpd.conf,把文件内容修改为如下所示
我是在虚拟机上做的实验,进行上面操作时,我使用的桥接模式,进行配置dhcp时就需要改为仅主机模式(host-only)了,改好之后,我的ip为192.168.190.128(需要根据自己的实际情况修改)

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.190.0 netmask 255.255.255.0 {
        option subnet-mask      255.255.255.0;
        option domain-name-servers  192.168.190.128;
        range dynamic-bootp 192.168.190.100 192.168.190.200;
        default-lease-time      21600;
        max-lease-time          43200;
        next-server             192.168.190.128;
        filename                "pxelinux.0";
}

[root@localhost ~]# 

重启dhcpd服务
systemctl restart dhcpd

接下来,我们来配置一下自动安装配置文件
在图形界面模式打开终端执行命令system-config-kickstart,逐个进行配置,配置好之后(设置root密码,系统安装方式选ftp,磁盘自定义需要自己分配,否则在自动安装过程中需要人工配置,还有需要选中新建boot loader),点击左上角的file,选择保存位置到桌面,这时候查看ls ~会发现有一个anaconda-ks.cfg文件,把这个文件复制到/var/www/html/ks.cfg,最好给这个文件赋予所有人读取的权限

还需要修改tftpd文件/var/lib/tftpboot/pxelinux.cfg/default
在第一行插入url –url=http://192.168.190.128/ks.cfg
大概在第64行左右把append那条语句修改成为如下语句
append initrd=initrd.img inst.stage2=ftp://192.168.192.128 ks=http://192.168.190.128/ks.cfg quiet

然后重启httpd,dhcpd,xinetd,ftpd等等服务

然后在vm里新建一个虚拟机,选择自定义安装,一路默认,除了选择网络连接模式那里,选择host-only,还有一个就是选择随后再安装,然后启动虚拟机,系统就会自动安装了

我遇到过/dev/root no exits的问题,后来加大内存和硬盘,就可以正常安装了。。。(另外,如果我们在用U盘安装系统时遇到这个问题,可以吧ftp://192.168.192.128那里改为U盘的名称)

我还遇到过系统已经自动安装完毕,但是重启后,卡在开机那里黑屏,无法正常开机,其实,就是因为我没有在配置那个ks.cfg文件时选择新建boot loader造成的

 

posted on 2017-10-25 18:06  标配的小号  阅读(257)  评论(0编辑  收藏  举报

导航