折騰了好幾天,突然柳暗花明,繼而思之,發現原來是出門就走錯了路,悲劇之餘,寫下此筆記,以省自己,警他人。
正題,關於ubifs
的介紹在此就不多說,詳見:
1. ubifs檔案系統映象的製作過程
1.1
所需的工具
製作ubifs
映象所需的工具有
mkfs.ubifs
和ubinize
,可以通過以下方式獲取到此兩個工具:
1. 方法一:從官網通過git
git clone git:
和lzo
,uuib-dev
可以通過
apt-get
直接安裝,
lzo2.
方法二:安裝mtd-utils
工具包,安裝命令為:
sudo apt-get install mtd-utils
不過此方法不保證安裝的工具可以正常使用(可能版本過低)。
1.2
ubifs映象的製作
有了mkfs.ubifs
和ubinize
兩個工具後,就可以製作
ubifs
映象了,具體步驟如下:
1. 使用mkfs.ubifs
命令將某個資料夾製作為
ubifs
映象,具體命令為:
mkfs.ubifs -r /tmp/rootfs -m 2048 -e 126976 -c 992 -o ubifs.
img
以上命令的含義為將/tmp/rootfs
資料夾製作為
ubifs
檔案系統映象,輸出的映象名為
ubifs.img,-m
引數指定了最小的
i/o操作的大小,也就是
nand flash
乙個page
的大小,
-e引數指定了邏輯擦除快的大小,
-c指定了最大的邏輯塊號。
通過此命令製作的出的ubifs
檔案系統映象可在
u-boot
下使用ubi write
命令燒寫到
nand flash
上。 2.
使用ubinize
命令可將使用
mkfs.ubifs
命令製作的
ubifs
檔案系統映象轉換成可直接在
flash
上燒寫的格式(帶有
ubi檔案系統映象卷標):
ubinize -o ubi.
img-m 2048 -
p 128kib -
s 512 -o 2048 ubinize.cfg
ubinize.cfg為一些配置引數:
[ubifs]
mode=ubi
image=ubifs.
imgvol_id=0
vol_size=100mib
vol_type=dynamic
vol_alignment=1
vol_name=rootfs
vol_flags=autoresize
通過此命令生成的ubi.img
可直接使用
nand flash
的燒寫命令燒寫到
flash
上。 2.
ubifs檔案系統映象的燒寫
以下主要說以下將ubifs
映象燒寫到
nand flash
中的三種方法。
2.1
在u-boot下通過
nand write
命令燒寫
使用ubinize
命令製作的帶有卷標的
ubifs
檔案系統映象可以直接使用
nand flash
的燒寫命令燒寫到
nand flash
上,具體命令為:
tftp 0xc1180000 ubi.
imgnand erase 0x400000 0x7c00000
nand write.e 0xc1180000 0x400000 0x3660000
關於tftp
,nand
等命令使用格式請參見
u-boot
的help
。 2.2
在u-boot下通過
ubi write
命令燒寫
使用mkfs.ubifs
命令製作的
ubifs
檔案系統映象可以使用命令
ubi write
燒寫到nand flash
上,具體命令為:
1. 設定flash
的分割槽,此處以
128m nand flash
為例,分為
5個區:
setenv mtdids nand0=nand0
setenv mtdparts mtdparts=nand0:0x20000(
u-boot env)
,0x20000(ubl)
,0x1c0000(
u-boot)
,0x200000(kernel)
,0x7c00000(filesystem)
設定完後,使用mtdparts命令可以看到分割槽資訊:
device nand0
, # parts = 5
#:name
size offset mask_flags0:u
-boot env 0x00020000 0x00000000 0
1: ubl 0x00020000 0x00020000 02:u
-boot 0x001c0000 0x00040000 0
3: kernel 0x00200000 0x00200000 0
4: filesystem 0x07c00000 0x00400000 0
active partition: nand0,0 -(u
-boot env) 0x00020000 @ 0x00000000
2. 燒寫檔案系統:
nand erase 0x400000 0x7c00000
tftp 0xc1180000 ubifs.
imgubi create rootfs
ubi part nand filesystem
ubi write 0xc1180000 rootfs 0x1d1000
通過以上命令,可以將檔案系統燒寫到第4個分割槽上,
ubifs
檔案系統卷標為
rootfs
。 3.
設定核心啟動引數:
setenv bootargs 'console=ttys2,115200n8 ubi.mtd=4,2048 root=ubi0:rootfs rootwait rootfstype=ubifs rw ip=off'
這樣就可以將燒寫的ubifs檔案系統用作根分割槽了。
4. 要在u-boot下
使用ubi,mtd等命令,需要配置一下
u-boot
,具體可參見:
2.3
在linux系統下燒寫
在linux
系統下,可以使用
ubiformat
工具燒寫使用
ubinize
工具製作的
ubifs
檔案系統映像,此處以燒寫到
nand flash的5
個分割槽上為例,具體命令為:
1. 檢視flash
的當前分割槽:
# cat /proc/mtd
dev:
size erasesize name
mtd0: 00020000 00020000 "u-boot env"
mtd1: 00020000 00020000 "ubl"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00200000 00020000 "kernel"
mtd4: 07c00000 00020000 "filesystem"
2. 擦除要燒寫的分割槽:
flash_eraseall /dev/mtd/mtd4
3. 燒寫
ubifs檔案系統:
ubiformat /dev/mtd/mtd4 -f /ubi.
img
4. 掛載燒寫好的檔案系統:
ubiattach /dev/ubi_ctrl -m 4 -o 2048
mount -t ubifs ubi0:rootfs /mnt/
3.在linux下建立
ubifs分割槽
flash_eraseall /dev/mtd/mtd4
ubiattach /dev/ubi_ctrl -m 4 -o 2048
ubimkvol /dev/ubi0 -n rootfs -
s 100mib
mount -t ubifs ubi0:rootfs /mnt/ 0
給主人留下些什麼吧!~~
ubifs燒寫到nand flash中的幾種方法
1.ubifs檔案系統映象的製作過程 1.1 所需的工具 製作ubifs 映象所需的工具有 mkfs.ubifs 和ubinize 可以通過以下方式獲取到此兩個工具 1.方法一 從官網通過git git clone git 和lzo,uuib dev 可以通過 apt get 直接安裝,lzo2.方...
python中執行shell命令的幾種方式
最近有個需求就是頁面上執行shell命令,第一想到的就是os.system,os.system cat proc cpuinfo 但是發現頁面上列印的命令執行結果 0或者1,當然不滿足需求了。嘗試第二種方案 os.popen output os.popen cat proc cpuinfo prin...
python在ubuntu中的幾種安裝方法
python在ubuntu下有幾種安裝方法 通過ubuntu官方的apt工具包安裝 html view plain copy sudo apt get install python2.7 sudo apt get install python3.4 安裝完成後,可以用下面的命令進行確認 plain ...