# git clone git://git.denx.de/u-boot; cd u-boot
# make ARCH=sandbox defconfig
# make; ./u-boot
=> printenv
=> help
在 x86_64 上运行 U-Boot,可以测试一些棘手的功能,如 模仿存储设备 的从新分区、基于 TPM 的密钥操作以及 USB 设备热插拔等。U-Boot 沙盒甚至可以在 GDB 调试器下单步履行。应用沙盒进行开辟的速度比将引导法度榜样刷新到电路板上的测试快 10 倍,并且可以应用 Ctrl + C
恢复一个“变砖”的沙盒。
启动内核
设备引导内核
引导法度榜样完成义务后将跳转到已加载到主内存中的内核代码,并开端履行,传递用户指定的任何敕令行选项。内核是什么样的法度榜样呢?用敕令 file /boot/vmlinuz
可以看到它是一个 “bzImage”,意思是一个大年夜的紧缩的镜像。Linux 源代码树包含了一个可以解紧缩这个文件的对象—— extract-vmlinux:
# scripts/extract-vmlinux /boot/vmlinuz-$(uname -r) > vmlinux
# file vmlinux
vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically
linked, stripped
内核是一个 可履行与可链接格局(ELF)的二进制文件,就像 Linux 的用户空间法度榜样一样。这意味着我们可以应用 binutils
包中的敕令,如 readelf
来检查它。比较一下输出,例如:
这两个二进制文件中的段内容大年夜致雷同。
所以内核必须像其他的 Linux ELF 文件一样启动,但用户空间法度榜样是若何启动的呢?在 main()
函数中?并不确切。
# file /bin/date
/bin/date: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
linked, interpreter
推荐阅读
沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!如不雅你善于应用Pandas变换数据、创建特点以及清洗数据等,那么你就可以或许轻松地应用Dask和Numba并行加快你的工作。纯真赶紧度上>>>详细阅读
本文标题:对Linux系统启动过程分析
地址:http://www.17bianji.com/lsqh/40676.html
1/2 1