IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    android使用NFS方式启动

    Blackrose发表于 2015-12-02 09:46:00
    love 0

    用NFS作为rootfs来启动内核在开发中的必备的,用nfs启动android,也就免去频繁的对nand烧写操作。网上有很多文章,可惜都是互相copy,参考性不强。下面来说明如何用NFS来启动android,具体的操作就不细说了。通常的嵌入式linux使用NFS启动,需要启动NFS的文件系统和相关网络支持,这是第一步,至少内核在最后阶段能mount到FS,而mount之前网络协议也必须是支持的。

    1.内核启用NFS文件系统支持,网络里面支持IP_PNP下的BOOTP,DHCP,RARP

    2.android内核在最后阶段,是执行RAMDISK中的init进程来remount分区,system和data也是在这个时候才挂载上的。使用NFS启动时,要关闭内核中的ramdisk功能。这样,内核启动后,mount到NFS的目录,然后直接执行NFS目录下的init进程

    3.准备android的文件系统。编译aosp代码,最终生成system, data, root目录,分别copy到NFS目录下,配置NFS允许网络访问该目录。在nfsroot目录下,需要修改init.rc文件。里面会对system重新挂载,可以注释掉该内容,修改如下:

    #on fs
    # mount mtd partitions
        # Mount /system rw first to give the filesystem a chance to save a checkpoint
        #mount yaffs2 mtd@system /system
        #mount yaffs2 mtd@system /system ro remount
        #mount yaffs2 mtd@userdata /data nosuid nodev
        #mount yaffs2 mtd@cache /cache nosuid nodev
    
    on post-fs
        # once everything is setup, no need to modify /
        mount rootfs rootfs / rw remount
    

    这里,我关闭也on fs的action操作,记得把on fs也注释掉。

    4.内核启动参数

    mem=128M console=ttyS0,115200 androidboot.console=ttyS0 root=/dev/nfs nfsroot=192.168.1.200:/srv/sam9x5_androidfs ip=192.168.1.190:192.168.1.200:192.168.1.1:255.255.255.0::eth0:off init=/init rootdelay=5
    

    挂载NFS来说并不难,主要是android使用了ramdisk来启动,结果花了一天半时间才搞定。



沪ICP备19023445号-2号
友情链接