[meta-freescale] Ramdisk booting: EXT4-fs (ram0): bad geometry error.

Michael Donahoe michael.donahoe at systematicgroup.com
Thu Jan 16 15:33:40 CET 2020



________________________________
From: Yusuf Altıparmak <yusufalti1997 at gmail.com>
Sent: Thursday, January 16, 2020 12:09 AM
To: Michael Donahoe <michael.donahoe at systematicgroup.com>; meta-freescale at lists.yoctoproject.org <meta-freescale at lists.yoctoproject.org>; u-boot at lists.denx.de <u-boot at lists.denx.de>
Subject: Re: [meta-freescale] Ramdisk booting: EXT4-fs (ram0): bad geometry error.



________________________________

Hello

With t1042d4rdb-64b and yocto 2.7 ( https://source.codeaurora.org/external/qoriq/qoriq-components/yocto-sdk/tree/readme?h=warrior ) I am having bad geometry error while booting and U-boot is freezing. I declared "setenv intrd_high=0xffffffff" to use large rootfs but I am unable to reach root login. Can anyone help me about this situation ?

Full error console log is here:

RAMDISK: gzip image found at block 0
RAMDISK: incomplete write (17195 != 32768)
write error
EXT4-fs (ram0): bad geometry: block count 435752 exceeds size of device (131072 blocks)
VFS: Mounted root (ext2 filesystem) on device 1:0.
devtmpfs: mounted
Freeing unused kernel memory: 536K
This architecture does not have kernel memory protection.
Run /sbin/init as init process
attempt to access beyond end of device
ram0: rw=0, want=450632, limit=262144
Buffer I/O error on dev ram0, logical block 225315, async page read
attempt to access beyond end of device
ram0: rw=0, want=454376, limit=262144
Buffer I/O error on dev ram0, logical block 227187, async page read
attempt to access beyond end of device
ram0: rw=0, want=458082, limit=262144
Buffer I/O error on dev ram0, logical block 229040, async page read
attempt to access beyond end of device
ram0: rw=0, want=458084, limit=262144
Buffer I/O error on dev ram0, logical block 229041, async page read
Run /etc/init as init process
attempt to access beyond end of device
ram0: rw=0, want=456378, limit=262144
Buffer I/O error on dev ram0, logical block 228188, async page read
attempt to access beyond end of device
ram0: rw=0, want=457688, limit=262144
Buffer I/O error on dev ram0, logical block 228843, async page read
attempt to access beyond end of device
ram0: rw=0, want=458086, limit=262144
Buffer I/O error on dev ram0, logical block 229042, async page read
Run /bin/init as init process
attempt to access beyond end of device
ram0: rw=0, want=457942, limit=262144
Buffer I/O error on dev ram0, logical block 228970, async page read
Run /bin/sh as init process
attempt to access beyond end of device
ram0: rw=0, want=457942, limit=262144
Buffer I/O error on dev ram0, logical block 228970, async page read
Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin.
CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.19.26+gc0c2141 #1
Call Trace:
[c0000001f3107c70] [c000000000a69bf4] .dump_stack+0xa8/0xec (unreliable)
[c0000001f3107d00] [c00000000004b580] .panic+0x12c/0x2e8
[c0000001f3107db0] [c000000000002464] .kernel_init+0x10c/0x128
[c0000001f3107e30] [c0000000000009f4] .ret_from_kernel_thread+0x58/0x64
Rebooting in 180 seconds..

printenv output:

baudrate=115200
bdev=sda3
bootargs=root=/dev/ram rw console=ttyS0,115200
bootcmd=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;bootm e8020000 e9300000 e8800000
bootdelay=3
bootfile=uImage
c=ffe
consoledev=ttyS0
eth1addr=00:04:9F:05:B7:B1
eth2addr=00:04:9F:05:B7:B2
eth3addr=00:04:9F:05:B7:B3
eth4addr=00:04:9F:05:B7:B4
eth5addr=00:04:9f:8e:7b:b4
ethact=FM1 at DTSEC1
ethaddr=00:04:9F:05:B7:B0
ethprime=e1000#0
fdtaddr=2000000
fdtfile=uImage-t1042d4rdb.dtb
fileaddr=2000000
filesize=9a83
fman_ucode=eff00000
gatewayip=192.168.10.4
hvboot=setenv bootargs console=$consoledev,$baudrate config-addr=0xfe8900000;bootm 0xfe8700000 - 0xfe8800000
hwconfig=fsl_ddr:bank_intlv=cs0_cs1
initrd_high=0xffffffff
ipaddr=192.168.10.99
loadaddr=1000000
netdev=eth0
netmask=255.255.255.0
nfsboot=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostnar
nohvboot=tftp 1000000 $dir/$bootfile;tftp 5000000 $dir/$ramdiskfile;tftp 2000000 $dir/$fdtfile;setenv bootargs root=/;
othbootargs=ramdisk_size=1000000
ramboot=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tfr
ramdisk_size=41943040
ramdiskaddr=5000000
ramdiskfile=fsl-image-core-t1042d4rdb.ext2.gz.u-boot
rootpath=/opt/nfsroot
serverip=192.168.10.50
tftpflash=tftpboot $loadaddr $uboot && protect off $ubootaddr +$filesize && erase $ubootaddr +$filesize && cp.b $loade
uboot=u-boot.bin
ubootaddr=0xeff40000

Environment size: 1871/8188 bytes

and the commands I used:

tftp 10000000 uImage--4.19-r0-t1042d4rdb-64b-20200106043637.bin
tftp 1f000000 t1042d4rdb--4.19-r0-t1042d4rdb-64b-20200106043637.dtb
tftp 20000000 rootfs.ext2.gz.u-boot
bootm 10000000 20000000 1f000000


What is BLK_DEV_RAM_SIZE set to in the kernel?

Hello,
It's set to;
CONFIG_BLK_DEV_RAM_SIZE=131072

Oh, I think I see now.  bootargs by default is only set to 'root=/dev/ram rw console=ttyS0,115200'.  It looks like you have ramboot to update it but you are loading the ramFS to a different location and from the output you did not run it.  Anyways, if you pass in a ramdisk_size that is as large as the ramFS you are loading it should work (provided you have enough RAM).  Without it the kernel uses what is set in the config, resulting in this error EXT4-fs (ram0): bad geometry: block count 435752 exceeds size of device (131072 blocks).  Should be able to either increase the size in the kernel or pass in a proper ramdisk_size in bootargs.  Use the existing ramboot as a guide and update it. Make sure ramdisk_size is the correct size of the ramdisk you are loading.  Then run 'run ramboot' prior to 'bootm 10000000 20000000 1f000000'







More information about the U-Boot mailing list