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

相关文章

通过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标注实体类,编译时

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运