前言
PXE 技术用来实现网络引导,方便在某些受限的设备上加载和安装操作系统。它的核心原理是把系统运行所需的资源放在网络服务器上,通过网络下载所需的程序和数据并执行。
客户机——执行网络引导的目标设备,要求具备对PXE的基本支持,即网络启动协议的支持。
网络启动的过程主要分为下面几步:
1、pxe客户端启动,向服务器发送DHCP请求
2、服务器响应DHCP请求,返回IP地址,网关等信息,以及最关键的信息TFTP服务器地址和一个引导程序的路径
3、客户端根据返回的信息给自己配置网络,然后根据所收到服务器IP和路径,发起一个tftp文件请求,从服务器下载引导程序
4、服务器响应TFTP请求,通过UDP协议发送引导程序
5、客户端执行下载好的引导程序,现在控制权交给引导程序,后面就进入引导程序自己的执行过程了。
常见的引导程序有 grub, pxelinux, ipxe 等,我们比较熟悉的是 grub 和 syslinux/isolinux,它们被用于支持从硬盘、U盘或CDROM引导操作系统。不过既然用PXE了,从网络引导自然也不在话下,前提是程序内部要集成对网络协议栈、网卡驱动等的支持。
本文着力于解决为一台 ARM 架构的服务器安装银河麒麟Server操作系统的问题。arm 平台的似乎不像 x86 平台一样有通用的解决方案,所以引导程序以及启动参数等都可能大不相同。本文的实践过程仅供参考。
对于个人实验,或者是临时装两台机器,拥有一个便携可用的PXE服务器是我们所期望的。因此本文使用 VMware 上的虚拟机来运行 PXE 服务。我们也希望这个系统能够便于存档和共享,因此它的体积越小越好,除了必要的程序和配置,不需要额外的东西。这里我选择使用Alpine Linux 操作系统,它的初始系统很小,装了必要的服务以后所占有磁盘空间也不过100M左右,十分利于我们共享和传递虚拟机镜像。
下面,让我们开始吧。
安装 Alpine 虚拟机
我的虚拟机平台是 VMware Workstation Pro 15,虚拟机配置 1核2G,8GB 磁盘。
1、下载 Alpine 镜像
下载链接: https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86/alpine-virt-3.18.2-x86.iso
这个是Virtual 版本镜像,体积比较小,基本上需要的东西都有。
2、创建虚拟机,加载 ISO 镜像
载入Alpine系统镜像,从镜像安装
确定,放回主界面,点击启动按钮,运行虚拟机。
从CD 启动,进入如下界面
输入用户名 root 登录,密码为空。
执行 setup-alpine 命令进行初始化设置。
keyboard layout:键盘布局,输入两次 us
,回车即可
hostname:主机名,回车保持默认 localhost
可用网卡 eth0,回车默认
IP 地址:回车默认 dhcp 自动分配(前提是 vmware 虚拟网络编辑器里面 vmnet8 开启DHCP功能)。如果没有开启dhcp服务,选择none,然后后面手动配置。
是否手动配置?上面选dhcp的话,这里输入n 跳过。否则,输入y 进入手动配置模式,如下图在自动打开的网口配置文件中添加 address, netmask, gateway 配置。输入 :wa 保存退出。
DNS domain name:空,直接回车
DNS nameserver:如果上面的网络是dhcp自动分配的,这里留空就行。如果是手动配的,这里填网关地址,如 192.168.41.2 (注:vmware NAT 网络的网关是 ?.?.?.2,子网地址在 "菜单栏“ - “编辑” - “虚拟网络编辑器” 里面查看和修改)
New password: 设置 root 密码,输入两次
timezone: 时区,输入 Asia/Shanghai
Available mirrors:
拉到最下方,输入 f,自动选择最快的镜像源
Setup a user? no
Which ssh server? 回车默认 openssh
Allow root ssh login? yes
重要!下面两个问题选择使用的磁盘,并且作为系统盘
Which disk would you like to use? sda
How would you like to use it? sys
回车后开始跑进度条,把操作系统安装到选择的硬盘上。
安装 PXE 服务
待续……
网络引导镜像及配置
待续……
在客户机上执行网络安装
待续……
总结
待续……