制作ubifs文件系统


1,安装相关的软件包

apt-get install liblzo2-dev


2,获取相关的工具mkfs.ubifsubinize

这两个工具是制作ubifs文件系统的时候用到,它们是mtd-utils工具包中的内容,mtd-utils工具包你可以从下面的网站下载和编译出来:

官方网站:http://www.linux-mtd.infradead.org/index.html

资源下载网站:http://git.infradead.org/


3,创建一个create-ubifs.sh脚本,主要是调用mkfs.ubifsubinize工具和相关参数来制作ubifs文件系统,内容如下:

#!/bin/bash


##########################################################

# Script to generate ubifs filesystem image. #

##########################################################


##### ubinize configuration file

config_file=rootfs_ubinize.cfg


##### Function to check result of the command

check_result() {

if [ $? -ne 0 ]

then

echo "FAILED"

else

echo "SUCCESSFUL"

fi

}


###### Function to check whether an application exists

check_program() {

for cmd in "$@"

do

which ${cmd} > /dev/null2>&1

if [ $? -ne 0 ]

then

echo

echo "Cannot find command \"${cmd}\""

echo

exit 1

fi

done

}


if [ $# -ne 5 ]

then

echo

echo 'Usage: create-ubifs.sh [page_size_in_bytes] [pages_per_block][partition_size_in_bytes] [blocks_per_device][path_to_rootfs]'

echo

exit

fi


page_size_in_bytes=$1

echo "Page size [$page_size_in_bytes]bytes."

pages_per_block=$2

echo "Pages per block [$pages_per_block]"

partition_size_in_bytes=$3

echo "File-system partition size[$partition_size_in_bytes]bytes."

blocks_per_device=$4

echo "Blocks per device [$blocks_per_device]"

path_to_rootfs=$5


# wear_level_reserved_blocks is 1% of total blcoks perdevice

wear_level_reserved_blocks=`expr $blocks_per_device /100`

echo "Reserved blocks for wear level[$wear_level_reserved_blocks]"


#logical_erase_block_size is physical erase block size minus 2pages for UBI

logical_pages_per_block=`expr $pages_per_block - 2`

logical_erase_block_size=`expr $page_size_in_bytes \*$logical_pages_per_block`

echo "Logical erase block size[$logical_erase_block_size]bytes."


#Block size = page_size * pages_per_block

block_size=`expr $page_size_in_bytes \*$pages_per_block`

echo "Block size [$block_size]bytes."


#physical blocks on a partition = partition size / blocksize

partition_physical_blocks=`expr $partition_size_in_bytes /$block_size`

echo "Physical blocks in a partition[$partition_physical_blocks]"


#Logical blocks on a partition = physical blocks on a partitiion -reserved for wear level

patition_logical_blocks=`expr $partition_physical_blocks -$wear_level_reserved_blocks`

echo "Logical blocks in a partition[$patition_logical_blocks]"


#File-system volume = Logical blocks in a partition * Logical eraseblock size

fs_vol_size=`expr $patition_logical_blocks \*$logical_erase_block_size`

echo "File-system volume [$fs_vol_size]bytes."


echo

echo "Generating configuration file..."

echo "[rootfs-volume]" > $config_file

echo "mode=ubi" >>$config_file

echo "image=rootfs_ubifs.img" >>$config_file

echo "vol_id=0" >>$config_file

echo "vol_size=$fs_vol_size" >>$config_file

echo "vol_type=dynamic" >>$config_file

echo "vol_name=system" >>$config_file

echo


# Note: Check necessary program for installation

#echo -n "Checking necessary program forinstallation......"

#check_program mkfs.ubifs ubinize

#echo "Done"


#Generate ubifs image

echo -n "Generating ubifs..."

./mkfs.ubifs -x lzo -m $page_size_in_bytes -e$logical_erase_block_size -c $patition_logical_blocks -orootfs_ubifs.img -d $path_to_rootfs

check_result

echo -n "Generating ubi image out of the ubifs..."

./ubinize -o ubi.img -m $page_size_in_bytes -p $block_size -s$page_size_in_bytes $config_file -v

check_result


rm -f rootfs_ubifs.img

rm -f $config_file


(4)mkfs.ubifsubinize以及create-ubifs.sh放置在同一目录下,然后调用create-ubifs.sh即可创建ubifs文件系统,create-ubifs.sh用法如下:

create-ubifs.sh page_size_in_bytes(页大小)pages_per_block(每个扇区的页数量)partition_size_in_bytes(分区大小)blocks_per_device(扇区数量)path_to_rootfs(文件系统路径)

举例如下:

./create-ubifs.sh 2048 64 83886080 4096 ./rootfs

上面命令的意思是调用create-ubifs.sh将当前目录下的rootfs文件夹的内容制作成ubifs文件系统,nandflash的页大小为2k,每个扇区有64页,

总共有4096个扇区,要制作的文件系统的大小为83886080字节。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiajie961/archive/2010/11/08/5994713.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值