1

I have some difficulties to make initramfs functional with SAMA5D27 SOM1 Evaluation Kit. I am trying to have a functional initramfs. I first verified that I have a functional linux when used with filesystem on sd.

I used the following bootcmd:

=> fatload mmc 0:1 0x24000000 uramdisk.img; fatload mmc 0:1 0x22000000 zImage; fatload mmc 0:1 0x21000000 board.dtb; bootz 0x22000000 0x24000000 0x21000000;"

I than tried to make initramfs as following: I configured the kernel for initramfs:

CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="/media/sdc/at91/tmp/at91/initramfs.cpio"
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y

Created ramfs: cd to rootfs and:

create ramdisk:

# sudo find . | sudo cpio -H newc -o | gzip > ../uramdisk.cpio.gz
# mkimage -A arm -O linux -T ramdisk  -n "Label you want" -d ./ramdisk.img ./uramdisk.img

change bootargs:

setenv bootcmd_boot2 "fatload mmc 0:1 0x23000000 uramdisk.img; fatload mmc 0:1 0x22000000 zImage; fatload mmc 0:1 0x21000000 board.dtb; bootz 0x22000000 0x24000000 0x21000000;"
setenv bootargs "console=ttyS0,115200 atmel.pm_modes=standby,ulp1"

And it still as following:

  => boot
51725888 bytes read in 3093 ms (15.9 MiB/s)
3903560 bytes read in 243 ms (15.3 MiB/s)
26651 bytes read in 14 ms (1.8 MiB/s)
## Loading init Ramdisk from Legacy Image at 24000000 ...
   Image Name:   Label you want
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    51725824 Bytes = 49.3 MiB
   Load Address: 24000000
   Entry Point:  24000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 21000000
   Booting using the fdt blob at 0x21000000
   Loading Ramdisk to 24a00000, end 27b54600 ... OK
   Loading Device Tree to 249f6000, end 249ff81a ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.7.10+ (user@user-VirtualBox) (gcc version 6.4.0 (Buildroot 2018.02-00001-g3ef3174) ) #6 Wed Nov 7 12:20:42 CST 2018
CPU: ARMv7 Processor [410fc051] revision 1 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Atmel SAMA5D27 SOM1 EK
Memory policy: Data cache writeback
CPU: All CPU(s) started in SVC mode.
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: console=ttyS0,115200  atmel.pm_modes=standby,ulp1
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 69684K/131072K available (6298K kernel code, 183K rwdata, 1716K rodata, 1024K init, 147K bss, 61388K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .text : 0xc0008000 - 0xc08d3a18   (9007 kB)
      .init : 0xc0900000 - 0xc0a00000   (1024 kB)
      .data : 0xc0a00000 - 0xc0a2dc20   ( 184 kB)
       .bss : 0xc0a2dc20 - 0xc0a52948   ( 148 kB)
...
mmcblk0: mmc0:0007 SS08G 7.21 GiB
 mmcblk0: p1 p2
**RAMDISK: Couldn't find valid RAM disk image starting at 0.
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6**
Please append a correct "root=" boot option; here are the available partitions:
0100            8536 ram0  (driver?)
b300         7563264 mmcblk0  driver: mmcblk
  b301          131072 mmcblk0p1 00070105-01
  b302          131072 mmcblk0p2 00070105-02
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper Not tainted 4.7.10+ #6
Hardware name: Atmel SAMA5
[<c010cb3c>] (unwind_backtrace) from [<c010a640>] (show_stack+0x10/0x14)
[<c010a640>] (show_stack) from [<c0165920>] (panic+0xc4/0x244)
[<c0165920>] (panic) from [<c09011c8>] (mount_block_root+0x1b0/0x280)
[<c09011c8>] (mount_block_root) from [<c09014a4>] (mount_root+0x120/0x128)
[<c09014a4>] (mount_root) from [<c0901628>] (prepare_namespace+0x17c/0x1c4)
[<c0901628>] (prepare_namespace) from [<c0900df0>] (kernel_init_freeable+0x1b0/0x1c0)
[<c0900df0>] (kernel_init_freeable) from [<c06354e4>] (kernel_init+0x8/0x110)
[<c06354e4>] (kernel_init) from [<c0107498>] (ret_from_fork+0x14/0x3c)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
random: nonblocking pool is initialized

I have only 128MByte memory (1Gb), maybe I can't use loadaddress of ramfs same as the address where it is loaded by u-boot, even though it is not compressed ?

  • How did you build the initramfs? What kind of /init do you have in there? – psusi Nov 7 '18 at 18:12
  • I've edited the whole question. can you please see my final question above ? – ransh Nov 7 '18 at 19:25
  • I mean where did you get the files you packed into the initramfs? Normally one uses a tool like mkinitramfs to take care of everything for you instead of manually running cpio. I'm wondering if the files in your initramfs aren't right. – psusi Nov 9 '18 at 17:16
  • I built in with buildroot. And then extracted rootfs.tar. using the rootfs files in sd ext4 wirks. But on creating cpio and try to boot ramfs it fails – ransh Nov 9 '18 at 18:45
2

One thing definitly worth checking are the load address of your ramfs. It seems to be overloaded partially by zImage.

Your kernel size is 25859560 bytes = 0x018A 95E8. It's loaded at 0x22000000, ends at 0x238A 95E8 thus is loaded overlapping with your ramfs ad 0x23000000

Without knowing your Board in detail i would just try to load ramdist at 0x24000000

  • I've edited the whole question. can you please see my final question above ? – – ransh Nov 7 '18 at 19:25
  • 1. your zImage is somehow about double size as before. Does it contain cpio twice? 2. you might be wright, that loadaddress and target address of uncompression must be different, but atm i cannot verify it – guenni_90 Nov 8 '18 at 3:36
  • Please publish the solution. I am quiete interesten in it – guenni_90 Nov 8 '18 at 15:59
  • unfortunately I still don't have a solution :( – ransh Nov 8 '18 at 18:53
  • Did you check you the new zImage? It seemed to have grown a lot... What are your bootargs? verify that you have rootwait and rootfstype=ext (?) set – guenni_90 Nov 9 '18 at 8:53
0

Solved as following:

  1. bootargs should be added with root=/dev/ram
  2. The rootfs from which the cpio is created, should be added with init inside (in /init),

About (2), I should note that that I haven't find anywhere that init should reside in "/init" (it is usually in /sbin/init).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.