Ubifs製作檔案系統

來源:互聯網
上載者:User

                                          Ubifs製作檔案系統
(1).主機環境:ubuntu 12.04
(2).整合式開發環境:vim
(3).編譯環境:arm-linux-gcc 4.4.3
(4).開發板:mini2440
(5).u-boot版本:u-boot-2009.08
(6).核心版本:linux-2.6.32.2
(7).所需包: busybox-1.17.2-20101120.tgz rootfs_qtopia_qt4-20111212.tgz linux-2.6.32.2.tar mktools.tar.gz

busybox-1.17.2-20101120.tgz:

http://download.csdn.net/detail/taozi343805436/4576011

mktools.tar.gz:

http://download.csdn.net/detail/taozi343805436/4576014

1.獲得busybox包原始碼
(1) 建立目錄作為檔案系統製作的目錄
    root@ubuntu:/home/hero# mkdir makeubifs
    (2)把獲得的busybox包,linux核心包mv到makeubifs目錄下:
    root@ubuntu:/home/hero/makeubifs# ls

    busybox-1.17.2-20101120.tgz  linux-2.6.32.2

2.根檔案系統目錄說明
    嵌入式LINUX中都需要構建根檔案系統,構建根檔案系統的規則在FHS文檔中,下面是根檔案系統頂層目錄。
目錄   內容
bin       存放所有使用者都可以使用的、基本的命令。
sbin     存放的是基本的系統命令,它們用於啟動系統、修複系統等。
Usr      裡面存放的是共用、唯讀程式和資料。
proc     這是個空目錄,常作為proc 檔案系統的掛載點。
dev      該目錄存放裝置檔案和其它特殊檔案。
etc       存放系統設定檔,包括開機檔案。
lib        存放共用庫和可載入塊(即驅動程式),共用庫用於啟動系統、運行根檔案系統中的可執行程式
boot     引導載入程式使用的靜態檔案。
home   使用者主目錄,包括供服務帳號鎖使用的主目錄,如FTP。
mnt      用於臨時掛接某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
opt      給主機額外安裝軟體所擺放的目錄。
root      root 使用者的主目錄
tmp      存放臨時檔案,通常是空目錄。
var       存放可變的資料,如日誌等。
3.建立系統目錄
(1)在核心目錄相同的目錄下建立一個目錄myrootfs
root@ubuntu:/home/hero/makeubifs# ls

busybox-1.17.2-20101120.tgz  linux-2.6.32.2  myrootfs

(2)進入目錄myrootfs下,建立一個建立根檔案系統目錄的指令檔mkrootfs
root@ubuntu:/home/hero/makeubifs# cd myrootfs/

root@ubuntu:/home/hero/makeubifs/myrootfs# vim mkrootfs
編輯指令檔:
#!/bin/sh
echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs
echo "--------Create root,dev....----------"
mkdir bin boot dev etc home lib mnt proc root sbin sys tmp usr var  www
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 666 dev/console c 5 1
mknod -m 666 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---------"

儲存退出,修改許可權,執行指令碼。
root@ubuntu:/home/hero/makeubifs/myrootfs# chmod 777 mkrootfs

root@ubuntu:/home/hero/makeubifs/myrootfs#ux-2.6.32.2# make modules ./mkrootfs

------Create rootfs directons start...--------

--------Create root,dev....----------

make node in dev/console dev/null

-------make direction done---------

這樣就完成了根檔案系統的目錄建立。

4.編譯並安裝核心模組
(1)進入linux核心目錄下,修改Makefile,大概在182行
        export KBUILD_BUILDHOST := $(SUBARCH)

        ARCH        ?= arm
        CROSS_COMPILE   ?=arm-linux-
然後執行編譯make modules,如果發生錯誤(觸控螢幕問題)可以運行:
root@ubuntu:/home/hero/makeubifs/linux-2.6.32.2# cp arch/arm/configs/s3c2410_defconfig  .config

    等到編譯完成後,安裝編譯好的模組:
     root@ubuntu:/home/hero/makeubifs/linux-2.6.32.2#  make     modules_install ARCH=arm  INSTALL_MOD_PATH=/home/hero/makeubifs/myrootfs/rootfs/

(2)建立動態串連庫
解壓獲得檔案rootfs_qtopia_qt4,拷貝其lib 的內容到建立的根檔案目錄lib 內
root@ubuntu:/home/hero/makeubifs/rootfs_qtopia_qt4# cp -a lib/* /home/hero/makeubifs/myrootfs/rootfs/lib/
5,交叉編譯bosybox
     bosybox 是一個遵循GPL v2 協議的開源項目,它在編寫過程總對檔案大小進行最佳化,並考慮了系統資源有限(比如記憶體等)的情況,使用Busybox 可以自動產生根檔案系統所需的bin、sbin、usr 目錄和linuxrc 檔案。
(1)獲得軟體包bosybox,並解壓
root@ubuntu:/home/hero/makeubifs# ls
busybox-1.17.2-20101120.tgz  linux-2.6.32.2  myrootfs  rootfs_qtopia_qt4
root@ubuntu:/home/hero/makeubifs# tar -zxf busybox-1.17.2-20101120.tgz
(2)進入bosybox的頂層目錄,修改Makefile
    在164行:CROSS_COMPILE ?= arm-linux-
    在190行:ARCH ?=arm
(3)編譯配置
    在busybox頂層目錄下執行:make menuconfig
1.Busybox Settings  --->
    Build Options  --->
    [*] Build BusyBox as a static binary (no shared libs)                     [ ] Force NOMMU build (NEW)                                             
     [*] Build with Large File Support (for accessing files > 2 GB)     (NEW)  
    (arm-linux-) Cross Compiler prefix                                      
    ()  Additional CFLAGS (NEW)  
 
2. Busybox Settings  --->
Installation Options  --->
[*] Don't use /usr
        Applets links (as soft-links)  --->
        (/home/hero/makeubifs/myrootfs/rootfs) BusyBox installation prefix

  3.Busybox Library Tuning --->
       [*] Support for /etc/networks
       [*] Command line editing
       (1024) Maximum length of input
       [*] vi-style line editing commands
       (15) History size
    [*] History saving
    [*] Tab completion
    [*] Username completion
    [*] Fancy shell prompts
儲存退出,編譯bosybox。
root@ubuntu:/home/hero/makeubifs/busybox-1.17.2# make CONFIG_PREFIX=/home/hero/makeubifs/myrootfs/rootfs  install
在rootfs目錄下多了一個linuxrc目錄。
6.建立etc目錄下的設定檔
(1)建立/etc/group系統使用者組設定檔,內容如下:
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:lp
mail:*:8:
news:*:9:
u p:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
so:*:27:
aio:*:29:
ppp:x:99:
500:x:500:plg
501:x:501:fa
(2)建立passwd系統密碼檔案
root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
sky::502:502:Linux User,,,:/home/sky:/bin/sh

root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# ls
group  init.d  passwd  rc.d  sysconfig
(3)在etc/sysconfig 目錄下建立主機檔案名稱HOSTNAME,內容為"hello"
root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc/sysconfig# cat >>HOSTNAME
hello
^C
(4)建立etc/inittab 系統init進程設定檔
#etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r

修改檔案的可執行許可權:
root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# chmod 777 inittab
(5)建立etc/init.d/rcS系統啟動附加元件檔案
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S//啟動並執行層級
prevlevel=N
umask 022//檔案夾的掩碼
export PATH runlevel prevlevel
echo "----------munt all----------------"
mount -a//掛載/etc/fstab/檔案指定的所有的檔案系統
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo "***********************************************"
echo "*******booting to mini2440 ***************"
echo "Kernel version:linux-2.6.32.2"
echo "Date:2012.9.17"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
修改它的許可權:root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# chmod 777 init.d/rcS
(6)建立etc/fstab 系統掛載檔案系統列表檔案,將下面內容複寫並粘貼其中:
#device mount-point   type  option    dump  fsck  order
proc   /proc   proc   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='[\u@\h \W]\$'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
修改環境變數PS1(命令列提示符),可以使用vi編輯/etc/profile檔案,在最後加上:
export PS1='[\u@\h \W]\$ '
即可,其中\u顯示目前使用者帳號,\h顯示當前主機名稱,\W顯示當前路徑,\$顯示'$'符號
\W 代替 \w 就可以實現絕對路徑到相對路徑的轉換
(8) 建立etc/mdev.conf (mdev裝置設定檔)、 net.conf (網路設定檔件),mime.types: MIME(Multipurpose Internet Mail Extensions) 內容均為空白。
root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# vim mdev.confroot@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# vim net.confroot@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# vim mine.types
(9) 建立boa WEB伺服器檔案設定檔
    在etc/boa目錄,並在boa目錄中建立boa.conf檔案,內容為空白。
    root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# mkdir boa
    root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc# vim boa/boa.conf
    (10)先建立etc/rc.d/init.d目錄
    root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc/rc.d# mkdir init.d
    root@ubuntu:/home/hero/makeubifs/myrootfs/rootfs/etc/rc.d# ls
    init.d
    然後建立etc/rc.d/init.d/httpd檔案
    #!/bin/sh
    base=boa

    # See how we were called.
    case "$1" in
    start)
    /usr/sbin/$base
    ;;
    stop)
    pid=`/bin/pidof $base`
    if [ -n "$pid" ]; then
    kill -9 $pid
    fi
    ;;
    esac
 
    exit 0
(11)建立etc/resolv.conf,DNS設定檔,存放訪問外網時需要DNS 的資訊,內容如下:
    nameserver 61.144.56.100
 (12)在/home/sky目錄,與etc目錄passwd檔案中的sky相對應
    mkdir home/sky
7.製作 UBIFS 格式檔案系統映像
    通過以上的工作我們現在得到了目錄rootfs
#mkubimage-mlc2 rootfs  rootfs.ubi將把rootfs目錄壓製為 UBIFS 格式的 rootfs.ubi 映像檔案,它適用於塊頁組織圖為“1 Page= 8K Byte,1 Block=1M”的 MLC2 Nand Flash,然後可以把 rootfs.ubi檔案系統燒寫到開發板。
root@ubuntu:/home/hero/makeubifs/myrootfs# mkubimage-mlc2 rootfs rootfs.ubi
Please wait...
Succeed!
Note: mkubimage is designed by FriendlyARM(www.arm9.net)
root@ubuntu:/home/hero/makeubifs/myrootfs# ls
mkrootfs  rootfs  rootfs.ubi
root@ubuntu:/home/hero/makeubifs/myrootfs#  
8.構建 mkubimage-mlc2
mktools.tar.gz –C /
將會在/usr/sbin 目錄下建立產生相應的工具集。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.