我发现我的 Ubuntu Linux 需要时不时地重新启动,而且比以前需要更频繁地重新启动(也许是因为它更新更多)。
我知道更新内核会强制重新启动,但是在不重新启动的情况下更新内核是否方便且技术上可行,而且很复杂?
是否在技术上无法在系统运行时进行更新?
“系统现在将停机维护……”
我知道 BIOS 更新会强制重新启动,但我不明白为什么这是绝对必要的,或者这是否是为了方便并使其更容易更新。
读一类似的问题,没有令人信服的答案。
我认为它正在运行应该被替换的二进制文件。
答案1
唯一绝对需要重新启动的事情是修改内核。如果程序(或它所依赖的某些库或其他文件)已升级,则任何进程都可以被终止,但内核的情况并非如此。
实际上,有时可以直接在内存中修补 Linux 内核。有几种工具至少在某些情况下有效:克斯普利采,补丁,k移植物… 它们都适用于一些简单情况,但不是全部;它们通常适用于安全更新,因为这些更新不会改变任何内部接口(尤其是数据结构格式),但不适用于内核版本之间的升级。Ubuntu LTS 支持使用 livepatch 修补内核从 16.04 开始,使用 4.4 内核与专有客户。
尽管可以在正在运行的系统上升级内核中没有的任何内容,但仍然需要重新启动受影响的进程。在服务器上,这意味着重新启动使用已更新的可执行文件、库、插件、数据文件、配置或其他依赖项的服务器。在台式机上,这可能意味着让用户注销并重新登录(例如,如果这是图形驱动程序中的错误)。准确确定需要重新启动的内容可能很困难,因为这取决于错误修复的确切性质以及程序的使用方式。 Ubuntu 并没有进行大量的工作来精确地确定这一点,而是谨慎行事,并建议在认为重新启动服务过于繁琐的软件包中重新启动。它的工作方式是,当软件包的安装后(在本例中为升级后)脚本声明需要重新启动时,您会收到重新启动的提示(请参阅我如何知道哪些软件包需要重新启动系统?)。
答案2
据我所知您仍然可以使用老的升级后的系统,但一般都需要重新启动才能体验升级后的系统。
有个例外,如果我没记错的话,有KS接头该技术允许将安全补丁应用到正在运行的内核,而无需重新启动系统。