一、环境准备
图1 | 硬件环境
名称 |
软件版本 |
配件 |
D2000+X100 PC机1台 (以下称为“飞腾PC机”) |
uefi固件版本: edk2-code-3.5.0.rar Pbf版本: image_fix_d2000_v1.70.rar x100固件版本:x100_pack_v1.7-0909.tar |
NVME硬盘1块 显示器 1 台 USB 键鼠 1 套 |
X86笔记本1台 |
Windows 10 专业版 22H2 |
— |
TTL转USB串口线1条 |
— |
— |
| 软件环境
说明 |
名称 |
备注 |
获取方式 |
麒麟系统iso镜像文件 |
Kylin-Desktop-V10-GFB-Release-2205-Build05-ARM64.iso |
— |
通过麒麟获取 |
grub配置文件 |
grub.cfg |
需要根据环境配置进行修改 |
后台回复“软件环境搭建”获取 |
uefi下网络启动efi执行文件 |
netbootaa64.efi |
— |
|
FTP、DHCP工具 |
Tftpd64_SE-4.64-setup.exe |
或者tftp32 server版本 |
|
NFS工具 |
nfs1169.exe |
— |
|
初始内存磁盘 |
initrd.lz |
— |
从麒麟系统iso镜像中casper目录下获取 |
内核文件 |
vmlinuz |
— |
从麒麟系统iso镜像中casper目录下获取 |
二、环境搭建
图2 | PXE硬件环境搭建
将飞腾PC机的网口通过网线接到x86笔记本的网口,且设置笔记本网口IP为192.168.50.242(这个可以自己修改,这里是整文统一用这个IP,故特此说明)
将飞腾PC机的显示接口接显示器。
将飞腾PC机的USB接USB键鼠。
将飞腾PC机的D2000调试串口通过TTL转USB线接到x86笔记本上。
三、UEFI PXE功能确认
图3 | Boot device界面
启动飞腾PC机电源,在F2、F8、F12选择阶段,按F2进入的BOOT选择界面。如图3所示,若出现PXE选项,则认为UEFI的PXE功能是正常启动的。
图4 | GMAC开启
若未出现PXE选项,可以确定以下两个方面:
一是网线是否插好:可以通过x86笔记本的网络设置看有线网卡是否有连接。
二是需要确定固件中是否开启了网络MAC。在图4界面中选择“Enter Setup”→“Advanced Features”,查看“Enable Gmac0”“Enable Gmac1”是否是Enable状态。(因飞腾CPU有两路MAC,若不确定飞腾PC机接的是哪一路,建议这两个都Enable)
四、笔记本软件环境配置
01
X86笔记本网络配置
图5 | x86 笔记本MAC设置
找到与飞腾PC机相连的网口,配置其IP为192.168.50.242,配置网关192.168.50.1。DNS不要设置。
(这个IP地址一定要记好,后面很多配置都和这个IP相关。)
图6 | x86 笔记本防火墙关闭
同时要关闭x86笔记本的所有防火墙。
02
文件依赖环境搭建
新建一个文件夹,这里建在E盘,取名为pxe。将netbootaa64.efi(前面“环境准备”章节有网盘链接)放到pxe文件夹中。在pxe中新建iso文件夹,将麒麟iso镜像解压进去。
再在pxe文件中新建文件夹boot,boot内再建grub文件夹,将grub.cfg(前面“环境准备”章节有网盘链接)放到grub文件夹中。
图7 | 麒麟iso解压后文件夹
在pxe文件中新建文件夹casper,将图7文件夹中的casper文件夹下的initrd.lz和vmlinuz文件复制进来。
最后文件结构如图8(iso文件夹我没展开,里面是麒麟的iso镜像解压后的文件)。
图8 | 文件结构
03
TFTP,DHCP服务器
Tftpd64软件配置
安装Tftpd64_SE-4.64-setup.exe(前面“环境准备”章节有网盘链接)。
Tftpd64软件用于tftp服务器和DHCP服务器。使用管理员权限打开软件。
进入“settings”。在“GLOBAL”标签中确定“TFTP server”和“DHCP server”功能是开启的。(我这里只开启了这两个功能)
图9 | 服务配置
Tftp标签配置,主要就是设置tftp目录,我们这里指向我们刚才新建的E:\pxe,其次就是咱们的TFTP的IP地址要选择到咱们前面设置的IP,即192.168.50.242。
图10 | TFTP配置
DHCP标签配置,主要也是约束IP,这里填入x86笔记本的IP 192.168.50.242,对应的网关192.168.50.1。主要两个配置项为“Boot File”,需要指定到我们前面E:\pxe下的netbootaa64.efi文件。因为我们tftp指定了路径是E:\pxe,所以这里就只填文件名netbootaa64.efi即可。
另外,最下面的“bind DHCP to this address”,要选择x86笔记本IP 192.168.50.242。
图11 | DHCP配置
DHCP环境验证
在图3界面中选择进入“UEFI Shell”。
使用ifconfig命令查看当前的飞腾PC机IP,首次进来应该是没有IP的。
> ifconfig -l eth0
name : eth0
Media State : Media present
policy : static
mac addr : 98:0E:24:5E:FB:79
ipv4 address : 0.0.0.0
subnet mask : 0.0.0.0
default gateway: 0.0.0.0
Routes (0 entries):
DNS server :
使用DHCP自动获取IP,使用命令“ifconfig -s eth0 dhcp”。
再次查看,可以看到有IP了192.168.50.243,这就可以说明Tftpd64的DHCP功能是正常的。
> ifconfig -s eth0 dhcp
> ifconfig -l eth0
name : eth0
Media State : Media present
policy : dhcp
mac addr : 98:0E:24:5E:FB:79
ipv4 address : 192.168.50.243
subnet mask : 255.255.255.0
default gateway: 192.168.50.1
Routes (2 entries):
Entry[0]
Subnet : 192.168.50.0
Netmask: 255.255.255.0
Gateway: 0.0.0.0
Entry[1]
Subnet : 0.0.0.0
Netmask: 0.0.0.0
Gateway: 192.168.50.1
DNS server :
同时可以在Tftpd64的DHCP server中可以查看log,确实也是分配了192.168.50.243。
图12 |
之后在飞腾PC机上ping一下x86笔记本(IP 192.168.50.242),确保网络是通的。(要不通记得查下防火墙)
> ping 192.168.50.242
InstallProtocolInterface:
41D94CD2-35B6-455A-8258-D4E51334AADD F7FFFEA0
Ping 192.168.50.242 16 data bytes.
16 bytes from 192.168.50.242 :icmp_seq=1 ttl=0 time0~19ms16 bytes from 192.168.50.242 : icmp_seq=2 ttl=0 time0~19ms
16 bytes from 192.168.50.242 :icmp_seq=3 ttl=0 time0~19ms16 bytes from 192.168.50.242 : icmp_seq=4 ttl=0 time0~19ms
16 bytes from 192.168.50.242 :icmp_seq=5 ttl=0 time0~19ms16 bytes from 192.168.50.242 : icmp_seq=6 ttl=0 time0~19ms
6 packets transmitted, 6 received, 0% packet loss, time 0ms
Rtt(round trip time) min=0~19ms max=0~19ms avg=0~19ms
04
NFS服务器
NFS软件配置
安装nfs1169.exe(前面“环境准备”章节有网盘链接)。NFS软件用于NFS服务器。使用管理员权限打开软件。
设置如下:
图13 |
在haneWIN nfs 服务器软件“输出”标签,点击“编辑输出表文件”,
填写NFS的文件路径,-public是权限,-name是在软件里显示的名字(名字可以自己起)。
因为我们把麒麟的iso解压到了E:\pex的iso文件夹里,所以我们这里NFS文件路径填写e:\pxe\iso。
这里特别强调,-name的名字是要记住的,后面需要用,我们这里是kylin-nfs。
图14 | haneWIN配置
点击“重启服务器”
图15 |
如窗口没有变化,需要通过别的方式重启一下。
从win开始菜单找到“haneWIN软件”的“重启所有服务”,以管理员方式去执行。
图16 | 重启NFS服务
执行后,再去点haneWIN的“重启服务器”,上面窗口的nfs路径发生改变。
图17 |
NFS验证
我们的测试方式是在x86笔记本上“自己测自己”。
先开启win的NFS服务。在“控制面板”→“程序和功能”→“启用或关闭windows功能”中,选中“NFS服务”中的“NFS客户端”和“管理工具”。
图18 | 开启NFS服务
进入cmd命令行,执行mount命令。
我们mount一下我们的NFS,挂载NFS目录到某个盘符(如Z盘)。
▲这里需要注意:我们现在电脑ip是192.168.50.242,通过haneWIN把我们的e:\pxe\iso,name成了kylin-nfs,所以我们这里要mount的不是pxe iso而是kylin-nfs,也就是使用haneWIN脚本里name后的名字。
图19 | mount成功
如果挂不成功,会报错。下图我就是挂的/pxe/iso目录,这个是不对的。
图20 | mount失败
图21 | 挂载前
图22 | 挂载后
05
脚本修改
软件环境搭建完毕,下面进行相关配置工作。
PXE启动原理介绍
图23 | PXE原理(图片来源:网络)
①即“三、UEFI PXE功能确认”章节确认的部分。
②即“ DHCP环境验证”章节验证的部分。
③即“Tftpd64软件配置”章图10中配置的。
④即grub.cfg,在“文件依赖环境搭建”章节,放在了E:\pxe\boot\grub文件夹中。grub的配置文件决定了后面系统的启动。
⑤⑥这两步是④之后水到渠成的了。
grub.cfg的配置修改
set default=0 set timeout=5 set color_normal=white/black set color_highlight=black/light-gray insmod part_gpt insmod part_msdos insmod gzio menuentry "Net Install Kylin" { linux /casper/vmlinuz boot=casper netboot=nfs ip=dhcp nfsroot=192.168.50.242:/kylin-nfs rootwait ro locale=zh_CN KEYBOARDTYPE=pc KEYTABLE=us ignore_uuid quiet initrd /casper/initrd.lz } menuentry "Install UOS" { set gfxpayload=keep linux /uos/vmlinuz console=tty boot=live netboot=nfs nfsroot=192.168.1.5:/opt/nfs/uos/ ip=192.168.1.10 componentsunion=overlay locales=zh_CN.UTF-8 livecd-installer initrd /uos/initrd.img }
下面我们就grub.cfg里面需要修改的内容做说明。
这是最终的grub.cfg文件,含有两个启动项,一个是麒麟的,一个是UOS的。此处主要说明麒麟部分:
1. `menuentry "Net Install Kylin" `: 这是一个菜单项的标题,显示在启动菜单中供选择。在这个例子中,菜单项的标题是"Net Install Kylin"。
2. `boot=casper`: 设置Linux内核的引导参数,告诉内核使用"Casper"启动模式。
在Ubuntu和一些基于Ubuntu的Linux发行版中,"Casper"是一个用于实现Live CD/Live USB功能的启动模式。Live CD/Live USB是一种可在计算机上运行操作系统而无需进行实际安装的方式。"Casper"模式通过在内存中加载完整的操作系统,并将根文件系统挂载为只读模式,使用户可以在没有对硬盘进行写入的情况下使用操作系统。
3. `netboot=nfs`: 指定网络启动模式,告诉内核通过NFS进行网络引导。
4. `nfsroot=192.168.50.242:/kylin-nfs`: 指定NFS根目录的位置。这里的`192.168.50.242:/kylin-nfs`表示NFS服务器的IP地址和共享路径。和“NFS验证”章节验证的一样,我们NFS的目录需要是haneWIN配置里name后的名字,也就是kylin-nfs。
5. `linux /casper/vmlinuz`: 指定Linux内核的位置。这里的`/casper/vmlinuz`是内核映像文件的路径。因为这个是需要采用TFTP的方式下载的,又因为我们TFTP设置的路径为E:\pxe(参看图10),且我们将麒麟iso中的内核vmlinuz放在了E:\pxe\casper目录下,所以我们这里指定内核位置就可以了。
6. `initrd /casper/initrd.lz`: 指定用于启动的初始内存盘(initrd)的位置。这里的`/casper/initrd.lz`是初始内存盘文件的路径。这个同理上面的5。
7. `ip=dhcp`: 使用DHCP协议获取网络配置信息,包括IP地址、子网掩码、网关等。
8. `rootwait`: 等待根文件系统准备就绪后再启动。
9. `ro`: 将根文件系统以只读模式挂载,防止意外修改。
10. `locale=zh_CN`: 设置系统的本地化语言为简体中文。
11. `KEYBOARDTYPE=pc`: 指定键盘类型为"pc"。
12. `KEYTABLE=us`: 指定键盘布局为美式英语。
13. `ignore_uuid`: 忽略根文件系统的UUID,使用设备路径进行引导。
14. `quiet`: 在启动过程中禁用大部分内核消息的显示,使启动过程更加静默。
06
启动安装
这时候再在界面中选择“UEFI PXEv4”,等待进入麒麟安装界面。