]> pere.pagekite.me Git - homepage.git/blob - blog/tags/debian/index.html
73ad96b91e21eb65cf74dfaa3dedf6e888b96df4
[homepage.git] / blog / tags / debian / 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 debian</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 <link rel="alternate" title="RSS Feed" href="debian.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21 <h3>Entries tagged "debian".</h3>
22
23 <div class="entry">
24 <div class="title">
25 <a href="http://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html">Isenkram 0.2 finally in the Debian archive</a>
26 </div>
27 <div class="date">
28 3rd April 2013
29 </div>
30 <div class="body">
31 <p>Today the <a href="http://packages.qa.debian.org/isenkram">Isenkram
32 package</a> finally made it into the archive, after lingering in NEW
33 for many months. I uploaded it to the Debian experimental suite
34 2013-01-27, and today it was accepted into the archive.</p>
35
36 <p>Isenkram is a system for suggesting to users what packages to
37 install to work with a pluggable hardware device. The suggestion pop
38 up when the device is plugged in. For example if a Lego Mindstorm NXT
39 is inserted, it will suggest to install the program needed to program
40 the NXT controller. Give it a go, and report bugs and suggestions to
41 BTS. :)</p>
42
43 </div>
44 <div class="tags">
45
46
47 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
48
49
50 </div>
51 </div>
52 <div class="padding"></div>
53
54 <div class="entry">
55 <div class="title">
56 <a href="http://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html">Bitcoin GUI now available from Debian/unstable (and Ubuntu/raring)</a>
57 </div>
58 <div class="date">
59 2nd February 2013
60 </div>
61 <div class="body">
62 <p>My
63 <a href="http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">last
64 bitcoin related blog post</a> mentioned that the new
65 <a href="http://packages.qa.debian.org/bitcoin">bitcoin package</a> for
66 Debian was waiting in NEW. It was accepted by the Debian ftp-masters
67 2013-01-19, and have been available in unstable since then. It was
68 automatically copied to Ubuntu, and is available in their Raring
69 version too.</p>
70
71 <p>But there is a strange problem with the build that block this new
72 version from being available on the i386 and kfreebsd-i386
73 architectures. For some strange reason, the autobuilders in Debian
74 for these architectures fail to run the test suite on these
75 architectures (<a href="http://bugs.debian.org/672524">BTS #672524</a>).
76 We are so far unable to reproduce it when building it manually, and
77 no-one have been able to propose a fix. If you got an idea what is
78 failing, please let us know via the BTS.</p>
79
80 <p>One feature that is annoying me with of the bitcoin client, because
81 I often run low on disk space, is the fact that the client will exit
82 if it run short on space (<a href="http://bugs.debian.org/696715">BTS
83 #696715</a>). So make sure you have enough disk space when you run
84 it. :)</p>
85
86 <p>As usual, if you use bitcoin and want to show your support of my
87 activities, please send Bitcoin donations to my address
88 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
89
90 </div>
91 <div class="tags">
92
93
94 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</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>.
95
96
97 </div>
98 </div>
99 <div class="padding"></div>
100
101 <div class="entry">
102 <div class="title">
103 <a href="http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">Welcome to the world, Isenkram!</a>
104 </div>
105 <div class="date">
106 22nd January 2013
107 </div>
108 <div class="body">
109 <p>Yesterday, I
110 <a href="http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">asked
111 for testers</a> for my prototype for making Debian better at handling
112 pluggable hardware devices, which I
113 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">set
114 out to create</a> earlier this month. Several valuable testers showed
115 up, and caused me to really want to to open up the development to more
116 people. But before I did this, I want to come up with a sensible name
117 for this project. Today I finally decided on a new name, and I have
118 renamed the project from hw-support-handler to this new name. In the
119 process, I moved the source to git and made it available as a
120 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git">collab-maint</a>
121 repository in Debian. The new name? It is <strong>Isenkram</strong>.
122 To fetch and build the latest version of the source, use</p>
123
124 <pre>
125 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
126 cd isenkram && git-buildpackage -us -uc
127 </pre>
128
129 <p>I have not yet adjusted all files to use the new name yet. If you
130 want to hack on the source or improve the package, please go ahead.
131 But please talk to me first on IRC or via email before you do major
132 changes, to make sure we do not step on each others toes. :)</p>
133
134 <p>If you wonder what 'isenkram' is, it is a Norwegian word for iron
135 stuff, typically meaning tools, nails, screws, etc. Typical hardware
136 stuff, in other words. I've been told it is the Norwegian variant of
137 the German word eisenkram, for those that are familiar with that
138 word.</p>
139
140 <p><strong>Update 2013-01-26</strong>: Added -us -us to build
141 instructions, to avoid confusing people with an error from the signing
142 process.</p>
143
144 <p><strong>Update 2013-01-27</strong>: Switch to HTTP URL for the git
145 clone argument to avoid the need for authentication.</p>
146
147 </div>
148 <div class="tags">
149
150
151 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
152
153
154 </div>
155 </div>
156 <div class="padding"></div>
157
158 <div class="entry">
159 <div class="title">
160 <a href="http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">First prototype ready making hardware easier to use in Debian</a>
161 </div>
162 <div class="date">
163 21st January 2013
164 </div>
165 <div class="body">
166 <p>Early this month I set out to try to
167 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">improve
168 the Debian support for pluggable hardware devices</a>. Now my
169 prototype is working, and it is ready for a larger audience. To test
170 it, fetch the
171 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">source
172 from the Debian Edu subversion repository</a>, build and install the
173 package. You might have to log out and in again activate the
174 autostart script.</p>
175
176 <p>The design is simple:</p>
177
178 <ul>
179
180 <li>Add desktop entry in /usr/share/autostart/ causing a program
181 hw-support-handlerd to start when the user log in.</li>
182
183 <li>This program listen for kernel events about new hardware (directly
184 from the kernel like udev does), not using HAL dbus events as I
185 initially did.</li>
186
187 <li>When new hardware is inserted, look up the hardware modalias in
188 the APT database, a database
189 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup">available
190 via HTTP</a> and a database available as part of the package.</li>
191
192 <li>If a package is mapped to the hardware in question, the package
193 isn't installed yet and this is the first time the hardware was
194 plugged in, show a desktop notification suggesting to install the
195 package or packages.</li>
196
197 <li>If the user click on the 'install package now' button, ask
198 aptdaemon via the PackageKit API to install the requrired package.</li>
199
200 <li>aptdaemon ask for root password or sudo password, and install the
201 package while showing progress information in a window.</li>
202
203 </ul>
204
205 <p>I still need to come up with a better name for the system. Here
206 are some screen shots showing the prototype in action. First the
207 notification, then the password request, and finally the request to
208 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.</p>
209
210 <p><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png">
211 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png">
212 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png">
213 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png">
214 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png" width="70%"></p>
215
216 <p>The prototype still need to be improved with longer timeouts, but
217 is already useful. The database of hardware to package mappings also
218 need more work. It is currently compatible with the Ubuntu way of
219 storing such information in the package control file, but could be
220 changed to use other formats instead or in addition to the current
221 method. I've dropped the use of discover for this mapping, as the
222 modalias approach is more flexible and easier to use on Linux as long
223 as the Linux kernel expose its modalias strings directly.</p>
224
225 <p><strong>Update 2013-01-21 16:50</strong>: Due to popular demand,
226 here is the command required to check out and build the source: Use
227 '<tt>svn checkout
228 svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
229 hw-support-handler; debuild</tt>'. If you lack debuild, install the
230 devscripts package.</p>
231
232 <p><strong>Update 2013-01-23 12:00</strong>: The project is now
233 renamed to Isenkram and the source moved from the Debian Edu
234 subversion repository to a Debian collab-maint git repository. See
235 <a href="http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">build
236 instructions</a> for details.</p>
237
238 </div>
239 <div class="tags">
240
241
242 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
243
244
245 </div>
246 </div>
247 <div class="padding"></div>
248
249 <div class="entry">
250 <div class="title">
251 <a href="http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">Thank you Thinkpad X41, for your long and trustworthy service</a>
252 </div>
253 <div class="date">
254 19th January 2013
255 </div>
256 <div class="body">
257 <p>This Christmas my trusty old laptop died. It died quietly and
258 suddenly in bed. With a quiet whimper, it went completely quiet and
259 black. The power button was no longer able to turn it on. It was a
260 IBM Thinkpad X41, and the best laptop I ever had. Better than both
261 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
262 Compaq I had before that. Now I need to find a replacement. To keep
263 going during Christmas, I moved the one year old SSD disk to my old
264 X40 where it fitted (only one I had left that could use it), but it is
265 not a durable solution.
266
267 <p>My laptop needs are fairly modest. This is my wishlist from when I
268 got a new one more than 10 years ago. It still holds true.:)</p>
269
270 <ul>
271
272 <li>Lightweight (around 1 kg) and small volume (preferably smaller
273 than A4).</li>
274 <li>Robust, it will be in my backpack every day.</li>
275 <li>Three button mouse and a mouse pin instead of touch pad.</li>
276 <li>Long battery life time. Preferable a week.</li>
277 <li>Internal WIFI network card.</li>
278 <li>Internal Twisted Pair network card.</li>
279 <li>Some USB slots (2-3 is plenty)</li>
280 <li>Good keyboard - similar to the Thinkpad.</li>
281 <li>Video resolution at least 1024x768, with size around 12" (A4 paper
282 size).</li>
283 <li>Hardware supported by Debian Stable, ie the default kernel and
284 X.org packages.</li>
285 <li>Quiet, preferably fan free (or at least not using the fan most of
286 the time).
287
288 </ul>
289
290 <p>You will notice that there are no RAM and CPU requirements in the
291 list. The reason is simply that the specifications on laptops the
292 last 10-15 years have been sufficient for my needs, and I have to look
293 at other features to choose my laptop. But are there still made as
294 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
295 robust, and Thinkpads seem to be heading in the wrong direction since
296 Lenovo took over. But I've been told that X220 and X1 Carbon might
297 still be useful.</p>
298
299 <p>Perhaps I should rethink my needs, and look for a pad with an
300 external keyboard? I'll have to check the
301 <a href="http://www.linux-laptop.net/">Linux Laptops site</a> for
302 well-supported laptops, or perhaps just buy one preinstalled from one
303 of the vendors listed on the <a href="http://linuxpreloaded.com/">Linux
304 Pre-loaded site</a>.</p>
305
306 </div>
307 <div class="tags">
308
309
310 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
311
312
313 </div>
314 </div>
315 <div class="padding"></div>
316
317 <div class="entry">
318 <div class="title">
319 <a href="http://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html">How to find a browser plugin supporting a given MIME type</a>
320 </div>
321 <div class="date">
322 18th January 2013
323 </div>
324 <div class="body">
325 <p>Some times I try to figure out which Iceweasel browser plugin to
326 install to get support for a given MIME type. Thanks to
327 <a href="https://wiki.ubuntu.com/MozillaTeam/Plugins">specifications
328 done by Ubuntu</a> and Mozilla, it is possible to do this in Debian.
329 Unfortunately, not very many packages provide the needed meta
330 information, Anyway, here is a small script to look up all browser
331 plugin packages announcing ther MIME support using this specification:</p>
332
333 <pre>
334 #!/usr/bin/python
335 import sys
336 import apt
337 def pkgs_handling_mimetype(mimetype):
338 cache = apt.Cache()
339 cache.open(None)
340 thepkgs = []
341 for pkg in cache:
342 version = pkg.candidate
343 if version is None:
344 version = pkg.installed
345 if version is None:
346 continue
347 record = version.record
348 if not record.has_key('Npp-MimeType'):
349 continue
350 mime_types = record['Npp-MimeType'].split(',')
351 for t in mime_types:
352 t = t.rstrip().strip()
353 if t == mimetype:
354 thepkgs.append(pkg.name)
355 return thepkgs
356 mimetype = "audio/ogg"
357 if 1 < len(sys.argv):
358 mimetype = sys.argv[1]
359 print "Browser plugin packages supporting %s:" % mimetype
360 for pkg in pkgs_handling_mimetype(mimetype):
361 print " %s" %pkg
362 </pre>
363
364 <p>It can be used like this to look up a given MIME type:</p>
365
366 <pre>
367 % ./apt-find-browserplug-for-mimetype
368 Browser plugin packages supporting audio/ogg:
369 gecko-mediaplayer
370 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
371 Browser plugin packages supporting application/x-shockwave-flash:
372 browser-plugin-gnash
373 %
374 </pre>
375
376 <p>In Ubuntu this mechanism is combined with support in the browser
377 itself to query for plugins and propose to install the needed
378 packages. It would be great if Debian supported such feature too. Is
379 anyone working on adding it?</p>
380
381 <p><strong>Update 2013-01-18 14:20</strong>: The Debian BTS
382 request for icweasel support for this feature is
383 <a href="http://bugs.debian.org/484010">#484010</a> from 2008 (and
384 <a href="http://bugs.debian.org/698426">#698426</a> from today). Lack
385 of manpower and wish for a different design is the reason thus feature
386 is not yet in iceweasel from Debian.</p>
387
388 </div>
389 <div class="tags">
390
391
392 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
393
394
395 </div>
396 </div>
397 <div class="padding"></div>
398
399 <div class="entry">
400 <div class="title">
401 <a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">What is the most supported MIME type in Debian?</a>
402 </div>
403 <div class="date">
404 16th January 2013
405 </div>
406 <div class="body">
407 <p>The <a href="http://wiki.debian.org/AppStreamDebianProposal">DEP-11
408 proposal to add AppStream information to the Debian archive</a>, is a
409 proposal to make it possible for a Desktop application to propose to
410 the user some package to install to gain support for a given MIME
411 type, font, library etc. that is currently missing. With such
412 mechanism in place, it would be possible for the desktop to
413 automatically propose and install leocad if some LDraw file is
414 downloaded by the browser.</p>
415
416 <p>To get some idea about the current content of the archive, I decided
417 to write a simple program to extract all .desktop files from the
418 Debian archive and look up the claimed MIME support there. The result
419 can be found on the
420 <a href="http://ftp.skolelinux.org/pub/AppStreamTest">Skolelinux FTP
421 site</a>. Using the collected information, it become possible to
422 answer the question in the title. Here are the 20 most supported MIME
423 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
424 The complete list is available from the link above.</p>
425
426 <p><strong>Debian Stable:</strong></p>
427
428 <pre>
429 count MIME type
430 ----- -----------------------
431 32 text/plain
432 30 audio/mpeg
433 29 image/png
434 28 image/jpeg
435 27 application/ogg
436 26 audio/x-mp3
437 25 image/tiff
438 25 image/gif
439 22 image/bmp
440 22 audio/x-wav
441 20 audio/x-flac
442 19 audio/x-mpegurl
443 18 video/x-ms-asf
444 18 audio/x-musepack
445 18 audio/x-mpeg
446 18 application/x-ogg
447 17 video/mpeg
448 17 audio/x-scpls
449 17 audio/ogg
450 16 video/x-ms-wmv
451 </pre>
452
453 <p><strong>Debian Testing:</strong></p>
454
455 <pre>
456 count MIME type
457 ----- -----------------------
458 33 text/plain
459 32 image/png
460 32 image/jpeg
461 29 audio/mpeg
462 27 image/gif
463 26 image/tiff
464 26 application/ogg
465 25 audio/x-mp3
466 22 image/bmp
467 21 audio/x-wav
468 19 audio/x-mpegurl
469 19 audio/x-mpeg
470 18 video/mpeg
471 18 audio/x-scpls
472 18 audio/x-flac
473 18 application/x-ogg
474 17 video/x-ms-asf
475 17 text/html
476 17 audio/x-musepack
477 16 image/x-xbitmap
478 </pre>
479
480 <p><strong>Debian Unstable:</strong></p>
481
482 <pre>
483 count MIME type
484 ----- -----------------------
485 31 text/plain
486 31 image/png
487 31 image/jpeg
488 29 audio/mpeg
489 28 application/ogg
490 27 image/gif
491 26 image/tiff
492 26 audio/x-mp3
493 23 audio/x-wav
494 22 image/bmp
495 21 audio/x-flac
496 20 audio/x-mpegurl
497 19 audio/x-mpeg
498 18 video/x-ms-asf
499 18 video/mpeg
500 18 audio/x-scpls
501 18 application/x-ogg
502 17 audio/x-musepack
503 16 video/x-ms-wmv
504 16 video/x-msvideo
505 </pre>
506
507 <p>I am told that PackageKit can provide an API to access the kind of
508 information mentioned in DEP-11. I have not yet had time to look at
509 it, but hope the PackageKit people in Debian are on top of these
510 issues.</p>
511
512 <p><strong>Update 2013-01-16 13:35</strong>: Updated numbers after
513 discovering a typo in my script.</p>
514
515 </div>
516 <div class="tags">
517
518
519 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
520
521
522 </div>
523 </div>
524 <div class="padding"></div>
525
526 <div class="entry">
527 <div class="title">
528 <a href="http://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html">Using modalias info to find packages handling my hardware</a>
529 </div>
530 <div class="date">
531 15th January 2013
532 </div>
533 <div class="body">
534 <p>Yesterday, I wrote about the
535 <a href="http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">modalias
536 values provided by the Linux kernel</a> following my hope for
537 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">better
538 dongle support in Debian</a>. Using this knowledge, I have tested how
539 modalias values attached to package names can be used to map packages
540 to hardware. This allow the system to look up and suggest relevant
541 packages when I plug in some new hardware into my machine, and replace
542 discover and discover-data as the database used to map hardware to
543 packages.</p>
544
545 <p>I create a modaliases file with entries like the following,
546 containing package name, kernel module name (if relevant, otherwise
547 the package name) and globs matching the relevant hardware
548 modalias.</p>
549
550 <p><blockquote>
551 Package: package-name
552 <br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)</p>
553 </blockquote></p>
554
555 <p>It is fairly trivial to write code to find the relevant packages
556 for a given modalias value using this file.</p>
557
558 <p>An entry like this would suggest the video and picture application
559 cheese for many USB web cameras (interface bus class 0E01):</p>
560
561 <p><blockquote>
562 Package: cheese
563 <br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)</p>
564 </blockquote></p>
565
566 <p>An entry like this would suggest the pcmciautils package when a
567 CardBus bridge (bus class 0607) PCI device is present:</p>
568
569 <p><blockquote>
570 Package: pcmciautils
571 <br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
572 </blockquote></p>
573
574 <p>An entry like this would suggest the package colorhug-client when
575 plugging in a ColorHug with USB IDs 04D8:F8DA:</p>
576
577 <p><blockquote>
578 Package: colorhug-client
579 <br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)</p>
580 </blockquote></p>
581
582 <p>I believe the format is compatible with the format of the Packages
583 file in the Debian archive. Ubuntu already uses their Packages file
584 to store their mappings from packages to hardware.</p>
585
586 <p>By adding a XB-Modaliases: header in debian/control, any .deb can
587 announce the hardware it support in a way my prototype understand.
588 This allow those publishing packages in an APT source outside the
589 Debian archive as well as those backporting packages to make sure the
590 hardware mapping are included in the package meta information. I've
591 tested such header in the pymissile package, and its modalias mapping
592 is working as it should with my prototype. It even made it to Ubuntu
593 Raring.</p>
594
595 <p>To test if it was possible to look up supported hardware using only
596 the shell tools available in the Debian installer, I wrote a shell
597 implementation of the lookup code. The idea is to create files for
598 each modalias and let the shell do the matching. Please check out and
599 try the
600 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co">hw-support-lookup</a>
601 shell script. It run without any extra dependencies and fetch the
602 hardware mappings from the Debian archive and the subversion
603 repository where I currently work on my prototype.</p>
604
605 <p>When I use it on a machine with a yubikey inserted, it suggest to
606 install yubikey-personalization:</p>
607
608 <p><blockquote>
609 % ./hw-support-lookup
610 <br>yubikey-personalization
611 <br>%
612 </blockquote></p>
613
614 <p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
615 propose to install the pcmciautils package:</p>
616
617 <p><blockquote>
618 % ./hw-support-lookup
619 <br>pcmciautils
620 <br>%
621 </blockquote></p>
622
623 <p>If you know of any hardware-package mapping that should be added to
624 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co">my
625 database</a>, please tell me about it.</p>
626
627 <p>It could be possible to generate several of the mappings between
628 packages and hardware. One source would be to look at packages with
629 kernel modules, ie packages with *.ko files in /lib/modules/, and
630 extract their modalias information. Another would be to look at
631 packages with udev rules, ie packages with files in
632 /lib/udev/rules.d/, and extract their vendor/model information to
633 generate a modalias matching rule. I have not tested any of these to
634 see if it work.</p>
635
636 <p>If you want to help implementing a system to let us propose what
637 packages to install when new hardware is plugged into a Debian
638 machine, please send me an email or talk to me on
639 <a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
640
641 </div>
642 <div class="tags">
643
644
645 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
646
647
648 </div>
649 </div>
650 <div class="padding"></div>
651
652 <div class="entry">
653 <div class="title">
654 <a href="http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">Modalias strings - a practical way to map "stuff" to hardware</a>
655 </div>
656 <div class="date">
657 14th January 2013
658 </div>
659 <div class="body">
660 <p>While looking into how to look up Debian packages based on hardware
661 information, to find the packages that support a given piece of
662 hardware, I refreshed my memory regarding modalias values, and decided
663 to document the details. Here are my findings so far, also available
664 in
665 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
666 Debian Edu subversion repository</a>:
667
668 <p><strong>Modalias decoded</strong></p>
669
670 <p>This document try to explain what the different types of modalias
671 values stands for. It is in part based on information from
672 &lt;URL: <a href="https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias</a> &gt;,
673 &lt;URL: <a href="http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device">http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device</a> &gt;,
674 &lt;URL: <a href="http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c">http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c</a> &gt; and
675 &lt;URL: <a href="http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup">http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup</a> &gt;.
676
677 <p>The modalias entries for a given Linux machine can be found using
678 this shell script:</p>
679
680 <pre>
681 find /sys -name modalias -print0 | xargs -0 cat | sort -u
682 </pre>
683
684 <p>The supported modalias globs for a given kernel module can be found
685 using modinfo:</p>
686
687 <pre>
688 % /sbin/modinfo psmouse | grep alias:
689 alias: serio:ty05pr*id*ex*
690 alias: serio:ty01pr*id*ex*
691 %
692 </pre>
693
694 <p><strong>PCI subtype</strong></p>
695
696 <p>A typical PCI entry can look like this. This is an Intel Host
697 Bridge memory controller:</p>
698
699 <p><blockquote>
700 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
701 </blockquote></p>
702
703 <p>This represent these values:</p>
704
705 <pre>
706 v 00008086 (vendor)
707 d 00002770 (device)
708 sv 00001028 (subvendor)
709 sd 000001AD (subdevice)
710 bc 06 (bus class)
711 sc 00 (bus subclass)
712 i 00 (interface)
713 </pre>
714
715 <p>The vendor/device values are the same values outputted from 'lspci
716 -n' as 8086:2770. The bus class/subclass is also shown by lspci as
717 0600. The 0600 class is a host bridge. Other useful bus values are
718 0300 (VGA compatible card) and 0200 (Ethernet controller).</p>
719
720 <p>Not sure how to figure out the interface value, nor what it
721 means.</p>
722
723 <p><strong>USB subtype</strong></p>
724
725 <p>Some typical USB entries can look like this. This is an internal
726 USB hub in a laptop:</p>
727
728 <p><blockquote>
729 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
730 </blockquote></p>
731
732 <p>Here is the values included in this alias:</p>
733
734 <pre>
735 v 1D6B (device vendor)
736 p 0001 (device product)
737 d 0206 (bcddevice)
738 dc 09 (device class)
739 dsc 00 (device subclass)
740 dp 00 (device protocol)
741 ic 09 (interface class)
742 isc 00 (interface subclass)
743 ip 00 (interface protocol)
744 </pre>
745
746 <p>The 0900 device class/subclass means hub. Some times the relevant
747 class is in the interface class section. For a simple USB web camera,
748 these alias entries show up:</p>
749
750 <p><blockquote>
751 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
752 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
753 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
754 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
755 </blockquote></p>
756
757 <p>Interface class 0E01 is video control, 0E02 is video streaming (aka
758 camera), 0101 is audio control device and 0102 is audio streaming (aka
759 microphone). Thus this is a camera with microphone included.</p>
760
761 <p><strong>ACPI subtype</strong></p>
762
763 <p>The ACPI type is used for several non-PCI/USB stuff. This is an IR
764 receiver in a Thinkpad X40:</p>
765
766 <p><blockquote>
767 acpi:IBM0071:PNP0511:
768 </blockquote></p>
769
770 <p>The values between the colons are IDs.</p>
771
772 <p><strong>DMI subtype</strong></p>
773
774 <p>The DMI table contain lots of information about the computer case
775 and model. This is an entry for a IBM Thinkpad X40, fetched from
776 /sys/devices/virtual/dmi/id/modalias:</p>
777
778 <p><blockquote>
779 dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
780 </blockquote></p>
781
782 <p>The values present are</p>
783
784 <pre>
785 bvn IBM (BIOS vendor)
786 bvr 1UETB6WW(1.66) (BIOS version)
787 bd 06/15/2005 (BIOS date)
788 svn IBM (system vendor)
789 pn 2371H4G (product name)
790 pvr ThinkPadX40 (product version)
791 rvn IBM (board vendor)
792 rn 2371H4G (board name)
793 rvr NotAvailable (board version)
794 cvn IBM (chassis vendor)
795 ct 10 (chassis type)
796 cvr NotAvailable (chassis version)
797 </pre>
798
799 <p>The chassis type 10 is Notebook. Other interesting values can be
800 found in the dmidecode source:</p>
801
802 <pre>
803 3 Desktop
804 4 Low Profile Desktop
805 5 Pizza Box
806 6 Mini Tower
807 7 Tower
808 8 Portable
809 9 Laptop
810 10 Notebook
811 11 Hand Held
812 12 Docking Station
813 13 All In One
814 14 Sub Notebook
815 15 Space-saving
816 16 Lunch Box
817 17 Main Server Chassis
818 18 Expansion Chassis
819 19 Sub Chassis
820 20 Bus Expansion Chassis
821 21 Peripheral Chassis
822 22 RAID Chassis
823 23 Rack Mount Chassis
824 24 Sealed-case PC
825 25 Multi-system
826 26 CompactPCI
827 27 AdvancedTCA
828 28 Blade
829 29 Blade Enclosing
830 </pre>
831
832 <p>The chassis type values are not always accurately set in the DMI
833 table. For example my home server is a tower, but the DMI modalias
834 claim it is a desktop.</p>
835
836 <p><strong>SerIO subtype</strong></p>
837
838 <p>This type is used for PS/2 mouse plugs. One example is from my
839 test machine:</p>
840
841 <p><blockquote>
842 serio:ty01pr00id00ex00
843 </blockquote></p>
844
845 <p>The values present are</p>
846
847 <pre>
848 ty 01 (type)
849 pr 00 (prototype)
850 id 00 (id)
851 ex 00 (extra)
852 </pre>
853
854 <p>This type is supported by the psmouse driver. I am not sure what
855 the valid values are.</p>
856
857 <p><strong>Other subtypes</strong></p>
858
859 <p>There are heaps of other modalias subtypes according to
860 file2alias.c. There is the rest of the list from that source: amba,
861 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
862 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
863 vmbus, x86cpu and zorro. I did not spend time documenting all of
864 these, as they do not seem relevant for my intended use with mapping
865 hardware to packages when new stuff is inserted during run time.</p>
866
867 <p><strong>Looking up kernel modules using modalias values</strong></p>
868
869 <p>To check which kernel modules provide support for a given modalias,
870 one can use the following shell script:</p>
871
872 <pre>
873 for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
874 echo "$id" ; \
875 /sbin/modprobe --show-depends "$id"|sed 's/^/ /' ; \
876 done
877 </pre>
878
879 <p>The output can look like this (only the first few entries as the
880 list is very long on my test machine):</p>
881
882 <pre>
883 acpi:ACPI0003:
884 insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko
885 acpi:device:
886 FATAL: Module acpi:device: not found.
887 acpi:IBM0068:
888 insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko
889 insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko
890 insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko
891 insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko
892 acpi:IBM0071:PNP0511:
893 insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko
894 insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko
895 insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko
896 [...]
897 </pre>
898
899 <p>If you want to help implementing a system to let us propose what
900 packages to install when new hardware is plugged into a Debian
901 machine, please send me an email or talk to me on
902 <a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
903
904 <p><strong>Update 2013-01-15:</strong> Rewrite "cat $(find ...)" to
905 "find ... -print0 | xargs -0 cat" to make sure it handle directories
906 in /sys/ with space in them.</p>
907
908 </div>
909 <div class="tags">
910
911
912 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
913
914
915 </div>
916 </div>
917 <div class="padding"></div>
918
919 <div class="entry">
920 <div class="title">
921 <a href="http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html">Moved the pymissile Debian packaging to collab-maint</a>
922 </div>
923 <div class="date">
924 10th January 2013
925 </div>
926 <div class="body">
927 <p>As part of my investigation on how to improve the support in Debian
928 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
929 Launcher and updated the Debian package
930 <a href="http://packages.qa.debian.org/pymissile">pymissile</a> to make
931 sure udev will fix the device permissions when it is plugged in. I
932 also added a "Modaliases" header to test it in the Debian archive and
933 hopefully make the package be proposed by jockey in Ubuntu when a user
934 plug in his rocket launcher. In the process I moved the source to a
935 git repository under collab-maint, to make it easier for any DD to
936 contribute. <a href="http://code.google.com/p/pymissile/">Upstream</a>
937 is not very active, but the software still work for me even after five
938 years of relative silence. The new git repository is not listed in
939 the uploaded package yet, because I want to test the other changes a
940 bit more before I upload the new version. If you want to check out
941 the new version with a .desktop file included, visit the
942 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git">gitweb
943 view</a> or use "<tt>git clone
944 git://anonscm.debian.org/collab-maint/pymissile.git</tt>".</p>
945
946 </div>
947 <div class="tags">
948
949
950 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
951
952
953 </div>
954 </div>
955 <div class="padding"></div>
956
957 <div class="entry">
958 <div class="title">
959 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">Lets make hardware dongles easier to use in Debian</a>
960 </div>
961 <div class="date">
962 9th January 2013
963 </div>
964 <div class="body">
965 <p>One thing that annoys me with Debian and Linux distributions in
966 general, is that there is a great package management system with the
967 ability to automatically install software packages by downloading them
968 from the distribution mirrors, but no way to get it to automatically
969 install the packages I need to use the hardware I plug into my
970 machine. Even if the package to use it is easily available from the
971 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
972 suggest to automatically install the python-nxt, nbc and t2n packages
973 I need to talk to it. When I plug in a Yubikey, it could propose the
974 yubikey-personalization package. The information required to do this
975 is available, but no-one have pulled all the pieces together.</p>
976
977 <p>Some years ago, I proposed to
978 <a href="http://lists.debian.org/debian-devel/2010/05/msg01206.html">use
979 the discover subsystem to implement this</a>. The idea is fairly
980 simple:
981
982 <ul>
983
984 <li>Add a desktop entry in /usr/share/autostart/ pointing to a program
985 starting when a user log in.</li>
986
987 <li>Set this program up to listen for kernel events emitted when new
988 hardware is inserted into the computer.</li>
989
990 <li>When new hardware is inserted, look up the hardware ID in a
991 database mapping to packages, and take note of any non-installed
992 packages.</li>
993
994 <li>Show a message to the user proposing to install the discovered
995 package, and make it easy to install it.</li>
996
997 </ul>
998
999 <p>I am not sure what the best way to implement this is, but my
1000 initial idea was to use dbus events to discover new hardware, the
1001 discover database to find packages and
1002 <a href="http://www.packagekit.org/">PackageKit</a> to install
1003 packages.</p>
1004
1005 <p>Yesterday, I found time to try to implement this idea, and the
1006 draft package is now checked into
1007 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
1008 Debian Edu subversion repository</a>. In the process, I updated the
1009 <a href="http://packages.qa.debian.org/d/discover-data.html">discover-data</a>
1010 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
1011 the relevant packages in Debian, and uploaded a new version
1012 2.2013.01.09 to unstable. I also discovered that the current
1013 <a href="http://packages.qa.debian.org/d/discover.html">discover</a>
1014 package in Debian no longer discovered any USB devices, because
1015 /proc/bus/usb/devices is no longer present. I ported it to use
1016 libusb as a fall back option to get it working. The fixed package
1017 version 2.1.2-6 is now in experimental (didn't upload it to unstable
1018 because of the freeze).</p>
1019
1020 <p>With this prototype in place, I can insert my Yubikey, and get this
1021 desktop notification to show up (only once, the first time it is
1022 inserted):</p>
1023
1024 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2013-01-09-hw-autoinstall.png"></p>
1025
1026 <p>For this prototype to be really useful, some way to automatically
1027 install the proposed packages by pressing the "Please install
1028 program(s)" button should to be implemented.</p>
1029
1030 <p>If this idea seem useful to you, and you want to help make it
1031 happen, please help me update the discover-data database with mappings
1032 from hardware to Debian packages. Check if 'discover-pkginstall -l'
1033 list the package you would like to have installed when a given
1034 hardware device is inserted into your computer, and report bugs using
1035 reportbug if it isn't. Or, if you know of a better way to provide
1036 such mapping, please let me know.</p>
1037
1038 <p>This prototype need more work, and there are several questions that
1039 should be considered before it is ready for production use. Is dbus
1040 the correct way to detect new hardware? At the moment I look for HAL
1041 dbus events on the system bus, because that is the events I could see
1042 on my Debian Squeeze KDE desktop. Are there better events to use?
1043 How should the user be notified? Is the desktop notification
1044 mechanism the best option, or should the background daemon raise a
1045 popup instead? How should packages be installed? When should they
1046 not be installed?</p>
1047
1048 <p>If you want to help getting such feature implemented in Debian,
1049 please send me an email. :)</p>
1050
1051 </div>
1052 <div class="tags">
1053
1054
1055 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
1056
1057
1058 </div>
1059 </div>
1060 <div class="padding"></div>
1061
1062 <div class="entry">
1063 <div class="title">
1064 <a href="http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">New IRC channel for LEGO designers using Debian</a>
1065 </div>
1066 <div class="date">
1067 2nd January 2013
1068 </div>
1069 <div class="body">
1070 <p>During Christmas, I have worked a bit on the Debian support for
1071 <a href="http://mindstorms.lego.com/en-us/Default.aspx">LEGO Mindstorm
1072 NXT</a>. My son and I have played a bit with my NXT set, and I
1073 discovered I had to build all the tools myself because none were
1074 already in Debian Squeeze. If Debian support for LEGO is something
1075 you care about, please join me on the IRC channel
1076 <a href="irc://irc.debian.org/%23debian-lego">#debian-lego</a> (server
1077 irc.debian.org). There is a lot that could be done to improve the
1078 Debian support for LEGO designers. For example both CAD software
1079 and Mindstorm compilers are missing. :)</p>
1080
1081 <p>Update 2012-01-03: A
1082 <a href="http://wiki.debian.org/LegoDesigners">project page</a>
1083 including links to Lego related packages is now available.</p>
1084
1085 </div>
1086 <div class="tags">
1087
1088
1089 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
1090
1091
1092 </div>
1093 </div>
1094 <div class="padding"></div>
1095
1096 <div class="entry">
1097 <div class="title">
1098 <a href="http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">How to backport bitcoin-qt version 0.7.2-2 to Debian Squeeze</a>
1099 </div>
1100 <div class="date">
1101 25th December 2012
1102 </div>
1103 <div class="body">
1104 <p>Let me start by wishing you all marry Christmas and a happy new
1105 year! I hope next year will prove to be a good year.</p>
1106
1107 <p><a href="http://www.bitcoin.org/">Bitcoin</a>, the digital
1108 decentralised "currency" that allow people to transfer bitcoins
1109 between each other with minimal overhead, is a very interesting
1110 experiment. And as I wrote a few days ago, the bitcoin situation in
1111 <a href="http://www.debian.org/">Debian</a> is about to improve a bit.
1112 The <a href="http://packages.qa.debian.org/bitcoin">new debian source
1113 package</a> (version 0.7.2-2) was uploaded yesterday, and is waiting
1114 in <a href="http://ftp-master.debian.org/new.html">the NEW queue</A>
1115 for one of the ftpmasters to approve the new bitcoin-qt package
1116 name.</p>
1117
1118 <p>And thanks to the great work of Jonas and the rest of the bitcoin
1119 team in Debian, you can easily test the package in Debian Squeeze
1120 using the following steps to get a set of working packages:</p>
1121
1122 <blockquote><pre>
1123 git clone git://git.debian.org/git/collab-maint/bitcoin
1124 cd bitcoin
1125 DEB_MAINTAINER_MODE=1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
1126 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
1127 </pre></blockquote>
1128
1129 <p>You might have to install some build dependencies as well. The
1130 list of commands should give you two packages, bitcoind and
1131 bitcoin-qt, ready for use in a Squeeze environment. Note that the
1132 client will download the complete set of bitcoin "blocks", which need
1133 around 5.6 GiB of data on my machine at the moment. Make sure your
1134 ~/.bitcoin/ directory have lots of spare room if you want to download
1135 all the blocks. The client will warn if the disk is getting full, so
1136 there is not really a problem if you got too little room, but you will
1137 not be able to get all the features out of the client.</p>
1138
1139 <p>As usual, if you use bitcoin and want to show your support of my
1140 activities, please send Bitcoin donations to my address
1141 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
1142
1143 </div>
1144 <div class="tags">
1145
1146
1147 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</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>.
1148
1149
1150 </div>
1151 </div>
1152 <div class="padding"></div>
1153
1154 <div class="entry">
1155 <div class="title">
1156 <a href="http://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html">A word on bitcoin support in Debian</a>
1157 </div>
1158 <div class="date">
1159 21st December 2012
1160 </div>
1161 <div class="body">
1162 <p>It has been a while since I wrote about
1163 <a href="http://www.bitcoin.org/">bitcoin</a>, the decentralised
1164 peer-to-peer based crypto-currency, and the reason is simply that I
1165 have been busy elsewhere. But two days ago, I started looking at the
1166 state of <a href="http://packages.qa.debian.org/bitcoin">bitcoin in
1167 Debian</a> again to try to recover my old bitcoin wallet. The package
1168 is now maintained by a
1169 <a href="https://alioth.debian.org/projects/pkg-bitcoin/">team of
1170 people</a>, and the grunt work had already been done by this team. We
1171 owe a huge thank you to all these team members. :)
1172 But I was sad to discover that the bitcoin client is missing in
1173 Wheezy. It is only available in Sid (and an outdated client from
1174 backports). The client had several RC bugs registered in BTS blocking
1175 it from entering testing. To try to help the team and improve the
1176 situation, I spent some time providing patches and triaging the bug
1177 reports. I also had a look at the bitcoin package available from Matt
1178 Corallo in a
1179 <a href="https://launchpad.net/~bitcoin/+archive/bitcoin">PPA for
1180 Ubuntu</a>, and moved the useful pieces from that version into the
1181 Debian package.</p>
1182
1183 <p>After checking with the main package maintainer Jonas Smedegaard on
1184 IRC, I pushed several patches into the collab-maint git repository to
1185 improve the package. It now contains fixes for the RC issues (not from
1186 me, but fixed by Scott Howard), build rules for a Qt GUI client
1187 package, konqueror support for the bitcoin: URI and bash completion
1188 setup. As I work on Debian Squeeze, I also created
1189 <a href="http://lists.alioth.debian.org/pipermail/pkg-bitcoin-devel/Week-of-Mon-20121217/000041.html">a
1190 patch to backport</a> the latest version. Jonas is going to look at
1191 it and try to integrate it into the git repository before uploading a
1192 new version to unstable.
1193
1194 <p>I would very much like bitcoin to succeed, to get rid of the
1195 centralized control currently exercised in the monetary system. I
1196 find it completely unacceptable that the USA government is collecting
1197 transaction data for almost all international money transfers (most are done in USD and transaction logs shipped to the spooks), and
1198 that the major credit card companies can block legal money
1199 transactions to Wikileaks. But for bitcoin to succeed, more people
1200 need to use bitcoins, and more people need to accept bitcoins when
1201 they sell products and services. Improving the bitcoin support in
1202 Debian is a small step in the right direction, but not enough.
1203 Unfortunately the user experience when browsing the web and wanting to
1204 pay with bitcoin is still not very good. The bitcoin: URI is a step
1205 in the right direction, but need to work in most or every browser in
1206 use. Also the bitcoin-qt client is too heavy to fire up to do a
1207 quick transaction. I believe there are other clients available, but
1208 have not tested them.</p>
1209
1210 <p>My
1211 <a href="http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">experiment
1212 with bitcoins</a> showed that at least some of my readers use bitcoin.
1213 I received 20.15 BTC so far on the address I provided in my blog two
1214 years ago, as can be
1215 <a href="http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">seen
1216 on the blockexplorer service</a>. Thank you everyone for your
1217 donation. The blockexplorer service demonstrates quite well that
1218 bitcoin is not quite anonymous and untracked. :) I wonder if the
1219 number of users have gone up since then. If you use bitcoin and want
1220 to show your support of my activity, please send Bitcoin donations to
1221 the same address as last time,
1222 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
1223
1224 </div>
1225 <div class="tags">
1226
1227
1228 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</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>.
1229
1230
1231 </div>
1232 </div>
1233 <div class="padding"></div>
1234
1235 <div class="entry">
1236 <div class="title">
1237 <a href="http://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html">Git repository for song book for Computer Scientists</a>
1238 </div>
1239 <div class="date">
1240 7th September 2012
1241 </div>
1242 <div class="body">
1243 <p>As I
1244 <a href="http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">mentioned
1245 this summer</a>, I have created a Computer Science song book a few
1246 years ago, and today I finally found time to create a public
1247 <a href="https://gitorious.org/pere-cs-songbook/pere-cs-songbook">Gitorious
1248 repository for the project</a>.</p>
1249
1250 <p>If you want to help out, please clone the source and submit patches
1251 to the HTML version. To generate the PDF and PostScript version,
1252 please use prince XML, or let me know about a useful free software
1253 processor capable of creating a good looking PDF from the HTML.</p>
1254
1255 <p>Want to sing? You can still find the song book in HTML, PDF and
1256 PostScript formats at
1257 <a href="http://www.hungry.com/~pere/cs-songbook/">Petter's Computer
1258 Science Songbook</a>.</p>
1259
1260 </div>
1261 <div class="tags">
1262
1263
1264 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
1265
1266
1267 </div>
1268 </div>
1269 <div class="padding"></div>
1270
1271 <div class="entry">
1272 <div class="title">
1273 <a href="http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html">Gratulerer med 19-Ã¥rsdagen, Debian!</a>
1274 </div>
1275 <div class="date">
1276 16th August 2012
1277 </div>
1278 <div class="body">
1279 <p>I dag fyller
1280 <a href="http://www.debian.org/News/2012/20120813">Debian-prosjektet 19
1281 år</a>. Jeg har fulgt det de siste 12 årene, og er veldig glad for å kunne
1282 si gratulerer med dagen, Debian!</p>
1283
1284 </div>
1285 <div class="tags">
1286
1287
1288 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.
1289
1290
1291 </div>
1292 </div>
1293 <div class="padding"></div>
1294
1295 <div class="entry">
1296 <div class="title">
1297 <a href="http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">Song book for Computer Scientists</a>
1298 </div>
1299 <div class="date">
1300 24th June 2012
1301 </div>
1302 <div class="body">
1303 <p>Many years ago, while studying Computer Science at the
1304 <a href="http://www.uit.no/">University of Tromsø</a>, I started
1305 collecting computer related songs for use at parties. The original
1306 version was written in LaTeX, but a few years ago I got help from
1307 HÃ¥kon W. Lie, one of the inventors of W3C CSS, to convert it to HTML
1308 while keeping the ability to create a nice book in PDF format. I have
1309 not had time to maintain the book for a while now, and guess I should
1310 put it up on some public version control repository where others can
1311 help me extend and update the book. If anyone is volunteering to help
1312 me with this, send me an email. Also let me know if there are songs
1313 missing in my book.</p>
1314
1315 <p>I have not mentioned the book on my blog so far, and it occured to
1316 me today that I really should let all my readers share the joys of
1317 singing out load about programming, computers and computer networks.
1318 Especially now that <a href="http://debconf12.debconf.org/">Debconf
1319 12</a> is about to start (and I am not going). Want to sing? Check
1320 out <a href="http://www.hungry.com/~pere/cs-songbook/">Petter's
1321 Computer Science Songbook</a>.
1322
1323 </div>
1324 <div class="tags">
1325
1326
1327 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
1328
1329
1330 </div>
1331 </div>
1332 <div class="padding"></div>
1333
1334 <div class="entry">
1335 <div class="title">
1336 <a href="http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html">Automatically upgrading server firmware on Dell PowerEdge</a>
1337 </div>
1338 <div class="date">
1339 21st November 2011
1340 </div>
1341 <div class="body">
1342 <p>At work we have heaps of servers. I believe the total count is
1343 around 1000 at the moment. To be able to get help from the vendors
1344 when something go wrong, we want to keep the firmware on the servers
1345 up to date. If the firmware isn't the latest and greatest, the
1346 vendors typically refuse to start debugging any problems until the
1347 firmware is upgraded. So before every reboot, we want to upgrade the
1348 firmware, and we would really like everyone handling servers at the
1349 university to do this themselves when they plan to reboot a machine.
1350 For that to happen we at the unix server admin group need to provide
1351 the tools to do so.</p>
1352
1353 <p>To make firmware upgrading easier, I am working on a script to
1354 fetch and install the latest firmware for the servers we got. Most of
1355 our hardware are from Dell and HP, so I have focused on these servers
1356 so far. This blog post is about the Dell part.</P>
1357
1358 <p>On the Dell FTP site I was lucky enough to find
1359 <a href="ftp://ftp.us.dell.com/catalog/Catalog.xml.gz">an XML file</a>
1360 with firmware information for all 11th generation servers, listing
1361 which firmware should be used on a given model and where on the FTP
1362 site I can find it. Using a simple perl XML parser I can then
1363 download the shell scripts Dell provides to do firmware upgrades from
1364 within Linux and reboot when all the firmware is primed and ready to
1365 be activated on the first reboot.</p>
1366
1367 <p>This is the Dell related fragment of the perl code I am working on.
1368 Are there anyone working on similar tools for firmware upgrading all
1369 servers at a site? Please get in touch and lets share resources.</p>
1370
1371 <p><pre>
1372 #!/usr/bin/perl
1373 use strict;
1374 use warnings;
1375 use File::Temp qw(tempdir);
1376 BEGIN {
1377 # Install needed RHEL packages if missing
1378 my %rhelmodules = (
1379 'XML::Simple' => 'perl-XML-Simple',
1380 );
1381 for my $module (keys %rhelmodules) {
1382 eval "use $module;";
1383 if ($@) {
1384 my $pkg = $rhelmodules{$module};
1385 system("yum install -y $pkg");
1386 eval "use $module;";
1387 }
1388 }
1389 }
1390 my $errorsto = 'pere@hungry.com';
1391
1392 upgrade_dell();
1393
1394 exit 0;
1395
1396 sub run_firmware_script {
1397 my ($opts, $script) = @_;
1398 unless ($script) {
1399 print STDERR "fail: missing script name\n";
1400 exit 1
1401 }
1402 print STDERR "Running $script\n\n";
1403
1404 if (0 == system("sh $script $opts")) { # FIXME correct exit code handling
1405 print STDERR "success: firmware script ran succcessfully\n";
1406 } else {
1407 print STDERR "fail: firmware script returned error\n";
1408 }
1409 }
1410
1411 sub run_firmware_scripts {
1412 my ($opts, @dirs) = @_;
1413 # Run firmware packages
1414 for my $dir (@dirs) {
1415 print STDERR "info: Running scripts in $dir\n";
1416 opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
1417 while (my $s = readdir $dh) {
1418 next if $s =~ m/^\.\.?/;
1419 run_firmware_script($opts, "$dir/$s");
1420 }
1421 closedir $dh;
1422 }
1423 }
1424
1425 sub download {
1426 my $url = shift;
1427 print STDERR "info: Downloading $url\n";
1428 system("wget --quiet \"$url\"");
1429 }
1430
1431 sub upgrade_dell {
1432 my @dirs;
1433 my $product = `dmidecode -s system-product-name`;
1434 chomp $product;
1435
1436 if ($product =~ m/PowerEdge/) {
1437
1438 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
1439 system('yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail');
1440
1441 my $tmpdir = tempdir(
1442 CLEANUP => 1
1443 );
1444 chdir($tmpdir);
1445 fetch_dell_fw('catalog/Catalog.xml.gz');
1446 system('gunzip Catalog.xml.gz');
1447 my @paths = fetch_dell_fw_list('Catalog.xml');
1448 # -q is quiet, disabling interactivity and reducing console output
1449 my $fwopts = "-q";
1450 if (@paths) {
1451 for my $url (@paths) {
1452 fetch_dell_fw($url);
1453 }
1454 run_firmware_scripts($fwopts, $tmpdir);
1455 } else {
1456 print STDERR "error: Unsupported Dell model '$product'.\n";
1457 print STDERR "error: Please report to $errorsto.\n";
1458 }
1459 chdir('/');
1460 } else {
1461 print STDERR "error: Unsupported Dell model '$product'.\n";
1462 print STDERR "error: Please report to $errorsto.\n";
1463 }
1464 }
1465
1466 sub fetch_dell_fw {
1467 my $path = shift;
1468 my $url = "ftp://ftp.us.dell.com/$path";
1469 download($url);
1470 }
1471
1472 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
1473 # firmware packages to download from Dell. Only work for Linux
1474 # machines and 11th generation Dell servers.
1475 sub fetch_dell_fw_list {
1476 my $filename = shift;
1477
1478 my $product = `dmidecode -s system-product-name`;
1479 chomp $product;
1480 my ($mybrand, $mymodel) = split(/\s+/, $product);
1481
1482 print STDERR "Finding firmware bundles for $mybrand $mymodel\n";
1483
1484 my $xml = XMLin($filename);
1485 my @paths;
1486 for my $bundle (@{$xml->{SoftwareBundle}}) {
1487 my $brand = $bundle->{TargetSystems}->{Brand}->{Display}->{content};
1488 my $model = $bundle->{TargetSystems}->{Brand}->{Model}->{Display}->{content};
1489 my $oscode;
1490 if ("ARRAY" eq ref $bundle->{TargetOSes}->{OperatingSystem}) {
1491 $oscode = $bundle->{TargetOSes}->{OperatingSystem}[0]->{osCode};
1492 } else {
1493 $oscode = $bundle->{TargetOSes}->{OperatingSystem}->{osCode};
1494 }
1495 if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
1496 {
1497 @paths = map { $_->{path} } @{$bundle->{Contents}->{Package}};
1498 }
1499 }
1500 for my $component (@{$xml->{SoftwareComponent}}) {
1501 my $componenttype = $component->{ComponentType}->{value};
1502
1503 # Drop application packages, only firmware and BIOS
1504 next if 'APAC' eq $componenttype;
1505
1506 my $cpath = $component->{path};
1507 for my $path (@paths) {
1508 if ($cpath =~ m%/$path$%) {
1509 push(@paths, $cpath);
1510 }
1511 }
1512 }
1513 return @paths;
1514 }
1515 </pre>
1516
1517 <p>The code is only tested on RedHat Enterprise Linux, but I suspect
1518 it could work on other platforms with some tweaking. Anyone know a
1519 index like Catalog.xml is available from HP for HP servers? At the
1520 moment I maintain a similar list manually and it is quickly getting
1521 outdated.</p>
1522
1523 </div>
1524 <div class="tags">
1525
1526
1527 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
1528
1529
1530 </div>
1531 </div>
1532 <div class="padding"></div>
1533
1534 <div class="entry">
1535 <div class="title">
1536 <a href="http://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>
1537 </div>
1538 <div class="date">
1539 4th August 2011
1540 </div>
1541 <div class="body">
1542 <p>Wouter Verhelst have some
1543 <a href="http://grep.be/blog/en/retorts/pere_kubuntu_boot">interesting
1544 comments and opinions</a> on my blog post on
1545 <a href="http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html">the
1546 need to clean up /etc/rcS.d/ in Debian</a> and my blog post about
1547 <a href="http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html">the
1548 default KDE desktop in Debian</a>. I only have time to address one
1549 small piece of his comment now, and though it best to address the
1550 misunderstanding he bring forward:</p>
1551
1552 <p><blockquote>
1553 Currently, a system admin has four options: [...] boot to a
1554 single-user system (by adding 'single' to the kernel command line;
1555 this runs rcS and rc1 scripts)
1556 </blockquote></p>
1557
1558 <p>This make me believe Wouter believe booting into single user mode
1559 and booting into runlevel 1 is the same. I am not surprised he
1560 believe this, because it would make sense and is a quite sensible
1561 thing to believe. But because the boot in Debian is slightly broken,
1562 runlevel 1 do not work properly and it isn't the same as single user
1563 mode. I'll try to explain what is actually happing, but it is a bit
1564 hard to explain.</p>
1565
1566 <p>Single user mode is defined like this in /etc/inittab:
1567 "<tt>~~:S:wait:/sbin/sulogin</tt>". This means the only thing that is
1568 executed in single user mode is sulogin. Single user mode is a boot
1569 state "between" the runlevels, and when booting into single user mode,
1570 only the scripts in /etc/rcS.d/ are executed before the init process
1571 enters the single user state. When switching to runlevel 1, the state
1572 is in fact not ending in runlevel 1, but it passes through runlevel 1
1573 and end up in the single user mode (see /etc/rc1.d/S03single, which
1574 runs "init -t1 S" to switch to single user mode at the end of runlevel
1575 1. It is confusing that the 'S' (single user) init mode is not the
1576 mode enabled by /etc/rcS.d/ (which is more like the initial boot
1577 mode).</p>
1578
1579 <p>This summary might make it clearer. When booting for the first
1580 time into single user mode, the following commands are executed:
1581 "<tt>/etc/init.d/rc S; /sbin/sulogin</tt>". When booting into
1582 runlevel 1, the following commands are executed: "<tt>/etc/init.d/rc
1583 S; /etc/init.d/rc 1; /sbin/sulogin</tt>". A problem show up when
1584 trying to continue after visiting single user mode. Not all services
1585 are started again as they should, causing the machine to end up in an
1586 unpredicatble state. This is why Debian admins recommend rebooting
1587 after visiting single user mode.</p>
1588
1589 <p>A similar problem with runlevel 1 is caused by the amount of
1590 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
1591 to runlevel 1, the services started from /etc/rcS.d/ are not properly
1592 stopped when passing through the scripts in /etc/rc1.d/, and not
1593 started again when switching away from runlevel 1 to the runlevels
1594 2-5. I believe the problem is best fixed by moving all the scripts
1595 out of /etc/rcS.d/ that are not <strong>required</strong> to get a
1596 functioning single user mode during boot.</p>
1597
1598 <p>I have spent several years investigating the Debian boot system,
1599 and discovered this problem a few years ago. I suspect it originates
1600 from when sysvinit was introduced into Debian, a long time ago.</p>
1601
1602 </div>
1603 <div class="tags">
1604
1605
1606 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>.
1607
1608
1609 </div>
1610 </div>
1611 <div class="padding"></div>
1612
1613 <div class="entry">
1614 <div class="title">
1615 <a href="http://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>
1616 </div>
1617 <div class="date">
1618 30th July 2011
1619 </div>
1620 <div class="body">
1621 <p>In the Debian boot system, several packages include scripts that
1622 are started from /etc/rcS.d/. In fact, there is a bite more of them
1623 than make sense, and this causes a few problems. What kind of
1624 problems, you might ask. There are at least two problems. The first
1625 is that it is not possible to recover a machine after switching to
1626 runlevel 1. One need to actually reboot to get the machine back to
1627 the expected state. The other is that single user boot will sometimes
1628 run into problems because some of the subsystems are activated before
1629 the root login is presented, causing problems when trying to recover a
1630 machine from a problem in that subsystem. A minor additional point is
1631 that moving more scripts out of rcS.d/ and into the other rc#.d/
1632 directories will increase the amount of scripts that can run in
1633 parallel during boot, and thus decrease the boot time.</p>
1634
1635 <p>So, which scripts should start from rcS.d/. In short, only the
1636 scripts that _have_ to execute before the root login prompt is
1637 presented during a single user boot should go there. Everything else
1638 should go into the numeric runlevels. This means things like
1639 lm-sensors, fuse and x11-common should not run from rcS.d, but from
1640 the numeric runlevels. Today in Debian, there are around 115 init.d
1641 scripts that are started from rcS.d/, and most of them should be moved
1642 out. Do your package have one of them? Please help us make single
1643 user and runlevel 1 better by moving it.</p>
1644
1645 <p>Scripts setting up the screen, keyboard, system partitions
1646 etc. should still be started from rcS.d/, but there is for example no
1647 need to have the network enabled before the single user login prompt
1648 is presented.</p>
1649
1650 <p>As always, things are not so easy to fix as they sound. To keep
1651 Debian systems working while scripts migrate and during upgrades, the
1652 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
1653 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
1654 and the next ones can only be moved when their dependencies have been
1655 moved first. This migration must be done sequentially while we ensure
1656 that the package system upgrade packages in the right order to keep
1657 the system state correct. This will require some coordination when it
1658 comes to network related packages, but most of the packages with
1659 scripts that should migrate do not have anything in rcS.d/ depending
1660 on them. Some packages have already been updated, like the sudo
1661 package, while others are still left to do. I wish I had time to work
1662 on this myself, but real live constrains make it unlikely that I will
1663 find time to push this forward.</p>
1664
1665 </div>
1666 <div class="tags">
1667
1668
1669 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>.
1670
1671
1672 </div>
1673 </div>
1674 <div class="padding"></div>
1675
1676 <div class="entry">
1677 <div class="title">
1678 <a href="http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html">What is missing in the Debian desktop, or why my parents use Kubuntu</a>
1679 </div>
1680 <div class="date">
1681 29th July 2011
1682 </div>
1683 <div class="body">
1684 <p>While at Debconf11, I have several times during discussions
1685 mentioned the issues I believe should be improved in Debian for its
1686 desktop to be useful for more people. The use case for this is my
1687 parents, which are currently running Kubuntu which solve the
1688 issues.</p>
1689
1690 <p>I suspect these four missing features are not very hard to
1691 implement. After all, they are present in Ubuntu, so if we wanted to
1692 do this in Debian we would have a source.</p>
1693
1694 <ol>
1695
1696 <li><strong>Simple GUI based upgrade of packages.</strong> When there
1697 are new packages available for upgrades, a icon in the KDE status bar
1698 indicate this, and clicking on it will activate the simple upgrade
1699 tool to handle it. I have no problem guiding both of my parents
1700 through the process over the phone. If a kernel reboot is required,
1701 this too is indicated by the status bars and the upgrade tool. Last
1702 time I checked, nothing with the same features was working in KDE in
1703 Debian.</li>
1704
1705 <li><strong>Simple handling of missing Firefox browser
1706 plugins.</strong> When the browser encounter a MIME type it do not
1707 currently have a handler for, it will ask the user if the system
1708 should search for a package that would add support for this MIME type,
1709 and if the user say yes, the APT sources will be searched for packages
1710 advertising the MIME type in their control file (visible in the
1711 Packages file in the APT archive). If one or more packages are found,
1712 it is a simple click of the mouse to add support for the missing mime
1713 type. If the package require the user to accept some non-free
1714 license, this is explained to the user. The entire process make it
1715 more clear to the user why something do not work in the browser, and
1716 make the chances higher for the user to blame the web page authors and
1717 not the browser for any missing features.</li>
1718
1719 <li><strong>Simple handling of missing multimedia codec/format
1720 handlers.</strong> When the media players encounter a format or codec
1721 it is not supporting, a dialog pop up asking the user if the system
1722 should search for a package that would add support for it. This
1723 happen with things like MP3, Windows Media or H.264. The selection
1724 and installation procedure is very similar to the Firefox browser
1725 plugin handling. This is as far as I know implemented using a
1726 gstreamer hook. The end result is that the user easily get access to
1727 the codecs that are present from the APT archives available, while
1728 explaining more on why a given format is unsupported by Ubuntu.</li>
1729
1730 <li><strong>Better browser handling of some MIME types.</strong> When
1731 displaying a text/plain file in my Debian browser, it will propose to
1732 start emacs to show it. If I remember correctly, when doing the same
1733 in Kunbutu it show the file as a text file in the browser. At least I
1734 know Opera will show text files within the browser. I much prefer the
1735 latter behaviour.</li>
1736
1737 </ol>
1738
1739 <p>There are other nice features as well, like the simplified suite
1740 upgrader, but given that I am the one mostly doing the dist-upgrade,
1741 it do not matter much.</p>
1742
1743 <p>I really hope we could get these features in place for the next
1744 Debian release. It would require the coordinated effort of several
1745 maintainers, but would make the end user experience a lot better.</p>
1746
1747 </div>
1748 <div class="tags">
1749
1750
1751 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
1752
1753
1754 </div>
1755 </div>
1756 <div class="padding"></div>
1757
1758 <div class="entry">
1759 <div class="title">
1760 <a href="http://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html">Perl modules used by FixMyStreet which are missing in Debian/Squeeze</a>
1761 </div>
1762 <div class="date">
1763 26th July 2011
1764 </div>
1765 <div class="body">
1766 <p>The Norwegian <a href="http://www.fiksgatami.no/">FiksGataMi</A>
1767 site is build on Debian/Squeeze, and this platform was chosen because
1768 I am most familiar with Debian (being a Debian Developer for around 10
1769 years) because it is the latest stable Debian release which should get
1770 security support for a few years.</p>
1771
1772 <p>The web service is written in Perl, and depend on some perl modules
1773 that are missing in Debian at the moment. It would be great if these
1774 modules were added to the Debian archive, allowing anyone to set up
1775 their own <a href="http://www.fixmystreet.com">FixMyStreet</a> clone
1776 in their own country using only Debian packages. The list of modules
1777 missing in Debian/Squeeze isn't very long, and I hope the perl group
1778 will find time to package the 12 modules Catalyst::Plugin::SmartURI,
1779 Catalyst::Plugin::Unicode::Encoding, Catalyst::View::TT, Devel::Hide,
1780 Sort::Key, Statistics::Distributions, Template::Plugin::Comma,
1781 Template::Plugin::DateTime::Format, Term::Size::Any, Term::Size::Perl,
1782 URI::SmartURI and Web::Scraper to make the maintenance of FixMyStreet
1783 easier in the future.</p>
1784
1785 <p>Thanks to the great tools in Debian, getting the missing modules
1786 installed on my server was a simple call to 'cpan2deb Module::Name'
1787 and 'dpkg -i' to install the resulting package. But this leave me
1788 with the responsibility of tracking security problems, which I really
1789 do not have time for.</p>
1790
1791 </div>
1792 <div class="tags">
1793
1794
1795 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami</a>.
1796
1797
1798 </div>
1799 </div>
1800 <div class="padding"></div>
1801
1802 <div class="entry">
1803 <div class="title">
1804 <a href="http://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html">A Norwegian FixMyStreet have kept me busy the last few weeks</a>
1805 </div>
1806 <div class="date">
1807 3rd April 2011
1808 </div>
1809 <div class="body">
1810 <p>Here is a small update for my English readers. Most of my blog
1811 posts have been in Norwegian the last few weeks, so here is a short
1812 update in English.</p>
1813
1814 <p>The kids still keep me too busy to get much free software work
1815 done, but I did manage to organise a project to get a Norwegian port
1816 of the British service
1817 <a href="http://www.fixmystreet.com/">FixMyStreet</a> up and running,
1818 and it has been running for a month now. The entire project has been
1819 organised by me and two others. Around Christmas we gathered sponsors
1820 to fund the development work. In January I drafted a contract with
1821 <a href="http://www.mysociety.org/">mySociety</a> on what to develop,
1822 and in February the development took place. Most of it involved
1823 converting the source to use GPS coordinates instead of British
1824 easting/northing, and the resulting code should be a lot easier to get
1825 running in any country by now. The Norwegian
1826 <a href="http://www.fiksgatami.no/">FiksGataMi</a> is using
1827 <a href="http://www.openstreetmap.org/">OpenStreetmap</a> as the map
1828 source and the source for administrative borders in Norway, and
1829 support for this had to be added/fixed.</p>
1830
1831 <p>The Norwegian version went live March 3th, and we spent the weekend
1832 polishing the system before we announced it March 7th. The system is
1833 running on a KVM instance of Debian/Squeeze, and has seen almost 3000
1834 problem reports in a few weeks. Soon we hope to announce the Android
1835 and iPhone versions making it even easier to report problems with the
1836 public infrastructure.</p>
1837
1838 <p>Perhaps something to consider for those of you in countries without
1839 such service?</p>
1840
1841 </div>
1842 <div class="tags">
1843
1844
1845 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami</a>, <a href="http://people.skolelinux.org/pere/blog/tags/kart">kart</a>.
1846
1847
1848 </div>
1849 </div>
1850 <div class="padding"></div>
1851
1852 <div class="entry">
1853 <div class="title">
1854 <a href="http://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html">Using NVD and CPE to track CVEs in locally maintained software</a>
1855 </div>
1856 <div class="date">
1857 28th January 2011
1858 </div>
1859 <div class="body">
1860 <p>The last few days I have looked at ways to track open security
1861 issues here at my work with the University of Oslo. My idea is that
1862 it should be possible to use the information about security issues
1863 available on the Internet, and check our locally
1864 maintained/distributed software against this information. It should
1865 allow us to verify that no known security issues are forgotten. The
1866 CVE database listing vulnerabilities seem like a great central point,
1867 and by using the package lists from Debian mapped to CVEs provided by
1868 the testing security team, I believed it should be possible to figure
1869 out which security holes were present in our free software
1870 collection.</p>
1871
1872 <p>After reading up on the topic, it became obvious that the first
1873 building block is to be able to name software packages in a unique and
1874 consistent way across data sources. I considered several ways to do
1875 this, for example coming up with my own naming scheme like using URLs
1876 to project home pages or URLs to the Freshmeat entries, or using some
1877 existing naming scheme. And it seem like I am not the first one to
1878 come across this problem, as MITRE already proposed and implemented a
1879 solution. Enter the <a href="http://cpe.mitre.org/index.html">Common
1880 Platform Enumeration</a> dictionary, a vocabulary for referring to
1881 software, hardware and other platform components. The CPE ids are
1882 mapped to CVEs in the <a href="http://web.nvd.nist.gov/">National
1883 Vulnerability Database</a>, allowing me to look up know security
1884 issues for any CPE name. With this in place, all I need to do is to
1885 locate the CPE id for the software packages we use at the university.
1886 This is fairly trivial (I google for 'cve cpe $package' and check the
1887 NVD entry if a CVE for the package exist).</p>
1888
1889 <p>To give you an example. The GNU gzip source package have the CPE
1890 name cpe:/a:gnu:gzip. If the old version 1.3.3 was the package to
1891 check out, one could look up
1892 <a href="http://web.nvd.nist.gov/view/vuln/search?cpe=cpe%3A%2Fa%3Agnu%3Agzip:1.3.3">cpe:/a:gnu:gzip:1.3.3
1893 in NVD</a> and get a list of 6 security holes with public CVE entries.
1894 The most recent one is
1895 <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-0001">CVE-2010-0001</a>,
1896 and at the bottom of the NVD page for this vulnerability the complete
1897 list of affected versions is provided.</p>
1898
1899 <p>The NVD database of CVEs is also available as a XML dump, allowing
1900 for offline processing of issues. Using this dump, I've written a
1901 small script taking a list of CPEs as input and list all CVEs
1902 affecting the packages represented by these CPEs. One give it CPEs
1903 with version numbers as specified above and get a list of open
1904 security issues out.</p>
1905
1906 <p>Of course for this approach to be useful, the quality of the NVD
1907 information need to be high. For that to happen, I believe as many as
1908 possible need to use and contribute to the NVD database. I notice
1909 RHEL is providing
1910 <a href="https://www.redhat.com/security/data/metrics/rhsamapcpe.txt">a
1911 map from CVE to CPE</a>, indicating that they are using the CPE
1912 information. I'm not aware of Debian and Ubuntu doing the same.</p>
1913
1914 <p>To get an idea about the quality for free software, I spent some
1915 time making it possible to compare the CVE database from Debian with
1916 the CVE database in NVD. The result look fairly good, but there are
1917 some inconsistencies in NVD (same software package having several
1918 CPEs), and some inaccuracies (NVD not mentioning buggy packages that
1919 Debian believe are affected by a CVE). Hope to find time to improve
1920 the quality of NVD, but that require being able to get in touch with
1921 someone maintaining it. So far my three emails with questions and
1922 corrections have not seen any reply, but I hope contact can be
1923 established soon.</p>
1924
1925 <p>An interesting application for CPEs is cross platform package
1926 mapping. It would be useful to know which packages in for example
1927 RHEL, OpenSuSe and Mandriva are missing from Debian and Ubuntu, and
1928 this would be trivial if all linux distributions provided CPE entries
1929 for their packages.</p>
1930
1931 </div>
1932 <div class="tags">
1933
1934
1935 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
1936
1937
1938 </div>
1939 </div>
1940 <div class="padding"></div>
1941
1942 <div class="entry">
1943 <div class="title">
1944 <a href="http://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html">Which module is loaded for a given PCI and USB device?</a>
1945 </div>
1946 <div class="date">
1947 23rd January 2011
1948 </div>
1949 <div class="body">
1950 <p>In the
1951 <a href="http://packages.qa.debian.org/discover-data">discover-data</a>
1952 package in Debian, there is a script to report useful information
1953 about the running hardware for use when people report missing
1954 information. One part of this script that I find very useful when
1955 debugging hardware problems, is the part mapping loaded kernel module
1956 to the PCI device it claims. It allow me to quickly see if the kernel
1957 module I expect is driving the hardware I am struggling with. To see
1958 the output, make sure discover-data is installed and run
1959 <tt>/usr/share/bug/discover-data 3>&1</tt>. The relevant output on
1960 one of my machines like this:</p>
1961
1962 <pre>
1963 loaded modules:
1964 10de:03eb i2c_nforce2
1965 10de:03f1 ohci_hcd
1966 10de:03f2 ehci_hcd
1967 10de:03f0 snd_hda_intel
1968 10de:03ec pata_amd
1969 10de:03f6 sata_nv
1970 1022:1103 k8temp
1971 109e:036e bttv
1972 109e:0878 snd_bt87x
1973 11ab:4364 sky2
1974 </pre>
1975
1976 <p>The code in question look like this, slightly modified for
1977 readability and to drop the output to file descriptor 3:</p>
1978
1979 <pre>
1980 if [ -d /sys/bus/pci/devices/ ] ; then
1981 echo loaded pci modules:
1982 (
1983 cd /sys/bus/pci/devices/
1984 for address in * ; do
1985 if [ -d "$address/driver/module" ] ; then
1986 module=`cd $address/driver/module ; pwd -P | xargs basename`
1987 if grep -q "^$module " /proc/modules ; then
1988 address=$(echo $address |sed s/0000://)
1989 id=`lspci -n -s $address | tail -n 1 | awk '{print $3}'`
1990 echo "$id $module"
1991 fi
1992 fi
1993 done
1994 )
1995 echo
1996 fi
1997 </pre>
1998
1999 <p>Similar code could be used to extract USB device module
2000 mappings:</p>
2001
2002 <pre>
2003 if [ -d /sys/bus/usb/devices/ ] ; then
2004 echo loaded usb modules:
2005 (
2006 cd /sys/bus/usb/devices/
2007 for address in * ; do
2008 if [ -d "$address/driver/module" ] ; then
2009 module=`cd $address/driver/module ; pwd -P | xargs basename`
2010 if grep -q "^$module " /proc/modules ; then
2011 address=$(echo $address |sed s/0000://)
2012 id=$(lsusb -s $address | tail -n 1 | awk '{print $6}')
2013 if [ "$id" ] ; then
2014 echo "$id $module"
2015 fi
2016 fi
2017 fi
2018 done
2019 )
2020 echo
2021 fi
2022 </pre>
2023
2024 <p>This might perhaps be something to include in other tools as
2025 well.</p>
2026
2027 </div>
2028 <div class="tags">
2029
2030
2031 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
2032
2033
2034 </div>
2035 </div>
2036 <div class="padding"></div>
2037
2038 <div class="entry">
2039 <div class="title">
2040 <a href="http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html">How to test if a laptop is working with Linux</a>
2041 </div>
2042 <div class="date">
2043 22nd December 2010
2044 </div>
2045 <div class="body">
2046 <p>The last few days I have spent at work here at the <a
2047 href="http://www.uio.no/">University of Oslo</a> testing if the new
2048 batch of computers will work with Linux. Every year for the last few
2049 years the university have organised shared bid of a few thousand
2050 computers, and this year HP won the bid. Two different desktops and
2051 five different laptops are on the list this year. We in the UNIX
2052 group want to know which one of these computers work well with RHEL
2053 and Ubuntu, the two Linux distributions we currently handle at the
2054 university.</p>
2055
2056 <p>My test method is simple, and I share it here to get feedback and
2057 perhaps inspire others to test hardware as well. To test, I PXE
2058 install the OS version of choice, and log in as my normal user and run
2059 a few applications and plug in selected pieces of hardware. When
2060 something fail, I make a note about this in the test matrix and move
2061 on. If I have some spare time I try to report the bug to the OS
2062 vendor, but as I only have the machines for a short time, I rarely
2063 have the time to do this for all the problems I find.</p>
2064
2065 <p>Anyway, to get to the point of this post. Here is the simple tests
2066 I perform on a new model.</p>
2067
2068 <ul>
2069
2070 <li>Is PXE installation working? I'm testing with RHEL6, Ubuntu Lucid
2071 and Ubuntu Maverik at the moment. If I feel like it, I also test with
2072 RHEL5 and Debian Edu/Squeeze.</li>
2073
2074 <li>Is X.org working? If the graphical login screen show up after
2075 installation, X.org is working.</li>
2076
2077 <li>Is hardware accelerated OpenGL working? Running glxgears (in
2078 package mesa-utils on Ubuntu) and writing down the frames per second
2079 reported by the program.</li>
2080
2081 <li>Is sound working? With Gnome and KDE, a sound is played when
2082 logging in, and if I can hear this the test is successful. If there
2083 are several audio exits on the machine, I try them all and check if
2084 the Gnome/KDE audio mixer can control where to send the sound. I
2085 normally test this by playing
2086 <a href="http://www.nuug.no/aktiviteter/20101012-chef/ ">a HTML5
2087 video</a> in Firefox/Iceweasel.</li>
2088
2089 <li>Is the USB subsystem working? I test this by plugging in a USB
2090 memory stick and see if Gnome/KDE notices this.</li>
2091
2092 <li>Is the CD/DVD player working? I test this by inserting any CD/DVD
2093 I have lying around, and see if Gnome/KDE notices this.</li>
2094
2095 <li>Is any built in camera working? Test using cheese, and see if a
2096 picture from the v4l device show up.</li>
2097
2098 <li>Is bluetooth working? Use the Gnome/KDE browsing tool to see if
2099 any bluetooth devices are discovered. In my office, I normally see a
2100 few.</li>
2101
2102 <li>For laptops, is the SD or Compaq Flash reader working. I have
2103 memory modules lying around, and stick them in and see if Gnome/KDE
2104 notice this.</li>
2105
2106 <li>For laptops, is suspend/hibernate working? I'm testing if the
2107 special button work, and if the laptop continue to work after
2108 resume.</li>
2109
2110 <li>For laptops, is the extra buttons working, like audio level,
2111 adjusting background light, switching on/off external video output,
2112 switching on/off wifi, bluetooth, etc? The set of buttons differ from
2113 laptop to laptop, so I just write down which are working and which are
2114 not.</li>
2115
2116 <li>Some laptops have smart card readers, finger print readers,
2117 acceleration sensors etc. I rarely test these, as I do not know how
2118 to quickly test if they are working or not, so I only document their
2119 existence.</li>
2120
2121 </ul>
2122
2123 <p>By now I suspect you are really curious what the test results are
2124 for the HP machines I am testing. I'm not done yet, so I will report
2125 the test results later. For now I can report that HP 8100 Elite work
2126 fine, and hibernation fail with HP EliteBook 8440p on Ubuntu Lucid,
2127 and audio fail on RHEL6. Ubuntu Maverik worked with 8440p. As you
2128 can see, I have most machines left to test. One interesting
2129 observation is that Ubuntu Lucid has almost twice the frame rate than
2130 RHEL6 with glxgears. No idea why.</p>
2131
2132 </div>
2133 <div class="tags">
2134
2135
2136 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
2137
2138
2139 </div>
2140 </div>
2141 <div class="padding"></div>
2142
2143 <div class="entry">
2144 <div class="title">
2145 <a href="http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html">Some thoughts on BitCoins</a>
2146 </div>
2147 <div class="date">
2148 11th December 2010
2149 </div>
2150 <div class="body">
2151 <p>As I continue to explore
2152 <a href="http://www.bitcoin.org/">BitCoin</a>, I've starting to wonder
2153 what properties the system have, and how it will be affected by laws
2154 and regulations here in Norway. Here are some random notes.</p>
2155
2156 <p>One interesting thing to note is that since the transactions are
2157 verified using a peer to peer network, all details about a transaction
2158 is known to everyone. This means that if a BitCoin address has been
2159 published like I did with mine in my initial post about BitCoin, it is
2160 possible for everyone to see how many BitCoins have been transfered to
2161 that address. There is even a web service to look at the details for
2162 all transactions. There I can see that my address
2163 <a href="http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a>
2164 have received 16.06 Bitcoin, the
2165 <a href="http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3">1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3</a>
2166 address of Simon Phipps have received 181.97 BitCoin and the address
2167 <a href="http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt">1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt</A>
2168 of EFF have received 2447.38 BitCoins so far. Thank you to each and
2169 every one of you that donated bitcoins to support my activity. The
2170 fact that anyone can see how much money was transfered to a given
2171 address make it more obvious why the BitCoin community recommend to
2172 generate and hand out a new address for each transaction. I'm told
2173 there is no way to track which addresses belong to a given person or
2174 organisation without the person or organisation revealing it
2175 themselves, as Simon, EFF and I have done.</p>
2176
2177 <p>In Norway, and in most other countries, there are laws and
2178 regulations limiting how much money one can transfer across the border
2179 without declaring it. There are money laundering, tax and accounting
2180 laws and regulations I would expect to apply to the use of BitCoin.
2181 If the Skolelinux foundation
2182 (<a href="http://linuxiskolen.no/slxdebianlabs/donations.html">SLX
2183 Debian Labs</a>) were to accept donations in BitCoin in addition to
2184 normal bank transfers like EFF is doing, how should this be accounted?
2185 Given that it is impossible to know if money can cross the border or
2186 not, should everything or nothing be declared? What exchange rate
2187 should be used when calculating taxes? Would receivers have to pay
2188 income tax if the foundation were to pay Skolelinux contributors in
2189 BitCoin? I have no idea, but it would be interesting to know.</p>
2190
2191 <p>For a currency to be useful and successful, it must be trusted and
2192 accepted by a lot of users. It must be possible to get easy access to
2193 the currency (as a wage or using currency exchanges), and it must be
2194 easy to spend it. At the moment BitCoin seem fairly easy to get
2195 access to, but there are very few places to spend it. I am not really
2196 a regular user of any of the vendor types currently accepting BitCoin,
2197 so I wonder when my kind of shop would start accepting BitCoins. I
2198 would like to buy electronics, travels and subway tickets, not herbs
2199 and books. :) The currency is young, and this will improve over time
2200 if it become popular, but I suspect regular banks will start to lobby
2201 to get BitCoin declared illegal if it become popular. I'm sure they
2202 will claim it is helping fund terrorism and money laundering (which
2203 probably would be true, as is any currency in existence), but I
2204 believe the problems should be solved elsewhere and not by blaming
2205 currencies.</p>
2206
2207 <p>The process of creating new BitCoins is called mining, and it is
2208 CPU intensive process that depend on a bit of luck as well (as one is
2209 competing against all the other miners currently spending CPU cycles
2210 to see which one get the next lump of cash). The "winner" get 50
2211 BitCoin when this happen. Yesterday I came across the obvious way to
2212 join forces to increase ones changes of getting at least some coins,
2213 by coordinating the work on mining BitCoins across several machines
2214 and people, and sharing the result if one is lucky and get the 50
2215 BitCoins. Check out
2216 <a href="http://www.bluishcoder.co.nz/bitcoin-pool/">BitCoin Pool</a>
2217 if this sounds interesting. I have not had time to try to set up a
2218 machine to participate there yet, but have seen that running on ones
2219 own for a few days have not yield any BitCoins througth mining
2220 yet.</p>
2221
2222 <p>Update 2010-12-15: Found an <a
2223 href="http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi">interesting
2224 criticism</a> of bitcoin. Not quite sure how valid it is, but thought
2225 it was interesting to read. The arguments presented seem to be
2226 equally valid for gold, which was used as a currency for many years.</p>
2227
2228 </div>
2229 <div class="tags">
2230
2231
2232 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</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>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
2233
2234
2235 </div>
2236 </div>
2237 <div class="padding"></div>
2238
2239 <div class="entry">
2240 <div class="title">
2241 <a href="http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">Now accepting bitcoins - anonymous and distributed p2p crypto-money</a>
2242 </div>
2243 <div class="date">
2244 10th December 2010
2245 </div>
2246 <div class="body">
2247 <p>With this weeks lawless
2248 <a href="http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html">governmental
2249 attacks</a> on Wikileak and
2250 <a href="http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech">free
2251 speech</a>, it has become obvious that PayPal, visa and mastercard can
2252 not be trusted to handle money transactions.
2253 A blog post from
2254 <a href="http://webmink.com/2010/12/06/now-accepting-bitcoin/">Simon
2255 Phipps on bitcoin</a> reminded me about a project that a friend of
2256 mine mentioned earlier. I decided to follow Simon's example, and get
2257 involved with <a href="http://www.bitcoin.org/">BitCoin</a>. I got
2258 some help from my friend to get it all running, and he even handed me
2259 some bitcoins to get started. I even donated a few bitcoins to Simon
2260 for helping me remember BitCoin.</p>
2261
2262 <p>So, what is bitcoins, you probably wonder? It is a digital
2263 crypto-currency, decentralised and handled using peer-to-peer
2264 networks. It allows anonymous transactions and prohibits central
2265 control over the transactions, making it impossible for governments
2266 and companies alike to block donations and other transactions. The
2267 source is free software, and while the key dependency wxWidgets 2.9
2268 for the graphical user interface is missing in Debian, the command
2269 line client builds just fine. Hopefully Jonas
2270 <a href="http://bugs.debian.org/578157">will get the package into
2271 Debian</a> soon.</p>
2272
2273 <p>Bitcoins can be converted to other currencies, like USD and EUR.
2274 There are <a href="http://www.bitcoin.org/trade">companies accepting
2275 bitcoins</a> when selling services and goods, and there are even
2276 currency "stock" markets where the exchange rate is decided. There
2277 are not many users so far, but the concept seems promising. If you
2278 want to get started and lack a friend with any bitcoins to spare,
2279 you can even get
2280 <a href="https://freebitcoins.appspot.com/">some for free</a> (0.05
2281 bitcoin at the time of writing). Use
2282 <a href="http://www.bitcoinwatch.com/">BitcoinWatch</a> to keep an eye
2283 on the current exchange rates.</p>
2284
2285 <p>As an experiment, I have decided to set up bitcoind on one of my
2286 machines. If you want to support my activity, please send Bitcoin
2287 donations to the address
2288 <b>15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</b>. Thank you!</p>
2289
2290 </div>
2291 <div class="tags">
2292
2293
2294 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</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>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
2295
2296
2297 </div>
2298 </div>
2299 <div class="padding"></div>
2300
2301 <div class="entry">
2302 <div class="title">
2303 <a href="http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html">Why isn't Debian Edu using VLC?</a>
2304 </div>
2305 <div class="date">
2306 27th November 2010
2307 </div>
2308 <div class="body">
2309 <p>In the latest issue of Linux Journal, the readers choices were
2310 presented, and the winner among the multimedia player were VLC.
2311 Personally, I like VLC, and it is my player of choice when I first try
2312 to play a video file or stream. Only if VLC fail will I drag out
2313 gmplayer to see if it can do better. The reason is mostly the failure
2314 model and trust. When VLC fail, it normally pop up a error message
2315 reporting the problem. When mplayer fail, it normally segfault or
2316 just hangs. The latter failure mode drain my trust in the program.<p>
2317
2318 <p>But even if VLC is my player of choice, we have choosen to use
2319 mplayer in <a href="http://www.skolelinux.org/">Debian
2320 Edu/Skolelinux</a>. The reason is simple. We need a good browser
2321 plugin to play web videos seamlessly, and the VLC browser plugin is
2322 not very good. For example, it lack in-line control buttons, so there
2323 is no way for the user to pause the video. Also, when I
2324 <a href="http://wiki.debian.org/DebianEdu/BrowserMultimedia">last
2325 tested the browser plugins</a> available in Debian, the VLC plugin
2326 failed on several video pages where mplayer based plugins worked. If
2327 the browser plugin for VLC was as good as the gecko-mediaplayer
2328 package (which uses mplayer), we would switch.</P>
2329
2330 <p>While VLC is a good player, its user interface is slightly
2331 annoying. The most annoying feature is its inconsistent use of
2332 keyboard shortcuts. When the player is in full screen mode, its
2333 shortcuts are different from when it is playing the video in a window.
2334 For example, space only work as pause when in full screen mode. I
2335 wish it had consisten shortcuts and that space also would work when in
2336 window mode. Another nice shortcut in gmplayer is [enter] to restart
2337 the current video. It is very nice when playing short videos from the
2338 web and want to restart it when new people arrive to have a look at
2339 what is going on.</p>
2340
2341 </div>
2342 <div class="tags">
2343
2344
2345 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
2346
2347
2348 </div>
2349 </div>
2350 <div class="padding"></div>
2351
2352 <div class="entry">
2353 <div class="title">
2354 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html">Lenny->Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove</a>
2355 </div>
2356 <div class="date">
2357 22nd November 2010
2358 </div>
2359 <div class="body">
2360 <p>Michael Biebl suggested to me on IRC, that I changed my automated
2361 upgrade testing of the
2362 <a href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
2363 Gnome and KDE Desktop</a> to do <tt>apt-get autoremove</tt> when using apt-get.
2364 This seem like a very good idea, so I adjusted by test scripts and
2365 can now present the updated result from today:</p>
2366
2367 <p>This is for Gnome:</p>
2368
2369 <p>Installed using apt-get, missing with aptitude</p>
2370
2371 <blockquote><p>
2372 apache2.2-bin
2373 aptdaemon
2374 baobab
2375 binfmt-support
2376 browser-plugin-gnash
2377 cheese-common
2378 cli-common
2379 cups-pk-helper
2380 dmz-cursor-theme
2381 empathy
2382 empathy-common
2383 freedesktop-sound-theme
2384 freeglut3
2385 gconf-defaults-service
2386 gdm-themes
2387 gedit-plugins
2388 geoclue
2389 geoclue-hostip
2390 geoclue-localnet
2391 geoclue-manual
2392 geoclue-yahoo
2393 gnash
2394 gnash-common
2395 gnome
2396 gnome-backgrounds
2397 gnome-cards-data
2398 gnome-codec-install
2399 gnome-core
2400 gnome-desktop-environment
2401 gnome-disk-utility
2402 gnome-screenshot
2403 gnome-search-tool
2404 gnome-session-canberra
2405 gnome-system-log
2406 gnome-themes-extras
2407 gnome-themes-more
2408 gnome-user-share
2409 gstreamer0.10-fluendo-mp3
2410 gstreamer0.10-tools
2411 gtk2-engines
2412 gtk2-engines-pixbuf
2413 gtk2-engines-smooth
2414 hamster-applet
2415 libapache2-mod-dnssd
2416 libapr1
2417 libaprutil1
2418 libaprutil1-dbd-sqlite3
2419 libaprutil1-ldap
2420 libart2.0-cil
2421 libboost-date-time1.42.0
2422 libboost-python1.42.0
2423 libboost-thread1.42.0
2424 libchamplain-0.4-0
2425 libchamplain-gtk-0.4-0
2426 libcheese-gtk18
2427 libclutter-gtk-0.10-0
2428 libcryptui0
2429 libdiscid0
2430 libelf1
2431 libepc-1.0-2
2432 libepc-common
2433 libepc-ui-1.0-2
2434 libfreerdp-plugins-standard
2435 libfreerdp0
2436 libgconf2.0-cil
2437 libgdata-common
2438 libgdata7
2439 libgdu-gtk0
2440 libgee2
2441 libgeoclue0
2442 libgexiv2-0
2443 libgif4
2444 libglade2.0-cil
2445 libglib2.0-cil
2446 libgmime2.4-cil
2447 libgnome-vfs2.0-cil
2448 libgnome2.24-cil
2449 libgnomepanel2.24-cil
2450 libgpod-common
2451 libgpod4
2452 libgtk2.0-cil
2453 libgtkglext1
2454 libgtksourceview2.0-common
2455 libmono-addins-gui0.2-cil
2456 libmono-addins0.2-cil
2457 libmono-cairo2.0-cil
2458 libmono-corlib2.0-cil
2459 libmono-i18n-west2.0-cil
2460 libmono-posix2.0-cil
2461 libmono-security2.0-cil
2462 libmono-sharpzip2.84-cil
2463 libmono-system2.0-cil
2464 libmtp8
2465 libmusicbrainz3-6
2466 libndesk-dbus-glib1.0-cil
2467 libndesk-dbus1.0-cil
2468 libopal3.6.8
2469 libpolkit-gtk-1-0
2470 libpt2.6.7
2471 libpython2.6
2472 librpm1
2473 librpmio1
2474 libsdl1.2debian
2475 libsrtp0
2476 libssh-4
2477 libtelepathy-farsight0
2478 libtelepathy-glib0
2479 libtidy-0.99-0
2480 media-player-info
2481 mesa-utils
2482 mono-2.0-gac
2483 mono-gac
2484 mono-runtime
2485 nautilus-sendto
2486 nautilus-sendto-empathy
2487 p7zip-full
2488 pkg-config
2489 python-aptdaemon
2490 python-aptdaemon-gtk
2491 python-axiom
2492 python-beautifulsoup
2493 python-bugbuddy
2494 python-clientform
2495 python-coherence
2496 python-configobj
2497 python-crypto
2498 python-cupshelpers
2499 python-elementtree
2500 python-epsilon
2501 python-evolution
2502 python-feedparser
2503 python-gdata
2504 python-gdbm
2505 python-gst0.10
2506 python-gtkglext1
2507 python-gtksourceview2
2508 python-httplib2
2509 python-louie
2510 python-mako
2511 python-markupsafe
2512 python-mechanize
2513 python-nevow
2514 python-notify
2515 python-opengl
2516 python-openssl
2517 python-pam
2518 python-pkg-resources
2519 python-pyasn1
2520 python-pysqlite2
2521 python-rdflib
2522 python-serial
2523 python-tagpy
2524 python-twisted-bin
2525 python-twisted-conch
2526 python-twisted-core
2527 python-twisted-web
2528 python-utidylib
2529 python-webkit
2530 python-xdg
2531 python-zope.interface
2532 remmina
2533 remmina-plugin-data
2534 remmina-plugin-rdp
2535 remmina-plugin-vnc
2536 rhythmbox-plugin-cdrecorder
2537 rhythmbox-plugins
2538 rpm-common
2539 rpm2cpio
2540 seahorse-plugins
2541 shotwell
2542 software-center
2543 system-config-printer-udev
2544 telepathy-gabble
2545 telepathy-mission-control-5
2546 telepathy-salut
2547 tomboy
2548 totem
2549 totem-coherence
2550 totem-mozilla
2551 totem-plugins
2552 transmission-common
2553 xdg-user-dirs
2554 xdg-user-dirs-gtk
2555 xserver-xephyr
2556 </p></blockquote>
2557
2558 <p>Installed using apt-get, removed with aptitude</p>
2559
2560 <blockquote><p>
2561 cheese
2562 ekiga
2563 eog
2564 epiphany-extensions
2565 evolution-exchange
2566 fast-user-switch-applet
2567 file-roller
2568 gcalctool
2569 gconf-editor
2570 gdm
2571 gedit
2572 gedit-common
2573 gnome-games
2574 gnome-games-data
2575 gnome-nettool
2576 gnome-system-tools
2577 gnome-themes
2578 gnuchess
2579 gucharmap
2580 guile-1.8-libs
2581 libavahi-ui0
2582 libdmx1
2583 libgalago3
2584 libgtk-vnc-1.0-0
2585 libgtksourceview2.0-0
2586 liblircclient0
2587 libsdl1.2debian-alsa
2588 libspeexdsp1
2589 libsvga1
2590 rhythmbox
2591 seahorse
2592 sound-juicer
2593 system-config-printer
2594 totem-common
2595 transmission-gtk
2596 vinagre
2597 vino
2598 </p></blockquote>
2599
2600 <p>Installed using aptitude, missing with apt-get</p>
2601
2602 <blockquote><p>
2603 gstreamer0.10-gnomevfs
2604 </p></blockquote>
2605
2606 <p>Installed using aptitude, removed with apt-get</p>
2607
2608 <blockquote><p>
2609 [nothing]
2610 </p></blockquote>
2611
2612 <p>This is for KDE:</p>
2613
2614 <p>Installed using apt-get, missing with aptitude</p>
2615
2616 <blockquote><p>
2617 ksmserver
2618 </p></blockquote>
2619
2620 <p>Installed using apt-get, removed with aptitude</p>
2621
2622 <blockquote><p>
2623 kwin
2624 network-manager-kde
2625 </p></blockquote>
2626
2627 <p>Installed using aptitude, missing with apt-get</p>
2628
2629 <blockquote><p>
2630 arts
2631 dolphin
2632 freespacenotifier
2633 google-gadgets-gst
2634 google-gadgets-xul
2635 kappfinder
2636 kcalc
2637 kcharselect
2638 kde-core
2639 kde-plasma-desktop
2640 kde-standard
2641 kde-window-manager
2642 kdeartwork
2643 kdeartwork-emoticons
2644 kdeartwork-style
2645 kdeartwork-theme-icon
2646 kdebase
2647 kdebase-apps
2648 kdebase-workspace
2649 kdebase-workspace-bin
2650 kdebase-workspace-data
2651 kdeeject
2652 kdelibs
2653 kdeplasma-addons
2654 kdeutils
2655 kdewallpapers
2656 kdf
2657 kfloppy
2658 kgpg
2659 khelpcenter4
2660 kinfocenter
2661 konq-plugins-l10n
2662 konqueror-nsplugins
2663 kscreensaver
2664 kscreensaver-xsavers
2665 ktimer
2666 kwrite
2667 libgle3
2668 libkde4-ruby1.8
2669 libkonq5
2670 libkonq5-templates
2671 libnetpbm10
2672 libplasma-ruby
2673 libplasma-ruby1.8
2674 libqt4-ruby1.8
2675 marble-data
2676 marble-plugins
2677 netpbm
2678 nuvola-icon-theme
2679 plasma-dataengines-workspace
2680 plasma-desktop
2681 plasma-desktopthemes-artwork
2682 plasma-runners-addons
2683 plasma-scriptengine-googlegadgets
2684 plasma-scriptengine-python
2685 plasma-scriptengine-qedje
2686 plasma-scriptengine-ruby
2687 plasma-scriptengine-webkit
2688 plasma-scriptengines
2689 plasma-wallpapers-addons
2690 plasma-widget-folderview
2691 plasma-widget-networkmanagement
2692 ruby
2693 sweeper
2694 update-notifier-kde
2695 xscreensaver-data-extra
2696 xscreensaver-gl
2697 xscreensaver-gl-extra
2698 xscreensaver-screensaver-bsod
2699 </p></blockquote>
2700
2701 <p>Installed using aptitude, removed with apt-get</p>
2702
2703 <blockquote><p>
2704 ark
2705 google-gadgets-common
2706 google-gadgets-qt
2707 htdig
2708 kate
2709 kdebase-bin
2710 kdebase-data
2711 kdepasswd
2712 kfind
2713 klipper
2714 konq-plugins
2715 konqueror
2716 ksysguard
2717 ksysguardd
2718 libarchive1
2719 libcln6
2720 libeet1
2721 libeina-svn-06
2722 libggadget-1.0-0b
2723 libggadget-qt-1.0-0b
2724 libgps19
2725 libkdecorations4
2726 libkephal4
2727 libkonq4
2728 libkonqsidebarplugin4a
2729 libkscreensaver5
2730 libksgrd4
2731 libksignalplotter4
2732 libkunitconversion4
2733 libkwineffects1a
2734 libmarblewidget4
2735 libntrack-qt4-1
2736 libntrack0
2737 libplasma-geolocation-interface4
2738 libplasmaclock4a
2739 libplasmagenericshell4
2740 libprocesscore4a
2741 libprocessui4a
2742 libqalculate5
2743 libqedje0a
2744 libqtruby4shared2
2745 libqzion0a
2746 libruby1.8
2747 libscim8c2a
2748 libsmokekdecore4-3
2749 libsmokekdeui4-3
2750 libsmokekfile3
2751 libsmokekhtml3
2752 libsmokekio3
2753 libsmokeknewstuff2-3
2754 libsmokeknewstuff3-3
2755 libsmokekparts3
2756 libsmokektexteditor3
2757 libsmokekutils3
2758 libsmokenepomuk3
2759 libsmokephonon3
2760 libsmokeplasma3
2761 libsmokeqtcore4-3
2762 libsmokeqtdbus4-3
2763 libsmokeqtgui4-3
2764 libsmokeqtnetwork4-3
2765 libsmokeqtopengl4-3
2766 libsmokeqtscript4-3
2767 libsmokeqtsql4-3
2768 libsmokeqtsvg4-3
2769 libsmokeqttest4-3
2770 libsmokeqtuitools4-3
2771 libsmokeqtwebkit4-3
2772 libsmokeqtxml4-3
2773 libsmokesolid3
2774 libsmokesoprano3
2775 libtaskmanager4a
2776 libtidy-0.99-0
2777 libweather-ion4a
2778 libxklavier16
2779 libxxf86misc1
2780 okteta
2781 oxygencursors
2782 plasma-dataengines-addons
2783 plasma-scriptengine-superkaramba
2784 plasma-widget-lancelot
2785 plasma-widgets-addons
2786 plasma-widgets-workspace
2787 polkit-kde-1
2788 ruby1.8
2789 systemsettings
2790 update-notifier-common
2791 </p></blockquote>
2792
2793 <p>Running apt-get autoremove made the results using apt-get and
2794 aptitude a bit more similar, but there are still quite a lott of
2795 differences. I have no idea what packages should be installed after
2796 the upgrade, but hope those that do can have a look.</p>
2797
2798 </div>
2799 <div class="tags">
2800
2801
2802 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
2803
2804
2805 </div>
2806 </div>
2807 <div class="padding"></div>
2808
2809 <div class="entry">
2810 <div class="title">
2811 <a href="http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html">Migrating Xen virtual machines using LVM to KVM using disk images</a>
2812 </div>
2813 <div class="date">
2814 22nd November 2010
2815 </div>
2816 <div class="body">
2817 <p>Most of the computers in use by the
2818 <a href="http://www.skolelinux.org/">Debian Edu/Skolelinux project</a>
2819 are virtual machines. And they have been Xen machines running on a
2820 fairly old IBM eserver xseries 345 machine, and we wanted to migrate
2821 them to KVM on a newer Dell PowerEdge 2950 host machine. This was a
2822 bit harder that it could have been, because we set up the Xen virtual
2823 machines to get the virtual partitions from LVM, which as far as I
2824 know is not supported by KVM. So to migrate, we had to convert
2825 several LVM logical volumes to partitions on a virtual disk file.</p>
2826
2827 <p>I found
2828 <a href="http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM">a
2829 nice recipe</a> to do this, and wrote the following script to do the
2830 migration. It uses qemu-img from the qemu package to make the disk
2831 image, parted to partition it, losetup and kpartx to present the disk
2832 image partions as devices, and dd to copy the data. I NFS mounted the
2833 new servers storage area on the old server to do the migration.</p>
2834
2835 <pre>
2836 #!/bin/sh
2837
2838 # Based on
2839 # http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
2840
2841 set -e
2842 set -x
2843
2844 if [ -z "$1" ] ; then
2845 echo "Usage: $0 &lt;hostname&gt;"
2846 exit 1
2847 else
2848 host="$1"
2849 fi
2850
2851 if [ ! -e /dev/vg_data/$host-disk ] ; then
2852 echo "error: unable to find LVM volume for $host"
2853 exit 1
2854 fi
2855
2856 # Partitions need to be a bit bigger than the LVM LVs. not sure why.
2857 disksize=$( lvs --units m | grep $host-disk | awk '{sum = sum + $4} END { print int(sum * 1.05) }')
2858 swapsize=$( lvs --units m | grep $host-swap | awk '{sum = sum + $4} END { print int(sum * 1.05) }')
2859 totalsize=$(( ( $disksize + $swapsize ) ))
2860
2861 img=$host.img
2862 #dd if=/dev/zero of=$img bs=1M count=$(( $disksize + $swapsize ))
2863 qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
2864
2865 parted $img mklabel msdos
2866 parted $img mkpart primary linux-swap 0 $disksize
2867 parted $img mkpart primary ext2 $disksize $totalsize
2868 parted $img set 1 boot on
2869
2870 modprobe dm-mod
2871 losetup /dev/loop0 $img
2872 kpartx -a /dev/loop0
2873
2874 dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=1M
2875 fsck.ext3 -f /dev/mapper/loop0p1 || true
2876 mkswap /dev/mapper/loop0p2
2877
2878 kpartx -d /dev/loop0
2879 losetup -d /dev/loop0
2880 </pre>
2881
2882 <p>The script is perhaps so simple that it is not copyrightable, but
2883 if it is, it is licenced using GPL v2 or later at your discretion.</p>
2884
2885 <p>After doing this, I booted a Debian CD in rescue mode in KVM with
2886 the new disk image attached, installed grub-pc and linux-image-686 and
2887 set up grub to boot from the disk image. After this, the KVM machines
2888 seem to work just fine.</p>
2889
2890 </div>
2891 <div class="tags">
2892
2893
2894 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
2895
2896
2897 </div>
2898 </div>
2899 <div class="padding"></div>
2900
2901 <div class="entry">
2902 <div class="title">
2903 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html">Lenny->Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop</a>
2904 </div>
2905 <div class="date">
2906 20th November 2010
2907 </div>
2908 <div class="body">
2909 <p>I'm still running upgrade testing of the
2910 <a href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
2911 Gnome and KDE Desktop</a>, but have not had time to spend on reporting the
2912 status. Here is a short update based on a test I ran 20101118.</p>
2913
2914 <p>I still do not know what a correct migration should look like, so I
2915 report any differences between apt and aptitude and hope someone else
2916 can see if anything should be changed.</p>
2917
2918 <p>This is for Gnome:</p>
2919
2920 <p>Installed using apt-get, missing with aptitude</p>
2921
2922 <blockquote><p>
2923 apache2.2-bin aptdaemon at-spi baobab binfmt-support
2924 browser-plugin-gnash cheese-common cli-common cpp-4.3 cups-pk-helper
2925 dmz-cursor-theme empathy empathy-common finger
2926 freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
2927 gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
2928 geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
2929 gnome-cards-data gnome-codec-install gnome-core
2930 gnome-desktop-environment gnome-disk-utility gnome-screenshot
2931 gnome-search-tool gnome-session-canberra gnome-spell
2932 gnome-system-log gnome-themes-extras gnome-themes-more
2933 gnome-user-share gs-common gstreamer0.10-fluendo-mp3
2934 gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
2935 gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
2936 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
2937 libart2.0-cil libatspi1.0-0 libboost-date-time1.42.0
2938 libboost-python1.42.0 libboost-thread1.42.0 libchamplain-0.4-0
2939 libchamplain-gtk-0.4-0 libcheese-gtk18 libclutter-gtk-0.10-0
2940 libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-1.0-2
2941 libepc-common libepc-ui-1.0-2 libfreerdp-plugins-standard
2942 libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
2943 libgdl-1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-0 libgif4
2944 libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
2945 libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
2946 libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
2947 libgtk2.0-cil libgtkglext1 libgtksourceview-common
2948 libgtksourceview2.0-common libmono-addins-gui0.2-cil
2949 libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
2950 libmono-i18n-west2.0-cil libmono-posix2.0-cil
2951 libmono-security2.0-cil libmono-sharpzip2.84-cil
2952 libmono-system2.0-cil libmtp8 libmusicbrainz3-6
2953 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6.8
2954 libpolkit-gtk-1-0 libpt-1.10.10-plugins-alsa
2955 libpt-1.10.10-plugins-v4l libpt2.6.7 libpython2.6 librpm1 librpmio1
2956 libsdl1.2debian libservlet2.4-java libsrtp0 libssh-4
2957 libtelepathy-farsight0 libtelepathy-glib0 libtidy-0.99-0
2958 libxalan2-java libxerces2-java media-player-info mesa-utils
2959 mono-2.0-gac mono-gac mono-runtime nautilus-sendto
2960 nautilus-sendto-empathy openoffice.org-writer2latex
2961 openssl-blacklist p7zip p7zip-full pkg-config python-4suite-xml
2962 python-aptdaemon python-aptdaemon-gtk python-axiom
2963 python-beautifulsoup python-bugbuddy python-clientform
2964 python-coherence python-configobj python-crypto python-cupshelpers
2965 python-cupsutils python-eggtrayicon python-elementtree
2966 python-epsilon python-evolution python-feedparser python-gdata
2967 python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
2968 python-gtksourceview2 python-httplib2 python-louie python-mako
2969 python-markupsafe python-mechanize python-nevow python-notify
2970 python-opengl python-openssl python-pam python-pkg-resources
2971 python-pyasn1 python-pysqlite2 python-rdflib python-serial
2972 python-tagpy python-twisted-bin python-twisted-conch
2973 python-twisted-core python-twisted-web python-utidylib python-webkit
2974 python-xdg python-zope.interface remmina remmina-plugin-data
2975 remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
2976 rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
2977 software-center svgalibg1 system-config-printer-udev
2978 telepathy-gabble telepathy-mission-control-5 telepathy-salut tomboy
2979 totem totem-coherence totem-mozilla totem-plugins
2980 transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
2981 zip
2982 </p></blockquote>
2983
2984 Installed using apt-get, removed with aptitude
2985
2986 <blockquote><p>
2987 arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
2988 epiphany-extensions epiphany-gecko evolution-exchange
2989 fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
2990 gedit-common gnome-app-install gnome-games gnome-games-data
2991 gnome-nettool gnome-system-tools gnome-themes gnome-utils
2992 gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
2993 guile-1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
2994 libavahi-ui0 libbind9-50 libbluetooth2 libcamel1.2-11 libcdio7
2995 libcucul0 libcurl3 libdirectfb-1.0-0 libdmx1 libdvdread3
2996 libedata-cal1.2-6 libedataserver1.2-9 libeel2-2.20 libepc-1.0-1
2997 libepc-ui-1.0-1 libexchange-storage1.2-3 libfaad0 libgadu3
2998 libgalago3 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
2999 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
3000 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
3001 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtk-vnc-1.0-0
3002 libgtkhtml2-0 libgtksourceview1.0-0 libgtksourceview2.0-0
3003 libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
3004 libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
3005 libmagick++10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
3006 libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
3007 libnm-util0 libopal-2.2 libosp5 libparted1.8-10 libpisock9
3008 libpisync1 libpoppler-glib3 libpoppler3 libpt-1.10.10 libraw1394-8
3009 libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-8
3010 libspeexdsp1 libssh2-1 libsuitesparse-3.1.0 libsvga1
3011 libswfdec-0.6-90 libtalloc1 libtotem-plparser10 libtrackerclient0
3012 libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
3013 libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
3014 sound-juicer swfdec-gnome system-config-printer totem-common
3015 totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
3016 </p></blockquote>
3017
3018 <p>Installed using aptitude, missing with apt-get</p>
3019
3020 <blockquote><p>
3021 gstreamer0.10-gnomevfs
3022 </p></blockquote>
3023
3024 <p>Installed using aptitude, removed with apt-get</p>
3025
3026 <blockquote><p>
3027 [nothing]
3028 </p></blockquote>
3029
3030 <p>This is for KDE:</p>
3031
3032 <p>Installed using apt-get, missing with aptitude</p>
3033
3034 <blockquote><p>
3035 autopoint bomber bovo cantor cantor-backend-kalgebra cpp-4.3 dcoprss
3036 edict espeak espeak-data eyesapplet fifteenapplet finger gettext
3037 ghostscript-x git gnome-audio gnugo granatier gs-common
3038 gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
3039 kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
3040 kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
3041 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
3042 kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
3043 kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
3044 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
3045 kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
3046 kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
3047 killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
3048 kollision kpf krosspython ksirk ksmserver ksquares kstars-data
3049 ksudoku kubrick kweather libasound2-plugins libboost-python1.42.0
3050 libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
3051 libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
3052 libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
3053 libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
3054 libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
3055 libkrossui4 libmailtools-perl libmime-tools-perl
3056 libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
3057 libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
3058 libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
3059 lirc luatex marble networkstatus noatun-plugins
3060 openoffice.org-writer2latex palapeli palapeli-data parley
3061 parley-data poster psutils pulseaudio pulseaudio-esound-compat
3062 pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
3063 speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
3064 ttf-sazanami-gothic
3065 </p></blockquote>
3066
3067 <p>Installed using apt-get, removed with aptitude</p>
3068
3069 <blockquote><p>
3070 amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
3071 dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
3072 kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
3073 kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
3074 keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
3075 kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
3076 kitchensync kiten kjumpingcube klatin klettres klickety klines
3077 klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
3078 kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
3079 kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
3080 kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
3081 ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
3082 ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
3083 kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
3084 kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
3085 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
3086 libavahi-core5 libavc1394-0 libbind9-50 libbluetooth2
3087 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0
3088 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
3089 libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0 libicu38
3090 libiec61883-0 libindex0 libisccc50 libisccfg50 libiw29
3091 libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
3092 libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
3093 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
3094 libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
3095 libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
3096 libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
3097 libpoppler-qt2 libpoppler3 libraw1394-8 librss1 libsensors3
3098 libsmbios2 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90
3099 libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
3100 mpeglib network-manager-kde noatun pmount tex-common texlive-base
3101 texlive-common texlive-doc-base texlive-fonts-recommended tidy
3102 ttf-dustin ttf-kochi-gothic ttf-sjfonts
3103 </p></blockquote>
3104
3105 <p>Installed using aptitude, missing with apt-get</p>
3106
3107 <blockquote><p>
3108 dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
3109 kdeartwork kdebase kdebase-apps kdebase-workspace
3110 kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
3111 kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
3112 netpbm plasma-widget-folderview plasma-widget-networkmanagement
3113 xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
3114 xscreensaver-screensaver-bsod
3115 </p></blockquote>
3116
3117 <p>Installed using aptitude, removed with apt-get</p>
3118
3119 <blockquote><p>
3120 kdebase-bin konq-plugins konqueror
3121 </p></blockquote>
3122
3123 </div>
3124 <div class="tags">
3125
3126
3127 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
3128
3129
3130 </div>
3131 </div>
3132 <div class="padding"></div>
3133
3134 <div class="entry">
3135 <div class="title">
3136 <a href="http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html">Gnash buildbot slave and Debian kfreebsd</a>
3137 </div>
3138 <div class="date">
3139 20th November 2010
3140 </div>
3141 <div class="body">
3142 <p>Answering
3143 <a href="http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html">the
3144 call from the Gnash project</a> for
3145 <a href="http://www.gnashdev.org:8010">buildbot</a> slaves to test the
3146 current source, I have set up a virtual KVM machine on the Debian
3147 Edu/Skolelinux virtualization host to test the git source on
3148 Debian/Squeeze. I hope this can help the developers in getting new
3149 releases out more often.</p>
3150
3151 <p>As the developers want less main-stream build platforms tested to,
3152 I have considered setting up a <a
3153 href="http://www.debian.org/ports/kfreebsd-gnu/">Debian/kfreebsd</a>
3154 machine as well. I have also considered using the kfreebsd
3155 architecture in Debian as a file server in NUUG to get access to the 5
3156 TB zfs volume we currently use to store DV video. Because of this, I
3157 finally got around to do a test installation of Debian/Squeeze with
3158 kfreebsd. Installation went fairly smooth, thought I noticed some
3159 visual glitches in the cdebconf dialogs (black cursor left on the
3160 screen at random locations). Have not gotten very far with the
3161 testing. Noticed cfdisk did not work, but fdisk did so it was not a
3162 fatal problem. Have to spend some more time on it to see if it is
3163 useful as a file server for NUUG. Will try to find time to set up a
3164 gnash buildbot slave on the Debian Edu/Skolelinux this weekend.</p>
3165
3166 </div>
3167 <div class="tags">
3168
3169
3170 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3171
3172
3173 </div>
3174 </div>
3175 <div class="padding"></div>
3176
3177 <div class="entry">
3178 <div class="title">
3179 <a href="http://people.skolelinux.org/pere/blog/Debian_in_3D.html">Debian in 3D</a>
3180 </div>
3181 <div class="date">
3182 9th November 2010
3183 </div>
3184 <div class="body">
3185 <p><img src="http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg"></p>
3186
3187 <p>3D printing is just great. I just came across this Debian logo in
3188 3D linked in from
3189 <a href="http://blog.thingiverse.com/2010/11/09/participatory-branding/">the
3190 thingiverse blog</a>.</p>
3191
3192 </div>
3193 <div class="tags">
3194
3195
3196 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</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>.
3197
3198
3199 </div>
3200 </div>
3201 <div class="padding"></div>
3202
3203 <div class="entry">
3204 <div class="title">
3205 <a href="http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates 2010-10-24</a>
3206 </div>
3207 <div class="date">
3208 24th October 2010
3209 </div>
3210 <div class="body">
3211 <p>Some updates.</p>
3212
3213 <p>My <a href="http://pledgebank.com/gnash-avm2">gnash pledge</a> to
3214 raise money for the project is going well. The lower limit of 10
3215 signers was reached in 24 hours, and so far 13 people have signed it.
3216 More signers and more funding is most welcome, and I am really curious
3217 how far we can get before the time limit of December 24 is reached.
3218 :)</p>
3219
3220 <p>On the #gnash IRC channel on irc.freenode.net, I was just tipped
3221 about what appear to be a great code coverage tool capable of
3222 generating code coverage stats without any changes to the source code.
3223 It is called
3224 <a href="http://simonkagstrom.github.com/kcov/index.html">kcov</a>,
3225 and can be used using <tt>kcov &lt;directory&gt; &lt;binary&gt;</tt>.
3226 It is missing in Debian, but the git source built just fine in Squeeze
3227 after I installed libelf-dev, libdwarf-dev, pkg-config and
3228 libglib2.0-dev. Failed to build in Lenny, but suspect that is
3229 solvable. I hope kcov make it into Debian soon.</p>
3230
3231 <p>Finally found time to wrap up the release notes for <a
3232 href="http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html">a
3233 new alpha release of Debian Edu</a>, and just published the second
3234 alpha test release of the Squeeze based Debian Edu /
3235 <a href="http://www.skolelinux.org/">Skolelinux</a>
3236 release. Give it a try if you need a complete linux solution for your
3237 school, including central infrastructure server, workstations, thin
3238 client servers and diskless workstations. A nice touch added
3239 yesterday is RDP support on the thin client servers, for windows
3240 clients to get a Linux desktop on request.</p>
3241
3242 </div>
3243 <div class="tags">
3244
3245
3246 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
3247
3248
3249 </div>
3250 </div>
3251 <div class="padding"></div>
3252
3253 <div class="entry">
3254 <div class="title">
3255 <a href="http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html">Some notes on Flash in Debian and Debian Edu</a>
3256 </div>
3257 <div class="date">
3258 4th September 2010
3259 </div>
3260 <div class="body">
3261 <p>In the <a href="http://popcon.debian.org/unknown/by_vote">Debian
3262 popularity-contest numbers</a>, the adobe-flashplugin package the
3263 second most popular used package that is missing in Debian. The sixth
3264 most popular is flashplayer-mozilla. This is a clear indication that
3265 working flash is important for Debian users. Around 10 percent of the
3266 users submitting data to popcon.debian.org have this package
3267 installed.</p>
3268
3269 <p>In the report written by Lars Risan in August 2008
3270 («<a href="http://wiki.skolelinux.no/Dokumentasjon/Rapporter?action=AttachFile&do=view&target=Skolelinux_i_bruk_rapport_1.0.pdf">Skolelinux
3271 i bruk – Rapport for Hurum kommune, Universitetet i Agder og
3272 stiftelsen SLX Debian Labs</a>»), one of the most important problems
3273 schools experienced with <a href="http://www.skolelinux.org/">Debian
3274 Edu/Skolelinux</a> was the lack of working Flash. A lot of educational
3275 web sites require Flash to work, and lacking working Flash support in
3276 the web browser and the problems with installing it was perceived as a
3277 good reason to stay with Windows.</p>
3278
3279 <p>I once saw a funny and sad comment in a web forum, where Linux was
3280 said to be the retarded cousin that did not really understand
3281 everything you told him but could work fairly well. This was a
3282 comment regarding the problems Linux have with proprietary formats and
3283 non-standard web pages, and is sad because it exposes a fairly common
3284 understanding of whose fault it is if web pages that only work in for
3285 example Internet Explorer 6 fail to work on Firefox, and funny because
3286 it explain very well how annoying it is for users when Linux
3287 distributions do not work with the documents they receive or the web
3288 pages they want to visit.</p>
3289
3290 <p>This is part of the reason why I believe it is important for Debian
3291 and Debian Edu to have a well working Flash implementation in the
3292 distribution, to get at least popular sites as Youtube and Google
3293 Video to working out of the box. For Squeeze, Debian have the chance
3294 to include the latest version of Gnash that will make this happen, as
3295 the new release 0.8.8 was published a few weeks ago and is resting in
3296 unstable. The new version work with more sites that version 0.8.7.
3297 The Gnash maintainers have asked for a freeze exception, but the
3298 release team have not had time to reply to it yet. I hope they agree
3299 with me that Flash is important for the Debian desktop users, and thus
3300 accept the new package into Squeeze.</p>
3301
3302 </div>
3303 <div class="tags">
3304
3305
3306 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
3307
3308
3309 </div>
3310 </div>
3311 <div class="padding"></div>
3312
3313 <div class="entry">
3314 <div class="title">
3315 <a href="http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html">Circular package dependencies harms apt recovery</a>
3316 </div>
3317 <div class="date">
3318 27th July 2010
3319 </div>
3320 <div class="body">
3321 <p>I discovered this while doing
3322 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">automated
3323 testing of upgrades from Debian Lenny to Squeeze</a>. A few packages
3324 in Debian still got circular dependencies, and it is often claimed
3325 that apt and aptitude should be able to handle this just fine, but
3326 some times these dependency loops causes apt to fail.</p>
3327
3328 <p>An example is from todays
3329 <a href="http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt">upgrade
3330 of KDE using aptitude</a>. In it, a bug in kdebase-workspace-data
3331 causes perl-modules to fail to upgrade. The cause is simple. If a
3332 package fail to unpack, then only part of packages with the circular
3333 dependency might end up being unpacked when unpacking aborts, and the
3334 ones already unpacked will fail to configure in the recovery phase
3335 because its dependencies are unavailable.</p>
3336
3337 <p>In this log, the problem manifest itself with this error:</p>
3338
3339 <blockquote><pre>
3340 dpkg: dependency problems prevent configuration of perl-modules:
3341 perl-modules depends on perl (>= 5.10.1-1); however:
3342 Version of perl on system is 5.10.0-19lenny2.
3343 dpkg: error processing perl-modules (--configure):
3344 dependency problems - leaving unconfigured
3345 </pre></blockquote>
3346
3347 <p>The perl/perl-modules circular dependency is already
3348 <a href="http://bugs.debian.org/527917">reported as a bug</a>, and will
3349 hopefully be solved as soon as possible, but it is not the only one,
3350 and each one of these loops in the dependency tree can cause similar
3351 failures. Of course, they only occur when there are bugs in other
3352 packages causing the unpacking to fail, but it is rather nasty when
3353 the failure of one package causes the problem to become worse because
3354 of dependency loops.</p>
3355
3356 <p>Thanks to
3357 <a href="http://lists.debian.org/debian-devel/2010/06/msg00116.html">the
3358 tireless effort by Bill Allombert</a>, the number of circular
3359 dependencies
3360 <a href="http://debian.semistable.com/debgraph.out.html">left in Debian
3361 is dropping</a>, and perhaps it will reach zero one day. :)</p>
3362
3363 <p>Todays testing also exposed a bug in
3364 <a href="http://bugs.debian.org/590605">update-notifier</a> and
3365 <a href="http://bugs.debian.org/590604">different behaviour</a> between
3366 apt-get and aptitude, the latter possibly caused by some circular
3367 dependency. Reported both to BTS to try to get someone to look at
3368 it.</p>
3369
3370 </div>
3371 <div class="tags">
3372
3373
3374 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3375
3376
3377 </div>
3378 </div>
3379 <div class="padding"></div>
3380
3381 <div class="entry">
3382 <div class="title">
3383 <a href="http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html">What are they searching for - PowerDNS and ISC DHCP in LDAP</a>
3384 </div>
3385 <div class="date">
3386 17th July 2010
3387 </div>
3388 <div class="body">
3389 <p>This is a
3390 <a href="http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">followup</a>
3391 on my
3392 <a href="http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">previous
3393 work</a> on
3394 <a href="http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">merging
3395 all</a> the computer related LDAP objects in Debian Edu.</p>
3396
3397 <p>As a step to try to see if it possible to merge the DNS and DHCP
3398 LDAP objects, I have had a look at how the packages pdns-backend-ldap
3399 and dhcp3-server-ldap in Debian use the LDAP server. The two
3400 implementations are quite different in how they use LDAP.</p>
3401
3402 To get this information, I started slapd with debugging enabled and
3403 dumped the debug output to a file to get the LDAP searches performed
3404 on a Debian Edu main-server. Here is a summary.
3405
3406 <p><strong>powerdns</strong></p>
3407
3408 <a href="http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend">Clues
3409 on how to</a> set up PowerDNS to use a LDAP backend is available on
3410 the web.
3411
3412 <p>PowerDNS have two modes of operation using LDAP as its backend.
3413 One "strict" mode where the forward and reverse DNS lookups are done
3414 using the same LDAP objects, and a "tree" mode where the forward and
3415 reverse entries are in two different subtrees in LDAP with a structure
3416 based on the DNS names, as in tjener.intern and
3417 2.2.0.10.in-addr.arpa.</p>
3418
3419 <p>In tree mode, the server is set up to use a LDAP subtree as its
3420 base, and uses a "base" scoped search for the DNS name by adding
3421 "dc=tjener,dc=intern," to the base with a filter for
3422 "(associateddomain=tjener.intern)" for the forward entry and
3423 "dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa," with a filter for
3424 "(associateddomain=2.2.0.10.in-addr.arpa)" for the reverse entry. For
3425 forward entries, it is looking for attributes named dnsttl, arecord,
3426 nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
3427 txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
3428 srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
3429 ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
3430 spfrecord and modifytimestamp. For reverse entries it is looking for
3431 the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
3432 ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
3433 locrecord, srvrecord, naptrrecord and modifytimestamp. The equivalent
3434 ldapsearch commands could look like this:</p>
3435
3436 <blockquote><pre>
3437 ldapsearch -h ldap \
3438 -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
3439 -s base -x '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
3440 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
3441 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
3442 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
3443 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
3444
3445 ldapsearch -h ldap \
3446 -b dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
3447 -s base -x '(associateddomain=2.2.0.10.in-addr.arpa)'
3448 dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
3449 hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
3450 srvrecord naptrrecord modifytimestamp
3451 </pre></blockquote>
3452
3453 <p>In Debian Edu/Lenny, the PowerDNS tree mode is used with
3454 ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
3455 example LDAP objects used there. In addition to these objects, the
3456 parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
3457 also exist.</p>
3458
3459 <blockquote><pre>
3460 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
3461 objectclass: top
3462 objectclass: dnsdomain
3463 objectclass: domainrelatedobject
3464 dc: tjener
3465 arecord: 10.0.2.2
3466 associateddomain: tjener.intern
3467
3468 dn: dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
3469 objectclass: top
3470 objectclass: dnsdomain2
3471 objectclass: domainrelatedobject
3472 dc: 2
3473 ptrrecord: tjener.intern
3474 associateddomain: 2.2.0.10.in-addr.arpa
3475 </pre></blockquote>
3476
3477 <p>In strict mode, the server behaves differently. When looking for
3478 forward DNS entries, it is doing a "subtree" scoped search with the
3479 same base as in the tree mode for a object with filter
3480 "(associateddomain=tjener.intern)" and requests the attributes dnsttl,
3481 arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
3482 mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
3483 naptrrecord and modifytimestamp. For reverse entires it also do a
3484 subtree scoped search but this time the filter is "(arecord=10.0.2.2)"
3485 and the requested attributes are associateddomain, dnsttl and
3486 modifytimestamp. In short, in strict mode the objects with ptrrecord
3487 go away, and the arecord attribute in the forward object is used
3488 instead.</p>
3489
3490 <p>The forward and reverse searches can be simulated using ldapsearch
3491 like this:</p>
3492
3493 <blockquote><pre>
3494 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
3495 '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
3496 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
3497 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
3498 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
3499 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
3500
3501 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
3502 '(arecord=10.0.2.2)' associateddomain dnsttl modifytimestamp
3503 </pre></blockquote>
3504
3505 <p>In addition to the forward and reverse searches , there is also a
3506 search for SOA records, which behave similar to the forward and
3507 reverse lookups.</p>
3508
3509 <p>A thing to note with the PowerDNS behaviour is that it do not
3510 specify any objectclass names, and instead look for the attributes it
3511 need to generate a DNS reply. This make it able to work with any
3512 objectclass that provide the needed attributes.</p>
3513
3514 <p>The attributes are normally provided in the cosine (RFC 1274) and
3515 dnsdomain2 schemas. The latter is used for reverse entries like
3516 ptrrecord and recent DNS additions like aaaarecord and srvrecord.</p>
3517
3518 <p>In Debian Edu, we have created DNS objects using the object classes
3519 dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
3520 attributes) and domainrelatedobject (for associatedDomain). The use
3521 of structural object classes make it impossible to combine these
3522 classes with the object classes used by DHCP.</p>
3523
3524 <p>There are other schemas that could be used too, for example the
3525 dnszone structural object class used by Gosa and bind-sdb for the DNS
3526 attributes combined with the domainrelatedobject object class, but in
3527 this case some unused attributes would have to be included as well
3528 (zonename and relativedomainname).</p>
3529
3530 <p>My proposal for Debian Edu would be to switch PowerDNS to strict
3531 mode and not use any of the existing objectclasses (dnsdomain,
3532 dnsdomain2 and dnszone) when one want to combine the DNS information
3533 with DHCP information, and instead create a auxiliary object class
3534 defined something like this (using the attributes defined for
3535 dnsdomain and dnsdomain2 or dnszone):</p>
3536
3537 <blockquote><pre>
3538 objectclass ( some-oid NAME 'dnsDomainAux'
3539 SUP top
3540 AUXILIARY
3541 MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
3542 DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
3543 TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
3544 NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
3545 A6Record $ DNAMERecord
3546 ))
3547 </pre></blockquote>
3548
3549 <p>This will allow any object to become a DNS entry when combined with
3550 the domainrelatedobject object class, and allow any entity to include
3551 all the attributes PowerDNS wants. I've sent an email to the PowerDNS
3552 developers asking for their view on this schema and if they are
3553 interested in providing such schema with PowerDNS, and I hope my
3554 message will be accepted into their mailing list soon.</p>
3555
3556 <p><strong>ISC dhcp</strong></p>
3557
3558 <p>The DHCP server searches for specific objectclass and requests all
3559 the object attributes, and then uses the attributes it want. This
3560 make it harder to figure out exactly what attributes are used, but
3561 thanks to the working example in Debian Edu I can at least get an idea
3562 what is needed without having to read the source code.</p>
3563
3564 <p>In the DHCP server configuration, the LDAP base to use and the
3565 search filter to use to locate the correct dhcpServer entity is
3566 stored. These are the relevant entries from
3567 /etc/dhcp3/dhcpd.conf:</p>
3568
3569 <blockquote><pre>
3570 ldap-base-dn "dc=skole,dc=skolelinux,dc=no";
3571 ldap-dhcp-server-cn "dhcp";
3572 </pre></blockquote>
3573
3574 <p>The DHCP server uses this information to nest all the DHCP
3575 configuration it need. The cn "dhcp" is located using the given LDAP
3576 base and the filter "(&(objectClass=dhcpServer)(cn=dhcp))". The
3577 search result is this entry:</p>
3578
3579 <blockquote><pre>
3580 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
3581 cn: dhcp
3582 objectClass: top
3583 objectClass: dhcpServer
3584 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
3585 </pre></blockquote>
3586
3587 <p>The content of the dhcpServiceDN attribute is next used to locate the
3588 subtree with DHCP configuration. The DHCP configuration subtree base
3589 is located using a base scope search with base "cn=DHCP
3590 Config,dc=skole,dc=skolelinux,dc=no" and filter
3591 "(&(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))".
3592 The search result is this entry:</p>
3593
3594 <blockquote><pre>
3595 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
3596 cn: DHCP Config
3597 objectClass: top
3598 objectClass: dhcpService
3599 objectClass: dhcpOptions
3600 dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
3601 dhcpStatements: ddns-update-style none
3602 dhcpStatements: authoritative
3603 dhcpOption: smtp-server code 69 = array of ip-address
3604 dhcpOption: www-server code 72 = array of ip-address
3605 dhcpOption: wpad-url code 252 = text
3606 </pre></blockquote>
3607
3608 <p>Next, the entire subtree is processed, one level at the time. When
3609 all the DHCP configuration is loaded, it is ready to receive requests.
3610 The subtree in Debian Edu contain objects with object classes
3611 top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
3612 top/dhcpSubnet, top/dhcpGroup and top/dhcpHost. These provide options
3613 and information about netmasks, dynamic range etc. Leaving out the
3614 details here because it is not relevant for the focus of my
3615 investigation, which is to see if it is possible to merge dns and dhcp
3616 related computer objects.</p>
3617
3618 <p>When a DHCP request come in, LDAP is searched for the MAC address
3619 of the client (00:00:00:00:00:00 in this example), using a subtree
3620 scoped search with "cn=DHCP Config,dc=skole,dc=skolelinux,dc=no" as
3621 the base and "(&(objectClass=dhcpHost)(dhcpHWAddress=ethernet
3622 00:00:00:00:00:00))" as the filter. This is what a host object look
3623 like:</p>
3624
3625 <blockquote><pre>
3626 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
3627 cn: hostname
3628 objectClass: top
3629 objectClass: dhcpHost
3630 dhcpHWAddress: ethernet 00:00:00:00:00:00
3631 dhcpStatements: fixed-address hostname
3632 </pre></blockquote>
3633
3634 <p>There is less flexiblity in the way LDAP searches are done here.
3635 The object classes need to have fixed names, and the configuration
3636 need to be stored in a fairly specific LDAP structure. On the
3637 positive side, the invidiual dhcpHost entires can be anywhere without
3638 the DN pointed to by the dhcpServer entries. The latter should make
3639 it possible to group all host entries in a subtree next to the
3640 configuration entries, and this subtree can also be shared with the
3641 DNS server if the schema proposed above is combined with the dhcpHost
3642 structural object class.
3643
3644 <p><strong>Conclusion</strong></p>
3645
3646 <p>The PowerDNS implementation seem to be very flexible when it come
3647 to which LDAP schemas to use. While its "tree" mode is rigid when it
3648 come to the the LDAP structure, the "strict" mode is very flexible,
3649 allowing DNS objects to be stored anywhere under the base cn specified
3650 in the configuration.</p>
3651
3652 <p>The DHCP implementation on the other hand is very inflexible, both
3653 regarding which LDAP schemas to use and which LDAP structure to use.
3654 I guess one could implement ones own schema, as long as the
3655 objectclasses and attributes have the names used, but this do not
3656 really help when the DHCP subtree need to have a fairly fixed
3657 structure.</p>
3658
3659 <p>Based on the observed behaviour, I suspect a LDAP structure like
3660 this might work for Debian Edu:</p>
3661
3662 <blockquote><pre>
3663 ou=services
3664 cn=machine-info (dhcpService) - dhcpServiceDN points here
3665 cn=dhcp (dhcpServer)
3666 cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
3667 cn=10.0.2.0 (dhcpSubnet)
3668 cn=group1 (dhcpGroup/dhcpOptions)
3669 cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
3670 cn=192.168.0.0 (dhcpSubnet)
3671 cn=group1 (dhcpGroup/dhcpOptions)
3672 ou=machines - PowerDNS base points here
3673 cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
3674 </pre></blockquote>
3675
3676 <P>This is not tested yet. If the DHCP server require the dhcpHost
3677 entries to be in the dhcpGroup subtrees, the entries can be stored
3678 there instead of a common machines subtree, and the PowerDNS base
3679 would have to be moved one level up to the machine-info subtree.</p>
3680
3681 <p>The combined object under the machines subtree would look something
3682 like this:</p>
3683
3684 <blockquote><pre>
3685 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
3686 dc: hostname
3687 objectClass: top
3688 objectClass: dhcpHost
3689 objectclass: domainrelatedobject
3690 objectclass: dnsDomainAux
3691 associateddomain: hostname.intern
3692 arecord: 10.11.12.13
3693 dhcpHWAddress: ethernet 00:00:00:00:00:00
3694 dhcpStatements: fixed-address hostname.intern
3695 </pre></blockquote>
3696
3697 </p>One could even add the LTSP configuration associated with a given
3698 machine, as long as the required attributes are available in a
3699 auxiliary object class.</p>
3700
3701 </div>
3702 <div class="tags">
3703
3704
3705 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3706
3707
3708 </div>
3709 </div>
3710 <div class="padding"></div>
3711
3712 <div class="entry">
3713 <div class="title">
3714 <a href="http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">Combining PowerDNS and ISC DHCP LDAP objects</a>
3715 </div>
3716 <div class="date">
3717 14th July 2010
3718 </div>
3719 <div class="body">
3720 <p>For a while now, I have wanted to find a way to change the DNS and
3721 DHCP services in Debian Edu to use the same LDAP objects for a given
3722 computer, to avoid the possibility of having a inconsistent state for
3723 a computer in LDAP (as in DHCP but no DNS entry or the other way
3724 around) and make it easier to add computers to LDAP.</p>
3725
3726 <p>I've looked at how powerdns and dhcpd is using LDAP, and using this
3727 information finally found a solution that seem to work.</p>
3728
3729 <p>The old setup required three LDAP objects for a given computer.
3730 One forward DNS entry, one reverse DNS entry and one DHCP entry. If
3731 we switch powerdns to use its strict LDAP method (ldap-method=strict
3732 in pdns-debian-edu.conf), the forward and reverse DNS entries are
3733 merged into one while making it impossible to transfer the reverse map
3734 to a slave DNS server.</p>
3735
3736 <p>If we also replace the object class used to get the DNS related
3737 attributes to one allowing these attributes to be combined with the
3738 dhcphost object class, we can merge the DNS and DHCP entries into one.
3739 I've written such object class in the dnsdomainaux.schema file (need
3740 proper OIDs, but that is a minor issue), and tested the setup. It
3741 seem to work.</p>
3742
3743 <p>With this test setup in place, we can get away with one LDAP object
3744 for both DNS and DHCP, and even the LTSP configuration I suggested in
3745 an earlier email. The combined LDAP object will look something like
3746 this:</p>
3747
3748 <blockquote><pre>
3749 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
3750 cn: hostname
3751 objectClass: dhcphost
3752 objectclass: domainrelatedobject
3753 objectclass: dnsdomainaux
3754 associateddomain: hostname.intern
3755 arecord: 10.11.12.13
3756 dhcphwaddress: ethernet 00:00:00:00:00:00
3757 dhcpstatements: fixed-address hostname
3758 ldapconfigsound: Y
3759 </pre></blockquote>
3760
3761 <p>The DNS server uses the associateddomain and arecord entries, while
3762 the DHCP server uses the dhcphwaddress and dhcpstatements entries
3763 before asking DNS to resolve the fixed-adddress. LTSP will use
3764 dhcphwaddress or associateddomain and the ldapconfig* attributes.</p>
3765
3766 <p>I am not yet sure if I can get the DHCP server to look for its
3767 dhcphost in a different location, to allow us to put the objects
3768 outside the "DHCP Config" subtree, but hope to figure out a way to do
3769 that. If I can't figure out a way to do that, we can still get rid of
3770 the hosts subtree and move all its content into the DHCP Config tree
3771 (which probably should be renamed to be more related to the new
3772 content. I suspect cn=dnsdhcp,ou=services or something like that
3773 might be a good place to put it.</p>
3774
3775 <p>If you want to help out with implementing this for Debian Edu,
3776 please contact us on debian-edu@lists.debian.org.</p>
3777
3778 </div>
3779 <div class="tags">
3780
3781
3782 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3783
3784
3785 </div>
3786 </div>
3787 <div class="padding"></div>
3788
3789 <div class="entry">
3790 <div class="title">
3791 <a href="http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html">Idea for storing LTSP configuration in LDAP</a>
3792 </div>
3793 <div class="date">
3794 11th July 2010
3795 </div>
3796 <div class="body">
3797 <p>Vagrant mentioned on IRC today that ltsp_config now support
3798 sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
3799 clients, and that this can be used to fetch configuration from LDAP if
3800 Debian Edu choose to store configuration there.</p>
3801
3802 <p>Armed with this information, I got inspired and wrote a test module
3803 to get configuration from LDAP. The idea is to look up the MAC
3804 address of the client in LDAP, and look for attributes on the form
3805 ltspconfigsetting=value, and use this to export SETTING=value to the
3806 LTSP clients.</p>
3807
3808 <p>The goal is to be able to store the LTSP configuration attributes
3809 in a "computer" LDAP object used by both DNS and DHCP, and thus
3810 allowing us to store all information about a computer in one place.</p>
3811
3812 <p>This is a untested draft implementation, and I welcome feedback on
3813 this approach. A real LDAP schema for the ltspClientAux objectclass
3814 need to be written. Comments, suggestions, etc?</p>
3815
3816 <blockquote><pre>
3817 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
3818 #
3819 # Fetch LTSP client settings from LDAP based on MAC address
3820 #
3821 # Uses ethernet address as stored in the dhcpHost objectclass using
3822 # the dhcpHWAddress attribute or ethernet address stored in the
3823 # ieee802Device objectclass with the macAddress attribute.
3824 #
3825 # This module is written to be schema agnostic, and only depend on the
3826 # existence of attribute names.
3827 #
3828 # The LTSP configuration variables are saved directly using a
3829 # ltspConfig prefix and uppercasing the rest of the attribute name.
3830 # To set the SERVER variable, set the ltspConfigServer attribute.
3831 #
3832 # Some LDAP schema should be created with all the relevant
3833 # configuration settings. Something like this should work:
3834 #
3835 # objectclass ( 1.1.2.2 NAME 'ltspClientAux'
3836 # SUP top
3837 # AUXILIARY
3838 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
3839
3840 LDAPSERVER=$(debian-edu-ldapserver)
3841 if [ "$LDAPSERVER" ] ; then
3842 LDAPBASE=$(debian-edu-ldapserver -b)
3843 for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk '{print $5}'|sort -u) ; do
3844 filter="(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))"
3845 ldapsearch -h "$LDAPSERVER" -b "$LDAPBASE" -v -x "$filter" | \
3846 grep '^ltspConfig' | while read attr value ; do
3847 # Remove prefix and convert to upper case
3848 attr=$(echo $attr | sed 's/^ltspConfig//i' | tr a-z A-Z)
3849 # bass value on to clients
3850 eval "$attr=$value; export $attr"
3851 done
3852 done
3853 fi
3854 </pre></blockquote>
3855
3856 <p>I'm not sure this shell construction will work, because I suspect
3857 the while block might end up in a subshell causing the variables set
3858 there to not show up in ltsp-config, but if that is the case I am sure
3859 the code can be restructured to make sure the variables are passed on.
3860 I expect that can be solved with some testing. :)</p>
3861
3862 <p>If you want to help out with implementing this for Debian Edu,
3863 please contact us on debian-edu@lists.debian.org.</p>
3864
3865 <p>Update 2010-07-17: I am aware of another effort to store LTSP
3866 configuration in LDAP that was created around year 2000 by
3867 <a href="http://www.pcxperience.com/thinclient/documentation/ldap.html">PC
3868 Xperience, Inc., 2000</a>. I found its
3869 <a href="http://people.redhat.com/alikins/ltsp/ldap/">files</a> on a
3870 personal home page over at redhat.com.</p>
3871
3872 </div>
3873 <div class="tags">
3874
3875
3876 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3877
3878
3879 </div>
3880 </div>
3881 <div class="padding"></div>
3882
3883 <div class="entry">
3884 <div class="title">
3885 <a href="http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html">jXplorer, a very nice LDAP GUI</a>
3886 </div>
3887 <div class="date">
3888 9th July 2010
3889 </div>
3890 <div class="body">
3891 <p>Since
3892 <a href="http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">my
3893 last post</a> about available LDAP tools in Debian, I was told about a
3894 LDAP GUI that is even better than luma. The java application
3895 <a href="http://jxplorer.org/">jXplorer</a> is claimed to be capable of
3896 moving LDAP objects and subtrees using drag-and-drop, and can
3897 authenticate using Kerberos. I have only tested the Kerberos
3898 authentication, but do not have a LDAP setup allowing me to rewrite
3899 LDAP with my test user yet. It is
3900 <a href="http://packages.qa.debian.org/j/jxplorer.html">available in
3901 Debian</a> testing and unstable at the moment. The only problem I
3902 have with it is how it handle errors. If something go wrong, its
3903 non-intuitive behaviour require me to go through some query work list
3904 and remove the failing query. Nothing big, but very annoying.</p>
3905
3906 </div>
3907 <div class="tags">
3908
3909
3910 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
3911
3912
3913 </div>
3914 </div>
3915 <div class="padding"></div>
3916
3917 <div class="entry">
3918 <div class="title">
3919 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html">Lenny->Squeeze upgrades, apt vs aptitude with the Gnome desktop</a>
3920 </div>
3921 <div class="date">
3922 3rd July 2010
3923 </div>
3924 <div class="body">
3925 <p>Here is a short update on my <a
3926 href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">my
3927 Debian Lenny->Squeeze upgrade testing</a>. Here is a summary of the
3928 difference for Gnome when it is upgraded by apt-get and aptitude. I'm
3929 not reporting the status for KDE, because the upgrade crashes when
3930 aptitude try because of missing conflicts
3931 (<a href="http://bugs.debian.org/584861">#584861</a> and
3932 <a href="http://bugs.debian.org/585716">#585716</a>).</p>
3933
3934 <p>At the end of the upgrade test script, dpkg -l is executed to get a
3935 complete list of the installed packages. Based on this I see these
3936 differences when I did a test run today. As usual, I do not really
3937 know what the correct set of packages would be, but thought it best to
3938 publish the difference.</p>
3939
3940 <p>Installed using apt-get, missing with aptitude</p>
3941
3942 <blockquote><p>
3943 at-spi cpp-4.3 finger gnome-spell gstreamer0.10-gnomevfs
3944 libatspi1.0-0 libcupsys2 libeel2-data libgail-common libgdl-1-common
3945 libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
3946 libgtksourceview-common libpt-1.10.10-plugins-alsa
3947 libpt-1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
3948 libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
3949 python-4suite-xml python-eggtrayicon python-gtkhtml2
3950 python-gtkmozembed svgalibg1 xserver-xephyr zip
3951 </p></blockquote>
3952
3953 <p>Installed using apt-get, removed with aptitude</p>
3954
3955 <blockquote><p>
3956 bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
3957 gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
3958 libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-50
3959 libbluetooth2 libcamel1.2-11 libcdio7 libcucul0 libcurl3
3960 libdirectfb-1.0-0 libdvdread3 libedata-cal1.2-6 libedataserver1.2-9
3961 libeel2-2.20 libepc-1.0-1 libepc-ui-1.0-1 libexchange-storage1.2-3
3962 libfaad0 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
3963 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
3964 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
3965 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtkhtml2-0
3966 libgtksourceview1.0-0 libgucharmap6 libhesiod0 libicu38 libisccc50
3967 libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++10
3968 libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
3969 libneon27 libnm-glib0 libnm-util0 libopal-2.2 libosp5
3970 libparted1.8-10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
3971 libpt-1.10.10 libraw1394-8 libsensors3 libsmbios2 libsoup2.2-8
3972 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1
3973 libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
3974 libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
3975 mysql-common swfdec-gnome totem-gstreamer wodim
3976 </p></blockquote>
3977
3978 <p>Installed using aptitude, missing with apt-get</p>
3979
3980 <blockquote><p>
3981 gnome gnome-desktop-environment hamster-applet python-gnomeapplet
3982 python-gnomekeyring python-wnck rhythmbox-plugins xorg
3983 xserver-xorg-input-all xserver-xorg-input-evdev
3984 xserver-xorg-input-kbd xserver-xorg-input-mouse
3985 xserver-xorg-input-synaptics xserver-xorg-video-all
3986 xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
3987 xserver-xorg-video-chips xserver-xorg-video-cirrus
3988 xserver-xorg-video-dummy xserver-xorg-video-fbdev
3989 xserver-xorg-video-glint xserver-xorg-video-i128
3990 xserver-xorg-video-i740 xserver-xorg-video-mach64
3991 xserver-xorg-video-mga xserver-xorg-video-neomagic
3992 xserver-xorg-video-nouveau xserver-xorg-video-nv
3993 xserver-xorg-video-r128 xserver-xorg-video-radeon
3994 xserver-xorg-video-radeonhd xserver-xorg-video-rendition
3995 xserver-xorg-video-s3 xserver-xorg-video-s3virge
3996 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
3997 xserver-xorg-video-sis xserver-xorg-video-sisusb
3998 xserver-xorg-video-tdfx xserver-xorg-video-tga
3999 xserver-xorg-video-trident xserver-xorg-video-tseng
4000 xserver-xorg-video-vesa xserver-xorg-video-vmware
4001 xserver-xorg-video-voodoo
4002 </p></blockquote>
4003
4004 <p>Installed using aptitude, removed with apt-get</p>
4005
4006 <blockquote><p>
4007 deskbar-applet xserver-xorg xserver-xorg-core
4008 xserver-xorg-input-wacom xserver-xorg-video-intel
4009 xserver-xorg-video-openchrome
4010 </p></blockquote>
4011
4012 <p>I was told on IRC that the xorg-xserver package was
4013 <a href="http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120">changed
4014 in git</a> today to try to get apt-get to not remove xorg completely.
4015 No idea when it hits Squeeze, but when it does I hope it will reduce
4016 the difference somewhat.
4017
4018 </div>
4019 <div class="tags">
4020
4021
4022 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4023
4024
4025 </div>
4026 </div>
4027 <div class="padding"></div>
4028
4029 <div class="entry">
4030 <div class="title">
4031 <a href="http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">LUMA, a very nice LDAP GUI</a>
4032 </div>
4033 <div class="date">
4034 28th June 2010
4035 </div>
4036 <div class="body">
4037 <p>The last few days I have been looking into the status of the LDAP
4038 directory in Debian Edu, and in the process I started to miss a GUI
4039 tool to browse the LDAP tree. The only one I was able to find in
4040 Debian/Squeeze and Lenny is
4041 <a href="http://luma.sourceforge.net/">LUMA</a>, which has proved to
4042 be a great tool to get a overview of the current LDAP directory
4043 populated by default in Skolelinux. Thanks to it, I have been able to
4044 find empty and obsolete subtrees, misplaced objects and duplicate
4045 objects. It will be installed by default in Debian/Squeeze. If you
4046 are working with LDAP, give it a go. :)</p>
4047
4048 <p>I did notice one problem with it I have not had time to report to
4049 the BTS yet. There is no .desktop file in the package, so the tool do
4050 not show up in the Gnome and KDE menus, but only deep down in in the
4051 Debian submenu in KDE. I hope that can be fixed before Squeeze is
4052 released.</p>
4053
4054 <p>I have not yet been able to get it to modify the tree yet. I would
4055 like to move objects and remove subtrees directly in the GUI, but have
4056 not found a way to do that with LUMA yet. So in the mean time, I use
4057 <a href="http://www.lichteblau.com/ldapvi/">ldapvi</a> for that.</p>
4058
4059 <p>If you have tips on other GUI tools for LDAP that might be useful
4060 in Debian Edu, please contact us on debian-edu@lists.debian.org.</p>
4061
4062 <p>Update 2010-06-29: Ross Reedstrom tipped us about the
4063 <a href="http://packages.qa.debian.org/g/gq.html">gq</a> package as a
4064 useful GUI alternative. It seem like a good tool, but is unmaintained
4065 in Debian and got a RC bug keeping it out of Squeeze. Unless that
4066 changes, it will not be an option for Debian Edu based on Squeeze.</p>
4067
4068 </div>
4069 <div class="tags">
4070
4071
4072 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
4073
4074
4075 </div>
4076 </div>
4077 <div class="padding"></div>
4078
4079 <div class="entry">
4080 <div class="title">
4081 <a href="http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">Idea for a change to LDAP schemas allowing DNS and DHCP info to be combined into one object</a>
4082 </div>
4083 <div class="date">
4084 24th June 2010
4085 </div>
4086 <div class="body">
4087 <p>A while back, I
4088 <a href="http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">complained
4089 about the fact</a> that it is not possible with the provided schemas
4090 for storing DNS and DHCP information in LDAP to combine the two sets
4091 of information into one LDAP object representing a computer.</p>
4092
4093 <p>In the mean time, I discovered that a simple fix would be to make
4094 the dhcpHost object class auxiliary, to allow it to be combined with
4095 the dNSDomain object class, and thus forming one object for one
4096 computer when storing both DHCP and DNS information in LDAP.</p>
4097
4098 <p>If I understand this correctly, it is not safe to do this change
4099 without also changing the assigned number for the object class, and I
4100 do not know enough about LDAP schema design to do that properly for
4101 Debian Edu.</p>
4102
4103 <p>Anyway, for future reference, this is how I believe we could change
4104 the
4105 <a href="http://tools.ietf.org/html/draft-ietf-dhc-ldap-schema-00">DHCP
4106 schema</a> to solve at least part of the problem with the LDAP schemas
4107 available today from IETF.</p>
4108
4109 <pre>
4110 --- dhcp.schema (revision 65192)
4111 +++ dhcp.schema (working copy)
4112 @@ -376,7 +376,7 @@
4113 objectclass ( 2.16.840.1.113719.1.203.6.6
4114 NAME 'dhcpHost'
4115 DESC 'This represents information about a particular client'
4116 - SUP top
4117 + SUP top AUXILIARY
4118 MUST cn
4119 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
4120 X-NDS_CONTAINMENT ('dhcpService' 'dhcpSubnet' 'dhcpGroup') )
4121 </pre>
4122
4123 <p>I very much welcome clues on how to do this properly for Debian
4124 Edu/Squeeze. We provide the DHCP schema in our debian-edu-config
4125 package, and should thus be free to rewrite it as we see fit.</p>
4126
4127 <p>If you want to help out with implementing this for Debian Edu,
4128 please contact us on debian-edu@lists.debian.org.</p>
4129
4130 </div>
4131 <div class="tags">
4132
4133
4134 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
4135
4136
4137 </div>
4138 </div>
4139 <div class="padding"></div>
4140
4141 <div class="entry">
4142 <div class="title">
4143 <a href="http://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html">Calling tasksel like the installer, while still getting useful output</a>
4144 </div>
4145 <div class="date">
4146 16th June 2010
4147 </div>
4148 <div class="body">
4149 <p>A few times I have had the need to simulate the way tasksel
4150 installs packages during the normal debian-installer run. Until now,
4151 I have ended up letting tasksel do the work, with the annoying problem
4152 of not getting any feedback at all when something fails (like a
4153 conffile question from dpkg or a download that fails), using code like
4154 this:
4155
4156 <blockquote><pre>
4157 export DEBIAN_FRONTEND=noninteractive
4158 tasksel --new-install
4159 </pre></blockquote>
4160
4161 This would invoke tasksel, let its automatic task selection pick the
4162 tasks to install, and continue to install the requested tasks without
4163 any output what so ever.
4164
4165 Recently I revisited this problem while working on the automatic
4166 package upgrade testing, because tasksel would some times hang without
4167 any useful feedback, and I want to see what is going on when it
4168 happen. Then it occured to me, I can parse the output from tasksel
4169 when asked to run in test mode, and use that aptitude command line
4170 printed by tasksel then to simulate the tasksel run. I ended up using
4171 code like this:
4172
4173 <blockquote><pre>
4174 export DEBIAN_FRONTEND=noninteractive
4175 cmd="$(in_target tasksel -t --new-install | sed 's/debconf-apt-progress -- //')"
4176 $cmd
4177 </pre></blockquote>
4178
4179 <p>The content of $cmd is typically something like "<tt>aptitude -q
4180 --without-recommends -o APT::Install-Recommends=no -y install
4181 ~t^desktop$ ~t^gnome-desktop$ ~t^laptop$ ~pstandard ~prequired
4182 ~pimportant</tt>", which will install the gnome desktop task, the
4183 laptop task and all packages with priority standard , required and
4184 important, just like tasksel would have done it during
4185 installation.</p>
4186
4187 <p>A better approach is probably to extend tasksel to be able to
4188 install packages without using debconf-apt-progress, for use cases
4189 like this.</p>
4190
4191 </div>
4192 <div class="tags">
4193
4194
4195 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
4196
4197
4198 </div>
4199 </div>
4200 <div class="padding"></div>
4201
4202 <div class="entry">
4203 <div class="title">
4204 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html">Lenny->Squeeze upgrades, removals by apt and aptitude</a>
4205 </div>
4206 <div class="date">
4207 13th June 2010
4208 </div>
4209 <div class="body">
4210 <p>My
4211 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">testing
4212 of Debian upgrades</a> from Lenny to Squeeze continues, and I've
4213 finally made the upgrade logs available from
4214 <a href="http://people.skolelinux.org/pere/debian-upgrade-testing/">http://people.skolelinux.org/pere/debian-upgrade-testing/</a>.
4215 I am now testing dist-upgrade of Gnome and KDE in a chroot using both
4216 apt and aptitude, and found their differences interesting. This time
4217 I will only focus on their removal plans.</p>
4218
4219 <p>After installing a Gnome desktop and the laptop task, apt-get wants
4220 to remove 72 packages when dist-upgrading from Lenny to Squeeze. The
4221 surprising part is that it want to remove xorg and all
4222 xserver-xorg-video* drivers. Clearly not a good choice, but I am not
4223 sure why. When asking aptitude to do the same, it want to remove 129
4224 packages, but most of them are library packages I suspect are no
4225 longer needed. Both of them want to remove bluetooth packages, which
4226 I do not know. Perhaps these bluetooth packages are obsolete?</p>
4227
4228 <p>For KDE, apt-get want to remove 82 packages, among them kdebase
4229 which seem like a bad idea and xorg the same way as with Gnome. Asking
4230 aptitude for the same, it wants to remove 192 packages, none which are
4231 too surprising.</p>
4232
4233 <p>I guess the removal of xorg during upgrades should be investigated
4234 and avoided, and perhaps others as well. Here are the complete list
4235 of planned removals. The complete logs is available from the URL
4236 above. Note if you want to repeat these tests, that the upgrade test
4237 for kde+apt-get hung in the tasksel setup because of dpkg asking
4238 conffile questions. No idea why. I worked around it by using
4239 '<tt>echo >> /proc/<em>pidofdpkg</em>/fd/0</tt>' to tell dpkg to
4240 continue.</p>
4241
4242 <p><b>apt-get gnome 72</b>
4243 <br>bluez-gnome cupsddk-drivers deskbar-applet gnome
4244 gnome-desktop-environment gnome-network-admin gtkhtml3.14
4245 iceweasel-gnome-support libavcodec51 libdatrie0 libgdl-1-0
4246 libgnomekbd2 libgnomekbdui2 libmetacity0 libslab0 libxcb-xlib0
4247 nautilus-cd-burner python-gnome2-desktop python-gnome2-extras
4248 serpentine swfdec-mozilla update-manager xorg xserver-xorg
4249 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
4250 xserver-xorg-input-kbd xserver-xorg-input-mouse
4251 xserver-xorg-input-synaptics xserver-xorg-input-wacom
4252 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
4253 xserver-xorg-video-ati xserver-xorg-video-chips
4254 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
4255 xserver-xorg-video-dummy xserver-xorg-video-fbdev
4256 xserver-xorg-video-glint xserver-xorg-video-i128
4257 xserver-xorg-video-i740 xserver-xorg-video-imstt
4258 xserver-xorg-video-intel xserver-xorg-video-mach64
4259 xserver-xorg-video-mga xserver-xorg-video-neomagic
4260 xserver-xorg-video-nsc xserver-xorg-video-nv
4261 xserver-xorg-video-openchrome xserver-xorg-video-r128
4262 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
4263 xserver-xorg-video-rendition xserver-xorg-video-s3
4264 xserver-xorg-video-s3virge xserver-xorg-video-savage
4265 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
4266 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
4267 xserver-xorg-video-tga xserver-xorg-video-trident
4268 xserver-xorg-video-tseng xserver-xorg-video-v4l
4269 xserver-xorg-video-vesa xserver-xorg-video-vga
4270 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9
4271 xulrunner-1.9-gnome-support</p>
4272
4273 <p><b>aptitude gnome 129</b>
4274
4275 <br>bluez-gnome bluez-utils cpp-4.3 cupsddk-drivers dhcdbd
4276 djvulibre-desktop finger gnome-app-install gnome-mount
4277 gnome-network-admin gnome-spell gnome-vfs-obexftp
4278 gnome-volume-manager gstreamer0.10-gnomevfs gtkhtml3.14 libao2
4279 libavahi-compat-libdnssd1 libavahi-core5 libavcodec51 libbluetooth2
4280 libcamel1.2-11 libcdio7 libcucul0 libcupsys2 libcurl3 libdatrie0
4281 libdirectfb-1.0-0 libdvdread3 libedataserver1.2-9 libeel2-2.20
4282 libeel2-data libepc-1.0-1 libepc-ui-1.0-1 libfaad0 libgail-common
4283 libgd2-noxpm libgda3-3 libgda3-common libgdl-1-0 libgdl-1-common
4284 libggz2 libggzcore9 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0
4285 libgnomecups1.0-1 libgnomekbd2 libgnomekbdui2 libgnomeprint2.2-0
4286 libgnomeprint2.2-data libgnomeprintui2.2-0 libgnomeprintui2.2-common
4287 libgnomevfs2-bin libgpod3 libgraphviz4 libgtkhtml2-0
4288 libgtksourceview-common libgtksourceview1.0-0 libgucharmap6
4289 libhesiod0 libicu38 libiw29 libkpathsea4 libltdl3 libmagick++10
4290 libmagick10 libmalaga7 libmetacity0 libmtp7 libmysqlclient15off
4291 libnautilus-burn4 libneon27 libnm-glib0 libnm-util0 libopal-2.2
4292 libosp5 libparted1.8-10 libpoppler-glib3 libpoppler3 libpt-1.10.10
4293 libpt-1.10.10-plugins-alsa libpt-1.10.10-plugins-v4l libraw1394-8
4294 libsensors3 libslab0 libsmbios2 libsoup2.2-8 libssh2-1
4295 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1 libtotem-plparser10
4296 libtrackerclient0 libxalan2-java libxalan2-java-gcj libxcb-xlib0
4297 libxerces2-java libxerces2-java-gcj libxklavier12 libxtrap6
4298 libxxf86misc1 libzephyr3 mysql-common nautilus-cd-burner
4299 openoffice.org-writer2latex openssl-blacklist p7zip
4300 python-4suite-xml python-eggtrayicon python-gnome2-desktop
4301 python-gnome2-extras python-gtkhtml2 python-gtkmozembed
4302 python-numeric python-sexy serpentine svgalibg1 swfdec-gnome
4303 swfdec-mozilla totem-gstreamer update-manager wodim
4304 xserver-xorg-video-cyrix xserver-xorg-video-imstt
4305 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
4306 zip</p>
4307
4308 <p><b>apt-get kde 82</b>
4309
4310 <br>cupsddk-drivers karm kaudiocreator kcoloredit kcontrol kde kde-core
4311 kdeaddons kdeartwork kdebase kdebase-bin kdebase-bin-kde3
4312 kdebase-kio-plugins kdesktop kdeutils khelpcenter kicker
4313 kicker-applets knewsticker kolourpaint konq-plugins konqueror korn
4314 kpersonalizer kscreensaver ksplash libavcodec51 libdatrie0 libkiten1
4315 libxcb-xlib0 quanta superkaramba texlive-base-bin xorg xserver-xorg
4316 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
4317 xserver-xorg-input-kbd xserver-xorg-input-mouse
4318 xserver-xorg-input-synaptics xserver-xorg-input-wacom
4319 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
4320 xserver-xorg-video-ati xserver-xorg-video-chips
4321 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
4322 xserver-xorg-video-dummy xserver-xorg-video-fbdev
4323 xserver-xorg-video-glint xserver-xorg-video-i128
4324 xserver-xorg-video-i740 xserver-xorg-video-imstt
4325 xserver-xorg-video-intel xserver-xorg-video-mach64
4326 xserver-xorg-video-mga xserver-xorg-video-neomagic
4327 xserver-xorg-video-nsc xserver-xorg-video-nv
4328 xserver-xorg-video-openchrome xserver-xorg-video-r128
4329 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
4330 xserver-xorg-video-rendition xserver-xorg-video-s3
4331 xserver-xorg-video-s3virge xserver-xorg-video-savage
4332 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
4333 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
4334 xserver-xorg-video-tga xserver-xorg-video-trident
4335 xserver-xorg-video-tseng xserver-xorg-video-v4l
4336 xserver-xorg-video-vesa xserver-xorg-video-vga
4337 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9</p>
4338
4339 <p><b>aptitude kde 192</b>
4340 <br>bluez-utils cpp-4.3 cupsddk-drivers cvs dcoprss dhcdbd
4341 djvulibre-desktop dosfstools eyesapplet fifteenapplet finger gettext
4342 ghostscript-x imlib-base imlib11 indi kandy karm kasteroids
4343 kaudiocreator kbackgammon kbstate kcoloredit kcontrol kcron kdat
4344 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
4345 kdebase-bin-kde3 kdebase-kio-plugins kdeedu-data
4346 kdegraphics-kfile-plugins kdelirc kdemultimedia-kappfinder-data
4347 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
4348 kdepim-kfile-plugins kdepim-kio-plugins kdeprint kdesktop kdessh
4349 kdict kdnssd kdvi kedit keduca kenolaba kfax kfaxview kfouleggs
4350 kghostview khelpcenter khexedit kiconedit kitchensync klatin
4351 klickety kmailcvt kmenuedit kmid kmilo kmoon kmrml kodo kolourpaint
4352 kooka korn kpager kpdf kpercentage kpf kpilot kpoker kpovmodeler
4353 krec kregexpeditor ksayit ksim ksirc ksirtet ksmiletris ksmserver
4354 ksnake ksokoban ksplash ksvg ksysv ktip ktnef kuickshow kverbos
4355 kview kviewshell kvoctrain kwifimanager kwin kwin4 kworldclock
4356 kxsldbg libakode2 libao2 libarts1-akode libarts1-audiofile
4357 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
4358 libavahi-core5 libavc1394-0 libavcodec51 libbluetooth2
4359 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0 libdatrie0
4360 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
4361 libgail-common libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0
4362 libicu38 libiec61883-0 libindex0 libiw29 libk3b3 libkcal2b libkcddb1
4363 libkdeedu3 libkdepim1a libkgantt0 libkiten1 libkleopatra1 libkmime2
4364 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
4365 libksieve0 libktnef1 liblockdev1 libltdl3 libmagick10 libmimelib1c2a
4366 libmozjs1d libmpcdec3 libneon27 libnm-util0 libopensync0 libpisock9
4367 libpoppler-glib3 libpoppler-qt2 libpoppler3 libraw1394-8 libsmbios2
4368 libssh2-1 libsuitesparse-3.1.0 libtalloc1 libtiff-tools
4369 libxalan2-java libxalan2-java-gcj libxcb-xlib0 libxerces2-java
4370 libxerces2-java-gcj libxtrap6 mpeglib networkstatus
4371 openoffice.org-writer2latex pmount poster psutils quanta quanta-data
4372 superkaramba svgalibg1 tex-common texlive-base texlive-base-bin
4373 texlive-common texlive-doc-base texlive-fonts-recommended
4374 xserver-xorg-video-cyrix xserver-xorg-video-imstt
4375 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
4376 xulrunner-1.9</p>
4377
4378
4379 </div>
4380 <div class="tags">
4381
4382
4383 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4384
4385
4386 </div>
4387 </div>
4388 <div class="padding"></div>
4389
4390 <div class="entry">
4391 <div class="title">
4392 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">Automatic upgrade testing from Lenny to Squeeze</a>
4393 </div>
4394 <div class="date">
4395 11th June 2010
4396 </div>
4397 <div class="body">
4398 <p>The last few days I have done some upgrade testing in Debian, to
4399 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
4400 have been discovered and reported in the process
4401 (<a href="http://bugs.debian.org/585410">#585410</a> in nagios3-cgi,
4402 <a href="http://bugs.debian.org/584879">#584879</a> already fixed in
4403 enscript and <a href="http://bugs.debian.org/584861">#584861</a> in
4404 kdebase-workspace-data), and to get a more regular testing going on, I
4405 am working on a script to automate the test.</p>
4406
4407 <p>The idea is to create a Lenny chroot and use tasksel to install a
4408 Gnome or KDE desktop installation inside the chroot before upgrading
4409 it. To ensure no services are started in the chroot, a policy-rc.d
4410 script is inserted. To make sure tasksel believe it is to install a
4411 desktop on a laptop, the tasksel tests are replaced in the chroot
4412 (only acceptable because this is a throw-away chroot).</p>
4413
4414 <p>A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
4415 currently always fail because udev refuses to upgrade with the kernel
4416 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
4417 is created. The bug report
4418 <a href="http://bugs.debian.org/566000">#566000</a> make me suspect
4419 this problem do not trigger in a chroot, but I touch the file anyway
4420 to make sure the upgrade go well. Testing on virtual and real
4421 hardware have failed me because of udev so far, and creating this file
4422 do the trick in such settings anyway. This is a
4423 <a href="http://www.linuxquestions.org/questions/debian-26/failed-dist-upgrade-due-to-udev-config_sysfs_deprecated-nonsense-804130/">known
4424 issue</a> and the current udev behaviour is intended by the udev
4425 maintainer because he lack the resources to rewrite udev to keep
4426 working with old kernels or something like that. I really wish the
4427 udev upstream would keep udev backwards compatible, to avoid such
4428 upgrade problem, but given that they fail to do so, I guess
4429 documenting the way out of this mess is the best option we got for
4430 Debian Squeeze.</p>
4431
4432 <p>Anyway, back to the task at hand, testing upgrades. This test
4433 script, which I call <tt>upgrade-test</tt> for now, is doing the
4434 trick:</p>
4435
4436 <blockquote><pre>
4437 #!/bin/sh
4438 set -ex
4439
4440 if [ "$1" ] ; then
4441 desktop=$1
4442 else
4443 desktop=gnome
4444 fi
4445
4446 from=lenny
4447 to=squeeze
4448
4449 exec &lt; /dev/null
4450 unset LANG
4451 mirror=http://ftp.skolelinux.org/debian
4452 tmpdir=chroot-$from-upgrade-$to-$desktop
4453 fuser -mv .
4454 debootstrap $from $tmpdir $mirror
4455 chroot $tmpdir aptitude update
4456 cat > $tmpdir/usr/sbin/policy-rc.d &lt;&lt;EOF
4457 #!/bin/sh
4458 exit 101
4459 EOF
4460 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
4461 exit_cleanup() {
4462 umount $tmpdir/proc
4463 }
4464 mount -t proc proc $tmpdir/proc
4465 # Make sure proc is unmounted also on failure
4466 trap exit_cleanup EXIT INT
4467
4468 chroot $tmpdir aptitude -y install debconf-utils
4469
4470 # Make sure tasksel autoselection trigger. It need the test scripts
4471 # to return the correct answers.
4472 echo tasksel tasksel/desktop multiselect $desktop | \
4473 chroot $tmpdir debconf-set-selections
4474
4475 # Include the desktop and laptop task
4476 for test in desktop laptop ; do
4477 echo > $tmpdir/usr/lib/tasksel/tests/$test &lt;&lt;EOF
4478 #!/bin/sh
4479 exit 2
4480 EOF
4481 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
4482 done
4483
4484 DEBIAN_FRONTEND=noninteractive
4485 DEBIAN_PRIORITY=critical
4486 export DEBIAN_FRONTEND DEBIAN_PRIORITY
4487 chroot $tmpdir tasksel --new-install
4488
4489 echo deb $mirror $to main > $tmpdir/etc/apt/sources.list
4490 chroot $tmpdir aptitude update
4491 touch $tmpdir/etc/udev/kernel-upgrade
4492 chroot $tmpdir aptitude -y dist-upgrade
4493 fuser -mv
4494 </pre></blockquote>
4495
4496 <p>I suspect it would be useful to test upgrades with both apt-get and
4497 with aptitude, but I have not had time to look at how they behave
4498 differently so far. I hope to get a cron job running to do the test
4499 regularly and post the result on the web. The Gnome upgrade currently
4500 work, while the KDE upgrade fail because of the bug in
4501 kdebase-workspace-data</p>
4502
4503 <p>I am not quite sure what kind of extract from the huge upgrade logs
4504 (KDE 167 KiB, Gnome 516 KiB) it make sense to include in this blog
4505 post, so I will refrain from trying. I can report that for Gnome,
4506 aptitude report 760 packages upgraded, 448 newly installed, 129 to
4507 remove and 1 not upgraded and 1024MB need to be downloaded while for
4508 KDE the same numbers are 702 packages upgraded, 507 newly installed,
4509 193 to remove and 0 not upgraded and 1117MB need to be downloaded</p>
4510
4511 <p>I am very happy to notice that the Gnome desktop + laptop upgrade
4512 is able to migrate to dependency based boot sequencing and parallel
4513 booting without a hitch. Was unsure if there were still bugs with
4514 packages failing to clean up their obsolete init.d script during
4515 upgrades, and no such problem seem to affect the Gnome desktop+laptop
4516 packages.</p>
4517
4518 </div>
4519 <div class="tags">
4520
4521
4522 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/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4523
4524
4525 </div>
4526 </div>
4527 <div class="padding"></div>
4528
4529 <div class="entry">
4530 <div class="title">
4531 <a href="http://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>
4532 </div>
4533 <div class="date">
4534 6th June 2010
4535 </div>
4536 <div class="body">
4537 <p>If Debian is to migrate to upstart on Linux, I expect some init.d
4538 scripts to migrate (some of) their operations to upstart job while
4539 keeping the init.d for hurd and kfreebsd. The packages with such
4540 needs will need a way to get their init.d scripts to behave
4541 differently when used with sysvinit and with upstart. Because of
4542 this, I had a look at the environment variables set when a init.d
4543 script is running under upstart, and when it is not.</p>
4544
4545 <p>With upstart, I notice these environment variables are set when a
4546 script is started from rcS.d/ (ignoring some irrelevant ones like
4547 COLUMNS):</p>
4548
4549 <blockquote><pre>
4550 DEFAULT_RUNLEVEL=2
4551 previous=N
4552 PREVLEVEL=
4553 RUNLEVEL=
4554 runlevel=S
4555 UPSTART_EVENTS=startup
4556 UPSTART_INSTANCE=
4557 UPSTART_JOB=rc-sysinit
4558 </pre></blockquote>
4559
4560 <p>With sysvinit, these environment variables are set for the same
4561 script.</p>
4562
4563 <blockquote><pre>
4564 INIT_VERSION=sysvinit-2.88
4565 previous=N
4566 PREVLEVEL=N
4567 RUNLEVEL=S
4568 runlevel=S
4569 </pre></blockquote>
4570
4571 <p>The RUNLEVEL and PREVLEVEL environment variables passed on from
4572 sysvinit are not set by upstart. Not sure if it is intentional or not
4573 to not be compatible with sysvinit in this regard.</p>
4574
4575 <p>For scripts needing to behave differently when upstart is used,
4576 looking for the UPSTART_JOB environment variable seem to be a good
4577 choice.</p>
4578
4579 </div>
4580 <div class="tags">
4581
4582
4583 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>.
4584
4585
4586 </div>
4587 </div>
4588 <div class="padding"></div>
4589
4590 <div class="entry">
4591 <div class="title">
4592 <a href="http://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html">A manual for standards wars...</a>
4593 </div>
4594 <div class="date">
4595 6th June 2010
4596 </div>
4597 <div class="body">
4598 <p>Via the
4599 <a href="http://feedproxy.google.com/~r/robweir/antic-atom/~3/QzU4RgoAGMg/weekly-links-10.html">blog
4600 of Rob Weir</a> I came across the very interesting essay named
4601 <a href="http://faculty.haas.berkeley.edu/shapiro/wars.pdf">The Art of
4602 Standards Wars</a> (PDF 25 pages). I recommend it for everyone
4603 following the standards wars of today.</p>
4604
4605 </div>
4606 <div class="tags">
4607
4608
4609 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/standard">standard</a>.
4610
4611
4612 </div>
4613 </div>
4614 <div class="padding"></div>
4615
4616 <div class="entry">
4617 <div class="title">
4618 <a href="http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html">Sitesummary tip: Listing computer hardware models used at site</a>
4619 </div>
4620 <div class="date">
4621 3rd June 2010
4622 </div>
4623 <div class="body">
4624 <p>When using sitesummary at a site to track machines, it is possible
4625 to get a list of the machine types in use thanks to the DMI
4626 information extracted from each machine. The script to do so is
4627 included in the sitesummary package, and here is example output from
4628 the Skolelinux build servers:</p>
4629
4630 <blockquote><pre>
4631 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
4632 vendor count
4633 Dell Computer Corporation 1
4634 PowerEdge 1750 1
4635 IBM 1
4636 eserver xSeries 345 -[8670M1X]- 1
4637 Intel 2
4638 [no-dmi-info] 3
4639 maintainer:~#
4640 </pre></blockquote>
4641
4642 <p>The quality of the report depend on the quality of the DMI tables
4643 provided in each machine. Here there are Intel machines without model
4644 information listed with Intel as vendor and no model, and virtual Xen
4645 machines listed as [no-dmi-info]. One can add -l as a command line
4646 option to list the individual machines.</p>
4647
4648 <p>A larger list is
4649 <a href="http://narvikskolen.no/sitesummary/">available from the the
4650 city of Narvik</a>, which uses Skolelinux on all their shools and also
4651 provide the basic sitesummary report publicly. In their report there
4652 are ~1400 machines. I know they use both Ubuntu and Skolelinux on
4653 their machines, and as sitesummary is available in both distributions,
4654 it is trivial to get all of them to report to the same central
4655 collector.</p>
4656
4657 </div>
4658 <div class="tags">
4659
4660
4661 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary</a>.
4662
4663
4664 </div>
4665 </div>
4666 <div class="padding"></div>
4667
4668 <div class="entry">
4669 <div class="title">
4670 <a href="http://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>
4671 </div>
4672 <div class="date">
4673 1st June 2010
4674 </div>
4675 <div class="body">
4676 <p>It is strange to watch how a bug in Debian causing KDM to fail to
4677 start at boot when an NVidia video card is used is handled. The
4678 problem seem to be that the nvidia X.org driver uses a long time to
4679 initialize, and this duration is longer than kdm is configured to
4680 wait.</p>
4681
4682 <p>I came across two bugs related to this issue,
4683 <a href="http://bugs.debian.org/583312">#583312</a> initially filed
4684 against initscripts and passed on to nvidia-glx when it became obvious
4685 that the nvidia drivers were involved, and
4686 <a href="http://bugs.debian.org/524751">#524751</a> initially filed against
4687 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.</p>
4688
4689 <p>To me, it seem that no-one is interested in actually solving the
4690 problem nvidia video card owners experience and make sure the Debian
4691 distribution work out of the box for these users. The nvidia driver
4692 maintainers expect kdm to be set up to wait longer, while kdm expect
4693 the nvidia driver maintainers to fix the driver to start faster, and
4694 while they wait for each other I guess the users end up switching to a
4695 distribution that work for them. I have no idea what the solution is,
4696 but I am pretty sure that waiting for each other is not it.</p>
4697
4698 <p>I wonder why we end up handling bugs this way.</p>
4699
4700 </div>
4701 <div class="tags">
4702
4703
4704 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/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4705
4706
4707 </div>
4708 </div>
4709 <div class="padding"></div>
4710
4711 <div class="entry">
4712 <div class="title">
4713 <a href="http://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>
4714 </div>
4715 <div class="date">
4716 27th May 2010
4717 </div>
4718 <div class="body">
4719 <p>A few days ago, parallel booting was enabled in Debian/testing.
4720 The feature seem to hold up pretty well, but three fairly serious
4721 issues are known and should be solved:
4722
4723 <p><ul>
4724
4725 <li>The wicd package seen to
4726 <a href="http://bugs.debian.org/508289">break NFS mounting</a> and
4727 <a href="http://bugs.debian.org/581586">network setup</a> when
4728 parallel booting is enabled. No idea why, but the wicd maintainer
4729 seem to be on the case.</li>
4730
4731 <li>The nvidia X driver seem to
4732 <a href="http://bugs.debian.org/583312">have a race condition</a>
4733 triggered more easily when parallel booting is in effect. The
4734 maintainer is on the case.</li>
4735
4736 <li>The sysv-rc package fail to properly enable dependency based boot
4737 sequencing (the shutdown is broken) when old file-rc users
4738 <a href="http://bugs.debian.org/575080">try to switch back</a> to
4739 sysv-rc. One way to solve it would be for file-rc to create
4740 /etc/init.d/.legacy-bootordering, and another is to try to make
4741 sysv-rc more robust. Will investigate some more and probably upload a
4742 workaround in sysv-rc to help those trying to move from file-rc to
4743 sysv-rc get a working shutdown.</li>
4744
4745 </ul></p>
4746
4747 <p>All in all not many surprising issues, and all of them seem
4748 solvable before Squeeze is released. In addition to these there are
4749 some packages with bugs in their dependencies and run level settings,
4750 which I expect will be fixed in a reasonable time span.</p>
4751
4752 <p>If you report any problems with dependencies in init.d scripts to
4753 the BTS, please usertag the report to get it to show up at
4754 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
4755 list of usertagged bugs related to this</a>.</p>
4756
4757 <p>Update: Correct bug number to file-rc issue.</p>
4758
4759 </div>
4760 <div class="tags">
4761
4762
4763 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/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4764
4765
4766 </div>
4767 </div>
4768 <div class="padding"></div>
4769
4770 <div class="entry">
4771 <div class="title">
4772 <a href="http://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html">More flexible firmware handling in debian-installer</a>
4773 </div>
4774 <div class="date">
4775 22nd May 2010
4776 </div>
4777 <div class="body">
4778 <p>After a long break from debian-installer development, I finally
4779 found time today to return to the project. Having to spend less time
4780 working dependency based boot in debian, as it is almost complete now,
4781 definitely helped freeing some time.</p>
4782
4783 <p>A while back, I ran into a problem while working on Debian Edu. We
4784 include some firmware packages on the Debian Edu CDs, those needed to
4785 get disk and network controllers working. Without having these
4786 firmware packages available during installation, it is impossible to
4787 install Debian Edu on the given machine, and because our target group
4788 are non-technical people, asking them to provide firmware packages on
4789 an external medium is a support pain. Initially, I expected it to be
4790 enough to include the firmware packages on the CD to get
4791 debian-installer to find and use them. This proved to be wrong.
4792 Next, I hoped it was enough to symlink the relevant firmware packages
4793 to some useful location on the CD (tried /cdrom/ and
4794 /cdrom/firmware/). This also proved to not work, and at this point I
4795 found time to look at the debian-installer code to figure out what was
4796 going to work.</p>
4797
4798 <p>The firmware loading code is in the hw-detect package, and a closer
4799 look revealed that it would only look for firmware packages outside
4800 the installation media, so the CD was never checked for firmware
4801 packages. It would only check USB sticks, floppies and other
4802 "external" media devices. Today I changed it to also look in the
4803 /cdrom/firmware/ directory on the mounted CD or DVD, which should
4804 solve the problem I ran into with Debian edu. I also changed it to
4805 look in /firmware/, to make sure the installer also find firmware
4806 provided in the initrd when booting the installer via PXE, to allow us
4807 to provide the same feature in the PXE setup included in Debian
4808 Edu.</p>
4809
4810 <p>To make sure firmware deb packages with a license questions are not
4811 activated without asking if the license is accepted, I extended
4812 hw-detect to look for preinst scripts in the firmware packages, and
4813 run these before activating the firmware during installation. The
4814 license question is asked using debconf in the preinst, so this should
4815 solve the issue for the firmware packages I have looked at so far.</p>
4816
4817 <p>If you want to discuss the details of these features, please
4818 contact us on debian-boot@lists.debian.org.</p>
4819
4820 </div>
4821 <div class="tags">
4822
4823
4824 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4825
4826
4827 </div>
4828 </div>
4829 <div class="padding"></div>
4830
4831 <div class="entry">
4832 <div class="title">
4833 <a href="http://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>
4834 </div>
4835 <div class="date">
4836 14th May 2010
4837 </div>
4838 <div class="body">
4839 <p>Since this evening, parallel booting is the default in
4840 Debian/unstable for machines using dependency based boot sequencing.
4841 Apparently the testing of concurrent booting has been wider than
4842 expected, if I am to believe the
4843 <a href="http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
4844 on debian-devel@</a>, and I concluded a few days ago to move forward
4845 with the feature this weekend, to give us some time to detect any
4846 remaining problems before Squeeze is frozen. If serious problems are
4847 detected, it is simple to change the default back to sequential boot.
4848 The upload of the new sysvinit package also activate a new upstream
4849 version.</p>
4850
4851 More information about
4852 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
4853 based boot sequencing</a> is available from the Debian wiki. It is
4854 currently possible to disable parallel booting when one run into
4855 problems caused by it, by adding this line to /etc/default/rcS:</p>
4856
4857 <blockquote><pre>
4858 CONCURRENCY=none
4859 </pre></blockquote>
4860
4861 <p>If you report any problems with dependencies in init.d scripts to
4862 the BTS, please usertag the report to get it to show up at
4863 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
4864 list of usertagged bugs related to this</a>.</p>
4865
4866 </div>
4867 <div class="tags">
4868
4869
4870 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/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
4871
4872
4873 </div>
4874 </div>
4875 <div class="padding"></div>
4876
4877 <div class="entry">
4878 <div class="title">
4879 <a href="http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html">Sitesummary tip: Listing MAC address of all clients</a>
4880 </div>
4881 <div class="date">
4882 14th May 2010
4883 </div>
4884 <div class="body">
4885 <p>In the recent Debian Edu versions, the
4886 <a href="http://wiki.debian.org/DebianEdu/HowTo/SiteSummary">sitesummary
4887 system</a> is used to keep track of the machines in the school
4888 network. Each machine will automatically report its status to the
4889 central server after boot and once per night. The network setup is
4890 also reported, and using this information it is possible to get the
4891 MAC address of all network interfaces in the machines. This is useful
4892 to update the DHCP configuration.</p>
4893
4894 <p>To give some idea how to use sitesummary, here is a one-liner to
4895 ist all MAC addresses of all machines reporting to sitesummary. Run
4896 this on the collector host:</p>
4897
4898 <blockquote><pre>
4899 perl -MSiteSummary -e 'for_all_hosts(sub { print join(" ", get_macaddresses(shift)), "\n"; });'
4900 </pre></blockquote>
4901
4902 <p>This will list all MAC addresses assosiated with all machine, one
4903 line per machine and with space between the MAC addresses.</p>
4904
4905 <p>To allow system administrators easier job at adding static DHCP
4906 addresses for hosts, it would be possible to extend this to fetch
4907 machine information from sitesummary and update the DHCP and DNS
4908 tables in LDAP using this information. Such tool is unfortunately not
4909 written yet.</p>
4910
4911 </div>
4912 <div class="tags">
4913
4914
4915 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary</a>.
4916
4917
4918 </div>
4919 </div>
4920 <div class="padding"></div>
4921
4922 <div class="entry">
4923 <div class="title">
4924 <a href="http://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html">systemd, an interesting alternative to upstart</a>
4925 </div>
4926 <div class="date">
4927 13th May 2010
4928 </div>
4929 <div class="body">
4930 <p>The last few days a new boot system called
4931 <a href="http://www.freedesktop.org/wiki/Software/systemd">systemd</a>
4932 has been
4933 <a href="http://0pointer.de/blog/projects/systemd.html">introduced</a>
4934
4935 to the free software world. I have not yet had time to play around
4936 with it, but it seem to be a very interesting alternative to
4937 <a href="http://upstart.ubuntu.com/">upstart</a>, and might prove to be
4938 a good alternative for Debian when we are able to switch to an event
4939 based boot system. Tollef is
4940 <a href="http://bugs.debian.org/580814">in the process</a> of getting
4941 systemd into Debian, and I look forward to seeing how well it work. I
4942 like the fact that systemd handles init.d scripts with dependency
4943 information natively, allowing them to run in parallel where upstart
4944 at the moment do not.</p>
4945
4946 <p>Unfortunately do systemd have the same problem as upstart regarding
4947 platform support. It only work on recent Linux kernels, and also need
4948 some new kernel features enabled to function properly. This means
4949 kFreeBSD and Hurd ports of Debian will need a port or a different boot
4950 system. Not sure how that will be handled if systemd proves to be the
4951 way forward.</p>
4952
4953 <p>In the mean time, based on the
4954 <a href="http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
4955 on debian-devel@</a> regarding parallel booting in Debian, I have
4956 decided to enable full parallel booting as the default in Debian as
4957 soon as possible (probably this weekend or early next week), to see if
4958 there are any remaining serious bugs in the init.d dependencies. A
4959 new version of the sysvinit package implementing this change is
4960 already in experimental. If all go well, Squeeze will be released
4961 with parallel booting enabled by default.</p>
4962
4963 </div>
4964 <div class="tags">
4965
4966
4967 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>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
4968
4969
4970 </div>
4971 </div>
4972 <div class="padding"></div>
4973
4974 <div class="entry">
4975 <div class="title">
4976 <a href="http://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>
4977 </div>
4978 <div class="date">
4979 6th May 2010
4980 </div>
4981 <div class="body">
4982 <p>These days, the init.d script dependencies in Squeeze are quite
4983 complete, so complete that it is actually possible to run all the
4984 init.d scripts in parallell based on these dependencies. If you want
4985 to test your Squeeze system, make sure
4986 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
4987 based boot sequencing</a> is enabled, and add this line to
4988 /etc/default/rcS:</p>
4989
4990 <blockquote><pre>
4991 CONCURRENCY=makefile
4992 </pre></blockquote>
4993
4994 <p>That is it. It will cause sysv-rc to use the startpar tool to run
4995 scripts in parallel using the dependency information stored in
4996 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
4997 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
4998 to try to start the kdm and gdm scripts as early as possible, and will
4999 start the facilities required by kdm or gdm as early as possible to
5000 make this happen.</p>
5001
5002 <p>Give it a try, and see if you like the result. If some services
5003 fail to start properly, it is most likely because they have incomplete
5004 init.d script dependencies in their startup script (or some of their
5005 dependent scripts have incomplete dependencies). Report bugs and get
5006 the package maintainers to fix it. :)</p>
5007
5008 <p>Running scripts in parallel could be the default in Debian when we
5009 manage to get the init.d script dependencies complete and correct. I
5010 expect we will get there in Squeeze+1, if we get manage to test and
5011 fix the remaining issues.</p>
5012
5013 <p>If you report any problems with dependencies in init.d scripts to
5014 the BTS, please usertag the report to get it to show up at
5015 <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
5016 list of usertagged bugs related to this</a>.</p>
5017
5018 </div>
5019 <div class="tags">
5020
5021
5022 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>.
5023
5024
5025 </div>
5026 </div>
5027 <div class="padding"></div>
5028
5029 <div class="entry">
5030 <div class="title">
5031 <a href="http://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html">Debian has switched to dependency based boot sequencing</a>
5032 </div>
5033 <div class="date">
5034 27th July 2009
5035 </div>
5036 <div class="body">
5037 <p>Since this evening, with the upload of sysvinit version 2.87dsf-2,
5038 and the upload of insserv version 1.12.0-10 yesterday, Debian unstable
5039 have been migrated to using dependency based boot sequencing. This
5040 conclude work me and others have been doing for the last three days.
5041 It feels great to see this finally part of the default Debian
5042 installation. Now we just need to weed out the last few problems that
5043 are bound to show up, to get everything ready for Squeeze.</p>
5044
5045 <p>The next step is migrating /sbin/init from sysvinit to upstart, and
5046 fixing the more fundamental problem of handing the event based
5047 non-predictable kernel in the early boot.</p>
5048
5049 </div>
5050 <div class="tags">
5051
5052
5053 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>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5054
5055
5056 </div>
5057 </div>
5058 <div class="padding"></div>
5059
5060 <div class="entry">
5061 <div class="title">
5062 <a href="http://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html">Taking over sysvinit development</a>
5063 </div>
5064 <div class="date">
5065 22nd July 2009
5066 </div>
5067 <div class="body">
5068 <p>After several years of frustration with the lack of activity from
5069 the existing sysvinit upstream developer, I decided a few weeks ago to
5070 take over the package and become the new upstream. The number of
5071 patches to track for the Debian package was becoming a burden, and the
5072 lack of synchronization between the distribution made it hard to keep
5073 the package up to date.</p>
5074
5075 <p>On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
5076 and my Debian co-maintainer Kel Modderman. About 10 days ago, I made
5077 a new upstream tarball with version number 2.87dsf (for Debian, SuSe
5078 and Fedora), based on the patches currently in use in these
5079 distributions. We Debian maintainers plan to move to this tarball as
5080 the new upstream as soon as we find time to do the merge. Since the
5081 new tarball was created, we agreed with Werner at SuSe to make a new
5082 upstream project at <a href="http://savannah.nongnu.org/">Savannah</a>, and continue
5083 development there. The project is registered and currently waiting
5084 for approval by the Savannah administrators, and as soon as it is
5085 approved, we will import the old versions from svn and continue
5086 working on the future release.</p>
5087
5088 <p>It is a bit ironic that this is done now, when some of the involved
5089 distributions are moving to upstart as a syvinit replacement.</p>
5090
5091 </div>
5092 <div class="tags">
5093
5094
5095 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>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5096
5097
5098 </div>
5099 </div>
5100 <div class="padding"></div>
5101
5102 <div class="entry">
5103 <div class="title">
5104 <a href="http://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html">Debian boots quicker and quicker</a>
5105 </div>
5106 <div class="date">
5107 24th June 2009
5108 </div>
5109 <div class="body">
5110 <p>I spent Monday and tuesday this week in London with a lot of the
5111 people involved in the boot system on Debian and Ubuntu, to see if we
5112 could find more ways to speed up the boot system. This was an Ubuntu
5113 funded
5114 <a href="https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint">developer
5115 gathering</a>. It was quite productive. We also discussed the future
5116 of boot systems, and ways to handle the increasing number of boot
5117 issues introduced by the Linux kernel becoming more and more
5118 asynchronous and event base. The Ubuntu approach using udev and
5119 upstart might be a good way forward. Time will show.</p>
5120
5121 <p>Anyway, there are a few ways at the moment to speed up the boot
5122 process in Debian. All of these should be applied to get a quick
5123 boot:</p>
5124
5125 <ul>
5126
5127 <li>Use dash as /bin/sh.</li>
5128
5129 <li>Disable the init.d/hwclock*.sh scripts and make sure the hardware
5130 clock is in UTC.</li>
5131
5132 <li>Install and activate the insserv package to enable
5133 <a href="http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
5134 based boot sequencing</a>, and enable concurrent booting.</li>
5135
5136 </ul>
5137
5138 These points are based on the Google summer of code work done by
5139 <a href="http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/">Carlos
5140 Villegas</a>.
5141
5142 <p>Support for makefile-style concurrency during boot was uploaded to
5143 unstable yesterday. When we tested it, we were able to cut 6 seconds
5144 from the boot sequence. It depend on very correct dependency
5145 declaration in all init.d scripts, so I expect us to find edge cases
5146 where the dependences in some scripts are slightly wrong when we start
5147 using this.</p>
5148
5149 <p>On our IRC channel for this effort, #pkg-sysvinit, a new idea was
5150 introduced by Raphael Geissert today, one that could affect the
5151 startup speed as well. Instead of starting some scripts concurrently
5152 from rcS.d/ and another set of scripts from rc2.d/, it would be
5153 possible to run a of them in the same process. A quick way to test
5154 this would be to enable insserv and run 'mv /etc/rc2.d/S* /etc/rcS.d/;
5155 insserv'. Will need to test if that work. :)</p>
5156
5157 </div>
5158 <div class="tags">
5159
5160
5161 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>.
5162
5163
5164 </div>
5165 </div>
5166 <div class="padding"></div>
5167
5168 <div class="entry">
5169 <div class="title">
5170 <a href="http://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html">BSAs påstander om piratkopiering møter motstand</a>
5171 </div>
5172 <div class="date">
5173 17th May 2009
5174 </div>
5175 <div class="body">
5176 <p>Hvert år de siste årene har BSA, lobbyfronten til de store
5177 programvareselskapene som Microsoft og Apple, publisert en rapport der
5178 de gjetter på hvor mye piratkopiering påfører i tapte inntekter i
5179 ulike land rundt om i verden. Resultatene er tendensiøse. For noen
5180 dager siden kom
5181 <a href="http://global.bsa.org/globalpiracy2008/studies/globalpiracy2008.pdf">siste
5182 rapport</a>, og det er flere kritiske kommentarer publisert de siste
5183 dagene. Et spesielt interessant kommentar fra Sverige,
5184 <a href="http://www.idg.se/2.1085/1.229795/bsa-hoftade-sverigesiffror">BSA
5185 höftade Sverigesiffror</a>, oppsummeres slik:</p>
5186
5187 <blockquote>
5188 I sin senaste rapport slår BSA fast att 25 procent av all mjukvara i
5189 Sverige är piratkopierad. Det utan att ha pratat med ett enda svenskt
5190 företag. "Man bör nog kanske inte se de här siffrorna som helt
5191 exakta", säger BSAs Sverigechef John Hugosson.
5192 </blockquote>
5193
5194 <p>Mon tro om de er like metodiske når de gjetter på andelen piratkopiering i Norge? To andre kommentarer er <a
5195 href="http://www.vnunet.com/vnunet/comment/2242134/bsa-piracy-figures-shot-reality">BSA
5196 piracy figures need a shot of reality</a> og <a
5197 href="http://www.michaelgeist.ca/content/view/3958/125/">Does The WIPO
5198 Copyright Treaty Work?</a></p>
5199
5200 <p>Fant lenkene via <a
5201 href="http://tech.slashdot.org/article.pl?sid=09/05/17/1632242">oppslag
5202 på Slashdot</a>.</p>
5203
5204 </div>
5205 <div class="tags">
5206
5207
5208 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>.
5209
5210
5211 </div>
5212 </div>
5213 <div class="padding"></div>
5214
5215 <div class="entry">
5216 <div class="title">
5217 <a href="http://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html">IDG mener linux i servermarkedet vil vokse med 21% i 2009</a>
5218 </div>
5219 <div class="date">
5220 7th May 2009
5221 </div>
5222 <div class="body">
5223 <p>Kom over
5224 <a href="http://news.cnet.com/8301-13505_3-10216873-16.html">interessante
5225 tall</a> fra IDG om utviklingen av linuxservermarkedet. Fikk meg til
5226 å tenke på antall tjenermaskiner ved Universitetet i Oslo der jeg
5227 jobber til daglig. En rask opptelling forteller meg at vi har 490
5228 (61%) fysiske unix-tjener (mest linux men også noen solaris) og 196
5229 (25%) windowstjenere, samt 112 (14%) virtuelle unix-tjenere. Med den
5230 bakgrunnskunnskapen kan jeg godt tro at IDG er inne på noe.</p>
5231
5232 </div>
5233 <div class="tags">
5234
5235
5236 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5237
5238
5239 </div>
5240 </div>
5241 <div class="padding"></div>
5242
5243 <div class="entry">
5244 <div class="title">
5245 <a href="http://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html">Kryptert harddisk - naturligvis</a>
5246 </div>
5247 <div class="date">
5248 2nd May 2009
5249 </div>
5250 <div class="body">
5251 <p><a href="http://www.dagensit.no/trender/article1658676.ece">Dagens
5252 IT melder</a> at Intel hevder at det er dyrt å miste en datamaskin,
5253 når en tar tap av arbeidstid, fortrolige dokumenter,
5254 personopplysninger og alt annet det innebærer. Det er ingen tvil om
5255 at det er en kostbar affære å miste sin datamaskin, og det er årsaken
5256 til at jeg har kryptert harddisken på både kontormaskinen og min
5257 bærbare. Begge inneholder personopplysninger jeg ikke ønsker skal
5258 komme på avveie, den første informasjon relatert til jobben min ved
5259 Universitetet i Oslo, og den andre relatert til blant annet
5260 foreningsarbeide. Kryptering av diskene gjør at det er lite
5261 sannsynlig at dophoder som kan finne på å rappe maskinene får noe ut
5262 av dem. Maskinene låses automatisk etter noen minutter uten bruk,
5263 og en reboot vil gjøre at de ber om passord før de vil starte opp.
5264 Jeg bruker Debian på begge maskinene, og installasjonssystemet der
5265 gjør det trivielt å sette opp krypterte disker. Jeg har LVM på toppen
5266 av krypterte partisjoner, slik at alt av datapartisjoner er kryptert.
5267 Jeg anbefaler alle å kryptere diskene på sine bærbare. Kostnaden når
5268 det er gjort slik jeg gjør det er minimale, og gevinstene er
5269 betydelige. En bør dog passe på passordet. Hvis det går tapt, må
5270 maskinen reinstalleres og alt er tapt.</p>
5271
5272 <p>Krypteringen vil ikke stoppe kompetente angripere som f.eks. kjøler
5273 ned minnebrikkene før maskinen rebootes med programvare for å hente ut
5274 krypteringsnøklene. Kostnaden med å forsvare seg mot slike angripere
5275 er for min del høyere enn gevinsten. Jeg tror oddsene for at
5276 f.eks. etteretningsorganisasjoner har glede av å titte på mine
5277 maskiner er minimale, og ulempene jeg ville oppnå ved å forsøke å
5278 gjøre det vanskeligere for angripere med kompetanse og ressurser er
5279 betydelige.</p>
5280
5281 </div>
5282 <div class="tags">
5283
5284
5285 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
5286
5287
5288 </div>
5289 </div>
5290 <div class="padding"></div>
5291
5292 <div class="entry">
5293 <div class="title">
5294 <a href="http://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html">Two projects that have improved the quality of free software a lot</a>
5295 </div>
5296 <div class="date">
5297 2nd May 2009
5298 </div>
5299 <div class="body">
5300 <p>There are two software projects that have had huge influence on the
5301 quality of free software, and I wanted to mention both in case someone
5302 do not yet know them.</p>
5303
5304 <p>The first one is <a href="http://valgrind.org/">valgrind</a>, a
5305 tool to detect and expose errors in the memory handling of programs.
5306 It is easy to use, all one need to do is to run 'valgrind program',
5307 and it will report any problems on stdout. It is even better if the
5308 program include debug information. With debug information, it is able
5309 to report the source file name and line number where the problem
5310 occurs. It can report things like 'reading past memory block in file
5311 X line N, the memory block was allocated in file Y, line M', and
5312 'using uninitialised value in control logic'. This tool has made it
5313 trivial to investigate reproducible crash bugs in programs, and have
5314 reduced the number of this kind of bugs in free software a lot.
5315
5316 <p>The second one is
5317 <a href="http://en.wikipedia.org/wiki/Coverity">Coverity</a> which is
5318 a source code checker. It is able to process the source of a program
5319 and find problems in the logic without running the program. It
5320 started out as the Stanford Checker and became well known when it was
5321 used to find bugs in the Linux kernel. It is now a commercial tool
5322 and the company behind it is running
5323 <a href="http://www.scan.coverity.com/">a community service</a> for the
5324 free software community, where a lot of free software projects get
5325 their source checked for free. Several thousand defects have been
5326 found and fixed so far. It can find errors like 'lock L taken in file
5327 X line N is never released if exiting in line M', or 'the code in file
5328 Y lines O to P can never be executed'. The projects included in the
5329 community service project have managed to get rid of a lot of
5330 reliability problems thanks to Coverity.</p>
5331
5332 <p>I believe tools like this, that are able to automatically find
5333 errors in the source, are vital to improve the quality of software and
5334 make sure we can get rid of the crashing and failing software we are
5335 surrounded by today.</p>
5336
5337 </div>
5338 <div class="tags">
5339
5340
5341 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
5342
5343
5344 </div>
5345 </div>
5346 <div class="padding"></div>
5347
5348 <div class="entry">
5349 <div class="title">
5350 <a href="http://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html">No patch is not better than a useless patch</a>
5351 </div>
5352 <div class="date">
5353 28th April 2009
5354 </div>
5355 <div class="body">
5356 <p>Julien Blache
5357 <a href="http://blog.technologeek.org/2009/04/12/214">claim that no
5358 patch is better than a useless patch</a>. I completely disagree, as a
5359 patch allow one to discuss a concrete and proposed solution, and also
5360 prove that the issue at hand is important enough for someone to spent
5361 time on fixing it. No patch do not provide any of these positive
5362 properties.</p>
5363
5364 </div>
5365 <div class="tags">
5366
5367
5368 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5369
5370
5371 </div>
5372 </div>
5373 <div class="padding"></div>
5374
5375 <div class="entry">
5376 <div class="title">
5377 <a href="http://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html">Standardize on protocols and formats, not vendors and applications</a>
5378 </div>
5379 <div class="date">
5380 30th March 2009
5381 </div>
5382 <div class="body">
5383 <p>Where I work at the University of Oslo, one decision stand out as a
5384 very good one to form a long lived computer infrastructure. It is the
5385 simple one, lost by many in todays computer industry: Standardize on
5386 open network protocols and open exchange/storage formats, not applications.
5387 Applications come and go, while protocols and files tend to stay, and
5388 thus one want to make it easy to change application and vendor, while
5389 avoiding conversion costs and locking users to a specific platform or
5390 application.</p>
5391
5392 <p>This approach make it possible to replace the client applications
5393 independently of the server applications. One can even allow users to
5394 use several different applications as long as they handle the selected
5395 protocol and format. In the normal case, only one client application
5396 is recommended and users only get help if they choose to use this
5397 application, but those that want to deviate from the easy path are not
5398 blocked from doing so.</p>
5399
5400 <p>It also allow us to replace the server side without forcing the
5401 users to replace their applications, and thus allow us to select the
5402 best server implementation at any moment, when scale and resouce
5403 requirements change.</p>
5404
5405 <p>I strongly recommend standardizing - on open network protocols and
5406 open formats, but I would never recommend standardizing on a single
5407 application that do not use open network protocol or open formats.</p>
5408
5409 </div>
5410 <div class="tags">
5411
5412
5413 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/standard">standard</a>.
5414
5415
5416 </div>
5417 </div>
5418 <div class="padding"></div>
5419
5420 <div class="entry">
5421 <div class="title">
5422 <a href="http://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html">Returning from Skolelinux developer gathering</a>
5423 </div>
5424 <div class="date">
5425 29th March 2009
5426 </div>
5427 <div class="body">
5428 <p>I'm sitting on the train going home from this weekends Debian
5429 Edu/Skolelinux development gathering. I got a bit done tuning the
5430 desktop, and looked into the dynamic service location protocol
5431 implementation avahi. It look like it could be useful for us. Almost
5432 30 people participated, and I believe it was a great environment to
5433 get to know the Skolelinux system. Walter Bender, involved in the
5434 development of the Sugar educational platform, presented his stuff and
5435 also helped me improve my OLPC installation. He also showed me that
5436 his Turtle Art application can be used in standalone mode, and we
5437 agreed that I would help getting it packaged for Debian. As a
5438 standalone application it would be great for Debian Edu. We also
5439 tried to get the video conferencing working with two OLPCs, but that
5440 proved to be too hard for us. The application seem to need more work
5441 before it is ready for me. I look forward to getting home and relax
5442 now. :)</p>
5443
5444 </div>
5445 <div class="tags">
5446
5447
5448 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5449
5450
5451 </div>
5452 </div>
5453 <div class="padding"></div>
5454
5455 <div class="entry">
5456 <div class="title">
5457 <a href="http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">Time for new LDAP schemas replacing RFC 2307?</a>
5458 </div>
5459 <div class="date">
5460 29th March 2009
5461 </div>
5462 <div class="body">
5463 <p>The state of standardized LDAP schemas on Linux is far from
5464 optimal. There is RFC 2307 documenting one way to store NIS maps in
5465 LDAP, and a modified version of this normally called RFC 2307bis, with
5466 some modifications to be compatible with Active Directory. The RFC
5467 specification handle the content of a lot of system databases, but do
5468 not handle DNS zones and DHCP configuration.</p>
5469
5470 <p>In <a href="http://www.skolelinux.org/">Debian Edu/Skolelinux</a>,
5471 we would like to store information about users, SMB clients/hosts,
5472 filegroups, netgroups (users and hosts), DHCP and DNS configuration,
5473 and LTSP configuration in LDAP. These objects have a lot in common,
5474 but with the current LDAP schemas it is not possible to have one
5475 object per entity. For example, one need to have at least three LDAP
5476 objects for a given computer, one with the SMB related stuff, one with
5477 DNS information and another with DHCP information. The schemas
5478 provided for DNS and DHCP are impossible to combine into one LDAP
5479 object. In addition, it is impossible to implement quick queries for
5480 netgroup membership, because of the way NIS triples are implemented.
5481 It just do not scale. I believe it is time for a few RFC
5482 specifications to cleam up this mess.</p>
5483
5484 <p>I would like to have one LDAP object representing each computer in
5485 the network, and this object can then keep the SMB (ie host key), DHCP
5486 (mac address/name) and DNS (name/IP address) settings in one place.
5487 It need to be efficently stored to make sure it scale well.</p>
5488
5489 <p>I would also like to have a quick way to map from a user or
5490 computer and to the net group this user or computer is a member.</p>
5491
5492 <p>Active Directory have done a better job than unix heads like myself
5493 in this regard, and the unix side need to catch up. Time to start a
5494 new IETF work group?</p>
5495
5496 </div>
5497 <div class="tags">
5498
5499
5500 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
5501
5502
5503 </div>
5504 </div>
5505 <div class="padding"></div>
5506
5507 <div class="entry">
5508 <div class="title">
5509 <a href="http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html">Endelig er Debian Lenny gitt ut</a>
5510 </div>
5511 <div class="date">
5512 15th February 2009
5513 </div>
5514 <div class="body">
5515 <p>Endelig er <a href="http://www.debian.org/">Debian</a>
5516 <a href="http://www.debian.org/News/2009/20090214">Lenny</a> gitt ut.
5517 Et langt steg videre for Debian-prosjektet, og en rekke nye
5518 programpakker blir nå tilgjengelig for de av oss som bruker den
5519 stabile utgaven av Debian. Neste steg er nå å få
5520 <a href="http://www.skolelinux.org/">Skolelinux</a> /
5521 <a href="http://wiki.debian.org/DebianEdu/">Debian Edu</a> ferdig
5522 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
5523 slippes løs på skolene. Takk til alle debian-utviklerne som har
5524 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
5525 bootsekvens tilgjengelig i stabil utgave, vha pakken
5526 <tt>insserv</tt>.</p>
5527
5528 </div>
5529 <div class="tags">
5530
5531
5532 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.
5533
5534
5535 </div>
5536 </div>
5537 <div class="padding"></div>
5538
5539 <div class="entry">
5540 <div class="title">
5541 <a href="http://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html">Devcamp brought us closer to the Lenny based Debian Edu release</a>
5542 </div>
5543 <div class="date">
5544 7th December 2008
5545 </div>
5546 <div class="body">
5547 <p>This weekend we had a small developer gathering for Debian Edu in
5548 Oslo. Most of Saturday was used for the general assemly for the
5549 member organization, but the rest of the weekend I used to tune the
5550 LTSP installation. LTSP now work out of the box on the 10-network.
5551 Acer Aspire One proved to be a very nice thin client, with both
5552 screen, mouse and keybard in a small box. Was working on getting the
5553 diskless workstation setup configured out of the box, but did not
5554 finish it before the weekend was up.</p>
5555
5556 <p>Did not find time to look at the 4 VGA cards in one box we got from
5557 the Brazilian group, so that will have to wait for the next
5558 development gathering. Would love to have the Debian Edu installer
5559 automatically detect and configure a multiseat setup when it find one
5560 of these cards.</p>
5561
5562 </div>
5563 <div class="tags">
5564
5565
5566 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp</a>.
5567
5568
5569 </div>
5570 </div>
5571 <div class="padding"></div>
5572
5573 <div class="entry">
5574 <div class="title">
5575 <a href="http://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html">The sorry state of multimedia browser plugins in Debian</a>
5576 </div>
5577 <div class="date">
5578 25th November 2008
5579 </div>
5580 <div class="body">
5581 <p>Recently I have spent some time evaluating the multimedia browser
5582 plugins available in Debian Lenny, to see which one we should use by
5583 default in Debian Edu. We need an embedded video playing plugin with
5584 control buttons to pause or stop the video, and capable of streaming
5585 all the multimedia content available on the web. The test results and
5586 notes are available on
5587 <a href="http://wiki.debian.org/DebianEdu/BrowserMultimedia">the
5588 Debian wiki</a>. I was surprised how few of the plugins are able to
5589 fill this need. My personal video player favorite, VLC, has a really
5590 bad plugin which fail on a lot of the test pages. A lot of the MIME
5591 types I would expect to work with any free software player (like
5592 video/ogg), just do not work. And simple formats like the
5593 audio/x-mplegurl format (m3u playlists), just isn't supported by the
5594 totem and vlc plugins. I hope the situation will improve soon. No
5595 wonder sites use the proprietary Adobe flash to play video.</p>
5596
5597 <p>For Lenny, we seem to end up with the mplayer plugin. It seem to
5598 be the only one fitting our needs. :/</p>
5599
5600 </div>
5601 <div class="tags">
5602
5603
5604 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
5605
5606
5607 </div>
5608 </div>
5609 <div class="padding"></div>
5610
5611 <p style="text-align: right;"><a href="debian.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
5612 <div id="sidebar">
5613
5614
5615
5616 <h2>Archive</h2>
5617 <ul>
5618
5619 <li>2013
5620 <ul>
5621
5622 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
5623
5624 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
5625
5626 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
5627
5628 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (3)</a></li>
5629
5630 </ul></li>
5631
5632 <li>2012
5633 <ul>
5634
5635 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
5636
5637 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
5638
5639 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
5640
5641 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
5642
5643 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
5644
5645 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
5646
5647 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
5648
5649 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
5650
5651 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
5652
5653 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
5654
5655 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
5656
5657 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
5658
5659 </ul></li>
5660
5661 <li>2011
5662 <ul>
5663
5664 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
5665
5666 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
5667
5668 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
5669
5670 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
5671
5672 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
5673
5674 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
5675
5676 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
5677
5678 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
5679
5680 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
5681
5682 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
5683
5684 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
5685
5686 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
5687
5688 </ul></li>
5689
5690 <li>2010
5691 <ul>
5692
5693 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
5694
5695 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
5696
5697 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
5698
5699 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
5700
5701 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
5702
5703 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
5704
5705 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
5706
5707 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
5708
5709 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
5710
5711 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
5712
5713 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
5714
5715 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
5716
5717 </ul></li>
5718
5719 <li>2009
5720 <ul>
5721
5722 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
5723
5724 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
5725
5726 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
5727
5728 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
5729
5730 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
5731
5732 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
5733
5734 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
5735
5736 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
5737
5738 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
5739
5740 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
5741
5742 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
5743
5744 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
5745
5746 </ul></li>
5747
5748 <li>2008
5749 <ul>
5750
5751 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
5752
5753 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
5754
5755 </ul></li>
5756
5757 </ul>
5758
5759
5760
5761 <h2>Tags</h2>
5762 <ul>
5763
5764 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
5765
5766 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
5767
5768 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
5769
5770 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
5771
5772 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (6)</a></li>
5773
5774 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
5775
5776 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
5777
5778 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (71)</a></li>
5779
5780 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (121)</a></li>
5781
5782 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
5783
5784 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (9)</a></li>
5785
5786 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
5787
5788 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (186)</a></li>
5789
5790 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
5791
5792 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
5793
5794 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (11)</a></li>
5795
5796 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (11)</a></li>
5797
5798 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (33)</a></li>
5799
5800 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (6)</a></li>
5801
5802 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (18)</a></li>
5803
5804 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
5805
5806 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
5807
5808 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
5809
5810 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
5811
5812 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (229)</a></li>
5813
5814 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (151)</a></li>
5815
5816 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (7)</a></li>
5817
5818 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
5819
5820 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (44)</a></li>
5821
5822 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (65)</a></li>
5823
5824 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
5825
5826 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
5827
5828 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
5829
5830 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (6)</a></li>
5831
5832 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
5833
5834 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
5835
5836 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
5837
5838 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (29)</a></li>
5839
5840 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
5841
5842 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
5843
5844 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (42)</a></li>
5845
5846 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
5847
5848 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (6)</a></li>
5849
5850 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (15)</a></li>
5851
5852 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
5853
5854 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (7)</a></li>
5855
5856 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (38)</a></li>
5857
5858 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
5859
5860 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (26)</a></li>
5861
5862 </ul>
5863
5864
5865 </div>
5866 <p style="text-align: right">
5867 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
5868 </p>
5869
5870 </body>
5871 </html>