PXE
CommentEnvironment:
Host: Ubuntu 20.04.1, Oracle VM VirtualBox Manager
第一步,创建一个虚拟机
vboxmanage
没什么好说的,读文档
首先要创建一个 natnetwork
然后根据 build.sh 的参数决定虚拟机的名称。创建虚拟磁盘并加载
第二步,准备 PXE 启动环境
首先搭一个 tftp 服务器,在里面准备:
1 | pxelinux.0 |
挂一个 http 服务器,在里面准备:
1 | ubuntu.iso |
问题一,我在 Ubuntu 20.04.3 上 apt download pxelinux
解包得到的 pxelinux.0
6.0.4,在 PXE 启动后就中止了,界面停留在
1 | PXELINUX 6.04 PXE 20190223 Copyright (C) 1994-2014 H. Peter Anvin et al |
既不运行,也不报错。无论我如何写 .cfg,也没有用。在经过几小时的反复横跳后,我从 mirror 上随便找了一个 6.03,顺利启动了。。。
为了让每台机器配置的时候带上自己的机器编号(如 ip 配置所需要的),我把 tftp 服务器下的目录结构又改了一下:
每个 vm-id 目录都是在 build.sh id 运行时自动生成。共用的文件用硬链接(tftp不识别软链接),需要修改的配置文件,用一个变量名把需要修改的地方标注,然后用 sed
替换为与各自的 id 相关的字符串。
自动安装的 user-data,主要是配置 hostname, username, password, ssh 等。以及安装后需要执行的命令。这里用 echo
创建了 systemd service,以及开机自动执行的脚本。
开机配置 ip 和 ssh 的公私钥,通过 systemd
执行一个脚本。
返回机器 id 的 http 服务器,我安装了 nginx
。配置文件在自动安装时用 wget
获取了。