Add eudev hint as alternative to udev in systemd
[linux_from_scratch_hints.git] / eudev-alt-hint.txt
blob708daf440f1004d6445ae28a64fd774150ac569f
1 Author: James Powell <james4591 [at] hotmail [dot] com>
3 Date: 2014-04-04
5 License: The MIT License
7 Copyright (c) 2014 James Powell
8 ================================================================================
10 Permission is hereby granted, free of charge, to any person obtaining a copy of
11 this software and associated documentation files (the "Software"), to deal in
12 the Software without restriction, including without limitation the rights to
13 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
14 of the Software, and to permit persons to whom the Software is furnished to do
15 so, subject to the following conditions:
17 The above copyright notice and this permission notice shall be included in all
18 copies or substantial portions of the Software.
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 SOFTWARE.
28 ================================================================================
30 Synopsis:
32 systemd, while being a new and exciting daemon control system, can often be
33 very invasive with how it works with other system tools, daemon services, and
34 even various software sets.  Not only that but systemd is rather large at 410MB
35 and requires 4.5 SBUs of time to build and install.
37 Eudev is smaller considerably at 7.4MB and faster to build at 0.3 SBUs, and
38 provides the same functionality of systemd-udev utilzied by LFS/BLFS minus the
39 service management functionality, alternative init, and isn't invasive to the
40 environment requiring itself to be a hard dependency.
42 There are other reasons people would choose to not use systemd that are more
43 personal, political, and are opinions directed at the maintainers of systemd
44 and systemd's ultimate goal, but those are best left for another discussion
45 topic elsewhere.
47 Prerequisites:
49 None. Basically, you can build LFS as normal up to Chapter 6.67 and switch to
50 this Hint.
52 As a side note due to eudev being a lighter weight udev implementation you may
53 also skip sections of the LFS book...
55 Attr        - 4.5 SBUs - Chapter 6.22
56 Acl         - 0.2 SBUs - Chapter 6.23
57 libcap      - 0.1 SBUs - Chapter 6.24
58 expat       - 0.1 SBUs - Chapter 6.40
59 XML::Parser - 0.2 SBUs - Chapter 6.43
60 D-Bus       - 0.4 SBUs - Chapter 6.68
62 In all that's a total, added with systemd, 9.9 SBUs and about 100 MB less time
63 and installed space.
65 The rest of the system configuration is fairly much the same.
67 Acknowledgements:
69 I'd like to thank Bruce Dubbs, one of the LFS project maintainers for giving me
70 the chance to not only contribute to LFS, but to give users of LFS, yet another
71 choice in what they want in their system, as well as the entire LFS team for
72 giving advanced users of Linux a chance at building our own custom systems.
74 Changelog:
75 2014-04-04 - 0.0.1 - First draft
77 How-To:
79 First download a copy of eudev to your system, and it's manpages:
81 Eudev (1.5.3) - 1,684 KB:
82 Home page: http://www.gentoo.org/proj/en/eudev/
83 Download: http://dev.gentoo.org/~blueness/eudev/eudev-1.5.3.tar.gz
84 MD5 sum: 51380938b489385cc394f4ebabc048f0
86 Eudev Manpages (1.5.3) - 6 KB:
87 Download: http://anduin.linuxfromscratch.org/sources/other/eudev-1.5.3-manpages.tar.bz2
88 MD5 sum: eaa5b9af344e958c29288e5376b97a28
90 For it's brief time it was included in LFS, Eudev was stationed at Chapter 6.62
91 so these instructions are the same instructions preserved from the book. Do
92 note that future editions of Eudev might require different instructions, so
93 these will work with 1.5.3 only.:
95 ================================================================================
97 6.62.1 Installation of Eudev
99 First clean up a few warnings and fix a test script:
101   sed    -i '/struct ucred/i struct ucred;' src/libudev/util.h
102   sed -r -i 's|/usr(/bin/test)|\1|'         test/udev-test.pl
104 Prepare Eudev for compliation:
106   BLKID_CFLAGS=-I/tools/include       \
107   BLKID_LIBS='-L/tools/lib -lblkid'   \
108   ./configure --prefix=/usr           \
109          --bindir=/sbin          \
110          --sbindir=/sbin         \
111          --libdir=/usr/lib       \
112          --sysconfdir=/etc       \
113          --libexecdir=/lib       \
114          --with-rootprefix=      \
115          --with-rootlibdir=/lib  \
116          --enable-split-usr      \
117          --enable-libkmod        \
118          --enable-rule_generator \
119          --disable-introspection \
120          --disable-keymap        \
121          --disable-gudev         \
122          --disable-gtk-doc-html  \
123          --with-firmware-path=/lib/firmware
125 Compile the package:
127   make
128   
129 Create some directories now that are needed for tests, but will also be used as a part
130 of installation:
132   mkdir -pv /lib/{firmware,udev/devices/pts}
133   mkdir -pv /lib/firmware
134   mkdir -pv /lib/udev/rules.d
135   mkdir -pv /etc/udev/rules.d
137 To test the results, run issue: 
139   make check
141 Install the package: 
143   make install
145 Now, install the man pages: 
147   tar -xvf ../eudev-1.5.3-manpages.tar.bz2 -C /usr/share
149 Finally, create some custom rules that are not covered as a part of the defaults: 
151   cat > /etc/udev/rules.d/55-lfs.rules << "EOF"
152 # /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS.
154 # Core kernel devices
156 # This causes the system clock to be set as soon as /dev/rtc becomes available.
157 SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
158 KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
160 # Comms devices
162 KERNEL=="ippp[0-9]*",       GROUP="dialout"
163 KERNEL=="isdn[0-9]*",       GROUP="dialout"
164 KERNEL=="isdnctrl[0-9]*",   GROUP="dialout"
165 KERNEL=="dcbri[0-9]*",      GROUP="dialout"
167   
168 6.62.2 Contents of Eudev
170 Installed programs: udevadm and udevd
171 Installed libraries: libudev.so
172 Installed directories: /etc/udev, /lib/udev, and /lib/firmware 
174 Short Descriptions
176 udevadm
177    
178 Generic udev administration tool: controls the udevd daemon, provides info from
179 the Udev database, monitors uevents, waits for uevents to finish, tests Udev
180 configuration, and triggers uevents for a given device
182 udevd
183    
184 A daemon that listens for uevents on the netlink socket, creates devices and
185 runs the configured external programs in response to these uevents
187 libudev
188    
189 A library interface to udev device information
191 /etc/udev
192    
193 Contains Udev configuration files, device permissions, and rules for device naming
195 ===================================================================================
197 That's it. You now have Eudev installed on your system.
199 If and when you want to rebuild Eudev for gudev support, the compilation
200 process is the same except that you will need to simply remove these lines:
202          --disable-introspection \
203          --disable-keymap        \
204          --disable-gudev         \
205          
206 This will require you install the following from BLFS:
208 GLib                  - required for gudev
209 Gperf                 - required for keymap
210 gobject-introspection - required for gir-data
212 Thanks and enjoy.