iPXE源代码编译

http://search.gmane.org/?query=build+compile&group=gmane.network.ipxe.devel

最近一直在研究关于windows系统引导的技术,一开始是研究TrueCrypt的Boot模块,这是一个windows本地系统引导例子,可以通过vs进行编译。后来需要研究通过网络引导windows系统的技术,所以就找到了这个开源代码iPXE。通过阅读官网提供的说明,完全可以满足我目前的需求。至于iPXE具体能够完成的功能我们以后再说,或者通过iPXE官网进行详细了解。

虽然iPXE能够满足我的需求,但是需要我进行部分代码逻辑的修改。那么最直接的问题是,如何编译iPXE代码。首先通过官网了解到,必须使用gcc进行编译,没有了我们非常熟悉的vs工程,后来才知道,很多开源代码都是使用gcc进行编译,只是我没有关心过罢了。于是我就赶紧下载学习gcc编译工具,结果残酷的现实让我十分抓狂,原来gcc是Linux系统上的编译器,对于windows我们只能使用MinGW或者Cygwin,或者DJgpp。但是网上说他们的安装还是十分的繁琐,以至于我这菜鸟在程序安装的过程就夭折了。没办法,只好请求同事帮忙,正好我们头安装了MinGW,结果编译iPXE的时候报错了,无法编译。后来我建议他在他的Linux虚拟机环境中编译,结果同样碰到了问题,虽然最后忙活了半天能够编译了,但是我还是感觉编译的过程十分复杂,因为鄙人从来没有玩过Linux系统,看着同事忙活半天搞定后,我感觉太难自己搞不定,所以我就自己想办法进行编译。通过不停的网络搜索,终于找到了一个比较可靠的说明,编译iPXE的时候建议使用Linux系统进行,这样可以避免很多繁琐的问题,毕竟作者是在Linux系统上开发的,于是我就请教同事,我应该使用什么Linux进行iPXE的编译,同事推荐他的foder,别我无情的拒绝了,然后推荐opensuse(因为给他说网上有人使用了某一个命令很容易就完成了编译),于是我就选择了下载suse,但是没有想到这个安装程序竟然4G,实在受不了下载的时间,于是想到了我曾经安装过了Ubuntu系统,于是重新下载了最新版本的尤麒麟系统(Ubuntu Kylin 14.10),结果没有想到分分钟搞定了iPXE的编译,尽管我不懂怎么使用Linux,通过搜索引擎还是可以完成的。

下面是实现iPXE编译的过程:

一、安装最新版本的Ubuntu Kylin 14.10虚拟机(VMware)。

二、安装vmtools,具体方法网上很多。

三、下载安装git工具,以便我们下载iPXE源代码。安装git的命令如下:

$sudo apt-get install git
$sudo apt-get install git-core

四、安装gcc编译工具。安装命令如下:

$sudo apt-get  build-depgcc

五、使用git下载iPXE源代码,命令如下:

 git clone git://git.ipxe.org/ipxe.git

六、进入ipxe/src,然后make:

  cd ipxe/src
  make

编译之后就出现了结果,虽然有报了一个错误,但是我需要的引导程序已经编译成功。真实求人不如求己呀。

#!/bin/bash

# get source
cd /tmp
git clone git://git.ipxe.org/ipxe.git

# create boot script
cat <<EOF> /tmp/ipxe/src/boot.ipxe
#!ipxe

dhcp && chain http://\${next-server}/\${mac} || chain http://preseed.panticz.de/\${mac}
EOF

# OPTIONAL: enable HTTPS support
sed -i -e '/DOWNLOAD_PROTO_HTTPS/ s/#undef/#define/' /tmp/ipxe/src/config/general.h

# OPTIONAL: change product name
sed -i 's|PRODUCT_NAME ""|PRODUCT_NAME "preseed.panticz.de"|g' /tmp/ipxe/src/config/general.h

cd /tmp/ipxe/src

# build CD image (/tmp/ipxe/src/bin/ipxe.iso)
make bin/ipxe.iso EMBED=boot.ipxe

# build USB image (/tmp/ipxe/src/bin/ipxe.usb)
make bin/ipxe.usb EMBED=boot.ipxe

# build PXE image (/tmp/ipxe/src/bin/ipxe.pxe)
make bin/ipxe.pxe EMBED=boot.ipxe

# build GRUB image (/tmp/ipxe/src/bin/ipxe.lkrn)
make bin/ipxe.lkrn EMBED=boot.ipxe

# build undionly image (/tmp/ipxe/src/bin/undionly.kpxe)
make bin/undionly.kpxe EMBED=boot.ipxe



你可能感兴趣的:(Build,iPXE编译,iPXE)