uname -a 在 gentoo 中给出了错误版本的内核?

uname -a 在 gentoo 中给出了错误版本的内核?

你好,我正在运行 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 管理的任何其他内核源)设置symlinkUSE 标志,/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 源,仅保留最新的一个,然后重新编译您的内核。

它有用吗?

相关内容