On Wed, Dec 19, 2012 at 4:26 AM, Alan McKinnon <[email protected]> wrote:
> On Tue, 18 Dec 2012 17:55:16 -0500
> Michael Mol <[email protected]> wrote:
>
>> On Tue, Dec 18, 2012 at 9:33 AM, Alan McKinnon
>> <[email protected]> wrote:
>> > On Tue, 18 Dec 2012 09:08:53 -0500
>> > Michael Mol <[email protected]> wrote:

[snip]

>> > #2 already has a solution, it's called an init*. Other solutions
>> > exist but none are as elegant as a throwaway temporary filesystem
>> > in RAM.
>>
>> I find virtually nothing elegant about a temporary filesystem in RAM.
>> It duplicates code that already exists on the system, and it
>> represents and additional maintenance step in system upgrades. It
>> seems almost a given that if someone is keeping multiple kernel images
>> on a system, they're not updating the initr* for each when binaries
>> that would be found in each are upgraded or rebuilt.
>
> You could level the same criticism at boot loaders...
>
> The also duplicate functionality in the main system they launch (albeit
> read-only at least in legacy grub) in the fs drivers, are only used
> briefly at boot-time and have to be maintained. True, the bootloader
> doesn't contain a *copy* of the main system files which is where the
> parallel breaks down.

Bootloaders tend to be updated in a targeted or atomic fashion. This
remains true even as they become more and more like full operating
systems.

>
> init* may well suck, but they suck less than any other possible
> solution.

I disagree. I think defining boot stages, and fixing cross-stage
dependency errors, is a far better solution.

> And they come with one more benefit - the community has
> agreed on how they work so they form a standard of sorts
>
>>
>> In Debian, Ubuntu and others, this is handled by a post-install hook
>> where the initr* image is rebuilt. To me, this honestly feels like a
>> hack. In something like Gentoo, I'd rather see package placement
>> driven by whether or not it will be needed to get all mount points
>> mounted. If that means i18n databases under something like /boot/data,
>> that seems reasonable. To me, the only cases where initr* feels like
>> the right solution are things like netboot or booting from read-only
>> media.
>
> Let's not forget the prime reason why init* exists - so that binary
> distros can boot and still have all kernel modules required at launch
> time compiled as modules.

Another valid use case.

>
> Bootstrap code and operation is ugly, always has been and always will
> be. It also tends to be inflexible unless you use a slipstreaming
> technique (my invented description of how init* works). I still think
> the solution is elegant given the real-world requirements imposed on
> systems.

And I still think that, outside of scenarios where workarounds don't
exist, it's an ugly hack and a cop-out.

--
:wq

Reply via email to