目录
3.1.2 配置编译项Linux Module Utilities
3.1.3 配置编译项Linux System Utilities
笔者制作的文件系统下载地址:
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