万字详文干货:从无盘启动volumio看Linux启动原理( 二 )
预启动执行环境(Preboot eXecution Environment , PXE , 也被称为预执行环境) 提供了一种使用网络接口启动计算机的机制 。 这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统 。
文章插图
2.1 PXE 原理
- Client 向 DHCP 发送 IP 地址请求消息 , DHCP 返回 Client 的 IP 地址 , 同时将启动文件(如:pxelinux.0)的位置信息(通常是 TFTP 路径)一并传送给 Client
- Client 向 TFTP 发送获取启动文件请求消息 , TFTP 接收到消息之后再向 Client 发送启动文件大小信息 , 试探 Client 是否满意 , 当 TFTP 收到 Client 发回的同意大小信息之后 , 正式向 Client 发送启动文件 Client 执行接收文件
- Client 向 TFTP 发送针对本机的配置信息文件请求 , TFTP 将配置文件发回 Client , 继而 Client 根据配置文件执行后续操作 。
- Client 会加载启动文件 , 之后根据配置执行动作 。 这里有多重方案进行下一步操作 。
- 可以直接通过 Http 协议获取 Linux kernel 和 ramdisk 然后启动
- 或者加载一块 iscsi 磁盘 , 将 linux kernel 和 ramdisk 等信息放在 iscsi 磁盘中 , 走正常磁盘引导 。 我用的是这种方案
文章插图
2.2 iPXE上面说到了启动文件 , 普通的 pxe 启动文件功能有限 , 通常只能从 tftp 服务器上获取文件 , 不支持 HTTP 协议和其他共享协议 , 更别说我们要支持的 iscsi 磁盘挂载了 。 这里推荐一个高端开源 pxe 启动文件:iPXE() 。 它支持从 HTTP、iscsi SAN、 Fibre Channel SAN、AoE SAN 等多种方式启动 , 甚至还支持无线网卡 。 此外它还可以定制一个启动脚本和菜单 。
iPXE 需要根据自己硬件对应的平台进行编译 , 编译前需要搞清楚几个要点:
- 启动方式:BIOS 或者 EFI 前面已经说了 。
- 平台:X86 或 ARM , 如果用树莓派等产品就是 ARM , PC 是 x86
- CPU 位:32 或 64 , 32 位机器只支持 32 位固件 , 64 位机器可以兼容 32 位和 64 位固件 。 注意:如果使用 64 位固件需要保证后续所有环节使用兼容 64 位的软件 , 我就遇到了 SysLinux 不支持 64 位 , 导致卡死的问题 。
git clone git://git.ipxe.org/ipxe.git
make [platform]/[driver].[extension]
Platform 支持如下:按照上面说的启动方式、平台、CPU 情况选择 。
- bin (alias for bin-i386-pcbios)
- bin-i386-pcbios
- bin-i386-efi
- bin-i386-linux
- bin-x86_64-efi
- bin-x86_64-linux
- bin-x86_64-pcbios
- bin-arm32-efi
- bin-arm64-efi
Boot type:和启动方式、启动介质有关 , 参考下表:
文章插图
编译时添加 EMBED={脚本名称} 可以关联一个启动脚本 。 推荐一个大佬做好的脚本可以直接使用 。
我最终命令如下:
git clone git://git.ipxe.org/ipxe.git
cd ./ipxe/src
wget
make bin-i386-pcbios/ipxe.pxe EMBED=menu.ipxe
完成之后在/data/ipxe/src/bin-i386-pcbios/ipxe.pxe 可以拿到最终的启动文件 。
2.3 DHCP、TFTP 配置如何配置 DHCP 和 TFTP 服务器不是本文重点 , 如果需要命令行方式配置可以参考这篇文章的前半部分
如今大部分高端路由器或开源路由器固件都内置了 DHCP 和 TFTP 配置功能 。 我家的 LEDE 路由器配置界面如下 。
文章插图
- TFTP 服务器根目录:这个是启动文件、配置文件存放的目录路径(是在路由器上的路径 , 可以放在 u 盘挂上去 , 也可以直接放在路由器存储的目录)
- AI芯片“点燃”北京!GTIC 2020 AI芯片创新峰会大咖演讲全干货
- 小店|抖音小店无货源模式,干货来了,抖音小店店群怎么做?
- GPU|干货|基于 CPU 的深度学习推理部署优化实践
- 干货:阿里巴巴提升组织能力的5大经典管理工具
- 搞定2020年路由器选购,家庭组网干货攻略
- 互联网创业思维:什么是真正的干货?你是怎么给“干货”下定义的
- 直播链接激情预告!GTIC 2020 AI芯片创新峰会明日见,18位产学研大牛干货满满
- 吸引流量模型分解|干货| 以对应亲密关系中
- 裂变活动|微信群裂变实操指南,史上最全干货
- 六大|B站六大能学到知识的UP主!纯干货分享,B站真的能用来学习!