使用我构建的测试内核更新 Linux 内核的过程

使用我构建的测试内核更新 Linux 内核的过程

背景

我正在试验的 Star Five VisionFive 2 SBC 上有 Debian linux。 VisionFive 2 是一款 RISC-V SBC,Star Five 提供了一个 Github 存储库,其中包含构建内核所需的所有材料。

构建适合 SD 卡的映像的说明位于构建 StarFive Debian 镜像。实际的源存储库位于Github - star Five-tech/VisionFive2

我已经为 SD 卡构建了一个映像,一切都按照文章中记录的方式运行,VisionFive 2 RISC-V - 构建 Linux 内核,我几个月前写的。我添加了许多其他部分,例如 Apache2 Web 服务器,它们似乎运行良好。

我在 Windows 10 上使用 WSL 和 Ubuntu 作为我的构建环境。

VisionFive 2 使用u-boot加载程序而不是GRUB.我可以使用我购买的 VisionFive 2 捆绑包附带的 USB/TTY 适配器访问 VisionFive 2 的控制台。我正在使用gtkterm连接到/dev/ttyUSB0OrangePi 5 Plus 上 Linux 下的应用程序来托管gtkterm会话,并使用rsh.

需要明确的是,我在 Windows 11 机器上使用 WSL 来构建和传输映像,并且在 OrangePi 5 上使用 Linux 以便能够看到 VisionFive 2 的控制台输出,因为 Windows 11 不支持想要识别 USB/TTY 适配器,但 Linux 可以识别。我确实遇到了一个最初的问题,gtkterm如 Stackoverflow 帖子中所述,如何在 Ubuntu 10.10 (Maverick Meerkat) 上将终端连接到串行转 USB 设备?

问题:以下是测试 Linux 内核的正确过程吗?

我现在想要使用一个测试内核来更新我的 Linux 内核,该测试内核是我根据当前 Linux 内核版本的源代码构建的,其中包含一些更改。我使用了以下过程,但不确定这是否真的是一个好的过程。

  • 编辑linux内核Makefilevi更改SUBLEVEL=0SUBLEVEL=11
  • 重建创建文件的内核linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • 使用该psftp实用程序将文件放入 VisionFive 2 SBC
  • 用于PuTTY打开命令 shell 并导航到我放置.deb文件的文件夹
  • 用过的sudo apt install ./linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • 重新启动 VisionFive 2sudo reboot并祈祷

这看起来效果很好。

后续问题:为了更新 Linux 内核,版本号是否总是需要更改?

结果

现在,当我这样做时,sudo ls -l /boot我会看到以下文件列表:

user@starfive:~$ sudo ls -l /boot
[sudo] password for user:
total 43672
-rwx------ 1 root root 4455561 Oct 30 05:12 System.map-5.15.0-starfive
-rwx------ 1 root root 4461300 Feb 19 14:00 System.map-5.15.11-starfive
-rwx------ 1 root root  213287 Oct 30 05:12 config-5.15.0-starfive
-rwx------ 1 root root  212806 Feb 19 14:00 config-5.15.11-starfive
drwx------ 4 root root    2048 Oct 30 06:33 dtbs
drwx------ 2 root root    2048 Feb 19 14:17 extlinux
-rwx------ 1 root root 9226555 Feb 19 13:50 initrd.img-5.15.0-starfive
-rwx------ 1 root root 9226555 Feb 19 14:17 initrd.img-5.15.11-starfive
-rwx------ 1 root root     406 Oct 30 01:21 uEnv.txt
-rwx------ 1 root root 8478959 Oct 30 05:12 vmlinuz-5.15.0-starfive
-rwx------ 1 root root 8428381 Feb 19 14:00 vmlinuz-5.15.11-starfive
user@starfive:~$

uname -a命令显示5.15.11-starfive而不是5.15.0-starfive

user@starfive:~$ uname -a
Linux starfive 5.15.11-starfive #8 SMP Mon Feb 19 14:00:22 EST 2024 riscv64 GNU/Linux
user@starfive:~$

我更改了Makefilelinux 版本,因为当我使用生成的文件 尝试上述过程时linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb,在 SBC 上列出 的内容/boot显示文件上的时间日期戳vmlinuz-5.15.0-starfive没有更改。我还看到有关System.map-5.15.0-starfive安装过程中无法替换文件的安装错误。

现在看来我的/boot目录中有两个版本的linux内核。

当我重新启动 VisionFive 2 并观察u-boot控制台上显示的日志时,我可以看到在u-boot显示图像列表时暂停了几秒钟,然后才继续默认设置。看起来默认是我的版本,但是我可以选择原始版本,当我这样做并且设备完全启动并且我使用远程 shell 时rsh -l user starfive(VisionFive 2 的主机名starfive在我的局域网上可见),我可以看到表示uname原始图像。

user@starfive:~$ uname -a
Linux starfive 5.15.0-starfive #1 SMP Mon Oct 30 09:12:59 UTC 2023 riscv64 GNU/Linux
user@starfive:~$ 

附录 I:删除测试 linux 版本

我所做的第一步是重新启动 VisionFive 2,并gtkterm在控制台上附加一个会话,当u-boot显示可用图像列表时,我选择了原始图像。然后,当我使用命令验证时,设备从该映像启动uname

使用中提到的过程如何卸载或删除最近安装的软件包我删除了已安装的测试版本。我首先使用apt list "*starfive*"显示 Linux 映像已安装软件包的命令来验证软件包名称。然后我指定了sudo apt remove测试版本的包名称。

我重新启动设备,观察控制台,显示的菜单u-boot不再列出我的测试版本。我没有输入任何允许默认启动的输入。/boot使用进行检查时sudo ls -l /boot,测试构建映像已不存在。当我使用该uname-a命令时,显示原始图像名称及其日期 10 月 30 日。

相关内容