• 首页
  • Ecoreal Estate中文网
  • ECOREAL中文网
  • hehe中文网
  • hehe中文网你的位置:Lido DAO 官网 > hehe中文网 > 基于DHCP、PXE和kickstart自动安装设置CentOS 7.3

    基于DHCP、PXE和kickstart自动安装设置CentOS 7.3

    发布日期:2024-12-27 07:33    点击次数:61
    基于DHCP、PXE的kickstart自动安装简介

    通常,在安装操作系统的过程需大量的人机交互过程,为减少交互过程,为提高安装效率,Red Hat Linux开始支持称为kickstart的功能,只需事先定义好一个kickstart自动应答配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。安装好一机器,安装程序都会创建一个kickstart配置文件/root/anaconda-ks.cfg,记录真实安装配置。CentOS作为Red Hat Enterprise Linux(RHEL)的衍生版也支持此功能。

    PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。PXE协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。PXE在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。

    PXE网络安装:客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。

    系统概况 服务端: IP:192.168.100.254 NIS域:mydomain.org 系统:CentOS 6.8 x86_64 客户端: IP:192.168.100.0/24 NIS域:mydomain.org 系统:CentOS 7.3 x86_64 以下为服务端设置 安装所需要的软件: # yum -y install dhcp nfs-utils tftp-server 配置tftp:

    tftp提供dhcp获取IP后所需要下载pxelinux.0及default、efidefault等文件的服务。修改配置文件/etc/xinetd.d/tftp:

    service tftp
    {
    	disable = no #默认是yes,改为no
    	socket_type = dgram
    	protocol = udp
    	wait = yes
    	user = root
    	server = /usr/sbin/in.tftpd
    	server_args = -s /tftpboot #-s 表示用/tftpboot作为tftp目录的根目录
    	per_source = 11
    	cps = 100 2
    	flags = IPv4
    }
    
    重启xinetd服务: # service xinetd restart 配置NFS服务: 建立ks.cfg等基本引导文件所需要的公共目录/tftpboot及CentOS镜像挂载目录/centos: # mkdir /tftpboot /centos 配置NFS共享,允许192.168.100.0/24 IP地址客户端访问,修改配置文件/etc/exports:
    /centos 192.168.100.0/24(ro,async,no_root_squash)
    /tftpboot 192.168.100.0/24(rw,async,no_root_squash)
    
    重启NFS: # service nfs restart 查看NFS状态: # exportfs 正常的话,应有类似输出:
    /centos       	192.168.100.0/255.255.255.0
    /tftpboot     	192.168.100.0/255.255.255.0
    
    配置kickstart安装文件

    可以使用某台CentOS 7(注意不是6)的/root/anaconda-ks.cfg作为模板手动修改,也可以使用system-config-kickstart命令配置ks.cfg文件: 在某台CentOS 7(注意不是6)系统上安装所需包:# yum -y install system-config-kickstart 在某台CentOS 7(注意不是6)系统上运行图形界面进行设置:# system-config-kickstart 载入/root/anaconda-ks.cfg作为模板:文件->打开文件,选择/root/anaconda-ks.cfg,在此界面上进行配置并保存后,放到服务端/tftpboot/ks.cfg。

    修改/tftpboot/ks.cfg或/tftpboot/nodes/<ip>-kickstart(参见后面PXE引导部分),增减所需安装的软件包等:
    #platform=x86, AMD64, 或 Intel EM64T
    #version=CentOS7
    # Install OS instead of upgrade #全新安装而不是升级
    install
    # Keyboard layouts
    keyboard 'us'
    # Root password
    rootpw --iscrypted $改成这样不会再给我发泄密警告了吧?10 #采用加密记录
    #rootpw --plaintext 12你要认为我泄漏密码,我对你智商也没辙456 #采用明文记录
    # System language
    lang en_US
    # Firewall configuration #屏蔽防火墙
    firewall --disabled
    # System authorization information #设定NIS信息
    auth  --useshadow  --passalgo=sha512 --enablenis --nisdomain=mydomain.org --nisserver=192.168.100.254
    # Use text mode install #安装方式,文本界面,图形的话graphy
    text
    # SELinux configuration #关闭SELinux
    selinux --disabled
    # Do not configure the X Window System #不配置X图形界面
    skipx
    
    # Use NFS installation media #设定安装方式
    nfs --server=192.168.100.254 --dir=/centos
    # Use http installation source
    #url --url=http://192.168.100.254/centos/7/
    # Network information #采用DHCP获取IP
    network  --bootproto=dhcp
    # Reboot after installation #安装后自动重启,如果BIOS中设置从PXE首先启动,那么会重复安装,请注意,安装后应设置为从先硬盘启动
    reboot
    # System timezone
    timezone Asia/Shanghai
    # System bootloader configuration
    bootloader --location=mbr
    # Partition clearing information #清除原有分区
    clearpart --all
    # Disk partitioning information
    part / --fstype="xfs" --size=10000
    part /boot --fstype="xfs" --size=200
    #part /boot/efi --fstype=efi --size=200 #UEFI引导安装时需要,传统LEGACY引导时可屏蔽此选项
    part swap --fstype="swap" --size=8000
    part /tmp --fstype="xfs" --grow --size=1
    
    %packages #设定所需要的软件包,按需要调整
    @base #@表示一组软件包
    @network-server
    @performance
    @system-admin-tools
    sdparm
    tree
    tuned
    tuned-utils
    ypbind
    nfs-utils
    vim-enhanced
    #-表示从默认软件包的需要去除的软件包
    -lvm2
    -nano
    -pcmciautils
    -plymouth
    -rfkill
    -rsync
    -system-config-firewall-tui
    -system-config-network-tui
    -unzip
    -vconfig
    -wireless-tools
    %end #%packages结尾
    
    %pre #预案装脚本,非必须
    date
    %end #%pre结尾
    
    %post #安装后脚本,非必须
    cat >>/root/.bashrc >/etc/fstab
    %end #%post结尾
    
    以上为针对集群的计算节点设置的,比如设置NIS用户信息、关闭防火墙等,请根据自己需要定制,kickstart文件说明参见: https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html 验证ks文件的正确性(可选): 在CentOS 7系统安装pykickstart包: # yum -y install pykickstart 在CentOS 7系统验证上传到此系统的ks文件: ksvalidator ks.cfg 如果没任何输出,表示没问题。 在CentOS 7系统查看CentOS 6与7的ks版本区别: ksverdiff -f RHEL6 -to RHEL7 PXE引导配置

    PXE启动映像文件由syslinux软件包提供,CentOS镜像中已提供。 下载第一张DVD镜像:# wget http://mirrors.ustc.edu.cn/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso 挂载第一张DVD镜像:# mount -o loop CentOS-7-x86_64-DVD-1611.iso /centos 将pxelinux.0等复制到/tftpboot:# cp /centos/isolinux/{boot.cat,boot.msg,grub.conf,isolinux.bin,splash.png,TRANS.TBL,vesamenu.c32} /tftpboot 将安装光盘目录中的启动文件复制到/tftpboot:# cp /centos/images/pxeboot/{vmlinuz,initrd.img} /tftpboot 针对UEFI还需要: # rpm2cpio /centos/Packages/shim-0.9-2.el7.x86_64.rpm | cpio -dimv # rpm2cpio /centos/Packages/grub2-efi-2.02-0.44.el7.centos.x86_64.rpm | cpio -dimv 运行上面命令,将在当前目录生成一个boot目录,复制所需文件到/tftpboot,之后boot目录可删除 # cp boot/efi/EFI/centos/{shim.efi,grubx64.efi} /tftpboot 创建存放引导客户端的配置文件,具体采用哪种引导,需要在BIOS中设置,这样启动时调用相应的引导文件。如果确定使用某-种,可以只设置下面对应的那种即可。 传统LEGACY引导: # mkdir /tftpboot/pxelinux.cfg && cp /centos/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default 修改配置/tftpboot/pxelinux.cfg/default:

    default linux
    #prompt 1# 不要提示,直接进行安装
    timeout 60 #提示时的等待时间
    
    display boot.msg
    
    menu background splash.png
    menu title Welcome to CentOS 7.3 x86_64!
    
    label linux
    	menu label ^Install CentOS Linux 7 x86_64
    	menu default #注意,这里设置默认启动
    	kernel vmlinuz
    	append initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/nodes/ inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7
    	#append initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/ks.cfg inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7
    #主要为上面设置ks文件、内核引导参数等
    
    #以下check和local内容可不用,只要上面内容即可
    label check #可选
    	menu label Test this ^media & install CentOS Linux 7 x86_64
    # menu default #注意,需屏蔽掉此项默认启动
    	kernel vmlinuz
    	append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
    
    label local #可选项,设置从硬盘启动
    	menu label Boot from ^local drive
    	localboot 0
    
    inst.ks可以为以下两者之一: 文件路径:如nfs:192.168.100.254:/tftpboot/ks.cfg,则每个安装都使用此配置文件,参见ks.cfg 以/结尾的目录路径:如nfs:192.168.100.254:/tftpboot/nodes/,则每个安装使用/tftpboot/nodes/分配到的IP-kickstart作为配置文件,如/tftpboot/nodes/192.168.100.148-kickstart,这样可以为每个不同的IP设置不同的安装选项,参见192.168.100.148-kickstart 注:nfs服务还可以换用http或ftp等服务提供,此时需要将nfs:<ip>:<path>替换为(注意:分隔) inst.repo=cdrom 采用cdrom inst.repo=cdrom:<device> 采用特定cdrom inst.repo=hd:<device>:<path> 采用硬盘上的目录,需要ISO文件 inst.repo=[http,https,ftp]://<host>/<path> 采用http、https 、ftp协议(注意//分隔) UEFI引导: 创建默认配置/tftpboot/efidefault:
    default=0
    timeout=1
    splashimage=(nd)/splash.png
    title Install CentOS-7.3-x86_64 (UEFI) use Kickstart File
    root (nd)
    kernel /vmlinuz
    initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/nodes/ inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7
    #initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/ks.cfg inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7
    
    也可以添加类似传统LEGACY引导的其他内容。 创建默认配置/tftpboot/grub.conf:
    default=0
    splashimage=@SPLASHPATH@
    timeout 1
    hiddenmenu
    title Install CentOS Linux 7.3
    menuentry 'RHEL 7.3' {
    	linuxefi vmlinuz ip=dhcp
    	inst.repo=nfs:192.168.100.254:/centos/
    	initrdefi initrd.img
    }
    
    参见:http://media.readthedocs.org/pdf/anaconda-installer/latest/anaconda-installer.pdf 配置DHCP

    修改配置设定提供DHCP的网卡/etc/sysconfig/dhcpd:

    DHCPDARGS=eth0
    

    这里使用与客户端网络相连的eth0提供DHCP服务,此处不设置也没关系,会根据下面dhcpd.conf中的subnet使用对应的网卡。

    设定DHCP分配IP段及PXE服务,修改/etc/dhcp/dhcpd.conf:

    #option definitions common to all supported networks...
    option domain-name "mydomain.org"; #域名
    option domain-name-servers ns1.ustc.edu.cn; #域名服务器
    
    default-lease-time 600;
    max-lease-time 7200;
    
    subnet 192.168.100.0 netmask 255.255.255.0 {
    	option routers             192.168.100.254;
    	option subnet-mask         255.255.255.0;
    	option nis-domain          "mydomain.org";
    	option domain-name         "mydomain.org";
    	option domain-name-servers 202.38.64.7;
    
    	option time-offset              -18000; # Eastern Standard Time
    	range dynamic-bootp 192.168.100.1 192.168.100.253;
    	default-lease-time 21600;
    	max-lease-time 43200;
    
    	host node148 {
    		hardware ethernet a0:42:3f:33:49:5f;
    		fixed-address 192.168.100.148;
    	}
    }
    
    option space PXE;
    option PXE.mtftp-ip    code 1 = ip-address;
    option PXE.mtftp-cport code 2 = unsigned integer 16;
    option PXE.mtftp-sport code 3 = unsigned integer 16;
    option PXE.mtftp-tmout code 4 = unsigned integer 8;
    option PXE.mtftp-delay code 5 = unsigned integer 8;
    option architecture-type code 93 = unsigned integer 16; # RFC4578
    
    class "pxeclients" {
    	match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
    	next-server 192.168.100.254;
    	if option architecture-type = 00:07 {
    		filename "shim.efi"; #x86_64 UEFI引导
    #	} else if option architecture-type = 00:06 {
    #		filename "bootia32.efi"; #ia32 UEFI引导,本文后面未涉及
    	} else {
    		filename "pxelinux.0"; #传统LEGACY引导
    	}
    }
    

    如不知道客户端MAC地址,不设置固定IP,那么将会自动分配随机地址,客户端系统装好后可以修改客户端配置设置成固定IP。

    重启动DHCP服务: # service dhcpd restart 服务端配置到此结束,下面开始客户端安装。 启动客户端进行自动安装 设置从网卡PXE启动,一般需要设置BIOS或者在启动时设置按某键(比如F12)从网卡PXE启动。 出现下面界面,表示从网卡PXE启动正常,正在申请IP,如果获取不到,请检查服务端DHCP服务或者两者之间网络是否正常

    出现下面界面,表示PXE和tftp服务器正常,已经获取/tftpboot/pxelinux.0和/tftpboot/pxelinux.cfg/default或/tftpboot/shim.efi和/tftpboot/efidefault

    利用<TAB>键可以查看内容引导参数是否正确,必要时可修改

    问题解决

    出现问题时,一般需要查看系统日志,如:/var/log/messages。



    上一篇:Node.jsx64版免费版

    下一篇:Grapher 21

    Powered by Lido DAO 官网 @2013-2022 RSS地图 HTML地图

    Copyright Powered by365建站 © 2013-2024