11

我遇到的问题的解决办法是:

OKMX8MPX-C V2.0 开发板
不要在文档中 复制 他们的 命令行,
直接 手动 抄写一遍。先别怀疑人家的文档,
先确定 自己是真正的按照 文档一步一步的做的

下面那个地方是两个冒号,
我想当然的 写了一个冒号

setenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.53:192.168.99.50:192.168.99.1:255.255.255.0::eth0:off  nfsroot=192.168.99.50:/nfs_rootfs,v3,tcp

setenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.53:192.168.99.50:192.168.99.1:255.255.255.0::eth0:off nfsroot=192.168.99.50:/nfs_rootfs,v3,tcp

Ubuntu18.04系统中,开发板linux2.6.35.7内核通过NFS挂载根文件系统失败的解决方法
https://blog.csdn.net/qq_40897531/article/details/106784915

https://blog.csdn.net/weixin_52372485/article/details/121183020
https://blog.csdn.net/chihiro_s/article/details/114393046

TFTP+NFS环境搭建以及TFTP加载内核和设备数,NFS挂载文件系统的方法(也可以使用NFS加载内核和设备树)
http://www.openedv.com/forum.php?mod=viewthread&tid=302907&extra=page=2

https://blog.csdn.net/qq_21479819/article/details/125416513

sudo cat /proc/fs/nfsd/versions
rpcinfo -p | fgrep nfs
sudo /etc/init.d/nfs-kernel-server restart

⑤ 检查nfs服务器中挂载的目录。

showmount -e

有空 整理

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 ## 必选

NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象.可用的解决方案是:在客户端改用TCP协议,使用下面的命令,

mount -t nfs -o intr,nolock,tcp,rsize=1024,wsize=1024 192.168.100.10:/home/nfs /mnt/nfs

mount -t nfs -o nolock -o tcp 192.168.100.10:/home/nfs /mnt/nfs
https://www.jianshu.com/p/a54007f400f5%20

https://www.csdn.net/tags/MtTakg5sOTE1NTItYmxvZwO0O0OO0O0O.html

https://blog.csdn.net/qq_45531502/article/details/125428004

https://blog.csdn.net/weixin_42385943/article/details/115868863?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-115868863-blog-113961375.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-115868863-blog-113961375.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=7

http://t.zoukankan.com/wahaha02-p-9559345.html

https://www.kernel.org/doc/html/latest/admin-guide/nfs/nfs-client.html
https://www.jianshu.com/p/aad01daf1447

修改完成后, 保存并退出“ /etc/exports” 文件。然后新建“ /nfsroot”目录,并为该目录
设置最宽松的权限:
vmuser@Linux-host:~$ sudo mkdir /nfsroot
vmuser@Linux-host:~ s u d o c h m o d − R 777 / n f s r o o t v m u s e r @ L i n u x − h o s t sudo chmod -R 777 /nfsroot vmuser@Linux-host ~ sudochmod−R777/nfsrootvmuser@Linux−host  sudo chown -R nobody /nfsroot

3、 启动 NFS 服务

在虚拟机命令框执行如下命令,可以启动 NFS 服务:
vmuser@Linux-host ~$ sudo /etc/init.d/nfs-kernel-server start
执行如下命令则可以重新启动 NFS 服务:
vmuser@Linux-host ~$ sudo /etc/init.d/nfs-kernel-server restart
执行启动命令后,其操作结果如图 所示,表示 NFS 服务已正常启动。

Networking support

–>Networking options
–>TCP/IP networking
–>IP:kernel level autoconfiguration
File systems

–>Network File System
–>NFS client support
–>Root file system on NFS

https://www.cnblogs.com/wahaha02/p/9559345.html
mount -t nfs -o nolock 192.168.0.24:/ /mnt
https://blog.csdn.net/weixin_35945480/article/details/116693706
NFS client support
https://baijiahao.baidu.com/s?id=1734413681962454306&wfr=spider&for=pc
https://www.jianshu.com/p/a6fdb865d0b1
linux中查看nfs日志,NFS服务日志分析
linux中查看nfs日志,NFS服务日志分析

