1 |
On Tue, Dec 18, 2012 at 9:33 AM, Alan McKinnon <alan.mckinnon@×××××.com> wrote: |
2 |
> On Tue, 18 Dec 2012 09:08:53 -0500 |
3 |
> Michael Mol <mikemol@×××××.com> wrote: |
4 |
> |
5 |
> |
6 |
> This sentence summarizes my understanding of your post nicely: |
7 |
> |
8 |
>> Now, why is /usr special? It's because it contains executable code the |
9 |
>> system might require while launching. |
10 |
> |
11 |
> Now there are only two approaches that could solve that problem: |
12 |
> |
13 |
> 1. Avoid it entirely |
14 |
> 2. Deal with it using any of a variety of bootstrap techniques |
15 |
> |
16 |
> #1 is handled by policy, whereby any code the system might require |
17 |
> while launching is not in /usr. |
18 |
|
19 |
This is the solution I favor. Systemic structure which allows |
20 |
dependency leakage is indicative (to me) of lack of foresight and |
21 |
proper component role limitation, and ought to be fought. |
22 |
|
23 |
> |
24 |
> #2 already has a solution, it's called an init*. Other solutions exist |
25 |
> but none are as elegant as a throwaway temporary filesystem in RAM. |
26 |
|
27 |
I find virtually nothing elegant about a temporary filesystem in RAM. |
28 |
It duplicates code that already exists on the system, and it |
29 |
represents and additional maintenance step in system upgrades. It |
30 |
seems almost a given that if someone is keeping multiple kernel images |
31 |
on a system, they're not updating the initr* for each when binaries |
32 |
that would be found in each are upgraded or rebuilt. |
33 |
|
34 |
In Debian, Ubuntu and others, this is handled by a post-install hook |
35 |
where the initr* image is rebuilt. To me, this honestly feels like a |
36 |
hack. In something like Gentoo, I'd rather see package placement |
37 |
driven by whether or not it will be needed to get all mount points |
38 |
mounted. If that means i18n databases under something like /boot/data, |
39 |
that seems reasonable. To me, the only cases where initr* feels like |
40 |
the right solution are things like netboot or booting from read-only |
41 |
media. |
42 |
|
43 |
> |
44 |
> I should be clear that I do not necessarily support Lennart's |
45 |
> solutions, but I do support his perception of the problem (at least |
46 |
> partially). We cannot support situations where *launch* code is |
47 |
> haphazardly scattered in location X and this must always work for all |
48 |
> values of X. We already have a remarkably parallel situation in /boot - |
49 |
> in order to boot at all, the code running at that point in time needs |
50 |
> to be able to find stuff, and it finds it (by policy) in what we will |
51 |
> later call /boot. I see this /usr debate as the same thing on a larger |
52 |
> scale. |
53 |
|
54 |
-- |
55 |
:wq |