構建檔案系統rootfs

2021-08-29 07:31:42 字數 3371 閱讀 7786

目錄

一  工具準備

(1)工具包

(2)工具mkfs.jffs2編譯

(3)工具mkyaffs2image編譯

二 檔案系統目錄

三 編譯busybox-1.7.0

四 建立重要目錄

(1)console 和 null

(2)/etc/inittab

(3)安裝c庫

(4)製作根檔案系統

五  優化

(5)支援proc

(6)使用mount -a

(6)支援mdev 工具

mkfs.jffs2                  package         zlib-1.2.3.tar.gz     mtd-utils-05.07.23.tar.bz2

mkyaffs2image         package         yaffs_source_util_large_small_page_nand.tar.bz2

tool-chain

arm-linux-gcc-3.4.5

#tar xzf zlib-1.2.3.tar.gz

#cd zlib-1.2.3

#./configure --shared --prefix=/usr

#make

#make install

error:     mkfs.jffs2.c:71:21: fatal error: sys/acl.h: no such file or directory

sudo apt-get install uuid-dev libacl1-dev liblzo2-dev

#tar xjf mtd-utils-05.07.23.tar.bz2

#cd mtd-utils-05.07.23/util

#make

#make install

#tar xjf? yaffs_source_util_large_small_page_nand.tar.bz2

#cd developement_util_ok

#cd yaffs2

#cd utils

#make

#cp mkyaffs2image /usr/local/bin

#chmod +x /usr/local/bin/mkyaffs2image

mkdir ~/mini2440/rootfs/rootfs -p

vim makefile

arch            ?= arm

cross_compile   ?= /usr/local/bin/3.4.5/bin/arm-linux-

make

make config_prefix=~/mini2440/rootfs/rootfs install

否則報錯:

warning: unable to open an initial console.

#mkdir dev

#cd dev

#mknod console c 5 1 

#mknod null c 1 3

#ls -l

顯示:crw-r--r-- 1 root root 5, 1 2015-05-06 20:39 console

crw-r--r-- 1 root root 1, 3 2015-05-06 20:40 null

表示建立成功

#cd rootfs

#mkdir etc

#vim  etc/inittab

輸入:console::askfirst:-/bin/sh        

#cd rootfs

#mkdir lib

#cp  /usr/local/bin/3.4.5/arm-linux/lib/*.so* ~/mini2440/rootfs/rootfs/lib/ -d

#mkfs.jffs2 -n -s 2048 -e 128kib -d rootfs -o rootfs.jffs2      

#mkyaffs2image rootfs rootfs.yaffs2

nfs燒錄

fs-yaffs2:

#nfs 30000000 192.168.1.133:/home/flinn/mini2440/bin/rootfs.yaffs2

#nand erase root

#nand write.yaffs 30000000 0x260000 85b540

fs-jffs2

#nfs 30000000 192.168.1.133:/home/flinn/mini2440/bin/rootfs.jffs2

#nand erase root

#nand write.jffs2 30000000 260000 $filesize

#set bootargs console=ttysac0,115200 root=/dev/mtdblock3 rootfstype=jffs2

當前不支援proc

#vim  etc/inittab

console::askfirst:-/bin/sh

::sysinit:/etc/init.d/rcs

建立/etc/init.d/rcs 檔案

#mkdir /etc/init.d

#vim  /etc/init.d/rcs

+mount -t proc none /proc

#chmod +x /etc/init.d/rcs

#vim  /etc/init.d/rcs

#mount -t proc none /proc

mount -a

mount -a 依賴/etc/fstab

#vim /etc/fstab

+ # device    mount-point      type   option    dump   fsck  order

+ proc         /proc            proc     defaults     0      0

#cd rootfs

#mkdir sys

#vim etc/fstab

+sysfs           /sys           sysfs    defaults     0      0

+tmpfs           /dev           tmpfs    defaults     0      0

#vim etc/init.d/rcs

mount -a 

mkdir /dev/pts/

mount -t devpts devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

rootfs檔案系統的建立

首先,定義兩個file system type結構 fs ramfs inode.c line284 static struct file system type ramfs fs type static struct file system type rootfs fs type ramfs fs...

建立檔案系統

作業系統通過檔案系統管理資料 磁碟建立分割槽後並不能直接被作業系統使用,還需要建立檔案系統 格式化 建立檔案系統的過程又稱為格式化 裸裝置 raw 沒有檔案系統的裝置 常見的檔案系統有 fat32 ntfs ext2 ext3 ext4 xfs hfs等 檔案系統之間的區別 日誌 支援的分割槽大小 ...

linux檔案系統基礎 rootfs的掛載過程

一 目的 本文主要講述linux3.10檔案系統初始化過程的第一階段 掛載rootfs檔案系統。rootfs是基於記憶體的檔案系統,所有操作都在記憶體中完成 也沒有實際的儲存裝置,所以不需要裝置驅動程式的參與。基於以上原因,linux在啟動階段使用rootfs檔案系統,當磁碟驅動程式和磁碟檔案系統成...