Score:1

Unable to boot RISC-V with Qemu on Ubuntu 18.04

cn flag

I am trying to run RISCV using Qemu on Ubuntu machine 18.04. For the same I followed below tutorials:

But after following all the steps, am facing the issue (Please look below for complete boot log):

[ 0.400573] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.

I tried to mount the file .img created & i can see /sbin/init is present

rushi@watershed:/mnt/rootfs$ ll sbin/init
lrwxrwxrwx 1 root root 14 Dec 21 21:41 sbin/init -> ../bin/busybox*
rushi@watershed:/mnt/rootfs/sbin$ ll ../bin/busybox
-rwxr-xr-x 1 root root 989272 Dec 21 21:41 ../bin/busybox*

I am new to all RISCV development and systems boot process, compilation in general. Your help will be much appreciated.

Below is complete bootlog:

user~/riscv64-linux$ sudo qemu-system-riscv64 -m 1024 -nographic -machine virt      -kernel linux/arch/riscv/boot/Image -append "root=/dev/vda ro console=ttyS0"      -drive file=rootfs/rootfs.img,format=raw,id=hd0       -device virtio-blk-device,drive=hd0 -bios default

OpenSBI v0.9
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name             : riscv-virtio,qemu
Platform Features         : timer,mfdeleg
Platform HART Count       : 1
Firmware Base             : 0x80000000
Firmware Size             : 100 KB
Runtime SBI Version       : 0.2

Domain0 Name              : root
Domain0 Boot HART         : 0
Domain0 HARTs             : 0*
Domain0 Region00          : 0x0000000080000000-0x000000008001ffff ()
Domain0 Region01          : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address      : 0x0000000080200000
Domain0 Next Arg1         : 0x00000000bf000000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes

Boot HART ID              : 0
Boot HART Domain          : root
Boot HART ISA             : rv64imafdcsu
Boot HART Features        : scounteren,mcounteren,time
Boot HART PMP Count       : 16
Boot HART PMP Granularity : 4
Boot HART PMP Address Bits: 54
Boot HART MHPM Count      : 0
Boot HART MHPM Count      : 0
Boot HART MIDELEG         : 0x0000000000000222
Boot HART MEDELEG         : 0x000000000000b109
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.4.166 (gcc version 11.1.0 (GCC)) #2 SMP Mon Dec 20 04:17:38 EST 2021
[    0.000000] initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000bfffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x00000000bfffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[    0.000000] software IO TLB: mapped [mem 0xbb000000-0xbf000000] (64MB)
[    0.000000] elf_hwcap is 0x112d
[    0.000000] percpu: Embedded 17 pages/cpu s30680 r8192 d30760 u69632
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258055
[    0.000000] Kernel command line: root=/dev/vda ro console=ttyS0
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Sorting __ex_table...
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 955488K/1046528K available (6252K kernel code, 397K rwdata, 1958K rodata, 213K init, 305K bss, 91040K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[    0.000000] plic: mapped 53 interrupts with 1 handlers for 2 contexts.
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[    0.000102] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns
[    0.003386] Console: colour dummy device 80x25
[    0.004764] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000)
[    0.004930] pid_max: default: 32768 minimum: 301
[    0.008515] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.008564] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.034175] rcu: Hierarchical SRCU implementation.
[    0.036327] smp: Bringing up secondary CPUs ...
[    0.036403] smp: Brought up 1 node, 1 CPU
[    0.045787] devtmpfs: initialized
[    0.051744] random: get_random_u32 called from bucket_table_alloc.isra.0+0x4e/0x150 with crng_init=0
[    0.053928] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.054075] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.056622] NET: Registered protocol family 16
[    0.099525] vgaarb: loaded
[    0.100575] SCSI subsystem initialized
[    0.102143] usbcore: registered new interface driver usbfs
[    0.102453] usbcore: registered new interface driver hub
[    0.102622] usbcore: registered new device driver usb
[    0.110644] clocksource: Switched to clocksource riscv_clocksource
[    0.126588] NET: Registered protocol family 2
[    0.127458] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.130630] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.130731] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.130939] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.131127] TCP: Hash tables configured (established 8192 bind 8192)
[    0.132583] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.132818] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.134108] NET: Registered protocol family 1
[    0.136391] RPC: Registered named UNIX socket transport module.
[    0.136457] RPC: Registered udp transport module.
[    0.136482] RPC: Registered tcp transport module.
[    0.136498] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.136592] PCI: CLS 0 bytes, default 64
[    0.143017] workingset: timestamp_bits=62 max_order=18 bucket_order=0
[    0.154976] NFS: Registering the id_resolver key type
[    0.155730] Key type id_resolver registered
[    0.155785] Key type id_legacy registered
[    0.155901] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.156003] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.156506] 9p: Installing v9fs 9p2000 file system support
[    0.157700] NET: Registered protocol family 38
[    0.157962] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.158088] io scheduler mq-deadline registered
[    0.158171] io scheduler kyber registered
[    0.160653] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 ranges:
[    0.161119] pci-host-generic 30000000.pci:    IO 0x03000000..0x0300ffff -> 0x00000000
[    0.161572] pci-host-generic 30000000.pci:   MEM 0x40000000..0x7fffffff -> 0x40000000
[    0.161637] pci-host-generic 30000000.pci:   MEM 0x400000000..0x7ffffffff -> 0x400000000
[    0.163515] pci-host-generic 30000000.pci: ECAM at [mem 0x30000000-0x3fffffff] for [bus 00-ff]
[    0.164317] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00
[    0.164487] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.164605] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.164624] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.164638] pci_bus 0000:00: root bus resource [mem 0x400000000-0x7ffffffff]
[    0.166493] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
[    0.236158] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.242182] printk: console [ttyS0] disabled
[    0.243277] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 10, base_baud = 230400) is a 16550A
[    0.267699] printk: console [ttyS0] enabled
[    0.269576] [drm] radeon kernel modesetting enabled.
[    0.282172] loop: module loaded
[    0.291691] virtio_blk virtio0: [vda] 102400 512-byte logical blocks (52.4 MB/50.0 MiB)
[    0.310649] libphy: Fixed MDIO Bus: probed
[    0.311762] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    0.312026] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.312608] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.312982] ehci-pci: EHCI PCI platform driver
[    0.313376] ehci-platform: EHCI generic platform driver
[    0.313809] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.314134] ohci-pci: OHCI PCI platform driver
[    0.314614] ohci-platform: OHCI generic platform driver
[    0.315707] usbcore: registered new interface driver uas
[    0.316137] usbcore: registered new interface driver usb-storage
[    0.317205] mousedev: PS/2 mouse device common for all mice
[    0.318871] usbcore: registered new interface driver usbhid
[    0.319160] usbhid: USB HID core driver
[    0.320916] NET: Registered protocol family 10
[    0.326954] Segment Routing with IPv6
[    0.327577] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    0.330230] NET: Registered protocol family 17
[    0.331759] 9pnet: Installing 9P2000 support
[    0.332245] Key type dns_resolver registered
[    0.347909] EXT4-fs (vda): mounting ext2 file system using the ext4 subsystem
[    0.357523] EXT4-fs (vda): mounted filesystem without journal. Opts: (null)
[    0.358113] VFS: Mounted root (ext2 filesystem) readonly on device 254:0.
[    0.363449] devtmpfs: mounted
[    0.382965] Freeing unused kernel memory: 212K
[    0.383233] This architecture does not have kernel memory protection.
[    0.383571] Run /sbin/init as init process
[    0.398108] Run /etc/init as init process
[    0.398596] Run /bin/init as init process
[    0.399549] Run /bin/sh as init process
[    0.400573] Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.
[    0.401379] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.166 #2
[    0.401701] Call Trace:
[    0.401947] [<ffffffe000037ad0>] walk_stackframe+0x0/0xa6
[    0.402232] [<ffffffe000643072>] show_stack+0x2e/0x38
[    0.402510] [<ffffffe00064b914>] dump_stack+0x66/0x80
[    0.402757] [<ffffffe0006431bc>] panic+0xd6/0x260
[    0.402978] [<ffffffe00064bb4e>] kernel_init+0xbc/0xc8
[    0.403215] [<ffffffe0000367e4>] ret_from_exception+0x0/0xc
[    0.404033] ---[ end Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---
QEMU: Terminated
Christian Ehrhardt avatar
sl flag
Risc emulation made major steps forward in the last yeras, I'd generally recommend trying the builds from https://launchpad.net/~canonical-server/+archive/ubuntu/server-backports - Furthermore for steps to use this https://wiki.ubuntu.com/RISC-V gets you to the images and commands/options you need to get started. Let me know if that is enough to get it working, we can make it an answer then.
rushi47 avatar
cn flag
@ChristianEhrhardt thank you for writing it out, i was going through this forum but it looks in complete. In steps described : `Next use OpenSBI bootloader & u-boot-qemu to boot the virtual machine` under `Booting with qemu`, will you be able to describe how to use opensbi & qemu smode uboot. Any link will be much helpful ?
Christian Ehrhardt avatar
sl flag
The qemu command that follows this is what one should use. But I agree, while this worked for me in the past it now fails me complaining about not finding an image to load. I can still boot my old image, but not the current downloads - so something in the images changed which implies a change to the steps on the wiki page. I'll ping a few people hoping they might know ...
Christian Ehrhardt avatar
sl flag
see https://www.reddit.com/r/RISCV/comments/rt7hsh/a_note_on_qemu_and_ubootqemu_and_precompiled/ and https://discourse.ubuntu.com/t/ubuntu-server-on-risc-v-documentation-needs-updating/23927/11 . TL;DR - until resolved please install u-boot-qemu (2021.10+dfsg-1) from https://packages.debian.org/de/sid/all/u-boot-qemu/download . With that in place the documented steps work again.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.