从系统外部替换 Linux 内核

从系统外部替换 Linux 内核

有一个特定的 ubuntu 映像(来自 SD 卡)与硬件控制器配合使用。整个映像占用 2 GB,因为卡的大小就是这样。该映像基于旧内核构建。我们需要更换主板,因为旧主板不再可用,而新主板无法与旧内核兼容。最重要的是,不可挽回地(由于更换开发人员时出现一定混乱)映像中的 root 密码丢失了 - 也就是说,以文明的方式从内部替换内核,唉,行不通。问题是:是否有可能 - 我如何 - 更改内核,而不更改系统外部的其余部分,只需用笔记本电脑中现有的映像重写卡上的某些内容?如果不行,则需要重建整个精简和调试的映像,我想避免这种情况。

答案1

首先,我再强调一下不要使用工作副本,而是要制作一个备份副本并在出现严重问题时使用。

这也许不起作用,但这是你最好的选择。

内核依赖 /boot 中的文件来启动。

System.map-4.19.1-1-default
.vmlinuz-4.19.4-1-default.hmac
config-4.19.4-1-default
initrd-4.19.1-1-default
initrd is symlinked to above
symvers-4.19.1-1-default.gz
sysctl.conf-4.19.1-1-default
vmlinux-4.19.1-1-default.gz
vmlinuz symlink to below
vmlinuz-4.19.4-1-default

您需要现有新版本中的所有这些文件,显然大多数文件的名称都包含版本号,并且会根据您使用的内核版本而有所不同。

/lib/modules/ 里面有一系列文件夹,每个文件夹对应一个内核版本。例如:

4.19.4-1-default

需要复制此文件夹中的所有模块。

最后,您的 grub 或 grub2 文件需要修改以指向这个新文件。

  1. 备份您的 SD 卡并使用备份
  2. 如果您的旧主板是非 UEFI,请在新主板上禁用它,否则会出现问题。
  3. 获取另一张 SD 卡/硬盘
  4. 安装您正​​在使用的发行版的较新版本。
  5. 将 /boot 和 /lib/modules/ 复制到操作系统备份的适当位置。如果存在 /usr/lib/bootloader,也应复制过去。
  6. 启动并观察会发生什么。

可能还会有进一步的兼容性问题。最大的危险是过于激进,从 initd 过渡到 systemd 或进行其他重大更改。

我建议找出你使用的发行版的版本,然后只从高 1 个版本开始。如果安装失败,你可以一次前进一个版本。

当您拥有可启动系统时,我建议使用 apt-get 或等以适当的方式进行完整的发行版升级。

相关内容