说一下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.6的UBOOT

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.6的UBOOT没问题,所以就是我们移植的新UBOOT有BUG:

drivers\mtd\nand\Nand_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.制作网络文件系统:

Linux之根文件系统的构建20160611的更多相关文章

  1. 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导【转】

    本文转载自:https://my.oschina.net/freeblues/blog/596448 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导 buildroot 是 ...

  2. 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令

    根文件系统的构建与分析(四) 转载请注明 http://blog.csdn.net/jianchi88   Author:Lotte   邮箱:baihaowen08@126.com ls /bin, ...

  3. 根文件系统的构建与分析(三)之根文件目录及最简/dev目录

    根文件系统的构建与分析(三) 转载请注明 http://blog.csdn.net/jianchi88   Author:Lotte   邮箱:baihaowen08@126.com 一.FHS(Fi ...

  4. 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录

    开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...

  5. yaffs2根文件系统的构建过程

    基于BusyBox-1.19.2  (以其它作者的作为参考) 1. 下载BusyBox的源码 http://busybox.net/ 2. 解压#tar xvzf busybox-1.19.2.tgz ...

  6. Linux制作根文件系统笔记

    测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 交叉编译器:arm-linux-gcc 4.4.4 Bus ...

  7. linux挂载根文件系统过程

    linux-2.6.36内核 start       arch/arm/boot/compressed/head.S arch/arm/kernel/head.S start_kernel()    ...

  8. linux 内核根文件系统

    参考: http://blog.csdn.net/guopeixin/article/details/5962482 http://www.yunweipai.com/archives/1184.ht ...

  9. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

随机推荐

  1. 372. Delete Node in a Linked List【LintCode java】

    Description Implement an algorithm to delete a node in the middle of a singly linked list, given onl ...

  2. 打印队列 (Printer Queue,ACM/ICPC NWERC 2006,UVA12100)

    题目描述: 题目思路: 使用一个队列记录数字,一个优先队列记录优先级,如果相等即可打印: #include <iostream> #include <queue> using ...

  3. parity 注记词

    spousal tint untold around rosy daintily unrated sheep choice showpiece chirping gala

  4. quartz入门实例

    一 Quarta介绍 1 Quartz是什么 Quartz就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job.Windows 的计划任务.Unix/Linux 下的 Cron,但 Qu ...

  5. 《C++面试知识点》

    [动态内存] 1. 由内置指针管理的动态内存(即new和delete管理动态内存),直到被显式释放之前它都是存在的.假设该指针变量被销毁,那该内存将不会自动释放(即所谓的“内存泄漏”). 2. 可以用 ...

  6. 课堂练习之找数字0-N中“1”出现的次数

    一.题目与要求 题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 要求:1.写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12) ...

  7. unity 学习记录

    世界第九条约定 缘起 嗯,其实一开始我知道unity是个弄游戏的,也知道好像神庙逃亡,炉石都是出自unity,然后舍友都报了,我也觉得这个东西挺高大上的,所以忍不住自己的双手,报了名,确实,这能学到很 ...

  8. 福大软工1816 · 第五次作业 - 结对作业2_map与unordered map的比较测试

    测试代码: #include <iostream> using namespace std; #include <string> #include <windows.h& ...

  9. asp.net .net4.0使用异步编程

    "; Action<object> ac = (object obj) => { Debug.WriteLine("睡眠开始:" + DateTime. ...

  10. Martin Fowler关于IOC和DI的文章(原版)

    Inversion of Control Containers and the Dependency Injection pattern In the Java community there's b ...