]> pere.pagekite.me Git - homepage.git/blob - blog/Debian_init_d_boot_script_example_for_rsyslog.html
Generated.
[homepage.git] / blog / Debian_init_d_boot_script_example_for_rsyslog.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Debian init.d boot script example for rsyslog</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/vim.css" />
9
10
11 </head>
12 <body>
13 <div class="title">
14 <h1>
15 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <div class="entry">
23 <div class="title">Debian init.d boot script example for rsyslog</div>
24 <div class="date"> 2nd November 2013</div>
25 <div class="body"><p>If one of the points of switching to a new init system in Debian is
26 <a href="http://thomas.goirand.fr/blog/?p=147">to get rid of huge
27 init.d scripts</a>, I doubt we need to switch away from sysvinit and
28 init.d scripts at all. Here is an example init.d script, ie a rewrite
29 of /etc/init.d/rsyslog:</p>
30
31 <p><pre>
32 #!/lib/init/init-d-script
33 ### BEGIN INIT INFO
34 # Provides: rsyslog
35 # Required-Start: $remote_fs $time
36 # Required-Stop: umountnfs $time
37 # X-Stop-After: sendsigs
38 # Default-Start: 2 3 4 5
39 # Default-Stop: 0 1 6
40 # Short-Description: enhanced syslogd
41 # Description: Rsyslog is an enhanced multi-threaded syslogd.
42 # It is quite compatible to stock sysklogd and can be
43 # used as a drop-in replacement.
44 ### END INIT INFO
45 DESC="enhanced syslogd"
46 DAEMON=/usr/sbin/rsyslogd
47 </pre></p>
48
49 <p>Pretty minimalistic to me... For the record, the original sysv-rc
50 script was 137 lines, and the above is just 15 lines, most of it meta
51 info/comments.</p>
52
53 <p>How to do this, you ask? Well, one create a new script
54 /lib/init/init-d-script looking something like this:
55
56 <p><pre>
57 #!/bin/sh
58
59 # Define LSB log_* functions.
60 # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
61 # and status_of_proc is working.
62 . /lib/lsb/init-functions
63
64 #
65 # Function that starts the daemon/service
66
67 #
68 do_start()
69 {
70 # Return
71 # 0 if daemon has been started
72 # 1 if daemon was already running
73 # 2 if daemon could not be started
74 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
75 || return 1
76 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
77 $DAEMON_ARGS \
78 || return 2
79 # Add code here, if necessary, that waits for the process to be ready
80 # to handle requests from services started subsequently which depend
81 # on this one. As a last resort, sleep for some time.
82 }
83
84 #
85 # Function that stops the daemon/service
86 #
87 do_stop()
88 {
89 # Return
90 # 0 if daemon has been stopped
91 # 1 if daemon was already stopped
92 # 2 if daemon could not be stopped
93 # other if a failure occurred
94 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
95 RETVAL="$?"
96 [ "$RETVAL" = 2 ] && return 2
97 # Wait for children to finish too if this is a daemon that forks
98 # and if the daemon is only ever run from this initscript.
99 # If the above conditions are not satisfied then add some other code
100 # that waits for the process to drop all resources that could be
101 # needed by services started subsequently. A last resort is to
102 # sleep for some time.
103 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
104 [ "$?" = 2 ] && return 2
105 # Many daemons don't delete their pidfiles when they exit.
106 rm -f $PIDFILE
107 return "$RETVAL"
108 }
109
110 #
111 # Function that sends a SIGHUP to the daemon/service
112 #
113 do_reload() {
114 #
115 # If the daemon can reload its configuration without
116 # restarting (for example, when it is sent a SIGHUP),
117 # then implement that here.
118 #
119 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
120 return 0
121 }
122
123 SCRIPTNAME=$1
124 scriptbasename="$(basename $1)"
125 echo "SN: $scriptbasename"
126 if [ "$scriptbasename" != "init-d-library" ] ; then
127 script="$1"
128 shift
129 . $script
130 else
131 exit 0
132 fi
133
134 NAME=$(basename $DAEMON)
135 PIDFILE=/var/run/$NAME.pid
136
137 # Exit if the package is not installed
138 #[ -x "$DAEMON" ] || exit 0
139
140 # Read configuration variable file if it is present
141 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
142
143 # Load the VERBOSE setting and other rcS variables
144 . /lib/init/vars.sh
145
146 case "$1" in
147 start)
148 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
149 do_start
150 case "$?" in
151 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
152 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
153 esac
154 ;;
155 stop)
156 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
157 do_stop
158 case "$?" in
159 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
160 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
161 esac
162 ;;
163 status)
164 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
165 ;;
166 #reload|force-reload)
167 #
168 # If do_reload() is not implemented then leave this commented out
169 # and leave 'force-reload' as an alias for 'restart'.
170 #
171 #log_daemon_msg "Reloading $DESC" "$NAME"
172 #do_reload
173 #log_end_msg $?
174 #;;
175 restart|force-reload)
176 #
177 # If the "reload" option is implemented then remove the
178 # 'force-reload' alias
179 #
180 log_daemon_msg "Restarting $DESC" "$NAME"
181 do_stop
182 case "$?" in
183 0|1)
184 do_start
185 case "$?" in
186 0) log_end_msg 0 ;;
187 1) log_end_msg 1 ;; # Old process is still running
188 *) log_end_msg 1 ;; # Failed to start
189 esac
190 ;;
191 *)
192 # Failed to stop
193 log_end_msg 1
194 ;;
195 esac
196 ;;
197 *)
198 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
199 exit 3
200 ;;
201 esac
202
203 :
204 </pre></p>
205
206 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
207 lot. I did not really polish the approach, so it might not always
208 work out of the box, but you get the idea. I did not try very hard to
209 optimize it nor make it more robust either.</p>
210
211 <p>A better argument for switching init system in Debian than reducing
212 the size of init scripts (which is a good thing to do anyway), is to
213 get boot system that is able to handle the kernel events sensibly and
214 robustly, and do not depend on the boot to run sequentially. The boot
215 and the kernel have not behaved sequentially in years.</p>
216 </div>
217
218 <div class="tags">Tags: <a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.</div>
219
220
221 </div>
222
223
224
225
226 <div id="sidebar">
227
228
229
230 <h2>Archive</h2>
231 <ul>
232
233 <li>2023
234 <ul>
235
236 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
237
238 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
239
240 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/03/">March (1)</a></li>
241
242 </ul></li>
243
244 <li>2022
245 <ul>
246
247 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
248
249 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
250
251 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
252
253 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
254
255 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
256
257 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
258
259 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
260
261 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
262
263 </ul></li>
264
265 <li>2021
266 <ul>
267
268 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
269
270 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
271
272 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
273
274 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
275
276 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
277
278 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
279
280 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
281
282 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
283
284 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
285
286 </ul></li>
287
288 <li>2020
289 <ul>
290
291 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
292
293 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
294
295 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
296
297 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
298
299 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
300
301 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
302
303 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
304
305 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
306
307 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
308
309 </ul></li>
310
311 <li>2019
312 <ul>
313
314 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
315
316 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
317
318 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
319
320 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
321
322 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
323
324 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
325
326 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
327
328 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
329
330 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
331
332 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
333
334 </ul></li>
335
336 <li>2018
337 <ul>
338
339 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
340
341 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
342
343 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
344
345 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
346
347 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
348
349 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
350
351 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
352
353 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
354
355 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
356
357 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
358
359 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
360
361 </ul></li>
362
363 <li>2017
364 <ul>
365
366 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
367
368 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
369
370 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
371
372 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
373
374 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
375
376 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
377
378 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
379
380 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
381
382 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
383
384 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
385
386 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
387
388 </ul></li>
389
390 <li>2016
391 <ul>
392
393 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
394
395 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
396
397 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
398
399 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
400
401 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
402
403 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
404
405 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
406
407 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
408
409 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
410
411 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
412
413 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
414
415 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
416
417 </ul></li>
418
419 <li>2015
420 <ul>
421
422 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
423
424 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
425
426 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
427
428 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
429
430 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
431
432 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
433
434 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
435
436 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
437
438 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
439
440 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
441
442 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
443
444 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
445
446 </ul></li>
447
448 <li>2014
449 <ul>
450
451 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
452
453 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
454
455 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
456
457 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
458
459 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
460
461 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
462
463 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
464
465 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
466
467 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
468
469 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
470
471 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
472
473 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
474
475 </ul></li>
476
477 <li>2013
478 <ul>
479
480 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
481
482 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
483
484 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
485
486 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
487
488 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
489
490 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
491
492 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
493
494 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
495
496 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
497
498 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
499
500 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
501
502 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
503
504 </ul></li>
505
506 <li>2012
507 <ul>
508
509 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
510
511 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
512
513 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
514
515 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
516
517 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
518
519 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
520
521 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
522
523 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
524
525 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
526
527 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
528
529 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
530
531 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
532
533 </ul></li>
534
535 <li>2011
536 <ul>
537
538 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
539
540 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
541
542 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
543
544 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
545
546 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
547
548 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
549
550 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
551
552 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
553
554 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
555
556 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
557
558 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
559
560 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
561
562 </ul></li>
563
564 <li>2010
565 <ul>
566
567 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
568
569 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
570
571 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
572
573 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
574
575 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
576
577 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
578
579 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
580
581 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
582
583 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
584
585 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
586
587 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
588
589 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
590
591 </ul></li>
592
593 <li>2009
594 <ul>
595
596 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
597
598 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
599
600 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
601
602 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
603
604 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
605
606 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
607
608 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
609
610 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
611
612 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
613
614 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
615
616 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
617
618 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
619
620 </ul></li>
621
622 <li>2008
623 <ul>
624
625 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
626
627 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
628
629 </ul></li>
630
631 </ul>
632
633
634
635 <h2>Tags</h2>
636 <ul>
637
638 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
639
640 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
641
642 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
643
644 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
645
646 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
647
648 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
649
650 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
651
652 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
653
654 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
655
656 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (189)</a></li>
657
658 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
659
660 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
661
662 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
663
664 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
665
666 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (30)</a></li>
667
668 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
669
670 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (445)</a></li>
671
672 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
673
674 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
675
676 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
677
678 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
679
680 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
681
682 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
683
684 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
685
686 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
687
688 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
689
690 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
691
692 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
693
694 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
695
696 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
697
698 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (4)</a></li>
699
700 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
701
702 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
703
704 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
705
706 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
707
708 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (44)</a></li>
709
710 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (14)</a></li>
711
712 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
713
714 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (320)</a></li>
715
716 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
717
718 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
719
720 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
721
722 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
723
724 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
725
726 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
727
728 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
729
730 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
731
732 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
733
734 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
735
736 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
737
738 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
739
740 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
741
742 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (59)</a></li>
743
744 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
745
746 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
747
748 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (74)</a></li>
749
750 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
751
752 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
753
754 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (64)</a></li>
755
756 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
757
758 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
759
760 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
761
762 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
763
764 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (77)</a></li>
765
766 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
767
768 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
769
770 </ul>
771
772
773 </div>
774 <p style="text-align: right">
775 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
776 </p>
777
778 </body>
779 </html>