]> 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="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9
10
11 </head>
12 <body>
13 <div class="title">
14 <h1>
15 <a href="http://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="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://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>2020
234 <ul>
235
236 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
237
238 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
239
240 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
241
242 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
243
244 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
245
246 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
247
248 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
249
250 </ul></li>
251
252 <li>2019
253 <ul>
254
255 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
256
257 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
258
259 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
260
261 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
262
263 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
264
265 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
266
267 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
268
269 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
270
271 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
272
273 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
274
275 </ul></li>
276
277 <li>2018
278 <ul>
279
280 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
281
282 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
283
284 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
285
286 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
287
288 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
289
290 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
291
292 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
293
294 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
295
296 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
297
298 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
299
300 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
301
302 </ul></li>
303
304 <li>2017
305 <ul>
306
307 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
308
309 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
310
311 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
312
313 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
314
315 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
316
317 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
318
319 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
320
321 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
322
323 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
324
325 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
326
327 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
328
329 </ul></li>
330
331 <li>2016
332 <ul>
333
334 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
335
336 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
337
338 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
339
340 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
341
342 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
343
344 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
345
346 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
347
348 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
349
350 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
351
352 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
353
354 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
355
356 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
357
358 </ul></li>
359
360 <li>2015
361 <ul>
362
363 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
364
365 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
366
367 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
368
369 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
370
371 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
372
373 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
374
375 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
376
377 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
378
379 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
380
381 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
382
383 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
384
385 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
386
387 </ul></li>
388
389 <li>2014
390 <ul>
391
392 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
393
394 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
395
396 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
397
398 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
399
400 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
401
402 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
403
404 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
405
406 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
407
408 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
409
410 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
411
412 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
413
414 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
415
416 </ul></li>
417
418 <li>2013
419 <ul>
420
421 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
422
423 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
424
425 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
426
427 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
428
429 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
430
431 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
432
433 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
434
435 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
436
437 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
438
439 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
440
441 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
442
443 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
444
445 </ul></li>
446
447 <li>2012
448 <ul>
449
450 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
451
452 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
453
454 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
455
456 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
457
458 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
459
460 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
461
462 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
463
464 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
465
466 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
467
468 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
469
470 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
471
472 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
473
474 </ul></li>
475
476 <li>2011
477 <ul>
478
479 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
480
481 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
482
483 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
484
485 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
486
487 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
488
489 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
490
491 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
492
493 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
494
495 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
496
497 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
498
499 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
500
501 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
502
503 </ul></li>
504
505 <li>2010
506 <ul>
507
508 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
509
510 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
511
512 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
513
514 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
515
516 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
517
518 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
519
520 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
521
522 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
523
524 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
525
526 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
527
528 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
529
530 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
531
532 </ul></li>
533
534 <li>2009
535 <ul>
536
537 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
538
539 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
540
541 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
542
543 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
544
545 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
546
547 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
548
549 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
550
551 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
552
553 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
554
555 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
556
557 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
558
559 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
560
561 </ul></li>
562
563 <li>2008
564 <ul>
565
566 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
567
568 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
569
570 </ul></li>
571
572 </ul>
573
574
575
576 <h2>Tags</h2>
577 <ul>
578
579 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (16)</a></li>
580
581 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
582
583 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
584
585 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
586
587 <li><a href="http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
588
589 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (11)</a></li>
590
591 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
592
593 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
594
595 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
596
597 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (173)</a></li>
598
599 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
600
601 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (6)</a></li>
602
603 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
604
605 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (17)</a></li>
606
607 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (26)</a></li>
608
609 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
610
611 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (420)</a></li>
612
613 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
614
615 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
616
617 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
618
619 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
620
621 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
622
623 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
624
625 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
626
627 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
628
629 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (22)</a></li>
630
631 <li><a href="http://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
632
633 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
634
635 <li><a href="http://people.skolelinux.org/pere/blog/tags/lego">lego (4)</a></li>
636
637 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
638
639 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
640
641 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
642
643 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
644
645 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (42)</a></li>
646
647 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (13)</a></li>
648
649 <li><a href="http://people.skolelinux.org/pere/blog/tags/noark5">noark5 (22)</a></li>
650
651 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (314)</a></li>
652
653 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (197)</a></li>
654
655 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (38)</a></li>
656
657 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
658
659 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
660
661 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (111)</a></li>
662
663 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
664
665 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
666
667 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
668
669 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
670
671 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (12)</a></li>
672
673 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
674
675 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
676
677 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
678
679 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (58)</a></li>
680
681 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
682
683 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
684
685 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (70)</a></li>
686
687 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
688
689 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (12)</a></li>
690
691 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (60)</a></li>
692
693 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
694
695 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
696
697 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
698
699 <li><a href="http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (18)</a></li>
700
701 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (74)</a></li>
702
703 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
704
705 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
706
707 </ul>
708
709
710 </div>
711 <p style="text-align: right">
712 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
713 </p>
714
715 </body>
716 </html>