一根网线安装 Linux——PXE 介绍

PXE 是什么

预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。——摘自 Archwiki

PXE 原理介绍

PXE 协议是由 Intel 设计的,它可以使计算机通过网络启动。协议分为 client 和 server 两端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,并显示出命令菜单,经用户选择后,PXE client 将放置在远端的操作系统通过网络下载到本地运行。

PXE 可以通过网络直接启动一些 Live Linux,或者调用 Linux Installer,GParted 等工具,较使用 U 盘启动更加方便快捷,有多种工具,Live 系统等可供用户挑选,在紧急维护情况下也有很大的作用。

例子:图书馆查询机

图书馆内的图书查询机就是用 PXE 启动的,启动镜像叫 liims,里面包含了一个以图书馆透明计算系统为主页的浏览器(主页包括了图书查询,邮箱登录,学习空间预约等功能),还有瀚海星云的 telnet 客户端和彩虹猫,用户也可以自己启动一个虚拟机,用 PXE 启动进入查询系统。

PXE 怎么用

使用条件

电脑最好内置有 PXE Boot Agent,并且已经激活;没有现成支持的话,有几种解决办法
所在的网段最好有能提供正确的 PXE 信息的 DHCP 服务器,以及可以通过 TFTP 数据包的网关;没有的话可以请管理员加以设置,或自己动手把网络启动系统加入GRUB/LILO菜单
如果所在实验室用地址转换/伪装技术建立了自己的子网,则需要配置

科大校园网

连接校园网(一般需要插网线)调节 BIOS 设置进入 PXE 环境即可直接进入 USTC PXE

非科大校园网

首先需要进入 PXE 环境,这里以在 virtualbox 虚拟机使用 iPXE 为例, virtualbox 自带的 PXE 功能比较简单,所以使用 iPXE 替代之。从 iPXE 官网下载 iPXE 的 ISO,然后让虚拟机从这个 ISO 启动。 按 Ctrl + B 进入 iPXE 的命令行模式。然后输入以下命令:

dhcp //如果已经获取到了地址则请忽略
set 210:string http://202.38.93.94/boot/tftp/
chain ${210:string}pxelinux.0

接下来你就能见到 USTC PXE 的界面了 🙂

注意到我们使用的 iPXE 的命令里使用的是 http 协议,这也为一些在 NAT 后面而无法使用 tftp 的用户提供使用 USTC PXE 的方法。

另外 iPXE 也可以刻录到 usb 上,这样主机如果想用 PXE 就可以用 usb 启动 iPXE (如果主机自带的 PXE 比较弱),然后使用上面的命令进入 USTC PXE 了。 iPXE 的 usb 镜像可以从 http://boot.ipxe.org/ipxe.usb 下载,然后用 dd if=ipxe.usb of=/dev/sdX 来刻录。

下载 iso 作为虚拟光驱挂载在虚拟机上,从 CD 启动,

PXE 有什么

PXE 的启动菜单

Linux 安装工具

  • Ubuntu
  • Debian
  • Kali
  • OpenSUSE
  • Centos
  • Arch Linux
  • Fedora

Live System

  • Ubuntu
  • Debian
  • Deepin
  • Archlinux
  • Manjaro

Windows PE

实用工具

  • Hardware Detection Tools (hdt)
hdt 中的查看硬盘信息部分
  • PXE Knife
  • GParted Live
  • Clonezilla live

图书馆查询系统

应用场景分析

体验新系统

PXE 的 Live System 菜单中包含了 Debian,Deepin,Arch Linux,Manjaro 等 Live 系统,选择一个 Live 系统启动,就可以不用安装就能体验 Linux 的使用。

安装新系统

PXE 中 Linux Installer 菜单下有 Debian,Kali 等多种 Linux 发行版的安装器,当然也可以通过 Live System 进行安装,PXE 使用的 Live System 与写了 Live iso 的 U盘功能是一样的。

Linux 密码恢复,磁盘检查等

Linux 用户通常需要准备一个 Live USB,在忘记密码,磁盘检查等需要对根分区进行操作等情况下能够进入 Live,再 Live 上面对本机系统进行各种操作。PXE 其实就在不需要 U盘的前提下实现了这个功能,而且由于 PXE 上面有多种镜像,用户就有了多种选择。

进入 Live 之后,如果进入图形界面,启动一个终端模拟器(即 terminal)即可,或者进入 tty。进行密码恢复等操作一般需要 root 权限。

密码恢复:首先挂载本机系统的根分区(mount 设备名(如 /dev/sda1)挂载点),然后 chroot 进入挂载点,再用 passwd 用户名(root 可以不加参数)命令修改密码。

磁盘检查,分区修改等:fsck 和 fdisk 命令均需要进行操作的分区未被挂载。如果磁盘检查,fsck 设备名 即可。分区修改,如扩容等操作先 fdisk 设备名,进入 fdisk 程序内部,再执行 fdisk 命令即可。fdisk 命令可以使用 m 查看。fdisk 命令较为简单,如 p 为打印分区表,d 为删除分区,n 为新建一个分区,w 为写入分区表等,执行命令后 fdisk 会对接下来进行的操作给出提示。分区修改也可以使用 gparted live,图形界面可能更友好一些,下文会进行介绍。

硬盘分区扩容

GParted 的界面较为直观,选择设备后界面就会出现这个设备的分区情况,点击一块分区可以进行删除,移动,改变大小或复制,如果有空闲空间也可以点击 New 新建分区。移动分区或向前扩容时要注意,改变分区起始位置可能会使文件系统损坏。每次进行一次操作后最下方会增加一个条目,确认修改时要点击 Apply,此时 GParted 会根据 operation list 进行操作并给出日志,在完成之后会更新分区表。

使用 GParted 改变分区大小和位置

Windows 下的启动修复等

PXE 上还有 Windows PE 的镜像,因此也可以通过 PE 来对本机的 Windows 进行启动修复,文件移动复制,修改注册表等操作。

总结

相比使用 U 盘安装时还需要下载镜像,制作启动盘等繁琐的操作,使用 PXE 只需要插上网线,并且调节 BIOS 设置即可进入 live linux,而且还有 GParted 等一系列工具可用,在服务器等出现问题时应急处理也很有帮助,还是很方便的。同学们也可以事先安装 ipxe,以便在校外或直接连接时连接不上等特殊情况时也可以使用 PXE。

PXE 目前由李文睿同学维护,如果需要反馈 BUG,可以发邮件到 lug AT ustc.edu.cn 或 sirius AT ustclug.org。

发表评论

电子邮件地址不会被公开。 必填项已用*标注