我有一个脚本(在 github 上找到) 自定义编译 3.8 Linux 内核(使用 Xenomai 进行实时编译)。内核编译/安装/运行,但是当我尝试安装图形驱动程序(ATI RADEON 8490 的 fglrx)时,出现以下错误:
/lib/modules/3.8.13.20-xenomai-2.6.3/build/include/generated/uapi/linux/version.h cannot be found on this system.
当我查看此目录 (/lib/modules/3.8.13.20-xenomai-2.6.3/build/) 时,那里什么都没有。然后我在 /lib/modules/3.8.13.20-xenomai-2.6.3 中运行 ls -l,并得到以下构建目录的输出:
build -> /home/yapatel/Dev/rtxi/scripts/linux-3.8.13
构建目录指向的目录作为编译/安装自定义内核的脚本的一部分已被删除,因此该符号链接已失效,这也就解释了为什么我会收到错误。
我正在使用以下命令编译自定义内核:
fakeroot make-kpkg --initrd --append-to-version=-xenomai-$xenomai_version kernel-image kernel-headers modules
然后使用以下命令安装编译后的内核:
sudo dpkg -i linux-image-*.deb
sudo dpkg -i linux-headers*.deb
sudo update-initramfs -c -k $linux_version-xenomai-$xenomai_version
sudo update-grub
现在是我的问题——我理解上面的安装命令是为了处理安装自定义编译内核所需的所有必要部分,但是到我的构建目录的死链接似乎表明我需要手动从以下位置复制文件:
/home/yapatel/Dev/rtxi/scripts/linux-3.8.13
到
/lib/modules/3.8.13.20-xenomai-2.6.3/build/
这看起来像是手动修复,而不是正确的修复。我在自定义内核的编译/安装过程中是否缺少命令?我假设这意味着我的内核模块没有安装?
非常感谢所有建议/帮助!
答案1
您需要编辑脚本以使其在调用时不会删除构建目录(适当修复)或将文件复制到系统(手动修复)。
这些“修复”都与用于编译内核(make)的命令无关。
您可以选择在哪里以及如何编译内核,通常使用主目录中的构建目录并以用户身份构建,但没有理由不能使用系统目录并以 root 身份构建。您可以使用任何您希望的位置进行构建。
答案2
尝试运行make modules -j $number_of_cpus
然后make modules_install -j $number_of_cpus
重建并安装所有模块。检查是否仍然出现错误。