构建根文件系统之根文件系统

在构建根文件系统之busybox中,我们已经实现了配置,编译,安装busybox。即那个init程序的来源。

首先在pc看一下,/dev/console  和/dev/null的具体信息:

执行ls /dev/console  /dev/null

crw------- 1 root root 5, 1 6月 27 08:06 /dev/console   //字符设备 ,主设备号为5,次设备号为1
crw-rw-rw- 1 root root 1, 3 6月 27 08:06 /dev/null   //字符设备,主设备号为1,次设备号为3

切换到/work/nfs_root/first_fs目录下,创建/dev/console  /dev/null

mknod  console  c 5 1

mknod  null   c  1 3

这样就完成了console和null设备的创建。

 

接下来再处理/etc/inittab,你如果不去创建的话,它就会使用默认的配置项。在默认的配置项中,有很多都是我们不需要的,因此需要我们自己处理这个配置项。

首先创建dev目录,接下来创建配置文件inittab。加入这条信息:

console ::askfirst:-/bin/sh    //执行时机:askfirst     执行程序或脚本: /bin/sh   标准输入、标准输出、标准错误定位到console中。

 

接下来安装glibc库

在我们制作交叉编译工具链arm-Linux-gcc时,已经生成了glibc库,可以直接使用它来构建根文件系统,本文使用的时光盘里自带的压缩库,是arm-linux-gcc3.4.5版本的glibc库。

如果用arm-linux-gcc是4.3.2的,可不可以使用呢?我试验过:

1、用arm-linux-gcc -4.3.2,然后将其里面的所谓的glibc库拷到了/work/nfs_root/first_fs/lib,这样根文件系统起不来。

2、用arm-linux-gcc -4.3.2,,将arm-linux-gcc-3.4.5-glibc-2.3.6.tar中的所谓的glibc库拷到了/work/nfs_root/first_fs/lib,这样根文件系统起不来。

分析以上情况,是因为glibc库出现了问题。最好索性用的是韦老大制作好的arm-linux-gcc-3.4.5-glibc-2.3.6.tar,成功了。

在开发板上只需要加载器和动态库,构建的根文件系统的目录为/work/nfs_root/first_fs,操作如下:

mkdir  -p  /work/nfs_root/first_fs/lib  

cd  ~/work/gcc-3.4.5-glibc-2.3.6/arm-linux/lib   //每个人存放的位置是不同的。

cp *.so.*  /work/nfs_root/first_fs/lib -d  注意-d表示,如果本来是一个链接文件,让它保持链接文件

如果要创建目录A并创建目录A的子目录B,没有用-p的情况下是mkdir 2次

如果用-p 可以直接创建2个目录 mkdir -p 目录A/子目录B就可以

这样一个最小的文件系统就做好了,怎么把它弄到开发板上呢?需要做一个映像文件。

所谓制作文件系统的映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。当系统启动后挂接这个设备,就可以看到与原来目录一样的内容。

怎样做一个映像文件?制作yaffs2的映像文件

将光盘中的yaffs_source_util_larger_small_page_nand.tar拷贝到~/work目录下

tar  -xjf yaffs_source_util_larger_small_page_nand.tar   解压得到Development_util_ok,

cd Development_util_ok/yaffs2/utils

执行make命令生成mkyaffs2image工具,将其复制到/usr/local/bin目录

cp mkyaffs2image /usr/local/bin

加上可执行权限:chmod  +x  /usr/local/bin/mkyaffs2image

注意:在编译遇到错误时,切换到root权限下试试

cd /work/nfs_root目录

sudo mkyaffs2image first_fs  first_fs.yaffs2

first_fs.yaffs2烧到开发板上,我这里用的是tftp

tftp 30000000  first_fs.yaffs2

nand  erase  root

nand  write.yaffs  30000000  0x260000 $(filesize)

然后重启开发板,你会看到如下的内容:

Please press Enter to activate this console. 

然后按下enter键,你又会看到:

starting pid 763, tty ‘/dev/console‘: ‘bin/sh‘
#

这不就是我们在etc/inittab中写入的东西嘛!

时间: 2024-12-18 11:44:31

构建根文件系统之根文件系统的相关文章

