你好,我正在运行 gentoo,执行 uname -a 给出了错误的内核版本。
tony@P_P-o ~ $ uname -a
Linux P_P-o 2.6.27-gentoo-r8 #12 SMP PREEMPT Sun Nov 8 19:46:59 PST 2009 i686 Genuine Intel(R) CPU T2060 @ 1.60GHz GenuineIntel GNU/Linux
运行 eix gentoo-sources 显示我安装的版本比该版本更高:
tony@P_P-o ~ $ eix gentoo-sources
[U] sys-kernel/gentoo-sources
Available versions:
(2.6.16-r13) 2.6.16-r13!b!s
(2.6.25-r9) 2.6.25-r9!b!s
(2.6.26-r4) 2.6.26-r4!b!s
(2.6.27-r8) 2.6.27-r8!b!s
(2.6.27-r10) 2.6.27-r10!b!s
(2.6.28-r5) 2.6.28-r5!b!s
(2.6.28-r6) 2.6.28-r6!b!s
(2.6.29-r5) 2.6.29-r5!b!s
(2.6.29-r6) 2.6.29-r6!b!s
(2.6.30) ~2.6.30!b!s
(2.6.30-r3) ~2.6.30-r3!b!s
(2.6.30-r4) 2.6.30-r4!b!s
(2.6.30-r5) 2.6.30-r5!b!s
(2.6.30-r6) 2.6.30-r6!b!s
(2.6.30-r7) 2.6.30-r7!b!s
(2.6.30-r8) 2.6.30-r8!b!s
(2.6.31) ~2.6.31!b!s
(2.6.31-r1) ~2.6.31-r1!b!s
(2.6.31-r2) ~2.6.31-r2!b!s
(2.6.31-r3) ~2.6.31-r3!b!s
(2.6.31-r4) ~2.6.31-r4!b!s
{build symlink ultra1}
Installed versions: 2.6.27-r8(2.6.27-r8)!b!s(07:48:25 PM 06/19/2009)(-build -symlink)
2.6.28-r5(2.6.28-r5)!b!s(12:35:17 PM 06/08/2009)(-build -symlink)
2.6.29-r5(2.6.29-r5)!b!s(07:44:33 PM 06/19/2009)(-build -symlink)
2.6.30-r6(2.6.30-r6)!b!s(11:14:45 PM 10/02/2009)(-build -symlink)
Homepage: http://dev.gentoo.org/~dsd/genpatches
Description: Full sources including the Gentoo patchset for the 2.6 kernel tree
是什么赋予了?
答案1
您需要管理内核符号链接,正如 Mike Nelsen 提到的那样,但 gentoo 提供了一个 eselect 包装器来执行此操作,就像它们允许您在安装多个插槽时管理 gcc/ruby/python/java/rails/opengl/etc 的系统版本一样。
就您而言,内核源代码全部安装完毕(检查/usr/src
后,您将看到每个版本目录,以及指向当前默认版本的符号链接/usr/src/linux
)。通常,您将从符号链接目录进行构建,最好保持该目录为最新目录,因为 Portage 会在此检查需要这些选项的 ebuild 的内核配置选项,等等。
eselect kernel show # will show you the current symlink value, this should match uname -a
eselect kernel list # should show all installed kernel sources
eselect kernel set x # will update the symlink, either by number (from list), or full name
此外,您可以为 gentoo-sources(或您使用 portage 管理的任何其他内核源)设置symlink
USE 标志,/usr/portage/package.use
以便在出现新版本时自动更新符号链接,但是如果是这种情况,您应该注意它并确保在每次出现后构建和安装新内核,这对我来说有点太频繁了,但 YMMV。
注意:此方法仅适用于 portage(或 paludis/pkgcore/等)软件包管理的内核源 - 如果您在 $HOME 或其他地方有一个 git repo,eselect 显然不会选择它 - 这是设计使然,因为您的前沿技术或本地修补的检出通常不适用于系统内核。
答案2
我的猜测是,你安装了较新的源代码(甚至可能构建了它们),但你仍然在从较旧的内核启动。
答案3
您是否正在更新 /usr/src/linux 链接以指向当前源代码?例如,这是我在 gentoo 机器上进行内核升级时通常执行的操作,
# cp /usr/src/linux/.config ~
# cd /usr/src
# rm linux # remove the /usr/src/linux link
# ln -s linux-2.6.30-gentoo-r6 linux # point /usr/src/linux to the latest sources
# cd linux
# cp ~/.config .
# make silentoldconfig # update .config for any new stuff in the kernel
# make && make modules_install
# mount /boot
# make install # install the kernel to /boot and keep a copy of your old kernel in /boot in case
# umount /boot
答案4
您出现了四个不同版本的 gentoo-sources。
尝试卸载所有旧的 gentoo 源,仅保留最新的一个,然后重新编译您的内核。
它有用吗?