当前位置: 首页 > 工具软件 > CramFS > 使用案例 >

CRAMFS制作方法

田文景
2023-12-01

CRAMFS制作方法

1.      编译cramfs制作工具mkcramfs

a.       解压cramfs-1.1.tar.bz2,产生cramfs-1.1文件夹

b.      使用终端进入cramfs-1.1文件夹,运行make,编译cramfs制作工具

c.       编译产生mkcramfscramfsck两个工具,将这两个工具复制到/usr/bin目录下。

2.      编译busybox

a.       解压busybox-1.20.2.tar.bz2,产生busybox-1.20.2文件夹

b.      使用终端进入busybox-1.20.2文件夹

c.       修改Makefile文件中的CROSS_COMPILE为相应的编译器,如

CROSS_COMPILE ?= /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

d.      终端中输入make TARGET_ARCH=arm编译busybox

e.      编译完成后输入make install安装busybox,安装的目录默认在./_install文件夹下,我们仅仅需要其中的binsbinusr文件夹

3.      制作cramfs

a.       创建一个rootfs目录,将编译出的busybox文件夹binsbinusr复制到rootfs目录下

b.      在rootfs目录下创建dev,etc,home,lib,mnt,opt,proc,root,sys,tmp,var目录

c.       在rootfs目录下创建linuxrc文件,内容如rootfs-2012-10-13-0003.tar.bz2下的linuxrc文件,并修改其属性:chmod 775 linuxrc

d.      进入rootfs/dev目录,执行:mknod console c 5 1mknod null c 1 3创建设备节点.(如使用压缩包中的文件系统,需要执行这一步操作)

e.      进入rootfs/dev目录,创建fstabinittabprofileinit.d/rcS等文件,相关内容参考rootfs-2012-10-13-0003.tar.bz2

f.        进入rootfs/usr目录,创建etc文件夹,作用用户配置文件,创建rc.local,profile,profile.org等文件,相关内容参考rootfs-2012-10-13-0003.tar.bz2

g.       进入rootfs的上一级目录,执行mkcramfs rootfs rootfs.cramfs制作跟文件系统,完成后产生rootfs.cramfs文件

4.      下载和运行cramfs

a.       将cramfs烧写到smdk开发的rootfs空间,重新启动开发板,看到如下信息表示根文件系统加载成功

 

VFS: Mounted root (cramfs filesystem) readonly.

Freeing init memory: 252K

Processing etc/init.d/rc.S

 Mount all

*************************************

 RootFS by Cramfs

*************************************

 

 

Please press Enter to activate this console.

注意:编译内核时需要配置启动参数:

Boot options->Default kernel command string:

           Root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySAC0,115200

 

附件:相关文件内容

Rootfs/linuxrc文件

#!/bin/bash
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
/bin/cp -a /mnt/etc/* /etc

echo "re-create the /etc/mtab entries"
# re-create the /etc/mtab entries
#/bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/2 /
/bin/mount -t ramfs ramfs /tmp

exec /sbin/init

 

 

Rootfs/etc/fstab文件

none  /proc  proc defaults 0 0
none   /tmp   ramfs  defaults  0 0
mdev   /dev   ramfs  defaults  0 0
sysfs   /sys   sysfs  defaults  0 0

 

Rootfs/etc/inittab文件

# This is run first except when booting
::sysinit:/etc/init.d/rcS

# Start an "askfirst" shell on the console
#::askfirst:-/bin/bash
ttySAC0::askfirst:/bin/bash

# Stuff to do when restarting the init process
::restart:/sbin/init

#::once:/sbin/raja.sh
#::respawn:/sbin/iom

::once:/usr/etc/rc.local

# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

Rootfs/etc/profiel文件

#/etc/profile: system-wide .profile file for the Bourne shells

echo "Processing /etc/profile"
# no-op

# Set search library path 
LD_LIBRARY_PATH=/lib:/usr/lib
export LD_LIBRARY_PATH

# Set user path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

# Set PS1
#export PS1="[$USER@linux ]\\$"
#echo

 

Rootfs/etc/init.d/rcS文件

 

#! /bin/bash
echo "Processing etc/init.d/rc.S"

#hostname ${HOSTNAME}

echo " Mount all"
/bin/mount -an

/bin/mknod /dev/console c 5 1
/bin/mknod /dev/null c 1 3
/bin/mknod /dev/ttySAC0 c 204 64
/bin/mknod /dev/ttySAC1 c 204 65
/bin/mknod /dev/ttySAC2 c 204 66
/bin/mknod /dev/ttySAC3 c 204 67
/bin/mkdir /dev/pts
/bin/mkdir /dev/shm
/bin/mkdir /dev/video
/bin/mknod /dev/video/codec c 81 12
/bin/mknod /dev/video/preview c 81 13


#echo "Starting mdev..."
#/bin/echo /sbin/mdev > proc/sys/kernel/hotplug
#mdev -s
#/sbin/udevd --daemon
#/sbin/udevadm  trigger

ln -s /dev/ts0 /dev/ts

Rootfs/usr/etc/rc.local文件

 

#!/bin/bash
./usr/etc/profile

/sbin/ifconfig lo 127.0.0.1 up
#/sbin/ifconfig eth0 192.168.2.12 netmask 255.255.255.0 up
#/sbin/inetd
#/usr/sbin/makelinks

/bin/mkdir /tmp/udisk
/bin/mkdir /tmp/sd
/bin/mkdir /tmp/photo

#source /.bashrc

#export QWS_DISPLAY=Transformed:Rot90
#/bin/cp -rf /Qtopia/qtopia-free-1.7.0/elfin/* /tmp/
#cd /tmp 
#/Qtopia/qtopia-free-1.7.0/bin/qpe -qws&
#/bin/apm

 

Rootfs/usr/etc/profile文件

 DISPLAY=unix:0.0
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
#QWS_KEYBOARD=TTY
LANG=C
HOME=/tmp
KMOD=/lib/modules/2.4.19-rmk4-pxa2
export PATH QTDIR LINUETTEDIR QWS_KEYBOARD  LANG HOME DISPLAY KDEDIR KMOD 

Rootfs/usr/etc/profile.org文件

 #!/bin/sh
DISPLAY=unix:0.0
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt
LD_LIBRARY_PATH=/usr/home:/lib:/usr/lib:
#QWS_KEYBOARD=TTY
LANG=zh_CN
HOME=/usr/home
export PATH LD_LIBRARY_PATH LANG HOME

 类似资料: