zoukankan      html  css  js  c++  java
  • Linux之根文件系统的构建20160611

    说一下LINUX根文件系统的构建:

    制作文件系统

    1. 交叉编译busybox

       安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new

    2. 安装库

    mkdir /work/nfs_root/fs_mini_mdev_new/lib

    mkdir /work/nfs_root/fs_mini_mdev_new/usr/lib -p

    cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so*  /work/nfs_root/fs_mini_mdev_new/lib -d

    cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so*  /work/nfs_root/fs_mini_mdev_new/usr/lib -d

    3. 构建etc目录

    4. 构建dev目录

    5. 其他空目录

       

    mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2

    烧写:

    nfs 30000000 192.168.1.123:/work/nfs_root/fs_mini_mdev_new.jffs2

    nand erase.part rootfs

    nand write.jffs2 30000000 260000  $filesize

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

    nfs 32000000 192.168.1.123:/work/nfs_root/uImage_new

    bootm 32000000

    SIGILL   illegal instruction

    6. 重新配置内核支持EABI

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

    nfs 32000000 192.168.1.123:/work/nfs_root/uImage_eabi

    bootm 32000000

    . 移植YAFFS文件系统

    1. 获得源码

    git clone git://www.aleph1.co.uk/yaffs2

    2. 打补丁

    cd yaffs-dir

    ./patch-ker.sh  c m linux-tree   比如 ./patch-ker.sh c m /work/system/linux-3.4.2

    3. 配置内核支持YAFFS

    4. 编译、使用uImage

    5. 制作、烧写yaffs映象

    mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2

    uboot:

    nfs 30000000 192.168.1.123:/work/nfs_root/fs_mini_mdev_new.yaffs2

    nand erase.part rootfs

    nand write.yaffs 30000000 260000  $filesize

    6. 启动

    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3

    nfs 32000000 192.168.1.123:/work/nfs_root/uImage_yaffs

    bootm 32000000

    7. 没成功,用替代法查找问题

    7.1 UBOOT可能有问题:换上1.1.6UBOOT

    tftp 30000000 u-boot.bin

    nand erase.part u-boot

    nand write 30000000 u-boot

    reset

    nfs 30000000 192.168.1.123:/work/nfs_root/fs_mini_mdev_new.yaffs2

    nand erase rootfs

    nand write.yaffs 30000000 260000  $(filesize)

    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3

    nfs 32000000 192.168.1.123:/work/nfs_root/uImage_yaffs

    bootm 32000000

    发现1.1.6UBOOT没问题,所以就是我们移植的新UBOOTBUG

    driversmtd andNand_util.c

    if (!need_skip && !(flags & WITH_DROP_FFS)) {

    改为

    if (!need_skip && !(flags & WITH_DROP_FFS) && !(flags & WITH_YAFFS_OOB)) {

    7.2 YAFFS映象可能有问题

    制作了u-boot_new.bin, uImage_new, fs_mini_mdev_new.yaffs

    重烧整个系统:

    使用jtag工具烧u-boot_new.bin

    或使用uboot来更新自己: tftp 30000000 u-boot_new.bin; nand erase.part u-boot; nand write 30000000 u-boot

    启动uboot,用它来烧写内核、FS

    tftp 30000000 uImage_new; nand erase.part kernel; nand write 30000000 kernel

    tftp 30000000 fs_mini_mdev_new.yaffs2; nand erase.part rootfs; nand write.yaffs 30000000 260000  $filesize

    设置参数

    set 'nand read 30000000 kernel;bootm 30000000'

    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3

    set machid 16a

    save

    使用内核补丁:

    patch -p1 < ../linux-3.4.2_100ask.patch

    cp config_ok .config

    make uImage

    附笔者学习笔记:

    1.busybox安装,完成第二项构建init程序也就是busybox本身

    2.构建其他基本的三项:

    3.加入PS等命令:

    4.加入自动创建设备节点的Udev

    5.制作其他格式的文件系统:

    6.制作网络文件系统:

  • 相关阅读:
    msvcr120.dll、msvcp120.dll注册失败
    Qt初级-Qt格式
    二级指针的申请与释放
    搜索指定目录下的所有文件或者指定文件(可用于多级目录)
    Java--多线程处理--模拟车辆进入入收费
    Sqlit--学习教程(建立数据库表)
    Sqlit--学习教程(基本操作1)
    Sqlit--学习教程()
    Sqlit--学习教程(命令)
    Sqlit--学习教程(简介)
  • 原文地址:https://www.cnblogs.com/yuweifeng/p/5576095.html
Copyright © 2011-2022 走看看