zoukankan      html  css  js  c++  java
  • 和菜鸟一起学linux之initramfs方式启动

    关于initramfs

            initramfs在编译内核的同时被编译并与内核连接成一个文件,它被链接到地址__initramfs_start处,与内核同时被加载到ram中。initramfs被解析处理后原始的cpio包(压缩或非压缩)所占的空间(&__initramfs_start- &__initramfs_end)是作为系统的一部分直接保留在系统中,不会被释放掉。

    由于initramfs使用cpio包格式,所以很容易将一个单一的文件、目录、node编译链接到系统中去,这样很简单的系统中使用起来很方便,不需要另外挂接文件系统。

    但是因为cpio包实际是文件、目录、节点的描述语言包,为了描述一个文件、目录、节点,要增加很多额外的描述文字开销,特别是对于目录和节点,本身很小额外添加的描述文字却很多,这样使得cpio包比相应的image文件大很多。

     

    关于内核配置和编译

    内核配置:make menuconfig进入配置

    进入General setup  --->

    选择内核压缩为LZMA压缩

    Kernelcompression mode (LZMA)  --->

    然后选择

    [*]Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/rootfs_dir) Initramfs source file(s)

    其中rootfs_dir就是我们需要压缩的rootfs的路径。

     

    1、  修改压缩包在内存中的存放位置:(mips芯片)

    arch/mips/boot/compressed/calc_vmlinuz_load_addr.c中的

                         vmlinuz_load_addr =0x81a00000;(此地址可根据需要,自己调节)

     

    2、修改rootfs的busybox链接, 在rootfs的目录下执行:

          ln –sbin/busybox init

    3、修改CMDLINE:

    “console=ttySAC0,115200 init/init rw kgdbttySAC0,115200kgdboc=ttySAC0 mem=32M”

    4、最后make编译

    make vmlinuz.bin

    之后在当前目录下就会生成vmlinuz.bin的压缩包。

    5、可能编译会有问题,此时一般是由于rootfs是root权限,用户组也是root,需要修改用户组,之后便可以编译通过。

  • 相关阅读:
    2019.5.1
    拓扑排序(topological sort)
    邻接表+链式前向星
    桶排序+基数排序+计数排序
    奶牛排队
    set
    win10家庭版怎么开启Administrator超级管理员帐户
    Office Online Server 在线编辑Office文档,安装部署
    Centos分区/超过2T的磁盘
    win10照片查看器不能看jpg等格式图片
  • 原文地址:https://www.cnblogs.com/wuyida/p/6299997.html
Copyright © 2011-2022 走看看