loadaddress de ramfs

1

Tenho algumas dificuldades para tornar o initramfs funcional com o SAMA5D27 SOM1 Evaluation Kit. Eu estou tentando ter um initramfs funcional. Eu primeiro verifiquei que eu tenho um linux funcional quando usado com o sistema de arquivos em sd.

Eu usei o seguinte 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;"

Eu tentei fazer initramfs da seguinte forma: Eu configurei o kernel para 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

Rams criados: cd para rootfs e:

crie o 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

altere 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"

E ainda assim:

  => 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

Eu tenho apenas 128MB de memória (1Gb), talvez eu não possa usar o loadaddress de ramfs como o endereço onde ele é carregado pelo u-boot, mesmo que não esteja compactado?

    
por ransh 07.11.2018 / 18:22

2 respostas

2

Uma coisa que vale a pena verificar é o endereço de carga de seus ramfs. Parece estar sobrecarregado parcialmente pelo zImage.

O tamanho do seu kernel é 25859560 bytes = 0x018A 95E8. É carregado em 0x22000000, termina em 0x238A 95E8, portanto, é carregado sobreposto com seu anúncio de ramfs 0x23000000

Sem conhecer detalhadamente sua diretoria, eu tentaria carregar o ramdist em 0x24000000

    
por 07.11.2018 / 18:54
0

Resolvido da seguinte forma:

  1. bootargs devem ser adicionados com root = / dev / ram
  2. Os rootfs dos quais o cpio é criado devem ser adicionados com init dentro (em / init),

Sobre (2), devo observar que não encontrei nenhum lugar onde o init deva residir em "/ init" (geralmente é em / sbin / init).

    
por 26.11.2018 / 22:15