歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

嵌入式系統搭建之三文件系統制作

1. 配置編譯並安裝busybox文件系統(http://www.linuxidc.com/Linux/2011-08/40704.htm)
    假設 pwd 得到 /timkyle-dev/techer/arm11-resources/
    a.解壓busybox包
    #tar xf busybox-1.17.2.tar.bz2
    得到busybox-1.17.2文件夾
    b.編譯busybox
    #cd busybox-1.17.2
    #make menuconfig
        /Busybox Settings
                /Build Options
                        /Build BusyBox as a static binary (no shared libs)
                        /(arm-none-linux-gnueabi-) Cross Compiler prefix
                /Busybox Library Tuning
    #make clean
    #make
    c.安裝busybox文件系統
    #make install
    則文件系統安裝在當前的_install文件夾下
    d.拷貝整個文件系統到應該作為文件系統的文件夾
    創建一個文件夾作為文件系統用
    #mkdir -p /timkyle-dev/my/arm/newnfs
    拷貝busybox制作出來的文件到自己的文件系統裡
    #cp ./_install/* /timkyle-dev/my/arm/newnfs/ -rf
2. 配置NFS服務
    a.配置NFS服務允許訪問的目錄路徑及權限
    #vim /etc/exports
    增加一行:
        /timkyle-dev/my/arm/newnfs *(rw)
    b.設置NFS服務開機即啟動
    #chkconfig --level 2345 nfs on
    c.重啟NFS服務
    #service nfs restart
    d.查看NFS服務是否啟動成功
    #chkconfig --list
    結果如下:
    nfs                0:off    1:off    2:on    3:on    4:on    5:on    6:off
    #showmount -e 192.168.1.10
    結果如下:
    Export list for 192.168.1.10:
    /timkyle-dev/my/arm/newnfs *
    e.修改文件系統文件夾的權限
    #chmod 777 /timkyle-dev/my/arm/newnfs/
3. 配置u-boot給內核啟動的參數
    a.啟動開發板進入u-boot狀態,運行如下
    配置內核啟動參數
    $setenv bootargs "root=/dev/nfs nfsroot=192.168.1.10:/disk2/newnfs ip=192.168.1.20 console=ttySAC0,115200"
    保存配置
    $saveenv
    重啟
    $reset
    最後停留在如下:
    Freeing init memory: 140K
    Warning: unable to open an initial console.
4. 完善文件系統
    a.進入文件系統對應文件夾
    #cd /timkyle-dev/my/arm/newnfs/
    b.增加文件夾dev及創建控制台設備
    #mkdir dev
    控制台:字符設備,主設備號5,次設備號1
    #mknod dev/console c 5 1
    c.修改啟動腳本
    #mkdir -p etc/init.d
    #mkdir -p sys/class
    #vim etc/init.d/rcS
        增加以下內容:
        mount -t ramfs none /dev
        mount -t sysfs none /sys
        /sbin/mdev -s
    #chmod 777 etc/init.d/rcS
    #vim etc/profile
        增加以下內容:
        export PS1="root@timkyle \W#"
    d.拷貝arm-linux-gcc程序用的庫文件
    #cp -rf /timkyle-dev/techer/arm11-resources/arm-4.3.2/arm-none-linux-gnueabi/libc/lib/ ../newnfs/
    e.重啟開發板,則能進入nfs文件系統
    Please press Enter to activate this console.
    看到上句後,直接按回車鍵即可進入NFS的文件系統
5. 打包文件系統
    a.查看內核分區信息表
    #vim /timkyle-dev/techer/arm11-resources/linux-2.6.28_smdk6410/arch/arm/plat-s3c/include/plat/partition.h
        有如下信息:
        struct mtd_partition s3c_partition_info[] = {
            {
                    .name           = "Bootloader",
                    .offset         = 0,
                    .size           = (256*SZ_1K),
                    .mask_flags     = MTD_CAP_NANDFLASH,
            },
            {
                    .name           = "Kernel",
                    .offset         = (256*SZ_1K),
                    .size           = (4*SZ_1M) - (256*SZ_1K),
                    .mask_flags     = MTD_CAP_NANDFLASH,
            },
            #if defined(CONFIG_SPLIT_ROOT_FILESYSTEM)
            {
                    .name           = "Rootfs",
                    .offset         = (4*SZ_1M),
                    .size           = (80*SZ_1M),//(48*SZ_1M),
            },
            #endif
            {
                    .name           = "File System",
                    .offset         = MTDPART_OFS_APPEND,
                    .size           = MTDPART_SIZ_FULL,
            }
        };
    b.在u-boot命令狀態下
    擦除nandflash
    $nand erase 0x300000 0xfd00000
        查看壞塊信息
    $nand bad
    c.打包文件系統內容
    #cd /timkyle-dev/my/arm/newnfs/
    #tar cf nfs.tar *
    得到nfs.tar壓縮包
6. 把文件系統燒寫進nandflash裡(通過內核的mtd層)
    a.通過開發板進入系統
    Please press Enter to activate this console.
    看到上句後,直接按回車鍵即可進入NFS的文件系統
    b.通過mtd層把系統寫到nandflash裡
    $mkdir /mnt
    $mount -t yaffs /dev/mtdblock3 /mnt
   
7. 保存各種內核啟動參數
    a.保存內核啟動參數(nfs系統)
    $setenv nfsboot $bootargs
    b.內核啟動參數配置為nandflash系統
    $setenv bootargs "root=/dev/mtdblock3 ip=192.168.1.20 console=ttySAC0,115200"
    $setenv nandboot $bootargs
    $saveenv
    $reset
    c.內核啟動參數配置為nfs系統
    $setenv bootargs $nfsboot
    $saveenv
    $reset

相關閱讀:

嵌入式系統搭建之一U-Boot移植 http://www.linuxidc.com/Linux/2012-02/54020.htm

嵌入式系統搭建之二內核移植 http://www.linuxidc.com/Linux/2012-02/54021.htm

U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

Copyright © Linux教程網 All Rights Reserved