• 利用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的引导内核和参数。

     安装界面

    安装完成界面

  • 相关阅读:
    Python3学习笔记(十七):requests模块
    fiddler(四)、断点(转)
    fiddler(三)、会话框添加显示请求方法栏
    PostgreSQL12同步流复制搭建-同步不生效的问题、主库恢复后,无法与新主库同步问题
    PostgreSQL的count(*) count(1) count(列名)的区别
    CentOS系统日志(转)
    常用PostgreSQL HA(高可用)工具收集
    转-性能优化中CPU、内存、磁盘IO、网络性能的依赖
    PostgreSQL查询数据库中包含某种类型的表有哪些
    PostgreSQL中with和without time zone两者有什么区别
  • 原文地址:https://www.cnblogs.com/hanRR/p/10144102.html
Copyright © 2020-2023  润新知