]> pere.pagekite.me Git - homepage.git/blob - blog/tags/bootsystem/index.html
492b6d4ecf8d5f0fcec7eca1693f1f8bb82f714c
[homepage.git] / blog / tags / bootsystem / index.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: Entries Tagged bootsystem</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 <link rel="alternate" title="RSS Feed" href="bootsystem.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21 <h3>Entries tagged "bootsystem".</h3>
22
23 <div class="entry">
24 <div class="title">
25 <a href="https://people.skolelinux.org/pere/blog/The_SysVinit_upstream_project_just_migrated_to_git.html">The SysVinit upstream project just migrated to git</a>
26 </div>
27 <div class="date">
28 18th February 2018
29 </div>
30 <div class="body">
31 <p>Surprising as it might sound, there are still computers using the
32 traditional Sys V init system, and there probably will be until
33 systemd start working on Hurd and FreeBSD.
34 <a href="https://savannah.nongnu.org/projects/sysvinit">The upstream
35 project still exist</a>, though, and up until today, the upstream
36 source was available from Savannah via subversion. I am happy to
37 report that this just changed.</p>
38
39 <p>The upstream source is now in Git, and consist of three
40 repositories:</p>
41
42 <ul>
43
44 <li><a href="http://git.savannah.nongnu.org/cgit/sysvinit.git">sysvinit</a></li>
45 <li><a href="http://git.savannah.nongnu.org/cgit/sysvinit/insserv.git">insserv</a></li>
46 <li><a href="http://git.savannah.nongnu.org/cgit/sysvinit/startpar.git">startpar</a></li>
47
48 </ul>
49
50 <p>I do not really spend much time on the project these days, and I
51 has mostly retired, but found it best to migrate the source to a good
52 version control system to help those willing to move it forward.</p>
53
54 <p>As usual, if you use Bitcoin and want to show your support of my
55 activities, please send Bitcoin donations to my address
56 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
57
58 </div>
59 <div class="tags">
60
61
62 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
63
64
65 </div>
66 </div>
67 <div class="padding"></div>
68
69 <div class="entry">
70 <div class="title">
71 <a href="https://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html">Unlocking HTC Desire HD on Linux using unruu and fastboot</a>
72 </div>
73 <div class="date">
74 7th July 2016
75 </div>
76 <div class="body">
77 <p>Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
78 to be a slight challenge. Here is the recipe if I ever need to do it
79 again. It all started by me wanting to try the recipe to set up
80 <a href="https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy">an
81 hardened Android installation</a> from the Tor project blog on a
82 device I had access to. It is a old mobile phone with a broken
83 microphone The initial idea had been to just
84 <a href="http://wiki.cyanogenmod.org/w/Install_CM_for_ace">install
85 CyanogenMod on it</a>, but did not quite find time to start on it
86 until a few days ago.</p>
87
88 <p>The unlock process is supposed to be simple: (1) Boot into the boot
89 loader (press volume down and power at the same time), (2) select
90 'fastboot' before (3) connecting the device via USB to a Linux
91 machine, (4) request the device identifier token by running 'fastboot
92 oem get_identifier_token', (5) request the device unlocking key using
93 the <a href="http://www.htcdev.com/bootloader/">HTC developer web
94 site</a> and unlock the phone using the key file emailed to you.</p>
95
96 <p>Unfortunately, this only work fi you have hboot version 2.00.0029
97 or newer, and the device I was working on had 2.00.0027. This
98 apparently can be easily fixed by downloading a Windows program and
99 running it on your Windows machine, if you accept the terms Microsoft
100 require you to accept to use Windows - which I do not. So I had to
101 come up with a different approach. I got a lot of help from AndyCap
102 on #nuug, and would not have been able to get this working without
103 him.</p>
104
105 <p>First I needed to extract the hboot firmware from
106 <a href="http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00.0029.exe">the
107 windows binary for HTC Desire HD</a> downloaded as 'the RUU' from HTC.
108 For this there is is <a href="https://github.com/kmdm/unruu/">a github
109 project named unruu</a> using libunshield. The unshield tool did not
110 recognise the file format, but unruu worked and extracted rom.zip,
111 containing the new hboot firmware and a text file describing which
112 devices it would work for.</p>
113
114 <p>Next, I needed to get the new firmware into the device. For this I
115 followed some instructions
116 <a href="http://www.htc1guru.com/2013/09/new-ruu-zips-posted/">available
117 from HTC1Guru.com</a>, and ran these commands as root on a Linux
118 machine with Debian testing:</p>
119
120 <p><pre>
121 adb reboot-bootloader
122 fastboot oem rebootRUU
123 fastboot flash zip rom.zip
124 fastboot flash zip rom.zip
125 fastboot reboot
126 </pre></p>
127
128 <p>The flash command apparently need to be done twice to take effect,
129 as the first is just preparations and the second one do the flashing.
130 The adb command is just to get to the boot loader menu, so turning the
131 device on while holding volume down and the power button should work
132 too.</p>
133
134 <p>With the new hboot version in place I could start following the
135 instructions on the HTC developer web site. I got the device token
136 like this:</p>
137
138 <p><pre>
139 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
140 </pre>
141
142 <p>And once I got the unlock code via email, I could use it like
143 this:</p>
144
145 <p><pre>
146 fastboot flash unlocktoken Unlock_code.bin
147 </pre></p>
148
149 <p>And with that final step in place, the phone was unlocked and I
150 could start stuffing the software of my own choosing into the device.
151 So far I only inserted a replacement recovery image to wipe the phone
152 before I start. We will see what happen next. Perhaps I should
153 install <a href="https://www.debian.org/">Debian</a> on it. :)</p>
154
155 </div>
156 <div class="tags">
157
158
159 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>, <a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
160
161
162 </div>
163 </div>
164 <div class="padding"></div>
165
166 <div class="entry">
167 <div class="title">
168 <a href="https://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html">How to stay with sysvinit in Debian Jessie</a>
169 </div>
170 <div class="date">
171 22nd November 2014
172 </div>
173 <div class="body">
174 <p>By now, it is well known that Debian Jessie will not be using
175 sysvinit as its boot system by default. But how can one keep using
176 sysvinit in Jessie? It is fairly easy, and here are a few recipes,
177 courtesy of
178 <a href="http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html">Erich
179 Schubert</a> and
180 <a href="http://smcv.pseudorandom.co.uk/2014/still_universal/">Simon
181 McVittie</a>.
182
183 <p>If you already are using Wheezy and want to upgrade to Jessie and
184 keep sysvinit as your boot system, create a file
185 <tt>/etc/apt/preferences.d/use-sysvinit</tt> with this content before
186 you upgrade:</p>
187
188 <p><blockquote><pre>
189 Package: systemd-sysv
190 Pin: release o=Debian
191 Pin-Priority: -1
192 </pre></blockquote><p>
193
194 <p>This file content will tell apt and aptitude to not consider
195 installing systemd-sysv as part of any installation and upgrade
196 solution when resolving dependencies, and thus tell it to avoid
197 systemd as a default boot system. The end result should be that the
198 upgraded system keep using sysvinit.</p>
199
200 <p>If you are installing Jessie for the first time, there is no way to
201 get sysvinit installed by default (debootstrap used by
202 debian-installer have no option for this), but one can tell the
203 installer to switch to sysvinit before the first boot. Either by
204 using a kernel argument to the installer, or by adding a line to the
205 preseed file used. First, the kernel command line argument:
206
207 <p><blockquote><pre>
208 preseed/late_command="in-target apt-get install --purge -y sysvinit-core"
209 </pre></blockquote><p>
210
211 <p>Next, the line to use in a preseed file:</p>
212
213 <p><blockquote><pre>
214 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
215 </pre></blockquote><p>
216
217 <p>One can of course also do this after the first boot by installing
218 the sysvinit-core package.</p>
219
220 <p>I recommend only using sysvinit if you really need it, as the
221 sysvinit boot sequence in Debian have several hardware specific bugs
222 on Linux caused by the fact that it is unpredictable when hardware
223 devices show up during boot. But on the other hand, the new default
224 boot system still have a few rough edges I hope will be fixed before
225 Jessie is released.</p>
226
227 <p>Update 2014-11-26: Inspired by
228 <ahref="https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg">a
229 blog post by Torsten Glaser</a>, added --purge to the preseed
230 line.</p>
231
232 </div>
233 <div class="tags">
234
235
236 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>.
237
238
239 </div>
240 </div>
241 <div class="padding"></div>
242
243 <div class="entry">
244 <div class="title">
245 <a href="https://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html">Testing sysvinit from experimental in Debian Hurd</a>
246 </div>
247 <div class="date">
248 3rd February 2014
249 </div>
250 <div class="body">
251 <p>A few days ago I decided to try to help the Hurd people to get
252 their changes into sysvinit, to allow them to use the normal sysvinit
253 boot system instead of their old one. This follow up on the
254 <a href="https://teythoon.cryptobitch.de//categories/gsoc.html">great
255 Google Summer of Code work</a> done last summer by Justus Winter to
256 get Debian on Hurd working more like Debian on Linux. To get started,
257 I downloaded a prebuilt hard disk image from
258 <a href="http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz">http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz</a>,
259 and started it using virt-manager.</p>
260
261 <p>The first think I had to do after logging in (root without any
262 password) was to get the network operational. I followed
263 <a href="https://www.debian.org/ports/hurd/hurd-install">the
264 instructions on the Debian GNU/Hurd ports page</a> and ran these
265 commands as root to get the machine to accept a IP address from the
266 kvm internal DHCP server:</p>
267
268 <p><blockquote><pre>
269 settrans -fgap /dev/netdde /hurd/netdde
270 kill $(ps -ef|awk '/[p]finet/ { print $2}')
271 kill $(ps -ef|awk '/[d]evnode/ { print $2}')
272 dhclient /dev/eth0
273 </pre></blockquote></p>
274
275 <p>After this, the machine had internet connectivity, and I could
276 upgrade it and install the sysvinit packages from experimental and
277 enable it as the default boot system in Hurd.</p>
278
279 <p>But before I did that, I set a password on the root user, as ssh is
280 running on the machine it for ssh login to work a password need to be
281 set. Also, note that a bug somewhere in openssh on Hurd block
282 compression from working. Remember to turn that off on the client
283 side.</p>
284
285 <p>Run these commands as root to upgrade and test the new sysvinit
286 stuff:</p>
287
288 <p><blockquote><pre>
289 cat > /etc/apt/sources.list.d/experimental.list &lt;&lt;EOF
290 deb http://http.debian.net/debian/ experimental main
291 EOF
292 apt-get update
293 apt-get dist-upgrade
294 apt-get install -t experimental initscripts sysv-rc sysvinit \
295 sysvinit-core sysvinit-utils
296 update-alternatives --config runsystem
297 </pre></blockquote></p>
298
299 <p>To reboot after switching boot system, you have to use
300 <tt>reboot-hurd</tt> instead of just <tt>reboot</tt>, as there is not
301 yet a sysvinit process able to receive the signals from the normal
302 'reboot' command. After switching to sysvinit as the boot system,
303 upgrading every package and rebooting, the network come up with DHCP
304 after boot as it should, and the settrans/pkill hack mentioned at the
305 start is no longer needed. But for some strange reason, there are no
306 longer any login prompt in the virtual console, so I logged in using
307 ssh instead.
308
309 <p>Note that there are some race conditions in Hurd making the boot
310 fail some times. No idea what the cause is, but hope the Hurd porters
311 figure it out. At least Justus said on IRC (#debian-hurd on
312 irc.debian.org) that they are aware of the problem. A way to reduce
313 the impact is to upgrade to the Hurd packages built by Justus by
314 adding this repository to the machine:</p>
315
316 <p><blockquote><pre>
317 cat > /etc/apt/sources.list.d/hurd-ci.list &lt;&lt;EOF
318 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
319 EOF
320 </pre></blockquote></p>
321
322 <p>At the moment the prebuilt virtual machine get some packages from
323 http://ftp.debian-ports.org/debian, because some of the packages in
324 unstable do not yet include the required patches that are lingering in
325 BTS. This is the completely list of "unofficial" packages installed:</p>
326
327 <p><blockquote><pre>
328 # aptitude search '?narrow(?version(CURRENT),?origin(Debian Ports))'
329 i emacs - GNU Emacs editor (metapackage)
330 i gdb - GNU Debugger
331 i hurd-recommended - Miscellaneous translators
332 i isc-dhcp-client - ISC DHCP client
333 i isc-dhcp-common - common files used by all the isc-dhcp* packages
334 i libc-bin - Embedded GNU C Library: Binaries
335 i libc-dev-bin - Embedded GNU C Library: Development binaries
336 i libc0.3 - Embedded GNU C Library: Shared libraries
337 i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
338 i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
339 i multiarch-support - Transitional package to ensure multiarch compatibilit
340 i A x11-common - X Window System (X.Org) infrastructure
341 i xorg - X.Org X Window System
342 i A xserver-xorg - X.Org X server
343 i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
344 #
345 </pre></blockquote></p>
346
347 <p>All in all, testing hurd has been an interesting experience. :)
348 X.org did not work out of the box and I never took the time to follow
349 the porters instructions to fix it. This time I was interested in the
350 command line stuff.<p>
351
352 </div>
353 <div class="tags">
354
355
356 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>.
357
358
359 </div>
360 </div>
361 <div class="padding"></div>
362
363 <div class="entry">
364 <div class="title">
365 <a href="https://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html">Debian init.d boot script example for rsyslog</a>
366 </div>
367 <div class="date">
368 2nd November 2013
369 </div>
370 <div class="body">
371 <p>If one of the points of switching to a new init system in Debian is
372 <a href="http://thomas.goirand.fr/blog/?p=147">to get rid of huge
373 init.d scripts</a>, I doubt we need to switch away from sysvinit and
374 init.d scripts at all. Here is an example init.d script, ie a rewrite
375 of /etc/init.d/rsyslog:</p>
376
377 <p><pre>
378 #!/lib/init/init-d-script
379 ### BEGIN INIT INFO
380 # Provides: rsyslog
381 # Required-Start: $remote_fs $time
382 # Required-Stop: umountnfs $time
383 # X-Stop-After: sendsigs
384 # Default-Start: 2 3 4 5
385 # Default-Stop: 0 1 6
386 # Short-Description: enhanced syslogd
387 # Description: Rsyslog is an enhanced multi-threaded syslogd.
388 # It is quite compatible to stock sysklogd and can be
389 # used as a drop-in replacement.
390 ### END INIT INFO
391 DESC="enhanced syslogd"
392 DAEMON=/usr/sbin/rsyslogd
393 </pre></p>
394
395 <p>Pretty minimalistic to me... For the record, the original sysv-rc
396 script was 137 lines, and the above is just 15 lines, most of it meta
397 info/comments.</p>
398
399 <p>How to do this, you ask? Well, one create a new script
400 /lib/init/init-d-script looking something like this:
401
402 <p><pre>
403 #!/bin/sh
404
405 # Define LSB log_* functions.
406 # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
407 # and status_of_proc is working.
408 . /lib/lsb/init-functions
409
410 #
411 # Function that starts the daemon/service
412
413 #
414 do_start()
415 {
416 # Return
417 # 0 if daemon has been started
418 # 1 if daemon was already running
419 # 2 if daemon could not be started
420 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
421 || return 1
422 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
423 $DAEMON_ARGS \
424 || return 2
425 # Add code here, if necessary, that waits for the process to be ready
426 # to handle requests from services started subsequently which depend
427 # on this one. As a last resort, sleep for some time.
428 }
429
430 #
431 # Function that stops the daemon/service
432 #
433 do_stop()
434 {
435 # Return
436 # 0 if daemon has been stopped
437 # 1 if daemon was already stopped
438 # 2 if daemon could not be stopped
439 # other if a failure occurred
440 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
441 RETVAL="$?"
442 [ "$RETVAL" = 2 ] && return 2
443 # Wait for children to finish too if this is a daemon that forks
444 # and if the daemon is only ever run from this initscript.
445 # If the above conditions are not satisfied then add some other code
446 # that waits for the process to drop all resources that could be
447 # needed by services started subsequently. A last resort is to
448 # sleep for some time.
449 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
450 [ "$?" = 2 ] && return 2
451 # Many daemons don't delete their pidfiles when they exit.
452 rm -f $PIDFILE
453 return "$RETVAL"
454 }
455
456 #
457 # Function that sends a SIGHUP to the daemon/service
458 #
459 do_reload() {
460 #
461 # If the daemon can reload its configuration without
462 # restarting (for example, when it is sent a SIGHUP),
463 # then implement that here.
464 #
465 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
466 return 0
467 }
468
469 SCRIPTNAME=$1
470 scriptbasename="$(basename $1)"
471 echo "SN: $scriptbasename"
472 if [ "$scriptbasename" != "init-d-library" ] ; then
473 script="$1"
474 shift
475 . $script
476 else
477 exit 0
478 fi
479
480 NAME=$(basename $DAEMON)
481 PIDFILE=/var/run/$NAME.pid
482
483 # Exit if the package is not installed
484 #[ -x "$DAEMON" ] || exit 0
485
486 # Read configuration variable file if it is present
487 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
488
489 # Load the VERBOSE setting and other rcS variables
490 . /lib/init/vars.sh
491
492 case "$1" in
493 start)
494 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
495 do_start
496 case "$?" in
497 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
498 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
499 esac
500 ;;
501 stop)
502 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
503 do_stop
504 case "$?" in
505 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
506 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
507 esac
508 ;;
509 status)
510 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
511 ;;
512 #reload|force-reload)
513 #
514 # If do_reload() is not implemented then leave this commented out
515 # and leave 'force-reload' as an alias for 'restart'.
516 #
517 #log_daemon_msg "Reloading $DESC" "$NAME"
518 #do_reload
519 #log_end_msg $?
520 #;;
521 restart|force-reload)
522 #
523 # If the "reload" option is implemented then remove the
524 # 'force-reload' alias
525 #
526 log_daemon_msg "Restarting $DESC" "$NAME"
527 do_stop
528 case "$?" in
529 0|1)
530 do_start
531 case "$?" in
532 0) log_end_msg 0 ;;
533 1) log_end_msg 1 ;; # Old process is still running
534 *) log_end_msg 1 ;; # Failed to start
535 esac
536 ;;
537 *)
538 # Failed to stop
539 log_end_msg 1
540 ;;
541 esac
542 ;;
543 *)
544 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
545 exit 3
546 ;;
547 esac
548
549 :
550 </pre></p>
551
552 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
553 lot. I did not really polish the approach, so it might not always
554 work out of the box, but you get the idea. I did not try very hard to
555 optimize it nor make it more robust either.</p>
556
557 <p>A better argument for switching init system in Debian than reducing
558 the size of init scripts (which is a good thing to do anyway), is to
559 get boot system that is able to handle the kernel events sensibly and
560 robustly, and do not depend on the boot to run sequentially. The boot
561 and the kernel have not behaved sequentially in years.</p>
562
563 </div>
564 <div class="tags">
565
566
567 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>.
568
569
570 </div>
571 </div>
572 <div class="padding"></div>
573
574 <div class="entry">
575 <div class="title">
576 <a href="https://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html">How is booting into runlevel 1 different from single user boots?</a>
577 </div>
578 <div class="date">
579 4th August 2011
580 </div>
581 <div class="body">
582 <p>Wouter Verhelst have some
583 <a href="http://grep.be/blog/en/retorts/pere_kubuntu_boot">interesting
584 comments and opinions</a> on my blog post on
585 <a href="http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html">the
586 need to clean up /etc/rcS.d/ in Debian</a> and my blog post about
587 <a href="http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html">the
588 default KDE desktop in Debian</a>. I only have time to address one
589 small piece of his comment now, and though it best to address the
590 misunderstanding he bring forward:</p>
591
592 <p><blockquote>
593 Currently, a system admin has four options: [...] boot to a
594 single-user system (by adding 'single' to the kernel command line;
595 this runs rcS and rc1 scripts)
596 </blockquote></p>
597
598 <p>This make me believe Wouter believe booting into single user mode
599 and booting into runlevel 1 is the same. I am not surprised he
600 believe this, because it would make sense and is a quite sensible
601 thing to believe. But because the boot in Debian is slightly broken,
602 runlevel 1 do not work properly and it isn't the same as single user
603 mode. I'll try to explain what is actually happing, but it is a bit
604 hard to explain.</p>
605
606 <p>Single user mode is defined like this in /etc/inittab:
607 "<tt>~~:S:wait:/sbin/sulogin</tt>". This means the only thing that is
608 executed in single user mode is sulogin. Single user mode is a boot
609 state "between" the runlevels, and when booting into single user mode,
610 only the scripts in /etc/rcS.d/ are executed before the init process
611 enters the single user state. When switching to runlevel 1, the state
612 is in fact not ending in runlevel 1, but it passes through runlevel 1
613 and end up in the single user mode (see /etc/rc1.d/S03single, which
614 runs "init -t1 S" to switch to single user mode at the end of runlevel
615 1. It is confusing that the 'S' (single user) init mode is not the
616 mode enabled by /etc/rcS.d/ (which is more like the initial boot
617 mode).</p>
618
619 <p>This summary might make it clearer. When booting for the first
620 time into single user mode, the following commands are executed:
621 "<tt>/etc/init.d/rc S; /sbin/sulogin</tt>". When booting into
622 runlevel 1, the following commands are executed: "<tt>/etc/init.d/rc
623 S; /etc/init.d/rc 1; /sbin/sulogin</tt>". A problem show up when
624 trying to continue after visiting single user mode. Not all services
625 are started again as they should, causing the machine to end up in an
626 unpredicatble state. This is why Debian admins recommend rebooting
627 after visiting single user mode.</p>
628
629 <p>A similar problem with runlevel 1 is caused by the amount of
630 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
631 to runlevel 1, the services started from /etc/rcS.d/ are not properly
632 stopped when passing through the scripts in /etc/rc1.d/, and not
633 started again when switching away from runlevel 1 to the runlevels
634 2-5. I believe the problem is best fixed by moving all the scripts
635 out of /etc/rcS.d/ that are not <strong>required</strong> to get a
636 functioning single user mode during boot.</p>
637
638 <p>I have spent several years investigating the Debian boot system,
639 and discovered this problem a few years ago. I suspect it originates
640 from when sysvinit was introduced into Debian, a long time ago.</p>
641
642 </div>
643 <div class="tags">
644
645
646 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>.
647
648
649 </div>
650 </div>
651 <div class="padding"></div>
652
653 <div class="entry">
654 <div class="title">
655 <a href="https://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html">What should start from /etc/rcS.d/ in Debian? - almost nothing</a>
656 </div>
657 <div class="date">
658 30th July 2011
659 </div>
660 <div class="body">
661 <p>In the Debian boot system, several packages include scripts that
662 are started from /etc/rcS.d/. In fact, there is a bite more of them
663 than make sense, and this causes a few problems. What kind of
664 problems, you might ask. There are at least two problems. The first
665 is that it is not possible to recover a machine after switching to
666 runlevel 1. One need to actually reboot to get the machine back to
667 the expected state. The other is that single user boot will sometimes
668 run into problems because some of the subsystems are activated before
669 the root login is presented, causing problems when trying to recover a
670 machine from a problem in that subsystem. A minor additional point is
671 that moving more scripts out of rcS.d/ and into the other rc#.d/
672 directories will increase the amount of scripts that can run in
673 parallel during boot, and thus decrease the boot time.</p>
674
675 <p>So, which scripts should start from rcS.d/. In short, only the
676 scripts that _have_ to execute before the root login prompt is
677 presented during a single user boot should go there. Everything else
678 should go into the numeric runlevels. This means things like
679 lm-sensors, fuse and x11-common should not run from rcS.d, but from
680 the numeric runlevels. Today in Debian, there are around 115 init.d
681 scripts that are started from rcS.d/, and most of them should be moved
682 out. Do your package have one of them? Please help us make single
683 user and runlevel 1 better by moving it.</p>
684
685 <p>Scripts setting up the screen, keyboard, system partitions
686 etc. should still be started from rcS.d/, but there is for example no
687 need to have the network enabled before the single user login prompt
688 is presented.</p>
689
690 <p>As always, things are not so easy to fix as they sound. To keep
691 Debian systems working while scripts migrate and during upgrades, the
692 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
693 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
694 and the next ones can only be moved when their dependencies have been
695 moved first. This migration must be done sequentially while we ensure
696 that the package system upgrade packages in the right order to keep
697 the system state correct. This will require some coordination when it
698 comes to network related packages, but most of the packages with
699 scripts that should migrate do not have anything in rcS.d/ depending
700 on them. Some packages have already been updated, like the sudo
701 package, while others are still left to do. I wish I had time to work
702 on this myself, but real live constrains make it unlikely that I will
703 find time to push this forward.</p>
704
705 </div>
706 <div class="tags">
707
708
709 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>.
710
711
712 </div>
713 </div>
714 <div class="padding"></div>
715
716 <div class="entry">
717 <div class="title">
718 <a href="https://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">Automatic upgrade testing from Lenny to Squeeze</a>
719 </div>
720 <div class="date">
721 11th June 2010
722 </div>
723 <div class="body">
724 <p>The last few days I have done some upgrade testing in Debian, to
725 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
726 have been discovered and reported in the process
727 (<a href="http://bugs.debian.org/585410">#585410</a> in nagios3-cgi,
728 <a href="http://bugs.debian.org/584879">#584879</a> already fixed in
729 enscript and <a href="http://bugs.debian.org/584861">#584861</a> in
730 kdebase-workspace-data), and to get a more regular testing going on, I
731 am working on a script to automate the test.</p>
732
733 <p>The idea is to create a Lenny chroot and use tasksel to install a
734 Gnome or KDE desktop installation inside the chroot before upgrading
735 it. To ensure no services are started in the chroot, a policy-rc.d
736 script is inserted. To make sure tasksel believe it is to install a
737 desktop on a laptop, the tasksel tests are replaced in the chroot
738 (only acceptable because this is a throw-away chroot).</p>
739
740 <p>A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
741 currently always fail because udev refuses to upgrade with the kernel
742 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
743 is created. The bug report
744 <a href="http://bugs.debian.org/566000">#566000</a> make me suspect
745 this problem do not trigger in a chroot, but I touch the file anyway
746 to make sure the upgrade go well. Testing on virtual and real
747 hardware have failed me because of udev so far, and creating this file
748 do the trick in such settings anyway. This is a
749 <a href="http://www.linuxquestions.org/questions/debian-26/failed-dist-upgrade-due-to-udev-config_sysfs_deprecated-nonsense-804130/">known
750 issue</a> and the current udev behaviour is intended by the udev
751 maintainer because he lack the resources to rewrite udev to keep
752 working with old kernels or something like that. I really wish the
753 udev upstream would keep udev backwards compatible, to avoid such
754 upgrade problem, but given that they fail to do so, I guess
755 documenting the way out of this mess is the best option we got for
756 Debian Squeeze.</p>
757
758 <p>Anyway, back to the task at hand, testing upgrades. This test
759 script, which I call <tt>upgrade-test</tt> for now, is doing the
760 trick:</p>
761
762 <blockquote><pre>
763 #!/bin/sh
764 set -ex
765
766 if [ "$1" ] ; then
767 desktop=$1
768 else
769 desktop=gnome
770 fi
771
772 from=lenny
773 to=squeeze
774
775 exec &lt; /dev/null
776 unset LANG
777 mirror=http://ftp.skolelinux.org/debian
778 tmpdir=chroot-$from-upgrade-$to-$desktop
779 fuser -mv .
780 debootstrap $from $tmpdir $mirror
781 chroot $tmpdir aptitude update
782 cat > $tmpdir/usr/sbin/policy-rc.d &lt;&lt;EOF
783 #!/bin/sh
784 exit 101
785 EOF
786 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
787 exit_cleanup() {
788 umount $tmpdir/proc
789 }
790 mount -t proc proc $tmpdir/proc
791 # Make sure proc is unmounted also on failure
792 trap exit_cleanup EXIT INT
793
794 chroot $tmpdir aptitude -y install debconf-utils
795
796 # Make sure tasksel autoselection trigger. It need the test scripts
797 # to return the correct answers.
798 echo tasksel tasksel/desktop multiselect $desktop | \
799 chroot $tmpdir debconf-set-selections
800
801 # Include the desktop and laptop task
802 for test in desktop laptop ; do
803 echo > $tmpdir/usr/lib/tasksel/tests/$test &lt;&lt;EOF
804 #!/bin/sh
805 exit 2
806 EOF
807 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
808 done
809
810 DEBIAN_FRONTEND=noninteractive
811 DEBIAN_PRIORITY=critical
812 export DEBIAN_FRONTEND DEBIAN_PRIORITY
813 chroot $tmpdir tasksel --new-install
814
815 echo deb $mirror $to main > $tmpdir/etc/apt/sources.list
816 chroot $tmpdir aptitude update
817 touch $tmpdir/etc/udev/kernel-upgrade
818 chroot $tmpdir aptitude -y dist-upgrade
819 fuser -mv
820 </pre></blockquote>
821
822 <p>I suspect it would be useful to test upgrades with both apt-get and
823 with aptitude, but I have not had time to look at how they behave
824 differently so far. I hope to get a cron job running to do the test
825 regularly and post the result on the web. The Gnome upgrade currently
826 work, while the KDE upgrade fail because of the bug in
827 kdebase-workspace-data</p>
828
829 <p>I am not quite sure what kind of extract from the huge upgrade logs
830 (KDE 167 KiB, Gnome 516 KiB) it make sense to include in this blog
831 post, so I will refrain from trying. I can report that for Gnome,
832 aptitude report 760 packages upgraded, 448 newly installed, 129 to
833 remove and 1 not upgraded and 1024MB need to be downloaded while for
834 KDE the same numbers are 702 packages upgraded, 507 newly installed,
835 193 to remove and 0 not upgraded and 1117MB need to be downloaded</p>
836
837 <p>I am very happy to notice that the Gnome desktop + laptop upgrade
838 is able to migrate to dependency based boot sequencing and parallel
839 booting without a hitch. Was unsure if there were still bugs with
840 packages failing to clean up their obsolete init.d script during
841 upgrades, and no such problem seem to affect the Gnome desktop+laptop
842 packages.</p>
843
844 </div>
845 <div class="tags">
846
847
848 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/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
849
850
851 </div>
852 </div>
853 <div class="padding"></div>
854
855 <div class="entry">
856 <div class="title">
857 <a href="https://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html">Upstart or sysvinit - as init.d scripts see it</a>
858 </div>
859 <div class="date">
860 6th June 2010
861 </div>
862 <div class="body">
863 <p>If Debian is to migrate to upstart on Linux, I expect some init.d
864 scripts to migrate (some of) their operations to upstart job while
865 keeping the init.d for hurd and kfreebsd. The packages with such
866 needs will need a way to get their init.d scripts to behave
867 differently when used with sysvinit and with upstart. Because of
868 this, I had a look at the environment variables set when a init.d
869 script is running under upstart, and when it is not.</p>
870
871 <p>With upstart, I notice these environment variables are set when a
872 script is started from rcS.d/ (ignoring some irrelevant ones like
873 COLUMNS):</p>
874
875 <blockquote><pre>
876 DEFAULT_RUNLEVEL=2
877 previous=N
878 PREVLEVEL=
879 RUNLEVEL=
880 runlevel=S
881 UPSTART_EVENTS=startup
882 UPSTART_INSTANCE=
883 UPSTART_JOB=rc-sysinit
884 </pre></blockquote>
885
886 <p>With sysvinit, these environment variables are set for the same
887 script.</p>
888
889 <blockquote><pre>
890 INIT_VERSION=sysvinit-2.88
891 previous=N
892 PREVLEVEL=N
893 RUNLEVEL=S
894 runlevel=S
895 </pre></blockquote>
896
897 <p>The RUNLEVEL and PREVLEVEL environment variables passed on from
898 sysvinit are not set by upstart. Not sure if it is intentional or not
899 to not be compatible with sysvinit in this regard.</p>
900
901 <p>For scripts needing to behave differently when upstart is used,
902 looking for the UPSTART_JOB environment variable seem to be a good
903 choice.</p>
904
905 </div>
906 <div class="tags">
907
908
909 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>.
910
911
912 </div>
913 </div>
914 <div class="padding"></div>
915
916 <div class="entry">
917 <div class="title">
918 <a href="https://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html">KDM fail at boot with NVidia cards - and no one try to fix it?</a>
919 </div>
920 <div class="date">
921 1st June 2010
922 </div>
923 <div class="body">
924 <p>It is strange to watch how a bug in Debian causing KDM to fail to
925 start at boot when an NVidia video card is used is handled. The
926 problem seem to be that the nvidia X.org driver uses a long time to
927 initialize, and this duration is longer than kdm is configured to
928 wait.</p>
929
930 <p>I came across two bugs related to this issue,
931 <a href="http://bugs.debian.org/583312">#583312</a> initially filed
932 against initscripts and passed on to nvidia-glx when it became obvious
933 that the nvidia drivers were involved, and
934 <a href="http://bugs.debian.org/524751">#524751</a> initially filed against
935 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.</p>
936
937 <p>To me, it seem that no-one is interested in actually solving the
938 problem nvidia video card owners experience and make sure the Debian
939 distribution work out of the box for these users. The nvidia driver
940 maintainers expect kdm to be set up to wait longer, while kdm expect
941 the nvidia driver maintainers to fix the driver to start faster, and
942 while they wait for each other I guess the users end up switching to a
943 distribution that work for them. I have no idea what the solution is,
944 but I am pretty sure that waiting for each other is not it.</p>
945
946 <p>I wonder why we end up handling bugs this way.</p>
947
948 </div>
949 <div class="tags">
950
951
952 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/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
953
954
955 </div>
956 </div>
957 <div class="padding"></div>
958
959 <div class="entry">
960 <div class="title">
961 <a href="https://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html">Parallellized boot seem to hold up well in Debian/testing</a>
962 </div>
963 <div class="date">
964 27th May 2010
965 </div>
966 <div class="body">
967 <p>A few days ago, parallel booting was enabled in Debian/testing.
968 The feature seem to hold up pretty well, but three fairly serious
969 issues are known and should be solved:
970
971 <p><ul>
972
973 <li>The wicd package seen to
974 <a href="http://bugs.debian.org/508289">break NFS mounting</a> and
975 <a href="http://bugs.debian.org/581586">network setup</a> when
976 parallel booting is enabled. No idea why, but the wicd maintainer
977 seem to be on the case.</li>
978
979 <li>The nvidia X driver seem to
980 <a href="http://bugs.debian.org/583312">have a race condition</a>
981 triggered more easily when parallel booting is in effect. The
982 maintainer is on the case.</li>
983
984 <li>The sysv-rc package fail to properly enable dependency based boot
985 sequencing (the shutdown is broken) when old file-rc users
986 <a href="http://bugs.debian.org/575080">try to switch back</a> to
987 sysv-rc. One way to solve it would be for file-rc to create
988 /etc/init.d/.legacy-bootordering, and another is to try to make
989 sysv-rc more robust. Will investigate some more and probably upload a
990 workaround in sysv-rc to help those trying to move from file-rc to
991 sysv-rc get a working shutdown.</li>
992
993 </ul></p>
994
995 <p>All in all not many surprising issues, and all of them seem
996 solvable before Squeeze is released. In addition to these there are
997 some packages with bugs in their dependencies and run level settings,
998 which I expect will be fixed in a reasonable time span.</p>
999
1000 <p>If you report any problems with dependencies in init.d scripts to
1001 the BTS, please usertag the report to get it to show up at
1002 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
1003 list of usertagged bugs related to this</a>.</p>
1004
1005 <p>Update: Correct bug number to file-rc issue.</p>
1006
1007 </div>
1008 <div class="tags">
1009
1010
1011 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/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
1012
1013
1014 </div>
1015 </div>
1016 <div class="padding"></div>
1017
1018 <div class="entry">
1019 <div class="title">
1020 <a href="https://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html">Parallellized boot is now the default in Debian/unstable</a>
1021 </div>
1022 <div class="date">
1023 14th May 2010
1024 </div>
1025 <div class="body">
1026 <p>Since this evening, parallel booting is the default in
1027 Debian/unstable for machines using dependency based boot sequencing.
1028 Apparently the testing of concurrent booting has been wider than
1029 expected, if I am to believe the
1030 <a href="http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
1031 on debian-devel@</a>, and I concluded a few days ago to move forward
1032 with the feature this weekend, to give us some time to detect any
1033 remaining problems before Squeeze is frozen. If serious problems are
1034 detected, it is simple to change the default back to sequential boot.
1035 The upload of the new sysvinit package also activate a new upstream
1036 version.</p>
1037
1038 More information about
1039 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
1040 based boot sequencing</a> is available from the Debian wiki. It is
1041 currently possible to disable parallel booting when one run into
1042 problems caused by it, by adding this line to /etc/default/rcS:</p>
1043
1044 <blockquote><pre>
1045 CONCURRENCY=none
1046 </pre></blockquote>
1047
1048 <p>If you report any problems with dependencies in init.d scripts to
1049 the BTS, please usertag the report to get it to show up at
1050 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
1051 list of usertagged bugs related to this</a>.</p>
1052
1053 </div>
1054 <div class="tags">
1055
1056
1057 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/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
1058
1059
1060 </div>
1061 </div>
1062 <div class="padding"></div>
1063
1064 <div class="entry">
1065 <div class="title">
1066 <a href="https://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html">systemd, an interesting alternative to upstart</a>
1067 </div>
1068 <div class="date">
1069 13th May 2010
1070 </div>
1071 <div class="body">
1072 <p>The last few days a new boot system called
1073 <a href="http://www.freedesktop.org/wiki/Software/systemd">systemd</a>
1074 has been
1075 <a href="http://0pointer.de/blog/projects/systemd.html">introduced</a>
1076
1077 to the free software world. I have not yet had time to play around
1078 with it, but it seem to be a very interesting alternative to
1079 <a href="http://upstart.ubuntu.com/">upstart</a>, and might prove to be
1080 a good alternative for Debian when we are able to switch to an event
1081 based boot system. Tollef is
1082 <a href="http://bugs.debian.org/580814">in the process</a> of getting
1083 systemd into Debian, and I look forward to seeing how well it work. I
1084 like the fact that systemd handles init.d scripts with dependency
1085 information natively, allowing them to run in parallel where upstart
1086 at the moment do not.</p>
1087
1088 <p>Unfortunately do systemd have the same problem as upstart regarding
1089 platform support. It only work on recent Linux kernels, and also need
1090 some new kernel features enabled to function properly. This means
1091 kFreeBSD and Hurd ports of Debian will need a port or a different boot
1092 system. Not sure how that will be handled if systemd proves to be the
1093 way forward.</p>
1094
1095 <p>In the mean time, based on the
1096 <a href="http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
1097 on debian-devel@</a> regarding parallel booting in Debian, I have
1098 decided to enable full parallel booting as the default in Debian as
1099 soon as possible (probably this weekend or early next week), to see if
1100 there are any remaining serious bugs in the init.d dependencies. A
1101 new version of the sysvinit package implementing this change is
1102 already in experimental. If all go well, Squeeze will be released
1103 with parallel booting enabled by default.</p>
1104
1105 </div>
1106 <div class="tags">
1107
1108
1109 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>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
1110
1111
1112 </div>
1113 </div>
1114 <div class="padding"></div>
1115
1116 <div class="entry">
1117 <div class="title">
1118 <a href="https://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html">Parallellizing the boot in Debian Squeeze - ready for wider testing</a>
1119 </div>
1120 <div class="date">
1121 6th May 2010
1122 </div>
1123 <div class="body">
1124 <p>These days, the init.d script dependencies in Squeeze are quite
1125 complete, so complete that it is actually possible to run all the
1126 init.d scripts in parallell based on these dependencies. If you want
1127 to test your Squeeze system, make sure
1128 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
1129 based boot sequencing</a> is enabled, and add this line to
1130 /etc/default/rcS:</p>
1131
1132 <blockquote><pre>
1133 CONCURRENCY=makefile
1134 </pre></blockquote>
1135
1136 <p>That is it. It will cause sysv-rc to use the startpar tool to run
1137 scripts in parallel using the dependency information stored in
1138 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
1139 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
1140 to try to start the kdm and gdm scripts as early as possible, and will
1141 start the facilities required by kdm or gdm as early as possible to
1142 make this happen.</p>
1143
1144 <p>Give it a try, and see if you like the result. If some services
1145 fail to start properly, it is most likely because they have incomplete
1146 init.d script dependencies in their startup script (or some of their
1147 dependent scripts have incomplete dependencies). Report bugs and get
1148 the package maintainers to fix it. :)</p>
1149
1150 <p>Running scripts in parallel could be the default in Debian when we
1151 manage to get the init.d script dependencies complete and correct. I
1152 expect we will get there in Squeeze+1, if we get manage to test and
1153 fix the remaining issues.</p>
1154
1155 <p>If you report any problems with dependencies in init.d scripts to
1156 the BTS, please usertag the report to get it to show up at
1157 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
1158 list of usertagged bugs related to this</a>.</p>
1159
1160 </div>
1161 <div class="tags">
1162
1163
1164 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>.
1165
1166
1167 </div>
1168 </div>
1169 <div class="padding"></div>
1170
1171 <div class="entry">
1172 <div class="title">
1173 <a href="https://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html">Debian has switched to dependency based boot sequencing</a>
1174 </div>
1175 <div class="date">
1176 27th July 2009
1177 </div>
1178 <div class="body">
1179 <p>Since this evening, with the upload of sysvinit version 2.87dsf-2,
1180 and the upload of insserv version 1.12.0-10 yesterday, Debian unstable
1181 have been migrated to using dependency based boot sequencing. This
1182 conclude work me and others have been doing for the last three days.
1183 It feels great to see this finally part of the default Debian
1184 installation. Now we just need to weed out the last few problems that
1185 are bound to show up, to get everything ready for Squeeze.</p>
1186
1187 <p>The next step is migrating /sbin/init from sysvinit to upstart, and
1188 fixing the more fundamental problem of handing the event based
1189 non-predictable kernel in the early boot.</p>
1190
1191 </div>
1192 <div class="tags">
1193
1194
1195 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>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
1196
1197
1198 </div>
1199 </div>
1200 <div class="padding"></div>
1201
1202 <div class="entry">
1203 <div class="title">
1204 <a href="https://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html">Taking over sysvinit development</a>
1205 </div>
1206 <div class="date">
1207 22nd July 2009
1208 </div>
1209 <div class="body">
1210 <p>After several years of frustration with the lack of activity from
1211 the existing sysvinit upstream developer, I decided a few weeks ago to
1212 take over the package and become the new upstream. The number of
1213 patches to track for the Debian package was becoming a burden, and the
1214 lack of synchronization between the distribution made it hard to keep
1215 the package up to date.</p>
1216
1217 <p>On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
1218 and my Debian co-maintainer Kel Modderman. About 10 days ago, I made
1219 a new upstream tarball with version number 2.87dsf (for Debian, SuSe
1220 and Fedora), based on the patches currently in use in these
1221 distributions. We Debian maintainers plan to move to this tarball as
1222 the new upstream as soon as we find time to do the merge. Since the
1223 new tarball was created, we agreed with Werner at SuSe to make a new
1224 upstream project at <a href="http://savannah.nongnu.org/">Savannah</a>, and continue
1225 development there. The project is registered and currently waiting
1226 for approval by the Savannah administrators, and as soon as it is
1227 approved, we will import the old versions from svn and continue
1228 working on the future release.</p>
1229
1230 <p>It is a bit ironic that this is done now, when some of the involved
1231 distributions are moving to upstart as a syvinit replacement.</p>
1232
1233 </div>
1234 <div class="tags">
1235
1236
1237 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>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
1238
1239
1240 </div>
1241 </div>
1242 <div class="padding"></div>
1243
1244 <div class="entry">
1245 <div class="title">
1246 <a href="https://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html">Debian boots quicker and quicker</a>
1247 </div>
1248 <div class="date">
1249 24th June 2009
1250 </div>
1251 <div class="body">
1252 <p>I spent Monday and tuesday this week in London with a lot of the
1253 people involved in the boot system on Debian and Ubuntu, to see if we
1254 could find more ways to speed up the boot system. This was an Ubuntu
1255 funded
1256 <a href="https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint">developer
1257 gathering</a>. It was quite productive. We also discussed the future
1258 of boot systems, and ways to handle the increasing number of boot
1259 issues introduced by the Linux kernel becoming more and more
1260 asynchronous and event base. The Ubuntu approach using udev and
1261 upstart might be a good way forward. Time will show.</p>
1262
1263 <p>Anyway, there are a few ways at the moment to speed up the boot
1264 process in Debian. All of these should be applied to get a quick
1265 boot:</p>
1266
1267 <ul>
1268
1269 <li>Use dash as /bin/sh.</li>
1270
1271 <li>Disable the init.d/hwclock*.sh scripts and make sure the hardware
1272 clock is in UTC.</li>
1273
1274 <li>Install and activate the insserv package to enable
1275 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
1276 based boot sequencing</a>, and enable concurrent booting.</li>
1277
1278 </ul>
1279
1280 These points are based on the Google summer of code work done by
1281 <a href="http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/">Carlos
1282 Villegas</a>.
1283
1284 <p>Support for makefile-style concurrency during boot was uploaded to
1285 unstable yesterday. When we tested it, we were able to cut 6 seconds
1286 from the boot sequence. It depend on very correct dependency
1287 declaration in all init.d scripts, so I expect us to find edge cases
1288 where the dependences in some scripts are slightly wrong when we start
1289 using this.</p>
1290
1291 <p>On our IRC channel for this effort, #pkg-sysvinit, a new idea was
1292 introduced by Raphael Geissert today, one that could affect the
1293 startup speed as well. Instead of starting some scripts concurrently
1294 from rcS.d/ and another set of scripts from rc2.d/, it would be
1295 possible to run a of them in the same process. A quick way to test
1296 this would be to enable insserv and run 'mv /etc/rc2.d/S* /etc/rcS.d/;
1297 insserv'. Will need to test if that work. :)</p>
1298
1299 </div>
1300 <div class="tags">
1301
1302
1303 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>.
1304
1305
1306 </div>
1307 </div>
1308 <div class="padding"></div>
1309
1310 <p style="text-align: right;"><a href="bootsystem.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
1311 <div id="sidebar">
1312
1313
1314
1315 <h2>Archive</h2>
1316 <ul>
1317
1318 <li>2022
1319 <ul>
1320
1321 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
1322
1323 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
1324
1325 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
1326
1327 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (1)</a></li>
1328
1329 </ul></li>
1330
1331 <li>2021
1332 <ul>
1333
1334 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
1335
1336 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
1337
1338 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
1339
1340 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
1341
1342 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
1343
1344 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
1345
1346 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
1347
1348 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
1349
1350 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
1351
1352 </ul></li>
1353
1354 <li>2020
1355 <ul>
1356
1357 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
1358
1359 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
1360
1361 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
1362
1363 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
1364
1365 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
1366
1367 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
1368
1369 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
1370
1371 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
1372
1373 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
1374
1375 </ul></li>
1376
1377 <li>2019
1378 <ul>
1379
1380 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
1381
1382 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
1383
1384 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
1385
1386 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
1387
1388 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
1389
1390 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
1391
1392 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
1393
1394 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
1395
1396 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
1397
1398 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
1399
1400 </ul></li>
1401
1402 <li>2018
1403 <ul>
1404
1405 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
1406
1407 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
1408
1409 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
1410
1411 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
1412
1413 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
1414
1415 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
1416
1417 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
1418
1419 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
1420
1421 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
1422
1423 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
1424
1425 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
1426
1427 </ul></li>
1428
1429 <li>2017
1430 <ul>
1431
1432 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
1433
1434 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
1435
1436 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
1437
1438 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
1439
1440 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
1441
1442 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
1443
1444 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
1445
1446 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
1447
1448 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
1449
1450 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
1451
1452 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
1453
1454 </ul></li>
1455
1456 <li>2016
1457 <ul>
1458
1459 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
1460
1461 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
1462
1463 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
1464
1465 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
1466
1467 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
1468
1469 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
1470
1471 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
1472
1473 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
1474
1475 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
1476
1477 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
1478
1479 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
1480
1481 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
1482
1483 </ul></li>
1484
1485 <li>2015
1486 <ul>
1487
1488 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
1489
1490 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
1491
1492 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
1493
1494 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
1495
1496 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
1497
1498 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
1499
1500 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
1501
1502 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
1503
1504 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
1505
1506 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
1507
1508 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
1509
1510 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
1511
1512 </ul></li>
1513
1514 <li>2014
1515 <ul>
1516
1517 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1518
1519 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1520
1521 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1522
1523 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1524
1525 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1526
1527 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1528
1529 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1530
1531 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1532
1533 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1534
1535 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
1536
1537 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
1538
1539 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
1540
1541 </ul></li>
1542
1543 <li>2013
1544 <ul>
1545
1546 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1547
1548 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1549
1550 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1551
1552 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1553
1554 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1555
1556 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1557
1558 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1559
1560 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1561
1562 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1563
1564 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1565
1566 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1567
1568 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1569
1570 </ul></li>
1571
1572 <li>2012
1573 <ul>
1574
1575 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1576
1577 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1578
1579 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1580
1581 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1582
1583 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1584
1585 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1586
1587 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1588
1589 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1590
1591 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1592
1593 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1594
1595 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1596
1597 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1598
1599 </ul></li>
1600
1601 <li>2011
1602 <ul>
1603
1604 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1605
1606 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1607
1608 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1609
1610 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1611
1612 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1613
1614 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1615
1616 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1617
1618 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1619
1620 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1621
1622 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1623
1624 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1625
1626 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1627
1628 </ul></li>
1629
1630 <li>2010
1631 <ul>
1632
1633 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1634
1635 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1636
1637 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1638
1639 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1640
1641 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1642
1643 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1644
1645 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1646
1647 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1648
1649 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1650
1651 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1652
1653 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1654
1655 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1656
1657 </ul></li>
1658
1659 <li>2009
1660 <ul>
1661
1662 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1663
1664 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1665
1666 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1667
1668 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1669
1670 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1671
1672 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1673
1674 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1675
1676 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1677
1678 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1679
1680 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1681
1682 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1683
1684 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1685
1686 </ul></li>
1687
1688 <li>2008
1689 <ul>
1690
1691 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1692
1693 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1694
1695 </ul></li>
1696
1697 </ul>
1698
1699
1700
1701 <h2>Tags</h2>
1702 <ul>
1703
1704 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (18)</a></li>
1705
1706 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1707
1708 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1709
1710 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1711
1712 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1713
1714 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
1715
1716 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1717
1718 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1719
1720 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
1721
1722 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (180)</a></li>
1723
1724 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1725
1726 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (8)</a></li>
1727
1728 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1729
1730 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1731
1732 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (30)</a></li>
1733
1734 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1735
1736 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (435)</a></li>
1737
1738 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1739
1740 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1741
1742 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1743
1744 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1745
1746 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1747
1748 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1749
1750 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1751
1752 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1753
1754 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1755
1756 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
1757
1758 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1759
1760 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1761
1762 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1763
1764 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1765
1766 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1767
1768 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1769
1770 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1771
1772 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (42)</a></li>
1773
1774 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (13)</a></li>
1775
1776 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
1777
1778 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (320)</a></li>
1779
1780 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
1781
1782 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
1783
1784 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1785
1786 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
1787
1788 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
1789
1790 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1791
1792 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1793
1794 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1795
1796 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1797
1798 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (15)</a></li>
1799
1800 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1801
1802 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1803
1804 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1805
1806 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (59)</a></li>
1807
1808 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1809
1810 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1811
1812 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (72)</a></li>
1813
1814 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1815
1816 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
1817
1818 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (62)</a></li>
1819
1820 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1821
1822 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1823
1824 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1825
1826 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
1827
1828 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (77)</a></li>
1829
1830 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1831
1832 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1833
1834 </ul>
1835
1836
1837 </div>
1838 <p style="text-align: right">
1839 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1840 </p>
1841
1842 </body>
1843 </html>