2020–09–05: PinePhone
multi-boot image
I made a further progress on the multi-boot image:
- I extracted all prepared rootfs tarballs to partitions,
- configured p-boot to load kernels provided by each distribution and pass
proper bootargs to them,
- and created p-boot splashscreens for all distros.
The result is:
I have yet to boot test all the distributions. Prior to that, I have to
check whether the distros are not doing something destructive on boot, like
resizing or deleting partitions, etc.
So far my boot.conf
for p-boot looks like this:
#!/bin/sh
#serial="console=ttyS0,115200 earlycon=ns16550a,mmio32,0x01c28000 loglevel=15"
bootargs="cma=256M console=tty1 consoleblank=0 quiet loglevel=1 panic=3 rw rootwait root=PARTUUID=12345678"
dists=/mnt/dists
#/dev/mmcblk0p2: PARTUUID="12345678-02" mobian (f2fs, 5.7 kernel, PP 1.0-1.2)
#/dev/mmcblk0p3: PARTUUID="12345678-03" KDE neon (ext4 only, 5.7 kernel, PP 1.1 only)
#/dev/mmcblk0p5: PARTUUID="12345678-05" arch (f2fs, my 5.9 kernel, , PP 1.0-1.2)
#/dev/mmcblk0p6: PARTUUID="12345678-06" sxmo (ext4 only, 5.7 kernel, PP 1.1, 1.2)
#/dev/mmcblk0p7: PARTUUID="12345678-07" lune (ext4 only, 5.5 kernel, PP 1.1 only)
#/dev/mmcblk0p8: PARTUUID="12345678-08" maemo (ext4 only, 5.6 kernel, PP 1.1 only)
#/dev/mmcblk0p9: PARTUUID="12345678-09" ut (ext4 only, 5.6 kernel, PP 1.1 only)
#/dev/mmcblk0p10: PARTUUID="12345678-0a" sailfish (ext4 only, 5.6 kernel, some custom DTB with partial support for up to PP 1.2)
#/dev/mmcblk0p11: PARTUUID="12345678-0b" pureos (f2fs, 5.8 kernel, PP 1.0-1.2)
zcat $dists/part2/boot/Image.gz > $dists/part2/boot/Image
#zcat $dists/part3/boot/vmlinuz-5.7.0-pine64-g3823929aa > $dists/part3/boot/Image
#zcat $dists/part8/boot/Image.gz > $dists/part8/boot/Image
#zcat $dists/part9/boot/vmlinuz > $dists/part9/boot/Image
cat << EOF
device_id = Multi-Distro Demo Image
no = 0
name = Mobian
atf = fw.bin
dtb = $dists/part2/boot/dtb/allwinner/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part2/boot/Image
initramfs = $dists/part2/boot/initrd.img
bootargs = $bootargs-02 splash plymouth.ignore-serial-consoles vt.global_cursor_default=0
splash = files/mobian.argb
no = 1
name = KDE Neon
atf = fw.bin
dtb = $dists/part3/boot/dtb
linux = $dists/part3/boot/Image
initramfs = $dists/part3/boot/initrd.img-5.7.0-pine64-g3823929aa
bootargs = $bootargs-03 splash
splash = files/neon.argb
no = 2
name = Arch Linux ARM
atf = fw.bin
dtb = $dists/part5/boot/dtbs/allwinner/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part5/boot/Image
initramfs = $dists/part5/boot/initramfs-linux.img
bootargs = $bootargs-05
splash = files/arch.argb
no = 3
name = Sxmo
atf = fw.bin
dtb = $dists/part6/boot/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part6/boot/vmlinuz-postmarketos-allwinner
initramfs = $dists/part6/boot/initramfs-postmarketos-allwinner
bootargs = $bootargs-06 init=/init.sh PMOS_NO_OUTPUT_REDIRECT PMOS_FORCE_PARTITION_RESIZE pmos_root=/dev/mmcblk0p6
splash = files/sxmo.argb
no = 4
name = Lune OS
atf = fw.bin
dtb = $dists/part7/boot/sun50i-a64-pinephone.dtb
linux = $dists/part7/boot/Image
initramfs = $dists/part7/boot/initramfs-uboot-image-pinephone.uboot
bootargs = $bootargs-07 bootmode=normal LUNEOS_NO_OUTPUT_REDIRECT
splash = files/lune.argb
no = 5
name = Maemo Leste
atf = fw.bin
dtb = $dists/part8/boot/allwinner/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part8/boot/Image
bootargs = $bootargs-08 fbcon=rotate:1
splash = files/maemo.argb
no = 6
name = Ubuntu Touch
atf = fw.bin
dtb = $dists/part9/boot/dtb
linux = $dists/part9/boot/Image
initramfs = $dists/part9/boot/initrd.img
bootargs = $bootargs-09 systempart=/dev/mmcblk0p9 devnum=0 logo.nologo vt.global_cursor_default=0
splash = files/ut.argb
no = 7
name = Sailfish
atf = fw.bin
dtb = $dists/part10/boot/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part10/boot/Image
bootargs = $bootargs-0a
splash = files/sailfish.argb
no = 8
name = Pure OS
atf = fw.bin
dtb = $dists/part11/boot/dtb/allwinner/sun50i-a64-pinephone-1.1.dtb
linux = $dists/part11/boot/Image
initramfs = $dists/part11/boot/initrd.img
bootargs = $bootargs-0b init=/sbin/init splash plymouth.ignore-serial-consoles
splash = files/pureos.argb
EOF