为什么在Linux中操作系统和内核是分开处理的?

The*_*ind 9 updates kernel

当谈到任何 Linux 操作系统时,包括 Ubuntu,人们倾向于区分术语kerneloperating system。这对于 Windows 和 OS X 系列来说是正确的,但为什么在 Linux 社区中如此普遍?有没有办法在不更新操作系统本身的情况下更新操作系统内核?或相反亦然?如果是这样,那怎么会有用呢?

Mel*_*ius 12

整个 GNU/Linux 系统是使用模块化方法构建的。您可以在不接触其他模块的情况下升级(一般替换)单个模块。有问题的模块可以是引导加载程序、内核、shell、命令、桌面环境、GUI 应用程序,等等……

当然,只要你能够正确地管理依赖关系就可以了。在围绕 Ubuntu 的一组发行版中,APT用于自动解决依赖关系。

您可以使用以下命令安装另一个内核版本:

sudo apt install linux-image-<version>
Run Code Online (Sandbox Code Playgroud)

只要 APT 允许,您应该能够重新启动并使用选定版本的内核,无论是通用的、低延迟的等。或者您自己构建内核版本,例如Real-Time Linux,并在您当前的系统中使用它.


Rav*_*ina 5

众所周知,内核是操作系统的重要组成部分,在 GNU/Linux 发行版中,您可以轻松更新内核,而无需触及操作系统的其他部分。然而,我们只是更新了我们操作系统的一部分。

操作系统由内核空间和用户空间两部分组成。

所以是的,如果只有新版本与您当前的用户空间兼容,您就可以在不触及用户空间的情况下更新内核空间。

关于更新用户空间工具,这是另一个肯定的。

当你运行时:

sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

如果有可用的内核更新,您将获得:

The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
Run Code Online (Sandbox Code Playgroud)

所以你只是在更新你的用户空间,当你运行类似的东西时

sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

您正在更新包括内核在内的所有内容。

要将内核仅升级到较新版本,请使用以下内容:

$ apt-cache search "linux-image-[0-9]+.*-generic" | awk '{print $1}' | head -4
linux-image-4.4.0-21-generic
linux-image-4.10.0-14-generic
linux-image-4.10.0-19-generic
linux-image-4.10.0-20-generic
Run Code Online (Sandbox Code Playgroud)

查找较新内核的列表,然后将其安装为新软件包,例如:

sudo apt install linux-image-4.10.0-14-generic
Run Code Online (Sandbox Code Playgroud)

  • 如果有新版本可用,`sudo apt upgrade` 也会升级内核。`sudo apt full-upgrade` 也会删除包,而`asudo apt upgrade` 不会这样做。 (3认同)