showmount -e 192.168.161.133 #成功检测到共享
cat /var/log/messages |grep nfs

2)举例说明:

NFS Server IP :192.168.168.0.200

客户端: 192.168.0.201

#snoop 192.168.0.200 192.168.0.201

这行命令表示抓 192.168.0.200和192.168.0.201之间的数据流。抓取的信息如图3所示。

showmount -e 显示某台主机的/etc/exports所共享的目录数据

showmount -a 显示当前主机与客户端NFS联机共享状态

showmount -e

https://www.csdn.net/tags/MtzaAgxsOTk2MjctYmxvZwO0O0OO0O0O.html
在查看对应的挂载信息的时候,也可以使用命令nfsstat,如下所示:

[root@nfsclient~]# nfsstat -m(查看挂载的NFS的信息)

/opt from192.168.1.70:/

Flags: rw,relatime,vers=4,rsize=16384,wsize=16384,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.63,minorversion=0,local_lock=none,addr=192.168.1.70

著作权归作者所有:来自51CTO博客作者mb5fdb131956bf3的原创作品,请联系作者获取转载授权,否则将追究法律责任
NFS网络文件系统-问题解决方法
https://blog.51cto.com/u_15060545/2654275

解决方案:

将rpcbind服务启动即可。

[root@nfsserver~]# /etc/init.d/rpcbind start(启动rpcbind服务)

Startingrpcbind: [ OK ]

https://blog.51cto.com/u_15060545/2654275

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/net/sunrpc/xprtsock.c?id=7e3d3620974b743b91b1f9d0660061b1de20174c&context=3&ignorews=0&dt=1


