【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'
saveenv
【5】重启,如果用vmware,把usb设备connect到vmware里面去即可.
注:
由于ubuntu有个网络管理器,当T3挂载到ubuntu时会模拟成usb0网卡,网络管理器会自动对usb0网卡自动分配IP,而这个ip无法分配成我们nfs配置的192.168.1.11,所以建议把ubuntu网络管理器卸载掉,然后通过/etc/network/interfaces手动设置ubuntu的ip.
【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