Linux启动(转)
在 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
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.