]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[homepage.git] / blog / 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</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="http://people.skolelinux.org/pere/blog/index.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
22 <div class="entry">
23 <div class="title"><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></div>
24 <div class="date">21st January 2013</div>
25 <div class="body"><p>Early this month I set out to try to
26 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">improve
27 the Debian support for pluggable hardware devices</a>. Now my
28 prototype is working, and it is ready for a larger audience. To test
29 it, fetch the
30 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">source
31 from the Debian Edu subversion repository</a>, build and install the
32 package. You might have to log out and in again activate the
33 autostart script.</p>
34
35 <p>The design is simple:</p>
36
37 <ul>
38
39 <li>Add desktop entry in /usr/share/autostart/ causing a program
40 hw-support-handlerd to start when the user log in.</li>
41
42 <li>This program listen for kernel events about new hardware (directly
43 from the kernel like udev does), not using HAL dbus events as I
44 initially did.</li>
45
46 <li>When new hardware is inserted, look up the hardware modalias in
47 the APT database, a database
48 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup">available
49 via HTTP</a> and a database available as part of the package.</li>
50
51 <li>If a package is mapped to the hardware in question, the package
52 isn't installed yet and this is the first time the hardware was
53 plugged in, show a desktop notification suggesting to install the
54 package or packages.</li>
55
56 <li>If the user click on the 'install package now' button, ask
57 aptdaemon via the PackageKit API to install the requrired package.</li>
58
59 <li>aptdaemon ask for root password or sudo password, and install the
60 package while showing progress information in a window.</li>
61
62 </ul>
63
64 <p>I still need to come up with a better name for the system. Here
65 are some screen shots showing the prototype in action. First the
66 notification, then the password request, and finally the request to
67 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.</p>
68
69 <p><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png">
70 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png">
71 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png">
72 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png">
73 <br><img src="http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png" width="70%"></p>
74
75 <p>The prototype still need to be improved with longer timeouts, but
76 is already useful. The database of hardware to package mappings also
77 need more work. It is currently compatible with the Ubuntu way of
78 storing such information in the package control file, but could be
79 changed to use other formats instead or in addition to the current
80 method. I've dropped the use of discover for this mapping, as the
81 modalias approach is more flexible and easier to use on Linux as long
82 as the Linux kernel expose its modalias strings directly.</p>
83 </div>
84 <div class="tags">
85
86
87 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>.
88
89
90 </div>
91 </div>
92 <div class="padding"></div>
93
94 <div class="entry">
95 <div class="title"><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></div>
96 <div class="date">19th January 2013</div>
97 <div class="body"><p>This Christmas my trusty old laptop died. It died quietly and
98 suddenly in bed. With a quiet whimper, it went completely quiet and
99 black. The power button was no longer able to turn it on. It was a
100 IBM Thinkpad X41, and the best laptop I ever had. Better than both
101 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
102 Compaq I had before that. Now I need to find a replacement. To keep
103 going during Christmas, I moved the one year old SSD disk to my old
104 X40 where it fitted (only one I had left that could use it), but it is
105 not a durable solution.
106
107 <p>My laptop needs are fairly modest. This is my wishlist from when I
108 got a new one more than 10 years ago. It still holds true.:)</p>
109
110 <ul>
111
112 <li>Lightweight (around 1 kg) and small volume (preferably smaller
113 than A4).</li>
114 <li>Robust, it will be in my backpack every day.</li>
115 <li>Three button mouse and a mouse pin instead of touch pad.</li>
116 <li>Long battery life time. Preferable a week.</li>
117 <li>Internal WIFI network card.</li>
118 <li>Internal Twisted Pair network card.</li>
119 <li>Some USB slots (2-3 is plenty)</li>
120 <li>Good keyboard - similar to the Thinkpad.</li>
121 <li>Video resolution at least 1024x768, with size around 12" (A4 paper
122 size).</li>
123 <li>Hardware supported by Debian Stable, ie the default kernel and
124 X.org packages.</li>
125 <li>Quiet, preferably fan free (or at least not using the fan most of
126 the time).
127
128 </ul>
129
130 <p>You will notice that there are no RAM and CPU requirements in the
131 list. The reason is simply that the specifications on laptops the
132 last 10-15 years have been sufficient for my needs, and I have to look
133 at other features to choose my laptop. But are there still made as
134 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
135 robust, and Thinkpads seem to be heading in the wrong direction since
136 Lenovo took over. But I've been told that X220 and X1 Carbon might
137 still be useful.</p>
138
139 <p>Perhaps I should rethink my needs, and look for a pad with an
140 external keyboard? I'll have to check the
141 <a href="http://www.linux-laptop.net/">Linux Laptops site</a> for
142 well-supported laptops, or perhaps just buy one preinstalled from one
143 of the vendors listed on the <a href="http://linuxpreloaded.com/">Linux
144 Pre-loaded site</a>.</p>
145 </div>
146 <div class="tags">
147
148
149 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>.
150
151
152 </div>
153 </div>
154 <div class="padding"></div>
155
156 <div class="entry">
157 <div class="title"><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></div>
158 <div class="date">18th January 2013</div>
159 <div class="body"><p>Some times I try to figure out which Iceweasel browser plugin to
160 install to get support for a given MIME type. Thanks to
161 <a href="https://wiki.ubuntu.com/MozillaTeam/Plugins">specifications
162 done by Ubuntu</a> and Mozilla, it is possible to do this in Debian.
163 Unfortunately, not very many packages provide the needed meta
164 information, Anyway, here is a small script to look up all browser
165 plugin packages announcing ther MIME support using this specification:</p>
166
167 <pre>
168 #!/usr/bin/python
169 import sys
170 import apt
171 def pkgs_handling_mimetype(mimetype):
172 cache = apt.Cache()
173 cache.open(None)
174 thepkgs = []
175 for pkg in cache:
176 version = pkg.candidate
177 if version is None:
178 version = pkg.installed
179 if version is None:
180 continue
181 record = version.record
182 if not record.has_key('Npp-MimeType'):
183 continue
184 mime_types = record['Npp-MimeType'].split(',')
185 for t in mime_types:
186 t = t.rstrip().strip()
187 if t == mimetype:
188 thepkgs.append(pkg.name)
189 return thepkgs
190 mimetype = "audio/ogg"
191 if 1 < len(sys.argv):
192 mimetype = sys.argv[1]
193 print "Browser plugin packages supporting %s:" % mimetype
194 for pkg in pkgs_handling_mimetype(mimetype):
195 print " %s" %pkg
196 </pre>
197
198 <p>It can be used like this to look up a given MIME type:</p>
199
200 <pre>
201 % ./apt-find-browserplug-for-mimetype
202 Browser plugin packages supporting audio/ogg:
203 gecko-mediaplayer
204 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
205 Browser plugin packages supporting application/x-shockwave-flash:
206 browser-plugin-gnash
207 %
208 </pre>
209
210 <p>In Ubuntu this mechanism is combined with support in the browser
211 itself to query for plugins and propose to install the needed
212 packages. It would be great if Debian supported such feature too. Is
213 anyone working on adding it?</p>
214
215 <p><strong>Update 2013-01-18 14:20</strong>: The Debian BTS
216 request for icweasel support for this feature is
217 <a href="http://bugs.debian.org/484010">#484010</a> from 2008 (and
218 <a href="http://bugs.debian.org/698426">#698426</a> from today). Lack
219 of manpower and wish for a different design is the reason thus feature
220 is not yet in iceweasel from Debian.</p>
221 </div>
222 <div class="tags">
223
224
225 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>.
226
227
228 </div>
229 </div>
230 <div class="padding"></div>
231
232 <div class="entry">
233 <div class="title"><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></div>
234 <div class="date">16th January 2013</div>
235 <div class="body"><p>The <a href="http://wiki.debian.org/AppStreamDebianProposal">DEP-11
236 proposal to add AppStream information to the Debian archive</a>, is a
237 proposal to make it possible for a Desktop application to propose to
238 the user some package to install to gain support for a given MIME
239 type, font, library etc. that is currently missing. With such
240 mechanism in place, it would be possible for the desktop to
241 automatically propose and install leocad if some LDraw file is
242 downloaded by the browser.</p>
243
244 <p>To get some idea about the current content of the archive, I decided
245 to write a simple program to extract all .desktop files from the
246 Debian archive and look up the claimed MIME support there. The result
247 can be found on the
248 <a href="http://ftp.skolelinux.org/pub/AppStreamTest">Skolelinux FTP
249 site</a>. Using the collected information, it become possible to
250 answer the question in the title. Here are the 20 most supported MIME
251 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
252 The complete list is available from the link above.</p>
253
254 <p><strong>Debian Stable:</strong></p>
255
256 <pre>
257 count MIME type
258 ----- -----------------------
259 32 text/plain
260 30 audio/mpeg
261 29 image/png
262 28 image/jpeg
263 27 application/ogg
264 26 audio/x-mp3
265 25 image/tiff
266 25 image/gif
267 22 image/bmp
268 22 audio/x-wav
269 20 audio/x-flac
270 19 audio/x-mpegurl
271 18 video/x-ms-asf
272 18 audio/x-musepack
273 18 audio/x-mpeg
274 18 application/x-ogg
275 17 video/mpeg
276 17 audio/x-scpls
277 17 audio/ogg
278 16 video/x-ms-wmv
279 </pre>
280
281 <p><strong>Debian Testing:</strong></p>
282
283 <pre>
284 count MIME type
285 ----- -----------------------
286 33 text/plain
287 32 image/png
288 32 image/jpeg
289 29 audio/mpeg
290 27 image/gif
291 26 image/tiff
292 26 application/ogg
293 25 audio/x-mp3
294 22 image/bmp
295 21 audio/x-wav
296 19 audio/x-mpegurl
297 19 audio/x-mpeg
298 18 video/mpeg
299 18 audio/x-scpls
300 18 audio/x-flac
301 18 application/x-ogg
302 17 video/x-ms-asf
303 17 text/html
304 17 audio/x-musepack
305 16 image/x-xbitmap
306 </pre>
307
308 <p><strong>Debian Unstable:</strong></p>
309
310 <pre>
311 count MIME type
312 ----- -----------------------
313 31 text/plain
314 31 image/png
315 31 image/jpeg
316 29 audio/mpeg
317 28 application/ogg
318 27 image/gif
319 26 image/tiff
320 26 audio/x-mp3
321 23 audio/x-wav
322 22 image/bmp
323 21 audio/x-flac
324 20 audio/x-mpegurl
325 19 audio/x-mpeg
326 18 video/x-ms-asf
327 18 video/mpeg
328 18 audio/x-scpls
329 18 application/x-ogg
330 17 audio/x-musepack
331 16 video/x-ms-wmv
332 16 video/x-msvideo
333 </pre>
334
335 <p>I am told that PackageKit can provide an API to access the kind of
336 information mentioned in DEP-11. I have not yet had time to look at
337 it, but hope the PackageKit people in Debian are on top of these
338 issues.</p>
339
340 <p><strong>Update 2013-01-16 13:35</strong>: Updated numbers after
341 discovering a typo in my script.</p>
342 </div>
343 <div class="tags">
344
345
346 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>.
347
348
349 </div>
350 </div>
351 <div class="padding"></div>
352
353 <div class="entry">
354 <div class="title"><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></div>
355 <div class="date">15th January 2013</div>
356 <div class="body"><p>Yesterday, I wrote about the
357 <a href="http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">modalias
358 values provided by the Linux kernel</a> following my hope for
359 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">better
360 dongle support in Debian</a>. Using this knowledge, I have tested how
361 modalias values attached to package names can be used to map packages
362 to hardware. This allow the system to look up and suggest relevant
363 packages when I plug in some new hardware into my machine, and replace
364 discover and discover-data as the database used to map hardware to
365 packages.</p>
366
367 <p>I create a modaliases file with entries like the following,
368 containing package name, kernel module name (if relevant, otherwise
369 the package name) and globs matching the relevant hardware
370 modalias.</p>
371
372 <p><blockquote>
373 Package: package-name
374 <br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)</p>
375 </blockquote></p>
376
377 <p>It is fairly trivial to write code to find the relevant packages
378 for a given modalias value using this file.</p>
379
380 <p>An entry like this would suggest the video and picture application
381 cheese for many USB web cameras (interface bus class 0E01):</p>
382
383 <p><blockquote>
384 Package: cheese
385 <br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)</p>
386 </blockquote></p>
387
388 <p>An entry like this would suggest the pcmciautils package when a
389 CardBus bridge (bus class 0607) PCI device is present:</p>
390
391 <p><blockquote>
392 Package: pcmciautils
393 <br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
394 </blockquote></p>
395
396 <p>An entry like this would suggest the package colorhug-client when
397 plugging in a ColorHug with USB IDs 04D8:F8DA:</p>
398
399 <p><blockquote>
400 Package: colorhug-client
401 <br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)</p>
402 </blockquote></p>
403
404 <p>I believe the format is compatible with the format of the Packages
405 file in the Debian archive. Ubuntu already uses their Packages file
406 to store their mappings from packages to hardware.</p>
407
408 <p>By adding a XB-Modaliases: header in debian/control, any .deb can
409 announce the hardware it support in a way my prototype understand.
410 This allow those publishing packages in an APT source outside the
411 Debian archive as well as those backporting packages to make sure the
412 hardware mapping are included in the package meta information. I've
413 tested such header in the pymissile package, and its modalias mapping
414 is working as it should with my prototype. It even made it to Ubuntu
415 Raring.</p>
416
417 <p>To test if it was possible to look up supported hardware using only
418 the shell tools available in the Debian installer, I wrote a shell
419 implementation of the lookup code. The idea is to create files for
420 each modalias and let the shell do the matching. Please check out and
421 try the
422 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co">hw-support-lookup</a>
423 shell script. It run without any extra dependencies and fetch the
424 hardware mappings from the Debian archive and the subversion
425 repository where I currently work on my prototype.</p>
426
427 <p>When I use it on a machine with a yubikey inserted, it suggest to
428 install yubikey-personalization:</p>
429
430 <p><blockquote>
431 % ./hw-support-lookup
432 <br>yubikey-personalization
433 <br>%
434 </blockquote></p>
435
436 <p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
437 propose to install the pcmciautils package:</p>
438
439 <p><blockquote>
440 % ./hw-support-lookup
441 <br>pcmciautils
442 <br>%
443 </blockquote></p>
444
445 <p>If you know of any hardware-package mapping that should be added to
446 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co">my
447 database</a>, please tell me about it.</p>
448
449 <p>It could be possible to generate several of the mappings between
450 packages and hardware. One source would be to look at packages with
451 kernel modules, ie packages with *.ko files in /lib/modules/, and
452 extract their modalias information. Another would be to look at
453 packages with udev rules, ie packages with files in
454 /lib/udev/rules.d/, and extract their vendor/model information to
455 generate a modalias matching rule. I have not tested any of these to
456 see if it work.</p>
457
458 <p>If you want to help implementing a system to let us propose what
459 packages to install when new hardware is plugged into a Debian
460 machine, please send me an email or talk to me on
461 <a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
462 </div>
463 <div class="tags">
464
465
466 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>.
467
468
469 </div>
470 </div>
471 <div class="padding"></div>
472
473 <div class="entry">
474 <div class="title"><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></div>
475 <div class="date">14th January 2013</div>
476 <div class="body"><p>While looking into how to look up Debian packages based on hardware
477 information, to find the packages that support a given piece of
478 hardware, I refreshed my memory regarding modalias values, and decided
479 to document the details. Here are my findings so far, also available
480 in
481 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
482 Debian Edu subversion repository</a>:
483
484 <p><strong>Modalias decoded</strong></p>
485
486 <p>This document try to explain what the different types of modalias
487 values stands for. It is in part based on information from
488 &lt;URL: <a href="https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias</a> &gt;,
489 &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;,
490 &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
491 &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;.
492
493 <p>The modalias entries for a given Linux machine can be found using
494 this shell script:</p>
495
496 <pre>
497 find /sys -name modalias -print0 | xargs -0 cat | sort -u
498 </pre>
499
500 <p>The supported modalias globs for a given kernel module can be found
501 using modinfo:</p>
502
503 <pre>
504 % /sbin/modinfo psmouse | grep alias:
505 alias: serio:ty05pr*id*ex*
506 alias: serio:ty01pr*id*ex*
507 %
508 </pre>
509
510 <p><strong>PCI subtype</strong></p>
511
512 <p>A typical PCI entry can look like this. This is an Intel Host
513 Bridge memory controller:</p>
514
515 <p><blockquote>
516 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
517 </blockquote></p>
518
519 <p>This represent these values:</p>
520
521 <pre>
522 v 00008086 (vendor)
523 d 00002770 (device)
524 sv 00001028 (subvendor)
525 sd 000001AD (subdevice)
526 bc 06 (bus class)
527 sc 00 (bus subclass)
528 i 00 (interface)
529 </pre>
530
531 <p>The vendor/device values are the same values outputted from 'lspci
532 -n' as 8086:2770. The bus class/subclass is also shown by lspci as
533 0600. The 0600 class is a host bridge. Other useful bus values are
534 0300 (VGA compatible card) and 0200 (Ethernet controller).</p>
535
536 <p>Not sure how to figure out the interface value, nor what it
537 means.</p>
538
539 <p><strong>USB subtype</strong></p>
540
541 <p>Some typical USB entries can look like this. This is an internal
542 USB hub in a laptop:</p>
543
544 <p><blockquote>
545 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
546 </blockquote></p>
547
548 <p>Here is the values included in this alias:</p>
549
550 <pre>
551 v 1D6B (device vendor)
552 p 0001 (device product)
553 d 0206 (bcddevice)
554 dc 09 (device class)
555 dsc 00 (device subclass)
556 dp 00 (device protocol)
557 ic 09 (interface class)
558 isc 00 (interface subclass)
559 ip 00 (interface protocol)
560 </pre>
561
562 <p>The 0900 device class/subclass means hub. Some times the relevant
563 class is in the interface class section. For a simple USB web camera,
564 these alias entries show up:</p>
565
566 <p><blockquote>
567 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
568 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
569 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
570 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
571 </blockquote></p>
572
573 <p>Interface class 0E01 is video control, 0E02 is video streaming (aka
574 camera), 0101 is audio control device and 0102 is audio streaming (aka
575 microphone). Thus this is a camera with microphone included.</p>
576
577 <p><strong>ACPI subtype</strong></p>
578
579 <p>The ACPI type is used for several non-PCI/USB stuff. This is an IR
580 receiver in a Thinkpad X40:</p>
581
582 <p><blockquote>
583 acpi:IBM0071:PNP0511:
584 </blockquote></p>
585
586 <p>The values between the colons are IDs.</p>
587
588 <p><strong>DMI subtype</strong></p>
589
590 <p>The DMI table contain lots of information about the computer case
591 and model. This is an entry for a IBM Thinkpad X40, fetched from
592 /sys/devices/virtual/dmi/id/modalias:</p>
593
594 <p><blockquote>
595 dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
596 </blockquote></p>
597
598 <p>The values present are</p>
599
600 <pre>
601 bvn IBM (BIOS vendor)
602 bvr 1UETB6WW(1.66) (BIOS version)
603 bd 06/15/2005 (BIOS date)
604 svn IBM (system vendor)
605 pn 2371H4G (product name)
606 pvr ThinkPadX40 (product version)
607 rvn IBM (board vendor)
608 rn 2371H4G (board name)
609 rvr NotAvailable (board version)
610 cvn IBM (chassis vendor)
611 ct 10 (chassis type)
612 cvr NotAvailable (chassis version)
613 </pre>
614
615 <p>The chassis type 10 is Notebook. Other interesting values can be
616 found in the dmidecode source:</p>
617
618 <pre>
619 3 Desktop
620 4 Low Profile Desktop
621 5 Pizza Box
622 6 Mini Tower
623 7 Tower
624 8 Portable
625 9 Laptop
626 10 Notebook
627 11 Hand Held
628 12 Docking Station
629 13 All In One
630 14 Sub Notebook
631 15 Space-saving
632 16 Lunch Box
633 17 Main Server Chassis
634 18 Expansion Chassis
635 19 Sub Chassis
636 20 Bus Expansion Chassis
637 21 Peripheral Chassis
638 22 RAID Chassis
639 23 Rack Mount Chassis
640 24 Sealed-case PC
641 25 Multi-system
642 26 CompactPCI
643 27 AdvancedTCA
644 28 Blade
645 29 Blade Enclosing
646 </pre>
647
648 <p>The chassis type values are not always accurately set in the DMI
649 table. For example my home server is a tower, but the DMI modalias
650 claim it is a desktop.</p>
651
652 <p><strong>SerIO subtype</strong></p>
653
654 <p>This type is used for PS/2 mouse plugs. One example is from my
655 test machine:</p>
656
657 <p><blockquote>
658 serio:ty01pr00id00ex00
659 </blockquote></p>
660
661 <p>The values present are</p>
662
663 <pre>
664 ty 01 (type)
665 pr 00 (prototype)
666 id 00 (id)
667 ex 00 (extra)
668 </pre>
669
670 <p>This type is supported by the psmouse driver. I am not sure what
671 the valid values are.</p>
672
673 <p><strong>Other subtypes</strong></p>
674
675 <p>There are heaps of other modalias subtypes according to
676 file2alias.c. There is the rest of the list from that source: amba,
677 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
678 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
679 vmbus, x86cpu and zorro. I did not spend time documenting all of
680 these, as they do not seem relevant for my intended use with mapping
681 hardware to packages when new stuff is inserted during run time.</p>
682
683 <p><strong>Looking up kernel modules using modalias values</strong></p>
684
685 <p>To check which kernel modules provide support for a given modalias,
686 one can use the following shell script:</p>
687
688 <pre>
689 for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
690 echo "$id" ; \
691 /sbin/modprobe --show-depends "$id"|sed 's/^/ /' ; \
692 done
693 </pre>
694
695 <p>The output can look like this (only the first few entries as the
696 list is very long on my test machine):</p>
697
698 <pre>
699 acpi:ACPI0003:
700 insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko
701 acpi:device:
702 FATAL: Module acpi:device: not found.
703 acpi:IBM0068:
704 insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko
705 insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko
706 insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko
707 insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko
708 acpi:IBM0071:PNP0511:
709 insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko
710 insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko
711 insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko
712 [...]
713 </pre>
714
715 <p>If you want to help implementing a system to let us propose what
716 packages to install when new hardware is plugged into a Debian
717 machine, please send me an email or talk to me on
718 <a href="irc://irc.debian.org/%23debian-devel">#debian-devel</a>.</p>
719
720 <p><strong>Update 2013-01-15:</strong> Rewrite "cat $(find ...)" to
721 "find ... -print0 | xargs -0 cat" to make sure it handle directories
722 in /sys/ with space in them.</p>
723 </div>
724 <div class="tags">
725
726
727 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>.
728
729
730 </div>
731 </div>
732 <div class="padding"></div>
733
734 <div class="entry">
735 <div class="title"><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></div>
736 <div class="date">10th January 2013</div>
737 <div class="body"><p>As part of my investigation on how to improve the support in Debian
738 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
739 Launcher and updated the Debian package
740 <a href="http://packages.qa.debian.org/pymissile">pymissile</a> to make
741 sure udev will fix the device permissions when it is plugged in. I
742 also added a "Modaliases" header to test it in the Debian archive and
743 hopefully make the package be proposed by jockey in Ubuntu when a user
744 plug in his rocket launcher. In the process I moved the source to a
745 git repository under collab-maint, to make it easier for any DD to
746 contribute. <a href="http://code.google.com/p/pymissile/">Upstream</a>
747 is not very active, but the software still work for me even after five
748 years of relative silence. The new git repository is not listed in
749 the uploaded package yet, because I want to test the other changes a
750 bit more before I upload the new version. If you want to check out
751 the new version with a .desktop file included, visit the
752 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git">gitweb
753 view</a> or use "<tt>git clone
754 git://anonscm.debian.org/collab-maint/pymissile.git</tt>".</p>
755 </div>
756 <div class="tags">
757
758
759 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>.
760
761
762 </div>
763 </div>
764 <div class="padding"></div>
765
766 <div class="entry">
767 <div class="title"><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></div>
768 <div class="date"> 9th January 2013</div>
769 <div class="body"><p>One thing that annoys me with Debian and Linux distributions in
770 general, is that there is a great package management system with the
771 ability to automatically install software packages by downloading them
772 from the distribution mirrors, but no way to get it to automatically
773 install the packages I need to use the hardware I plug into my
774 machine. Even if the package to use it is easily available from the
775 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
776 suggest to automatically install the python-nxt, nbc and t2n packages
777 I need to talk to it. When I plug in a Yubikey, it could propose the
778 yubikey-personalization package. The information required to do this
779 is available, but no-one have pulled all the pieces together.</p>
780
781 <p>Some years ago, I proposed to
782 <a href="http://lists.debian.org/debian-devel/2010/05/msg01206.html">use
783 the discover subsystem to implement this</a>. The idea is fairly
784 simple:
785
786 <ul>
787
788 <li>Add a desktop entry in /usr/share/autostart/ pointing to a program
789 starting when a user log in.</li>
790
791 <li>Set this program up to listen for kernel events emitted when new
792 hardware is inserted into the computer.</li>
793
794 <li>When new hardware is inserted, look up the hardware ID in a
795 database mapping to packages, and take note of any non-installed
796 packages.</li>
797
798 <li>Show a message to the user proposing to install the discovered
799 package, and make it easy to install it.</li>
800
801 </ul>
802
803 <p>I am not sure what the best way to implement this is, but my
804 initial idea was to use dbus events to discover new hardware, the
805 discover database to find packages and
806 <a href="http://www.packagekit.org/">PackageKit</a> to install
807 packages.</p>
808
809 <p>Yesterday, I found time to try to implement this idea, and the
810 draft package is now checked into
811 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
812 Debian Edu subversion repository</a>. In the process, I updated the
813 <a href="http://packages.qa.debian.org/d/discover-data.html">discover-data</a>
814 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
815 the relevant packages in Debian, and uploaded a new version
816 2.2013.01.09 to unstable. I also discovered that the current
817 <a href="http://packages.qa.debian.org/d/discover.html">discover</a>
818 package in Debian no longer discovered any USB devices, because
819 /proc/bus/usb/devices is no longer present. I ported it to use
820 libusb as a fall back option to get it working. The fixed package
821 version 2.1.2-6 is now in experimental (didn't upload it to unstable
822 because of the freeze).</p>
823
824 <p>With this prototype in place, I can insert my Yubikey, and get this
825 desktop notification to show up (only once, the first time it is
826 inserted):</p>
827
828 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2013-01-09-hw-autoinstall.png"></p>
829
830 <p>For this prototype to be really useful, some way to automatically
831 install the proposed packages by pressing the "Please install
832 program(s)" button should to be implemented.</p>
833
834 <p>If this idea seem useful to you, and you want to help make it
835 happen, please help me update the discover-data database with mappings
836 from hardware to Debian packages. Check if 'discover-pkginstall -l'
837 list the package you would like to have installed when a given
838 hardware device is inserted into your computer, and report bugs using
839 reportbug if it isn't. Or, if you know of a better way to provide
840 such mapping, please let me know.</p>
841
842 <p>This prototype need more work, and there are several questions that
843 should be considered before it is ready for production use. Is dbus
844 the correct way to detect new hardware? At the moment I look for HAL
845 dbus events on the system bus, because that is the events I could see
846 on my Debian Squeeze KDE desktop. Are there better events to use?
847 How should the user be notified? Is the desktop notification
848 mechanism the best option, or should the background daemon raise a
849 popup instead? How should packages be installed? When should they
850 not be installed?</p>
851
852 <p>If you want to help getting such feature implemented in Debian,
853 please send me an email. :)</p>
854 </div>
855 <div class="tags">
856
857
858 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>.
859
860
861 </div>
862 </div>
863 <div class="padding"></div>
864
865 <div class="entry">
866 <div class="title"><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></div>
867 <div class="date"> 2nd January 2013</div>
868 <div class="body"><p>During Christmas, I have worked a bit on the Debian support for
869 <a href="http://mindstorms.lego.com/en-us/Default.aspx">LEGO Mindstorm
870 NXT</a>. My son and I have played a bit with my NXT set, and I
871 discovered I had to build all the tools myself because none were
872 already in Debian Squeeze. If Debian support for LEGO is something
873 you care about, please join me on the IRC channel
874 <a href="irc://irc.debian.org/%23debian-lego">#debian-lego</a> (server
875 irc.debian.org). There is a lot that could be done to improve the
876 Debian support for LEGO designers. For example both CAD software
877 and Mindstorm compilers are missing. :)</p>
878
879 <p>Update 2012-01-03: A
880 <a href="http://wiki.debian.org/LegoDesigners">project page</a>
881 including links to Lego related packages is now available.</p>
882 </div>
883 <div class="tags">
884
885
886 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>.
887
888
889 </div>
890 </div>
891 <div class="padding"></div>
892
893 <div class="entry">
894 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Lenker_for_2013_01_01.html">Lenker for 2013-01-01</a></div>
895 <div class="date"> 1st January 2013</div>
896 <div class="body"><p>Her er noen lenker til tekster jeg har satt pris på å lese den
897 siste måneden.</p>
898
899 <ul>
900
901 <li>2012-12-07
902 <a href="http://www.idg.no/computerworld/article262047.ece">Myter og
903 FUD om fri programvare</a> av min venn Christer Gundersen som
904 kommenterer noen av de påstandene som er spredt via Computerworld
905 Norge de siste månedene.</li>
906
907 <li>BankID er et opplegg der utsteder (dvs. banken eller dens
908 leverandør) sitter på alt som trengs for å bruke BankID, men har
909 lovet å ikke bruke den unntatt på oppdrag fra deg. Det er greit nok
910 for banktjenester, der banken allerede har full kontroll over
911 resultatet, men problematisk når det gjelder tilgang til
912 helseopplysninger og avtaleinngåelse med andre enn banken. Jeg
913 håper protestene brer om seg.
914
915 <ul>
916
917 <li>2012-12-11 <a href="http://www.aftenposten.no/meninger/debatt/BankID-blottlegger-helseopplysninger-7067148.html">BankID
918 blottlegger helseopplysninger</a></li>
919
920 <li>2012-12-07 <a href="http://www.nrk.no/nyheter/norge/1.9695027">-
921 Helseopplysningene ikke sikre med Bank-ID</a></li>
922
923 <li>2012-12-07
924 <a href="https://www.bankid.no/Presse-og-nyheter/Nyhetsarkiv/2012/Papeker-alvorlige-men-kjente-utfordringer/">PÃ¥peker
925 alvorlige, men kjente utfordringer</a> er den offisielle
926 holdningen til de som lager BankID.</li>
927
928 <li>2012-12-08
929 <a href="http://www.tnp.no/norway/panorama/3419-ntnu-researcher-warns-against-security-of-bank-id-password">NTNU
930 Researcher Warns against Security of Bank ID Password</a>
931
932 </ul>
933
934 <li>2012-12-11 <a href="http://www.aftenposten.no/nyheter/iriks/Norske-elever-er-darligst-i-Europa-pa-algebra-7066752.html">Norske elever er dårligst i Europa på algebra</a>
935
936 <li>2012-12-11
937 <a href="http://www.aftenposten.no/meninger/debatt/Realfagsdodaren-7067173.html">Realfagsdødaren</a>
938
939 <li>2012-12-21
940 <a href="http://www.bt.no/nyheter/innenriks/112/--Forventningene-er-for-hoye-2816450.html">-
941 Noen må bli skuffet</a> - Politiet i Bergen forteller hvor lavt de
942 prioriterer hverdagskriminalitet.</li>
943
944 <li>2012-05-03
945 <a href="http://e24.no/jobb/kripos-ansatt-doemt-for-snoking-for-venn/20208585">
946 Kripos-ansatt dømt for snoking for venn</A> - viser hvor svak
947 reaksjonen blir når politiet misbruker innsamlet informasjon. En
948 forvarsel på konsekvensene av nasjonal brev- og besøkskontroll -
949 ofte kalt Datalagringsdirektivet.</li>
950
951 <li>2012-12-14
952 <a href="http://www.dagbladet.no/2012/12/14/kultur/debatt/kronikk/jul/ensomhet/24838541/">Ã…
953 smøre en forskjell</a> - om ensomhet og jul.</li>
954
955 <li>2012-12-18
956 <a href="http://www.aftenposten.no/meninger/kronikker/n-krise-av-gangen_-takk-7072452.html">Én
957 krise av gangen, takk!</a>
958
959
960 <li>2012-12-17
961 <a href="http://www.aftenposten.no/meninger/NAV-Et-mangehodet-monster--7072165.html">NAV:
962 Et mangehodet monster</a></li>
963
964 <li>2011-01-12
965 <a href="http://www.dagbladet.no/2011/01/12/kultur/debatt/kronikk/personvern/15027203/">Pasienter
966 uten vern</a> - forteller litt om hvordan Norsk Pasientregister og
967 andre helseregister raderer bort pasienters privatsfære.</li>
968
969
970 <li>2012-12-19
971 <a href="http://www.aftenposten.no/meninger/debatt/Hvorfor-er-barnefamilier-fattige-7073951.html">Hvorfor
972 er barnefamilier fattige?</a></li>
973
974 <li>2012-12-25
975 <a href="http://www.aftenposten.no/meninger/spaltister/Den-skjulte-minoriteten--konservative-kristne-i-Norge-7075518.html">Den
976 skjulte minoriteten – konservative kristne i Norge</a> - kronikk av
977 Bjørn Stærk fra aftenposten</li>
978
979 <li>2009-05-04
980 <a href="http://deltemeninger.no/-/bulletin/show/303429_folkebiblioteket-2-0?ref=checkpoint">Folkebiblioteket
981 2.0</a> - Min venn Sturle om opphavsrett og Internett, i debatt med
982 Olav Torvund.</li>
983
984 </ul>
985
986 <p>Og et godt nytt år til dere alle!</p>
987 </div>
988 <div class="tags">
989
990
991 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid</a>, <a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker</a>, <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</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>.
992
993
994 </div>
995 </div>
996 <div class="padding"></div>
997
998 <p style="text-align: right;"><a href="index.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
999 <div id="sidebar">
1000
1001
1002
1003 <h2>Archive</h2>
1004 <ul>
1005
1006 <li>2013
1007 <ul>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (10)</a></li>
1010
1011 </ul></li>
1012
1013 <li>2012
1014 <ul>
1015
1016 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1017
1018 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1019
1020 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1021
1022 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1023
1024 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1025
1026 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1027
1028 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1029
1030 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1031
1032 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1033
1034 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1035
1036 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1037
1038 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1039
1040 </ul></li>
1041
1042 <li>2011
1043 <ul>
1044
1045 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1046
1047 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1048
1049 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1050
1051 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1052
1053 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1054
1055 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1056
1057 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1058
1059 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1060
1061 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1064
1065 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1066
1067 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1068
1069 </ul></li>
1070
1071 <li>2010
1072 <ul>
1073
1074 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1075
1076 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1077
1078 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1079
1080 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1081
1082 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1083
1084 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1085
1086 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1087
1088 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1089
1090 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1091
1092 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1093
1094 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1095
1096 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1097
1098 </ul></li>
1099
1100 <li>2009
1101 <ul>
1102
1103 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1104
1105 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1106
1107 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1108
1109 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1110
1111 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1112
1113 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1114
1115 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1116
1117 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1118
1119 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1120
1121 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1122
1123 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1124
1125 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1126
1127 </ul></li>
1128
1129 <li>2008
1130 <ul>
1131
1132 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1133
1134 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1135
1136 </ul></li>
1137
1138 </ul>
1139
1140
1141
1142 <h2>Tags</h2>
1143 <ul>
1144
1145 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
1146
1147 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1148
1149 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1150
1151 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1152
1153 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (5)</a></li>
1154
1155 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
1156
1157 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1158
1159 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (68)</a></li>
1160
1161 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (118)</a></li>
1162
1163 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (9)</a></li>
1164
1165 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (7)</a></li>
1166
1167 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1168
1169 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (174)</a></li>
1170
1171 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
1172
1173 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1174
1175 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (10)</a></li>
1176
1177 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (9)</a></li>
1178
1179 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (32)</a></li>
1180
1181 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (17)</a></li>
1182
1183 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
1184
1185 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
1186
1187 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1188
1189 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
1190
1191 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (219)</a></li>
1192
1193 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (148)</a></li>
1194
1195 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (6)</a></li>
1196
1197 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1198
1199 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (41)</a></li>
1200
1201 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (61)</a></li>
1202
1203 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1204
1205 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1206
1207 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
1208
1209 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (6)</a></li>
1210
1211 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1212
1213 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1214
1215 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1216
1217 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (28)</a></li>
1218
1219 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1220
1221 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
1222
1223 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (39)</a></li>
1224
1225 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
1226
1227 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (5)</a></li>
1228
1229 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (12)</a></li>
1230
1231 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
1232
1233 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (7)</a></li>
1234
1235 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (35)</a></li>
1236
1237 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1238
1239 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (26)</a></li>
1240
1241 </ul>
1242
1243
1244 </div>
1245 <p style="text-align: right">
1246 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.4</a>
1247 </p>
1248
1249 </body>
1250 </html>