!xmLtiCaAJxfhURjrXl:matrix.org

NixOS RISC-V

224 Members
NixOS on RISC-V https://wiki.nixos.org/wiki/RISC-V https://pad.lassul.us/NixOS-riscv64-linux https://github.com/orgs/NixOS/teams/risc-v65 Servers

Load older messages


SenderMessageTime
16 Mar 2026
@alex:tunstall.xyzAlex

That's not a good sign.
The backdoor service that the test driver uses to control the VM is not printing the sentinel value that the test driver recognises as "VM is ready". There are a number of ways for this to go wrong, none of which are easy to identify without logs.
It might not be writing system logs to a visible location.

Can you try adding this to the VM's system configuration?

boot.kernelParams = [ "console=ttyS0" "console=hvc0" ];

One of these console options might allow you to see kernel and early userspace logs.

15:58:21
@dramforever:matrix.orgdramforeveri don't know what other logs are showing up, but if that's all that's shown maybe the vm didn't work at all15:59:49
@alex:tunstall.xyzAlexTrue, and if necessary one could also try the early console option.16:00:56
@alex:tunstall.xyzAlex

Is anyone able to build the latest Nixpkgs natively?
My build is failing during xgcc.

checking for suffix of object files... configure: error: in `/build/build/riscv64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
16:01:19
@dramforever:matrix.orgdramforevermaybe powerline10k16:03:42
@dramforever:matrix.orgdramforever* maybe https://github.com/NixOS/nixpkgs/pull/49870216:03:52
@alex:tunstall.xyzAlex I could try the parent of that merge commit.
The only other option is bisecting, which would probably take days/weeks to find the problematic commit.
16:04:54
@dramforever:matrix.orgdramforeverhuh, i'd have thought that would have fixed it16:06:23
@alex:tunstall.xyzAlex Ah nevermind, my nixpkgs is older, so I should probably try that commit.
dramforever thanks.
16:06:24
@dramforever:matrix.orgdramforeverdo you have more logs16:06:25
@eljamm:matrix.orgeljammDownload felix86-with-params.log16:42:54
@eljamm:matrix.orgeljammDownload felix86.log16:42:55
@eljamm:matrix.orgeljamm These are the log files. When I pass those parameters, the test seems like it moves past the backdoor.service part, but it still doesn't seem to be doing much either. It's also pretty slow. 16:45:30
@alex:tunstall.xyzAlex

Oh so you are getting kernel logs even without setting console=....
One of the annoying things about systemd is that it doesn't log anything useful during boot.
Btw the console=... isn't really helping, even if it no longer prints warnings about backdoor.service, because it's still unable to send commands to the VM.

You could I guess try building the driverInteractive version of the test, then inside the interactive prompt run machine.shell_interact() to get a prompt (assuming this doesn't require the backdoor service, which it might).

It's also pretty slow.

I think that's because you're emulating RISC-V using binfmt emulation to run a riscv64-linux build of qEMU to run the test? That sounds to me like you have qEMU running under qEMU.

18:48:52
@alex:tunstall.xyzAlex Possibly you might just need to wait long enough for backdoor.service to come online.
How long have you given it?
18:51:47
17 Mar 2026
@alex:tunstall.xyzAlexUpdate: it worked, thanks.00:22:11
@eljamm:matrix.orgeljamm

You could I guess try building the driverInteractive version of the test, then inside the interactive prompt run machine.shell_interact() to get a prompt (assuming this doesn't require the backdoor service, which it might).

I tried that, but I wasn't able to do anything:

  • shell_interact(): same issues and doesn't give return a shell
  • ssh backdoor: crashes the VM

It's also pretty slow.

I think that's because you're emulating RISC-V using binfmt emulation to run a riscv64-linux build of qEMU to run the test? That sounds to me like you have qEMU running under qEMU.

When I first read this comment, I thought so as well, but then it got me thinking: why not enable binfmt inside the test itself? So I commented out everything I previously made and did just that. Performance-wise, everything seemed ... fine, actually.

The test fails ofc, because the package wasn't installed. But then I noticed something interesting:

{
  # the package works when installed directly
  environment.systemPackages = [
    pkgs.pkgsCross.riscv64.felix86
  ];
}

Whereas:

{
  # enabling the module, I get the previous issue with `backdoor.service`
  programs.felix86.enable = true;
}

Investigating further, I tracked this back to the felix86 boot.binfmt.registrations. More importantly, the logs now actually print something useful:

machine # [    6.846377] systemd[1]: lastlog2-import.service: Failed to spawn executor: Exec format error
machine # [    6.852359] systemd[1]: lastlog2-import.service: Failed to spawn 'start' task: Exec format error
machine # [    6.857462] firewall-start[607]: /nix/store/qhsrmq9784wvy0la4nr62dhgrjwn93sv-firewall-start/bin/firewall-start: line 105: /nix/store/s657hsrj1cknm7c4cbi87f6w7f3mlv11-iptables-1.8.11/bin/iptables: cannot execute binary file: Exec format error

Then everything clicked: my system is x86_64-linux and I'm using binfmt to emulate risc64-linux, but the module also enables emulation in the other direction, after which chaos ensues.

I already suspected this would happen, but I'm glad to actually confirm it. In a way, this kinda means the module's binfmt registration is working and I can just disable it for now in the test.

12:52:49
@eljamm:matrix.orgeljamm *

You could I guess try building the driverInteractive version of the test, then inside the interactive prompt run machine.shell_interact() to get a prompt (assuming this doesn't require the backdoor service, which it might).

I tried that, but I wasn't able to do anything:

  • shell_interact(): same issues and doesn't return a shell
  • ssh backdoor: crashes the VM

It's also pretty slow.

I think that's because you're emulating RISC-V using binfmt emulation to run a riscv64-linux build of qEMU to run the test? That sounds to me like you have qEMU running under qEMU.

When I first read this comment, I thought so as well, but then it got me thinking: why not enable binfmt inside the test itself? So I commented out everything I previously made and did just that. Performance-wise, everything seemed ... fine, actually.

The test fails ofc, because the package wasn't installed. But then I noticed something interesting:

{
  # the package works when installed directly
  environment.systemPackages = [
    pkgs.pkgsCross.riscv64.felix86
  ];
}

Whereas:

{
  # enabling the module, I get the previous issue with `backdoor.service`
  programs.felix86.enable = true;
}

Investigating further, I tracked this back to the felix86 boot.binfmt.registrations. More importantly, the logs now actually print something useful:

machine # [    6.846377] systemd[1]: lastlog2-import.service: Failed to spawn executor: Exec format error
machine # [    6.852359] systemd[1]: lastlog2-import.service: Failed to spawn 'start' task: Exec format error
machine # [    6.857462] firewall-start[607]: /nix/store/qhsrmq9784wvy0la4nr62dhgrjwn93sv-firewall-start/bin/firewall-start: line 105: /nix/store/s657hsrj1cknm7c4cbi87f6w7f3mlv11-iptables-1.8.11/bin/iptables: cannot execute binary file: Exec format error

Then everything clicked: my system is x86_64-linux and I'm using binfmt to emulate risc64-linux, but the module also enables emulation in the other direction, after which chaos ensues.

I already suspected this would happen, but I'm glad to actually confirm it. In a way, this kinda means the module's binfmt registration is working and I can just disable it for now in the test.

12:54:51
@colemickens:matrix.orgcolemickens joined the room.19:36:38
@colemickens:matrix.orgcolemickensa huge amount of native riscv64-linux builds fail with > /nix/store/shkw4qm9qcw5sc5n1k5jznc83ny02r39-default-builder.sh: line 1: genericBuild: command not found ? bit surprising to me?19:36:44
@colemickens:matrix.orgcolemickensNot sure if I'm doing something very wrong or not...19:54:19
@silvio:booq.org@silvio:booq.org joined the room.21:14:31
@alex:tunstall.xyzAlexWhich Nixpkgs commit?21:15:56
@colemickens:matrix.orgcolemickensI just tried nixos/nixpkgs/nixos-unstable#tmux21:28:00
@colemickens:matrix.orgcolemickensso 5b2c2d84341b2afb5647081c1386a80d7a8d8605 I suppose21:28:17
@alex:tunstall.xyzAlex Try latest master. There is an important change not yet in unstable that might fix the problem. 21:44:11
@colemickens:matrix.orgcolemickensokay, any chance you can link the PR so I can keep an eye on it on https://nixpk.gs?21:52:24
@colemickens:matrix.orgcolemickensthanks!21:52:26
@alex:tunstall.xyzAlex It is https://github.com/NixOS/nixpkgs/pull/498702 (linked earlier by dramforever). 21:55:06
@colemickens:matrix.orgcolemickensthat appears to be in nixos-unstable though22:18:37

Show newer messages


Back to Room ListRoom Version: 10