这次带来是全网唯一的开源 X86 BIOS 方案,通过它能够在 Latte Panda Mu上引导启动 Ubuntu。
为了在Latte Panda Mu使用SlimBootLoader,还需要额外准备如下硬件:
- 烧写IFWI的硬件工具,比如:SF100烧录器;
- 查看串口Log 的工具,比如:CH343 串口转 USB工具,用于配置安装Ubuntu;SBL 的Shell 没有提供字符或者图形界面,所有的数据都是通过串口进行交互的,所以需要准备串口工具;
- 准备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】。
- 其中需要一些时间,请耐心等待,之后进入下面这个界面。左边是直接在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 下载到,由天杀提供。
参考: