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

Linux大全评论451 views阅读模式

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

企鹅博客
  • 本文由 发表于 2019年11月13日 02:37:22
  • 转载请务必保留本文链接:https://www.qieseo.com/173995.html

发表评论