[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: recommended way to find out whether one is "within" the initramfs?



Hey,

Le jeu. 7 oct. 2021 à 01:38, Christoph Anton Mitterer
<calestyo@scientia.net> a écrit :
>
> Hey Romain.
>
> Thanks for your ideas:
>
> On Wed, 2021-10-06 at 18:49 +0200, Romain Perier wrote:
> > Quickly, few ideas (perhaps not the perfect ones):
> > 1. Check for what is currently mounted as "/" ? (which technically
> > should differ between initramfs or real rootfs)
>
> That sounds like a pretty nice idea.
> I guess for the iniramfs it would be always:
>   none / rootfs
> ?

Don't remember in details, an initrd is /dev/root on /, normally

> Or maybe the "none" could be anything in theory.
>
>
> > 2. Check if your binaries are running inside a klibc or busybox
> > context (both are supported via an initramfs) ?
> > 3. Check if systemd is running ? (so you have started userspace
> > processes part of your real rootfs)
> >
>
> These two seem IMO a bit less "stable"... people might not use systemd
> (at least in derivates) and checking for the binaries sounds a bit
> ugly.

Yeah the point 3. about systemd is not generic enough, I agree.
For busybox that basically means resolving a symlink :) . Just resolve if
/sbin/init is a symlink to busybox or not : but checking for the
rootfs is definitively better, imho.





>
>
>
> So maybe I do a combination and check for several indicators:
> /scripts, /conf/initramfs.conf (which seems to be always there, update-
> initramfs fails if the main initramfs.conf is missing or empty) and the
> fs-type of the / fs.

I would say, just check a single indicator if you're sure about it,
and then test (several times)


Regards,
Romain


Reply to: