1. 程式人生 > >製作yaffs2根檔案系統

製作yaffs2根檔案系統

現在大部分開發板都可以支援yaffs2 檔案系統,它是專門針對嵌入式裝置,特別是使用nand flash作為儲存器的嵌入式裝置而建立的一種檔案系統,早先的yaffs僅支援小頁(512byte/page)的nand flash,使用 yaffs2 就可以支援大頁的 nand flash。

所謂製作根檔案系統,就是建立各個目錄,並且在裡面建立各種檔案,比如在/bin,/sbin/目錄下存放各種可執行的程式,在/etc目錄下存放配置檔案,在/lib目錄下存放庫檔案,下面就開始檔案系統的製作。

可以從http://www.busybox.net/downloads/下載Busybox-1.13.3。

1.根檔案系統的目錄結構

bin 存放所有使用者都可以使用的、基本的命令。
        sbin 存放的是基本的系統命令,它們用於啟動系統、修復系統等。
        usr 裡面存放的是共享、只讀的程式和資料。
        proc 這是個空目錄,常作為proc檔案系統的掛載點。
        dev 該目錄存放裝置檔案和其它特殊檔案。
        etc 存放系統配置檔案,包括啟動檔案。
        lib 存放共享庫和可載入塊(即驅動程式),共享庫用於啟動系統、執行根檔案系統中的可執行程式。
        boot 引導載入程式使用的靜態檔案
        home 使用者主目錄,包括供服務賬號鎖使用的主目錄,如FTP
        mnt 用於臨時掛接某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
        opt 給主機額外安裝軟體所擺放的目錄。
        root root使用者的主目錄
        tmp 存放臨時檔案,通常是空目錄。
        var 存放可變的資料。

2.建立根檔案系統的目錄

建立一個shell指令碼檔案create_filesystem用於構建根檔案系統的各個目錄。執行./ create_filesystem  nfsroot即可在當前目錄下建立根檔案系統的目錄nfsroot,其指令碼的內容如下:

#!/bin/sh
echo "------Create $1 directons start...--------"
mkdir $1
cd $1
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"

改變了tmp目錄的使用權,讓它開啟sticky位,為tmp目錄的使用權開啟此位,可確保tmp目錄底下建立的檔案,只有建立它的使用者有權刪除。

執行chmod  +x  create_filesystem新增可執行許可權。

3.建立動態的連結庫

動態連結庫直接使用友善之臂的,首先,下載友善之臂的根檔案系統解壓後得到root_qtopia,把該檔案下的lib下的檔案全部複製到我們自己建立的lib/資料夾下。cp –rd  root_qtopia/lib/*  nfsroot/lib/

4.編譯和安裝Busybox

Bosybox 是一個遵循GPL v2協議的開源專案,它在編寫過程總對檔案大小進行優化,並考慮了系統資源有限(比如記憶體等)的情況,使用 Busybox 可以自動生成根檔案系統所需的bin、sbin、usr 目錄和 linuxrc 檔案。

解壓Busybox,然後修改該目錄下的makefile檔案,修改平臺為arm平臺,修改編譯器為預設的交叉編譯器

CROSS_COMPILE ?=arm-linux-   //大約在164行

ARCH ?=arm  //大約在189行

config %config: scripts_basic outputmakefile FORCE改為  %config: scripts_basic outputmakefile FORCE

/ %/: prepare scripts FORCE  改為 %/: prepare scripts FORCE

配置busybox,在busybox-1.13.3目錄下,這裡我們只關心改動的地方。執行make menuconfig,其各個選項的配置如下(只列出更改的):

(1)Busybox Settings--->

        BuildOptions--->

                [*]Build BusyBox as a static binary(no shared libs)

        BusyboxLibrary Tuning --->

                (1024)Maximumlength of input

                [*]vi-style line editing commands

                [*]Fancyshell prompts

(2)Linux System Utilities --->

                [*]Support/etc/mdev.conf

                [*]Supportcommand execution at device addition/removal

(3) Linux Module Utilities--->

        [ ]simplified  modutils

                [*]insmod

                [*]rmmod

                [*]lsmod

                [*]modprobe

5.編譯busybox

編譯busybox到指定目錄: make CONFIG_PREFIX= nfsroot install

即:執行make CONFIG_PREFIX=根檔案系統目錄 install

在rootfs目錄下會生成目錄bin、sbin、usr和檔案linuxrc的內容。

6.建立etc目錄

init程序根據/etc/inittab檔案來建立其他的子程序,比如呼叫指令碼檔案配置IP地址,掛載其他的檔案系統,最後啟動shell等。

(1)拷貝主機etc目錄下的passwd、group、shadow檔案到rootfs/etc目錄下。

(2)在etc/下建立mdev.conf檔案

內容為:

# system all-writable devices

full  0:0  0666

null  0:0  0666

ptmx  0:0  0666

random  0:0  0666

tty  0:0  0666

zero  0:0  0666

# console devices

tty[0-9]* 0:5 0660

vc/[0-9]* 0:5 0660

# serial port devices

s3c2410_serial0  0:5  0666  =ttySAC0

s3c2410_serial1  0:5  0666  =ttySAC1

s3c2410_serial2  0:5  0666  =ttySAC2

s3c2410_serial3  0:5  0666  =ttySAC3

# loop devices

loop[0-9]*  0:0  0660  =loop/

# i2c devices

i2c-0  0:0  0666  =i2c/0

i2c-1  0:0  0666  =i2c/1

# frame buffer devices

fb[0-9]  0:0  0666

# input devices

mice  0:0  0660  =input/

mouse.*  0:0  0660  =input/

event.*  0:0  0660  =input/

ts.*  0:0  0660  =input/

# rtc devices

rtc0  0:0  0644  >rtc

rtc[1-9]  0:0  0644

# misc devices

mmcblk0p1  0:0  0600  =sdcard */bin/hotplug.sh

