Android NFS 开发配置

来源:互联网 发布:深交所网络投票系统 编辑:程序博客网 时间:2024/05/11 23:06

1】在PC上安装nfs服务

sudoapt-get install nfs-kernel-server

配置nfs服务器,把挂在目录设置在/nfs/rootfs

sudovi /etc/exports

在exports文件最后添加一行:

/nfs/rootfs *(rw,sync,no_root_squash)

 启动nfs服务
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart

测试nfs服务 
$showmount -e
Export list for user:
/nfs/rootfs  *

好了到此nfs 的安装和配置工作已经完成,除了可以挂载Android的根文件系统外,我们也可以用一下命令将共享文件挂载到本地磁盘上:
$ sudo mount -t nfs localhostip:/srv /mnt
可以运行mount命令查看是否挂载成功。查看后可以使用以下命令卸载:
$ sudo umount /mnt

2】配置内核,使支持nfs.(原理:1,usb驱动配置成模拟以太网驱动.2,取消Initial RAMfilesystem,使内核从nfs服务器启动)

cd~/t3/kernel_imx/

svnupdate

makeimx5_t3_nfs_defconfig

makeuImage


,也可以通过手工配置:

Makemenuconfig

去掉InitialRAM filesystem选项:

Generalsetup --->

[] Initial RAM filesystem and RAM disk (initramfs/initrd) suppor

选择usbGadget驱动为EthernetGadget

|| --- USB Gadget Support

|| <*> USB Gadget Drivers (Ethernet Gadget (with CDCEthernet supp| |

|| Ethernet Gadget (with CDC Ethernet support) | |

|| [*] RNDIS support


3】按电源键+返回键,把内核升级到自己编译的nfs内核uImage,uboot升级成可以进入uboot模式的uboot.bin

4】重启,按任意键进入uboot模式,设置环境变量

setenv bootargs_nfs 'setenv bootargs ${bootargs} ip=off root=/dev/nfs init=/init nfsroot=192.168.1.10:/nfs/rootfs ip=192.168.1.11::::usb0,v3,tcp'


setenv bootargs_android 'setenv bootargs ${bootargs} ${bootargs_nfs} video=mxcdi0fb:RGB24,XGA video=mxcdi1fb:RGB565,1024x768M@60 di1_primary gpu_memory=32M androidboot.console=ttymxc0'


saveenv


5】重启,如果用vmware,usb设备connectvmware里面去即可.


:

由于ubuntu有个网络管理器,T3挂载到ubuntu时会模拟成usb0网卡,网络管理器会自动对usb0网卡自动分配IP,而这个ip无法分配成我们nfs配置的192.168.1.11,所以建议把ubuntu网络管理器卸载掉,然后通过/etc/network/interfaces手动设置ubuntuip.

1】如何卸载掉ubuntu网络管理器:

打开新立得软件包管理器,左边拉到网络把network-manager都卸载掉.

network-manager

network-manager-dev

network-manager-gnome

2】将vmware设置成NAT,以免造成网络中电脑的ip冲突

首先看看vmwareNAT配置的ip,不同用户的vmware通常不一样的.

从这里可知,我的vmware网关是192.168.0.1,故我的虚拟机ip应该设置成192.168.0.*,网关设置成192.168.0.1,这样才能通过NAT上网.请看第三步.

3】手动设置ip方法如下:

vi/etc/network/interfaces

autolo

ifacelo inet loopback


autoeth0

ifaceeth0 inet static


address 192.168.0.115


netmask 255.255.255.0


gateway 192.168.0.1


allow-hotplugusb0

autousb0

ifaceusb0 inet static


address 192.168.1.10


netmask 255.255.255.0


gateway 192.168.1.1



4】添加中国电信DNS

vi /etc/resolv.conf


#Generated by NetworkManager

domain ebensz.com

search ebensz.com

nameserver 192.168.1.5

nameserver 202.96.128.86

nameserver 202.96.128.68



sudo /etc/init.d/networking restart

如果仍然不能上网或者网络不通,有可能是vmware的网络配置乱了,可以重新恢复vmware的网络配置。

点击即可


5】制作Androidrootfs

复制out\target\product\imx51_bbg\root\*\nfs\rootfs

cp -dar out/target/product/imx51_bbg/root/* /nfs/rootfs

复制out/target/product/imx51_bbg/system目录到/nfs/rootfs/

cp -dar out/target/product/imx51_bbg/system /nfs/rootfs/

更改init.rc脚本,使android可以在nfs上跑.

注释掉所有的mount,因为我们不需要从SD卡或者Nand启动.

#on fs

#mount ext4 partitions

#Mount /system rw first to give the filesystem a chance to save acheckpoint

#mount ext4 /dev/block/mmcblk0p2 /system

#mount ext4 /dev/block/mmcblk0p2 /system ro remount

#mount ext4 /dev/block/mmcblk0p5 /data nosuid nodev

#mount ext4 /dev/block/mmcblk0p6 /cache nosuid nodev


#on post-fs

#once everything is setup, no need to modify /

#mount rootfs rootfs / ro remount







原创粉丝点击