zoukankan      html  css  js  c++  java
  • initial ram filesystem

    1 制作最简单的initramfs

    1.1 创建init

    #include <stdio.h>

    int main()

    {

        printf (" ");

        printf ("hello world from %s! ", __FILE__);

        while (1) {}

        return 0;

    }

    gcc -static myinit.c -l myinit

    1.2 创建initramfs.cpio

    mkdir initramfs

    mv myinit initramfs/init

    find . -print0 | cpio --null -ov --format=newc | gzip -9 > initramfs.cpio

    2 创建shell脚本的init

    2.1 使用busybox搭建shell运行的环境

    第一步,下载busybox源码

    第二步,进入目录make menuconfig,选择Build Busybox as a static library

    第三步,make

    第四步,make install,将会在该目录下生成_install目录。

    第五步,将_install目录下的文件都拷贝到1中的initramfs目录下,并且删除linuxrc

    第六步,shell init的编写

        #! /bin/sh

        echo "hello world "

        exec /bin/sh

    3 initramfs加载进内存的两种方式

    第一种,将initramfs直接嵌入到linux kernel中,在kernel中用__initramfs_start和__initramfs_size来获取它,然后直接unpack;

    第二种,将initramfs生成一个单独的文件,在boot loader的配置文件中告诉boot loader,让它加载进内存,然后boot loader通过initrd_start和initrd_end参数来告诉内核initramfs在内存中的位置,然后unpack。

  • 相关阅读:
    DS博客作业03--树
    DS博客作业02--栈和队列
    数据结构——线性表
    结构体
    C博客作业05--指针
    C语言博客作业04--数组
    面向对象设计大作业第二阶段:图书馆系统
    Java程序设计-有理数类的设计
    DS博客作业05-查找
    DS博客作业04-图
  • 原文地址:https://www.cnblogs.com/hustdc/p/8144313.html
Copyright © 2011-2022 走看看