热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

04用busybox制作自己的文件系统

busybox用于制作小型的文件系统.常用于嵌入式.在orangepi_sdksourcebusybox-1.25.0目录里有源码.1).先清除编译出来的文件及配置文件

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目录
然后把_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作板子的控制终端


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


9). 把应用程序所需的动态库从交叉编译器里复制到h3fs里.
把交叉编译器里的arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/里的内容 复制到h3fs/lib目录
//注意: 如果程序执行时报"not found",而不是路径的问题时就是缺少动态库了

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/mmcblk0p2 cOnsole=ttyS0,115200" //此参数是告诉内核,文件系统是在第0个mmc设备的第2个分区, 用ttyS0作控制终端,波特率为115200

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

Please press Enter to activate this console.





推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
author-avatar
天狼飞虎神印
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有