基于OrangePi H3的BusyBox文件系统移植

         BusyBox用于制作小型的文件系统,常用于嵌入式移植开发。国内的官方下载地址:https://linux.linuxidc.com。一般开发板厂家会提供,至于版本其实没有太大区别,也可以自行下载。

        第一步:请再次确认SD卡已经完成了分区操作,且Linux内核镜像烧写成功。编译文件系统使用的交叉编译器于编译内核的保持一致,交叉编译器提供的依赖库后面是要移植到SD卡上的。

       第二步:这一部分几乎任何开发板都没有区别,当然是目前来看。


busybox用于制作小型的文件系统.常用于嵌入式.

在orangepi_sdk/source/busybox-1.25.0目录里有源码.

 	1).  先清除编译出来的文件及配置文件
		make distclean

	2).  配置busybox
	 make menuconfig  //进入配置界面

	 Busybox Settings  --->          
		Build Options  ---> 
			│[*] Build BusyBox as a static binary (no shared libs)  //静态编译busybox,编出来的程序不依赖其它动态库
			(arm-linux-gnueabihf-) Cross Compiler prefix  //光标移动这行后,按确认键进入输入模式. 指定使用交叉编译器

	 保存退出后, 执行make编译
	 
        3).  执行make install, 会把文件系统生成在busybox源码根目录下的_install目录
	     然后再busybox源码目录下创建一个目录,名字随意,我的是disk3;将_install目录整个复制到disk3下面,然后改名(mv ./disk3/_install ./disk3/h3fs)

	4). 在h3fs目录里创建文件系统所需的目录
	       mkdir dev proc sys tmp var mnt
	       mkdir var/log                                                              
	       mkdir var/lock                                                             
	       mkdir var/lib                                                              
	       mkdir var/run
	
	5). 在h3fs目录里创建etc/init.d/rcS文件(用于进文件系统后的初始化工作, 相当于PC上的/etc/rc.local)
            mkdir etc/init.d -p
	    touch etc/init.d/rcS

	6). 
	    修改h3fs里的etc/init.d/rcS, 增加以下内容, 指定目录使用指定的文件系统类型格式
		  mount -t proc none /proc
		  mount -t sysfs none /sys
		  mount -t tmpfs none /tmp
		  mount -t ramfs none /dev
		  mdev -s                    //让mdev自动根据相应的驱动产生相应的设备文件
		  
		  syslogd    //产生日志的守护进程
		  echo /sbin/mdev > /proc/sys/kernel/hotplug   //当硬件驱动有变化时, 调用mdev -s产生或移除相应的设备文件


	7). 创建h3fs里的etc/inittab文件, 增加以下内容:
	    ::sysinit:/etc/init.d/rcS    //用rcS作系统初始化
	    ttyS0::askfirst:-/bin/sh    //使用ttyS0作板子的控制终端
		::ctrlaltdel:/sbin/reboot
		::shutdown:/sbin/swapoff -a
		::shutdown:/bin/umount -a -r    
		::restart:/sbin/init

 

        8). 增加环境变量:
	    创建h3fs里的etc/profile文件, 增加以下内容
            export PS1="^_^ \w # "            //用于命令行前面的提示符

	
	9). 把应用程序所需的动态库从交叉编译器里复制到h3fs的lib里(很重要!!!). 
            这里写我自己的例子:cp -rf /usr/arm_gcc/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/* ./disk3/h3fs/lib    //看清楚需要复制的库所在的路径!!!,复制到lib里,作为板子上程序的依赖库//


	10). 以上做完以后, 还需要给整个文件系统目录设权限
	     chmod 0777 /disk3/h3fs -R

	11). 把文件系统存放到SD卡的ext分区 
	        进入h3fs目录下:
		  tar cf fs.tar  *    //把整个文件系统打成一个包
		 把板上的SD卡接入PC,如果有自动挂载,则"tar xf fs.tar -C /挂载目录"解包到SD卡上
		 如果没有自动挂载,则手动把/dev/sdb2挂载到一个目录里再解包.

	12). 以上操作完成后, 把SD卡放回板子上启动, 还需在uboot上设置环境变量bootargs
		setenv bootargs "root=/dev/mmcblk0p1 rw console=ttyS0,115200"  //此参数是告诉内核,文件系统是在第0个mmc设备的第1个分区(我只有一个分区), 用ttyS0作控制终端,波特率为115200

	     保存好环境变量后,启动内核:
	     [    2.696791] devtmpfs: mounted
	     [    2.700378] Freeing init memory: 316K   //只要出现这句表示内核已成功进入文件系统里

	     Please press Enter to activate this console.

这里依旧要感谢大神的博客:https://blog.csdn.net/jklinux/article/details/72679950

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全志R16平台编译linux系统V1.0.txt 2017/4/11 13:36 (编译请使用编译android的lichee的选项编译生成的.config文件,不然直接编译会报错!!!!) rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ tar zxvf lichee_parrotv1.1_20161202.tar.gz rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ cd lichee/ rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun8iw5p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux 3. tina Choice: 2 All available kernel: 0. linux-3.4 Choice: 0 All available boards: 0. bell-one 1. evb 2. evb-20 3. evb-30 4. evb-rtl8723bs 5. sc3813r Choice: 3 rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh 错误1: KCONFIG_AUTOCONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/tristate.config BUILDROOT_CONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/.config /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/conf --silentoldconfig Config.in # # make dependencies written to .auto.deps # ATTENTION buildroot devels! # See top of this file before playing with this auto-preprequisites! # make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot' You must install 'makeinfo' on your build machine makeinfo is usually part of the texinfo package in your distribution make: *** [dependencies] 错误 1 make:离开目录“/home/wwt/linux_r16/lichee/buildroot” ERROR: build buildroot Failed rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ d/buildroot-config/conf.o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.o -o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buil
好的,我会尽力回答你的问题。首先,busybox是一个非常小巧的程序集合,它集成了许多常用的Linux工具,可以用来替代传统的Linux命令行工具,从而使得系统的启动时间更快、占用的空间更小。基于busybox的根文件系统可以使得系统更加轻量级,并且可以方便地定制。下面是实现基于busybox的根文件系统的步骤: 1. 下载busybox源代码,并编译生成busybox可执行文件。你可以从busybox的官网上下载源代码,然后使用make命令进行编译。 2. 创建一个新的目录作为根文件系统的挂载点。你可以使用mkdir命令创建一个空目录。 3. 将busybox可执行文件复制到根文件系统目录中。你可以使用cp命令将busybox可执行文件复制到根文件系统目录中。 4. 在根文件系统目录中创建必要的目录和文件。根据你的需求,你可以使用mkdir和touch命令创建必要的目录和文件。 5. 创建一个init脚本来启动系统。init脚本是系统的启动脚本,用来初始化系统并启动其他进程。你可以使用vi或者nano等编辑器创建init脚本。 6. 将根文件系统目录打包成一个镜像文件。你可以使用tar命令将根文件系统目录打包成一个tar包,然后使用mkfs命令将tar包转换成一个镜像文件。 7. 将镜像文件烧录到SD卡或者其他存储介质中。你可以使用dd命令将镜像文件写入到SD卡或者其他存储介质中。 以上就是基于busybox的根文件系统制作的基本步骤,你可以根据你的需求进行定制和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值