1. 内核镜像文件

1.1. vmlinux

vmlinux是elf(Excutable And Linkable),即可执行文件。里面含有调试信息,可用于调试,所以占有空间较大。gcc编译连接之后直接生成vmlinux文件。

1.2. Image

efl文件含有调试信息,太占空间了,gcc提供了objcopy工具,可以将elf文件中的调试信息去除,只留下可执行指令的二进制指令。

1.3. zImage

Image文件依然比较大,此时可以使用gzip来压缩Image文件得到zImage文件。引导文件在加载zImage文件之后,会利用gzip进行解压,然后执行相关指令。

1.4. bzImage

gzip的压缩率不太优秀,bzImage是一种采用更高压缩比的算法处理Image文件之后得到的文件。
在编译内核时,直接使用make bzImage即可以编译连接生成vmlinux文件,然后objcopy转换为Image文件,再压缩为zbImage文件。一般情况下均使用bzImage文件。ubuntu中会用vmlinuz来作为bzImage文件的后缀。

1.5. uImage

uImage文件是专为uboot准备的镜像文件格式,它会在zImage文件前面加上一个64byte的信息头,用来标识镜像文件的类型,生成时间,加载启动地址,文件有效长度等信息。一般使用make uImage生成。

1.6. ko

Linux内核可以编译为一个elf文件,直接被引导程序加载支行。但是如果只是想修改内核其中的一个功能,就必须编译整个内核代码,非常耗时。为此,Linux整个内核也是一个主elf文件,加上其他这么多动态库文件。内核的动态库文件即ko文件。一般存放在lib\modules中对应的内核目录中。

1.7. initrd

内核启动前的初始化执行文件,在内核真正启动前加载好一些常用的驱动代码。

1.8. System.map

内核的符号文件,供一些内核附带的工具使用。相当于内核的一个接口导出文件,对应函数符号与函数地址,供外部工具调用。

2. Linux的启动过程

2.1. Bios

Bios会根据设置的Boot优先顺序去读取指定的存储设备。存储设备的开始存放着MBR,MBR上记录着一段启动代码,会去存储设备指定位置读取内容。早期的设备是bios+MBR,此方式比较受限,不够灵活。新的电脑葳都采用UEFI+GPT,支持更大的容量,更多的逻辑分区数。

2.2. grub

MBR/GPT上存储着grub代码,用以引导具体启动哪个操作系统。是一种常见的Bootloader程序。grub会将initrd或vmlinz文件加载到ram指定位置上。

2.3. initrd

在加载操作系统内核代码之前,grub会先加载initrd文件,即Initiative RAM dis。initrd主要完成磁盘和网卡等的驱动挂载,这样才内核直接启动之后,才能去访问硬盘或网络来完成进一步的启动。如果要增加自定义驱动,需要修改此文件。

2.3. systemd

systemd,system daemon,系统守护进程,Linux系统的第1个进程,PID为1。systemd可以管理系统所有资源。早期的1号进程是sysvinit,其启动完整内核的过程是顺序的,这样启动会比较慢。而systemd则是尽量并行启动其他进程,这样系统启动会更快。传统的sysvinit会启动很多比较少用到的进程,而systemd则是动态启动其他进程,当需要的时候才启动其他进程。另外systemd还动态挂载挂载点,访问到的时候才挂载。systemd在启动完所有守护进程之后,开始启动6个控制台终端,其中有命令行终端和图形窗口终端。可以用Alt+Fn进行切换。

Service unit:系统服务
Target unit:多个Unit构成的一个组
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:文件或路径
Scope Unit:不是由Systemd启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd快照,可以切回某个快照
Socket Unit:进程间通信的socket
Swap Unit:swap文件
Timer Unit:定时器

