制作可在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

相关文章

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

win7+ii7+tomcat7运行javaWeb开发的程序

转载请注明出处:陈科肇 1.前提准备: 操作系统:windows 7 旗舰版   x64 JDK:jdk1.7.0_79_x64(安装目录:D:\JAVA\jdk1.7.0_79_x64) tomcat:32-bit64-bit Windows Service Installer(安装目录:D:\0tomcat7SerV) tomcat-connectors:tomcat-connect