Hi3516DV300_10_Rootfs的单独编译和验证


1.内核启动后,就会去挂载根文件系统

  • 移植了应用程序,就往bin目录里面放

  • 移植了库,就往lib目录里面放

  • 要区分一个边界:哪些东西是一定要你去做的,哪些东西不一定是要你做的

14.1、rootfs知识点回顾
(1)rootfs的作用和意义,包含内容
(2)rootfs的制作步骤:构建文件夹形式的rootfs,用mkfs工具制作成image
(3)构建文件夹形式rootfs的关键步骤:基础文件夹、etc内配置文件、busybox移植、复制动态库

14.2、分析Study16DV300开发板资料状况
(1)官方SDK中相关文档和资料。分析结论:大量的有用资料在osdrv/Makefile中,但是你得能看懂。
(2)官方SDK和配套SDK中,readme_cn.txt中几乎无有用信息
(3)配套SDK中,make.sh脚本中有可用信息,值得详细分析
  • rootfs中的bin文件夹,存放应用程序,是要通过busybox生成的

  • rootfs中的lib文件夹,存放的是共享链接库

  • rootfs中的etc文件夹,是存放了一些文件的

  • 在动态链接库(lib)中,可以来判断一下,相应的动态链接库是放在哪里?

放在:
并且,一般使用的是这个:a7_softfp_neon-vfpv4
它的动态链接库就放在:lib.tgz里面
里面就有很多.so文件,就是我们文件系统所需要的.so文件
这就是一个典型的交叉编译工具链里面的动态链接库的样子
busybox也是通过make menuconfig来生成.config文件的

2.自制根文件系统

15.自制rootfs实践
15.1、参考资料
(1)osdrv/Makefile
(2)make.sh
15.2、实践
(1)参考核心课程1期中讲的理论和方法,完全可以为Study16DV300开发板自制一个最小rootfs。
(2)步骤1:解压rootfs.tgz得到基础,已有etc内配置文件
(3)步骤2:配置编译安装busybox,可参考make.sh中build_busybox函数
(4)步骤3:复制动态库,在工具链的runtime_glibc/a7_softfp_neon-vfpv4目录中
(5)步骤4:制作成image,可参考make.sh中make_rootfs函数
(6)步骤5:烧录并启动测试

make CROSS_COMPILE=arm-himix200-linux- CHIP=hi3516dv300 MP_TYPE=smp BOOT_MEDIA=emmc OSDRV_CROSS_CFLAGS="-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -w"  LIB_TYPE=glibc RUNTIME_LIB=runtime_glibc CROSS_SPECIFIED=y -j8

make CROSS_COMPILE=arm-himix200-linux- CHIP=hi3516dv300 MP_TYPE=smp BOOT_MEDIA=emmc OSDRV_CROSS_CFLAGS="-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -w"  LIB_TYPE=glibc RUNTIME_LIB=runtime_glibc CROSS_SPECIFIED=y install 

./make_ext4fs -l 200M -s aston_rootfs_hi3516dv300.ext4 rootfs_glibc

制作细节看下一节笔记:15-自制rootfs实践


Author: Ruimin Huang
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Ruimin Huang !
  TOC