如何构建一台网络引导服务器(三)
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/172110uwb7tt3x0gapas33.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 中,我们提供了一个极简的 <a href="https://ipxe.org/">iPXE</a> 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。一个交互式 iPXE 引导菜单下面这些命令重定义了网络引导镜像的 boot.cfg 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器:<pre class="prettyprint linenums">$ MY_FVER=29$ MY_KRNL=$(ls -c /fc$MY_FVER/lib/modules | head -n 1)$ MY_DNS1=192.0.2.91$ MY_DNS2=192.0.2.92$ MY_NAME=server-01.example.edu$ MY_EMAN=$(echo $MY_NAME | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_NAME})$ MY_ADDR=$(host -t A $MY_NAME | awk '{print $4}')$ cat << END > $HOME/esp/linux/boot.cfg#!ipxeset timeout 5000:menumenu iPXE Boot Menuitem --key 1 lcl 1. Microsoft Windows 10item --key 2 f$MY_FVER 2. RedHat Fedora $MY_FVERchoose --timeout \${timeout} --default lcl selected || goto shellset timeout 0goto \${selected}:failedecho boot failed, dropping to shell...goto shell:shellecho type 'exit' to get the back to the menuset timeout 0shellgoto menu:lclexit:f$MY_FVERkernel --name kernel.efi \${prefix}/vmlinuz-$MY_KRNL initrd=initrd.img ro ip=dhcp rd.peerdns=0 nameserver=$MY_DNS1 nameserver=$MY_DNS2 root=/dev/disk/by-path/ip-$MY_ADDR:3260-iscsi-iqn.$MY_EMAN:fc$MY_FVER-lun-1 netroot=iscsiMediaMY_ADDR::::iqn.$MY_EMAN:fc$MY_FVER console=tty0 console=ttyS0,115200n8 audit=0 selinux=0 quietinitrd --name initrd.img \${prefix}/initramfs-$MY_KRNL.imgboot || goto failedEND</pre>上述菜单有五个节:menu 定义了显示在屏幕上的实际菜单内容。failed 提示用户发生了错误,并将用户带到 shell 以错误错误。shell 提供了交互式命令提示符。你可以&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/172110uwb7tt3x0gapas33.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 中,我们提供了一个极简的 <a href="https://ipxe.org/">iPXE</a> 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。一个交互式 iPXE 引导菜单下面这些命令重定义了网络引导镜像的 boot.cfg 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器:<pre class="prettyprint linenums">$ MY_FVER=29$ MY_KRNL=$(ls -c /fc$MY_FVER/lib/modules | head -n 1)$ MY_DNS1=192.0.2.91$ MY_DNS2=192.0.2.92$ MY_NAME=server-01.example.edu$ MY_EMAN=$(echo $MY_NAME | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_NAME})$ MY_ADDR=$(host -t A $MY_NAME | awk '{print $4}')$ cat << END > $HOME/esp/linux/boot.cfg#!ipxeset timeout 5000:menumenu iPXE Boot Menuitem --key 1 lcl 1. Microsoft Windows 10item --key 2 f$MY_FVER 2. RedHat Fedora $MY_FVERchoose --timeout \${timeout} --default lcl selected || goto shellset timeout 0goto \${selected}:failedecho boot failed, dropping to shell...goto shell:shellecho type 'exit' to get the back to the menuset timeout 0shellgoto menu:lclexit:f$MY_FVERkernel --name kernel.efi \${prefix}/vmlinuz-$MY_KRNL initrd=initrd.img ro ip=dhcp rd.peerdns=0 nameserver=$MY_DNS1 nameserver=$MY_DNS2 root=/dev/disk/by-path/ip-$MY_ADDR:3260-iscsi-iqn.$MY_EMAN:fc$MY_FVER-lun-1 netroot=iscsiMediaMY_ADDR::::iqn.$MY_EMAN:fc$MY_FVER console=tty0 console=ttyS0,115200n8 audit=0 selinux=0 quietinitrd --name initrd.img \${prefix}/initramfs-$MY_KRNL.imgboot || goto failedEND</pre>上述菜单有五个节:menu 定义了显示在屏幕上的实际菜单内容。failed 提示用户发生了错误,并将用户带到 shell 以错误错误。shell 提供了交互式命令提示符。你可以&…