内核直接NFS挂载Android文件系统启动

    xiaoxiao2021-11-30  50

    内核直接NFS挂载Android文件系统启动

    (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

    原文地址:http://blog.csdn.net/commshare/article/details/13766515

    转载请注明原文地址: https://ju.6miu.com/read-679085.html

    最新回复(0)