Kang-Che Sung <explore...@gmail.com> writes:

> Linus Heckemann <g...@sphalerite.org> 於 2024年4月23日 星期二寫道:
>>
>> I don't really see the existence of /init being so critical for
>> this check given that we check below that it's a ramfs or tmpfs, which
>> seems to me to be enough that people won't be destroying filesystems
>> they cared a great deal about.
>>
>
> The ramfs/tmpfs check was good as it won't destroy any _permanent_ file the
> user could have, but it wouldn't hurt either when there is another sanity
> check.
>
>
>>> Perhaps a better approach is to check the existence of what's specified
> in
>>> the "rdinit" parameter instead.
>>
>> That would introduce an additional dependency on /proc being mounted and
>> require additional parsing. I don't think the check is that necessary,
>> again because we have the /-is-ramfs-or-tmpfs check. But if you do think
>> we need it I can rewrite the patch to check for rdinit= on cmdline as
> well.
>>
>
> /proc should be mounted by most init systems anyway. But we can skip the
> check when /proc doesn't exist, just in case.
>
> The logic would be roughly like this:
>
> If "/proc/cmdline" exists
>    Read the "rdinit" parameter from "/proc/cmdline"; if it's unspecified,
> default to "/init"
>    If the file in "rdinit" doesn't exist, stop.
> Else
>    Skip the "rdinit" existence check and continue the switch_root process

I was having a look at this again, and I'm not sure reimplementing the
kernel command line parsing logic[1][2] is really desirable. I still
think removing the check completely would be best, but I'm fine with
just dropping this and keeping the patch only on my end or working
around it with `touch /init` if you're not convinced :)

Linus

[1]: https://lxr.linux.no/#linux+v6.7.1/kernel/params.c#L162
[2]: https://lxr.linux.no/#linux+v6.7.1/lib/cmdline.c#L227
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to