u-boot 如何在我的 ARM Chromebook 上链接“grub”并启动主线内核

u-boot 如何在我的 ARM Chromebook 上链接“grub”并启动主线内核

我想在我的旧 ARM Chromebook 笔记本电脑上启用 KVM 虚拟化,该笔记本电脑基于 Exynos5250 Arm 32 位 cpu 又名 Snow,型号为 xe303c12。我做的第一件事是将下面的图像直接添加到 SD 卡上:

https://github.com/hexdump0815/imagebuilder/releases/download/220619-01/chromebook_snow-armv7l-jammy.img.gz

它很有魅力,但是 kvm 被禁用了。因此,我开始寻找一个好的文档来了解如何启用 kvm,我发现了这个:

http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/

我已按照所有说明进行操作,并且它有效,但仅适用于 Ubuntu 13.04 和 14.04。更多升级的ubuntu版本会带来很多问题并且无法运行。

所以,我想到了一个新的想法。如何按照教程中的说明在第一个分区上安装虚拟开放系统“未经验证的 u-boot”,并且,我可以将 grub 与安装的内核链接起来,而不是在原始 u-boot 之后启动另一个 u-boot由“hexdump0815”创建的 ubuntu jammy iso 映像?老实说我不确定hexdump0815是否使用了grub,但稍后我会解释这一点。

无论如何,我通过阅读这里得到了这个想法:

如何安装 grub 引导加载程序作为第二阶段引导加载程序

所以,现在,我要解释一下我的弗兰肯斯坦 SD 卡上的分区内容是什么。

1) /dev/sdh1 = 未知 = 16 MB。我通过执行以下操作创建了此分区:

$ dd if=nv_uboot-snow.kpart of=/dev/sdh1

我在哪里获得文件 nv_uboot-snow.kpart ?从这里 :

http://www.virtualopensystems.com/downloads/guides/kvm_on_chromebook/nv_u-boot-snow.kpart

2) /dev/sdh2 = 未知 = 16 MB。该分区是通过执行以下脚本创建的:

$ ./scripts/sdcard.sh /dev/sdh

3) /dev/sdh3 = ext2 = 启动

在分区 /dev/sdh3 内,我复制了以下文件和文件夹(取自 hexdump0815“chromebook_snow-armv7l-jammy.img.gz”文件:

a) dtb-5.18.1-stb-cbe+ = 目录

b) extlinux = 目录

c) 额外 = 目录

d) config.5.18.1-stb-cbe+ :文件

e) initrd.img-5.18.1-stb-cbe+ :文件

f) System.map-5.18.1-stb-cbe+ :文件

g) vmlinux.kpart-5.18.1-stb-cbe+:文件

h) zImage-5.18.1-stb.cbe+:文件

在目录“dtb-5.18.1-stb-cbe+”内有以下文件:

a) exynos5250-snow.dtb

b) exynos5250-snow-rev5.dtb

c) exynos5250-spring.dtb

在“extlinux”目录中,有以下文件:

a) extlinux.conf :包含以下内容:

TIMEOUT 30

DEFAULT linux-snow-rev4

MENU TITLE snow chromebook boot options

# rev4 snow chromebook
LABEL linux-snow-rev4
      MENU LABEL linux rev4 snow
      LINUX ../zImage-5.18.1-stb-cbe+
      INITRD ../initrd.img-5.18.1-stb-cbe+
      FDT ../dtb-5.18.1-stb-cbe+/exynos5250-snow.dtb
      APPEND console=tty1 root=LABEL=rootpart ro rootwait net.ifnames=0 ipv6.disable=1 fsck.repair=yes noresume

# rev5 snow chromebook
LABEL linux-snow-rev5
      MENU LABEL linux rev5 snow
      LINUX ../zImage-5.18.1-stb-cbe+
      INITRD ../initrd.img-5.18.1-stb-cbe+
      FDT ../dtb-5.18.1-stb-cbe+/exynos5250-snow-rev5.dtb
      APPEND console=tty1 root=LABEL=rootpart ro rootwait net.ifnames=0 ipv6.disable=1 fsck.repair=yes noresume

# spring chromebook - untested
LABEL linux-spring
      MENU LABEL linux spring
      LINUX ../zImage-5.18.1-stb-cbe+
      INITRD ../initrd.img-5.18.1-stb-cbe+
      # rev4 snow chromebook
      FDT ../dtb-5.18.1-stb-cbe+/exynos5250-spring.dtb
      APPEND console=tty1 root=LABEL=rootpart ro rootwait net.ifnames=0 ipv6.disable=1 fsck.repair=yes noresume

在额外的目录中有以下文件:

a) 内核-chromebook_snow-legacy.tar.gz

b) uboot.kpart.cbe-snow

c) uboot.kpart.cbe-snow-alternative

d) uboot.kpart.cbe-spring

4) /dev/sdh4 :在这里我复制了 hexdump0818 准备的 jammy 用户区的所有文件。

就这样。我想做的是,是否以及如何使用 grub 或任何能够启动 hexdump0815 jammy iso 映像的机制来链接加载安装在分区 /dev/sdh1 上的“未经验证的 u-boot”。

正如我重复的那样,“未经验证的 u-boot”是由名为“build.sh”的脚本生成的,该脚本存储在 u-boot/scripts 目录中。如果我想做的事情是不可能的,你能向我解释一下如何在我的 chromebook 手臂上启用 kvm,使用最新的内核吗?我已经知道内核 5.7 上已经不再支持 ARM 32 上的 kvm,但对我来说使用低于 5.7 的内核是可以的。我已经为这个项目工作了好几个月了。我希望看到一些进展。谢谢。

PS:前几天我成功编译了内核版本。 5.4.244,启用所有 kvm 标志和 exynos 5250-snow.dtb 文件。

相关内容