标签 · 加载器
2 篇文章,记录每一次探索。
[链接器的世界-实验篇06] 文件里的字节与内存里的字节:数据、BSS 与段权限
2026-10-04
只有代码的程序几乎没有用。本实验加入只读常量、已初始化全局变量、BSS 和 COMMON,用三个权限不同的加载段描述它们,并让内核替我们检查:写只读数据、执行数据段都会收到 SIGSEGV。
阅读全文
[链接器的世界-原理篇06] 从入口到 main:程序启动之前发生了什么
2026-10-04
链接器写完程序头表就退场了,剩下的事归加载器。本文先读 xv6 的 kexec,看一个最小的加载器只用哪几个字段、做哪三道检查;再读 Linux 的 load_elf_binary,看 PT_INTERP、PT_GNU_STACK、基址选择、.bss 的页尾清零与匿名页、按需调页和 brk;然后打印初始进程栈和辅助向量,跟着 musl 的源码从 _start 走到 main,手工复现驱动程序加的五个启动文件,构建一个 static-pie 看 rcrt1.o 怎样自己处理 R_X86_64_RELATIVE;最后在真实内核上改坏 ELF,看加载器怎样守住安全边界。
阅读全文