首页 > 其他分享 >PXE安装操作系统

PXE安装操作系统

时间:2024-12-19 16:59:44浏览次数:6  
标签:操作系统 -- 192.168 64 2403 ISO 安装 PXE x86

TODO:
制作N系统PXE工具,ISO,配置文件,DHCP服务识别配置,TFTP服务配置,(NFS服务,apache服务),自动安装(安装完,未重启后续安装其他应用),安装完成之后配置;
用户可操作部分:1.导入ISO,2.配置DHCP,TFTP,NFS,安装脚本,安装后配置或安装其他应用,重启后自动执行脚本
鲁棒性,复用性

rpm

一、
本文以同一台设备(主机)同时部署DHCP、TFTP及WEB服务(或NFS服务)为例进行讲解,本机的IP地址设置为192.168.122.2/24,使用192.168.122.0/24这个网段 。
二、DHCP服务部署

使用yum工具安装dhcp软件包,如果您的环境无法联网,可以使用操作系统安装光盘来配置yum源地址,避免安装过程遇到软件包相互依赖导致安装失败的问题。

yum install -y dhcp 

修改DHCP服务配置/etc/dhcp/dhcpd.conf配置文件如下:

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;		#配置option code 93(client system arch,查找客户端的CPU架构; 
# DHCP相关option code https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml)
# option code 93 https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml#processor-architecture
# options 映射关系 https://github.com/isc-projects/dhcp/blob/master/common/tables.c   
#                 https://github.com/isc-projects/dhcp/blob/master/common/dhcp-options.5

# dhcpd服务端所在的网段
subnet 192.168.122.0 netmask 255.255.255.0 {
    option routers 192.168.122.2;   # dhcpd服务所在主机的IP
    range 192.168.122.5 192.168.122.254;    # DHCP自动分配的子网网络范围
    next-server 192.168.122.2;    # tftpd服务所在主机的IP
    class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        # aarch64   uefi
        if option architecture-type = 00:0B {
            filename "UEFI/aarch64/grubaa64.efi";   # 操作系统镜像/EFI/BOOT/xxxxx.EFI 文件,具体文件要看该镜像里边的文件
        }
        # x86_64    uefi
        elsif option architecture-type = 00:07 or option architecture-type = 00:09{
            filename "UEFI/x86_64/grubx64.efi";		# 操作系统镜像 /EFI/BOOT/xxxxx.EFI 文件,具体文件要看该镜像里边的文件
        }
        # 0x00 0x00,x86 BIOS,[RFC5970][RFC4578]
        if option pxe-system-type = 00:00 { 
            filename "Legacy/ks-v10-sp3-r-2403-x86/pxelinux.0"
        }
    }
}

配置文件中定义了自动获取的IP地址池范围是192.168.100.100到192.168.100.200,并且在获得IP地址后会访问192.168.100.254。DHCP服务根据来自PXE的申请自动判断引导类型,自动选择UEFI引导加载 bootx64.efi 文件,或者 Legacy 引导加载 pxelinux/pxelinux.0 文件。
启动DHCP服务,并设置开机自动启动:

systemctl restart dhcpd ; systemctl enable dhcpd

三、TFTP服务部署,(tftp,xinetd可能需要在线安装),注:tftp一定要配置好否则奇怪问题就会出现,例如相对路径还是绝对路径都要试,因为--secure有时候会在ubuntu22.04 xinetd服务去管理tftpd服务设置失效

   --secure, -s
          Change  root directory on startup.  This means the remote host does not need to pass
          along the directory as part of the transfer, and may add security.  When --secure is
          specified,  exactly  one directory should be specified on the command line.  The use
          of this option is recommended for security as well as compatibility with  some  boot
          ROMs which cannot be easily made to include a directory name in its request.

使用yum工具安装tftp服务:

yum install -y tftp-server xinetd

修改/etc/xinetd.d/tftp文件,我们需要将这个文件中 disable 的设置修改为no:

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动xinted服务,并将该服务设置为开机自动启动:

systemctl restart xinetd ; systemctl enable xinetd

TFTP服务安装后,会创建/var/lib/tftpboot目录,我们需要把引导过程用到的文件复制到这个目录中,在客户端获得IP信息后,会通过TFTP访问该目录内容并下载文件,引导进入操作系统安装界面:

## 新结构

