zoukankan      html  css  js  c++  java
  • 为linux建立最小的根文件系统

    在编译内核时候,可以指定一个文件夹作为内核启动时候的根文件系统,linux中管这个文件系统叫做initramfs。

    具体做法如下(以i386为例)

    1.下载内核文件

      wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2

    2.解压内核

       bzip2 -d linux-2.6.26.tar.bz2  生成一个linux-2.6.26.tar文件,然后

       tar xvf linux-2.6.26.tar 

       解压后,将有个linux-2.6.26文件夹存在

    3.准备一个iniramfs文件系统的文件夹

      在linux-2.6.26文件夹下建立一个文件夹 myinitramfs

       写一个测试用的hello world,起名为hello.c,如下:

      #include <stdio.h>

      #include <unistd.h>

      int main(int argc,char *argv[])

      {

         int i = 0;

         while (1) {

          printf("hello world (%d)\n",i);

         }

        return 0;

       }

      编译  gcc -static -o init hello.c

      把init拷贝到myinitramfs文件夹下。

      cp init myinitramfs/

      由于需要显示文字,还需要在文件夹下准备console设备文件。

      mkdir myinitramfs/dev

      cp -a /dev/console myinitramfs/

    4.编译内核

       在linux-2.6.26文件下下,执行make help。

       将看到很多帮助信息,其中有一项是 i386_defconfig

       执行 make i386_defconfig,将生成一个.config文件。

       为了把之前准备好的文件夹添加到内核配置文件中,还需要重新配置下config文件

       make config

        在 General Setup --->

        Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD) [Y/n/?]

         Initramfs source file(s) (INITRAMFS_SOURCE) [myinitramfs]

       处,输入准备好的文件夹.

        配置好后,在.config文件中会有如下一条定义

       CONFIG_INITRAMFS_SOURCE="myinitramfs"

       保存.config

       make 编译内核

    5.用qemu测试内核和initramfs

       qemu -kernel  linux-2.6.26/arch/i386/boot/bzImage  -initrd linux-2.6.26/usr/initramfs_data.cpio.gz  /dev/zero

       initramfs_data.cpio.gz 这个文件是内核自动生成的,具体名字可能不同的系统或者内核有差异,但是后缀应该是.cpio.gz

  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/top5/p/1630073.html
Copyright © 2011-2022 走看看