首页 > 系统相关 >和菜鸟一起学linux之initramfs方式启动

和菜鸟一起学linux之initramfs方式启动

时间:2023-01-15 15:01:40浏览次数:54  
标签:菜鸟 cpio initramfs 编译 vmlinuz 内核 linux rootfs


关于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

4、最后make编译

make vmlinuz.bin

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

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

标签:菜鸟,cpio,initramfs,编译,vmlinuz,内核,linux,rootfs
From: https://blog.51cto.com/u_15940062/6008716

相关文章

  • Linux后台运行
    title:Linux后台运行date:2022-09-0312:51:35tags:-Linuxcategories:-Linux如何后台运行脚本方法1:nohup在执行命令前面加nohup但是CTRL+C就......
  • 和菜鸟一起学linux之常见错误的解决和常用命令
    1、错误提示:make:警告:检测到时钟错误。您的创建可能是不完整的。   解决方法:当前编译目录下,命令行输入:find.-typef-exectouch{}\;2、SSH生成密钥:ssh-keygen;SSH......
  • 初探linux子系统集之写在前言
                           ......
  • 和菜鸟一起学linux内核之初始化init篇
    注:以下大部分内容摘自linux内核编程入门篇和linux内核完全注释      初始化init下只有一个main函数。      首先利用setup.s程序取得的程序参数设置系统的根......
  • linux/windows查看端口被占用情况
    linux下查看端口被占用情况1.可以通过"~$netstat-anp"来查看哪些端口被打开。(注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,2.然后可以通过"~$lsof-i:$POR......
  • 查看linux重启时间方法
    who-b lastreboot last-x linuxlast命令详解功能说明:列出目前与过去登入系统的用户相关信息。语法:last[-adRx][-f<记录文件>][-n<显示列......
  • expect远程ssh连接linux终端
    前提条件,需要安装expect,安装方法请参考​​http://tongzidane.blog.163.com/blog/static/5816589220118161127811/​​#!/usr/bin/expect #设置超时时间为60秒 set......
  • Linux下JDK和Tomcat安装
    下载地址​​​http://www.oracle.com/technetwork/java/javase/downloads/index.html​​​http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-......
  • linux的时间属性
    最近写打包备份文件log的命令,研究了一下时间属性的的含义。做个记录。Linux系统文件有三个主要的时间属性,分别是ctime(changetime,而不是createtime)atime(accessti......
  • linux虚拟机新增磁盘识别方法
    1.viclient登录到vcenter或ESXi,为虚拟机添加一块磁盘在线为虚拟机添加磁盘。2.登录进虚拟机linux系统中执行以下命令,识别新增加的硬盘#echo"---">/sys/clas......