当前位置:   article > 正文

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言

PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,使得客户端计算机可以通过网络启动并安装操作系统或运行其他软件。

在Debian系统中,要设置一个PXE服务器,您需要以下几个组件:

  • TFTP服务器:用于提供启动镜像和引导加载程序。
  • DHCP服务器:用于分配IP地址给客户端计算机。
  • NFS或HTTP服务器:用于提供操作系统镜像和其他文件。

在Debian中,可以使用以下软件包来设置PXE服务器:

  • atftpd:一个轻量级的TFTP服务器,可以用于提供启动镜像和引导加载程序。
  • dnsmasq:一个轻量级的DHCP和DNS服务器,可以用于分配IP地址给客户端计算机。
  • nfs-kernel-server:用于提供NFS服务,以便客户端可以访问操作系统镜像和其他文件。

RockyLinux download

 创建一键部署pxe server 环境脚本

  • pxe server 是RockyLinux 9
  • dhcp /etc/dhcp/dhcpd.conf 配置文件
  • tftp 配置文件/etc/default/tftpd-hpa
  • tftp 69
  • http 配置文件/etc/httpd/conf/httpd.conf
  • /etc/httpd/conf.d/pxeboot.conf 镜像http配置
  • http 端口80
  • /var/lib/tftpboot/pxelinux.cfg/default (bios 支持)配置文件
  • 10-48 行变量内容详细注意,更改自己需要的,自动化脚本仔细看
  • /var/lib/tftpboot/grub.cfg (uefi 支持)配置文件,grub.cfg此处Redhat 系和debian 系不一样哦注意哦
  • rockylinux root密码1234.com
  • LVM 自动分区,默认禁止/home 分区 
  • /var/pxe/{rockylinux8.10,rockylinux9.4} 挂载目录
  • /var/www/html/{rockylinux8.10,rockylinux9.4} images目录
  • /var/www/html/rockylinx_iso 8 9  iso 下载存放目录
  • /var/www/html/rockylinx_cfg{Rockylinux8.10-ks.cfg,Rockylinux9.4-ks.cfg} 自动化编排
  • rockylinux cfg编排参考
  • redhat cfg 编排参考(需要注册redhat 转换登录)
  • PXE网络安装参考,相关配置参考
  • bios 实现自动化安装esxi 需要syslinux官方是指导3.86,Redhat 8 系列下使用此 版本
    1. # 加密密码生成
    2. python -c 'import crypt,getpass; \
    3. print(crypt.crypt(getpass.getpass(), \
    4. crypt.mksalt(crypt.METHOD_SHA512)))'
