我在安装Gentoo的时候内核使用的是稳定版里的gentoo-sources-3.8.13,后来瞎折腾又启用了测试源(即在/etc/portage/make.conf中添上”ACCEPT_KEYWORDS=”~amd64″”),于是把内核升级到了3.10.3,但是当我准备重新编译内核并启用新内核时,出现了标题所说的错误信息,经过一番Google终于了解了个大概的解决方法,这里记录一下解决过程。
当我进入/usr/src/linux执行”make menuconfig”命令进行内核选项修改时,终端提示”make :*没有规则可以创建目标“menuconfig” 错误”, 出现这个错误的原因我并不清楚,也未就它去调查(目前无心研究这些),所以直接找了个解决方案来应付,经过对这一问题进行Google搜索,终于了解了它的原因所在,按常理,当我们执行”emerge -auDN world”来更新软件之后,如果有新内核被安装,我们会直接执行下面将会提到的操作来启用新内核,然后旧内核就会被抛弃,然后当执行”emerge –depclean”的时候,没用了的旧内核会被删除,但是旧内核的目录会被保留,而如果我们/usr/src/linux仍然与旧内核目录进行链接的话,就会出现这些问题了。
当我看到这个错误之后,我习惯性地执行了”ls -l /usr/src/linux”,然后发现目前使用的仍然是稳定版的内核,新内核并没有使用。于是先执行”cd /usr/src”进入可以执行下面的操作的目录,之后执行”unlink linux”解除/usr/src/linux和/usr/src/linux-3.8.13-gentoo之间的链接关系,再将新内核目录和linux目录链接起来(执行”ln -s linux-3.10.3-gentoo linux”),然后我们需要将linux-3.8.13-gentoo目录里的.config复制到linux-3.10.3-gentoo目录中,这样才能保留原有配置表。最后就可以照旧执行”make menuconfig”(如果需要增加新选项的话)和”make && make modules_install”来编译安装新内核了。至于启用新编译的内核的办法又根据所使用的bootloader的不同有所不同,像我是使用的efi模式引导,所以执行"cp arch/x86_64/boot/bzImage /boot/efi/boot/bootx.efi"就可以了,使用诸如grub的请查阅相关资料。
如果在启用新内核成功之后,我们可以考虑将旧内核的目录从文件系统中删除以节省空间。执行的命令是”rm -r /usr/src/linux-3.8.13-gentoo”。
参考链接:make: *** No rule to make target `menuconfig’. [solved]