加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

如何构建一台网络引导服务器(一)

发布时间:2018-12-25 19:13:12 所属栏目:Windows 来源:Gregory Bartholomew
导读:副标题#e# 有些计算机网络需要在各个物理机器上维护相同的软件和配置。学校的计算机实验室就是这样的一个环境。 网络引导 服务器能够被配置为基于网络去提供一个完整的操作系统,以便于客户端计算机从一个中央位置获取配置。本教程将向你展示构建一台网络引

注意:上面的引导脚本展示了如何使用 iPXE 去网络引导 Linux 的最小示例。还可以做更多更复杂的配置。值得注意的是,iPXE 支持交互式引导菜单,它可以让你配置默认选项和超时时间。比如,一个更高级一点 iPXE 脚本可以默认从本地磁盘引导一个操作系统,如果在倒计时结束之前用户按下了一个键,才会去网络引导一个操作系统。

复制 Linux 内核并分配 initramfs 给 EFI 系统分区:

  1. $ cp $(find /fc28/lib/modules -maxdepth 2 -name 'vmlinuz' | grep -m 1 $DEFAULT_VER) $HOME/esp/linux/vmlinuz-$DEFAULT_VER
  2. $ cp $(find /fc28/boot -name 'init*' | grep -m 1 $DEFAULT_VER) $HOME/esp/linux/initramfs-$DEFAULT_VER.img

我们最终的目录布局应该看起来像下面的样子:

  1. esp
  2. ├── efi
  3. │   └── boot
  4. │   └── bootx64.efi
  5. └── linux
  6. ├── boot.cfg
  7. ├── initramfs-4.18.18-200.fc28.x86_64.img
  8. └── vmlinuz-4.18.18-200.fc28.x86_64

要让 QEMU 去使用我们的 EFI 系统分区,我们需要去创建一个小的 uefi.img 磁盘镜像来包含它,然后将它连接到 QEMU 作为主引导驱动器。

开始安装必需的工具:

  1. $ dnf install -y parted dosfstools

现在创建 uefi.img 文件,并将 esp 目录中的文件复制进去:

  1. $ ESP_SIZE=$(du -ks $HOME/esp | cut -f 1)
  2. $ dd if=/dev/zero of=$HOME/uefi.img count=$((${ESP_SIZE}+5000)) bs=1KiB
  3. $ UEFI_DEV=$(losetup --show -f $HOME/uefi.img)
  4. $ parted ${UEFI_DEV} -s mklabel gpt mkpart EFI FAT16 1MiB 100% toggle 1 boot
  5. $ mkfs -t msdos ${UEFI_DEV}p1
  6. $ mkdir -p $HOME/mnt
  7. $ mount ${UEFI_DEV}p1 $HOME/mnt
  8. $ cp -r $HOME/esp/* $HOME/mnt
  9. $ umount $HOME/mnt
  10. $ losetup -d ${UEFI_DEV}

注意:在物理计算机上,你只需要从 esp 目录中复制文件到计算机上已存在的 EFI 系统分区中。你不需要使用 uefi.img 文件去引导物理计算机。

注意:在一个物理计算机上,如果文件名已存在,你可以重命名 bootx64.efi 文件,如果你重命名了它,就需要去编辑计算机的 BIOS 设置,并添加重命令后的 efi 文件到引导列表中。

接下来我们需要去安装 qemu 包:

  1. $ dnf install -y qemu-system-x86

允许 QEMU 访问我们在本教程“初始化配置”一节中创建的网桥:

  1. $ echo 'allow br0' > /etc/qemu/bridge.conf

创建一个 OVMF_VARS.fd 镜像的副本去保存我们虚拟机的持久 BIOS 配置:

  1. $ cp /usr/share/edk2/ovmf/OVMF_VARS.fd $HOME

现在,启动虚拟机:

  1. $ qemu-system-x86_64 -machine accel=kvm -nographic -m 1024 -drive if=pflash,format=raw,unit=0,file=/usr/share/edk2/ovmf/OVMF_CODE.fd,readonly=on -drive if=pflash,format=raw,unit=1,file=$HOME/OVMF_VARS.fd -drive if=ide,format=raw,file=$HOME/uefi.img -net bridge,br=br0 -net nic,model=virtio

如果一切顺利,你将看到类似下图所示的结果:

如何构建一台网络引导服务器(一)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读