hi, i use ventoy as bootloader on my computer, then use configfile (grub command) to load nixos grub menu. it is succes, i can enter to nixos grub menu from ventoy.
my problem is, with that schema i cant use OS prober on nixos. help me to create the configuration.nix
this is my configuration.nix
boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev"; # i use ventoy bootloader
boot.loader.grub.useOSProber = true;
and this is the error message when i rebuild:
[root@nixos:/home/ramuni]# nixos-rebuild boot
building Nix...
building the system configuration...
this derivation will be built:
/nix/store/c5ckdm78p289a05dazk6q523ald0v234-nixos-system-nixos-23.05.3427.e5f018cf150e.drv
building '/nix/store/c5ckdm78p289a05dazk6q523ald0v234-nixos-system-nixos-23.05.3427.e5f018cf150e.drv'...
updating GRUB 2 menu...
/nix/store/8fv91097mbh5049i9rglc73dx6kjg3qk-bash-5.2-p15/bin/bash: line 1: /etc/grub.d/30_os-prober: No such file or directory
my nixos version is NixOS 23.05.3427.e5f018cf150e
my computer only support MBR bootloader(no uefi)
I have many questions. Why do you
a) feel the need to use Ventoy on a desktop drive (I’m thinking you must want three partitions: Ventoy, Images, NixOS but… just use VMs???);
b) feel the need to have Ventoy use the NixOS GRUB menu (just use NixOS menu without Ventoy or the Ventoy menu???)
My hypothesis was that “nodev” causes 30_os-prober
not to be generated. And after some investigation, I was right.
I think the error may be caused by the perl script here. and the error occurs because grub, one of the arguments passed to it here, is an empty string per here and here. The perl script looks for $targetPackage
(which winds up being the grub argument, ""
), interpolates that with $targetPackage/etc/grub.d/30_os-prober
, and passes it into a shell; But, since $targetPackage
is an empty string it resolves to /etc/grub.d/30_os-prober
(which obviously doesn’t exist, nor is it expected to exist) rather than <some-store-path>/etc/grub.d/30_os-prober
. This problem will actually occur with any path the perl script tries to grab from the GRUB store path as long as the device is “nodev”. With the way the module is now, it will always fail with those particular settings you wrote:
There should probably be an assertion for this or the module should be fixed if this is considered a valid use case. I recommend opening an issue about it anyway.
1.) i have some live iso file that i use daily so i need ventoy as bootloader.
if i use virtualbox it too heavy for my computer, only 2 core cpu, 2gb ram.
if i use flashdisk it too slow, only usb v2 port.
2.) if i only use ventoy without nixos grub, i cant generate/use other nixos rebuild. only one build that can added to ventoy manually.
if i use nixos grub and add ventoy to nixos grub, ventoy grub not work(cant detect iso’s)
i have some os on other storage so i need os-prober to generate automatically on grub.