.. index:: pstore (filesystem) *pstore* filesystem with RAM backend (RAMOOPS) ============================================== Barebox supports the *pstore* filesystem known from the kernel. The main backend implementation is RAM. All other backends are currently not implemented by Barebox. *pstore* is a filesystem to store kernel log or kernel panic messages. These messages are stored by the kernel in a specified RAM area which is never overwritten by any user. This data can be accessed after a reboot through ``/pstore`` in Barebox or the kernel. The *pstore* filesystem is automatically mounted at boot: .. code-block:: none none on / type ramfs none on /dev type devfs none on /pstore type pstore *pstore* may add additional warnings during boot due to wrong ECCs (no data written): .. code-block:: none persistent_ram: found existing invalid buffer, size 791282217, start 1116786789 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 791282281, start 1133564005 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 791347753, start 1133564005 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 791347753, start 1133572197 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 774505001, start 1133564005 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 791282281, start 1133564005 persistent_ram: uncorrectable error in header persistent_ram: found existing invalid buffer, size 791282217, start 1133564005 pstore: Registered ramoops as persistent store backend ramoops: attached 0x200000@0x1fdf4000, ecc: 16/0 To use *pstore/RAMOOPS* both Barebox and Kernel have to be compiled with *pstore* and RAM backend support. The kernel receives the parameters describing the layout via devicetree or - as a fallback - over the kernel command line. To ensure both worlds are using the same memory layout, the required configuration data for the kernel is generated on-the-fly prior booting a kernel. For the devicetree use case Barebox adapts the kernel's devicetree, for the kernel command line fallback the variable ``global.linux.bootargs.ramoops`` is created and its content used to build the kernel command line. You can adapt the *pstore* parameters in Barebox menuconfig. To see where the RAMOOPS area is located, you can execute the ``iomem`` command in the Barebox shell. The RAMOOPS area is listed as 'persistent ram': .. code-block:: none 0x10000000 - 0x1fffffff (size 0x10000000) ram0 0x247f59c0 - 0x2fbf59bf (size 0x0b400000) malloc space 0x2fbf59c0 - 0x2fbffffe (size 0x0000a63f) board data 0x2fc00000 - 0x2fc8619f (size 0x000861a0) barebox 0x2fc861a0 - 0x2fca35ef (size 0x0001d450) barebox data 0x2fca35f0 - 0x2fca9007 (size 0x00005a18) bss 0x2fdd4000 - 0x2fdf3fff (size 0x00020000) ramoops:dump(0/4) 0x2fdf4000 - 0x2fe13fff (size 0x00020000) ramoops:dump(1/4) 0x2fe14000 - 0x2fe33fff (size 0x00020000) ramoops:dump(2/4) 0x2fe34000 - 0x2fe53fff (size 0x00020000) ramoops:dump(3/4) 0x2fe54000 - 0x2fe73fff (size 0x00020000) ramoops:dump(4/4) 0x2fe74000 - 0x2fe93fff (size 0x00020000) ramoops:console 0x2fe94000 - 0x2feb3fff (size 0x00020000) ramoops:ftrace 0x2feb4000 - 0x2fed3fff (size 0x00020000) ramoops:pmsg 0x2fee4000 - 0x2fee7fff (size 0x00004000) ttb 0x2fee8000 - 0x2feeffff (size 0x00008000) stack All pstore files that could be found are added to the /pstore directory. This is a read-only filesystem. If you disable the Kconfig option FS_PSTORE_RAMOOPS_RO, the RAMOOPS area is reset and its ECC recalculated. But that does not allow any writes from Barebox into that area. If the menu entry ``FS_PSTORE_CONSOLE`` is enabled, Barebox itself will add all its own console output to the *ramoops:console* part, which enables the regular userland later on to have access to the bootloaders output.