【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裝置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