最近在做davinci视频开发,用的是DM3730 的板子,搭建linux 主机环境时 碰到了这样一个问题:虚拟机环境linux中的DHCP正常工作,可是tftp 服务器工作不正常,linux主机和物理主机xp可以ping通,linux主机和板子也可以ping通,上电,启动板子,进入uboot,使用tftp uImage加载内核j镜像的时候出现以下错误:
OMAP3 SBC3530 # tftp uImage
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 02:3d:14:01:50:03
Using smc911x-0 device
TFTP from server 192.168.1.150; our IP address is 192.168.1.100
Filename 'uImage'.
Load address: 0x82000000
Loading: T T
Abort
OMAP3 SBC3530 # bootm
Wrong Image Format for bootm command
ERROR: can't get kernel image!
OMAP3 SBC3530 #
下面是搭建DHCP服务器的步骤“:
一个是NAT(eth0),一个是Internal(eth1),我们就是要用eth1来作dhcp服务器。
首先安装dhcp服务器,打开终端,输入:
sudo apt-get install dhcp3-server
安装完之后要修改两个配置文件,一个是修改要用的网卡,一个是服务器的配置。
第一个要改的文件是/etc/default/dhcp3-server
在INTERFACE=””的引号里输入eth1即可:
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server bythe maintainer scripts
# This is a POSIX shell fragment
# On what interfaces should the DHCP server(dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
第二个要改的是/etc/dhcp3/dhcpd.conf
这个文件里面有很多已经写好的例子,不过是被注释掉的,有兴趣可以阅读一下。
找到
#A slightly different configuration for an internal subnet.
这一行下面就是一个比较详细的例子,我们就基于这个稍微修改一下就好了:
subnet 192.168.2.0 netmask255.255.255.0 {
range 192.168.2.0 192.168.2.255;
option domain-name-servers 192.168.2.1,192.168.2.2;
option domain-name "ubtw.net";
option routers 192.168.2.3;
option broadcast-address 192.168.2.255;
default-lease-time600;
max-lease-time7200;
}
修改完保存即可。
不过现在还不能启动服务器,现在要先去Ubuntu的网络设置那里,把eth1的ipv4 setting修改一下,其中Method设置为Manual。Address添加一个192.168.2.0,Newmask:255.255.255.0然后Apply,并连接eth1就行。
现在就可以启动DHCP服务器了,在终端中输入
sudo/etc/init.d/dhcp3-server stop
sudo/etc/init.d/dhcp3-server start
如果看到
* Starting DHCP server dhcpd3 [ OK]
就代表服务器启动成功,然后打开XP的虚拟机测试,如果能成功获取IP地址就代表成功了。
如果看到
* Starting DHCP server dhcpd3
* check syslog for diagnostics. [fail]
可以试一下重启Ubuntu或者检查上述步骤是否有错漏。