使用 Alpine 搭建PXE服务器

前言

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 版本镜像
这个是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 服务

待续……

网络引导镜像及配置

待续……

在客户机上执行网络安装

待续……

总结

待续……

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Docker中创建一个Alpine PXE服务器,您可以按照以下步骤操作: 1. 首先,从Docker Hub下载Alpine镜像: ``` docker pull alpine ``` 2. 然后,创建一个Dockerfile文件并将以下内容添加到文件中: ``` FROM alpine RUN apk update && \ apk add dnsmasq syslinux && \ rm -rf /var/cache/apk/* ADD ./dnsmasq.conf /etc/dnsmasq.conf ADD ./pxelinux.0 /var/lib/tftpboot/pxelinux.0 ADD ./menu.c32 /var/lib/tftpboot/menu.c32 ADD ./default /var/lib/tftpboot/default EXPOSE 67/udp CMD ["/usr/sbin/dnsmasq", "-d", "--dhcp-range=192.168.0.50,192.168.0.150", "--dhcp-boot=pxelinux.0"] ``` 这个Dockerfile文件创建一个基于Alpine的镜像,并且安装了dnsmasq和syslinux软件包。然后,它将dnsmasq.conf文件和其他必要文件添加到镜像中,并将DHCP服务器配置为在192.168.0.50到192.168.0.150之间分配IP地址。最后,它启动dnsmasq服务器。 3. 接下来,创建一个dnsmasq.conf文件,其中包含以下内容: ``` interface=eth0 dhcp-range=192.168.0.50,192.168.0.150,12h dhcp-option=3,192.168.0.1 dhcp-option=6,8.8.8.8,8.8.4.4 dhcp-boot=pxelinux.0 enable-tftp tftp-root=/var/lib/tftpboot ``` 这个dnsmasq.conf文件配置了DHCP服务器和TFTP服务器。它指定了分配IP地址的范围,指定了网关和DNS服务器的IP地址,指定了启动文件pxelinux.0,并启用了TFTP服务器。 4. 接下来,将pxelinux.0、menu.c32和default文件复制到/var/lib/tftpboot目录中。这些文件可以从syslinux软件包中获取。 5. 最后,使用以下命令构建Docker镜像: ``` docker build -t alpine-pxe . ``` 6. 运行Docker容器: ``` docker run -d --name pxe-server --net=host alpine-pxe ``` 这将在容器中启动PXE服务器,并将容器的网络设置为主机网络。现在,您可以通过在同一网络上的计算机上启动PXE客户端来测试PXE服务器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值