作家
登录

对Linux系统启动过程分析

作者: 来源: 2018-03-13 14:04:18 阅读 我要评论

  1. # git clone git://git.denx.de/u-boot; cd u-boot
  2. # make ARCH=sandbox defconfig
  3. # make; ./u-boot
  4. => printenv
  5. => help

在 x86_64 上运行 U-Boot,可以测试一些棘手的功能,如 模仿存储设备 的从新分区、基于 TPM 的密钥操作以及 USB 设备热插拔等。U-Boot 沙盒甚至可以在 GDB 调试器下单步履行。应用沙盒进行开辟的速度比将引导法度榜样刷新到电路板上的测试快 10 倍,并且可以应用 Ctrl + C 恢复一个“变砖”的沙盒。

启动内核 

设备引导内核

引导法度榜样完成义务后将跳转到已加载到主内存中的内核代码,并开端履行,传递用户指定的任何敕令行选项。内核是什么样的法度榜样呢?用敕令 file /boot/vmlinuz 可以看到它是一个 “bzImage”,意思是一个大年夜的紧缩的镜像。Linux 源代码树包含了一个可以解紧缩这个文件的对象—— extract-vmlinux:

  1. # scripts/extract-vmlinux /boot/vmlinuz-$(uname -r) > vmlinux
  2. # file vmlinux
  3. vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically
  4. linked, stripped

内核是一个 可履行与可链接格局 Executable and Linking Format(ELF)的二进制文件,就像 Linux 的用户空间法度榜样一样。这意味着我们可以应用 binutils 包中的敕令,如 readelf 来检查它。比较一下输出,例如:

这两个二进制文件中的段内容大年夜致雷同。

所以内核必须像其他的 Linux ELF 文件一样启动,但用户空间法度榜样是若何启动的呢?在 main() 函数中?并不确切。

  1. # file /bin/date
  2. /bin/date: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
  3. linked, interpreter

      推荐阅读

      Python数据预处理:使用Dask和Numba并行化加速

    沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!如不雅你善于应用Pandas变换数据、创建特点以及清洗数据等,那么你就可以或许轻松地应用Dask和Numba并行加快你的工作。纯真赶紧度上>>>详细阅读


    本文标题:对Linux系统启动过程分析

    地址:http://www.17bianji.com/lsqh/40676.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)