Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Items requiring solving to support Ubuntu 20.10 #1616

Closed
3 tasks done
pbatard opened this issue Sep 10, 2020 · 3 comments
Closed
3 tasks done

Items requiring solving to support Ubuntu 20.10 #1616

pbatard opened this issue Sep 10, 2020 · 3 comments
Assignees
Milestone

Comments

@pbatard
Copy link
Owner

pbatard commented Sep 10, 2020

Groovy Gorilla (20.10) is currently planned for release on October 22, so we'll need to release Rufus 3.12 before that date to fix the following:

  • [a8f3c6c] Regression, introduced in 3.11 (in commit 77d3192), that prevents proper GRUB binary parsing to find the GRUB version. → Initial analysis indicates that this could be due to looking for i386-pc as a subdirectory, but getting I386_PC internally, i.e. we may have broken ISO9660 name translation.
  • [e987272] error: symbol 'grub_calloc' not found when using our current GRUB bootloader and booting in BIOS mode. → This appears to be a result of Ubuntu using an updated GRUB 2 bootloader that includes the fixes for GRUB2 UEFI SecureBoot vulnerability 'BootHole' and more specifically this patch. Hopefully, recompiling our GRUB downloadable binaries from latest source should be enough to fix this, though it's very possible that this may introduce a regression with older GRUB modules...
  • [2d272b7] Oh great, the switch of Syslinux to GRUB means our md5sum update doesn't run, which result in a checksum mismatch during boot for drives with persistent images. Will have to fix this.

Also, in a amazing level of short-sightedness, the Ubuntu maintainers have decided to do away with placing the EFI boot loaders on the ISO file system, and instead chose to shove them into /boot/grub/efi.img. How the heck someone came to thinking that this made any shred of sense is absolutely beyond me.

@pbatard pbatard added this to the 3.12 milestone Sep 10, 2020
@pbatard pbatard self-assigned this Sep 10, 2020
pbatard added a commit that referenced this issue Sep 11, 2020
* Commit 77d3192 broke lookup of ISO filenames since iso9660_open()
  enabled the Rock Ridge extensions by default, despite using ISO_EXTENSION_NONE
  for the internal call, and we addressed a FIXME related to this.
* This resulted in Rufus not being able to lookup 'boot/grub/i386-pc/normal.mod' to parse GRUB's
  version, since without Rock Ridge, 'i386-pc/' is unable to match the ISO-9660 'I386_PC/' dir.
* Closes #1573 and addresses part of #1616.
* Also fix a MinGW compilation warning.
@pbatard
Copy link
Owner Author

pbatard commented Sep 12, 2020

Well, the good news is that using a core.img compiled from the latest GRUB source seems to work (though I haven't tested using that against pre-BootHole distros yet). The bad news is that the new core.img is larger than 31.5 KB (32.1 KB now) with all the modules we need to include, which means that GRUB installation is incompatible with "Add fixes for old BIOSes"...

@pbatard
Copy link
Owner Author

pbatard commented Sep 16, 2020

Well, since the Ubuntu folks have not actually switched to using GRUB 2.05, but are using 2.04 + selected patches, I'm going to follow suit and update my 2.04 with the minimum amount of patches I need to make Groovy BIOS-boot, namely:

This has the advantage of keeping GRUB under 31.5 KB (required for Add fixes for old BIOSes) and should ensure that we don't unexpectedly break other 2.04 based distros.

@pbatard pbatard reopened this Oct 4, 2020
@pbatard pbatard closed this as completed in 2d272b7 Oct 5, 2020
@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue if you think you have a related problem or query.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 27, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant