(1)首先构建文件系统

  采用根文件系统,然后将system和data覆盖根文件系统中的system和data(这俩在根文件系统中是空的)


采用我这篇 :  http://blog.csdn.net/commshare/article/details/13507019 的方法,samba挂载远程编译服务器上out中的android系统编译生成文件,以便于提取文件系统。

挂载方法为 mount //远程IP/文件目录 本地目录 -o username=***,password=****



(2)开启pc机NFS服务

参见我这篇  http://blog.csdn.net/commshare/article/details/13507997

给/etc/exports中加入 /nfsboot * (rw,insecure,sync,no_wdelay,insecure_locks,no_root_squash) 

/nfsboot 是要挂载的文件系统存放位置。

把(1)中根文件系统放到/nfsboot下。


(3)配置内核

开发板是 三七一六 c   v二百  es,按照说明书配置。


打开nfs支持



没有nfs as root file

参考

========================

内核支持NFS分区(即编译时在File system中选中[*] Root file system on NFS), 
以及支持内核IP_PNP(即编译时在Networking中选中[*] IP: kernel level autoconfiguration)
    File systems  ---> 
        Network File Systems  ---> 
            <*> NFS file system support                        ## 必选
                [*]   Provide NFSv3 client support             ## 可选
            [*] Root file system on NFS                        ## 必选
    Networking  ---> 
        [*] Networking support 
            Networking options  ---> 
                [*]   IP: kernel level autoconfiguration       ## 必选
需要打开IP:Kernel level autoconfiguration 以及下面所有的选项包括DHCP, BOOTP, RARP,而且NFS Client Support不能是模块,必须编译进内核

============================

,咋办?

1)开启 kernel level autoconfiguration



我把它的三个子选项,都打开:



这样就能看到

设置"CONFIG_IP_PNP=y"

以及

CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y

都打开了。



选项的意义,参考我的:http://blog.csdn.net/commshare/article/details/13511987


这里,同时可以参考参考  http://blog.csdn.net/sonach/article/details/8102639 这位大牛的经历。

他根据内核源码,对这些做了分析。


2)关闭内核ramdisk支持,否则开机会默认挂ramdisk,不清楚原因。



3)内核配置


v200的es 的

[1 ]内核make kernel_menuconfig 配置


[2]  修改的配置文件是这个   out/target/product/Hi3716CV200/obj/KERNEL_OBJ/.config


【3】要用这个文件,替换掉实际编译的时候的配置文件,这个编译用的配置文件在内核源码中

这个路径在device/hisilicon/bigfish/sdk/source/kernel/linux-3.4.y/arch/arm/configs/


源码采用了新的配置之后,就可以编译了。


(4)配置fastboot


配置fastboot为nfs启动。

setenv bootargs mem=1G root=/dev/nfs rootfstype=nfs rsize=1024,wsize=1024 nfsroot=192.168.1.88:/nfsboot,nolock  ip=192.168.1.10:192.168.1.88:192.168.1.1:255.255.255.0:dpnfs:eth0:on console=ttyAMA0,115200 init=/init mtdparts=hi_emmc:1M(fastboot),1M(partition),1M(bootargs),10M(recovery),2M(deviceinfo),8M(baseparam),20M(logo),20M(logobak),40M(fastplay),40M(fastplaybak),40M(kernel),20M(misc),500M(system),1024M(userdata),100M(cache),-(sdcard)


配置了,板子内核就可以自动识别到gw,ipaddr,serverip。可能这些环境变量都是为bootargs服务的。

貌似bootargs是放在一个单独的分区中的,所以改动了之后,即使重新烧录fastboot也不会改变这些参数。




(5)烧写kernel

参见我这篇 :http://blog.csdn.net/commshare/article/details/13622735


hitools有个问题,就是serverip设置了不管用,因为我在fastboot中设置的serverip是我虚拟机的ip,不是pc windows64的ip,所以tftp服务器/hitools ,收不到请求。

所以要把fastboot的serverip设置为运行tftp服务器的ip。这个不影响fastboot的bootargs的,而且又能让hitools正常工作。



(6)内核挂根文件系统


这些文件必须是这样的权限:




