busybox制作根文件系统
发布日期:2021-09-23 03:31:20 浏览次数:18 分类:技术文章

本文共 2268 字,大约阅读时间需要 7 分钟。

一、环境、源码包准备:

       OS:Linux  x86_64

       Compiler:arm-linux-gnueabihf-gcc

       Compiler Target: 32-bit

       Source: busybox1.30.1

       编译命令:make ARCH=arm menuconfig,配置交叉编译所需的lib路径,如下:

       编译完成后,生成的二进制可执行文件在 _install 目录下,仅包含文件系统基本的命令,构建根文件系统还需要添加很多必要的配置文件(如:/etc/inittab、/etc/fstab等),这些文件依据当前板卡的需求进行生成,一般芯片厂商会提供SDK,带有根文件系统,如果实在没有,建议从现有x86或者ARM板卡上拷贝一份,以此为依据进行修改和调整。

二、制作rootfs镜像

       根文件系统目录构建完成后,需要新建ext4空白镜像,命令:

       必须在32Bit的linux下,命令:

              i、dd if=/dev/zero of=tmp.img bs=一次复制的字节数 count=复制的次数

              ii、mkfs.ext4 tmp.img

              iii、mount tmp.img /mnt/ -o loop  (其中-o loop在某些系统下会出现)

              iv、cp ./* /mnt   (将根文件系统所有文件夹及文件拷贝到镜像中)

              v、umount /mnt  (至此,ext4格式的文件系统制作完成,合并镜像时不需要gzip压缩)

三、合并镜像

      此处以UBoot推荐的FIT镜像为示例:

      命令: ./mkimage -f image_make.its tmp.img

      命令参数:mkimage:UBoot编译后生成的工具软件

                        -f :从文件读取镜像配置信息

                       image_make.its:制作FIT镜像的描述文件

                       tmp.img:最终生成的二进制镜像文件名(拓展名是自定义的,依需修改)

      其中依赖的 image_make.its文件内容可参考下方:

/dts-v1/;/ {	description = "ARM Board Base System Images";	#address-cells = <1>;	/* 当前镜像中二进制文件列表 */	images	{			/* ARM内核32Bit处理器,型号:LS1021A */		Kernel-Linux		{			description = "ARM32 Linux Kernel";			data = /incbin/("zImage");			type = "kernel";			arch = "arm";			os = "linux";			compression = "none";			load = <0x41000000>;			entry = <0x41000000>;		};				/* ARM处理器设备树文件 */		FDT-Linux		{            		description = "ARM Device Tree";            		data = /incbin/("Demo.dtb");            		type = "flat_dt";            		arch = "arm";            		compression = "none";        	};				/* ARM处理器的文件系统 */		Rootfs-Linux		{            		description = "ARM Board Ramdisk";            		data = /incbin/("ramdisk.gz");            		type = "ramdisk";            		arch = "arm";            		os = "linux";            		compression = "gzip";        	};	};	/* 当前镜像中启动配置的镜像信息 */	configurations	{		default = "Demo";		Demo		{			description = "ARM-Board Base System Images";			kernel = "Kernel-Linux";			fdt = "FDT-Linux";			ramdisk = "Rootfs-Linux";		};	};};

四、在UBoot下调试FIT镜像

4.1、UBoot引导FIT镜像命令:

         setenv FIT_ADDR=0x10000000

         bootm $FIT_ADDR

4.2、UBoot查看FIT镜像信息:

         setenv FIT_ADDR=0x10000000

         imls $FIT_ADDR

4.3、非FIT镜像UBoot下启动命令配置

         bootm $load_addr $ramdisk_addr $ftd_addr)

         或者

          bootcmd=cp.b $kernel_addr $load_addr $kernel_size;bootm $load_addr $ramdisk_addr $ftd_addr;

4.4、UBoot中的shell功能

         在UBoot下输入 \ 即可进入shell命令行模式,和linux的ssh终端类似,UBoot也实现了bash的功能,可以解释shell脚本。

 

以上,有问题欢迎指正,谢谢。

转载地址:https://blog.csdn.net/AMDDMA/article/details/99354045 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux BSP调试用到的命令
下一篇:Flash(NandFlash&NorFlash)基本原理

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月12日 23时47分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章