我正在尝试根据Arch linux wiki编译我自己的内核,并且遇到一个问题,该问题导致mkinitcpio
失败。
作为一些背景知识,我已经采取了这些步骤
make clean && make mrproper
make localmodconfig
来生成.config文件CONFIG_LOCALVERSION=""
in.config文件编辑为CONFIG_LOCALVERSION="gabe"
make
此时,所有内容都会按预期编译。现在,我的理解是,内核将被命名为4.18.0-gabe
,因为命名方案为<kernel-version>-<local-version>
,但在这里似乎并非如此。在接下来的步骤中,运行make modules_install
时,据我所知应该到一个目录,其中包含编译的内核模块,这些内核模块将由/lib/modules
中的内核用于initalram磁盘。创建的文件的名称应与内核的名称相对应,因此在我的情况下,该文件应为4.18.0-gabe
,但是在运行make modules_install
之后,我发现:
[gabe@arch linux]$ make modules_install
...
INSTALL sound/soundcore.ko
DEPMOD 4.18.0-11133-gc1fecabecc35
[gabe@arch linux]$ ls /lib/modules
4.14.65-1-lts 4.18.3-arch1-1-ARCH extramodules-ARCH
4.18.0-11133-gc1fecabecc35 extramodules-4.14-lts
因此,尽管我的localversion设置为make modules_install
,但您仍可以看到4.18.0-11133-gc1fecabecc35
制作了一个名为gabe.
的文件夹,这最终导致mkinitcpio
失败,并显示“不是有效的内核目录”错误,因为它依赖于目录名称来指定可接受的版本号。
为什么会发生这种情况,如何更改它以便make modules_install
添加一个名为4.18.0-gabe
的正确命名的文件夹?
编辑:这是在Virtualbox上运行的Arch的干净版本上