Passing boot logs to Linux?

Csókás Bence Csokas.Bence at prolan.hu
Thu Dec 21 00:27:24 CET 2023


On 2023. 12. 20. 20:58, Dragan Simic wrote:
> On 2023-12-20 20:24, Csókás Bence wrote:
>> On 2023. 12. 20. 9:29, Dragan Simic wrote:
>>> On 2023-12-20 08:52, Csókás Bence wrote:
>>>> That's what I read as well. Is there support for U-boot to write and
>>>> Linux to read PStores?
>>>
>>> No and yes, but U-Boot can already read pstore.  Please see
>>> doc/usage/cmd/pstore.rst for the U-Boot part, and
>>> Documentation/admin-guide/pstore-blk.rst for the Linux kernel part.
>>
>> Irrelevant, as we only want to write out the console log to U-Boot, and
>> not the other way around (that's for collecting panic logs, which is
>> already implemented).
> 
> Quite frankly, this is a bit confusing to me.  Why should it be 
> irrelevant, if we want to store the U-Boot console logs into the pstore, 
> and read them later in Linux?  That's exactly what you asked about, and 
> it was a good question.

Because we want to *write* PStore from U-Boot. The read being already 
implemented is not very useful, we could only re-read an already-written 
console log (which is not helpful for us).

>>> Another benefit of using pstore would be no permanently wasted RAM for
>>> the recorded console contents.  Also, having the data recorded to a
>>> storage device also goes along with providing permanent records.
>>
>> I'm positively *not gonna save boot logs to disk*, as most embedded
>> systems have Flash-based storage media; writing to them on every boot
>> would be devastating.
> 
> Writing 30-40 KB of data to an even remotely modern flash-based storage 
> media on each boot is pretty much nothing.  OTOH, writing 30-40 KB of 
> data to an SPI chip on each boot would be rather bad, but we aren't 
> going to do that for sure.
> 
> To put things into perspective, I'm writing this on a Pinebook Pro with 
> an eMMC chip, and it has stored many GBs of data over a few years.  Even 
> high-endurance microSD cards are rather reliable in that regard.

Not every system has eMMC/uSD, and as you said, these arguments don't 
hold for a 4 MB SPI NAND, for example, one you might find in an OpenWrt 
router for example. Whereas RAM is quite cheap nowadays.

>> Plus, I don't want the console subsystem to depend on any file/disk
>> operations/drivers.
> 
> Well, the console would still work as usual even if logging to disk 
> would fail for any reason, which is similar to the serial console still 
> working if the graphical console fails.  Moreover, if the disk fails, 
> the system isn't be able to boot, so any RAM-based console logs would be 
> lost in that case.  All this makes the RAM-based logging no more 
> resilient to disk failures.

Correction: if disk *reads* fail, as well as writes, then the system 
will not boot. However, typical failure of Flash media is that it 
becomes read-only.

> I still think that using disk-based pstore is a better option.  Just as 
> you don't want to wear out your flash disks with 30-40 KB of data, I 
> also don't want to waste 30-40 KB of RAM.

As I said, you could just unload the log after you're done processing 
it. 40 KB RAM is less, than what `sshd` uses, for instance (860k on my 
laptop, but it can probably be less, maybe even 10x less, so 80-90k?), 
so you could, in your init, process the in-RAM log, then unload it, then 
start your other services, thereby reclaiming that RAM.

> Also, embedded devices such 
> as the PinePhone would benefit additionally from using disk-based 
> logging, because people often can't do anything in the field if booting 
> fails for some reason, so RAM-based logs would end up being lost, 
> preventing any post-mortem debugging later.

Post-mortem analysis could be interesting, true.

> Perhaps we can actually offer both options, i.e. both logging to RAM and 
> to disk, so everyone can choose what they prefer.  I'd also be fine with 
> working on such a dual approach, but it would obviously be more complex.

Perhaps that is the best option. But, as Sean has pointed out, U-Boot 
doesn't support disk-backed PStore anyways... So then, should we 
implement RAM-based PStore writing for the time being, and then maybe 
expand it later?

Bence


More information about the U-Boot mailing list