在VM上学习嵌入式Linux系统的构建之二--内存文件系统

原创 2007年09月26日 14:18:00

上一篇文章说到了内核编译的问题,这篇文章记录了构造根文件系统的过程。

先大概说一下过程:原先想根据网上一些文章的内容,直接构建一个initrd,从我的redhat中把需要的目录、文件、库考过去,发现在挂在文件系统时出错,折腾了半天也没搞定。后来使用busybox,经过几天挣扎之后,终于看到可爱的concole了 ,下面把过程记录如下。

1、内核编译选项的调整

     1.1 由于一开始总挂不上文件系统,所以在内核配置时,加了几个File System的选项,对具体选项的作用还要研究。 Compressed ROM file system support 、 Virtual  file system support 、/proc  file system support 、/dev  file system support 等等。 

     1.2 如果VM把光驱和磁盘虚拟成 SICI 设备的话,还要选上 SICI support 。

2、建立ext2格式的文件系统印像initrd.img

    2.1 创建一个空文件,将/dev/zero(0字符流)做为initrd.img的输入,块大小为1024,共4M空间。

               dd if=/dev/zero of=/tmp/ramdisk.img bs=1024 count=4000

     2.2 用mke2fs命令来创建一个使用这个空文件的ext2文件系统

              sbin/mke2fs -F -m 0 -b 1024 /tmp/ramdisk.img 40000

     2.3 以loop设备的形式挂载这个文件到/mnt/initrd

              mount  -o loop  /tmp/ramdisk.img /mnt/initrd

3、文件系统的内容

      3.1 创建一些必须的目录     

        mkdir /mnt/initrd/bin

       mkdir /mnt/initrd/sys

       mkdir /mnt/initrd/dev

       mkdir /mnt/initrd/proc  

       mkdir /mnt/initrd/etc

      3.2 创建一些设备文件,直接从redhat拷,注意用 -a 保持所有属性 

                cp -a /dev/console /mnt/initrd/dev

                cp -a /dev/ramdisk /mnt/initrd/dev 

               cp -a /dev/ram0 /mnt/initrd/dev

               cp -a /dev/null /mnt/initrd/dev

              cp -a /dev/tty1 /mnt/initrd/dev 

              cp -a /dev/tty2 /mnt/initrd/dev

     3.3 拷贝busybox 到bin先,建立一些符号连接,注意配置busybox时要选init  ,这里就详细说busybox了。

             cp $busybox_path/busybox ./mnt/initrd/bin

             ln -s busybox ash     

             ln -s busybox mount

             ln -s busybox echo

              ln -s busybox ls 

             ln -s busybox cat 

              ln -s busybox ps

              ln -s busybox init   (初时话程序)

         3.4 建立 etc/init.d/rcS 文件,这是 busybox 默认的 init

                   cat >> /mnt/initrd/etc/init.d/rcS 内容为:                       

                           echo

                           echo "hello alex :)"

                           echo

                  更改权限

                          chmod o+x rcS   

                 在/mnt/initrd 下建立一个到rcS的连接 linuxrc

                       ln -s etc/init.d/rcS linuxrc

          3.5 完成

                      umount /mnt/initrd

                     gzip -9 initrd.img

4、建立iso

        4.1 把 initrd.img.gz 拷贝至 iso 制作目录

        4.2 修改 loadlin 参数

                   loadlin vmlinuz initrd=initrd.img.gz root=/dev/ramdisk

5、搞定,贴张图show一下

很有成就感的说:P

后记

      关于文件系统,可以有很多办法,用busybox 的 make all install 也可以生成。但要能构造一个能用的linux,还有很多路要走,下面还要想办法把文件系统放到VM的虚拟磁盘上、引导程序(lilo、grub)、驱动、gui等等,都能试试。

SoC嵌入式软件架构设计之四:内存空间规划分配

本文继续阐述基于低端控制器CPU的SoC固件架构设计。这一节讲述内存空间的具体规划分配,包括嵌入式固件系统软件层次、程度段组成、物理内存分块设计和具体的程序内存空间分配原则。...
  • yueqian_scut
  • yueqian_scut
  • 2014年05月04日 23:48
  • 2617

文件系统(嵌入式)对比分析

在嵌入式领域,FLASH是一种常用的存储介质,由于其特殊的硬件结构,所以普通的文件系统如ext2,ext3等都不适合在其上使用,于是就出现了专门针对FLASH的文件系统,比较常用的有jffs2,yaf...
  • firstlai
  • firstlai
  • 2016年02月03日 21:43
  • 2867

嵌入式Linux常用文件系统

Linux支持很多文件系统,在选择时应根据应用的功能选择文件系统 内核只认识VFS(虚拟文件系统),不同的文件系统实现的都是和VFS的相互调用,进而通过VFS访问内核 MTD(Memeory ...
  • hisense20112784
  • hisense20112784
  • 2015年07月07日 08:56
  • 382

嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示...
  • coding__madman
  • coding__madman
  • 2016年05月02日 20:33
  • 10512

嵌入式根文件系统比较

嵌入式根文件系统比较 一、嵌入式根文件系统              Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romf...
  • a746742897
  • a746742897
  • 2016年09月28日 10:02
  • 865

嵌入式开发制作最小的linux文件系统

要求:编译器的版本是4.4.6   查看当前交叉编译器的版本:arm-linux-gcc -v   如果不是4.4.6编译器,需要修改一下两个文件:   vim /home/tarena/...
  • a1299600490
  • a1299600490
  • 2016年05月08日 18:46
  • 1500

对嵌入式Linux中的根文件系统的理解和解析

虽然前面已经利用Busybox制作了根文件系统,但是对于根文件系统的作用和普通的文件系统之间的区别还是有点模糊。通过查找资料总结了一 下对根文件系统的理解,也欢迎大家一起讨论。    首先要明...
  • special00
  • special00
  • 2016年04月27日 16:58
  • 2174

(转)物联网这么火爆,存储之家介绍几种嵌入式文件系统

物联网这么火爆,介绍几种嵌入式文件系统 2016年物联网应用越来越受到国内外开发者的关注,一方面说明物联网行业应该具有比较大的潜力,另一方面传统的市场热点正在逐渐趋于成熟和饱和,所有人都期待有一...
  • youdianhai
  • youdianhai
  • 2016年04月07日 23:15
  • 1477

构建最小根文件系统

一、 编写目的 2 二、 构建根文件系统 2 1. 编译busybox 2 2. 移植glibc库 4 3. 构建根文件系统目录 4 三、 总结 5   一、编写目的 本文档用...
  • lshiceman
  • lshiceman
  • 2014年07月18日 13:59
  • 623

嵌入式 详解制作根文件系统以及文件系统中init以及其他文件详解

一、FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls  / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linu...
  • skdkjxy
  • skdkjxy
  • 2014年06月17日 19:46
  • 2953
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在VM上学习嵌入式Linux系统的构建之二--内存文件系统
举报原因:
原因补充:

(最多只允许输入30个字)