配置DHCP 服务器
原本以为,给开发板配个静态的IP,就不需要DHCP服务了。可是开发板用PXE启动后,第一件事就是向服务器发送DHCP请求。所以DHCP必须要配。
配置文件都写好了。启动DHCP服务就是出错,还报告什么eth2的错误。很是看不懂。先想到的是不是服务没有安装。上网找RPM包。可是在一想,没安装的话,这些目录文件就不会存在啊,而且这种东西,一般都是会安装的。
后来才知道,当你的机器上有多块网卡时,你必须指定对那一块网卡上收到的请求提供DHCP服务。
vi /etc/sysconfig/dhcpd
DHCPDARGS=eth1 (我的是网卡 eth1)
这样重启DHCP服务就成功了。
还有DHCP服务器端的IP配置要和分给客户端的IP要是在一个网段内。
DHCP 同样也能给机器分配固定的IP,
vi /etc/dhcpd.conf 配置文件(具体写法,可以参加模板或者其他网页)
在里面写上开发板的 MAC Address,然后写上 fix_address 来指定要给他分配固定的IP.
建立 PXE配置文件
1. 拷贝 pxelinux.0文件到 /tftpboot目录下
2. 把Linux内核文件拷贝到 /tftpboot目录下
3. 在 /tftpboot目录下,建一个 pxelinux.cfg 目录
然后在 pxelinux.cfg目录下创建配置文件。
配置文件的命名,是根据开发板的ip 而定的,是开发板ip 的16进制。
比如DHCP 分配给开发板的 ip是 10.100.0.251
那么配置文件的文件名就是 0A6400FB,其中 0A代表10, 64代表100, 00 代表0, FB代表251。
如果IP地址是动态分配的,那么最后两位不知道,文件名可以取为 0A6400
关于这个命名规则,可以参考下面的链接。
然后就是这个文件里面的内容了,给我的感觉是跟grub中menu.lst文件的写法差不多。
(下面部分不完整,只能参考,不能照搬)
prompt 1
default WR_X86
timeout 50
label WR_X86
kernel bzImage root=/dev/nfs NFSROOT=10.100.0.252:/targetfs/WR_X86_FS
http://pxe.dev.aboveaverageurl.com/index.php/PXE_Booting
http://en.wikipedia.org/wiki/Preboot_Execution_Environment
上面部分中,kernel 和 root 的写法,跟平时 grub中的写法都是一样的。其中 NFSROOT是表示文件系统放在哪里。我目前就是放在服务器上,10.100.0.252是服务器的IP, /targetfs/WR_X86_FS是在这个服务器上的具体位置。不知是否还能放在不是服务器的其他电脑上?从指定IP这点来看,也许可以。
按照上述步骤配置完成后,在开发板上用PXE启动,先获取IP地址,然后启动内核,最后装载上文件系统。