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。

  • 相关阅读:
    C#如何防止程序多次运行的技巧
    C#导出Excel按照指定格式设置单元格属性值
    js前台遍历后台返回的Datatable数据
    Datatable数据分组
    DataTable 详解(转)
    遍历Datatable
    DataTable转Json
    键值集合List转换成datatable
    DataTable转换成实体
    泛型集合与DataSet相互转换
  • 原文地址:https://www.cnblogs.com/hustdc/p/8144313.html
Copyright © 2011-2022 走看看