├── ISO-dir
│   ├── kd-v10-sp1-2403-r-20240426-x86_64
│   │   ├── casper                              # 镜像中拷贝casper文件夹
│   │   └── EFI                                 # 镜像中拷贝EFI文件夹
│   └── ks-v10-sp3-2403-r-20240426-x86_64
│       ├── EFI                                 # 镜像中拷贝EFI文件夹
│       ├── images                              # 镜像中拷贝images文件夹
│       └── isolinux                            # 镜像中拷贝isolinux文件夹
├── Legacy
│   ├── aarch64
│   │   └── ISO-dir -> ../../ISO-dir
│   └── x86_64
│       ├── ISO-dir -> ../../ISO-dir
│       ├── isolinux
│       │   ├── boot.msg                        # 系统ISO镜像/isolinux/boot.msg 文件
│       │   ├── vesamenu.c32                    # 系统ISO镜像/isolinux/vesamenu.c32 文件
|       |   └── splash.png                      # 系统ISO镜像/isolinux/splash.png 文件
│       └── pxelinux.0                          # syslinux包中文件,安装了syslinux包后在/usr/share/syslinux/pxelinux.0查找得
│       └── pxelinux.cfg                        # 手动建立配置文件夹
│           └── default                         # 手动建立配置文件
└── UEFI
    ├── aarch64
    │   └── ISO-dir -> ../../ISO-dir
    └── x86_64
        ├── BOOTX64.EFI
        ├── grub.cfg
        ├── grubx64.efi
        ├── ISO-dir -> ../../ISO-dir
        └── mmx64.efi


UEFI

# /var/lib/tftpboot/UEFI/.../grub.cfg文件对应EFI的引导方式,这个文件的内容如下:

set default="1"
function load_video {
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod all_video
}

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2

set timeout=60

### END /etc/grub.d/00_header ###
#search --no-floppy --set=root -l 'Kylin-Server-10-x86(x86_64)'
### BEGIN /etc/grub.d/10_linux ###

menuentry 'Install Kylin Linux Advanced Server V10 SP1 B20 0518 x86 ' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi UEFI/x86_64/ISO-dir/ks-v10-sp3-2403-r-20240426-x86_64/images/pxeboot/vmlinuz inst.repo=http://192.168.100.2/ks-v10-sp1-b20-0518-x86 ip=dhcp ks=http://192.168.100.2/kickstart.cfg nomodeset rd.live.check console=tty0 quiet
        initrdefi UEFI/x86_64/ISO-dir/ks-v10-sp3-2403-r-20240426-x86_64/images/pxeboot/initrd.img
}

menuentry 'try Kylin Linux  Desktop V10 2403 '  --class gnu-linux --class gnu --class os {
        linuxefi   UEFI/x86_64/ISO-dir/kd-v10-sp1-2403-r-20240426-x86_64/casper/vmlinuz only-ubiquity  boot=casper ip=dhcp fsck.mode=skip audit=0 security=none netboot=nfs nfsroot=192.168.100.2:/iso/kd-v10-sp1-2403-r-20240426-x86_64/ audit=0 quiet splash live --
        initrdefi UEFI/x86_64/ISO-dir/kd-v10-sp1-2403-r-20240426-x86_64/casper/initrd.lz
}

Legacy

# /var/lib/tftpboot/Legacy/ks-v10-sp3-2403/pxelinux.cfg/default文件对应Legacy的引导方式,这个文件的内容如下:

##https://wiki.syslinux.org/wiki/index.php?title=PXELINUX
# The initial Current Working Directory is either as supplied by DHCP option 210 (pxelinux.pathprefix), the hardcoded path-prefix or the parent directory of the PXELINUX file, as indicated by DHCP fields sname and file (sname="192.168.2.3" and file="boot/pxelinux.0" result in "tftp://192.168.2.3/boot/", or in "192.168.2.3::boot/" in older PXELINUX format) with the precedence as specified under the #Options section of this document.

# All unqualified filenames are relative to the Current Working Directory.

# The core module, "ldlinux.{c32,e32,e64}", is searched-for according to option 210, or, if (option 210 is) not set, in the same directory as the main bootloader file (e.g. pxelinux.0). 

### 注意isolinux/syslinux或pxelinux.0去找 menu.c32  https://wiki.syslinux.org/wiki/index.php?title=Menu#MENU_START
### rpm
DEFAULT vesamenu.c32
PROMPT 0
timeout 600
DISPLAY boot.msg
LABEL linux
    menu label ^Install Kylin Linux Advanced Server V10
    MENU DEFAULT
    KERNEL isolinux/vmlinuz
    append initrd=isolinux/initrd.img ip=dhcp inst.repo=http://192.168.100.2/ky10  nomodeset rd.live.check console=tty0 quiet

