| 25 Mar 2024 |
Mic92 | Steven Keuchel: Another question. One can download the edk2 firmware from here: https://github.com/sophgo/sophgo-edk2/actions/runs/8262095841 | 18:07:08 |
Mic92 | Does it matter which device tree file I download that is mentioned here? https://github.com/sophgo/sophgo-edk2 | 18:07:31 |
Mic92 | I mean what version of mango-milkv-pioneer.dtb I use? | 18:07:42 |
Mic92 | Does this need to match up with the Linux kernel or is this used by the efi firmware? | 18:08:28 |
Alex | In reply to @joerg:thalheim.io Does this need to match up with the Linux kernel or is this used by the efi firmware? The Linux kernel tree has its own DTBs, but IIRC it can use the DTB provided by EFI, so doesn't it depend on what parameters you're passing the kernel? | 20:26:04 |
Mic92 | Ok. Does this mean I can include a DTB from a recent linux kernel build when flashing the firmware? | 20:27:08 |
Alex | That might fix issues that are caused by bugs in the DTB, but I assume the older kernel will ignore any devices it doesn't recognise (or functionality might be reduced if the DTB has a fallback driver). | 20:32:15 |
| 26 Mar 2024 |
Steven Keuchel | Mic92: I find that in the recent revisions of the 6.1, 6.6 and 6.8 branches of the pioneer you can simply use any of the dtbs with any of the kernels. | 00:40:53 |
Steven Keuchel | in the past there have been incompatible updates, in particular for the serial console driver | 00:41:09 |
Steven Keuchel | the dtb that was preflashed (at least on my board) is too outdated for recent kernels. | 00:42:14 |
sorear | how do flakes with packages (not overlays) work when you're building for a system that doesn't have a short name? e.g. { config = "riscv64-unknown-linux-gnu"; gcc = { arch = "rv64imac"; abi = "lp64"; }; } | 23:34:30 |
| 27 Mar 2024 |
sorear | cross-compiled nixos using a mix of instructions from yesteday. built ubootQemuRiscv64SMode and used that with qemu to boot it. got halfway into stage 1 before failing to mount the root device.
hacked extlinux.conf to add rdinit=/nix/store/.../bin/hush (do people care about the <100 bytes that adding a /bin/sh symlink to the initramfs would add?) allowed me to debug that, discovered that the pci_host_generic module was missing.
added to boot.initrd.availableKernelModules. failed to log in.
added a users block. success! | 02:22:02 |
| @adam:robins.wtf left the room. | 02:24:01 |
dramforever | In reply to @sorear:matrix.org cross-compiled nixos using a mix of instructions from yesteday. built ubootQemuRiscv64SMode and used that with qemu to boot it. got halfway into stage 1 before failing to mount the root device.
hacked extlinux.conf to add rdinit=/nix/store/.../bin/hush (do people care about the <100 bytes that adding a /bin/sh symlink to the initramfs would add?) allowed me to debug that, discovered that the pci_host_generic module was missing.
added to boot.initrd.availableKernelModules. failed to log in.
added a users block. success! oh nice that you figured most of this out, for future reference there are a bunch of options that the initrd script takes to help debug with problems https://nixos.org/manual/nixos/stable/#sec-boot-problems | 11:38:50 |
dramforever | in particular boot.shell_on_fail is probably the one you were looking for | 11:39:08 |
sorear | maybe | 18:12:07 |
sorear | still thinking the symlink would be useful (it was surprising to me that there wasn't a symlink, given that nixos installs always have one); doesn't affect security since the shell path isn't secret | 18:17:29 |
| 28 Mar 2024 |
👉@crystallinefire:chat.solarpunk.moe | ok so as far as i understand it, ghc doesn't support cross-compilation, ( pending PR merge ), so you need to do an emulated build, but also as far as i can tell, flakes doesn't support doing an emulated build ?? | 00:36:10 |
👉@crystallinefire:chat.solarpunk.moe | * ok so as far as i understand it, ghc doesn't support cross-compilation, ( pending PR merge ), so you need to do an emulated build, but also as far as i can tell, flakes doesn't support doing an emulated build ? | 00:36:20 |
Alex | In reply to @hive:the-apothecary.club ok so as far as i understand it, ghc doesn't support cross-compilation, ( pending PR merge ), so you need to do an emulated build, but also as far as i can tell, flakes doesn't support doing an emulated build ? Flakes support binfmt emulation.
The issue is that Nixpkgs doesn't know how to bootstrap GHC on RISC-V, because it doesn't know where to get a binary for GHC. | 00:36:58 |
Alex | Your options are either:
- Find a pre-compiled RISC-V binary for GHC somewhere (e.g. Debian might have one).
- Use the unmerged PR to cross-compile a suitable bootstrap binary for GHC.
| 00:38:13 |
👉@crystallinefire:chat.solarpunk.moe | so even with an emulated build, it still doesn't bootstrap successfully ? | 00:39:25 |
Alex | (As the creator of the PR, I'm sorry I haven't yet found the time to get the PR merged.) | 00:39:27 |
👉@crystallinefire:chat.solarpunk.moe | i understand | 00:39:40 |
Alex | In reply to @hive:the-apothecary.club so even with an emulated build, it still doesn't bootstrap successfully ? Nixpkgs doesn't even evaluate, because it doesn't know where to find the RISC-V bootstrap binary.
See for yourself:
nix-shell -p '(import <nixpkgs> { system = "riscv64-linux"; }).ghc'
| 00:41:36 |
👉@crystallinefire:chat.solarpunk.moe | ah ok | 00:41:47 |
Alex | When building GHC from source, here's what Nixpkgs does:
- It fetches an appropriate GHC bindist from haskell.org (none exists for RISC-V).
- It uses the bindist to compile GHC.
(It is also possible to use the bindist directly, but AFAIK users rarely do that.) | 00:43:52 |
Alex | If you need help getting GHC working on RISC-V or you want to improve on my GHC cross-compilation PR, feel free to ask. | 00:45:47 |
👉@crystallinefire:chat.solarpunk.moe | i would love to help your PR get merged | 00:51:31 |
| 👉@crystallinefire:chat.solarpunk.moe changed their display name from Dagn Hive to tau. | 01:51:39 |