实时警报通知:微信告警通知的重要性解析
969
2022-11-09
#炒冷饭# PXE网络装系统
写在前面:
炒冷饭开始,什么是PXE,Preboot eXecution Environment直译就是预启动执行环境,有时候也笼统的叫网络安装。简单来讲就是通过网络给计算机安装操作系统,安装镜像在pxe服务器上而不是在本地,PXE的出现让同时安装数百台服务器操作系统成为了可能。。。
原理简述&搭建过程:
既然是网络安装,首先客户端得有ip,所以需要有DHCP服务器,IP获取之后就要到服务端获取安装包,服务器在哪里?没有操作系统如何get软件包?所以这里需要在dhcp服务里面配置服务端的ip,然后使用tftp服务传输最基础的引导文件等等。
dhcp搭建:(所有服务基于Centos7.7搭建)
yum install dhcp -y
vim /etc/dhcp/dhcpd.conf #配置文件可以man dhcpd.conf获取示例
subnet 192.168.0.0 netmask 255.255.255.0 { #网段和掩码 range 192.168.0.50 192.168.0.70; #地址池 next-server 192.168.0.192; #指定tftp服务器ip filename "pxelinux.0"; #指定需要加载的引导文件的名字,即bootloader文件的名字 }
注意:在生产环境中可能划分多个vlan,有好多个网段,建议分开写多个subnet,分配的网段不一定需要和dhcp服务器相同网段,但是多个vlan需要路由器设置dhcp中继和指定dhcp服务器。这样广播包就可以跨vlan。
启动服务,设置开机自启。
tftp服务:
yum install tftp-server -y
tftp服务是非常简陋的ftp服务,基于udp协议,所以传输没有三次握手,但是传输速度快,不需要校验,简单说就是客户端有求必应。
到tftp默认的文件夹 cd /var/lib/tftpboot
将上文所述的pxelinux.0文件放置此处,使用yum provides */pxelinux.0检查包含此文件的软件包,并安装。
同时还需要拷贝内核文件和安装开始的菜单文件。
新建文件夹:mkdir /var/lib/tftpboot/pxelinux.cfg
将引导文件isolinux.cfg拷贝至此处并重命名为default
cp isolinux,cfg /var/lib/tftpboot/pxelinux.cfg/default
拷贝内核文件菜单文件,
cp vmlinuz initrd.img vesamenu.c32 /var/lib/tftpboot/
tftp服务需要文件如下:
[root@os7 ~]# tree /var/lib/tftpboot//var/lib/tftpboot/├── initrd.img # 驱动模块文件,源于镜像文件├── pxelinux.0 #引导文件,可yum装包获取├── pxelinux.cfg│ └── default # 原名isolinux.cfg 源于镜像文件├── vesamenu.c32 # 菜单文件,源于镜像文件└── vmlinuz #内核文件,源于镜像文件
以上源于镜像文件均可在安装的镜像中找到。
修改default文件vim /var/lib/tftpboot/pxelinux.cfg/default
label linux menu label ^Install CentOS 7 # 菜单栏的列表名 menu default # 菜单出现时默认选项。只允许一个label有此行 kernel vmlinuz # 内核文件 #append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet append initrd=initrd.img inst.ks=http://192.168.0.192/iso/ks.cfg quiet# 指定ks文件获取方式为http,指定路径。#如有多个镜像,复制上方几行并修改label linux6 #不能重复 menu label ^Install CentOS 6 # 同样不与上面重复 # menu default #默认安装再打开 kernel vmlinuz6 # 同样不重复 # 位置路径均不能重复。 append initrd=initrd.img inst.ks=http://192.168.0.192/iso6/ks.cfg quiet
启动服务,注意:在os6中xinetd由服务管理tftp。所以os6需要启动xinetd服务。
安装镜像准备:
准备安装镜像,到官网下载需要的iso镜像文件,版本不限,上传或者挂载到server服务器端。如何将镜像文件共享出去呢?大概有三种方式可供选择:http服务,ftp服务,nfs服务,当然还有其它选择,本次实验采用http将镜像文件共享出去。
yum install nginx -y
修改nginx配置文件,将nginx默认root目录改为镜像所在位置,或者上级路径。本次实验直接将镜像挂载到/var/www/html所以nginx配置文件修改为
vim /etc/nginx/nginx.conf server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /var/www; # 修改根路径 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { autoindex on ; # 添加此行允许浏览目录 }
其他按需修改。
编写ks文件
安装的最后一步就是客户端寻找ks文件,ks.cfg文件为安装脚本,会自动引导完成系统软件包的安装,在ks文件里我们可以定义系统安装的各项细节,比如安装包的设定,网络设置等等。
ks文件同样需要共享出去,所以直接放置和镜像文件相同的位置或者镜像文件里面,位置随意,但是需要可以找到对应的文件。
本实验中ks文件位置为 /var/www/iso/ks.cfg
文件示例及简单讲解:
# System timezonetimezone Asia/Shanghai --isUtc # 定义时区,还可指定ntp服务器#Root passwordrootpw --iscrypted $6$sJ.EiWr4thtn49m/$j2WdqHk0xP1/FDo0FSla8DOa8jGHtA4OGcKlj3TiYCTlWyEJbyKTK96sXV5jGc2rUzbke9fmrHmHjVpzz.e1/0auth --useshadow --enablemd5#新建指定用户user --groups=wheel --name=huazhy --password=$6$d3JApHkMQrPzVZN0$yafQo0mgHpNu7sUc2SZm82oRaMaj2WxbaHtAbQ80fHRNaNspmy/0yO8x2WrpyTxBhPs2Tp3sjWcje5E/4epEB. --iscrypted --gecos="huazhy"#installurl --url="http://192.168.0.192/html" # 网络安装,指定安装源lang en_US.UTF-8 # 语言keyboard us # 键盘布局#authconfig --enableshadow --passalgo=sha512firewall --disabled # 防火墙关闭selinux --disabled #selinux关闭bootloader --location=mbr # boot格式,mbr或者gtptextskipxzerombrclearpart --all --initlabelfirstboot --disabledreboot # 安装完自动重启# Disk partitioning informationpart swap --fstype="swap" --ondisk=sda --size=8192 part /tmp --fstype="xfs" --ondisk=sda --size=12287 --fsoptions=noatimepart / --fstype="xfs" --ondisk=sda --size=81920 --fsoptions=noatime#上面为磁盘安装选项,提前定义好磁盘大小,按需调整%post # 安装结束后执行的操作,后面和%end匹配表示结束,可以定义相关文件等#!/bin/shcd /#systemctl enable NetworkManager-wait-online.service#set open files 65536 # 修改最大打开文件数。echo '* - nofile 65535' >> /etc/security/limits.confecho 'ulimit -HSn 65535' >> /etc/profile#set yum source # 更换yum源rm -rf /etc/yum.repos.d/C*curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 访问公网需要指定dns,#网卡相关配置rm -rf /etc/sysconfig/network-scripts/ifcfg-ens*cat << EOF >/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=noBOOTPROTO=dhcpEOF%end%packages # 装包@base # @表示包组@core@Development tools-NetworkManager-NetworkManager-tui-abrt-addon-ccpp-abrt-addon-python-abrt-cli-abrt-console-notification-dovecot-ivtv-firmware-iwl100-firmware-iwl1000-firmware-iwl105-firmware-iwl135-firmware-iwl2000-firmware-iwl2030-firmware-iwl3160-firmware-iwl3945-firmware-iwl4965-firmware-iwl5000-firmware-iwl5150-firmware-iwl6000-firmware-iwl6000g2a-firmware-iwl6000g2b-firmware-iwl6050-firmware-iwl7260-firmware-kernel-tools-libertas-sd8686-firmware-libertas-sd8787-firmware-libertas-usb8388-firmware-microcode_ctl-pinfo-plymouth-ql2100-firmware-ql2200-firmware-ql23xx-firmware-system-config-httpd-system-config-nfs-system-config-printer-gui-system-config-samba-words%end
启动http服务,设置开机自启动,浏览器查看镜像资源和ks文件是否均可以访问。不行,则检查http服务相关配置和资源的权限。
安装与debug
检查各个服务是否开启以及开机自启情况。如果安装过程中出现问题:
客户端获取ip(dhcp服务)----》寻找pxelinu0文件(tftp服务)---》寻找pxelinux.cfg/default文件(出现安装选择界面)-----》vmlinuz. initrd.img ks文件,开始安装---》安装系统。
所以出现错误,首先需要检查的是dhcp服务,获取到ip才会到下一步,然后是tftp服务。如果tftp服务没问题此时服务端进入到安装界面。类似本地安装时的选择菜单,直接安装还是试用还是排错等等,选择安装后到达系统安装界面,此时的报错多为ks文件错误,找不到文件,或者是http配置错误导致无法从指定的url获取软件包,再或者是镜像文件错误也是有可能的,总之出现问题很正常,按照顺序细心排查即可。
写在最后
pxe的进化版是cobbler,原理类似,只不过此服务直接集成了许多配置服务,初次安装稍微麻烦,后续维护相对简单,但是底层还是pxe网络安装,看本身需求选择。
发表评论
暂时没有评论,来抢沙发吧~