Gentoo Archives: gentoo-dev

From: Greg KH <gregkh@g.o>
To: Joshua Campbell <warpzero@g.o>
Cc: gentoo-core@l.g.o, gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: GLEP 26 -- Handling kernels with portage
Date: Mon, 03 May 2004 22:06:26
Message-Id: 20040503220249.GA12125@kroah.com
1 Ick, please fix your email client to properly format your long lines
2 (i.e. no line wrapping.) I've reformatted them below to be sane...
3
4 You also took the thread off of gentoo-dev, that's not nice either...
5
6 On Sun, May 02, 2004 at 10:20:39PM -0600, Joshua Campbell wrote:
7 > On Sun, 2 May 2004 20:56:47 -0700
8 > Greg KH <gregkh@g.o> wrote:
9 >
10 > > On Sun, May 02, 2004 at 10:04:35PM -0400, Nathaniel McCallum wrote:
11 > > > The new glep is here: http://www.gentoo.org/proj/en/glep/glep-0026.html
12 > >
13 > > My formal objections:
14 > >
15 > > Basically the idea is nice, but I think the proposed solution is not
16 > > correct. Here is why I feel this way:
17 > >
18 > > > Stage 1 would be achieved through a seperate utility (perhaps like the
19 > > > current genkernel). This utility would help the user configure the
20 > > > kernel and any kernel/build related settings. This stage is optional
21 > > > and would only be used if a person wanted a customized kernel
22 > > > settings. One optional thought is to have this utility a part of the
23 > > > base Gentoo system. That way there are less steps to make a custom
24 > > > kernel.
25 > >
26 > > Why reinvent the wheel here? The kernel has a _wonderful_ configuration
27 > > system already. It's provided in about 4 different interfaces at least
28 > > (command line, ncurses, gtk, qt), and in library form. Are you
29 > > proposing hooking into that library to do the configuration? If so,
30 > > what is lacking in the current implementation that is needing another
31 > > tool?
32 > >
33 >
34 > Yes, we will probably hook into the alread existing configure system.
35
36 That is not what you were stating. Please document this if it is going
37 to be so.
38
39 > The extra tool isn't much more than a wrapper for it, however it is
40 > needed so that portage can manage the kernel configs [supply the
41 > config when the kernel is built, when modules are built, when a newer
42 > kernel is configured, when the kernel is rebuilt, when the initrd is
43 > built].
44
45 initrd has nothing to do with the kernel config. Also see my previous
46 comments about initrd going the way of the dinosaurs...
47
48 > > > Stage 2 would be implimented through an eclass. This stage is not
49 > > > optional. One would perform this step by typing "emerge kernel-name",
50 > > > where "kernel-name" is the name of the kernel package you want to use
51 > > > (ie. "gentoo-dev"). This package would have a "buildkernel" USE flag.
52 > > > If the flag was not set, it would simply download and install sources
53 > > > like we do currently. However, if the "buildkernel" flag is set,
54 > > > portage will perform the following steps:
55 > > >
56 > > > 1. (as a dependency) download and install a tarball of "generic"
57 > > > kernel config files.
58 > >
59 > > Is this really needed? Don't we already do this today?
60 >
61 > With genkernel, yes, we are just simply using this ability of
62 > genkernel's in a more modular fasion.
63
64 Again, your proposal never said anything about using the current
65 genkernel functions or functionality. Again, please revise it if this
66 is going to be so.
67
68 > You do not need the whole tree around to build modules. For example,
69 > an x86 system would never need the sparc-specific parts of the kernel
70 > to build module.
71
72 Down this path lies madness... Trust me, see the zillion different
73 threads about this very topic on the linux-kernel mailing list. Also
74 note that the majority of files in the kernel source tree are not in the
75 arch specific portion, but rather in the drivers/ section.
76
77 You need a good portion of the tree to build modules. This is easily
78 proved with a simple test. Also see my previous comments about the
79 infeasibility of handing this when trying to build other packages that
80 want kernel source present somewhere...
81
82 > Yet again, we aren't scrapping genkernel, we're enhancing it.
83
84 Again, this is the first time this has been mentioned.
85
86 In fact, to quote the GLEP:
87 This GLEP hopes to overcome this by abstracting the various
88 layers of genkernel and implementing the most common aspect (the
89 build procedure) into a portage eclass.
90
91 That sure doesn't sound like "enhancing" genkernel. Sounds more like
92 grabbing the genkernel code and reforming it into something else at the
93 very best reading.
94
95 > > > Stage 3 would merely be an ebuild that constructs an initrd image for
96 > > > either the running kernel or, lacking a running kernel, the newest
97 > > > kernel installed (by version/date installed?). Initrd's can't be used
98 > > > on all arches, so this ebuild can be keyword masked as appropriate.
99 > > > The initrd package would also have a "bootsplash" USE flag (on x86,
100 > > > maybe others) that would build in bootsplash support. Any non-default
101 > > > actions desired by the user can be handled with the utility from Stage
102 > > > 1.
103 > >
104 > > So "bootsplash" will be the only USE flag? Why stop there?
105 > >
106 >
107 > This is an example. USE flags would not be used to configure the
108 > kernel, but rather dependancies as shown above.
109
110 So are you stating that "bootspash" and "initrd" are going to be the
111 only dependencies? You do realize that the "bootsplash" option requires
112 a kernel patch to be applied? If I don't specify the "bootsplash"
113 option, I sure don't want that patch applied to my kernel (perhaps
114 because I live in a place that decrees that this specific patch is
115 illegal...)
116
117 "bootsplash" also affects the kernel config options. As does "initrd",
118 correct? So how can you state that these flags will not be used to
119 configure the kernel when your example clearly shows them doing so?
120
121 Also, what happens if a security fix is needed that is around the same
122 portions of the kernel code that the bootsplash code is at? That would
123 require 2 different security patches to be in the repository, and 2
124 different tests to determine if the patch works properly or not.
125
126 Multiply this by a zillion different "requests" that I know we will get,
127 and it will quickly get unwieldy.
128
129 For example, we currently have a "usb" use flag. Should the kernel
130 build process honor it? If so, does that mean we need to split the
131 existing lirc patch up into 2 pieces (one for the usb driver, and one
132 for the rest)?
133
134 That's what I am talking about when I mention the total ickyness that
135 will ensue if we try to use USE flags to modify the kernel build
136 process.
137
138 > > Oh, and initrd images are dead. I predict that by the end of this year
139 > > we will not be using them at all, as there is no need to (other distros
140 > > are already proving this is possible.) We also get a much more
141 > > flexible, portable (works on all platforms) and cleaner implementation
142 > > with initramfs, so that is what we will be moving to soon. So your
143 > > "initrd" options are pretty moot.
144 >
145 > Modularing the initrd system will only help us prepare for this eventuality.
146
147 Huh? It isn't already in the genkernel tool? What is the function
148 "create_initrd" used for? :)
149
150 > > > There are many advantages gained by this method:
151 > > >
152 > > > 1. Full arch support (GentooInstaller really could use this)
153 > >
154 > > We should fix genkernel to do this, if it doesn't already today. There
155 > > is no reason this should not be possible today without a total rework.
156 >
157 > It is easier to port things in parts ["configs" and initrd] than it is
158 > as a whole.
159
160 But this proposal says nothing about porting "things in parts". It
161 talks about a replacement for our current kernel build system.
162
163 > > > 4. More flexability (genkernel forces building of initrd on x86)
164 > >
165 > > I've already outlined the issues of initrd going away, so this isn't an
166 > > issue.
167 >
168 > If initrd goes away we will NEED that flexibility.
169
170 What flexibility? initramfs works on every platform and provides _more_
171 flexibility. I don't understand your objection here.
172
173 > It will be easier to create a reference implementation if developers
174 > such as yourself will have open mind.
175
176 I have a very open mind. I'm trying to show the problems I see in this
177 proposal (which is why you all posted it, correct?) That's part of the
178 review process. Hopefully in the end something better than a person
179 working by themselves will be created. That's the main strength of open
180 source development.
181
182 So that's about it for my objections. I eagerly await your reference
183 implementation, and your revised GLEP proposal based on this
184 implementation. As the GLEP process states:
185
186 The GLEP should be reviewed and accepted before a reference
187 implementation is begun, unless a reference implementation will
188 aid people in studying the GLEP. Standards Track GLEPs must
189 include an implementation -- in the form of code, patch, or URL
190 to same -- before it can be considered Final.
191
192 For this GLEP, I propose that a reference implementation is necessary
193 before we can properly study this GLEP and see if it is acceptable or
194 not.
195
196 Any objections?
197
198 thanks,
199
200 greg k-h
201
202 --
203 gentoo-dev@g.o mailing list