I just made a PR for this issue. i found
loadfont ($root)/EFI/BOOT/unicode.pf2
can not be used for detection. i will always pass.
loadfont ($root)/EFI/BOOT/grub-theme/dejavu.pf2
check will not pass for my testingpc, so i choose this for detection code
Yeah, as you might know from recent convos here and there, I have lots of thoughts, especially after having been through the whole ordeal of trying to produce install media (whether iso or a disk image) for ARM systems and finding out about the bespoke grub iso config, lack of DT support (now available in systemd-boot though) etc.
However, I canāt sign up for that, and if I were, Iād probably take a fairly different approach and try to get lanzaboote
and bootspec to be usable for installing a bootloader outside of the nixos configuration itself. This would lead to easier cross-arch installs, a unified systemd-boot approach with āour ownā stub, etc. (Imagine a lanzaboote-nixos-{generate,install}
that can take a system closure, read bootspec, assembly an image/iso, and/or do a cross-arch install by install the EFI binaries, creating the -system
symlink, etc.)
Iād love to brainstorm that, and could even potentially sling some Rust, but I canāt drive it. Iām also hoping @21paradox is going to come up with an awesome patch for the short-term. Thank you so much for looking into this @21paradox.
Iām happy to help test the PR on my unit and provide my results. Please share the URL and let me know how I can help.
you can check this pr nixos/installer/cd-dvd: loadfont check before gfxterm init, to prevent crash in nonuefi graphic card platform by 21paradox Ā· Pull Request #345984 Ā· NixOS/nixpkgs Ā· GitHub
Iāve started my tests and so far it doesnāt work both in graphical and text mode. Iāve never debugged UEFI / pre stage 1 (any tips would be welcome)
For now Iām trying to see whatās different in an ISO that worksā¦currently comparing against https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso
@mastoca, Presumably youād want/need to be testing with an ISO built with @21paradoxās proposed changes. Can you confirm what ISO youāre testing with?
trying to keep it as simple as possible I did the following:
- checkout 21paradoxās nixpkgs GitHub - 21paradox/nixpkgs: Nix Packages collection & NixOS
- created a simple iso.nix (from the how-to pages)
{ config, pkgs, ... }:
{
imports = [
./nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix
# Provide an initial copy of the NixOS channel so that the user
# doesn't need to run "nix-channel --update" first.
./nixpkgs/nixos/modules/installer/cd-dvd/channel.nix
];
environment.systemPackages = [ pkgs.neovim ];
}
built with
nix-build './nixpkgs/nixos' -A config.system.build.isoImage -I nixos-config=iso.nix
wrote to iso with
sudo dd of=/dev/sda bs=4M conv=fsync status=progress if=result/iso/nixos-24.11pre-git-x86_64-linux.iso
build output:
these 31 derivations will be built:
/nix/store/5wvjpxbyrrwjb0cr3dj46brzxw9j70zm-lazy-options.json.drv
/nix/store/xprr6i92wkckm1wwzf6a6hlghwzq4pln-options.json.drv
/nix/store/0mrp22rh2zp2qjv1ywnflqndj4ixqddx-nixos-manual-html.drv
/nix/store/vmbwcm2674bx6gypv3zhc39gfvj6a8w9-nixos-help.drv
/nix/store/alwiydx1l7c5j1iicmfgzbbkcnrk5khj-nixos-help.drv
/nix/store/yy017asyxpkpvfhgsx0qi6rsl5dnk2yy-nixos-configuration-reference-manpage.drv
/nix/store/1fxmq38rrbqfi0ahd25kijxhq9xfxagi-system-path.drv
/nix/store/4vx8abjyfpjj51qfnfa4csj6z0ylmdwx-nixos-24.11pre-git.drv
/nix/store/2n0g754pmha4hx4a6hlx60c38wa47d37-etc-nix-registry.json.drv
/nix/store/h5d7mgcym1jndi2fvp0yzy8p8528i6yf-X-Restart-Triggers-polkit.drv
/nix/store/6hcflyxhnbgvnw411a10h9xmglwfbfyv-unit-polkit.service.drv
/nix/store/6zab4b9h49wyx66l5k40llcan8gz320r-unit-accounts-daemon.service.drv
/nix/store/gklxxr3b9pj0cwhwhn4j75arbji9gscc-dbus-1.drv
/nix/store/ghl7k5cp29i1rh231ismvxakvb99gi13-X-Restart-Triggers-dbus.drv
/nix/store/hgq917phca32shb187xc9l8y5x8va2qx-unit-dbus.service.drv
/nix/store/3j4ancf3zc2jpl3g70qjn87g1vxwq4ap-system-units.drv
/nix/store/9y9hn2mhh8q02v8wjmhvr5w7kwnhjrwh-set-environment.drv
/nix/store/499rzqmxl0vwj6j55l2dh1z76li7illr-etc-profile.drv
/nix/store/d9sf75k3smk1znkqjlifvik6x68xhddi-etc-pam-environment.drv
/nix/store/yn5k53ykzh09a6ds7y5hh14jv8k0nakw-unit-dbus.service.drv
/nix/store/v6maylv34m3d9mwrb6hrgrry7vyw7pap-user-units.drv
/nix/store/9z562hppdrm76bjd1mfa8rd1dq6wfk15-etc.drv
/nix/store/2kn841k4p0166ml0n3zpvazicyhrp4s7-local-cmds.drv
/nix/store/ddcbv8r7jmwxx8q3y8l4801k04g7kv8z-stage-2-init.sh.drv
/nix/store/pr40a90z6s9z6g9zxmgbz0psc0znjrgd-nixos-system-nixos-24.11pre-git.drv
/nix/store/0pm582p29m37hgxslbwblgdr997203hd-closure-info.drv
/nix/store/dc2m9z2l30m2x9l41a1sdl6qf8pz7ya0-isolinux.cfg-in.drv
/nix/store/3z6ihg79pwca0bdscy7jsp4rm77wf77s-isolinux.cfg.drv
/nix/store/yarfai2chzfl6a7527q6091lklmvb8qc-efi-directory.drv
/nix/store/vxh6c2bgbyqnc38hgv0xrcpzvzq6lqyq-efi-image_eltorito.drv
/nix/store/6f20yv4xhg6z92b5nyzlhrp5gnsxnk3h-nixos-24.11pre-git-x86_64-linux.iso.drv
building '/nix/store/4vx8abjyfpjj51qfnfa4csj6z0ylmdwx-nixos-24.11pre-git.drv'...
building '/nix/store/5wvjpxbyrrwjb0cr3dj46brzxw9j70zm-lazy-options.json.drv'...
building '/nix/store/xprr6i92wkckm1wwzf6a6hlghwzq4pln-options.json.drv'...
building '/nix/store/yy017asyxpkpvfhgsx0qi6rsl5dnk2yy-nixos-configuration-reference-manpage.drv'...
building '/nix/store/0mrp22rh2zp2qjv1ywnflqndj4ixqddx-nixos-manual-html.drv'...
building '/nix/store/vmbwcm2674bx6gypv3zhc39gfvj6a8w9-nixos-help.drv'...
building '/nix/store/alwiydx1l7c5j1iicmfgzbbkcnrk5khj-nixos-help.drv'...
building '/nix/store/1fxmq38rrbqfi0ahd25kijxhq9xfxagi-system-path.drv'...
created 17501 symlinks in user environment
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
building '/nix/store/h5d7mgcym1jndi2fvp0yzy8p8528i6yf-X-Restart-Triggers-polkit.drv'...
building '/nix/store/gklxxr3b9pj0cwhwhn4j75arbji9gscc-dbus-1.drv'...
building '/nix/store/d9sf75k3smk1znkqjlifvik6x68xhddi-etc-pam-environment.drv'...
building '/nix/store/9y9hn2mhh8q02v8wjmhvr5w7kwnhjrwh-set-environment.drv'...
building '/nix/store/6zab4b9h49wyx66l5k40llcan8gz320r-unit-accounts-daemon.service.drv'...
building '/nix/store/ghl7k5cp29i1rh231ismvxakvb99gi13-X-Restart-Triggers-dbus.drv'...
building '/nix/store/2n0g754pmha4hx4a6hlx60c38wa47d37-etc-nix-registry.json.drv'...
building '/nix/store/499rzqmxl0vwj6j55l2dh1z76li7illr-etc-profile.drv'...
building '/nix/store/2kn841k4p0166ml0n3zpvazicyhrp4s7-local-cmds.drv'...
building '/nix/store/6hcflyxhnbgvnw411a10h9xmglwfbfyv-unit-polkit.service.drv'...
building '/nix/store/ddcbv8r7jmwxx8q3y8l4801k04g7kv8z-stage-2-init.sh.drv'...
building '/nix/store/hgq917phca32shb187xc9l8y5x8va2qx-unit-dbus.service.drv'...
building '/nix/store/yn5k53ykzh09a6ds7y5hh14jv8k0nakw-unit-dbus.service.drv'...
building '/nix/store/3j4ancf3zc2jpl3g70qjn87g1vxwq4ap-system-units.drv'...
building '/nix/store/v6maylv34m3d9mwrb6hrgrry7vyw7pap-user-units.drv'...
building '/nix/store/9z562hppdrm76bjd1mfa8rd1dq6wfk15-etc.drv'...
building '/nix/store/pr40a90z6s9z6g9zxmgbz0psc0znjrgd-nixos-system-nixos-24.11pre-git.drv'...
building '/nix/store/0pm582p29m37hgxslbwblgdr997203hd-closure-info.drv'...
building '/nix/store/yarfai2chzfl6a7527q6091lklmvb8qc-efi-directory.drv'...
building '/nix/store/dc2m9z2l30m2x9l41a1sdl6qf8pz7ya0-isolinux.cfg-in.drv'...
structuredAttrs is enabled
Building GRUB with modules:
- fat
- iso9660
- part_gpt
- part_msdos
- normal
- boot
- linux
- configfile
- loopback
- chain
- halt
- efifwsetup
- efi_gop
- efi_uga
- ls
- search
- search_label
- search_fs_uuid
- search_fs_file
- echo
- serial
- gfxmenu
- gfxterm
- gfxterm_background
- gfxterm_menu
- test
- loadenv
- all_video
- videoinfo
- png
Adding additional modules:
- efi_uga
'/nix/store/pf7m17iz3w1597kh314xqk6lfwz3r7vf-refind-0.14.2/share/refind/refind_x64.efi' -> '/nix/store/58glr6rz3ycahw5zr2k6cy86qxhvmhqc-efi-directory/EFI/BOOT/refind_x64.efi'
building '/nix/store/vxh6c2bgbyqnc38hgv0xrcpzvzq6lqyq-efi-image_eltorito.drv'...
building '/nix/store/3z6ihg79pwca0bdscy7jsp4rm77wf77s-isolinux.cfg.drv'...
Usage size: 2097152
Image size: 3145728
mkfs.fat 4.2 (2021-01-31)
Copying BOOTX64.EFI
Copying grub.cfg
Copying refind_x64.efi
fsck.fat 4.2 (2021-01-31)
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkfs.fat"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
2048 bytes per cluster
1 reserved sector
First FAT starts at byte 512 (sector 1)
2 FATs, 12 bit entries
2560 bytes per FAT (= 5 sectors)
Root directory starts at byte 5632 (sector 11)
512 root directory entries
Data area starts at byte 22016 (sector 43)
1525 data clusters (3123200 bytes)
32 sectors/track, 2 heads
0 hidden sectors
6144 sectors total
Checking for unused clusters.
/nix/store/cp4wxsv4p70b3v4krlh2bygckq2rc117-efi-image_eltorito: 6 files, 708/1525 clusters
building '/nix/store/6f20yv4xhg6z92b5nyzlhrp5gnsxnk3h-nixos-24.11pre-git-x86_64-linux.iso.drv'...
structuredAttrs is enabled
Parallel mksquashfs: Using 32 processors
Creating 4.0 filesystem on nix-store.squashfs, block size 1048576.
Exportable Squashfs 4.0 filesystem, zstd compressed, data block size 1048576
compressed data, compressed metadata, compressed fragments,
compressed xattrs, compressed ids
4k unaligned
duplicates are removed
Filesystem size 2229862.16 Kbytes (2177.60 Mbytes)
36.54% of uncompressed filesystem size (6103164.53 Kbytes)
Inode table size 2414922 bytes (2358.32 Kbytes)
20.99% of uncompressed inode table size (11504361 bytes)
Directory table size 2414462 bytes (2357.87 Kbytes)
34.67% of uncompressed directory table size (6964074 bytes)
Number of duplicate files found 11331
Number of inodes 274644
Number of files 162487
Number of fragments 2727
Number of symbolic links 41569
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 70588
Number of hard-links 0
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Environment variable SOURCE_DATE_EPOCH encountered with value 315532800
Drive current: -outdev 'stdio:/nix/store/qiwd3h4djp6c53jldb4hzspmzj4fib46-nixos-24.11pre-git-x86_64-linux.iso/iso/nixos-24.11pre-git-x86_64-linux.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 161g free
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
xorriso : UPDATE : 195 files added in 1 seconds
Added 13 items from file 'pathlist'
xorriso : UPDATE : 195 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 432 bytes from file '/nix/store/0g248phyddy23jsggl4ciz3dpg3d3hj3-syslinux-unstable-2019-02-07/share/syslinux/isohdpfx.bin'
libisofs: NOTE : Automatically adjusted MBR geometry to 1020/140/32
libisofs: NOTE : Aligned image size to cylinder size by 198 blocks
xorriso : UPDATE : 2.25% done
xorriso : UPDATE : 19.43% done
xorriso : UPDATE : 42.25% done
xorriso : UPDATE : 67.46% done, estimate finish Fri Oct 04 16:42:27 2024
xorriso : UPDATE : 90.90% done
ISO image produced: 1142400 sectors
Written to medium : 1142400 sectors at LBA 0
Writing to 'stdio:/nix/store/qiwd3h4djp6c53jldb4hzspmzj4fib46-nixos-24.11pre-git-x86_64-linux.iso/iso/nixos-24.11pre-git-x86_64-linux.iso' completed successfully.
/nix/store/qiwd3h4djp6c53jldb4hzspmzj4fib46-nixos-24.11pre-git-x86_64-linux.iso
Nice. Not that itās bad here, but your feedback about it not working, or maybe being an insufficient fix, would be useful on the PR itself, as well. (along with repeating any details you might have about hardware, or suspicions).
(Might also be good to cross-link to Discourse when you reply)
Iām so glad yāall are PR/testing this, especially since itās maybe been broken semi-quietly for some time!
thanks, good suggestion, Iāll chime in on the PRā¦ it is frustrating that debug option doesnāt show anything that could tell me where itās tanking.
you can use rufus, write to usb stick with iso mode,then you can edit files in that usb stick
Thank you I have a test loop now that will let me explore what is going on. So far, Iāve not got to Stage 1 yet but did manage to at least cause a different failure (on purpose). Iāll explore some more and report as I make progressā¦but this is a slow process since the console output is being sent elsewhere I canāt see after our kernel starts to load.
you can try adding forceTextMode=true, and build again. that will use the minimal default setting for iso boot
environment.systemPackages = [ pkgs.neovim ];
isoImage.forceTextMode = true; // force use textmode
Quick reportā¦it is still no go with the text option for the minisforum.
Iāve been looking at SUSEās tumbleweed installer (it works) which uses kernel 6.9 so I copied their linux file to the installer (and renamed to bzImage etc.) I managed to boot into the SUSE kernel and by hand I got the squashfs mounted and started constructing the nixos envā¦which was partially workingā¦though I donāt remember all the steps of a rebuild switch. It was a fun rabbit hole and Iām learning a ton.
My gaze is now on investigating whatās wrong with our kernel (tried latest and 6.6.x). To that end Iām currently building the kernel (6.10) following Linux kernel - NixOS Wiki to add debugging.
Iāve not done kernel debugging in many many many years so we shall see what neurons in my mind wake up to chip in.
latest iso.nix looks like this for the curious.
{
imports = [
./nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix
# Provide an initial copy of the NixOS channel so that the user
# doesn't need to run "nix-channel --update" first.
#./nixpkgs/nixos/modules/installer/cd-dvd/channel.nix
];
environment.systemPackages = [ pkgs.neovim ];
boot.kernelPackages = pkgs.linuxPackages_6_10;
boot.crashDump.enable = true;
boot.kernelPatches = [ {
name = "crashdump-config";
patch = null;
extraConfig = ''
CRASH_DUMP y
DEBUG_INFO y
PROC_VMCORE y
LOCKUP_DETECTOR y
HARDLOCKUP_DETECTOR y
'';
} ];
isoImage.forceTextMode = true;
}
Sadly I donāt think we are having any crash but just a bad state with no ui or tty.