vim /rockylinux_pxe_server_rockylinx.sh
  1. #!/bin/bash
  2. # -*- coding: utf-8 -*-
  3. # Author: make.han
  4. # Email: CIASM@CIASM
  5. # Date: 2024/07/24
  6. # rockylinux 8 9 action pxe server
  7. # PXE Redhat rockylinux almalinx oraclelinux 8 9
  8. #tftp variable configuration
  9. tftp_port=69
  10. tftp_user=tftp
  11. tftp_catalogue=/var/lib/tftpboot
  12. #dhcp ip address variable configuration
  13. nic_network_name=`ifconfig -s | awk 'NR>1 && !/^lo/ && !/^idrac/ && !/^br/ && !/^veth/ && !/^docker/{print $1; exit}'`
  14. host_IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}' | awk 'NR==1'`
  15. MASK="255.255.255.0"
  16. BROADCAST_ADDRESS="192.168.11.255"
  17. ROUTERS="192.168.11.1"
  18. SUBNET="192.168.11.0"
  19. DNS="8.8.8.8"
  20. RANGE="192.168.11.50 192.168.11.80"
  21. root_password='$6$4QaHWOfkEYxT2Dv6$3h5T/4AT/vkINa.R.9tToEUwro5YqD2UjulKRQ8k8ZMjqJOhib23nZ/fnKKgRh5TRaTg6I1mIa8VWJxmKQR7o0'
  22. # apache2 variable configuration
  23. apache_port=80
  24. apache_catalogue=/var/www/html
  25. #syslinux variable configuration
  26. syslinux_download_url=https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.07.tar.gz
  27. syslinux_gz=syslinux-4.07.tar.gz
  28. syslinux_catalogue=syslinux-4.07
  29. # rockylinx download variable configuration
  30. rockylinux8_download_url=https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.10-x86_64-dvd1.iso
  31. rockylinux9_download_url=https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-dvd.iso
  32. rockylinux8_iso=Rocky-8.10-x86_64-dvd1.iso
  33. rockylinux9_iso=Rocky-9.4-x86_64-dvd.iso
  34. # rockylinx 8 9 catalogue
  35. rockylinx_cfg=rockylinx_cfg
  36. rockylinx_iso=rockylinx_iso
  37. rockylinux8_catalogue=rockylinux8.10
  38. rockylinux9_catalogue=rockylinux9.4
  39. install_pxe_server (){
  40. if ! [ -x "$(command -v dhcpd)" ]; then
  41. if [ $? -eq 0 ];then
  42. echo "install tftp dhcp"
  43. dnf install tftp tftp-server dhcp-server httpd syslinux net-tools -y
  44. echo "stop selinx"
  45. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  46. setenforce 0
  47. echo "firewalld tftp"
  48. yum install -y curl
  49. firewall-cmd --zone=public --add-port=$tftp_port/tcp --permanent && firewall-cmd --reload
  50. firewall-cmd --zone=public --add-port=$tftp_port/udp --permanent && firewall-cmd --reload
  51. echo "apache2 firewall"
  52. firewall-cmd --zone=public --add-port=$apache_port/tcp --permanent && firewall-cmd --reload
  53. echo "configuration dhcpd.conf"
  54. rm -rf /etc/dhcp/dhcpd.conf
  55. cat >> /etc/dhcp/dhcpd.conf << EOF
  56. option domain-name "$DNS";
  57. option domain-name-servers $DNS;
  58. default-lease-time 2592000;
  59. max-lease-time 2592000;
  60. authoritative;
  61. # add follows
  62. option space pxelinux;
  63. option pxelinux.magic code 208 = string;
  64. option pxelinux.configfile code 209 = text;
  65. option pxelinux.pathprefix code 210 = text;
  66. option pxelinux.reboottime code 211 = unsigned integer 32;
  67. option architecture-type code 93 = unsigned integer 16;
  68. subnet $SUBNET netmask $MASK {
  69. range dynamic-bootp $RANGE;
  70. option broadcast-address $BROADCAST_ADDRESS;
  71. option routers $ROUTERS;
  72. #add follows
  73. class "pxeclients" {
  74. match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
  75. # PXE servers hostname or IP address
  76. next-server $host_IP;
  77. if option architecture-type = 00:07 {
  78. filename "BOOTX64.EFI";
  79. }
  80. else {
  81. filename "pxelinux.0";
  82. }
  83. }
  84. }
  85. EOF
  86. echo "restrat dhcpd"
  87. systemctl enable --now dhcpd tftp
  88. echo "mkdir catalogue rockylinux cfg ISO save"
  89. mkdir -p $apache_catalogue/{$rockylinx_cfg,$rockylinx_iso}
  90. echo "download rockylinux 8 9"
  91. curl -o $apache_catalogue/$rockylinx_iso/$rockylinux8_iso $rockylinux8_download_url
  92. curl -o $apache_catalogue/$rockylinx_iso/$rockylinux9_iso $rockylinux9_download_url
  93. mkdir -p /var/pxe/{$rockylinux8_catalogue,$rockylinux9_catalogue}
  94. mkdir -p $tftp_catalogue/{$rockylinux8_catalogue,$rockylinux9_catalogue}
  95. echo "mount rockylinux 8 9"
  96. mount -t iso9660 -o loop,ro $apache_catalogue/$rockylinx_iso/$rockylinux8_iso /var/pxe/$rockylinux8_catalogue
  97. mount -t iso9660 -o loop,ro $apache_catalogue/$rockylinx_iso/$rockylinux9_iso /var/pxe/$rockylinux9_catalogue
  98. echo "Mount an image on startup"
  99. sed -i "$ a $apache_catalogue/$rockylinx_iso/$rockylinux8_iso /var/pxe/$rockylinux8_catalogue/ iso9660 defaults,loop,ro 0 0" /etc/fstab
  100. sed -i "$ a $apache_catalogue/$rockylinx_iso/$rockylinux9_iso /var/pxe/$rockylinux9_catalogue/ iso9660 defaults,loop,ro 0 0" /etc/fstab
  101. echo "http config"
  102. mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
  103. sed -i "s#DirectoryIndex index.html#DirectoryIndex index.html index.php index.cgi#" /etc/httpd/conf/httpd.conf
  104. sed -i "s#Options Indexes FollowSymLinks#Options FollowSymLinks#" /etc/httpd/conf/httpd.conf
  105. sed -i "s#AllowOverride None#AllowOverride All#" /etc/httpd/conf/httpd.conf
  106. sed -i '$a ServerTokens Prod' /etc/httpd/conf/httpd.conf
  107. echo "copy vmlinuz initrd.img"
  108. cp -rf /var/pxe/$rockylinux8_catalogue/images/pxeboot/{vmlinuz,initrd.img} $tftp_catalogue/$rockylinux8_catalogue
  109. cp -rf /var/pxe/$rockylinux9_catalogue/images/pxeboot/{vmlinuz,initrd.img} $tftp_catalogue/$rockylinux9_catalogue
  110. echo "add pxeboot.conf"
  111. cat >> /etc/httpd/conf.d/pxeboot.conf<<EOF
  112. # create new
  113. Alias /$rockylinux8_catalogue /var/pxe/$rockylinux8_catalogue
  114. <Directory /var/pxe/$rockylinux8_catalogue>
  115. Options Indexes FollowSymLinks
  116. # IP address you allow to access
  117. Require ip 127.0.0.1 $SUBNET/$MASK
  118. </Directory>
  119. # create new
  120. Alias /$rockylinux9_catalogue /var/pxe/$rockylinux9_catalogue
  121. <Directory /var/pxe/$rockylinux9_catalogue>
  122. Options Indexes FollowSymLinks
  123. # IP address you allow to access
  124. Require ip 127.0.0.1 $SUBNET/$MASK
  125. </Directory>
  126. EOF
  127. #下载syslinux-4.07.tar.gz,用于支持Bios 模式安装esxi
  128. echo "low version syslinux"
  129. curl -o /$syslinux_gz $syslinux_download_url
  130. tar -zxf /$syslinux_gz -C /
  131. cp -rf /$syslinux_catalogue/core/pxelinux.0 $tftp_catalogue/
  132. cp -rf /$syslinux_catalogue/com32/menu/menu.c32 $tftp_catalogue/
  133. cp -rf /$syslinux_catalogue/com32/menu/vesamenu.c32 $tftp_catalogue/
  134. echo "mkdir pxelinux.cfg"
  135. mkdir -p $tftp_catalogue/pxelinux.cfg
  136. cat <<EOF>>$tftp_catalogue/pxelinux.cfg/default
  137. # change like follows
  138. #Official page display
  139. default vesamenu.c32
  140. #Simple page display
  141. #default menu.c32
  142. #Set the home page timeout period according to project requirements timeout 30
  143. timeout 300
  144. #/var/lib/tftpboot/下,命名为you.png
  145. #menu background ubunutu.png
  146. menu title ########## PXE Boot Menu #########
  147. display boot.msg
  148. label Auto Rockylinux8.10
  149. menu label ^Auto Install Rockylinux8.10
  150. kernel $rockylinux8_catalogue/vmlinuz
  151. append initrd=$rockylinux8_catalogue/initrd.img ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux8.10-ks.cfg
  152. label Auto Rockylinux9.4
  153. menu label ^Auto Install Rockylinux9.4
  154. kernel $rockylinux9_catalogue/vmlinuz
  155. append initrd=$rockylinux9_catalogue/initrd.img ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux9.4-ks.cfg
  156. label Manual Rockylinux8.10
  157. menu label ^Manual Install Rockylinux8.10
  158. kernel $rockylinux8_catalogue/vmlinuz
  159. append initrd=$rockylinux8_catalogue/initrd.img ip=dhcp inst.repo=http://${host_IP}/$rockylinux8_catalogue
  160. label Manual Rockylinux9.4
  161. menu label ^Manual Install Rockylinux9.4
  162. kernel $rockylinux9_catalogue/vmlinuz
  163. append initrd=$rockylinux9_catalogue/initrd.img ip=dhcp inst.repo=http://${host_IP}/$rockylinux9_catalogue
  164. label local
  165. #menu default
  166. com32 chain.c32
  167. menu label Boot from ^local drive
  168. localboot 0xffff
  169. menu end
  170. EOF
  171. echo "creation grub.cfg"
  172. cat <<EOF>>$tftp_catalogue/grub.cfg
  173. # ubuntu 24
  174. set default="3"
  175. set timeout=10
  176. set gfxpayload=keep
  177. set color_normal=white/black
  178. function load_video {
  179. insmod video_bochs
  180. insmod video_cirrus
  181. insmod all_video
  182. }
  183. load_video
  184. insmod gzio
  185. insmod part_msdos
  186. insmod part_gpt
  187. insmod ext2
  188. insmod xfs
  189. insmod png
  190. insmod gfxterm
  191. insmod gfxmenu
  192. terminal_output gfxterm
  193. background_image -m stretch bg.png
  194. menuentry 'EFI Firmware System Setup' 'uefi-firmware' {
  195. fwsetup
  196. }
  197. menuentry 'Reboot System' {
  198. reboot
  199. }
  200. menuentry 'Shutdown System' {
  201. halt
  202. }
  203. menuentry 'Auto Install Rockylinux 8.10' {
  204. linuxefi $rockylinux8_catalogue/vmlinuz ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux8.10-ks.cfg
  205. initrdefi $rockylinux8_catalogue/initrd.img
  206. }
  207. menuentry 'Auto Install Rockylinux 9.4' {
  208. linuxefi $rockylinux9_catalogue/vmlinuz ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux9.4-ks.cfg
  209. initrdefi $rockylinux9_catalogue/initrd.img
  210. }
  211. menuentry 'Manual Install Rockylinux 8.10' {
  212. linuxefi $rockylinux8_catalogue/vmlinuz ip=dhcp inst.repo=http://${host_IP}/$rockylinux8_catalogue
  213. initrdefi $rockylinux8_catalogue/initrd.img
  214. }
  215. menuentry 'Manual Install Rockylinux 9.4' {
  216. linuxefi $rockylinux9_catalogue/vmlinuz ip=dhcp inst.repo=http://${host_IP}/$rockylinux9_catalogue
  217. initrdefi $rockylinux9_catalogue/initrd.img
  218. }
  219. EOF
  220. echo "add rockylinx 9.4 cfg"
  221. cat <<EOF>>$apache_catalogue/$rockylinx_cfg/Rockylinux9.4-ks.cfg
  222. # automatically proceed for each steps
  223. graphical
  224. # AppStream
  225. repo --name="AppStream" --baseurl="http://${host_IP}/$rockylinux9_catalogue/AppStream"
  226. # Use network installation
  227. url --url="http://${host_IP}/$rockylinux9_catalogue"
  228. # install disk
  229. ignoredisk --only-use=sda
  230. # selinux stop
  231. selinux --disabled
  232. # keyboard layouts
  233. keyboard us
  234. # system locale
  235. lang en_US
  236. # network settings
  237. network --bootproto=dhcp --ipv6=auto --activate --hostname=localhost
  238. network --bootproto=static --device=em2 --ip=192.168.3.100 --netmask=255.255.255.0 --gateway=192.168.3.11 --nameserver=8.8.8.8 --ipv6=auto --activate
  239. # root password you generated above
  240. rootpw --iscrypted $root_password
  241. # System timezone
  242. timezone Asia/Shanghai --isUtc
  243. # Run the Setup Agent on first boot
  244. firstboot --disable
  245. # Firewall configuration
  246. auth --passalgo=sha512 --useshadow
  247. firewall --enabled --ssh
  248. firstboot --disable
  249. # Automated low-level formatting
  250. zerombr
  251. #Automatic partition, / partition uses all space, disable home partition
  252. autopart --type=lvm --fstype=xfs --nohome
  253. # initialize all partition tables
  254. clearpart --all --initlabel
  255. #clearpart --none --initlabel
  256. # partitioning
  257. # for [/boot/efi], it needs only for UEFI clients
  258. #part pv.106 --fstype="lvmpv" --ondisk=sda --size=919974
  259. #part /boot --fstype="xfs" --ondisk=sda --size=1024
  260. #part /boot/efi --fstype="efi" --ondisk=sda --size=600 --fsoptions="umask=0077,shortname=winnt"
  261. #volgroup ro --pesize=4096 pv.106
  262. #logvol swap --fstype="swap" --size=8611 --name=swap --vgname=ro
  263. #logvol / --fstype="xfs" --size=911360 --name=root --vgname=ro
  264. # reboot after installing
  265. reboot
  266. %packages
  267. @^minimal-environment
  268. @console-internet
  269. kexec-tools
  270. net-tools
  271. vim
  272. unzip
  273. wget
  274. tmux
  275. git
  276. tree
  277. curl
  278. jq
  279. %end
  280. %post
  281. yum clean all
  282. yum makecache
  283. yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
  284. sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
  285. %end
  286. EOF
  287. echo "add Rockylinux8.10-ks.cfg"
  288. cat <<EOF>>$apache_catalogue/$rockylinx_cfg/Rockylinux8.10-ks.cfg
  289. # create new
  290. # automatically proceed for each steps
  291. graphical
  292. # AppStream
  293. repo --name="AppStream" --baseurl="http://${host_IP}/$rockylinux8_catalogue/AppStream"
  294. # Use network installation
  295. url --url=http://${host_IP}/$rockylinux8_catalogue
  296. # install disk
  297. ignoredisk --only-use=sda
  298. # selinux stop
  299. selinux --disabled
  300. # keyboard layouts
  301. keyboard us
  302. # system locale
  303. lang en_US
  304. # network settings
  305. network --bootproto=dhcp --ipv6=auto --activate --hostname=localhost
  306. network --bootproto=static --device=em2 --ip=192.168.3.100 --netmask=255.255.255.0 --gateway=192.168.3.11 --nameserver=8.8.8.8 --ipv6=auto --activate
  307. # root password you generated above
  308. rootpw --iscrypted $root_password
  309. # System timezone
  310. timezone Asia/Shanghai --isUtc
  311. # Run the Setup Agent on first boot
  312. firstboot --enable
  313. # Firewall configuration
  314. firewall --enabled --port=22:tcp
  315. # Automated low-level formatting
  316. zerombr
  317. #Automatic partition, / partition uses all space, disable home partition
  318. autopart --type=lvm --fstype=xfs --nohome
  319. # initialize all partition tables
  320. clearpart --all --initlabel
  321. # partitioning
  322. # for [/boot/efi], it needs only for UEFI clients
  323. #part /boot/efi --fstype="efi" --ondisk=sda --size=4096 --fsoptions="defaults,uid=0,gid=0,umask=0077,shortname=centos"
  324. #part /boot --fstype="xfs" --size=4096
  325. #part pv.12 --grow --fstype="lvmpv" --size=871120
  326. #volgroup ro --pesize=4096 pv.12
  327. #logvol swap --fstype="swap" --size=4096 --name=swap --vgname=ro
  328. #logvol / --fstype="xfs" --size=871120 --name=root --vgname=ro
  329. # reboot after installing
  330. reboot
  331. %packages
  332. @^minimal-environment
  333. kexec-tools
  334. net-tools
  335. vim
  336. unzip
  337. wget
  338. tmux
  339. git
  340. tree
  341. curl
  342. jq
  343. tar
  344. lm_sensors
  345. lm_sensors-libs
  346. %end
  347. %post
  348. yum clean all
  349. yum makecache
  350. yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
  351. %end
  352. EOF
  353. echo "uefl add"
  354. mkdir -p /rpm
  355. yum install yum-utils -y
  356. yumdownloader --resolve --destdir=/rpm shim grub2-efi-x64 syslinux-tftpboot
  357. cd /rpm
  358. rpm2cpio shim-x64-*.rpm | cpio -dimv
  359. rpm2cpio grub2-efi-x64-*.rpm | cpio -dimv
  360. rpm2cpio syslinux-tftpboot-* | cpio -dimv
  361. cp ./boot/efi/EFI/BOOT/BOOTX64.EFI $tftp_catalogue/
  362. cp ./boot/efi/EFI/rocky/grubx64.efi $tftp_catalogue/
  363. chmod 644 $tftp_catalogue/{BOOTX64.EFI,grubx64.efi}
  364. #Copy the EFI boot image from the boot directory
  365. echo "Copy the EFI boot image from the boot directory"
  366. mkdir -p $tftp_catalogue/uefi
  367. cp -rf /rpm/boot/efi/EFI/rocky/* $tftp_catalogue/uefi/
  368. echo "copy pxelinux"
  369. mkdir -p $tftp_catalogue/pxelinux
  370. cp /rpm/tftpboot/* $tftp_catalogue/pxelinux/
  371. echo "restrat dhcp http tftp"
  372. systemctl restart dhcpd httpd tftp
  373. echo "Deleting an rpm directory"
  374. rm -rf /rpm
  375. echo -e "\033[32mThe esxi pxe server Install Sussess...\033[0m"
  376. else
  377. echo -e "\033[33mThe esxi pxe server Install Failed...\033[0m"
  378. exit 1
  379. fi
  380. else
  381. echo -e "\033[31mThe esxi pxe server Install already...\033[0m"
  382. fi
  383. }
  384. main (){
  385. install_pxe_server
  386. }
  387. main

 执行安装

bash /rockylinux_pxe_server_rockylinx.sh

RockyLinux 8 9 Bios 自动化部署

​​

RockyLinux 8 9 uefi 自动化部署 

分区lvm ,去除home目录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/891818
推荐阅读
相关标签
  

闽ICP备14008679号