Difference between revisions of "NixOS on ARM/QEMU"

From NixOS Wiki
Jump to: navigation, search
(Quickly added misc notes about booting the aarch64 sd image with u-boot)
m (rollback unauthorized mass edits)
Tag: Rollback
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ARM/breadcrumb}}
+
This page has been moved to the official NixOS Wiki:
== Status ==
 
  
NixOS on ARM through QEMU is possible, by using qemu-system-arm on QEMU's 'virt' machine, and the u-boot image for qemu.
+
    ⇒ '''[https://wiki.nixos.org/wiki/NixOS_on_ARM/QEMU NixOS on ARM/QEMU]'''
  
{{note| [[https://lists.denx.de/pipermail/u-boot/2017-October/308693.html u-boot currently requires highmem=off for PCI to work]], so you won't be able to use more than 2GB of RAM.}}
+
''— samueldr, Lead of NixOS on ARM.''
 
 
== Board-specific installation notes ==
 
 
 
=== Required images ===
 
First get some recent <tt>sd-image-armv7l-linux.img</tt> and <tt>uboot-qemu_arm_defconfig-*_u-boot.bin</tt> as described [[NixOS_on_ARM|the main NixOS on ARM page]].
 
 
 
=== Creating qcow image ===
 
Convert the sd card image to qcow, and resize it a bit:
 
 
 
<syntaxhighlight>
 
qemu-img convert -f raw -O qcow2 sd-image-armv7l-linux.img sd-image-armv7l-linux.qcow2
 
qemu-img resize sd-image-armv7l-linux.qcow2 +5G
 
</syntaxhighlight>
 
 
 
== Booting using qemu ==
 
The following command will boot QEMU's 'virt' machine with u-boot and the converted sdcard image, exposing four cpu cores and 2GB of RAM:
 
 
 
<syntaxhighlight>
 
qemu-system-arm -machine virt,highmem=off -bios uboot-qemu_arm_defconfig-2018.03_u-boot.bin -drive if=none,file=sd-image-armv7l-linux.qcow2,id=mydisk -device ich9-ahci,id=ahci -device ide-drive,drive=mydisk,bus=ahci.0 -netdev user,id=net0 -device virtio-net-pci,netdev=net0 -nographic -smp 4 -m 2G
 
 
 
U-Boot 2018.03 (Mar 13 2018 - 12:02:19 +0000)
 
 
 
DRAM:  2 GiB
 
WARNING: Caches not enabled
 
In:    pl011@9000000
 
Out:  pl011@9000000
 
Err:  pl011@9000000
 
Net:  No ethernet found.
 
Hit any key to stop autoboot:  0
 
scanning bus for devices...
 
Target spinup took 0 ms.
 
SATA link 1 timeout.
 
SATA link 2 timeout.
 
SATA link 3 timeout.
 
SATA link 4 timeout.
 
SATA link 5 timeout.
 
AHCI 0001.0000 32 slots 6 ports 1.5 Gbps 0x3f impl SATA mode
 
flags: 64bit ncq only
 
  Device 0: (0:0) Vendor: ATA Prod.: QEMU HARDDISK Rev: 2.5+
 
            Type: Hard Disk
 
            Capacity: 7137.4 MB = 6.9 GB (14617528 x 512)
 
 
 
Device 0: (0:0) Vendor: ATA Prod.: QEMU HARDDISK Rev: 2.5+
 
            Type: Hard Disk
 
            Capacity: 7137.4 MB = 6.9 GB (14617528 x 512)
 
... is now current device
 
Scanning scsi 0:1...
 
Found /extlinux/extlinux.conf
 
Retrieving file: /extlinux/extlinux.conf
 
847 bytes read in 7 ms (118.2 KiB/s)
 
------------------------------------------------------------
 
1: NixOS - Default
 
Enter choice: 1: NixOS - Default
 
Retrieving file: /extlinux/../nixos/b44d5kfyaixzkzy780br46ls3812cfx3-initrd-initrd
 
7084057 bytes read in 122 ms (55.4 MiB/s)
 
Retrieving file: /extlinux/../nixos/ajja3hfl2p4dadbg93rrs0zqrclisrwj-linux-4.16.1-zImage
 
6550016 bytes read in 112 ms (55.8 MiB/s)
 
append: systemConfig=/nix/store/km910m22ibjl6rjzfjiivn2mp71d86d6-nixos-system-nixos-18.09.git.1034aa8e9cb init=/nix/store/km910m22ibjl6rjzfjiivn2mp71d86d6-nixos-system-nixos-18.09.git.1034aa8e9cb/init loglevel=7 console=ttyS0,115200n8 console=ttymxc0,115200n8 console=ttyAMA0,115200n8 console=ttyO0,115200n8 console=ttySAC2,115200n8 console=tty0
 
Kernel image @ 0x40400000 [ 0x000000 - 0x63f200 ]
 
## Flattened Device Tree blob at 40000000
 
  Booting using the fdt blob at 0x40000000
 
  Using Device Tree in place at 40000000, end 40012fff
 
 
 
Starting kernel ...
 
 
 
[    0.000000] Booting Linux on physical CPU 0x0
 
[    0.000000] Linux version 4.16.1 (nixbld@localhost) (gcc version 7.3.0 (GCC)) #1-NixOS SMP Sun Apr 8 12:29:52 UTC 2018
 
[    0.000000] CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c5387d
 
[…]
 
 
 
<<< Welcome to NixOS 18.09.git.1034aa8e9cb (armv7l) - ttyAMA0 >>>
 
 
 
The "root" account has an empty password. 
 
 
 
 
 
Run `nixos-help` or press <Alt-F8> for the NixOS manual.
 
 
 
nixos login: root (automatic login)
 
 
 
 
 
[root@nixos:~]#
 
</syntaxhighlight>
 
 
 
{{note| first boot might take a bit longer, due to the root file system being resized to the disk size.}}
 
 
 
== QEMU AArch64 ==
 
 
 
{{expansion}}
 
<syntaxhighlight>
 
$ nix-build -A pkgsCross.aarch64-multiplatform.ubootQemuAarch64
 
$ qemu-system-aarch64 -nographic \
 
    -machine virt -cpu cortex-a57 \
 
    -bios result/u-boot.bin \
 
    ./nixos-sd-image-21.03pre262561.581232454fd-aarch64-linux.img \
 
    -m 4G
 
</syntaxhighlight>
 
 
 
[[Category:Virtualization]]
 

Latest revision as of 10:56, 6 April 2024

This page has been moved to the official NixOS Wiki:

    ⇒ NixOS on ARM/QEMU

— samueldr, Lead of NixOS on ARM.