LABEL vesa
    menu label Install Kylin Linux Advanced Server V10 in ^basic graphics mode
    KERNEL vmlinuz
    append initrd=isolinux/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.100.2/ky10

### x86 rpm和deb混合支持
default vesamenu.c32
prompt 0
timeout 600
display boot.msg

label Server
    menu label ^Install Kylin Linux Advanced Server V10 SP3 2403 ^x86_64
    menu default
    kernel ISO-dir/ks-v10-sp3-2403-r-20240426-x86_64/isolinux/vmlinuz
    append initrd=/ISO-dir/ks-v10-sp3-2403-r-20240426-x86_64/isolinux/initrd.img ip=dhcp inst.repo=http://192.168.100.2/ky10

label Desktop
    menu label ^try Kylin Linux  Desktop V10 2403 ^out of install ^x86_64
    kernel ISO-dir/kd-v10-sp1-2403-r-20240426-x86_64/casper/vmlinuz
    append initrd=/ISO-dir/kd-v10-sp1-2403-r-20240426-x86_64/casper/initrd.lz boot=casper only-ubiquity  ip=dhcp  fsck.mode=skip audit=0 security=none netboot=nfs nfsroot=192.168.100.2:/iso/kd-v10-sp1-2403-r-20240426-x86_64/ quiet splash live --

四、WEB服务部署

# 安装WEB服务:

yum install httpd

# 创建KY10目录用于提供中标麒麟高级服务器操作系统KY10安装介质的HTTP访问:

mkdir -p /var/www/html/ky10

# 准备WEB服务所需要用到的数据文件。这里我们提供了三种方式,分别是复制光盘数据到本地磁盘、直接挂载光盘到指定目录及直接挂载ISO文件到指定目录:

