Problems installing custom built Firmware to RUT955 (Kernel panic: unable to mount root fs on unknown-block(31,4)

Hi all,

I'm very new to OpenWRT so please don't be mad if I'm asking obvious questions. I did do a search here before asking and I did stumble over: Unable to mount root fs on unknown-block(31,4) - #11 by ahmar16 however it didn't help me much (Probably because I'm so new to the topic)

So I managed to build my OpenWRT based firmware for my Teltonika RUT955. In the build I can see the "bin/ar71xx" directory contains a file called openwrt-ar71xx-generic-tlt-rut900-squashfs-sysupgrade.bin which seems to be identical to the tltFws/RUT9XX_R_GPL_00.06.07.5_WEBUI.bin one directory deeper. It doesn't matter if I update using the WebUI, the recovery WebUI, mtd on the device (using a USB stick) but all result in the same: The router starts up, I can see that it found my new kernel as it mentions my machine name and build date ... but then I get a kernal panic because it can't mount the root fs.

***************************************
*     U-Boot 3.2.6     2020-04-14     *
***************************************
>
 BOARD: Teltonika RUT9XX
    RAM: 128 MB DDR2 32-bit CL3-4-4-10
  FLASH: 16 MB Unknown XT25F128B
 CLOCKS: CPU/RAM/AHB/SPI/REF
         550/380/253/ 25/ 40 MHz

Hit any key to stop booting:  0

Booting image from 0x9F040000...

   Vendor/image name:    Teltonika RUT9xx
   Hardware ID:          0x35000001
   Whole image size:     15.5 MB (16252928 bytes)
   Kernel size:          1 MB (1098572 bytes)
   Rootfs size:          8.7 MB (9154098 bytes)
   Kernel load address:  0x80060000
   Kernel entry point:   0x80060000

   Header CRC...  skipped
   Data CRC...    skipped

Stopping network... OK!
Uncompressing Kernel... OK!
Starting kernel...

[    0.000000] Linux version 3.18.44 (cdutz@ChrisXPS) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 unknown) ) #1 Sun May 2 16:22:16 CEST 2021
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001974c (MIPS 74Kc)
[    0.000000] SoC: Atheros AR9344 rev 3
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    1.750000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,4)
[    1.750000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,4)
[   82.520000] random: nonblocking pool is initialized

If I use sysupgrade it claims to have updated the device, but it's just way too fast to really have done that and then it just boots the unchanged version (I can still see the official build machine and release date of the official firmware)

The other thread made me think: Perhaps I'm missing a "partition" or device which needs to be updated. Using binwalk on the two files in bin/ar71xx/tltFws shows:

binwalk RUT9XX_R_GPL_00.06.07.5_WEBUI.bin:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
512           0x200           LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 3413892 bytes
1099084       0x10C54C        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 9154098 bytes, 3369 inodes, blocksize: 262144 bytes, created: 2021-05-02 14:22:26

binwalk RUT9XX_R_GPL_00.06.07.5_UBOOT_3.2.6_MASTER_STENDUI.bin:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
13320         0x3408          uImage header, header size: 64 bytes, header CRC: 0x56275D4, created: 2020-04-14 20:19:06, image size: 60773 bytes, Data Address: 0x80010000, Entry Point: 0x80010000, data CRC: 0x429ABF50, OS: Linux, CPU: MIPS, image type: Firmware Image, compression type: lzma, image name: "u-boot_mod LZMA FLASH image"
13384         0x3448          LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 187472 bytes
262656        0x40200         LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 3413892 bytes
1361228       0x14C54C        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 9154098 bytes, 3369 inodes, blocksize: 262144 bytes, created: 2021-05-02 14:22:26

So this version seems to contain also the U-Boot bootloader but also one more block.

Do I instead have to use this to flash my device?

I'm really stuck and would really appreciate your help :slight_smile:
Chris

Ok ... I've solved my problem.

I returned to Ubuntu 16.04 (in a Docker container) and setup the build there. Here it correctly produces a firmware that I can use on my machine.

Just compiling without errors probably doesn't mean, that the result works.

Chris

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.