forlinx=>
forlinx=> printenv
baudrate=115200
board_name=OK8MP-C
board_rev=iMX8MP
boot_fit=no
bootcmd=mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; elif test ${fastboot_dev} = mmc1 && run loadupdate; then run sdargs; run mmcupdate; else if run loadimage; then run mmcboot; else run netboot; fi; fi; fi;bootcmd_mfg=run mfgtool_args;if iminfo ${initrd_addr}; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; else booti ${loadaddr} ${initrd_addr} ${fdt_addr}; fi; else echo "Run fastboot ..."; fastboot 0; fi;
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc1,115200
emmc_dev=2
eth1addr=16:c9:54:28:ed:b5
ethaddr=16:c9:54:28:ed:b4
ethprime=eth1
fastboot_dev=mmc2
fdt_addr=0x43000000
fdt_file=OK8MP-C.dtb
fdt_high=0xffffffffffffffff
fdtcontroladdr=43000000
gatewayip=192.168.99.1
image=Image
initrd_addr=0x43800000
initrd_high=0xffffffffffffffff
ipaddr=192.168.99.46
jh_clk=
jh_mmcboot=setenv fdt_file imx8mp-evk-root.dtb;setenv jh_clk clk_ignore_unused; if run loadimage; then run mmcboot; else run jh_netboot; fi;
jh_netboot=setenv fdt_file imx8mp-evk-root.dtb; setenv jh_clk clk_ignore_unused; run netboot;
kboot=booti
loadaddr=0x40480000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
loadupdate=mmc dev 1;fatload mmc 1:1 ${loadaddr} config.ini;
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc clk_ignore_unused
mmcargs=setenv bootargs ${jh_clk} console=${console} root=${mmcroot}
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fit} = yes || test ${boot_fit} = try; then bootm ${loadaddr}; else if run loadfdt; then booti ${loadaddr} - ${fdt_addr}; else echo WARN: Cannot load the DT; fi; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk2p2 rootwait rw
mmcupdate=fatload mmc 1:1 ${loadaddr} kernel/Image;fatload mmc 1:1 ${initrd_addr} ramdisk.img;fatload mmc 1:1 ${fdt_addr} kernel/${fdt_file};booti ${loadaddr} ${initrd_addr} ${fdt_addr};
nandfit_part=yes
netargs=setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off nfsroot=192.168.99.50:/nfs_rootfs,v3,tcp
netboot=echo Booting from net ...; run netargs;  if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${loadaddr} ${image}; if test ${boot_fit} = yes || test ${boot_fit} = try; then bootm ${loadaddr}; else if ${get_cmd} ${fdt_addr} ${fdt_file}; then booti ${loadaddr} - ${fdt_addr}; else echo WARN: Cannot load the DT; fi; fi;
netmask=255.255.255.0
script=boot.scr
sd_dev=1
sdargs=setenv bootargs ${jh_clk} console=${console} root=/dev/ram0 rootwait rw
serial#=1b2ac8003a729973
serverip=192.168.99.50
soc_type=imx8mp
splashimage=0x50000000
video_hdmi=on
video_lvds=off
video_mipi=offEnvironment size: 2939/4092 bytes
forlinx=>setenv netargs setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off \ nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsetenv netboot 'run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}'
run netbootforlinx=> printenv
baudrate=115200
board_name=OK8MP-C
board_rev=iMX8MP
boot_fit=no
bootcmd=mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; elif test ${fastboot_dev} = mmc1 && run loadupdate; then run sdargs; run mmcupdate; else if run loadimage; then run mmcboot; else run netboot; fi; fi; fi;
bootcmd_mfg=run mfgtool_args;if iminfo ${initrd_addr}; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; else booti ${loadaddr} ${initrd_addr} ${fdt_addr}; fi; else echo "Run fastboot ..."; fastboot 0; fi;
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc1,115200
emmc_dev=2
eth1addr=16:c9:54:28:ed:b5
ethaddr=16:c9:54:28:ed:b4
ethprime=eth1
fastboot_dev=mmc2
fdt_addr=0x43000000
fdt_file=OK8MP-C.dtb
fdt_high=0xffffffffffffffff
fdtcontroladdr=43000000
gatewayip=192.168.99.1
image=Image
initrd_addr=0x43800000
initrd_high=0xffffffffffffffff
ipaddr=192.168.99.46
jh_clk=
jh_mmcboot=setenv fdt_file imx8mp-evk-root.dtb;setenv jh_clk clk_ignore_unused; if run loadimage; then run mmcboot; else run jh_netboot; fi;
jh_netboot=setenv fdt_file imx8mp-evk-root.dtb; setenv jh_clk clk_ignore_unused; run netboot;
kboot=booti
loadaddr=0x40480000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
loadupdate=mmc dev 1;fatload mmc 1:1 ${loadaddr} config.ini;
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc clk_ignore_unused
mmcargs=setenv bootargs ${jh_clk} console=${console} root=${mmcroot}
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fit} = yes || test ${boot_fit} = try; then bootm ${loadaddr}; else if run loadfdt; then booti ${loadaddr} - ${fdt_addr}; else echo WARN: Cannot load the DT; fi; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk2p2 rootwait rw
mmcupdate=fatload mmc 1:1 ${loadaddr} kernel/Image;fatload mmc 1:1 ${initrd_addr} ramdisk.img;fatload mmc 1:1 ${fdt_addr} kernel/${fdt_file};booti ${loadaddr} ${initrd_addr} ${fdt_addr};
nandfit_part=yes
netargs=setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off  nfsroot=192.168.99.50:/nfs_rootfs,v3,tcp
netboot=run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}
netmask=255.255.255.0
script=boot.scr
sd_dev=1
sdargs=setenv bootargs ${jh_clk} console=${console} root=/dev/ram0 rootwait rw
serial#=1b2ac8003a729973
serverip=192.168.99.50
soc_type=imx8mp
splashimage=0x50000000
video_hdmi=on
video_lvds=off
video_mipi=offEnvironment size: 2692/4092 bytes
forlinx=>Loading Environment from MMC... OK
[*]-Video Link 0fail to find output device
probe video device failed, ret -19[0] lcd-controller@32fc6000, video
fail to find output device
probe video device failed, ret -19
In:    serial
Out:   serial
Err:   serialBuildInfo:- ATF f1d7187- U-Boot 2020.04-00012-g7f68cd5a24-dirtyswitch to partitions #0, OK
mmc2(part 0) is current device
a1007 auth ok!
flash target is MMC:2
Net:   config yt8521
eth0: ethernet@30be0000
Fastboot: Normal
Normal Boot
Autoboot in 1 seconds
switch to partitions #0, OK
mmc2(part 0) is current device
28150272 bytes read in 638 ms (42.1 MiB/s)
Booting from mmc ...
67111 bytes read in 16 ms (4 MiB/s)
## Flattened Device Tree blob at 43000000Booting using the fdt blob at 0x43000000Using Device Tree in place at 0000000043000000, end 0000000043013626Starting kernel ...[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.4.70-2.3.0 (forlinx@ubuntu) (gcc version 9.2.0 (GCC)) #2 SMP PREEMPT Wed Aug 3 20:14:21 PDT 2022setenv netargs setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off \ nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off \ nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off \ nfsroot=192.168.99.50:/nfs_rootfs,tcpsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off \ nfsroot=192.168.99.50:/nfs_rootfs,tcp  setenv netboot 'run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}'
run netbootmmcargssetenv netboot 'run mmcargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}'
run netbootmount -t nfs4 -o vers=4 192.168.99.50:/nfs_rootfs /mntmount -t nfs -o vers=3 192.168.99.50:/nfs_rootfs /mntRPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"bootcmd=mmc dev ${mmcdev};
if mmc rescan; then if run loadbootscript; then run bootscript; elif test ${fastboot_dev} = mmc1 && run loadupdate; then run sdargs; run mmcupdate; else if run loadimage; then run mmcboot; else run netboot; fi; fi;
fi;setenv mmc_nfs_boot 'echo Booting from mmc ...; run netargs; if test ${boot_fit} = yes || test ${boot_fit} = try; then bootm ${loadaddr}; else if run loadfdt; then booti ${loadaddr} - ${fdt_addr}; else echo WARN: Cannot load the DT; fi; fi;'setenv boot_nfs_cmd 'mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; elif test ${fastboot_dev} = mmc1 && run loadupdate; then run sdargs; run mmcupdate; else if run loadimage; then run mmc_nfs_boot; else run netboot; fi; fi; fi;'run boot_nfs_cmdsetenv netargs setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off  nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off  nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsudo /etc/init.d/nfs-kernel-server restartsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw nfsroot=192.168.99.50:/nfs_rootfs,v3  ip=192.168.99.46:192.168.99.50:192.168.99.1:255.255.255.0:eth0:off  setenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.53:192.168.99.50:192.168.99.1:255.255.255.0::eth0:off  nfsroot=192.168.99.50:/nfs_rootfs,v3,tcpsetenv ipaddr 192.168.99.53

