如何通过pxe boot执行bash脚本

任何人都可以告诉我如何通过pxe boot来执行bash脚本。 我想要做的是Raw Server启动时,我想通过PXE启动将克隆映像部署在硬盘上。 我知道有一些像Fog这样的工具可以做类似的事情。 但是我正在尝试通过dd来做到这一点,作为大学项目的一部分。 任何forms的帮助表示赞赏。

编辑:

I followed following procedure. 1. Copied vmlinuz and initrd to tftp directory 2. Unpacked initrd (Using https://www.novell.com/documentation/zenworks7/dm7admin/data/b2cdjzb.html) 3. Added following lines in init script echo "Deploying image of an ESXi Hypervisor" echo "Downloading image" wget http://192.168.1.250/backup/esxi -O /bin/esxi echo "Deploying image" sudo dd if=~/bin/esxi of=/dev/rdisk2 bs=1m echo "Process Complete" 4. Repacked initrd 5. Added both files initrd and vmlinuz under boot folder /tftpboot/boot 6. Added following lines in pxe default file label VMware ESXi (Last Backup 1) KERNEL boot/vmlinuz APPEND initrd=boot/initrd But it still gives error "mountinng /sys on /root/sys failed" 

我在这里错过了什么?

从任何具有PXEfunction的发行版(即Ubuntu)获取内核和initrd.gz。 每个initrd都有一个init脚本,通常加载networking驱动程序,映射磁盘等,你可以创build一个互补的initrd重新定义init添加你的代码。 当你用pxelinux打开你的客户端时,你可以加载两个initrd,用逗号连续隔开。 第二个initrd的内容将覆盖原来的内容。 这种方法有几个好处:你不需要触摸原始的initrd。 由于它是一个非常小的文件等,组装次要initrd是容易/快速的。

编辑:

init通常是一个调用多个模块的复杂脚本。 正如我之前所说,它加载networking驱动程序,它映射磁盘等等。为了PXE启动你的内核/ initrd设置你一定会需要传递额外的参数在append行; 请参阅Serva PXE引导/安装几个Linux发行版(您可以从那里获取必要的参数)。 请考虑一个initrd可能会最终呈现一个特定的安装菜单或类似的东西; 你必须遵循init的代码,并在这之前插入“你的”代码。 这个任务需要对Bash和Linux有很好的了解。 请不要指望5分钟的工作。

下面是制作自定义启动光盘的演练,你可以理论上build立任何你想做的事情。

这将允许您创build一个可以启动并执行所需内容的环境。

http://ubuntuforums.org/showthread.php?t=688872

然后,您只需从pxe服务器启动该iso。

https://help.ubuntu.com/community/PXEInstallServer

我只列出了Ubuntu作为操作系统,因为它的logging非常完善。

祝你好运!