# 挂载光盘到/mnt目录
mount /dev/sr0 /mnt
# 复制数据到/var/www/html/KY10目录
shopt -s dotglob
cp -avRf /mnt/* /var/www/html/ky10
# 或者使用下面方式,直接将光盘挂载到/var/www/html/ky10
mount /dev/sr0 /var/www/html/ky10
# 如果使用的是ISO文件,可以这样挂载,请根据实际情况调整ISO文件路径:
mount -o loop /opt/ky10.iso /var/www/html/ky10

五、kickstart R系自动应答安装
/root/initial-setup-ks.cfg
在上grub配置文件下.cfg配置里面后面ks=http://192.168.1.1/xxxxx.cfg

六、防火墙设置

默认情况下,系统会开启防火墙设置,我们为了使上面的服务正常对外提供响应,需要开放下列端口号:
DHCP服务67/UDP
TFTP服务69/UDP
Web服务80/TCP
通过 firewall-cmd 命令添加防火墙设置:

firewall-cmd --add-service=dhcp --add-service=tftp --add-service=http --permanent
firewall-cmd --reload

deb

如果我们需要在已经部署完成的服务器网络安装基础环境上追加安装选项内容,需要调整引导启动过程提供的菜单列表,例如这里我们以添加银河麒麟桌面操作系统V10为例,进行讲解。
银河麒麟桌面版本本身提供了LiveCD的运行模式,这个过程中加载了一个约2.7G的squashfs文件,如果通过网络下载这个文件,会花费大量时间,因此在桌面操作系统的网络安装配置上,和服务器版本略有区别,下面是部署过程。
需求服务:dhcpd,tftpd,nfs,自动应答

(二)配置NFS服务

我们使用NFS服务来对外共享前面提到的squashfs文件,这样客户端可以直接将该文件挂载到本地目录环境下进行访问。
安装NFS服务:

yum install nfs-utils
# 创建目录/iso/kd-v10-sp1-2403-r-20240426-x86_64

mkdir -p /iso/kd-v10-sp1-2403-r-20240426-x86_64

# 这里我们用挂载的方式将ISO文件挂载到刚刚创建的这个V10目录,如果计划复制光盘中所有文件到本地磁盘或者通过光盘提供访问,可以参考本文前面服务器的操作方式进行操作。

mount -o loop xxx.iso /iso/kd-v10-sp1-2403-r-20240426-x86_64

# 配置NFS共享,我们需要打开/etc/exports文件,添加下面内容:

/iso/kd-v10-sp1-2403-r-20240426-x86_64    *(rw,sync,no_root_squash,no_subtree_check)

# 启动NFS服务,并设置开机自动启动:

systemctl restart nfs ; systemctl enable nfs

# 防火墙开放NFS服务端口:

firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload
# 测试挂载
mount IP:路径   /mnt

以上操作完成后,您在客户端通过PXE网络引导时,就能看到银河麒麟桌面版本的安装菜单选项,并可通过该选项进行操作系统安装。

标签:操作系统,--,192.168,64,2403,ISO,安装,PXE,x86
From: https://www.cnblogs.com/huangjinbang1996/p/18617429

相关文章

  • Fiddler(抓包测试工具)下载安装步骤
    目录介绍主要功能:使用场景:一、下载二、安装​编辑三、测试介绍Fiddler是一个强大的网络调试工具,用于捕获和分析HTTP/HTTPS请求与响应。它通过代理服务器捕获流量,帮助开发者调试Web应用、API,进行性能分析和安全测试。ps:一般搭配postman使用进行测试网页主要功......
  • HarmonyOS应用开发---DevEco CodeGenie编程AI辅助工具安装
    首款开发鸿蒙原生应用的AI辅助编程工具作为DevEcoStudio的AI辅助编程工具,DevEcoCodeGenie通过智能问答、代码补全/生成、万能卡片三大核心功能,打造高效智能开发体验。DevEcoCodeGenie的智能问答功能就像是开发者的智慧伙伴。无论是初涉鸿蒙原生应用开发的新手,还是经验丰富......
  • renben-安装OpenStack报错处理1
    1.执行packstack--gen-answer-file=openstack.txt报错内容如下解决方法:查找computer或者controller节点的源有没有设置正确,源目录只保留OpenStack源其他的备份到bak目录中 2.controller节点操作  source/root/keystonerc_admin查看openstack中keystone的end......
  • AI视频智能分析网关视频监控安装时,采用集中供电方式布线需要考虑的关键点有哪些?
    在现代视频监控系统中,为了确保系统的稳定性和图像质量,合理的布线和电源管理至关重要。特别是在采用集中供电方式时,需要综合考虑多个关键因素,以实现高效且可靠的监控系统。以下是进行视频监控安装时,采用集中供电方式布线需要考虑的几个关键点。1、电源线规格选择1)监控行业常用的......
  • 效率神器Listary如何安装,附安装包
    前言大家好,我是小徐啊。Listary是一款类似于everything的搜索神器,但又有所区别。它主要是让我们减少选择目录或者文件的鼠标点击次数。解决了一大波windows的操作问题,非常方便。今天,小徐就来介绍下这个神器。文末附获取方式。如何安装Listary首先,我们双击下Listary的安装包,开始......
  • Appscan 的安装与使用
    一、安装1、右键安装文件,以管理员身份运行,如下图所示:2、点击【确定】3、点击【安装】4、选择:我接受许可协议中单位全部条款,点击【下一步】5、点击【安装】到该目录6、如果需求扫描Webservices点击【是】安装该插件,如果不需要点击【否】如果只是扫描web就不需......
  • 【2024-2017】Adobe图像处理软件 Photoshop(常简称为PS)下载安装
    AdobePhotoshop软件简介AdobePhotoshop(常简称为PS)是由Adobe公司开发的一款图像处理软件。自1988年首次发布以来,Photoshop以其强大的图像编辑功能和用户友好的界面而受到全球设计师、摄影师以及艺术家的喜爱。它广泛应用于摄影后期处理、数字绘画、图形设计、网页设计以及动......
  • 操作系统-同步问题分析
    生产者-消费者问题问题描述:一组生产者和一组消费者共享一个大小为n的缓冲区;只有缓冲区还有空位的时候生产者才能往里放数据;只有缓冲区不为空的时候消费者才能从中取数据;缓冲区是临界资源,只允许一个生产者往里放数据或者一个消费者从中取数据关系分析:因为缓冲区是临界资源,所以......
  • zabbix-agent安装
    环境:OS:Centos7zabbix:4.0.51.将基础镜像修改为阿里云的curl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumcleanall 2.生成zabbixyum文件rpm-Uvhhttps://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el......
  • win10下安装配置mysql5.7Windows下使用解压版配置安装MySQL
    1.下载MySQL访问MySQL官方网站下载页面:https://dev.mysql.com/downloads/mysql/选择MySQLCommunityServer(免费版),选择适合Windows的版本(例如,Windows(x86,32-bit),MSIInstaller)。下载安装程序并运行。2.使用msi直接安装MySQL运行下载的安装程序。接受许可协议。在安装类型选......