]> 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 may work, but my tests have been done with a more recent version, 
32 guile-3.0.9. For your convenience, 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
160 This should be enough for a basic server or desktop. List of packages:
161
162 amd64:
163
164 [[shepherd-debian_1.4-1_amd64.deb]]
165
166 [[shepherd-debian_1.4-1_amd64.build]]
167 [[shepherd-debian_1.4-1_amd64.changes]]
168 [[shepherd-debian_1.4-1_amd64.buildinfo]]
169
170 armhf:
171
172 [[shepherd-debian_1.4-1_armhf.deb]]
173
174 [[shepherd-debian_1.4-1_armhf.build]]
175 [[shepherd-debian_1.4-1_armhf.changes]]
176 [[shepherd-debian_1.4-1_armhf.buildinfo]]
177
178 Source:
179
180 [[shepherd-debian_1.4-1.dsc]]
181 [[shepherd-debian_1.4-1.debian.tar.xz]]
182 [[shepherd-debian_1.4.orig.tar.gz]]
183
184 You install with:
185
186     dpkg -i shepherd-debian_1.4-1_amd64.deb
187
188 In case of errors, install the missing dependencies and retry. 
189
190 ## Using shepherd
191
192 The above steps won't change your init system at next reboot. To use 
193 shepherd as the new init system, you have to add/change the init kernel boot 
194 argument as "init=/bin/shepherd". But I recommend you first study the README 
195 in package shepherd-debian for other useful information. 
196
197 ## Using shepherd with Mate
198
199 If you use Mate, you may want to use these packages, see README.elogind.
200
201 amd64:
202
203 [[elogind_246.10-1debian2bu_amd64.deb]]
204 [[libelogind0_246.10-1debian2bu_amd64.deb]]
205 [[libpam-elogind_246.10-1debian2bu_amd64.deb]]
206
207 [[elogind_246.10-1debian2bu_amd64.build]]
208 [[elogind_246.10-1debian2bu_amd64.changes]]
209 [[elogind_246.10-1debian2bu_amd64.buildinfo]]
210
211 Source:
212
213 [[elogind_246.10-1debian2bu.dsc]]
214 [[elogind_246.10-1debian2bu.debian.tar.xz]]
215 [[elogind_246.10.orig.tar.gz]]
216
217 All 3 packages have to be installed:
218
219     dpkg -i elogind_246.10-1debian2bu_amd64.deb libelogind0_246.10-1debian2bu_amd64.deb libpam-elogind_246.10-1debian2bu_amd64.deb