How to boot Debian installer from PureBoot?

Well, I poked around a bit. As it turns out, when kexec passes the display parameters to the kernel, it needs to supply a parameter called “orig_video_isVGA”. I don’t know why it’s called that, or what all the possible values mean, but at least for x86, this field should seemingly be set to either VIDEO_TYPE_EFI (0x70) or VIDEO_TYPE_VLFB (0x23). kexec tries to automatically detect the correct value, but that automatic detection doesn’t work in PureBoot.

If you apply the following patch to kexec:

--- a/kexec/arch/i386/x86-linux-setup.c
+++ b/kexec/arch/i386/x86-linux-setup.c
@@ -138,7 +138,8 @@
 		goto out;
 	if (-1 == ioctl(fd, FBIOGET_VSCREENINFO, &var))
 		goto out;
-	if (0 == strcmp(fix.id, "VESA VGA")) {
+	if (0 == strcmp(fix.id, "VESA VGA")
+	    || 0 == strcmp(fix.id, "inteldrmfb")) {
 		/* VIDEO_TYPE_VLFB */
 		real_mode->orig_video_isVGA = 0x23;
 	} else if (0 == strcmp(fix.id, "EFI VGA")) {

Then, build a static kexec binary (by running “./configure CC=‘gcc -static’ && make”) and copy it to somewhere accessible to PureBoot, you should then be able to boot the Debian installer by running:

/boot/misc/kexec -l /media/install.amd/vmlinuz --initrd /media/install.amd/initrd.gz
/boot/misc/kexec -e

I don’t know if the above patch is the best solution in general, but hopefully this should make it work correctly for Librem users at least.

7 Likes