详细介绍使用busybox创建root_fs的完整流程(硬件:mini2440)

目录

概述

1 下载和解压busybox

1.1 下载busybox

1.2 解压busybox

2 创建编译环境

2.1 修改编译器类型

2.2 修正Makefile的一些Bug

3 编译和安装

3.1 配置busybox

3.1.1 配置编译项 busybox Settings

3.1.2 配置编译项Linux Module Utilities

3.1.3 配置编译项Linux System Utilities

3.2 安装busybox

4 完善其他文件

4.1 etc目录

4.2 动态链接文件lib

5 制作根文件系统映像文件

5.1 解压工具

5.2 制作映像文件

6 验证


笔者制作的文件系统下载地址:

rootfs-rtm-2440-20240401.tar.bz2资源-CSDN文库

制作imp的工具:

mkyaffs2image-128M-20240401资源-CSDN文库

概述

本文主要介绍制作root_fs的详细流程。笔者以mini2440为例,制作了该开发板的root_fs,内容包括:配置和编译busybox1.13.4,编写etc目录下文件内容,制作.imp镜像的方法等。最后,下载.imp文件到开发板中,验证其是否可以正常工作。

1 下载和解压busybox

1.1 下载busybox

笔者使用的busybox版本为busybox-1.13.4,可以从如下位置获取:

https://busybox.net/downloads/

1.2 解压busybox

下载完毕后,得到busybox-1.13.4.tar.bz2文件,在ubuntu中解压该文件,解压命令为:

tar -vxjf busybox-1.13.4.tar.bz2

解压完成之后,得到源码包,这时通过修改Makefile文件来配置编译器地址和MCU类型

2 创建编译环境

2.1 修改编译器类型

step-1: 查看版本信息

/busybox-1.13.4/Makefile文件中查看busybox的版本信息:

step-2: 修改编译器地址

在该文件的164行处,添加编译器的路径

代码内容:

CROSS_COMPILE ?=/home/mftang/ctools/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-

step-3: 添加处理器信息

在该文件的189行处,添加处理器信息

代码内容:

ARCH ?= arm

2.2 修正Makefile的一些Bug

修改422行位置代码:

#config%config: scripts_basic outputmakefile FORCE
%config: scripts_basic outputmakefile FORCE

修改1270位置代码:

#/%/: prepare scripts FORCE
%/: prepare scripts FORCE

3 编译和安装

3.1 配置busybox

3.1.1 配置编译项 busybox Settings

使用make menuconfig 进入编译页面,配置编译项目。

step-1: General Configuration

Busybox Settings --->
     General Configuration--->

在General Configuration选项中,保证如下item被选中:

step-2: Build Options

Busybox Settings --->
       Build Options--->

step-3: Installation Options

Busybox Settings --->
       installation Options--->

Busybox Settings --->
       installation Options--->
             Applets links (as soft-links) --->

step-4: Busybox Library Tuning

Busybox Settings --->
       Busybox Library Tuning  --->

3.1.2 配置编译项Linux Module Utilities

Linux Module Utilities--->

3.1.3 配置编译项Linux System Utilities

Linux System  Utilities--->

3.2 安装busybox

配置完成后,退出保存配置项,然后执行make编译busyox

编译完成后,在busybox-1.13.4目录中执行install命令,其会在 在 rootfs 目录下会生成目录 bin、 sbin、 usr 和文件 linuxrc 的内容。 具体命令如下:

make install CONFIG_PREFIX=/home/mftang/mini2440_workspace/rootfs/rootfs_20240401/rootfs

完成以上步骤busybox的工作已经全部完成。下面还需要完成rootfs的其他文件夹的内容。

执行make install 之后,rootfs生成的目录总结:

文件/文件夹名称 功能介绍
bin 所有用户都可以使用的、基本的命令
sbin 基本的系统命令,它们用于启动系统、修复系统等
usr 共享、只读的程序和数据
linuxrc 执行/sbin/init进程初始化文件

4 完善其他文件

4.1 etc目录

step - 1: 在创建 rootfs/etc目录下创建mdev.conf 文件,创建命令如下:

touch mdev.conf

step - 2: 创建init.d目录,并在该目录下创建rcS文件,创建命令如下

touch rcS

在该文件中输入如下内容:

#! /bin/sh
​
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
​
#
#   Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/hostname mftang2024
​
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t usbfs none /proc/bus/usb
/bin/mount -t ramfs none /dev
​
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in /etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none /dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount -n -t ramfs none /tmp
/bin/mount -n -t ramfs none /var
mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp
​
/sbin/hwclock -s
​
syslogd
/etc/rc.d/init.d/netd start
echo "                        " > /dev/tty1
echo "Starting networking..." > /dev/tty1
/etc/rc.d/init.d/leds start
echo "                        " > /dev/tty1
echo "Starting leds service..." > /dev/tty1
echo "                        "
​
echo 0 > /dev/watchdog
echo "Stop watch dog..." 
echo –n V > /dev/watchdog
sleep 1
​
/sbin/ifconfig lo 127.0.0.1
/etc/init.d/ifconfig-eth0
​
soundplayer /root/testsound.mp3&
/bin/rtm&
​
echo "                                  " > /dev/tty1
echo "Starting MiniTest, please waiting..." > /dev/tty1
​
echo "***********************************************"
echo "****************mini2440 ARM*******************"
echo "Kernel version:linux-2.6.29.32"
echo "author: mftang"
echo "Date:2024.4.1"
echo "***********************************************"

step - 3: 创建 fstab文件,创建命令如下

touch fstab

在该文件中输入如下内容:

#device mount-point type    option     dump fsck order
proc     /proc      proc    defaults   0     0
none     /tmp       ramfs   defaults   0     0
sysfs    /sys       sysfs   defaults   0     0
mdev     /dev       ramfs   defaults   0     0

step - 4: 创建 profile 文件,创建命令如下

touch profile 

在该文件中输入如下内容:

# Ash profile 
# vim: syntax=sh
​
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
​
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH
​
HOSTNAME=`/bin/hostname`
​
export USER LOGNAME PS1 PATH

4.2 动态链接文件lib

解压rootfs_qtopia_qt4-20141223.tar.gz文件,使用命令:

tar -zxjf rootfs_qtopia_qt4-20141223.tar.gz

解压完成后:

复制/home/mftang/mini2440_workspace/rootfs/rootfs_qtopia_qt4/lib至/home/mftang/mini2440_workspace/rootfs/busybox-1.13.4_root_fs/rootfs/lib中

cp -rfd /home/mftang/mini2440_workspace/rootfs/rootfs_qtopia_qt4/lib /home/mftang/mini2440_workspace/rootfs/busybox-1.13.4_root_fs/rootfs

5 制作根文件系统映像文件

5.1 解压工具

解压mkyaffs2image.tgz工具

使用命令:

tar –zxvf mkyaffs2image.tgz

解压完成后,得到两个文件:

5.2 制作映像文件

使用如下命令生成根文件系统映像文件。

sudo ./mkyaffs2image-128M rootfs_rtm_2440  rootfs.imp

执行命令后,在该文件夹下生成.imp文件:

6 验证

烧写.imp文件到板卡中,启动板卡后查看log信息:

保存source code文件,使用如下文件打包:

sudo tar -cjf rootfs_rtm_2440_20240401.tar.bz2 rootfs_rtm_2440

相关推荐

  1. 电脑硬件介绍

    2024-04-02 09:04:02       32 阅读
  2. 元类创建流程详解

    2024-04-02 09:04:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 09:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 09:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 09:04:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 09:04:02       20 阅读

热门阅读

  1. 复叠式制冷系统介绍

    2024-04-02 09:04:02       18 阅读
  2. 算法——矩阵:对于边界元素的处理

    2024-04-02 09:04:02       22 阅读
  3. 动态规划 Leetcode 1143 最长公共子序列

    2024-04-02 09:04:02       15 阅读
  4. 拓扑排序(习题笔记 思路整理)之一

    2024-04-02 09:04:02       15 阅读
  5. 无极低码:同时删除两张表中的记录

    2024-04-02 09:04:02       18 阅读
  6. 阿里云效codeup如何执行github flow工作流

    2024-04-02 09:04:02       16 阅读
  7. 机器学习之局部异常因子算法(Local Outlier Factor)

    2024-04-02 09:04:02       14 阅读
  8. inout模块设计

    2024-04-02 09:04:02       13 阅读
  9. 【DevOps工具篇】 OpenLDAP服务器安装和配置方法

    2024-04-02 09:04:02       13 阅读