ubuntu arm nfs 文件系统(好好整理一下)相关推荐

  1. 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】...

    推荐阅读顺序: 基本环境搭建: [配置]在虚拟机Ubuntu下NFS网络文件系统建立 <ok6410 Qt移植百科全书> [配置]QT&QWT&sqlite3安装配置 这中 ...

  2. 嵌入式成长轨迹33 【嵌入式学习阶段】【ARM环境调试】【在虚拟机下Ubuntu建立NFS网络文件系统】...

    更新版 http://www.cnblogs.com/zeedmood/archive/2012/12/08/2808376.html (以防参考资料链接无效,将所有参考文章都附后了,所以非常长;实际 ...

  3. Ubuntu开启NFS、SSH服务(驱动开发用到、电脑端登录ARM板用到)

    参考:Ubuntu下NFS服务的开启 作者:一只青木呀 发布时间:2020-08-04 14:06:58 网址:https://blog.csdn.net/weixin_45309916/articl ...

  4. 嵌入式 hi3519平台uboot引导nfs文件系统

    首先贴出来我的bootargs的设置(注没有换行符!!!): setenv bootargs noinitrd mem=64M root=/dev/nfs init=/linuxrc rw nfsro ...

  5. Ubuntu上nfs的安装配置

    Ubuntu上nfs的安装配置 2007-07-01 09:04 Ubuntu 默认是没有nfs服务的,所以需要自己安装 1.安装nfs服务版            apt-get install n ...

  6. (实用)Ubuntu 开启NFS服务

    本文介绍如何在Ubuntu下开启NFS文件系统,从而挂载网络上其他机器的文件系统. NFS, Network File System, 即网络文件系统,通常NFS有提供者和使用者,提供者export自 ...

  7. 开启 NFS 文件系统提升 Vagrant 共享目录的性能

    2019独角兽企业重金招聘Python工程师标准>>> Vagrant 默认的 VirtualBox 共享目录方式读写性能表现并不好,好在 Vagrant 支持 NFS 文件系统方式 ...

  8. 嵌入式Linux开发板上NFS文件系统的使用【ZT】

    本文转载于http://www.dz863.com/RTOS/Embedded-linux/Linux-NFS.htm 本文描述了在开发嵌入式linux系统时调试程序的一个方法,本文以深圳远峰的YF2 ...

  9. 挂载 nfs 文件系统

    环境 硬件:I.MX6U ALPHY V2.2 宿主机:Ubuntu 20.04 概述 我们的目的是在 kernel 启动后,将 nfs 文件系统挂载成板子的根文件系统.因此,bootloader.k ...

