制作可在MINI2440上运行的文件系统

2024-08-28 11:58

本文主要是介绍制作可在MINI2440上运行的文件系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 前言

目的:制作可在MINI2440上运行的文件系统
Busybox版本: 1.20.0 (from https://busybox.net/downloads/)
交叉编译器: arm-linux-gcc version 4.3.2

2. What is busybox

from README in busybox folder.

BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides minimalist replacements for most of the utilities you usually find in bzip2, coreutils, dhcp, diffutils, e2fsprogs, file, findutils, gawk, grep, inetutils, less, odutils, net-tools, procps, sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The utilities in BusyBox often have fewer options than their full-featured cousins; however, the options that are included rovide the expected functionality and behave very much like their larger counterparts.

BusyBox is extremely configurable. This allows you to include only the components and options you need, thereby reducing binary size. Run ‘make config’ or ‘make menuconfig’ to select the functionality that you wish to enable. (See ‘make help’ for more commands.)

3. 制作过程

3.1 编译busybox
$ tar -xjf busybox-1.20.0.tar.bz2
$ cd busybox-1.20.0/
$ make menuconfig

在菜单中,进入Busybox Settings/Build Options/Cross Compiler prefix, 键入编译器的前缀 arm-linux-
然后开始编译

make

编译成功之后,就可以安装了。

3.2 安装busybox

In README:

The build automatically generates a file “busybox.links”, which is
used by ‘make install’ to create symlinks to the BusyBox binary for
all compiled in commands. This uses the CONFIG_PREFIX environment variable to specify where to install, and installs hardlinks or symlinks depending on the configuration preferences.

3.2.1 创建busybox的安装路径
$ mkdir /work/nfs_root/fs_mini_mdev_new
3.2.2 安装busybox
$ make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new
3.2.3 查看安装结果
$ ls /work/nfs_root/fs_mini_mdev_new

发现下面已经创建了文件夹

bin linuxrc sbin usr

4. 安装glibc库

4.1 创建库目录
$ mkdir /work/nfs_root/fs_mini_mdev_new/lib
$ mkdir -p /work/nfs_root/fs_mini_mdev_new/usr/lib
4.2 拷贝库文件

从编译交叉工具目录下拷贝所需的库文件。

$ cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/nfs_root/fs_mini_mdev_new/lib$ cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* /work/nfs_root/fs_mini_mdev_new/usr/lib

5. 构建根文件系统

5.1 构建etc目录

etc目录下的内容取决于要运行的程序,这里创建3个文件
etc/inittab、etc/init.d/rcS、etc/fstab。

5.1.1 创建etc/inittab文件

init进程根据/etc/inittab文件来创建其他子进程的,比如调用脚本文件配置IP地址、挂接其他文件系统,最后启动shell等。

$ cd /work/nfs_root/fs_mini_mdev_new
$ mkdir etc
$ cd etc
$ touch inittab
$ vim inittab

编辑inittab内容如下:

# /etc/inittab
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
5.1.2 创建etc/init.d/rcS文件

脚本文件,可以在里面添加想自动执行的命令。

$ cd /work/nfs_root/fs_mini_mdev_new/etc
$ mkdir init.d
$ cd init.d
$ touch rcS
$ vim rcS

编辑rcS内容如下:

#!/bin/sh
ifconfig eth0 192.168.1.17
mount -a
5.1.3 创建etc/fstab文件
$ cd /work/nfs_root/fs_mini_mdev_new/etc
$ touch fstab
$ vim fstab

编辑fstab内容如下,表示执行 “mount -a”命令后将挂接proc、tmpfs文件系统。

# device        mount-point     type    options         dump    fsck order
proc            /proc           proc    defaults        0       0
tmpfs           /tmp            tmpfs   defaults        0       0
5.2 构建dev目录

有两种方法构建dev:静态方法和动态方法。动态方法支持热插拔。这里使用动态方法。

5.2.1 检查内核

要使用mdev,需要内核支持sysfs文件系统,为了减少对FLASH的擦写,还要支持tmpfs文件系统。先确保内核已经设置了CONFIG_SYSFS、CONFIG_TMPFS配置项。

5.2.2 配置使mdev开机自动运行

修改两个文件:

5.2.2.1 etc/fstab修改后的内容如下
# device        mount-point     type    options         dump    fsck order
proc            /proc           proc    defaults        0       0
tmpfs           /tmp            tmpfs   defaults        0       0
tmpfs           /dev            tmpfs   defaults        0       0
5.2.2.2 etc/init.d/rcS添加如下几行:
mount -t
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
5.2.3 建立init进程需要的两个设备/dev/console, /dev/null
$ mkdir -p /work/nfs_root/fs_mini_mdev_new/dev
$ cd /work/nfs_root/fs_mini_mdev_new/dev
$ sudo mknod console c 5 1
$ sudo mknod null c 1 3
5.3 构建其他目录

其他目录可以是空目录,如下创建

$ cd /work/nfs_root/fs_mini_mdev_new
$ mkdir proc mnt tmp sys root

到现在为止,/work/nfs_root/fs_mini_mdev_new下就是一个非常小的根文件系统了。开发板可以将它作为网络根文件系统直接启动。如果要烧录到开发板,还要讲它制作成一个文件,称为映像文件。

6. 制作 yaffs文件系统映像文件

所谓制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。当系统启动后挂接这个设备,就可以看到与原来目录一样的内容。
制作不同类型的文件系统映像文件需要使用不同的工具。
去如下链接获取映像文件制作工具源码:
http://download.csdn.net/download/u013083059/9974620

6.1 解压、编译
$ tar -xjf yaffs_source_util_larger_small_page_nand.tar.bz2
$ cd ./Development_util_ok/yaffs2/utils
$ make

编译生成mkyaffs2image,将其拷贝到合适目录并修改属性

$ cp mkyaffs2image /usr/local/bin
$ chmod +x /usr/local/bin/mkyaffs2image

至此,镜像文件制作工具已经可以使用了

6.2 制作镜像文件
$ cd /work/nfs_root/
$ mkyaffs2image fs_mini_mdev_new.yaffs2 ./fs_mini_mdev_new

生成的fs_mini_mdev_new.yaffs2就是我们需要的镜像文件了。

这篇关于制作可在MINI2440上运行的文件系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1114705

相关文章

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Linux中的缓冲区和文件系统详解

《Linux中的缓冲区和文件系统详解》:本文主要介绍Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、FILE结构1、fd2、缓冲区二、文件系统1、固态硬盘2、逻辑地址LBA(一)数据块 Data blocks(二)inode表

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时