否则:


=================权限不对======会有这样的报错==============

ALSA device list:
  #0: HISI-AIAO
VFS: Mounted root (nfs filesystem) on device 0:10. 已经挂了NFS
Freeing init memory: 1728K
init: skipping insecure file '/init.rc'  
mmc1: new high speed MMC card at address 0001
mmcblk0: mmc1:0001 MMC04G 3.57 GiB 
mmcblk0boot0: mmc1:0001 MMC04G partition 1 2.00 MiB
mmcblk0boot1: mmc1:0001 MMC04G partition 2 2.00 MiB
 mmcblk0: p1 p2 < p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 >
 mmcblk0boot1: unknown partition table
 mmcblk0boot0: unknown partition table
init: Timed out waiting for /dev/.coldboot_done
init: Unable to open persistent property directory /data/property errno: 2
eth0: no IPv6 routers present


然后就卡主了。

========================================



参考

In jellybean, init.rc, default.prop etc should be writable only by the owner. You need to change the file permission to 644 (owner writable, world read-only) when you write the filesystem.
http://e2e.ti.com/support/embedded/android/f/509/p/204567/759121.aspx




(7)挂载成功



18:40:44])
ADDRCONF(NETDEV_UP): eth0: link is not ready
PHY: mdio0:02 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
IP-Config: Complete:
     device=eth0, addr=192.168.1.10, mask=255.255.255.0, gw=192.168.1.1
     host=dpnfs, domain=, nis-domain=(none)
     bootserver=192.168.1.88, rootserver=192.168.1.88, rootpath=
ALSA device list:
  #0: HISI-AIAO
VFS: Mounted root (nfs filesystem) on device 0:10.
Freeing init memory: 1728K
init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.
mmc1: new high speed MMC card at address 0001
mmcblk0: mmc1:0001 MMC04G 3.57 GiB 
mmcblk0boot0: mmc1:0001 MMC04G partition 1 2.00 MiB
mmcblk0boot1: mmc1:0001 MMC04G partition 2 2.00 MiB
 mmcblk0: p1 p2 < p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 >
 mmcblk0boot1: unknown partition table
 mmcblk0boot0: unknown partition table
EXT4-fs (mmcblk0p15): recovery complete
EXT4-fs (mmcblk0p15): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p16): recovery complete
EXT4-fs (mmcblk0p16): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p17): recovery complete
EXT4-fs (mmcblk0p17): mounted filesystem with ordered data mode. Opts: (null)
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
init: cannot find '/system/bin/dtvserver', disabling 'dtvserver'
root@android:/ # ufsd: module license 'Commercial product' taints kernel.
ufsd:: trace mask set to 0000000f
ufsd: driver (UFSD_HEAD UFSD_HEAD_9, LBD=ON, delalloc, acl, ioctl, sd, fua, tr) loaded at bf000000
NTFS support included
optimized: speed
Build_for__Huawei_Hi3716cv200_k3.4.35_2013-05-09_with_lock_debugging_UFSD_HEAD_9
 'Evaluation version - not for resale!'


root@android:/ # 
root@android:/ # 
root@android:/ # 
root@android:/ # ls -aleth0: no IPv6 routers present

更多相关文章

  1. (原创)Android入门教程(三十六)------实现手机联系人的全选
  2. Android图片浏览器之缩略图
  3. Android扩展:一个自动findViewById的小工具
  4. Android中gradle的配置
  5. Android(安卓)Studio 第五十五期 - Studio3.0升级到gradle3.0.0
  6. android Bitmap如何保存成为一个bmp文件
  7. [置顶] React Native Android(安卓)Cookie Problem
  8. android播放音乐的三种方法实现
  9. Android中显示html标签或者带图片

随机推荐

  1. Android中GridView区中且行间距设置
  2. android 官方SDK文档
  3. Android(Java):边框
  4. android解决方案链接
  5. Android(安卓)用户界面---Android如何描
  6. android ui LinearLayout中按扭平行显示
  7. android开发资源
  8. android developers training 文档学习笔
  9. 作为一名Android开发者,怎样才能进入阿里,
  10. 将android工程作为另一个工程的库