最新文章

  1. ubuntu14.04上搭建android开发环境
  2. 程序员10大终极杀器,你get了几个?
  3. 2019春季暑期实习生正式批招聘笔试【腾讯】(回忆版)第二题
  4. 一张图片学Python
  5. Python 对象的初始化函数及调用函数
  6. Ubuntu查看CPU和MEM的使用率
  7. 2017.3.14 不重复数字 思考记录
  8. 动态改变类名_反调试之检测类名与标题名
  9. python基础之pip、.pyc、三元运算、进制、一切皆对象、可变与不可变类型
  10. (Keras/监督学习)15分钟搞定最新深度学习车牌OCR
  11. 【图像隐写】基于matlab GUI DCT数字水印嵌入+提取【含Matlab源码 1671期】
  12. 如何迈出客户拜访的第一步
  13. 专访陈星汉:“游戏禅师” 的自我苛刻与孤独
  14. Make sure ‘SystemCfg‘ is registered using qRegisterMetaType
  15. 手机卫星定位系统_手机一键“连接”北斗卫星导航?这一设置打开:立马连接,很简单...
  16. chart.js-折线图
  17. Vue:路由传参的三种方式
  18. python常见加密方法实现,DES,AES,RSA,MD5,国密。--更新中
  19. Arrays.asList()
  20. UE4蓝图节点翻译--- Get All Child Actors

热门文章

  1. 文房四宝用计算机取代的什么,文房四宝之毛笔初探
  2. ARM 编程:C语言与汇编间互相调用,参数与返回值的传递方式详解
  3. 毛星云opencv之阈值化函数threshold--摘抄
  4. 以太网口差分电平_浅谈LVDS、CML、LVPECL三种差分逻辑电平之间的互连
  5. 鼠标键,键盘键,正则表达式
  6. 多智能体系统协同一致性问题(五)
  7. 又一知名云盘翻车:“免费不限量”变收费,用户被骗 5 年!
  8. 【互联网大厂机试真题 - 科大讯飞】朴素贝叶斯挑西瓜
  9. java 声明数组的两种方式
  10. Android之ListView实现