sda1  0:0  0600  =udisk * /bin/hotplug.sh

(3)etc/inittab檔案:仿照Busybox的examples/inittab檔案,在etc/目錄下建立一個inittab檔案,寫上以下內容:

#etc/inittab

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

(4)建立etc/init.d/rcS檔案:

這是一個指令碼檔案,可以在裡面新增自動執行的命令

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S//執行的級別

prevlevel=N

umask 022 //資料夾的掩碼
export PATH runlevel prevlevel
echo"-------------------------------------------------------"
mount –a//掛載/etc/fstab/檔案指定的所有的檔案系統
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev –s


echo "        Kernel version: linux-2.6.32.2   "
echo "              mini2440              "
echo"-------------------------------------------------------"
/bin/hostname -F /etc/sysconfig/HOSTNAME   //主機的名字

最後,還要改變它的屬性,使它具有可執行許可權 chmod +x etc/init.d/rcS

(5)etc/sysconfig目錄下新建檔案HOSTNAME,內容為“mini2440”。

(6)建立etc/fstab檔案:

內容如下,表示執行完,“mount -a”命令後將掛載proc,tmpfs等包含在該檔案中的所有的檔案系統。

#device mount-point type option dump fsck order
proc/proc   proc    defaults 0 0
tmpfs/tmp    tmpfs   defaults 0 0
none   /tmp    ramfs  defaults 0 0
sysfs   /sys    sysfs   defaults 0 0
mdev   /dev   ramfs  defaults 0 0

(7)建立etc/profile檔案:

#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\[email protected]\h\W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH

7. 製作根檔案系統映像檔案

使用命令mkyaffs2image-128Mrootfs rootfs.yaffs2生成根檔案系統映像檔案。

把生成的rootsfs.yassf2檔案下載到nandFlash中的根檔案系統區。然後從NANDFlash啟動可以看到啟動資訊。

相關推薦

製作yaffs2檔案系統

現在大部分開發板都可以支援yaffs2 檔案系統,它是專門針對嵌入式裝置,特別是使用nand flash作為儲存器的嵌入式裝置而建立的一種檔案系統,早先的yaffs僅支援小頁(512byte/page)的nand flash,使用 yaffs2 就可以支援大頁的 nand

一步一步製作yaffs/yaffs2檔案系統(四)---構建etc、dev等剩餘目錄

                            開發環境:Ubuntu 12.04                             開發板:mini2440  256M NandFlash   64M SDRAM                      

一步一步製作yaffs/yaffs2檔案系統--生成yaffs/yaffs2映象檔案及下載到開發板

  開發環境:Ubuntu 12.04                             開發板:mini2440  256M NandFlash   64M SDRAM                              交叉編譯器:arm-linux-

一步一步製作yaffs/yaffs2檔案系統(一)

                          開發環境:Ubuntu 12.04                             開發板:mini2440  256M NandFlash   64M SDRAM                      

#嵌入式Linux最小系統移植# yaffs2檔案系統移植出錯記錄

busybox官網地址: 本次移植採用的busybox版本: busybox-1.26.0.tar.bz2 交叉編譯工具鏈版本: $ arm-linux-gcc -v gcc version 4.4.3 (ctng-1.6.1) 1

基於busybox製作mini2440檔案系統及使用nfs掛載

  常見的檔案系統有yaffs2, jffs2,他們是適用於根檔案系統映象存在於NAND Flash上的情況。而傳統的Linux EXT2/EXT3檔案系統格式適用於傳統的block裝置,比如SD卡或者硬碟。 cramfs同時適用於以上兩種情況。其不管採用哪種格式,核心都必

製作ubuntu檔案系統

參考文件: http://blog.csdn.net/mountzf/article/details/51707853 http://developer.t-firefly.com/thread-10963-1-1.html http://rockchip.wikidot.

JZ2440:yaffs2 格式檔案系統製作

YAFFS目前有yaffs、yaffs2兩個版本,一般來說,yaffs對小頁(512B+16B/頁)的NandFlash(68M)有很好的支援,yaffs2對大頁(2K+64B/頁)的NandFlash(128M、256M或者更大)支援更好。 我的 nandflash

debian9安裝busybox,並製作檔案系統(2)

3,製作根檔案系統 在上文debian9安裝busybox,並製作根檔案系統(1)中輸入make install命令進行安裝,busybox會自動將rootfs根檔案系統安裝到之前設定的目錄下,之前我設定的是/home/guoyanzhang/rootfs,進入之後, ##ls -l drw

debian9安裝busybox,並製作檔案系統(1)

1,構建根檔案目錄 ##mkdir rootfs ##mkdir root home bin sbin etc dev usr lib tmp mnt sys proc ##mkdir usr/lib usr/bin 2,安裝busybox 2.1,下載busybox安裝包,https

Linux檔案系統製作與各種掛載方式的實現

Linux根檔案系統的製作 什麼是檔案系統 計算機的檔案系統是一種儲存和組織計算機資料的方法,它使得對其訪問和查詢變得容易,檔案系統使用檔案和樹形目錄的抽象邏輯概念代替了硬碟和光碟等物理裝置使用資料塊的概念,使用者使用檔案系統來儲存資料不必關心資料實際儲存在硬碟(或者光碟)的地址為多少的資料

busybox製作最小檔案系統

接上篇,qemu啟動linux核心 ,啟動核心失敗後,開始製作一個最小的ramdisk根檔案系統。 根檔案系統製作工具busybox,還是走大眾路線吧。原始碼包下載地址:https://busybox.net/ 直接進入busybox的根目錄,準備編譯,使用預設配置檔案defconfig,

Linux:一步一步製作自己的檔案系統

一步一步製作自己的根檔案系統 在這裡,實驗過程使用的是九鼎提供的S5PV210開發板,實驗核心同樣來自其官方資料盤中Linux資料包中的的QT4.8中的相關原始碼,實驗的NFS檔案系統在虛擬中的Ubuntu14.04中建立. 建立檔案系統根目錄 root

利用busybox和mkfs.jffs2製作檔案系統

PC機系統:Ubuntu 12.04 LTS 目標板:海思3518C Flash型別:SPI Flash(16M) Busybox:BusyBox-1.16.1.tgz 嵌入式交叉編譯工具鏈:arm-hisiv100nptl-linux-gcc 目標

Linux核心移植和檔案系統製作(詳細步驟精講)

start_kernel是所有 Linux 平臺進入系統核心初始化後的入口函式,它主要完成剩餘的與硬體平臺相關的初始化工作,在進行一系列與核心相關的初始化後,呼叫第一個使用者程序-init 程序並等待使用者程序的執行,這樣整個 Linux 核心便啟動完畢。該函式所做的具體工作有:呼叫 setup_arch

cramfs檔案系統製作啟動總結

cramfs啟動根檔案系統 Cramfs:Compressed ROM File System   Cramfs是Linux的創始人 Linus Torvalds參與開發的一種只讀的壓縮檔案系統。它也基於MTD驅動程式。   cramfs擁有以下一些特性:  採用實時解壓

移植u-boot-2011.03到S3C2440(utu2440)的方法與步驟###8. u-boot引導啟動nand flash中核心和檔案系統cramfs和使用者檔案系統yaffs2支援

rivers/rtc/hctosys.c: unable to open rtc device (rtc0)uncorrectable error : <3>uncorrectable error : <3>end_request: I/O error, dev mtdblock2, 

openwrt的編譯系統是如何製作檔案系統

答:分析以下makefile即可獲取整個過程 以nxp layerscape系統的編譯過程為例 1.分析target/linux/layerscape/image/Makefile的最後一句,這是一個好的開端 $(eval $(call BuildImage))   2.巨集Bu

最新busybox-1.28.1製作檔案系統

本文適配fs4412開發板,使用的核心為linux4.9.9。 1.原始碼下載 Busybox的官方原始碼下載路徑為: http://busybox.net/downloads/ 可以下載最新的busybox-1.28.1 2.解壓原始碼 tar

移植核心學習筆記2-----修改分割槽及製作檔案系統

1、製作分割槽 (1)分析 在上節實驗中出現以下問題:無法掛載根檔案系統 在以前u-boot燒寫檔案系統時是燒寫到某個地方,以前的分割槽是下面那樣劃分的,劃分為4個分割槽,但是上面有8個分割槽 分割槽修改參考(分割槽是在程式碼裡面寫死的,u-boot怎麼設定不會影響核心