在 Linux 啟動過程中,最開始加載的程序就是 bootSect.S 文件.
其中第一行是一個include 語句:#include <asm/boot.h>
而當我去查看boot.h的時候,發現它的真正位置在 "include/asm-i386/boot.h" 而不是 "include/ asm/boot.h"
這讓我很不解,查網上資料也沒有解答, 打開makefile文件,仔細看了一下,終于找到原因:
在makefile 中有這么一段:
symlinks:
rm -f include/asm
( cd include ; ln -sf asm-$(ARCH) asm)
@if [ ! -d include/linux/modules ]; then
mkdir include/linux/modules;
fi
很明顯,首先刪除了 asm文件夾,然后 在include 下面做了一個軟連接: ln -sf asm-$(ARCH) asm
這里的ARCH明顯是系統相關的環境變量了,比如在i386機器上就是代表i386了。這樣asm-i386就轉成了asm.