PRF:20181221 How to Build a Netboot Server, Part 3.md

@qhwdw
This commit is contained in:
Xingyu.Wang 2019-01-01 17:18:10 +08:00
parent adf434ff2c
commit 582d5ade68

View File

@ -1,22 +1,22 @@
[#]: collector: (lujun9972) [#]: collector: (lujun9972)
[#]: translator: (qhwdw) [#]: translator: (qhwdw)
[#]: reviewer: () [#]: reviewer: (wxy)
[#]: publisher: () [#]: publisher: ( )
[#]: url: () [#]: url: ( )
[#]: subject: (How to Build a Netboot Server, Part 3) [#]: subject: (How to Build a Netboot Server, Part 3)
[#]: via: (https://fedoramagazine.org/how-to-build-a-netboot-server-part-3/) [#]: via: (https://fedoramagazine.org/how-to-build-a-netboot-server-part-3/)
[#]: author: (Gregory Bartholomew https://fedoramagazine.org/author/glb/) [#]: author: (Gregory Bartholomew https://fedoramagazine.org/author/glb/)
如何构建一台网络引导服务器(部分 如何构建一台网络引导服务器(三)
====== ======
![](https://fedoramagazine.org/wp-content/uploads/2018/12/netboot3-816x345.jpg) ![](https://fedoramagazine.org/wp-content/uploads/2018/12/netboot3-816x345.jpg)
在 [如何构建一台网络引导服务器(部分][1] 的文章中,我们提供了一个极简的 [iPXE][2] 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。 在 [如何构建一台网络引导服务器(一)][1] 中,我们提供了一个极简的 [iPXE][2] 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。
### 一个交互式 iPXE 引导菜单 ### 一个交互式 iPXE 引导菜单
下面这些命令重定义了网络引导镜像的 boot.cfg 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器: 下面这些命令重定义了网络引导镜像的 `boot.cfg` 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器:
``` ```
$ MY_FVER=29 $ MY_FVER=29
@ -61,22 +61,20 @@ END
上述菜单有五个节: 上述菜单有五个节:
* **menu** 定义了显示在屏幕上的实际菜单内容。 * `menu` 定义了显示在屏幕上的实际菜单内容。
* **failed** 提示用户发生了错误,并将用户带到 shell 以错误错误。 * `failed` 提示用户发生了错误,并将用户带到 shell 以错误错误。
* **shell** 提供了交互式命令提示符。你可以在引导菜单出现时按下 **Esc** 键进入,或者是 * `shell` 提供了交互式命令提示符。你可以在引导菜单出现时按下 `Esc` 键进入,或者是
“boot” 命令失败时也会进入到命令提示符。 `boot` 命令失败时也会进入到命令提示符。
* **lcl** 包含一个提供给 iPXE 退出的简单命令,以及返还控制权给 BIOS。在 iPXE 之后,无论你希望缺省引导的设备(即:工作站的本地硬件)是什么,都必须在你的工作站的 BIOS 中正确地作为下一个引导设备列出来。 * `lcl` 包含一个提供给 iPXE 退出的简单命令,以及返还控制权给 BIOS。在 iPXE 之后,无论你希望缺省引导的设备(即:工作站的本地硬件)是什么,都必须在你的工作站的 BIOS 中正确地作为下一个引导设备列出来。
* **f29** 包含前面文章提到同一个网络引导代码,但使用最终的退出代码来替换掉 goto failed。 * `f29` 包含前面文章提到同一个网络引导代码,但使用最终的退出代码来替换掉 `goto failed`
从你的 `$HOME/esp/linux` 目录中复制更新后的 `boot.cfg` 到所有客户端系统的 ESP 中。如果一切顺利,你应该会看到类似下面图片的结果:
从你的 `$HOME/esp/linux` 目录中复制更新后的 boot.cfg 到所有客户端系统的 ESP 中。如果一切顺利,你应该会看到类似下面图片的结果:
![][3] ![][3]
### 一个服务器托管的引导菜单 ### 一个服务器托管的引导菜单
你可以添加到网络引导服务器的另一个特性是,能够从一台中央位置去管理所有客户端的引导菜单。这个特性尤其适用于批量安装(升级)一个新版本的操作系统。在你将新内核和新的 initramfs 复制到所有客户端的 ESP 之后,这个特性可以让你执行一种 [原子事务][4] 去切换所有客户端到新操作系统。 你可以添加到网络引导服务器的另一个特性是,能够从一台中央位置去管理所有客户端的引导菜单。这个特性尤其适用于批量安装(升级)一个新版本的操作系统。在你将新内核和新的 `initramfs` 复制到所有客户端的 ESP 之后,这个特性可以让你执行一种 [原子事务][4] 去切换所有客户端到新操作系统。
安装 Mojolicious 安装 Mojolicious
@ -116,9 +114,9 @@ END
END END
``` ```
这是一个非常简单的 Mojolicious 应用程序,它监听 80 端口,并且只回复到 /menu 的请求。如果你想快速了解 Mojolicious 能做什么,运行 `man Mojolicious::Guides::Growing` 去查看手册。按 **Q** 键退出手册。 这是一个非常简单的 Mojolicious 应用程序,它监听 80 端口,并且只回应对 `/menu` 的请求。如果你想快速了解 Mojolicious 能做什么,运行 `man Mojolicious::Guides::Growing` 去查看手册。按 `Q` 键退出手册。
将 boot.cfg 移到我们的网络引导应用程序中作为一个名为 menu.html.ep 的模板: `boot.cfg` 移到我们的网络引导应用程序中作为一个名为 `menu.html.ep` 的模板:
``` ```
# mkdir /opt/bootmenu/templates # mkdir /opt/bootmenu/templates
@ -157,7 +155,7 @@ END
# systemctl start bootmenu.service # systemctl start bootmenu.service
``` ```
用 wget 测试它: `wget` 测试它:
``` ```
$ sudo dnf install -y wget $ sudo dnf install -y wget
@ -199,9 +197,9 @@ initrd --name initrd.img ${prefix}/initramfs-4.19.4-300.fc29.x86_64.img
boot || goto failed boot || goto failed
``` ```
现在,引导菜单服务器已经正常工作了,重新构建 ipxe.efi 引导加载器,使用一个 init 脚本指向它。 现在,引导菜单服务器已经正常工作了,重新构建 `ipxe.efi` 引导加载器,使用一个初始化脚本指向它。
第一步,先更新我们在本系列文章的第一部分中创建的 init.ipxe 脚本: 第一步,先更新我们在本系列文章的第一部分中创建的 `init.ipxe` 脚本:
``` ```
$ MY_BOOTMENU_SERVER=server-01.example.edu $ MY_BOOTMENU_SERVER=server-01.example.edu
@ -236,7 +234,7 @@ $ sudo systemctl restart bootmenu.service
### 做一步的改变 ### 做一步的改变
如果引导菜单服务器工作正常,在你的客户端系统上的 boot.cfg 文件将更长。 如果引导菜单服务器工作正常,在你的客户端系统上的 `boot.cfg` 文件将更长。
比如,重新添加 Fedora 28 镜像到引导菜单中: 比如,重新添加 Fedora 28 镜像到引导菜单中:
@ -271,13 +269,13 @@ via: https://fedoramagazine.org/how-to-build-a-netboot-server-part-3/
作者:[Gregory Bartholomew][a] 作者:[Gregory Bartholomew][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[qhwdw](https://github.com/qhwdw) 译者:[qhwdw](https://github.com/qhwdw)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/glb/ [a]: https://fedoramagazine.org/author/glb/
[b]: https://github.com/lujun9972 [b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/how-to-build-a-netboot-server-part-1/ [1]: https://linux.cn/article-10379-1.html
[2]: https://ipxe.org/ [2]: https://ipxe.org/
[3]: https://fedoramagazine.org/wp-content/uploads/2018/11/netboot-menu-1024x641.png [3]: https://fedoramagazine.org/wp-content/uploads/2018/11/netboot-menu-1024x641.png
[4]: https://en.wikipedia.org/wiki/Atomicity_(database_systems) [4]: https://en.wikipedia.org/wiki/Atomicity_(database_systems)