Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

APEI(ACPI Platform Error Interfaces)为硬件平台提供了一种将故障信息传递给OS的方法。APEI扩展了现有的硬件故障上报机制(e.g. Intel MCA, PCIe AER etc),并将他们组合到一起以提供统一的硬件故障上报框架。由于固件离硬件更近,访问硬件设备更为方便,APEI中固件的作用也更为明显,提出了Firmware First机制。 硬件故障源(...
RAS

本文主要讲解为github page搭建的博客申请域名的过程,以及在这个过程中的一些经验之谈。本文主要涉及到以下几个方面: 域名注册商的选择方法 域名申请过程中是否需要实名认证、是否需要进行ICP备案 如何为github page博客配置DNS记录,以便通过新域名可以访问github page 域名申请所谓的域名申请(购买),并不意味着你能够永久地拥有域名,实际上只能够租用一定期限的域名...
blog

编译生成的中间目标文件、可执行文件都是按照特定的目标文件格式进行组织。各个系统的目标文件格式不太一样,如Unix a.out格式、Windows可移植可执行程序(Portable Executable, PE)、MacOS-X使用Mach-O格式。现代Linux/Unix都是用可执行可链接格式(Eexcutable Linkable Format, ELF)。PE和ELF格式都是COFF(Common File Format)格式的变种。

近期重读《程序员的自我修养》总结程序的编译、链接、装载过程。书中的第二章《编译和链接》十分清楚地描述了编译和链接的整体工作,本文在此简要总结,算是一篇读书笔记。

kernel version: 5.18(4b0986a3613c)

本文中的大部分代码段都有代码删除

系统启动过程的最后一个阶段:挂载根文件系统、执行根文件系统中的init程序完成到用户空间的切换。然而根文件系统可能是在不同的硬件设备上,如SCSI硬盘、SATA硬盘、Flash设备等,后续会出现更多的硬件设备;根文件系统可以是xfs、ext4、NFS等不同的文件系统;为了成功挂载根文件系统,内核需要具备相应的设备驱动、文件系统驱动,如果为了兼容所有的根文件系统,将所有相关驱动编译进内核,会增大内核大小,并在实际环境中引入一些无用的驱动。

boot

DEFLATE算法首先通过LZ77算法对数据流压缩,压缩数据流中仅包含literallengthdistance三种类型的数据。

gzip是一种压缩格式也是类Unix上的文件压缩/解压缩软件,通常指GNU计划的实现,此处gzip代表GNU zip。gzip文件格式在RFC 1952 GZIP file format specification version 4.3中标准化,gzip基于DEFLATE算法实现数据压缩,DEFLATE算法在RFC 1951 DEFLATE Compressed Data Format Specification version 1.3中标准化。

无论是Linux还是其他操作系统,开机启动最开始的流程由BIOS完成。当电脑上电后,BIOS首先会初始化BIOS内部状态、外部接口、检测并setup硬件。这个最开始的阶段称为开机自检(POST, Power On Self Test)。随后BIOS进入启动阶段,会检查启动介质,找到bootloader,将其加载至内存并跳转至bootloader执行。
本文以SeaBIOS为例,介绍x86架构下BIOS在启动流程所做的工作。SeaBIOS是16bit x86 BIOS的开源实现,也是qemu和kvm默认的BIOS。

boot

我使用Linux已有8年有余,经常会编写shell脚本进行自动化处理。然而,到目前为止,我依然不能像熟练使用C语言一样编写shell脚本。确实,我的主力编程语言是C语言,仅在做自动化脚本或者编写自动化测试用例的时候才会使用shell。另外一方面,shell脚本的语法的变种太多,例如,if语句在做字符串、数值、文件比较时的判断语句都相差很大;特殊符号多,$#$@$?等等,如果你是第一次接触shell脚本,必然会手足无措,更坑爹的是,这些特殊符号使用的场景相差很大,记忆负担真的大!!还有,shell脚本会依赖太多小程序,正如unix哲学所言:一个工具肩负单一使命,这些程序的各自用途、各自选项差异很大,你根本没有办法一下子就记住所有用法!!!

给社区发送邮件讨论补丁时,选择一个趁手的客户端会极大提高沟通效率。曾经我通过”git send-email + thunderbird”的工具组合进行邮件的发送和读取,thunderbird如同outlook的clone版本,对于使用GUI客户端的用户极为友好。然而大多数内核开发者还是会选用mutt邮件客户端,其可配置性极佳,完全命令行的交互方式对于kernel hacker来说是极为友好的。