Hi All, I am trying to emulate ubifs using nandsim (built-in), qemu-arm, busybox and kernel-5.4. I hope that this combination already works, so I am here to sort out my booting issues with these. Few details before I describe my issue: a) I have already created a working busybox image for arm32 (_install folder). b) Using this I have created the ubifs image using mkfs.ubifs. c) Then I have also created the final ubifs-root image using the ubinize command. d) I have also built the kernel-5.4 for arm vexpress e) This kernel is working fine with the same busybox initramfs image. f) Now I want to use nandsim to emulate ubifs in the same environment. For (f) I have used the below command: $ qemu-system-arm -M virt -m 512M -kernel linux/arch/arm/boot/zImage -append "ubi.mtd=1 root=/dev/mtdblock0 roottype=ubifs console=ttyAMA0,115200" -drive if=mtd,driver=raw,cache=writeback,file=./ubi-boot.img,id=mtd1 -device nand,chip_id=0x39,manufacturer_id=0x98,drive=mtd1 -nographic -smp 4 But I get these errors during boot. --------------------------- ubi0: background thread "ubi_bgt0d" started, PID 55 List of all partitions: 1f00 131072 mtdblock0 (driver?) 1f01 131072 mtdblock1 (driver?) No filesystem could mount root, tried: ext3 ext4 ext2 cramfs squashfs vfat Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,0) --------------------------- I also tried to replace the ubifs with squashfs but its the same result. Here is the complete logs: ==================== Booting Linux on physical CPU 0x0 Linux version 5.4.124 (pintu@blr-ubuntu-498) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)) #5 SMP Wed Jun 9 18:14:50 IST 2021 CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c5387d CPU: div instructions available: patching division code CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache OF: fdt: Machine model: linux,dummy-virt Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x5f000000 psci: probing for conduit method from DT. psci: PSCIv0.2 detected in firmware. psci: Using standard PSCI v0.2 function IDs psci: Trusted OS migration not required percpu: Embedded 19 pages/cpu s45516 r8192 d24116 u77824 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: ubi.mtd=1 root=/dev/mtdblock0 roottype=ubifs console=ttyAMA0,115200 printk: log_buf_len individual max cpu contribution: 4096 bytes printk: log_buf_len total cpu_extra contributions: 12288 bytes printk: log_buf_len min size: 16384 bytes printk: log_buf_len: 32768 bytes printk: early log buf free: 14740(89%) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 492100K/524288K available (7168K kernel code, 433K rwdata, 1796K rodata, 1024K init, 159K bss, 15804K reserved, 16384K cma-reserved) SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 rcu: Hierarchical RCU implementation. rcu: RCU event tracing is enabled. rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 random: get_random_bytes called from start_kernel+0x310/0x4b4 with crng_init=0 arch_timer: WARNING: Invalid trigger for IRQ18, assuming level low arch_timer: WARNING: Please fix your firmware arch_timer: cp15 timer(s) running at 62.50MHz (virt). clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns Switching to timer-based delay loop, resolution 16ns Console: colour dummy device 80x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=625000) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) CPU: Testing write buffer coherency: ok CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable /cpus/cpu@0 missing clock-frequency property /cpus/cpu@1 missing clock-frequency property /cpus/cpu@2 missing clock-frequency property /cpus/cpu@3 missing clock-frequency property CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x40100000 - 0x40100060 rcu: Hierarchical SRCU implementation. smp: Bringing up secondary CPUs ... CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 CPU1: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable CPU2: thread -1, cpu 2, socket 0, mpidr 80000002 CPU2: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable CPU3: thread -1, cpu 3, socket 0, mpidr 80000003 CPU3: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable smp: Brought up 1 node, 4 CPUs SMP: Total of 4 processors activated (500.00 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 1024 (order: 4, 65536 bytes, linear) NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor ladder hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. hw-breakpoint: maximum watchpoint size is 8 bytes. Serial: AMBA PL011 UART driver 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 53, base_baud = 0) is a PL011 rev1 printk: console [ttyAMA0] enabled irq: type mismatch, failed to map hwirq-27 for intc! vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb Advanced Linux Sound Architecture Driver Initialized. clocksource: Switched to clocksource arch_sys_counter NET: Registered protocol family 2 IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear) TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear) TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 8192 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. PCI: CLS 0 bytes, default 64 workingset: timestamp_bits=30 max_order=17 bucket_order=0 squashfs: version 4.0 (2009/01/31) Phillip Lougher jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. 9p: Installing v9fs 9p2000 file system support io scheduler mq-deadline registered io scheduler kyber registered pci-host-generic 3f000000.pcie: host bridge /pcie@10000000 ranges: pci-host-generic 3f000000.pcie: IO 0x3eff0000..0x3effffff -> 0x00000000 pci-host-generic 3f000000.pcie: MEM 0x10000000..0x3efeffff -> 0x10000000 pci-host-generic 3f000000.pcie: MEM 0x8000000000..0xffffffffff -> 0x8000000000 pci-host-generic 3f000000.pcie: ECAM at [mem 0x3f000000-0x3fffffff] for [bus 00-0f] pci-host-generic 3f000000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root bus resource [bus 00-0f] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000 PCI: bus0: Fast back to back transfers disabled physmap-flash 0.flash: physmap platform flash device: [mem 0x00000000-0x03ffffff] 0.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000 Intel/Sharp Extended Query Table at 0x0031 Using buffer write method physmap-flash 0.flash: physmap platform flash device: [mem 0x04000000-0x07ffffff] 0.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000 Intel/Sharp Extended Query Table at 0x0031 Using buffer write method Concatenating MTD devices: (0): "0.flash" (1): "0.flash" into device "0.flash" [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0 nand: device found, Manufacturer ID: 0x98, Chip ID: 0x39 nand: Toshiba NAND 128MiB 1,8V 8-bit nand: 128 MiB, SLC, erase size: 16 KiB, page size: 512, OOB size: 16 flash size: 128 MiB page size: 512 bytes OOB area size: 16 bytes sector size: 16 KiB pages number: 262144 pages per sector: 32 bus width: 8 bits in sector size: 14 bits in page size: 9 bits in OOB size: 4 flash size with OOB: 135168 KiB page address bytes: 4 sector address bytes: 3 options: 0x42 Scanning device for bad blocks Creating 1 MTD partitions on "NAND 128MiB 1,8V 8-bit": 0x000000000000-0x000008000000 : "NAND simulator partition 0" [nandsim] warning: CONFIG_MTD_PARTITIONED_MASTER must be enabled to expose debugfs stuff libphy: Fixed MDIO Bus: probed usbcore: registered new interface driver usb-storage rtc-pl031 9010000.pl031: registered as rtc0 ledtrig-cpu: registered to indicate activity on CPUs usbcore: registered new interface driver usbhid usbhid: USB HID core driver oprofile: no performance counters oprofile: using timer interrupt. NET: Registered protocol family 17 9pnet: Installing 9P2000 support Registering SWP/SWPB emulation handler ubi0: attaching mtd1 ubi0: scanning is finished ubi0: empty MTD device detected ubi0: attached mtd1 (name "NAND simulator partition 0", size 128 MiB) ubi0: PEB size: 16384 bytes (16 KiB), LEB size: 15872 bytes ubi0: min./max. I/O unit sizes: 512/512, sub-page size 256 ubi0: VID header offset: 256 (aligned 256), data offset: 512 ubi0: good PEBs: 8192, bad PEBs: 0, corrupted PEBs: 0 ubi0: user volume: 0, internal volumes: 1, max. volumes count: 92 ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 1289582509 ubi0: available PEBs: 8028, total reserved PEBs: 164, PEBs reserved for bad PEB handling: 160 rtc-pl031 9010000.pl031: setting system clock to 2021-06-09T17:52:47 UTC (1623261167) ALSA device list: No soundcards found. ubi0: background thread "ubi_bgt0d" started, PID 55 List of all partitions: 1f00 131072 mtdblock0 (driver?) 1f01 131072 mtdblock1 (driver?) No filesystem could mount root, tried: ext3 ext4 ext2 cramfs squashfs vfat Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,0) ============================= If any one has used nandsim on qemu before, please let us know the exact steps. I even tried to use the machine type as vexpress-a9 but its almost the same issue. $ qemu-system-arm -M vexpress-a9 -m 512M -kernel linux/arch/arm/boot/zImage -dtb linux/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -append "console=ttyAMA0,115200 ubi.mtd=2 root=/dev/mtdblock2 rootfstype=ubifs mtdparts==nand:-(rootfs)" -device nand,chip_id=0x39,id=mtd2 -drive if=mtd,driver=raw,cache=writeback,file=./ubi-boot.img,id=mtd2 -nographic -smp 4 But with this also I get these errors: [...] Warning: Orphaned drive without device: id=mtd2,file=./ubi-boot.img,if=mtd,bus=0,unit=0 [...] List of all partitions: 1f00 131072 mtdblock0 (driver?) 1f01 32768 mtdblock1 (driver?) 1f02 131072 mtdblock2 (driver?) No filesystem could mount root, tried: ubifs Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,0) Thanks, Pintu