#炒冷饭# PXE网络装系统

网友投稿 969 2022-11-09

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

#炒冷饭# 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网络安装,看本身需求选择。

上一篇:软件测试培训之编制测试用例
下一篇:软件测试培训之软件测试中的测试用例作用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~