]> www.opopop.net Git - reminder/blob - Debian_Bookworm_with_Mate_and_the_shepherd_init_system.mdwn
attachment upload
[reminder] / Debian_Bookworm_with_Mate_and_the_shepherd_init_system.mdwn
1 # Debian Bookworm with Mate and the shepherd init system
2
3 ## Shepherd? Never heard of that!
4
5 [shepherd](https://www.gnu.org/software/shepherd/) is the init system for [guix](https://guix.gnu.org/). 
6 It has a lot of drawbacks for the average Debian user:
7
8 1. It is not in an official Debian package, you have to install it yourself
9 2. Following 1., package maintainers don't include in them the equivalent 
10 of an init script or systemd service, so writing these is on your own 
11 3. It is written in a Lisp like language called [guile](https://www.gnu.org/software/guile/), 
12 which is not mainstream at all
13
14 So why bother using it? Several reasons:
15
16 1. You may have noticed when reading other pages on this site that I don't like what systemd has become
17 2. And keeping sysvinit is not attractive either
18 3. No breaking features to be seen in other init systems worth testing them
19 4. shepherd by contrary is an exotic beast a hacker can only be tempted to consider 
20 5. I was a guile contributor a long time ago, so the language is not a barrier at all
21
22 When Covid lockdown happened, I had a lot of free time, so I bite the bullet and went on implementing
23 shepherd for Debian, to the point that shepherd runs now on my main hosts. Below is the result of that work. 
24
25 ## Installing shepherd on Debian Bookworm
26
27 The following instructions are safe, they won't delete your existing init system, just renaming some binaries like /sbin/{halt,reboot,poweroff}, see below. 
28
29 ### Installing guile-3.0
30
31 Bookworm packages guile-3.0.8. This will work, but I offer more recent version, 
32 guile-3.0.9. Below are the corresponding Debian packages:
33
34 amd64:
35
36 [[guile-3.0-libs_3.0.9-0bu1_amd64.deb]]
37 [[guile-3.0-dev_3.0.9-0bu1_amd64.deb]]
38 [[guile-3.0_3.0.9-0bu1_amd64.deb]]
39
40 [[guile-3.0_3.0.9-0bu1_amd64.build]]
41 [[guile-3.0_3.0.9-0bu1_amd64.changes]]
42 [[guile-3.0_3.0.9-0bu1_amd64.buildinfo]]
43
44 armhf:
45
46 [[guile-3.0-libs_3.0.9-0bu1_armhf.deb]]
47 [[guile-3.0-dev_3.0.9-0bu1_armhf.deb]]
48 [[guile-3.0_3.0.9-0bu1_armhf.deb]]
49
50 [[guile-3.0_3.0.9-0bu1_armhf.build]]
51 [[guile-3.0_3.0.9-0bu1_armhf.changes]]
52 [[guile-3.0_3.0.9-0bu1_armhf.buildinfo]]
53
54 Source:
55
56 [[guile-3.0_3.0.9-0bu1.dsc]]
57 [[guile-3.0_3.0.9-0bu1.debian.tar.xz]]
58 [[guile-3.0_3.0.9.orig.tar.gz]]
59
60 And you just have to run:
61
62     dpkg -i guile-3.0-libs_3.0.9-0bu1_amd64.deb guile-3.0-dev_3.0.9-0bu1_amd64.deb guile-3.0_3.0.9-0bu1_amd64.deb
63
64 ### Installing guile-fibers-1.3.1
65
66 This is a thread library for guile, not yet packaged for Debian. Here are the corresponding
67 packages:
68
69 amd64:
70
71 [[guile-fibers_1.3.1-1bu_amd64.deb]]
72
73 [[fibers_1.3.1-1bu_amd64.build]]
74 [[fibers_1.3.1-1bu_amd64.changes]]
75 [[fibers_1.3.1-1bu_amd64.buildinfo]]
76
77 armhf (some costly tests have been suppressed in that 2bu version, as they exceeded RAM on the compiling host):
78
79 [[guile-fibers_1.3.1-2bu_armhf.deb]]
80
81 [[fibers_1.3.1-2bu_armhf.build]]
82 [[fibers_1.3.1-2bu_armhf.changes]]
83 [[fibers_1.3.1-2bu_armhf.buildinfo]]
84
85 Source:
86
87 [[fibers_1.3.1-1bu.dsc]]
88 [[fibers_1.3.1-1bu.debian.tar.xz]]
89 [[fibers_1.3.1-2bu.dsc]]
90 [[fibers_1.3.1-2bu.debian.tar.xz]]
91 [[fibers_1.3.1.orig.tar.gz]]
92
93 You install with:
94
95     dpkg -i guile-fibers_1.3.1-1bu_amd64.deb
96
97 ### Installing shepherd-0.10.2
98
99 This is the real init engine. Care has been taken with the Debian alternatives system to not clobber    your original /sbin/halt, /sbin/reboot and /sbin/poweroff by renaming them as /sbin/halt.orig-init, /sbin/reboot.orig-init and /sbin/poweroff.orig-init. 
100  
101 The packages are below:
102
103 amd64:
104
105 [[shepherd_0.10.2-0.1_amd64.deb]]
106
107 [[shepherd_0.10.2-0.1_amd64.build]]
108 [[shepherd_0.10.2-0.1_amd64.changes]]
109 [[shepherd_0.10.2-0.1_amd64.buildinfo]]
110
111 armhf:
112
113 [[shepherd_0.10.2-0.1_armhf.deb]]
114
115 [[shepherd_0.10.2-0.1_armhf.build]]
116 [[shepherd_0.10.2-0.1_armhf.changes]]
117 [[shepherd_0.10.2-0.1_armhf.buildinfo]]
118
119 Source:
120
121 [[shepherd_0.10.2-0.1.dsc]]
122 [[shepherd_0.10.2-0.1.debian.tar.xz]]
123 [[shepherd_0.10.2.orig.tar.gz]]
124
125 And you install with:
126
127     dpkg -i shepherd_0.10.2-0.1_amd64.deb
128
129 ### Installing shepherd-debian-1.4
130
131 This package installs a set of the equivalent of init scripts or systemd 
132 services for shepherd. The list of packages whose daemons are currently handled is below:
133
134 * rsyslog
135 * util-linux
136 * ntpsec
137 * cron
138 * anacron
139 * openssh-server
140 * fwknopd
141 * unbound
142 * nsd
143 * ndppd
144 * radvd
145 * openvpn
146 * cyrus-common
147 * exim4-base
148 * fetchmail
149 * cups-daemon
150 * apache2
151 * postgresql-common
152 * mariadb
153 * bucardo
154 * dbus
155 * lightdm
156 * uuid-runtime
157 * zoneminder
158 * bluetooth
159 * dhcpcd
160 * NetworkManager
161
162 This should be enough for a basic server or desktop. List of packages:
163
164 amd64:
165
166 [[shepherd-debian_1.4-2_amd64.deb]]
167
168 [[shepherd-debian_1.4-2_amd64.build]]
169 [[shepherd-debian_1.4-2_amd64.changes]]
170 [[shepherd-debian_1.4-2_amd64.buildinfo]]
171
172 armhf:
173
174 [[shepherd-debian_1.4-2_armhf.deb]]
175
176 [[shepherd-debian_1.4-2_armhf.build]]
177 [[shepherd-debian_1.4-2_armhf.changes]]
178 [[shepherd-debian_1.4-2_armhf.buildinfo]]
179
180 Source:
181
182 [[shepherd-debian_1.4-2.dsc]]
183 [[shepherd-debian_1.4-2.debian.tar.xz]]
184 [[shepherd-debian_1.4.orig.tar.gz]]
185
186 You install with:
187
188     dpkg -i shepherd-debian_1.4-2_amd64.deb
189
190 In case of errors, install the missing dependencies and retry. 
191
192 ## Using shepherd
193
194 The above steps won't change your init system at next reboot. To use 
195 shepherd as the new init system, you have to add/change the init kernel boot 
196 argument as "init=/bin/shepherd". But I recommend you first study the README 
197 in package shepherd-debian for other useful information. 
198
199 ## Using shepherd with Mate
200
201 If you use Mate, you may want to use these packages, see in package shepherd-debian the file README.elogind and the patches: login1.patch and udisk2.patch.
202
203 amd64:
204
205 [[elogind_246.10-1debian2bu_amd64.deb]]
206 [[libelogind0_246.10-1debian2bu_amd64.deb]]
207 [[libpam-elogind_246.10-1debian2bu_amd64.deb]]
208
209 [[elogind_246.10-1debian2bu_amd64.build]]
210 [[elogind_246.10-1debian2bu_amd64.changes]]
211 [[elogind_246.10-1debian2bu_amd64.buildinfo]]
212
213 Source:
214
215 [[elogind_246.10-1debian2bu.dsc]]
216 [[elogind_246.10-1debian2bu.debian.tar.xz]]
217 [[elogind_246.10.orig.tar.gz]]
218
219 All 3 packages have to be installed:
220
221     dpkg -i elogind_246.10-1debian2bu_amd64.deb libelogind0_246.10-1debian2bu_amd64.deb libpam-elogind_246.10-1debian2bu_amd64.deb