iPXE 学习 摆设Linux/Windows体系 支持IPv4/IPv6
折腾了一周的iPXE,大概弄明白了,ipxe原理 文件的具体作用就不讲了 自己也半懂不懂不外有一说一 这大概是全网最完全的iPXE情况摆设了
纪录自己操作的每一个步骤 ┭┮﹏┭┮
为了支持legacy BIOS 以及 UEFI 还要同时支持IPv4/IPv6
我先说一下 我的呆板是多网卡
配置ipxe的端口连接了一个内网交换机 摆设的设备呆板(client)连接内网
yum 下载东西是通过外网口
前期准备
iPXE server :
OS:CentOS Stream 9
kernel:5.14.0-391.el9.x86_64
1. 开启ssh远程登陆,方便远程操作
vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin yes
:wq
systemctl restart sshd 2. 配置静态ip,根据自己需求配置就行,我准备用enp1s0作为dhcp端口
IPv4 设置为 10.10.10.10
IPv6 设置为 2024:1::1
IPv6 前缀天生:Unique Local IPv6 Generator (unique-local-ipv6.com)
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 10.10.10.10netmask 255.255.255.0broadcast 10.10.10.255
inet6 fe80::76fe:48ff:fe04:f56aprefixlen 64scopeid 0x20<link>
inet6 2024:1::1prefixlen 64scopeid 0x0<global>
ether 74:fe:48:04:f5:6atxqueuelen 1000(Ethernet)
RX packets 606bytes 81017 (79.1 KiB)
RX errors 0dropped 0overruns 0frame 0
TX packets 296bytes 30501 (29.7 KiB)
TX errors 0dropped 0 overruns 0carrier 0collisions 0
device memory 0x80800000-8087ffff
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>mtu 1500
ether 74:fe:48:04:f5:6btxqueuelen 1000(Ethernet)
RX packets 0bytes 0 (0.0 B)
RX errors 0dropped 0overruns 0frame 0
TX packets 0bytes 0 (0.0 B)
TX errors 0dropped 0 overruns 0carrier 0collisions 0
device memory 0x80500000-805fffff
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.4.117netmask 255.255.255.0broadcast 192.168.4.255
inet6 fe80::2e0:4cff:fe68:3prefixlen 64scopeid 0x20<link>
ether 00:e0:4c:68:00:03txqueuelen 1000(Ethernet)
RX packets 49776bytes 31614023 (30.1 MiB)
RX errors 0dropped 2overruns 0frame 0
TX packets 10959bytes 735874 (718.6 KiB)
TX errors 0dropped 0 overruns 0carrier 0collisions 0
3.配置yum源:阿里镜像源
报错curl: (6) Could not resolve host
改DNS 8.8.8.8 114.114.114.114
安装git
yum install git 4. 关闭防火墙 以及seLinux
##永久关闭
# systemctl stop firewalld.service
# systemctl disable firewalld.service
##添加规则
# firewall-cmd--add-service=http --permanent
FirewallD is not running
# firewall-cmd--add-service=tftp --permanent
FirewallD is not running
# firewall-cmd--reload
##临时关闭selinux
# setenforce 0
#
##永久关闭
vim /etc/selinux/config
SELINUX=disabled
:wq
一、安装iPXE
1.1. 安装iPXE
下载地址:https://github.com/ipxe/ipxe.git
# git clone https://github.com/ipxe/ipxe.git 若是git 报错 如下处理; 重新下载iPXE
##编辑
vim /etc/hosts
140.82.113.4 github.com
140.82.114.4 gist.github.com
:wq
##重启网络
systemctl restart NetworkManager
# git clone https://github.com/ipxe/ipxe.git
Cloning into 'ipxe'...
remote: Enumerating objects: 59629, done.
remote: Counting objects: 100% (13184/13184), done.
remote: Compressing objects: 100% (1723/1723), done.
remote: Total 59629 (delta 11831), reused 11543 (delta 11461), pack-reused 46445
Receiving objects: 100% (59629/59629), 17.87 MiB | 5.01 MiB/s, done.
Resolving deltas: 100% (45094/45094), done.
#
1.2. 安装iPXE编译坏境
yum install gcc binutils make perl liblzma mtools mkisofs xz-devel # yum install gcc binutils make perl liblzma mtools mkisofs xz-devel
Last metadata expiration check: 0:25:50 ago on Fri 26 Jan 2024 03:24:40 PM CST.
Package gcc-11.4.1-2.3.el9.x86_64 is already installed.
Package binutils-2.35.2-42.el9.x86_64 is already installed.
Package make-1:4.3-7.el9.x86_64 is already installed.
No match for argument: liblzma
Package mtools-4.0.26-4.el9.x86_64 is already installed.
Package xorriso-1.5.4-4.el9.x86_64 is already installed.
Package xz-devel-5.2.5-8.el9.x86_64 is already installed.
Error: Unable to find a match: liblzma
不用管liblzma (liblzma or xz header files)
假如报错Can't locate FindBin.pm in @INC (you may need to install the FindBin module)
缘故原由perl 没有下载 下载perl后重新编译
编译成功:表现ipxe的相关用法 我们背面自定义image
===========================================================
To create a bootable floppy, type
cat bin/ipxe.dsk > /dev/fd0
where /dev/fd0 is your floppy drive.This will erase any
data already on the disk.
To create a bootable USB key, type
cat bin/ipxe.usb > /dev/sdX
where /dev/sdX is your USB key, and is *not* a real hard
disk on your system.This will erase any data already on
the USB key.
To create a bootable CD-ROM, burn the ISO image
bin/ipxe.iso to a blank CD-ROM.
These images contain drivers for all supported cards.You
can build more customised images, and ROM images, using
make bin/<rom-name>.<output-format>
二、摆设PXE引导iPXE
通过PXE服务引导iPXE
具体情况就是通过sever上网卡(PXE) 引导加载编译好的iPXE image (包罗了其他全部网卡)
2.1 下载tftp dhcpd httpd
留意: CentOS 8版本 以前的体系需要安装xinetd
在 RHEL/CentOS 的更高版本中,我们大概不需要 xinetd,因为在以前的版本中,tftp 是由 xinetd 管理的,关于xinetd的配置在后文
yum install dhcp-server tftp-serverhttpd # yum install dhcp-server httpd tftp-server
Last metadata expiration check: 5:07:54 ago on Tue 30 Jan 2024 10:51:22 AM CST.
Package dhcp-server-12:4.4.2-19.b1.el9.x86_64 is already installed.
Package httpd-2.4.57-6.el9.x86_64 is already installed.
Package tftp-server-5.2-37.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
2.2 配置ipv4 ipv6 dhcp 服务器
参拷/usr/share/doc/dhcp-server/dhcpd.conf.example 编辑 /etc/dhcp/dhcpd.conf 配置文件
参拷/usr/share/doc/dhcp-server/dhcpd6.conf.example 编辑 /etc/dhcp/dhcpd6.conf 配置文件
关于DHCP 配置 PXE 参数的可以检察 RedHat or CentOS官方的参拷链接
关于DHCP PXE文件参数的说明 参拷 博主 lvbibir的博客
关于DHCP 服务相关参数 见 本文 参考资料
说明:
ipxe.efi UEFI 启动引导文件
undionly.kpxe Legacy 启动引导文件
已经编译好的文件:
链接:https://pan.baidu.com/s/1RoFpb5aeTIJqPeijjLeLTQ
提取码:1111
是自定义编译iPXE后天生的 这里先在DHCP配置中文件写好了。
参数为什么如许写参拷 lvbibir 博客
# 启用 PXE 支持
allow booting;
allow bootp;
# PXE 定义命名空间
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; # RFC4578
authoritative;
one-lease-per-client true;
# 不使用DNS动态更新
ddns-update-style none;
# 忽略客户端DNS更新
ignore client-updates;
# 使用 PXE 的网络
subnet 10.10.10.0 netmask 255.255.255.0 {
option routers 10.10.10.10;
# option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.10.10.20 10.10.10.254;
default-lease-time 28800;
max-lease-time 43200;
next-server 10.10.10.10;
class "pxeclients" {
# 这里判断 option 60 选项的值的前9个字符是否是 PXEClient
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
# 这里通过 if 判断 arch 代码来决定如何去分配对应的 pxe 引导程序
# Legacy
if option system-arch = 00:00 {
filename "undionly.kpxe";
}
# UEFI-64
else if option system-arch = 00:07 {
filename "UEFI/ipxe.efi";
}
# aarch64 ( arm 64 bit)
else if option system-arch = 00:0b {
filename "arm/ipxe.efi";
}
else
{
filename "undionly.kpxe";
}
}
dhcp6 配置配置文件
allow booting;
allow bootp;
option dhcp6.bootfile-url code 59 = string;
option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
option dhcp6.user-class code 15 = { integer 16, string };
option dhcp6.name-servers 2024:1::1;
option dhcp6.bootfile-url "tftp:///ipv6/ipxe.efi";
subnet6 2024:1::/64 {
range6 2024:1::100 2024:1::ffff;
}
2.3 下载 radvd
路由广告守护进程 radvd( (router advertisement daemon))发送路由器公告信息,这是 IPv6 无状态自动配置所需的。这可让用户根据这些公告自动配置其地址、设置、路由和选择默认路由。
下载radvd
yum install radvd 2.4 配置 radvd
vim /etc/radvd.conf interface enp1s0
{
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 600;
AdvManagedFlag on;
AdvOtherConfigFlag on;
prefix 2024:1::/64
{
AdvPreferredLifetime 3600;
AdvValidLifetime 7200;
};
route 2024:1::/64
{
};
};
2.5 启动radvd 服务
设置开机自启动
systemctl start radvd
systemctl enable radvd 2.6 启动dhcp dhcp6服务
设置开机自启动
#设置开机自启动
# systemctl start dhcpd
# systemctl enable dhcpd
#
# systemctl start dhcpd6
# systemctl enable dhcpd6 2.7 dhcp服务检查
若局域网内有其他呆板处于开机状态可以看看有没有自动分配ipv4 ipv6地址
Ping检查通讯正常
https://i-blog.csdnimg.cn/blog_migrate/7b30ae52c4b98f8866b0304961dbc019.png
2.8 配置tftp(RHEL/CentOS 8/9可以省略此步)7版本必须配置
下载xinetd服务
yum install xinetd -y 编辑vim /etc/xinetd.d/tftp文件 若没有 需要手动创建
vim /etc/xinetd.d/tftp disable = yes 改为 no
默认路径 /var/lib/tftpboot
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -c#文件路径/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv 4
} 启动xinetd服务
#设置开机自启动
systemctl start xinetd
systemctl enable xinetd 2.9 配置tftp服务
在 RHEL/CentOS 的更高版本中,我们大概不需要 xinetd,因为在以前的版本中,tftp 是由 xinetd 管理的,但是现在它由 systemd 管理。
RHEL/CentOS 8/9 检察 systemd 单位文件的路径
rpm -ql tftp-server | grep -E "service|socket" #rpm -ql tftp-server | grep -E "service|socket"
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
# cat /usr/lib/systemd/system/tftp.service
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket
Also=tftp.socket
# pwd
/var/lib/tftpboot
2.10 启动 tftp 服务
设置开机自启动
systemctl daemon-reload
systemctl restart tftp.service
systemctl enable tftp.service --now 一段时间后,服务大概表现为非运动状态,这是意料之中的,由于tftp服务由tftp套接字管理,因此套接字启动并运行是很紧张的。当有传入的TFTP哀求时,套接字将自动启动服务。
检查套接字的状态以确保它已成功启动。
systemctl status tftp.socket # systemctl status tftp.socket
● tftp.socket - Tftp Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/tftp.socket; enabled; preset: disabled)
Active: active (listening) since Tue 2024-01-30 14:13:30 CST; 1h 40min ago
Until: Tue 2024-01-30 14:13:30 CST; 1h 40min ago
Triggers: ● tftp.service
Listen: [::]:69 (Datagram)
Tasks: 0 (limit: 201875)
Memory: 4.0K
CPU: 271us
CGroup: /system.slice/tftp.socket
Jan 30 14:13:30 localhost systemd: Listening on Tftp Server Activation Socket.
#
2.11 配置 http服务
备份welcome.conf文件
cd /etc/httpd/conf.d
mv welcome.conf welcome.conf.bak 2.12 启动 http服务
设置开机自启动
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Tue 2024-01-30 14:13:43 CST; 1h 52min ago
Docs: man:httpd.service(8)
Main PID: 1408 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
Tasks: 214 (limit: 201875)
Memory: 43.8M
CPU: 4.970s
CGroup: /system.slice/httpd.service
├─1408 /usr/sbin/httpd -DFOREGROUND
├─1587 /usr/sbin/httpd -DFOREGROUND
├─1588 /usr/sbin/httpd -DFOREGROUND
├─1589 /usr/sbin/httpd -DFOREGROUND
├─1590 /usr/sbin/httpd -DFOREGROUND
└─1591 /usr/sbin/httpd -DFOREGROUND
Jan 30 14:13:43 localhost.localdomain systemd: Starting The Apache HTTP Server...
Jan 30 14:13:43 localhost.localdomain httpd: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.locald>
Jan 30 14:13:43 localhost.localdomain httpd: Server configured, listening on: port 443, port 80
Jan 30 14:13:43 localhost.localdomain systemd: Started The Apache HTTP Server.
lines 1-21/21 (END)
2.13 上传操作体系镜像至OS
上传iPXE 需要摆设的镜像ISO到server
背面介绍Windows怎么摆设
-rw-r--r--. 1 root root 4712300544 Jan 10 10:50 CentOS-7-x86_64-DVD-2009.iso
-rw-r--r--1 root root 6102130688 May42023 zh-cn_windows_10_consumer_editions_version_22h2_updated_april_2023_x64_dvd_80cec13e.iso
#
创建目次
mkdir /var/www/html/centos7.9
挂载镜像
mount CentOS-7-x86_64-DVD-2009.iso /mnt/
拷贝体系文件到 http 目次
注:若使用其他方式拷贝镜像,需要保证目的体系镜像目次下有隐藏文件.treeinfo
cp -a /mnt/* /var/www/html/centos7.9
# ls -a
. CentOS_BuildTagEFI GPL isolinuxPackagesRPM-GPG-KEY-CentOS-7 TRANS.TBL
...discinfo EULAimagesLiveOS repodataRPM-GPG-KEY-CentOS-Testing-7.treeinfo
#
2.14 重启httpd服务
systemctl restart httpd 2.15 http服务检查
局域网内可以通过浏览器正常访问
IPv4
https://i-blog.csdnimg.cn/blog_migrate/80280870f0baff03ff832ae84676d428.png
IPv6
https://i-blog.csdnimg.cn/blog_migrate/fda30a4ca92df0bacada84d8bffaaabd.png
若提示
Forbidden
You don't have permission to access XXX on this server
请参拷此设置 : CentOS7下Apache服务器提示无权访问
若提示网页无法访问 检查是否开启了 代理 或者 科学上网
参拷: 【办理方案】Microsoft Edge 浏览器 出现“无法访问该页面”问题_we couldn鈥檛 load the requested page. please try ag-CSDN博客
三、创建定义iPXE引导
3.1 编写demo.ipxe 冲破循坏
demo.ipxe 的作用:冲破无限循环的另一种方法是使用嵌入式脚本构建 iPXE
boot.php 的作用:启动菜单配置文件
在/root/ipxe/src目次下 vim demo.ipxe文件
在/root/ipxe/src目次下 vim demo-ipv6.ipxe文件
cd/root/ipxe/src
# cat demo.ipxe
#!ipxe
dhcp
chain http://10.10.10.10/boot.php
#
# vim demo-ipv6.ipxe
# cat demo-ipv6.ipxe
#!ipxe
dhcp
chain http:///ipv6/boot-ipv6.php
#
您可以通过网络启动某些内容。与传统的 PXE ROM 不同,iPXE 可以或许通过广域网(如 Internet)启动。假如要测试的盘算机已连接到 Internet,则可以启动 iPXE
chain 下令的作用 下载并启动可实行映像
chain http://boot.ipxe.org/demo/boot.php 3.2 嵌入脚本编译 ipxe 引导文件
编译legacy mode 引导
IPv6 PXE不支持legacy boot
# make bin/undionly.kpxe EMBED=demo.ipxe
# make bin/undionly.kpxe EMBED=demo.ipxe
image/embedded.c bin/embedded.o bin/blib.a bin/version.undionly.kpxe.o bin/undionly.kpxe.tmp bin/undionly.kpxe.bin bin/undionly.kpxe.zinfo bin/undionly.kpxe.zbin bin/undionly.kpxerm bin/undionly.kpxe.bin bin/undionly.kpxe.zinfo bin/version.undionly.kpxe.o bin/undionly.kpxe.zbin# 编译 UEFI mode 引导
# make bin-x86_64-efi/ipxe.efi EMBED=demo.ipxe # make bin-x86_64-efi/ipxe.efi EMBED=demo.ipxe
core/version.c
arch/x86/transitions/librm.S
arch/x86/transitions/libpm.S
..............................................................
.............................................................. 等候编译完成
创建目次/var/lib/tftpboot/UEFI/ mkdir /var/lib/tftpboot/ipv6/
mkdir /var/lib/tftpboot/UEFI/
mkdir /var/lib/tftpboot/ipv6/ 拷贝至/var/lib/tftpboot目次下
cp /root/ipxe/src/bin/undionly.kpxe /var/lib/tftpboot/
cp /root/ipxe/src/bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/UEFI/ 修改vim /root/ipxe/src/config/general.h 文件 第38行 取消注释
33* Network protocols
34*
35*/
36
37 #define NET_PROTO_IPV4 /* IPv4 protocol */
38 #define NET_PROTO_IPV6/* IPv6 protocol */
39 #undefNET_PROTO_FCOE /* Fibre Channel over Ethernet protocol */
40 #define NET_PROTO_STP /* Spanning Tree protocol */
41 #define NET_PROTO_LACP /* Link Aggregation control protocol */
42 #define NET_PROTO_EAPOL /* EAP over LAN protocol */
43 //#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
再次编译demo-ipv6.ipxe
# make bin-x86_64-efi/ipxe.efi EMBED=demo-ipv6.ipxe
# make bin-x86_64-efi/ipxe.efi EMBED=demo-ipv6.ipxe
image/embedded.c bin-x86_64-efi/embedded.o bin-x86_64-efi/blib.a bin-x86_64-efi/version.ipxe.efi.o bin-x86_64-efi/ipxe.efi.tmp bin-x86_64-efi/ipxe.efirm bin-x86_64-efi/version.ipxe.efi.o# 拷贝至/var/lib/tftpboot目次下
cp /root/ipxe/src/bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/ipv6
3.3 编写boot.php启动菜单配置文件
我们打开boot.php文件里的内容 看看
可以看到下载了kernel 和 img 然后启动
https://i-blog.csdnimg.cn/blog_migrate/14a4637bcdd8f4dc841fa6944408b672.png
Legacy 和 UEFI模式可共用同一启动菜单配置文件 boot.php
WindowsPE引导待会在做
kickstart 文件配置参拷Kickstart 安装 :: CentOS Docs Site
现在我们在 /var/www/html/ 目次下编写一个一样的boot.php文件以及boot-ipv6.php文件
boot menu参数参拷:iPXE启动菜单详解-CSDN博客
关于内外网 boot.php 参拷 ipxe菜单 内嵌实现自动判定服务器,外网内网全协议自动判定启动 - 网络启动区 - 无忧启动论坛 - Powered by Discuz! (wuyou.net)
vim boot.php
#!ipxe
#打印信息
echo platform..........: ${platform}
echo chip .............: ${chip}
echo mac...............: ${mac}
echo ip................: ${ip}
echo netmask...........: ${netmask}
echo gateway...........: ${gateway}
echo dns...............: ${dns}
echo domain............: ${domain}
echo dhcp-server.......: ${dhcp-server}
echo filename..........: ${filename}
echo next-server.......: ${next-server}
echo boot menu will show in 5 seconds
sleep 10
#启动菜单
:start
menu iPXE Boot Menu --BootType-[${platform}]--${ip}
item --gap -- Linux OS
item --key R reboot R---- Reboot
item --key L local L---- Boot To Local Drive
item --key 0 CentOS7.9 0---- CentOS 7.9
item --gap -- Microsoft Windows
item --key 1 WIN10 1---- Windows 10
item --gap -- Tool
item --key S shell S---- iPXE shell
#等60S默认启动reboot
choose --default reboot --timeout 60000 target && goto ${target}
#kickstart 安装 CentOS
:CentOS7.9
kernel http://{next-server}/centos7.9/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=http://{next-server}/centos7.9 ks=http://{next-server}/centos7u9.cfg
initrd http://{next-server}/centos7.9/images/pxeboot/initrd.img
boot
#安装Windows
:WIN10
kernel http://{next-server}/wimboot
initrd http://{next-server}/win10pe/install.bat install.bat
initrd http://{next-server}/win10pe/winpeshl.ini winpeshl.ini
initrd http://{next-server}/win10pe/Boot/BCD BCD
initrd http://{next-server}/win10pe/Boot/boot.sdi boot.sdi
initrd http://{next-server}/win10pe/sources/boot.wim boot.wim
initrd http://{next-server}/win10pe/bootmgr.efi bootmgr.efi
boot
#从硬盘启动
:local
sanboot --no-describe --drive 0x80 || goto start
:shell
shell || goto start
:reboot
reboot
:wq boot-ipv6.php 文件 和 boot.php 同等 更换 url 即可
创建 mkdir /var/www/html/ipv6/ 文件夹用存放boot-ipv6.php
:CentOS7.9
kernel http:///centos7.9/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=http:///centos7.9 ks=http:///centos7u9.cfg
initrd http:///centos7.9/images/pxeboot/initrd.img
boot
:WIN10
kernel http:///wimboot
initrd http:///win10pe/install.bat install.bat
initrd http:///win10pe/winpeshl.ini winpeshl.ini
initrd http:///win10pe/Boot/BCD BCD
initrd http:///win10pe/Boot/boot.sdi boot.sdi
initrd http:///win10pe/sources/boot.wim boot.wim
initrd http:///win10pe/bootmgr.efi bootmgr.efi
boot
ok 这里就根本完成了
重启一下 httpd服务
systemctl restart httpd 现在局域网的其他设备可以通过BIOS-->PXE boot 验证一下CentOS启动了
https://i-blog.csdnimg.cn/blog_migrate/8c84a64ff2a862b812baa4b4dfa02ce8.png
四、 Windows安装情况配置
4.1 下载Windows ADK 制作PE
ADK下载:Download and install the Windows ADK | Microsoft Learn
安装完成之后以管理员身份运行 Deployment and Imaging Tools Environment
https://i-blog.csdnimg.cn/blog_migrate/d8106116de35c909f2016a9421aa20be.png
这里我只创建了64位PE
mkdir C:\temp\winpe
## 创建32位PE
copype x86 C:\temp\winpe\x86
## 创建64位PE
copype amd64 C:\temp\winpe\amd64 目次 C:\winpe\media 下即为 WINPE 文件
新建mkdir /var/www/html/win10pe文件夹
mkdir /var/www/html/win10pe 将media文件的内容拷贝至/var/www/html/win10pe
用scp传输输入root暗码
C:\winpe\media>scp -r C:\winpe\media\root@192.168.4.117:/var/www/html/win10pe # ls
bg-bg bootmgr.efide-deen-gbes-mxfr-cahu-hu ja-jplv-lvpl-plro-rosl-si sr-latn-rsuk-ua zh-tw
Boot cs-cz EFI en-uset-eefr-frinstall.batko-krnb-nopt-brru-rusmb.conf-backupsv-se winpeshl.ini
bootmgrda-dk el-gres-esfi-fihr-hrit-it lt-ltnl-nlpt-ptsk-sksources tr-tr zh-cn
#
4.2 下载 wimboot
wimboot 为一款 Windows 镜像格式文件的引导步伐,可让你可以或许启动到 WinPE 情况
下载地址:https://github.com/ipxe/wimboot/releases/latest/download/wimboot
您可以从 https://github.com/ipxe/wimboot/releases/latest/download/wimboot 下载最新版本的二进制文件。这是一个混淆二进制文件,可在 BIOS 和 64 位 UEFI 体系(包括启用了安全启动的 UEFI 体系)上运行。wimboot
您还可以从 Release v2.7.6 (2023-08-16) · ipxe/wimboot · GitHub 下载替换二进制文件(例如用于 32 位 UEFI 体系)。
旧版本可从 Releases · ipxe/wimboot · GitHub 获得。
源代码生存在 GitHub - ipxe/wimboot: WIM bootloader 的存储库中。git
将winboot上传至 /var/www/html
# ll
total 84
-rw-r--r-- 1 root root1739 Feb1 12:03 boot.php
drwxr-xr-x.8 root root4096 Jan 26 17:48 centos7.9
-rw-r--r--.1 root root1945 Jan 26 18:37 centos7u9.cfg
drwxr-xr-x 2 root root 27 Feb1 13:44 ipv6
-rw-r--r-- 1 root root 67200 Jan 29 17:30 wimboot
drwxr-xr-x40 root root4096 Jan 29 17:36 win10pe
# pwd
/var/www/html
#
4.3 安装smaba服务传输Windows文件
yum install samba samba-client 创建共享目次和 samba 用户
mkdir /smbshare
useradd smbuser
smbpasswd -a smbuser
chown smbuser:smbuser /smbshare 修改和添加以下配置。为配置方便,此 samba 配置为答应匿名访问
vim /etc/samba/smb.conf
workgroup = WORKGROUP
guest account = root
comment = Windows Media
path = /smbshare
public = yes
writeable = no
browseable = yes
guest ok = yes
设置开机自启动
systemctl start smb
systemctl enable smb 拷贝Windows镜像到smaba目次
mount Win10.iso /mnt
cp -a /mnt/* /smbshare/win10 4.4. 验证samba服务器正常访问
通过局域网的Windows访问samba服务
https://i-blog.csdnimg.cn/blog_migrate/def90380fe363f10deeb0765b39f26dc.png
4.5 创建的批处理文件 install.bat
创建的批处理文件 install.bat 中包罗连接文件服务器和运行 Windows 安装步伐的下令
wpeinit
net use z: \\10.10.10.10\smbshare\win10
z:\setup.exe 4.6 创建指示文件 winpeshl.ini
vim /var/www/html/win10pe/winpeshl.ini
"install.bat" ok 至此全部步骤都已完成!!!
五、iPXE 情况验证
本人IPv4 / IPv6 PXE均可正常安装
Windows:
win11 报错 this pc can't run windows 11 参拷:
怎样办理安装Windows11时出现“这台电脑无法运行Windows11”_这台电脑无法运行win11-CSDN博客
win11 跳过联网参拷:
Windows11跳过联网激活 & 跳过登陆操作 - 个人文章 - SegmentFault 思否
https://i-blog.csdnimg.cn/blog_migrate/94ea9afd1a32f336dd2d923048084bd0.png
Linux:
legacy mode 也没问题的
https://i-blog.csdnimg.cn/blog_migrate/92cc88864aadc1b2b6cd6ac4bdd9bd99.jpeg
https://i-blog.csdnimg.cn/blog_migrate/db37ea03c45d47f9d6bce89466cd89e1.jpeg
在局域网的虚拟机legacy BIOS 引导不了iPXE好奇怪 ip都正常分配了 大概是我用的虚拟机版本太新了吧
https://i-blog.csdnimg.cn/blog_migrate/49f08f83853aaf627a16e8345e7f3611.png
UEFI可以
https://i-blog.csdnimg.cn/blog_migrate/ec969793fbdb63768c4a9573a9620542.png
其他:
想说点什么
参拷资料:
iPXE - open source boot firmware
第 24 章 准备网络安装 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
14.5. DHCP for IPv6 (DHCPv6) Red Hat Enterprise Linux 7 | Red Hat Customer Portal
准备使用 PXE 从网络安装 :: CentOS Docs Site
pxe 怎样应对复杂的服务器硬件情况 | lvbibir's Blog
动态主机配置协议 (DHCP) 和引导协议 (BOOTP) 参数 (iana.org)
Dynamic Host Configuration Protocol for IPv6 (DHCPv6) (iana.org)
Kickstart 安装 :: CentOS Docs Site
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]