以下操作均在ubuntu10.04操作系统上进行。
sudodpkg-reconfigure portmap, 对Shouldportmap be bound to the loopback address?选N
sudo gedit/etc/default/portmap末行 OPTIONS="-i127.0.0.1"改为OPTIONS=,即删除"-i127.0.0.1"
sudo gedit/etc/hosts.deny
文本末添加
### NFSDAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
sudo gedit/etc/hosts.allow
文本末加入
### NFSDAEMONS
portmap:192.168.0.
lockd:192.168.0.
rquotad:192.168.0.
mountd:192.168.0.
statd:192.168.0.
sudo/etc/init.d/portmap restart
安装nfs服务器
sudoapt-get install nfs-kernel-server
配置
sudo gedit/etc/exports
添加nfs路径:
/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target/filesys192.168.0.1/24(rw,no_root_squash,no_all_squash,sync)
使用命令sudoshowmount -e查看nfs导出目录
显示 clnt-create : RPC :Program not registered
sudoexportfs -va使exports文件生效
sudoexportfs -r更新
sudoshowmount 192.168.0.46 -e
显示
Export list for 192.168.0.46:
/nfsboot/filesys 192.168.0.*
sudo/etc/init.d/portmap restart
sudo/etc/init.d/nfs-kernel-server restart
请用如下命令暂时开放所有端口
sudoiptables -P INPUT ACCEPT
sudoiptables -P OUTPUT ACCEPT
或使用下列命令关闭防火墙
sudoiptables -F
使用命令
sudomount -t nfs 127.0.0.1:【解压路径】Release/Source/ipnc_rdk/target/filesys
在本地挂载nfs目录,如果没有错误,表示NFS已OK.
切换到内核源码目录
cd/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/ti-davinci
makeARCH=arm CROSS_COMPILE=arm_v5t_le- mrproper
makeARCH=arm CROSS_COMPILE=arm_v5t_le- distclean
makeARCH=arm CROSS_COMPILE=arm_v5t_le- clean
makeARCH=arm CROSS_COMPILE=arm_v5t_le- davinci_dm368_ipnc_defconfig
makeARCH=arm CROSS_COMPILE=arm_v5t_le- checksetconfig
使用命令
makeARCH=arm CROSS_COMPILE=arm_v5t_le- menuconfig
进入内核配置:
修改
DeviceDrivers --->Network device support ---> Ethernet (10 or100Mbit) --->
按空格,修改为
<*> Generic Media Independent Interface device support <*>TI DaVinci EMAC Support
修改
Filesystems ---> Network File Systems --->
按空格,修改为:
[*] Provide NFSv3 client support
[*]Root file system on NFS
保存配置,退出。
方式1:
切换到ipnc目录:
cd/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc或cd..
使用下面命令进行内核编译
makelspbuild MAKE_TARGET=uImage
编译完成后,会自动将内核映像文件复制到tftp目录下。
方式2:
在linux内核源码目录下使用命令
makeARCH=arm CROSS_COMPILE=arm_v5t_le- uImage
编译完成后,内核映像文件uImage在arch/arm/boot目录下,需手动复制到tftp目录下。
切换到nfs目录的父母录
cd/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target
如果该目录下已经存在filesys文件夹,将其删除。
将cramfsImage_ipnc_dm368_2.0.0复制到当前目录下。
第一步:
mkdirtmpdir
sudo mountcramfsImage_ipnc_dm368_2.0.0 tmpdir -o loop
cd tmpdir
tar -cvf../cramfsImage_ipnc_dm368.tar ./将tmpdir中的内容打包放在其父目录下
cd ..
sudo umounttmpdir
rm -Rftmpdir
tmpdir目录是不可改写的,因为只读。所以要把它里面的东西导出到新的目录下。
第二步:
mkdirfilesys
tar -xvfcramfsImage_ipnc_dm368.tar -Cfilesys
修改filesys目录中的内容,以符合自己的需要。
切换到nfs目录的父母录
cd/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target
mkcramfsfilesys cramfsImage_ipnc_dm368.cramfs
cramfsImage_ipnc_dm368.cramfs即为制作好的文件系统。
配置如下
setenvserverip 192.168.0.46
setenvnetmask 255.255.255.0
setenvgatewayip 192.168.0.254
setenvipaddr 192.168.0.168
setenvethaddr 90:3D:5A:10:3D:52
setenvdnsip 222.172.200.68
setenvbootdelay 1
setenvnfshost 192.168.0.46
setenvrootpath /ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target/filesys
使用静态ip启动内核
setenvbootargs 'console=ttyS1,115200n8 noinitrd rwip=192.168.0.168:192.168.0.46:192.168.0.254:255.255.255.0:DM368_IPNC:eth0:offroot=/dev/nfsnfsroot=192.168.0.46:/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target/filesys,nolockmem=46M'
使用dhcp启动内核
setenvbootargs 'console=ttyS1,115200n8 noinitrd rw ip=dhcp root=/dev/nfsnfsroot=192.168.0.46:/ipnc_dev/DM36x_IPNC_DEV/2.0/Lab/ipnc/target/filesys,nolockmem=46M'
这里将参数nfsroot配置为$(nfshost):$(rootpath),nolock不能启动,原因未知。
ip参数的格式为ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
client-ip:你正在使用的这块板子,你要为它设置的ip
server-ip:提供nfs服务的服务器的ip地址。如不需要NFS服务于板子,则此项可以空置
gw-ip:网关的ip地址,如果nfs与目标板在同一个网段内,则此项可以空置
netmask:子网掩码,如此项为空,则子网掩码为默认值255.255.255.0
hostname:你希望给目标板设置的主机名,在linux的shell中的如bash,命令行最开始有一个形如blacksword@laptop2:~ $这样的一个提示符,blacksword指当前的用户,而laptop2就是一个hostname.此项可以留空
device:如果目标板上仅一个网卡,且只接了一个PHY,同时电路的设计没有将PHY拉出两个地址来,则此项为空。如果不指有一个网卡,则可以指定要设置的ip地址是作用于哪一个网卡的。如指定给第一块网卡,则该参数为eth0.第二块为eth1,依此类推。
autoconf:
自动配置未明确指定参数的方式,可以是dhcp,rarp, bootp。如果不希望使用自动配置则可以使用off值来关闭autoconf参数可以独立作用于ip参数,如ip=dhcp即表示由dhcp服务器给内核的ip参数提供所有数据。ip=off则表示所有参数都不配置,留待系统启动进行配置。
从tftp下载内核映像启动
setenvbootcmd 'tftpboot 0x80700000 uImage_ipnc_DM368; bootm 0x80700000'
从flash复制内核启动
setenvbootcmd 'nand read 0x82000000 0x700000 0xD00000;nboot 0x80700000 00x500000;bootm 0x80700000'
保存配置
saveenv
重启设备
reset