busybox

  在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行。而用户自己编写的程序如果需要动态链接库,还是依然需要有。

  (从http://www.busybox.net/downloads/可以下载busybox工具)

  如果是动态链接库,则busybox和用户自己编写的程序都需要动态链接库。 

  这里,因为我们以后需要使用自己编写的程序,故选择使用动态链接库。  

  busybox 要支持mdev、Tab补全功能、insmod模块安装命令、ifconfig命令等。

    Busybox Settings

      Busybox Library Tuning

        Tab completion

然后就是编译、安装。安装的时候一定要跟上路径,不然很有可能破坏电脑的文件系统。

修改Makefile

CROSS_COMPILE ?= arm-linux-

make

make CONFIG_PREFIX=/work/nfs_root/first_fs install
 bootargs = noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

构建最小文件系统。

  首先创建最基本的设备文件。(/dev/console和/dev/null)。

  在pc上查看当前电脑的设备号。

zws@z-pc:/home/jz2440/fsroot$ ls /dev/console -l
crw------- root root , 10月 : /dev/console
zws@z-pc:/home/jz2440/fsroot$ ls /dev/null -l
crw-rw-rw- root root , 10月 : /dev/null

  然后在相应的文件夹中创建对应的设备文件。

mkdir dev
cd dev/
sudo mknod console c
sudo mknod null c

  构造inittab

mkdir etc
cd etc/
touch inittab
console::askfirst:-/bin/sh

  构建C库  

mkdir lib
cp 。。。。/arm-linux/lib/*.so* ./ -D

完成最小根文件系统的构建。

使用 mkyaffs2image 制作文件系统。

将文件系统通过tftp下载到开发板板,并写入到nand Flash

tftpboot  fsroot.yaffs2
nand erase root
nand write.yaffs 0x30000000 root $(filesize)

最小文件系统完成。

  支持PS命令。

mkdir sys
mkdir proc
mdkir etc/init.d
tocuh etc/init.d/rcS

  在inittab中添加

::sysinit:/etc/init.d/rcS

  在rcS中添加

mount -a

  在etc下新建fstab。 添加

  #device        mount-point        type        option        dump    fsck order
  proc /proc proc defaults

使用udev。而mdev是udev的简化版本。

  使用mdev自动创建设备文件

  在fstab中添加

sysfs        /sys            sysfs        defaults
tmpfs /dev tmpfs defaults

  在rcS中添加

mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

到此为止,一个基本的文件系统已经创建完成。

设置启动参数:

set bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

 NFS网络文件系统

  在UBUNTU的/etc/exports中修改共享的目录路径Document/nfsroot.txt。

set bootargs=root=/dev/nfs rw nfsroot=<serverip>:/home/zht/rfsys nfsaddrs=<clientip>:<serverip>:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,

添加文件系统的命令工具

  我们制作的最小根文件系统只有基础的一些功能,比如当我们需要在开发板上执行格式化磁盘命令mkdosfs、磁盘分区命令fdisk 等的命令时会发现我们制作的根文件系统没有这些命令工具,因此我们需要自己添加相应的命令工具。

从http://pkgs.fedoraproject.org/repo/pkgs/dosfstools/网站上下载dosfstools-3.0.16.tar.gz文件,在PC机上进行解压让后通过make CC=arm-linux-gcc进行交叉编译得到mkdosfs文件。将mkdosfs拷贝到开发板的/usr/sbin/目录下即可。

  

嵌入式Linux驱动学习之路(八)创建最小的根文件系统的更多相关文章

  1. 嵌入式Linux驱动学习之路(七)Linux内核启动流程

    编译的内核可能会很大,故这里可以压缩一下.而在内核文件中需要解压,所以就会有一段自解压代码. 在uboot启动内核的时候,调用了函数: thekernel(0,MACH_ID,params_addr ...

  2. 嵌入式Linux驱动学习之路(十八)LCD驱动

    驱动代码: /************************************************************************* > File Name: lcd ...

  3. 嵌入式Linux驱动学习之路(十六)输入子系统

    以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以 ...

  4. 嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖

    在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定 ...

  5. 嵌入式Linux驱动学习之路(十四)按键驱动-同步、互斥、阻塞

    目的:同一个时刻,只能有一个应用程序打开我们的驱动程序. ①原子操作: v = ATOMIC_INIT( i )  定义原子变量v并初始化为i atomic_read(v)        返回原子变量 ...

  6. 嵌入式Linux驱动学习之路(十二)按键驱动-poll机制

    实现的功能是在读取按键信息的时候,如果没有产生按键,则程序休眠在read函数中,利用poll机制,可以在没有退出的情况下让程序自动退出. 下面的程序就是在读取按键信息的时候,如果5000ms内没有按键 ...

  7. 嵌入式Linux驱动学习之路(十一)按键驱动-中断机制

    轮询方式: 和led驱动不同的是在配置IO引脚的时候,把LED的输出引脚换成输入,在read函数中向外发送io的状态.必须由应用程序不断的来查询当前IO口的状态来判断. 中断方式: /* file n ...

  8. 嵌入式Linux驱动学习之路(十)字符设备驱动-my_led

    首先贴上代码: 字符设备驱动代码: /** *file name: led.c */#include <linux/sched.h> #include <linux/signal.h ...

  9. 嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构

    硬件资料: 操作系统:(非虚拟机) zws@z-pc:~$ lsb_release -aNo LSB modules are available.Distributor ID: Ubuntu Desc ...

随机推荐

  1. JavaScript中的各种变量提升(Hoisting)

    首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确.因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升( ...

  2. 学习zepto.js(Hello World)

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. 昨天听说了zepto.js,正好最近也比较闲 ...

  3. ArcGIS Desktop 遇到严重的应用程序错误

    由于项目初验,忙了几个月(感觉忙得并不值),好久都没更新博客了. 一.问题 在关闭ArcMap时,ArcGIS Desktop 遇到严重的应用程序错误.环境是Windows 10,新装的系统.以前出现 ...

  4. RMS问题整理

    1. 客户端提示"102错误"或者"意外错误,请与管理员联系" 解决方法:在确定Office2003已经安装SP3补丁以后请安装KB978551补丁 下载地址: ...

  5. Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端

    Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端 本博客前面博文中利用org.apache.http包中API进行Android客户端HTTP连接的例子 ...

  6. Android 内容提供者的实现

    接着上文<Android 内容提供者简介>进一步实现内容提供者. 每个Content Provider类都使用URI(Universal Resource Identifier,通用资源标 ...

  7. Java 引用

    Java 对象的引用方式有如下四种,这四种方式主要是为了给垃圾回收提供更灵活的操作: 1.强引用,最常见的引用方式,当一个对象被一个或一个以上的引用变量引用时,它处于可达状态,这时不会被垃圾回收器回收 ...

  8. UILabel和NSAttributedString那些事

    注:通常的label用来现实普通的文字.但是,你常常会遇到这样的情况:一段文字中不仅有文字,也有图片,甚至文字中的某段文字与其他的文字的appearance不一致的情况,这样的一段文字就可以称得上是富 ...

  9. 开启Apache mod_rewrite模块完全解答

    启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...

  10. php示例代码之使用mysql_fetch_object函数

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...