设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2018-12-25 19:12 所属栏目:117 来源:Gregory Bartholomew
导读:配置日志输出到内存而不是持久存储中: $ sed -i 's/^#Storage=auto$/Storage=volatile/' /fc28/etc/systemd/journald.conf 配置 DNS: $ MY_DNS1=192.0.2.91 $ MY_DNS2=192.0.2.92 $ cat END /fc28/etc/resolv.con

配置日志输出到内存而不是持久存储中:

  1. $ sed -i 's/^#Storage=auto$/Storage=volatile/' /fc28/etc/systemd/journald.conf

配置 DNS:

  1. $ MY_DNS1=192.0.2.91
  2. $ MY_DNS2=192.0.2.92
  3. $ cat << END > /fc28/etc/resolv.conf
  4. nameserver $MY_DNS1
  5. nameserver $MY_DNS2
  6. END

绕开编写本教程时存在的根目录只读挂载的 bug(BZ1542567):

  1. $ echo 'dirs /var/lib/gssproxy' > /fc28/etc/rwtab.d/gssproxy
  2. $ cat << END > /fc28/etc/rwtab.d/systemd
  3. dirs /var/lib/systemd/catalog
  4. dirs /var/lib/systemd/coredump
  5. END

最后,为我们镜像创建 NFS 文件系统,并将它共享到我们的子网中:

  1. $ mkdir /export/fc28
  2. $ echo '/fc28 /export/fc28 none bind 0 0' >> /etc/fstab
  3. $ mount /export/fc28
  4. $ echo "/export/fc28 -ro,sec=sys,no_root_squash $MY_SUBNET/$MY_PREFIX" > /etc/exports.d/fc28.exports
  5. $ exportfs -vr

创建引导加载器

现在,我们已经有了可以进行网络引导的操作系统,我们需要一个引导加载器去从客户端系统上启动它。在本教程中我们使用的是 iPXE。

注意:本节和接下来的节使用 QEMU 测试,也能在另外一台单独的计算机上来完成;它们并不需要在网络引导服务器上来运行。

安装 git 并使用它去下载 iPXE:

  1. $ dnf install -y git
  2. $ git clone http://git.ipxe.org/ipxe.git $HOME/ipxe

现在我们需要去为我们的引导加载器创建一个指定的启动脚本:

  1. $ cat << 'END' > $HOME/ipxe/init.ipxe
  2. #!ipxe
  3.  
  4. prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell ||
  5.  
  6. dhcp || exit
  7. set prefix file:///linux
  8. chain ${prefix}/boot.cfg || exit
  9. END

启动 “file” 下载协议:

  1. $ echo '#define DOWNLOAD_PROTO_FILE' > $HOME/ipxe/src/config/local/general.h

安装 C 编译器以及相关的工具和库:

  1. $ dnf groupinstall -y "C Development Tools and Libraries"

构建引导加载器:

  1. $ cd $HOME/ipxe/src
  2. $ make clean
  3. $ make bin-x86_64-efi/ipxe.efi EMBED=../init.ipxe

记下新编译的引导加载器的存储位置。我们将在接下来的节中用到它:

  1. $ IPXE_FILE="$HOME/ipxe/src/bin-x86_64-efi/ipxe.efi"

用 QEMU 测试

这一节是可选的,但是你需要去复制下面显示在物理机器上的 EFI 系统分区 的布局,在网络引导时需要去配置它们。

注意:如果你想实现一个完全的无盘系统,你也可以复制那个文件到一个 TFTP 服务器,然后从 DHCP 上指向那台服务器。

为了使用 QEMU 去测试我们的引导加载器,我们继续去创建一个仅包含一个 EFI 系统分区和我们的启动文件的、很小的磁盘镜像。

从创建 EFI 系统分区所需要的目录布局开始,然后把我们在前面节中创建的引导加载器复制进去:

  1. $ mkdir -p $HOME/esp/efi/boot
  2. $ mkdir $HOME/esp/linux
  3. $ cp $IPXE_FILE $HOME/esp/efi/boot/bootx64.efi

下面的命令将识别我们的引导加载器镜像正在使用的内核版本,并将它保存到一个变量中,以备后续的配置命令去使用它:

  1. $ DEFAULT_VER=$(ls -c /fc28/lib/modules | head -n 1)

定义我们的客户端计算机将使用的引导配置:

  1. $ MY_DNS1=192.0.2.91
  2. $ MY_DNS2=192.0.2.92
  3. $ MY_NFS4=server-01.example.edu
  4. $ cat << END > $HOME/esp/linux/boot.cfg
  5. #!ipxe
  6.  
  7. kernel --name kernel.efi \${prefix}/vmlinuz-$DEFAULT_VER initrd=initrd.img ro ip=dhcp rd.peerdns=0 nameserver=$MY_DNS1 nameserver=$MY_DNS2 root=nfs4:$MY_NFS4:/fc28 console=tty0 console=ttyS0,115200n8 audit=0 selinux=0 quiet
  8. initrd --name initrd.img \${prefix}/initramfs-$DEFAULT_VER.img
  9. boot || exit
  10. END

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读