Skip to content

ZFS pool creation fails when doing cross #1155

@RossComputerGuy

Description

@RossComputerGuy

Trying to create a disk image for a system so I can install NixOS via cross compilation from aarch64-linux to riscv64-linux. The disk configuration has worked before with native compilation for a native system. However, when doing cross, it fails.

mu-gundam-disko-images> EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
mu-gundam-disko-images> EFI stub: Generating empty DTB
mu-gundam-disko-images> EFI stub: Exiting boot services...
mu-gundam-disko-images> loading kernel modules...
mu-gundam-disko-images> mounting Nix store...
mu-gundam-disko-images> mounting host's temporary directory...
mu-gundam-disko-images> starting stage 2 (/nix/store/iyb4c8xxqnaxxqmni8jxv8prbk365ysz-vm-run-stage2)
mu-gundam-disko-images> +++ echo 'running udev...'
mu-gundam-disko-images> running udev...
mu-gundam-disko-images> +++ ln -sfn /proc/self/fd /dev/fd
mu-gundam-disko-images> +++ ln -sfn /proc/self/fd/0 /dev/stdin
mu-gundam-disko-images> +++ ln -sfn /proc/self/fd/1 /dev/stdout
mu-gundam-disko-images> +++ ln -sfn /proc/self/fd/2 /dev/stderr
mu-gundam-disko-images> +++ mkdir -p /etc/udev
mu-gundam-disko-images> +++ mount -t efivarfs none /sys/firmware/efi/efivars
mu-gundam-disko-images> +++ ln -sfn /nix/store/n687zlbrl73kvgplszq2m0nhyvjccxx6-etc/etc/udev/rules.d /etc/udev/rules.d
mu-gundam-disko-images> +++ mkdir -p /dev/.mdadm
mu-gundam-disko-images> +++ /nix/store/l18bynv21hmsrwcvm21rfr6dkhxg3vz6-systemd-minimal-257.9/lib/systemd/systemd-udevd --daemon
mu-gundam-disko-images> Starting systemd-udevd version 257.9
mu-gundam-disko-images> +++ partprobe
mu-gundam-disko-images> +++ udevadm trigger --action=add
mu-gundam-disko-images> +++ udevadm settle --timeout=120
mu-gundam-disko-images> +++ /nix/store/h9s0i2d5wdxmdy0ndfkarh31gk7jyxbj-disko-destroy-format-mount/bin/disko-destroy-format-mount --yes-wipe-all-disks
mu-gundam-disko-images> umount: /mnt: not found
mu-gundam-disko-images> ++ realpath /dev/vda
mu-gundam-disko-images> + disk=/dev/vda
mu-gundam-disko-images> + lsblk -a -f
mu-gundam-disko-images> NAME  FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
mu-gundam-disko-images> loop0
mu-gundam-disko-images> loop1
mu-gundam-disko-images> loop2
mu-gundam-disko-images> loop3
mu-gundam-disko-images> loop4
mu-gundam-disko-images> loop5
mu-gundam-disko-images> loop6
mu-gundam-disko-images> loop7
mu-gundam-disko-images> vda
mu-gundam-disko-images> + lsblk --output-all --json
mu-gundam-disko-images> ++ dirname /nix/store/fpwn44vygjj6bfn8s1jj9p8yh6jhfxni-disk-deactivate/disk-deactivate
mu-gundam-disko-images> + bash -x
mu-gundam-disko-images> + jq -r -f /nix/store/fpwn44vygjj6bfn8s1jj9p8yh6jhfxni-disk-deactivate/zfs-swap-deactivate.jq
mu-gundam-disko-images> + lsblk --output-all --json
mu-gundam-disko-images> + bash -x
mu-gundam-disko-images> ++ dirname /nix/store/fpwn44vygjj6bfn8s1jj9p8yh6jhfxni-disk-deactivate/disk-deactivate
mu-gundam-disko-images> + jq -r --arg disk_to_clear /dev/vda -f /nix/store/fpwn44vygjj6bfn8s1jj9p8yh6jhfxni-disk-deactivate/disk-deactivate.jq
mu-gundam-disko-images> + set -fu
mu-gundam-disko-images> ++ type zdb
mu-gundam-disko-images> ++ zdb -l /dev/vda
mu-gundam-disko-images> ++ sed -nr 's/ +name: '\''(.*)'\''/\1/p'
mu-gundam-disko-images> + zpool=
mu-gundam-disko-images> + [[ -n '' ]]
mu-gundam-disko-images> + unset zpool
mu-gundam-disko-images> ++ lsblk /dev/vda -l -p -o type,name
mu-gundam-disko-images> ++ awk 'match($1,"raid.*") {print $2}'
mu-gundam-disko-images> + md_dev=
mu-gundam-disko-images> + [[ -n '' ]]
mu-gundam-disko-images> + wipefs --all -f /dev/vda
mu-gundam-disko-images> + dd if=/dev/zero of=/dev/vda bs=440 count=1
mu-gundam-disko-images> 1+0 records in
mu-gundam-disko-images> 1+0 records out
mu-gundam-disko-images> 440 bytes copied, 0.00075944 s, 579 kB/s
mu-gundam-disko-images> + lsblk -a -f
mu-gundam-disko-images> NAME  FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
mu-gundam-disko-images> loop0
mu-gundam-disko-images> loop1
mu-gundam-disko-images> loop2
mu-gundam-disko-images> loop3
mu-gundam-disko-images> loop4
mu-gundam-disko-images> loop5
mu-gundam-disko-images> loop6
mu-gundam-disko-images> loop7
mu-gundam-disko-images> vda
mu-gundam-disko-images> ++ mktemp -d
mu-gundam-disko-images> + disko_devices_dir=/tmp/tmp.qvneBPoCLC
mu-gundam-disko-images> + trap 'rm -rf "$disko_devices_dir"' EXIT
mu-gundam-disko-images> + mkdir -p /tmp/tmp.qvneBPoCLC
mu-gundam-disko-images> + destroy=1
mu-gundam-disko-images> + device=/dev/vda
mu-gundam-disko-images> + imageName=nvme
mu-gundam-disko-images> + imageSize=12G
mu-gundam-disko-images> + name=nvme
mu-gundam-disko-images> + type=disk
mu-gundam-disko-images> + device=/dev/vda
mu-gundam-disko-images> + efiGptPartitionFirst=1
mu-gundam-disko-images> + type=gpt
mu-gundam-disko-images> + blkid /dev/vda
mu-gundam-disko-images> + sgdisk --clear /dev/vda
mu-gundam-disko-images> Creating new GPT entries in memory.
mu-gundam-disko-images> The operation has completed successfully.
mu-gundam-disko-images> + sgdisk --align-end --new=1:32M:+0 --partition-guid=1:R --change-name=1:disk-nvme-esp --typecode=1:EF00 --attributes=1:=:0 /dev/vda
mu-gundam-disko-images> The operation has completed successfully.
mu-gundam-disko-images> + partprobe /dev/vda
mu-gundam-disko-images> + udevadm trigger --subsystem-match=block
mu-gundam-disko-images> + udevadm settle --timeout 120
mu-gundam-disko-images> + sgdisk --align-end --new=2:0:-0 --partition-guid=2:R --change-name=2:disk-nvme-root --typecode=2:8300 --attributes=2:=:0 /dev/vda
mu-gundam-disko-images> The operation has completed successfully.
mu-gundam-disko-images> + partprobe /dev/vda
mu-gundam-disko-images> + udevadm trigger --subsystem-match=block
mu-gundam-disko-images> + udevadm settle --timeout 120
mu-gundam-disko-images> + device=/dev/disk/by-partlabel/disk-nvme-esp
mu-gundam-disko-images> + extraArgs=()
mu-gundam-disko-images> + declare -a extraArgs
mu-gundam-disko-images> + format=vfat
mu-gundam-disko-images> + mountOptions=('umask=0022')
mu-gundam-disko-images> + declare -a mountOptions
mu-gundam-disko-images> + mountpoint=/boot
mu-gundam-disko-images> + type=filesystem
mu-gundam-disko-images> + blkid /dev/disk/by-partlabel/disk-nvme-esp
mu-gundam-disko-images> + grep -q TYPE=
mu-gundam-disko-images> + mkfs.vfat /dev/disk/by-partlabel/disk-nvme-esp
mu-gundam-disko-images> mkfs.fat 4.2 (2021-01-31)
mu-gundam-disko-images> + device=/dev/disk/by-partlabel/disk-nvme-root
mu-gundam-disko-images> + pool=zpool
mu-gundam-disko-images> + type=zfs
mu-gundam-disko-images> + echo /dev/disk/by-partlabel/disk-nvme-root
mu-gundam-disko-images> + mountOptions=('defaults')
mu-gundam-disko-images> + declare -a mountOptions
mu-gundam-disko-images> + mountpoint=
mu-gundam-disko-images> + name=zpool
mu-gundam-disko-images> + options=()
mu-gundam-disko-images> + declare -A options
mu-gundam-disko-images> + rootFsOptions=(['compression']='zstd' ['mountpoint']='none')
mu-gundam-disko-images> + declare -A rootFsOptions
mu-gundam-disko-images> + type=zpool
mu-gundam-disko-images> + readarray -t zfs_devices
mu-gundam-disko-images> ++ cat /tmp/tmp.qvneBPoCLC/zfs_zpool
mu-gundam-disko-images> + '[' 1 -eq 0 ']'
mu-gundam-disko-images> + zpool import -N -f zpool
mu-gundam-disko-images> cannot import 'zpool': no such pool available
mu-gundam-disko-images> + zpool list zpool
mu-gundam-disko-images> cannot open 'zpool': no such pool
mu-gundam-disko-images> + continue=1
mu-gundam-disko-images> + for dev in "${zfs_devices[@]}"
mu-gundam-disko-images> + blkid /dev/disk/by-partlabel/disk-nvme-root
mu-gundam-disko-images> + blkid /dev/disk/by-partlabel/disk-nvme-root -o export
mu-gundam-disko-images> + grep '^PTUUID='
mu-gundam-disko-images> + blkid /dev/disk/by-partlabel/disk-nvme-root -o export
mu-gundam-disko-images> + grep '^TYPE=zfs_member'
mu-gundam-disko-images> + blkid /dev/disk/by-partlabel/disk-nvme-root -o export
mu-gundam-disko-images> + grep '^TYPE='
mu-gundam-disko-images> + '[' 1 -eq 1 ']'
mu-gundam-disko-images> + topology=
mu-gundam-disko-images> + mode=
mu-gundam-disko-images> + '[' '' '!=' prescribed ']'
mu-gundam-disko-images> + topology=' /dev/disk/by-partlabel/disk-nvme-root'
mu-gundam-disko-images> + '[' 1 -eq 1 ']'
mu-gundam-disko-images> + zpool create -f zpool -R /mnt -O compression=zstd -O mountpoint=none /dev/disk/by-partlabel/disk-nvme-root
mu-gundam-disko-images> cannot create 'zpool': one or more devices is less than the minimum size (64M)
mu-gundam-disko-images> + rm -rf /tmp/tmp.qvneBPoCLC
mu-gundam-disko-images> + exitHandler
mu-gundam-disko-images> + exitCode=1
mu-gundam-disko-images> + set +e
mu-gundam-disko-images> + '[' -n '' ']'
mu-gundam-disko-images> + ((  1 != 0  ))
mu-gundam-disko-images> + runHook failureHook
mu-gundam-disko-images> + local hookName=failureHook
mu-gundam-disko-images> + shift
mu-gundam-disko-images> + local 'hooksSlice=failureHooks[@]'
mu-gundam-disko-images> + local hook
mu-gundam-disko-images> + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}
mu-gundam-disko-images> + _logHook failureHook '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + [[ -z 2 ]]
mu-gundam-disko-images> + local hookKind=failureHook
mu-gundam-disko-images> + local 'hookExpr=_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + shift 2
mu-gundam-disko-images> + declare -F '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + type -p '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + [[ _callImplicitHook 0 failureHook != _callImplicitHook* ]]
mu-gundam-disko-images> + _eval '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + declare -F '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> + eval '_callImplicitHook 0 failureHook'
mu-gundam-disko-images> ++ _callImplicitHook 0 failureHook
mu-gundam-disko-images> ++ local def=0
mu-gundam-disko-images> ++ local hookName=failureHook
mu-gundam-disko-images> ++ declare -F failureHook
mu-gundam-disko-images> ++ type -p failureHook
mu-gundam-disko-images> ++ '[' -n '' ']'
mu-gundam-disko-images> ++ return 0
mu-gundam-disko-images> + return 0
mu-gundam-disko-images> + '[' -n '' ']'
mu-gundam-disko-images> + return 1
{
  config,
  lib,
  pkgs,
  inputs,
  ...
}:
{
  imports = [
    inputs.disko.nixosModules.default
  ];

  disko = {
    imageBuilder = {
      kernelPackages = lib.mkForce pkgs.buildPackages.linuxPackages;
      pkgs = pkgs.buildPackages;
    };
    memSize = lib.mkDefault 4096;
    devices = {
      disk.nvme = {
        device = "/dev/nvme0n1";
        type = "disk";
        imageSize = "12G";
        content = {
          type = "gpt";
          partitions = {
            esp = {
              type = "EF00";
              start = "32M";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
                mountOptions = [ "umask=0022" ];
              };
            };
            root = {
              size = "100%";
              content = {
                type = "zfs";
                pool = "zpool";
              };
            };
          };
        };
      };
      zpool.zpool = {
        type = "zpool";
        rootFsOptions = {
          mountpoint = "none";
          compression = "zstd";
        };
        datasets = {
          root = {
            type = "zfs_fs";
            mountpoint = "/";
          };
          nix = {
            type = "zfs_fs";
            options.mountpoint = "/nix";
            mountpoint = "/nix";
          };
          home = {
            type = "zfs_fs";
            options.mountpoint = "/home";
            mountpoint = "/home";
          };
          var = {
            type = "zfs_fs";
            options.mountpoint = "/var";
            mountpoint = "/var";
          };
        };
      };
    };
  };
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions