1 |
Dnia 17 lutego 2016 09:17:37 CET, Patrick Lauer <patrick@g.o> napisał(a): |
2 |
>On 02/17/2016 07:37 AM, Michał Górny wrote: |
3 |
>> |
4 |
>>>>> * Both udev and eudev have pretty much feature parity, so there |
5 |
>won't be |
6 |
>>>>> any user-visible changes |
7 |
>>>>> |
8 |
>>>>> * udev upstream strongly discourages standalone udev (without |
9 |
>systemd) |
10 |
>>>>> since at least 2012 |
11 |
>>>>> |
12 |
>>>>> (see for example: |
13 |
>>>>> |
14 |
>https://lists.freedesktop.org/archives/systemd-devel/2012-June/005516.html |
15 |
>>>>> https://lkml.org/lkml/2012/10/3/618 |
16 |
>>>>> ) |
17 |
>>>>> |
18 |
>>>>> So it'd be (1) following upstreams recommendations and (2) |
19 |
>dogfooding |
20 |
>>>>> our own tools. I don't see any downsides to this :) |
21 |
>>>> I'm strongly against this, because: |
22 |
>>>> |
23 |
>>>> 1. It is a conflict-induced fork. As such, it will never be merged |
24 |
>>>> upstream and it will never be supported upstream. In fact, it is |
25 |
>>>> continually forces to follow upstream changes and adapt to them. |
26 |
>eudev |
27 |
>>>> is more likely to break because of the Gentoo developer(s) working |
28 |
>hard |
29 |
>>>> to merge upstream changes to their incompatible code. |
30 |
>>> That was the entire point of the project. Upstream rejected any |
31 |
>attempts |
32 |
>>> to do things that we actually needed and broke things claiming the |
33 |
>>> distributions were responsible for handling the breakage, so eudev |
34 |
>was |
35 |
>>> started on the basis that we needed a project that would ensure that |
36 |
>>> changes in udev occur in a way that makes sense. |
37 |
>> What things? Things like 'let's try to spawn this script third time |
38 |
>in |
39 |
>> case someone mounted something so that it happens to work this time'? |
40 |
>> Yes, that old behavior really made sense. |
41 |
>It did. Not having it made booting a lot more exciting, and exciting is |
42 |
>bad. |
43 |
|
44 |
So, to summarize. Random non-repeatable behavior is good. Having repeatable boots is bad and exciting. Because then you can't claim your bugs are not bugs, right? |
45 |
|
46 |
> |
47 |
>Now you need to boot before you boot (mount all relevant filesystems |
48 |
>before starting PID1?), which is fragile and suddenly makes the |
49 |
>initramfs complex enough to require, err, a dhcp client, different fsck |
50 |
>implementations, and pretty much all that would have been in /bin or |
51 |
>/sbin before the /usr movearounding started. And firmware and kernel |
52 |
>modules, like this it's easy to go >150MB for a compressed initramfs if |
53 |
>you need firmware and a dhcp client to bring up the NFS share with |
54 |
>/boot |
55 |
>(hey, with ceph it's even more exciting ...) |
56 |
> |
57 |
>"initramfs is the new rootfs" - yeah, that sounds like a good idea, |
58 |
>until you figure out that the initramfs doesn't fit in /boot anymore |
59 |
>(kernels are ~3-4MB each, so 25MB is plenty, eh?) and you need to |
60 |
>either |
61 |
>repartition or boot from USB. |
62 |
> |
63 |
>And since there was no visible failure mode for us before, of course |
64 |
>some of us are very confused why a reasonable and effective feature got |
65 |
>pruned without replacement. Just because somewhere else it didn't work |
66 |
>100% - that's no reason to remove features for everyone! |
67 |
>> |
68 |
>>>> 2. Many of Gentoo users are programmers who appreciate the |
69 |
>'vanilla' |
70 |
>>>> API experience Gentoo often provides. Switching the defaults to a |
71 |
>fork |
72 |
>>>> that is known to intentionally diverge from upstream goes against |
73 |
>that |
74 |
>>>> principle. Programs written against eudev may not work correctly |
75 |
>with |
76 |
>>>> upstream udev. |
77 |
>>> If upstream udev were stable, that would be one thing, but it |
78 |
>>> intentionally diverges from itself continuously. The only experience |
79 |
>>> that could be reliably provided with upstream udev is one of |
80 |
>continual |
81 |
>>> breakage. |
82 |
>> This is FUD, without any proof. |
83 |
>See your reply to (3) - you disagree with yourself! |
84 |
>>>> 3. eudev has fallen behind systemd/udev more than once in the past, |
85 |
>>>> and caused visible breakage to users this way. |
86 |
>>> When? |
87 |
>> Whenever we installed new systemd and udev versions, and needed to |
88 |
>bump |
89 |
>> the dependency in virtual, and eudev maintainers were nowhere to be |
90 |
>> found. |
91 |
>Which was only needed due to API changes and/or feature removal. Which |
92 |
>is exactly what you claimed didn't happen, so go FUD yourself :) |
93 |
>> |
94 |
>>> Can we also consider all of the times udev broke the boot process |
95 |
>>> because upstream just didn't care about doing changes in a sane way |
96 |
>and |
97 |
>>> the people interested in providing the upstream experience delivered |
98 |
>on |
99 |
>>> that goal? |
100 |
>> Proof needed. |
101 |
>"Persistent network naming" caused me at least three independent boot |
102 |
>failures - |
103 |
> |
104 |
>(1) network device got renamed away from eth0 by default. That's |
105 |
>horrible, why would you change the default like this?! |
106 |
>(If it were an option that I had to consciously turn on it'd be great) |
107 |
> |
108 |
>(2) persistent naming only triggers when net link status is up. Thus if |
109 |
>the switch takes more time than the server (which it did) the renaming |
110 |
>did *not* happen, init script looks for en3p7 or whatever but now it's |
111 |
>eth0 again. This means I can't automatically power on systems after |
112 |
>power failure ... |
113 |
> |
114 |
>(3) race condition in persistent naming renames on average 2 out of 4 |
115 |
>of |
116 |
>the interfaces on bnx2 / bnx2x quad ethernet cards. So you may have |
117 |
>en3p0, eth1, eth2, en3p4 ... or eth0, en3p1, eth3, eth2. |
118 |
> |
119 |
>The only available fixes for this are *not* using the persistently |
120 |
>buggy |
121 |
>renamer thingy and instead use either MAC-based naming or pass |
122 |
>'net.ifnames=0' on the kernel command line to keep the stable kernel |
123 |
>names. |
124 |
> |
125 |
>At my current workplace we're stapling it to the MAC address - that way |
126 |
>whenever a NIC fails we need to also change udev config, but at least |
127 |
>we |
128 |
>can guarantee which interface is which. Quite useful for server |
129 |
>machines |
130 |
>that have between two and six interfaces. |
131 |
> |
132 |
>And that's independent of the movearounding - see udev init script: |
133 |
> |
134 |
>bins="/sbin/udevd /lib/systemd/systemd-udevd |
135 |
>/usr/lib/systemd/systemd-udevd" |
136 |
> |
137 |
>I'm not even going to ask why a binary is in /lib when it used to live |
138 |
>in /sbin. |
139 |
> |
140 |
>(And I will not point out the wrongness of config in /lib, because |
141 |
>apparently people get upset when the madness is pointed out ... ) |
142 |
|
143 |
The wrongness is relying on any particular location of a daemon. The init system setup needs to know where it is, and that should go along with a package that installs it. Of course, it falls apart if you split scripts apart, then force movearounding to suit your fancy love to the past. |
144 |
|
145 |
>> |
146 |
>>>> 4. eudev is underdocumented, and the maintainer admits that 'he |
147 |
>sucks |
148 |
>>>> at documenting'. In fact, did anyone even bother to note how far |
149 |
>eudev |
150 |
>>>> diverges from upstream udev to this point? |
151 |
>>> The FreeBSD developers were complaining about how poorly documented |
152 |
>udev |
153 |
>>> was well before eudev existed. This is not a regression unless |
154 |
>systemd's |
155 |
>>> innovations in replacing documented things with undocumented things |
156 |
>made |
157 |
>>> them worse. |
158 |
>> So... replacing thing that has some docs with a thing that has no |
159 |
>docs |
160 |
>> and links to docs of udev that aren't exact match for eudev is good? |
161 |
>> Good to know. |
162 |
>> |
163 |
>Having tried to use the systemd 'documentation' - |
164 |
> |
165 |
>that's actually progress, having no documentation is better than a |
166 |
>random pile of braindumps. "Read the source", as usual ... |
167 |
|
168 |
|
169 |
-- |
170 |
Best regards, |
171 |
Michał Górny (by phone) |