Linux内核开发——内核镜像文件及启动过程相关推荐

  1. linux找不到镜像文件,为什么启动u盘找不到镜像文件_u盘启动找不到映像文件的解决方法...

    现在很多人都喜欢用u盘装系统,可是却有人发现u盘启动找不到iso镜像文件,pe装系统找不到镜像文件是怎么回事呢?相信很多人都遇到过这种情况,那么为什么启动u盘找不到镜像文件呢?其实这是因为U盘只是制作 ...

  2. Linux驱动开发—内核I2C驱动详解

    Linux驱动开发--内核I2C驱动 I2C驱动文件结构 I2C数据传输过程 i2c_transfer i2c_msg I2C通讯常用的接口函数(老版本) 快速读写接口函数:(连续读写) 常用的读操作 ...

  3. 使用mkiso向服务器传文件,Linux mkisofs 创建光盘镜像文件(Linux指令学习笔记)

    mkisofs命令 创建光盘文件的系统的命令是mkisofs.光盘系统有多种格式,利用Linux系统提供的光盘文件系统创建 命令mkisofs,可以创建多种iso9660文件系统. 我们一般不用mki ...

  4. linux 加载ISO镜像文件

    linux 加载ISO镜像文件 举例: mount -oloop update-ucs-20140506.iso /media

  5. linux系统做成iso镜像文件,如何在Linux系统中制作可启动img/iso镜像文件

    img/iso文件是镜像文件,在Linux系统操作中有时需要制作镜像文件,那么制作镜像文件的方法有哪些呢?下面小编就给大家介绍下如何下Linux下制作可启动img/iso文件. 制作镜像文件有三种方法 ...

  6. linux系统运行iso,linux可以加载iso镜像文件到启动项吗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 楼主的需求描述不清,不作评述.只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能 未读过grub1/2的源 ...

  7. linux如何加载镜像,linux可以加载iso镜像文件到启动项吗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 楼主的需求描述不清,不作评述.只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能 未读过grub1/2的源 ...

  8. linux挂载iso镜像进系统,linux可以加载iso镜像文件到启动项吗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 楼主的需求描述不清,不作评述.只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能 未读过grub1/2的源 ...

  9. linux 执行iso 文件,linux可以加载iso镜像文件到启动项吗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 楼主的需求描述不清,不作评述.只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能 未读过grub1/2的源 ...

最新文章

  1. EdgeConneX公司在都柏林数据中心园区新建数据中心
  2. PHP的学习--解析URL
  3. [读者调查]新增一个读者调查!
  4. 为EasyUI 的Tab 标签添加右键菜单
  5. 基于Arduino和Blynk平台的远程控制智能小车
  6. nyoj244 16进制的简单运算
  7. servelet 实现Post接口访问
  8. matplotlib.pyplot中API介绍
  9. php高级编程 薛忠胜_2019年,最值得学习的编程语言是?
  10. nginx 过滤post报文 防火墙_详解nginx限制IP恶意调用短信接口处理方法
  11. 视频实现blob加密
  12. 系统蓝屏日志DMP文件分析工具WinDbg及教程
  13. 控制理论个人学习笔记-非线性系统理论
  14. python鼠标点击脚本_python模拟鼠标点击脚本
  15. 3DMAX贴图材质免费网站
  16. 新疆上半年工业品价格总水平创十七年新低
  17. android7.1索尼,Xperia 1
  18. Dialog常用写法
  19. 爆笑笑话集锦,亲们,笑喷你
  20. localparam,parameter,define区别

热门文章

  1. 大一计算机基础ppt练习题,大学计算机基础练习题.ppt
  2. 华为认证的哪个方向最好?
  3. nvue 怎么布局
  4. 8位单片机九齐NY8A054E
  5. 计算机 国际顶尖级会议排名,计算机学科国际会议排名.doc
  6. 书法 | 从零学硬笔,我的三天成长路
  7. 2018全国数学建模总结
  8. JAVA设计模式什么鬼(责任链)——作者:凸凹里歐
  9. cs/bs 的区别与作用
  10. Java开发者XML基础(一)