-
Notifications
You must be signed in to change notification settings - Fork 159
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
feat(storage): add option to explicitly omit the bootloader installation #2126
base: main
Are you sure you want to change the base?
Conversation
Hi @aamkye , thanks for the PR. I have to admit to being a bit torn about this one. On one hand it's interesting that we're able to have an alternate boot system with so small of changes, and I want to be able to enable expert users to run this sort of experiment. On the other hand, it creates a foot-gun for autoinstall users who are intending to install grub but not quite configuring the storage config in the needed manner. It is a deliberate feature for Subiquity that we don't allow the install to proceed unless we see a path for how the target system is going to be able to boot, and this breaks that feature. The currently failing unit tests were written with that expectation in mind. By coincidence there is some ongoing work in curtin to relax the assumption of grub. Let me think on this one a bit. Again, I want to enable this feature you have in mind, but want to do so without making it seem like someone's manual partitioning config is valid when it isn't. |
@dbungert, thanks for an additional perspective, it's always valuable to look at the problem and solutions from different angles. Playing with arguments that have default values, and making them explicit However, I've tried to align to what you have said, and maybe adding an extra parameter to the disk could be accepted: autoinstall:
storage:
config:
- {type: disk, id: d1, skip_bootloader=true} or on the other hand, the EXPERIMENTAL block in the storage section: autoinstall:
storage:
# During tests
experimental:
skip_bootloader: true
# After tests
skip_bootloader: true
config:
- {type: disk, id: d1} Please let me know what do you think about it. |
I like your
code along these lines should do it
I don't however want to offer outside of Normally when autoinstall changes are done I request documentation changes, however I specifically don't want documentation on anything under |
Okay, some action plan would be appreciated. But let's summarize (from my POV):
Is that correct @dbungert? From my side, I could offer to make necessary changes in Subiquity. However, some documentation related to building custom images from scratch with custom Subiquity Snap might be needed. |
@aamkye While I've mentioned potential curtin changes, I'm not asking you to do those curtin changes. I'm only trying to imagine what an eventual non-experimental integration might look like, and leave room for that. So a step 1 for now just relaxing the bootable check if opted in by an autoinstall flag is fine and allows that experimentation.
Nothing needs to be waited on here.
We're looking at main branch, so this would appear in Ubuntu 25.04, and earlier releases can opt-in to that branch for testing purposes.
It is a bit of a challenge to actually test changes in an ISO, but we do have some tools that can help. The easiest to get going is |
While playing with Subiquity, I've found quite an extraordinary edge-case, there is basically no way of purposely omitting the bootloader installation (grub). And while the intention of having it in 99/100 cases is solid, it seems like an exception from this behavior could be appreciated by the ZFS community.
Let's take a look at this particular example:
ZFS Boot Manager handles it all, regarding booting the actual system. All partitions and disks have
grub_device: false
which should be interpreted by Curtin asgrub.install_devices: []
. The only missing part is the logic in this statement - which blocks the installation due to the missing bootloader. And having in mind that the grub part is not needed in this case, it should be a possible to skip the grub installation part.The skip should be possible by enlisting all disks with
grub_device: false
and having the following logic implemented: