我正在尝试按照Silberschatz,Galvin和Gagne所着的Operating System Concepts书中给出的项目部分来构建一个内核作为业余爱好项目。该书指出:
最近版本Linux内核的系统调用号 列在/usr/src/linux-2.x/include/asm-i386/unistd.h中。
但我找不到这个目录。没有像linux-2.x
这样的目录;所有都是linux-3.x
的形式。
答案 0 :(得分:1)
这些标题现在自动生成,其表格例如:linux-4.4.5/arch/x86/entry/syscalls/
。根据分发情况,您可能需要单独安装内核头文件,例如:使用Ubuntu(数据包linux-headers-$VERSION
。版本必须适合内核版本!)。我发现它们安装在/usr/src/linux-headers-3.13.0-37-generic/arch/x86/include/generated/asm/
(Linux Mint基于Ubuntu)。那里的标题包含在unistd.h
中的常规/usr/src/linux-headers-3.16.0-37/arch/x86/include/asm/unistd.h
中(同样适用于x86)。 (内核的实际版本可能会有所不同)。
从2011年8月开始,主要版本2的最后一个内核是2.6.39.4。您可以尝试它,但它不会比旧的Pentium更先进的硬件上启动。如果你有这样一台旧机器或者拥有足够马力的机器来运行虚拟奔腾机器 - 那就去吧。但我建议改为升级你的书。
如果你想知道为什么你(和我)有一个版本3而不是最新版本4.9:如果你的硬件运行它,它没有严重的安全相关错误你不需要任何东西在最新的内核中,然后使用你的发行版给你的那个,他们知道他们在做什么(他大胆地说)。