构建最简单的根文件系统

       本文将介绍如何构建一个最简单的根文件系统,并且初步分析内核如何执行第一个内核程序.     挂接根文件系统       在挂接根文件系统之前,需要制作根文件系统.根文件系统里面需要一些基本的命令,目录和设备文件,下面来介绍如何使用busybox来制作根文件系统.       我们都知道,init进程是系统启动后执行的第一个应用程序,根据一般的Linux应用程序配置结构,一个可执行文件通常搭配一个对于的配置文件,例如samba功能对于/etc/samba/smb.conf配置文件,n

Linux 文件系统及 ext2 文件系统

linux 支持的文件系统类型 Ext2: 有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3: Ext2 的加强版,添加了日志的功能.支持 POSIX ACL(Access control Lists,访问控制列表) . Isofs(iso9660): CDROM 文件系统. Sysfs:  基于 ram 的文件系统,起始于 ramfs.用于导出终端用户可以简便使用的内核对象(kernel objects). Procfs: proc 文件系

Linux文件系统详解(文件系统层次、分类、存储结构、存储介质、文件节点inode)

从操作系统的角度详解Linux文件系统层次.文件系统分类.文件系统的存储结构.不同存储介质的区别(RAM.ROM.Flash).存储节点inode. 本文参考:http://blog.chinaunix.net/uid-8698570-id-1763151.html http://www.iteye.com/topic/816268 http://soft.chinabyte.com/os/142/12315142.shtml http://www.ibm.com/developerworks/

hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .

一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包. 2.解压缩SDK包 在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,可以得到一个Hi3531_SDK_Vx.

STP 根桥、根端口、指定端口是如何选举的

学习CCNA过程中,对交换机的根桥.跟端口以及指定端口选举有些迷糊,也度娘了一番,总觉得一部分人解释的不够全面精细.通过仔细研究最终有了自己的理解,分享给大家,如果纰漏,欢迎指正. STP收敛过程: 1. 选根桥 (Root Bridge):根桥选举很简单 要点:比较桥ID,桥ID由2字节优先级和6字节MAC地址组成. a. 先比较桥ID中的优先级,具有最小优先级的,此交换机定为根桥. b. 如果优先级一样,再比较桥ID中的MAC地址,MAC地址最小的确定为跟桥. 2. 所有非根交换机上选根端口

文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解

阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fedora / Redhat 软件包管理指南> 如果您想加载一个分区(文件系统),首先您得确认文件系统的类型,然后才能挂载使用,比如通过mount 加载,或者通过修改 /etc/fstab来开机自动加载:如果您想添加一个新的分区,或者增加一个新的硬盘,您要通过分区工具来添加分区,然后要创建分区的文件系统,

20150517 Linux文件系统与设备文件系统

20150517 Linux文件系统与设备文件系统 2015-05-17 Lover雪儿 注:本文参考书籍:华清远见-<Linux 设备驱动开发详解>第五章,大概内容如下,具体内容还请观看原书. 一.devfs(设备文件系统) devfs(设备文件系统)是由linux2.4内核引入的,具有如下优点: ①可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载时把它删除. ②设备驱动程序可以指定设备名.所有者和权限位,用户空间中人可以修改. ③不需要为设备驱动程序分配主设备号以及处理次设备号

压缩文件系统和加密文件系统

这里面要提到的一点叫做加密方式.相信有些朋友对Alice和Bob这两个名字非常熟悉,这两个名字最早用于IBM出版的一本图书中,用来解释对称加密和非对称加密.对称加密,简单一点说就是加密所使用的密码和解密所使用的密码是同一个密码.非对称呢,加密使用的和解密是不同的密码.这个不同的密码,一个被称为私钥,另一个就是公钥.从名字上面可以看出来,私钥,是无论如何不会公开的,公钥,则是发布出去的. 详细解释一下,熟悉非对称加密的朋友可以跳过这一段.e.g.Alice要发送一份敏感数据给BOB,显然需要加密.

EXT3文件系统误删除导致文件系统中的邮件丢失恢复方法

一.故障描述 由8块盘组成的RAID5, 上层是EXT3文件系统,由于误删除导致文件系统中的邮件丢失 二.镜像磁盘为防止数据恢复过程中由于误操作对原始磁盘造成二次破坏, 使用winhex软件为每块磁盘做镜像, 以后所有的数据恢复操作都在镜像盘上进行, 不会对原始磁盘造成影响镜像结果如下:图一 三.组建RAID通过分析数据在硬盘中分布的规律, 获取RAID类型, RAID条带的大小,以及每块磁盘的顺序.根据分析结果使用UFS组建RAID.结果如下:图二 四.导出目标分区 从组建好的RAID中可以看