SlimBootLoader 在 LattePanda Mu 上启动 Ubuntu

这次带来是全网唯一的开源 X86 BIOS 方案,通过它能够在 Latte Panda Mu上引导启动 Ubuntu。

为了在Latte Panda Mu使用SlimBootLoader,还需要额外准备如下硬件:

  1. 烧写IFWI的硬件工具,比如:SF100烧录器;
  2. 查看串口Log 的工具,比如:CH343 串口转 USB工具,用于配置安装Ubuntu;SBL 的Shell 没有提供字符或者图形界面,所有的数据都是通过串口进行交互的,所以需要准备串口工具;
  3. 准备2个U盘,一个用于制作 Ubuntu安装盘,我这边使用64GB 的金邦U盘,使用DiskGuinus格式化为 FAT32(注意不要使用 exFat)。将 Ubuntu 解压后全部放入 U盘根目录即可;另外U盘一个用于制作引导脚本。

第一步,生成能够启动的 Latte Panda Mu 的 IFWI。根据【参考1】,配置编译环境,首先确保能够编译通过 QEMU。

a.编译 BIOS 代码:

Python BuildLoader.py build adln

b.生成IFWI,这里没有使用 mFIT 而是直接使用代码替换原代码中的 BIOS Region。

python Platform/AlderlakeBoardPkg/Script/StitchLoader.py -i LattePanda.bin -s Outputs/adln/SlimBootloader.bin -o LattePanda_ifwi.bin -p 0xAA000007

上述的命令中,LattePanda.bin 是DFRobot 提供的原始的IFWI,其中的BIOS是AMI CodeBase;SlimBootloader.bin 是前面从 SBL Build出来的BIOS;最后的LattePanda_ifwi.bin就是生成的新的 IFWI。

d.关机状态下,将USB 转串口工具连接到LattePanda Mu 的PCH UART0 上

c.使用 SF100或者其他烧录器将LattePanda_ifwi.bin烧录到 LattePanda Mu上

d.启动LattePanda Mu后,会很快完成启动显示SBL Logo。 这时候 SBL 并不会从屏幕和键盘进行交互,而是通过串口。在另外一台电脑上打开串口工具即可看到一个文本的Shell界面,输入 boot 命令,然后调整从USB 设备启动例如:

至此,Firmware 方面的准备已经完成。

第二步,安装 Ubuntu 以及设定【参考2】。

  1. 其中需要一些时间,请耐心等待,之后进入下面这个界面。左边是直接在U盘提供的Live Linux 中工作,右边是进行安装,这里需要选择左侧按钮“Try Ubuntu”

从左上角的  Activities 打开一个 Terminal

e.使用 lsblk列出当前的设备,LattePanda Mu 内置了 eMMC,这里是mmcblk0设备

c.使用 sudo disk /dev/mmcblk0擦除硬盘,命令如下:

sudo gdisk /dev/mmcblk0

x

z

y

y

d. 创建GPT分区

sudo gdisk /dev/mmcblk0

o

y

w

y

e.接下来即可进行Ubuntu安装了

f.分区需要特别处理,划分出一个500MB 的FAT32分区用于引导

g.剩余容量减去4GB 左右,设定为  Ext4 分区

h.最后创建一个 4GB 的分区作为  SWAP 分区

i.接下来都选择 Continue

j.安装结束后,选择 Continue Testing

k.接下来使用 lsblk

l.输入如下命令:

Mkdir root
Sudo mount /dev/mmcblk0  root/

m.插入另外的U盘其中放入三个脚本以及内容如下的 cmdline.txt

echo "root=/dev/ mmcblk0  ro quiet splash" > cmdline.txt

n.运行如下批处理(其中的PEM文件来自编译SBL的代码中 )。

python3 GenContainer.py create -cl CMDL:cmdline.txt KRNL:./root/boot/vmlinuz-<kernel-version> INRD:./root/boot/initrd.img-<kernel-version> -k ./SblKeys/OS1_TestKey_Priv_RSA3072.pem -a RSA3072_PKCS1_SHA2_384 -t CLASSIC -o sbl_os
sudo cp sbl_os ./root/boot
sudo umount ./root

这里提供一个下载方便直接测试:

o.最终,拔掉U盘,即可启动

上述操作的完整视频:

这里只是简单的第一步,自行编译BIOS并且启动了X86的 Ubuntu,很多功能还没有调试,可能在使用中遇到问题(比如, X4 PCIE 支持, Audio 的支持)。如果你对性能和体积有一些要求,或者是对于BIOS定制有一些特别要求,不妨考虑 DFRobot推出的 LattePanda MU,它由一块核心板以及底板构成,厂家提供了电路图以及对应接口,可以很方便的实现定制。

本文提到的代码可以在 https://gitee.com/willok/slimbootloader 下载到,由天杀提供。

参考:

  1. https://www.lab-z.com/sblb/
  2. https://slimbootloader.github.io/how-tos/boot-ubuntu.html#setup-spn-os-container-boot