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,需要修改用户组,之后便可以编译通过。

  • 相关阅读:
    TensorFlowMNIST数据集逻辑回归处理
    TensorFlow多元线性回归实现
    TensorFlow简单线性回归
    mysql ON DUPLICATE KEY UPDATE
    20200908 morning diary
    LambdaUtil
    数据库SQL自我书写册
    getMyFriendsListFromWeChat()
    MySQL8.*的JSON语法知多少
    Exception in thread "main" java.lang.IllegalArgumentException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token at [Source: UNKNOWN; line: -1, c
  • 原文地址:https://www.cnblogs.com/wuyida/p/6299997.html
Copyright © 2011-2022 走看看