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