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">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Entries Tagged debian
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"debian.rss" type=
"application/rss+xml" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <h3>Entries tagged "debian".
</h3>
25 <a href=
"http://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html">Detecting NFS hangs on Linux without hanging yourself...
</a>
31 <p>Over the years, administrating thousand of NFS mounting linux
32 computers at the time, I often needed a way to detect if the machine
33 was experiencing NFS hang. If you try to use
<tt>df
</tt> or look at a
34 file or directory affected by the hang, the process (and possibly the
35 shell) will hang too. So you want to be able to detect this without
36 risking the detection process getting stuck too. It has not been
37 obvious how to do this. When the hang has lasted a while, it is
38 possible to find messages like these in dmesg:
</p>
41 nfs: server nfsserver not responding, still trying
42 <br>nfs: server nfsserver OK
45 <p>It is hard to know if the hang is still going on, and it is hard to
46 be sure looking in dmesg is going to work. If there are lots of other
47 messages in dmesg the lines might have rotated out of site before they
50 <p>While reading through the nfs client implementation in linux kernel
51 code, I came across some statistics that seem to give a way to detect
52 it. The om_timeouts sunrpc value in the kernel will increase every
53 time the above log entry is inserted into dmesg. And after digging a
54 bit further, I discovered that this value show up in
55 /proc/self/mountstats on Linux.
</p>
57 <p>The mountstats content seem to be shared between files using the
58 same file system context, so it is enough to check one of the
59 mountstats files to get the state of the mount point for the machine.
60 I assume this will not show lazy umounted NFS points, nor NFS mount
61 points in a different process context (ie with a different filesystem
62 view), but that does not worry me.
</p>
64 <p>The content for a NFS mount point look similar to this:
</p>
68 device /dev/mapper/Debian-var mounted on /var with fstype ext3
69 device nfsserver:/mnt/nfsserver/home0 mounted on /mnt/nfsserver/home0 with fstype nfs statvers=
1.1
70 opts: rw,vers=
3,rsize=
65536,wsize=
65536,namlen=
255,acregmin=
3,acregmax=
60,acdirmin=
30,acdirmax=
60,soft,nolock,proto=tcp,timeo=
600,retrans=
2,sec=sys,mountaddr=
129.240.3.145,mountvers=
3,mountport=
4048,mountproto=udp,local_lock=all
72 caps: caps=
0x3fe7,wtmult=
4096,dtsize=
8192,bsize=
0,namlen=
255
73 sec: flavor=
1,pseudoflavor=
1
74 events:
61063112 732346265 1028140 35486205 16220064 8162542 761447191 71714012 37189 3891185 45561809 110486139 4850138 420353 15449177 296502 52736725 13523379 0 52182 9016896 1231 0 0 0 0 0
75 bytes:
166253035039 219519120027 0 0 40783504807 185466229638 11677877 45561809
76 RPC iostats version:
1.0 p/v:
100003/
3 (nfs)
77 xprt: tcp
925 1 6810 0 0 111505412 111480497 109 2672418560317 0 248 53869103 22481820
80 GETATTR:
61063106 61063108 0 9621383060 6839064400 453650 77291321 78926132
81 SETATTR:
463469 463470 0 92005440 66739536 63787 603235 687943
82 LOOKUP:
17021657 17021657 0 3354097764 4013442928 57216 35125459 35566511
83 ACCESS:
14281703 14290009 5 2318400592 1713803640 1709282 4865144 7130140
84 READLINK:
125 125 0 20472 18620 0 1112 1118
85 READ:
4214236 4214237 0 715608524 41328653212 89884 22622768 22806693
86 WRITE:
8479010 8494376 22 187695798568 1356087148 178264904 51506907 231671771
87 CREATE:
171708 171708 0 38084748 46702272 873 1041833 1050398
88 MKDIR:
3680 3680 0 773980 993920 26 23990 24245
89 SYMLINK:
903 903 0 233428 245488 6 5865 5917
90 MKNOD:
80 80 0 20148 21760 0 299 304
91 REMOVE:
429921 429921 0 79796004 61908192 3313 2710416 2741636
92 RMDIR:
3367 3367 0 645112 484848 22 5782 6002
93 RENAME:
466201 466201 0 130026184 121212260 7075 5935207 5961288
94 LINK:
289155 289155 0 72775556 67083960 2199 2565060 2585579
95 READDIR:
2933237 2933237 0 516506204 13973833412 10385 3190199 3297917
96 READDIRPLUS:
1652839 1652839 0 298640972 6895997744 84735 14307895 14448937
97 FSSTAT:
6144 6144 0 1010516 1032192 51 9654 10022
98 FSINFO:
2 2 0 232 328 0 1 1
99 PATHCONF:
1 1 0 116 140 0 0 0
100 COMMIT:
0 0 0 0 0 0 0 0
102 device binfmt_misc mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
104 </pre></blockquote></p>
106 <p>The key number to look at is the third number in the per-op list.
107 It is the number of NFS timeouts experiences per file system
108 operation. Here
22 write timeouts and
5 access timeouts. If these
109 numbers are increasing, I believe the machine is experiencing NFS
110 hang. Unfortunately the timeout value do not start to increase right
111 away. The NFS operations need to time out first, and this can take a
112 while. The exact timeout value depend on the setup. For example the
113 defaults for TCP and UDP mount points are quite different, and the
114 timeout value is affected by the soft, hard, timeo and retrans NFS
117 <p>The only way I have been able to get working on Debian and RedHat
118 Enterprise Linux for getting the timeout count is to peek in /proc/.
120 <ahref=
"http://docs.oracle.com/cd/E19253-01/816-4555/netmonitor-12/index.html">Solaris
121 10 System Administration Guide: Network Services
</a>, the 'nfsstat -c'
122 command can be used to get these timeout values. But this do not work
123 on Linux, as far as I can tell. I
124 <ahref=
"http://bugs.debian.org/857043">asked Debian about this
</a>,
125 but have not seen any replies yet.
</p>
127 <p>Is there a better way to figure out if a Linux NFS client is
128 experiencing NFS hangs? Is there a way to detect which processes are
129 affected? Is there a way to get the NFS mount going quickly once the
130 network problem causing the NFS hang has been cleared? I would very
131 much welcome some clues, as we regularly run into NFS hangs.
</p>
137 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/sysadmin">sysadmin
</a>.
142 <div class=
"padding"></div>
146 <a href=
"http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html">Norwegian Bokmål translation of The Debian Administrator's Handbook complete, proofreading in progress
</a>
152 <p>For almost a year now, we have been working on making a Norwegian
153 Bokmål edition of
<a href=
"https://debian-handbook.info/">The Debian
154 Administrator's Handbook
</a>. Now, thanks to the tireless effort of
155 Ole-Erik, Ingrid and Andreas, the initial translation is complete, and
156 we are working on the proof reading to ensure consistent language and
157 use of correct computer science terms. The plan is to make the book
158 available on paper, as well as in electronic form. For that to
159 happen, the proof reading must be completed and all the figures need
160 to be translated. If you want to help out, get in touch.
</p>
162 <p><a href=
"http://people.skolelinux.org/pere/debian-handbook/debian-handbook-nb-NO.pdf">A
164 fresh PDF edition
</a> in A4 format (the final book will have smaller
165 pages) of the book created every morning is available for
166 proofreading. If you find any errors, please
167 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">visit
168 Weblate and correct the error
</a>. The
169 <a href=
"http://l.github.io/debian-handbook/stat/nb-NO/index.html">state
170 of the translation including figures
</a> is a useful source for those
171 provide Norwegian bokmål screen shots and figures.
</p>
177 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
182 <div class=
"padding"></div>
186 <a href=
"http://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html">Unlimited randomness with the ChaosKey?
</a>
192 <p>A few days ago I ordered a small batch of
193 <a href=
"http://altusmetrum.org/ChaosKey/">the ChaosKey
</a>, a small
194 USB dongle for generating entropy created by Bdale Garbee and Keith
195 Packard. Yesterday it arrived, and I am very happy to report that it
196 work great! According to its designers, to get it to work out of the
197 box, you need the Linux kernel version
4.1 or later. I tested on a
198 Debian Stretch machine (kernel version
4.9), and there it worked just
199 fine, increasing the available entropy very quickly. I wrote a small
200 test oneliner to test. It first print the current entropy level,
201 drain /dev/random, and then print the entropy level for five seconds.
202 Here is the situation without the ChaosKey inserted:
</p>
205 % cat /proc/sys/kernel/random/entropy_avail; \
206 dd bs=
1M if=/dev/random of=/dev/null count=
1; \
207 for n in $(seq
1 5); do \
208 cat /proc/sys/kernel/random/entropy_avail; \
214 28 byte kopiert,
0,
000264565 s,
106 kB/s
223 <p>The entropy level increases by
3-
4 every second. In such case any
224 application requiring random bits (like a HTTPS enabled web server)
225 will halt and wait for more entrpy. And here is the situation with
226 the ChaosKey inserted:
</p>
229 % cat /proc/sys/kernel/random/entropy_avail; \
230 dd bs=
1M if=/dev/random of=/dev/null count=
1; \
231 for n in $(seq
1 5); do \
232 cat /proc/sys/kernel/random/entropy_avail; \
238 104 byte kopiert,
0,
000487647 s,
213 kB/s
247 <p>Quite the difference. :) I bought a few more than I need, in case
248 someone want to buy one here in Norway. :)
</p>
250 <p>Update: The dongle was presented at Debconf last year. You might
251 find
<a href=
"https://debconf16.debconf.org/talks/94/">the talk
252 recording illuminating
</a>. It explains exactly what the source of
253 randomness is, if you are unable to spot it from the schema drawing
254 available from the ChaosKey web site linked at the start of this blog
261 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>.
266 <div class=
"padding"></div>
270 <a href=
"http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html">Where did that package go?
— geolocated IP traceroute
</a>
276 <p>Did you ever wonder where the web trafic really flow to reach the
277 web servers, and who own the network equipment it is flowing through?
278 It is possible to get a glimpse of this from using traceroute, but it
279 is hard to find all the details. Many years ago, I wrote a system to
280 map the Norwegian Internet (trying to figure out if our plans for a
281 network game service would get low enough latency, and who we needed
282 to talk to about setting up game servers close to the users. Back
283 then I used traceroute output from many locations (I asked my friends
284 to run a script and send me their traceroute output) to create the
285 graph and the map. The output from traceroute typically look like
289 traceroute to www.stortinget.no (
85.88.67.10),
30 hops max,
60 byte packets
290 1 uio-gw10.uio.no (
129.240.202.1)
0.447 ms
0.486 ms
0.621 ms
291 2 uio-gw8.uio.no (
129.240.24.229)
0.467 ms
0.578 ms
0.675 ms
292 3 oslo-gw1.uninett.no (
128.39.65.17)
0.385 ms
0.373 ms
0.358 ms
293 4 te3-
1-
2.br1.fn3.as2116.net (
193.156.90.3)
1.174 ms
1.172 ms
1.153 ms
294 5 he16-
1-
1.cr1.san110.as2116.net (
195.0.244.234)
2.627 ms he16-
1-
1.cr2.oslosda310.as2116.net (
195.0.244.48)
3.172 ms he16-
1-
1.cr1.san110.as2116.net (
195.0.244.234)
2.857 ms
295 6 ae1.ar8.oslosda310.as2116.net (
195.0.242.39)
0.662 ms
0.637 ms ae0.ar8.oslosda310.as2116.net (
195.0.242.23)
0.622 ms
296 7 89.191.10.146 (
89.191.10.146)
0.931 ms
0.917 ms
0.955 ms
302 <p>This show the DNS names and IP addresses of (at least some of the)
303 network equipment involved in getting the data traffic from me to the
304 www.stortinget.no server, and how long it took in milliseconds for a
305 package to reach the equipment and return to me. Three packages are
306 sent, and some times the packages do not follow the same path. This
307 is shown for hop
5, where three different IP addresses replied to the
308 traceroute request.
</p>
310 <p>There are many ways to measure trace routes. Other good traceroute
311 implementations I use are traceroute (using ICMP packages) mtr (can do
312 both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
313 traceroute and a lot of other capabilities). All of them are easily
314 available in
<a href=
"https://www.debian.org/">Debian
</a>.
</p>
316 <p>This time around, I wanted to know the geographic location of
317 different route points, to visualize how visiting a web page spread
318 information about the visit to a lot of servers around the globe. The
319 background is that a web site today often will ask the browser to get
320 from many servers the parts (for example HTML, JSON, fonts,
321 JavaScript, CSS, video) required to display the content. This will
322 leak information about the visit to those controlling these servers
323 and anyone able to peek at the data traffic passing by (like your ISP,
324 the ISPs backbone provider, FRA, GCHQ, NSA and others).
</p>
326 <p>Lets pick an example, the Norwegian parliament web site
327 www.stortinget.no. It is read daily by all members of parliament and
328 their staff, as well as political journalists, activits and many other
329 citizens of Norway. A visit to the www.stortinget.no web site will
330 ask your browser to contact
8 other servers: ajax.googleapis.com,
331 insights.hotjar.com, script.hotjar.com, static.hotjar.com,
332 stats.g.doubleclick.net, www.google-analytics.com,
333 www.googletagmanager.com and www.netigate.se. I extracted this by
334 asking
<a href=
"http://phantomjs.org/">PhantomJS
</a> to visit the
335 Stortinget web page and tell me all the URLs PhantomJS downloaded to
336 render the page (in HAR format using
337 <a href=
"https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js">their
338 netsniff example
</a>. I am very grateful to Gorm for showing me how
339 to do this). My goal is to visualize network traces to all IP
340 addresses behind these DNS names, do show where visitors personal
341 information is spread when visiting the page.
</p>
343 <p align=
"center"><a href=
"www.stortinget.no-geoip.kml"><img
344 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geoip-small.png" alt=
"map of combined traces for URLs used by www.stortinget.no using GeoIP"/></a></p>
346 <p>When I had a look around for options, I could not find any good
347 free software tools to do this, and decided I needed my own traceroute
348 wrapper outputting KML based on locations looked up using GeoIP. KML
349 is easy to work with and easy to generate, and understood by several
350 of the GIS tools I have available. I got good help from by NUUG
351 colleague Anders Einar with this, and the result can be seen in
352 <a href=
"https://github.com/petterreinholdtsen/kmltraceroute">my
353 kmltraceroute git repository
</a>. Unfortunately, the quality of the
354 free GeoIP databases I could find (and the for-pay databases my
355 friends had access to) is not up to the task. The IP addresses of
356 central Internet infrastructure would typically be placed near the
357 controlling companies main office, and not where the router is really
358 located, as you can see from
<a href=
"www.stortinget.no-geoip.kml">the
359 KML file I created
</a> using the GeoLite City dataset from MaxMind.
361 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg"><img
362 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy-small.png" alt=
"scapy traceroute graph for URLs used by www.stortinget.no"/></a></p>
364 <p>I also had a look at the visual traceroute graph created by
365 <a href=
"http://www.secdev.org/projects/scapy/">the scrapy project
</a>,
366 showing IP network ownership (aka AS owner) for the IP address in
368 <a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg">The
369 graph display a lot of useful information about the traceroute in SVG
370 format
</a>, and give a good indication on who control the network
371 equipment involved, but it do not include geolocation. This graph
372 make it possible to see the information is made available at least for
373 UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
374 3 Communications and NetDNA.
</p>
376 <p align=
"center"><a href=
"https://geotraceroute.com/index.php?node=4&host=www.stortinget.no"><img
377 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-small.png" alt=
"example geotraceroute view for www.stortinget.no"/></a></p>
379 <p>In the process, I came across the
380 <a href=
"https://geotraceroute.com/">web service GeoTraceroute
</a> by
381 Salim Gasmi. Its methology of combining guesses based on DNS names,
382 various location databases and finally use latecy times to rule out
383 candidate locations seemed to do a very good job of guessing correct
384 geolocation. But it could only do one trace at the time, did not have
385 a sensor in Norway and did not make the geolocations easily available
386 for postprocessing. So I contacted the developer and asked if he
387 would be willing to share the code (he refused until he had time to
388 clean it up), but he was interested in providing the geolocations in a
389 machine readable format, and willing to set up a sensor in Norway. So
390 since yesterday, it is possible to run traces from Norway in this
391 service thanks to a sensor node set up by
392 <a href=
"https://www.nuug.no/">the NUUG assosiation
</a>, and get the
393 trace in KML format for further processing.
</p>
395 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml"><img
396 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.png" alt=
"map of combined traces for URLs used by www.stortinget.no using geotraceroute"/></a></p>
398 <p>Here we can see a lot of trafic passes Sweden on its way to
399 Denmark, Germany, Holland and Ireland. Plenty of places where the
400 Snowden confirmations verified the traffic is read by various actors
401 without your best interest as their top priority.
</p>
403 <p>Combining KML files is trivial using a text editor, so I could loop
404 over all the hosts behind the urls imported by www.stortinget.no and
405 ask for the KML file from GeoTraceroute, and create a combined KML
406 file with all the traces (unfortunately only one of the IP addresses
407 behind the DNS name is traced this time. To get them all, one would
408 have to request traces using IP number instead of DNS names from
409 GeoTraceroute). That might be the next step in this project.
</p>
411 <p>Armed with these tools, I find it a lot easier to figure out where
412 the IP traffic moves and who control the boxes involved in moving it.
413 And every time the link crosses for example the Swedish border, we can
414 be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
415 Britain and NSA in USA and cables around the globe. (Hm, what should
416 we tell them? :) Keep that in mind if you ever send anything
417 unencrypted over the Internet.
</p>
419 <p>PS: KML files are drawn using
420 <a href=
"http://ivanrublev.me/kml/">the KML viewer from Ivan
421 Rublev
<a/>, as it was less cluttered than the local Linux application
422 Marble. There are heaps of other options too.
</p>
424 <p>As usual, if you use Bitcoin and want to show your support of my
425 activities, please send Bitcoin donations to my address
426 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
432 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/kart">kart
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
437 <div class=
"padding"></div>
441 <a href=
"http://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html">Appstream just learned how to map hardware to packages too!
</a>
447 <p>I received a very nice Christmas present today. As my regular
448 readers probably know, I have been working on the
449 <a href=
"http://packages.qa.debian.org/isenkram">the Isenkram
450 system
</a> for many years. The goal of the Isenkram system is to make
451 it easier for users to figure out what to install to get a given piece
452 of hardware to work in Debian, and a key part of this system is a way
453 to map hardware to packages. Isenkram have its own mapping database,
454 and also uses data provided by each package using the AppStream
455 metadata format. And today,
456 <a href=
"https://tracker.debian.org/pkg/appstream">AppStream
</a> in
457 Debian learned to look up hardware the same way Isenkram is doing it,
458 ie using fnmatch():
</p>
461 % appstreamcli what-provides modalias \
462 usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
463 Identifier: pymissile [generic]
465 Summary: Control original Striker USB Missile Launcher
467 % appstreamcli what-provides modalias usb:v0694p0002d0000
468 Identifier: libnxt [generic]
470 Summary: utility library for talking to the LEGO Mindstorms NXT brick
473 Identifier: t2n [generic]
475 Summary: Simple command-line tool for Lego NXT
478 Identifier: python-nxt [generic]
480 Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
483 Identifier: nbc [generic]
485 Summary: C compiler for LEGO Mindstorms NXT bricks
490 <p>A similar query can be done using the combined AppStream and
491 Isenkram databases using the isenkram-lookup tool:
</p>
494 % isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
496 % isenkram-lookup usb:v0694p0002d0000
504 <p>You can find modalias values relevant for your machine using
505 <tt>cat $(find /sys/devices/ -name modalias)
</tt>.
507 <p>If you want to make this system a success and help Debian users
508 make the most of the hardware they have, please
509 help
<a href=
"https://wiki.debian.org/AppStream/Guidelines">add
510 AppStream metadata for your package following the guidelines
</a>
511 documented in the wiki. So far only
11 packages provide such
512 information, among the several hundred hardware specific packages in
513 Debian. The Isenkram database on the other hand contain
101 packages,
514 mostly related to USB dongles. Most of the packages with hardware
515 mapping in AppStream are LEGO Mindstorms related, because I have, as
516 part of my involvement in
517 <a href=
"https://wiki.debian.org/LegoDesigners">the Debian LEGO
518 team
</a> given priority to making sure LEGO users get proposed the
519 complete set of packages in Debian for that particular hardware. The
520 team also got a nice Christmas present today. The
521 <a href=
"https://tracker.debian.org/pkg/nxt-firmware">nxt-firmware
522 package
</a> made it into Debian. With this package in place, it is
523 now possible to use the LEGO Mindstorms NXT unit with only free
524 software, as the nxt-firmware package contain the source and firmware
525 binaries for the NXT brick.
</p>
527 <p>As usual, if you use Bitcoin and want to show your support of my
528 activities, please send Bitcoin donations to my address
529 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
535 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>.
540 <div class=
"padding"></div>
544 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html">Isenkram updated with a lot more hardware-package mappings
</a>
550 <p><a href=
"http://packages.qa.debian.org/isenkram">The Isenkram
551 system
</a> I wrote two years ago to make it easier in Debian to find
552 and install packages to get your hardware dongles to work, is still
553 going strong. It is a system to look up the hardware present on or
554 connected to the current system, and map the hardware to Debian
555 packages. It can either be done using the tools in isenkram-cli or
556 using the user space daemon in the isenkram package. The latter will
557 notify you, when inserting new hardware, about what packages to
558 install to get the dongle working. It will even provide a button to
559 click on to ask packagekit to install the packages.
</p>
561 <p>Here is an command line example from my Thinkpad laptop:
</p>
582 <p>It can also list the firware package providing firmware requested
583 by the load kernel modules, which in my case is an empty list because
584 I have all the firmware my machine need:
587 % /usr/sbin/isenkram-autoinstall-firmware -l
588 info: did not find any firmware files requested by loaded kernel modules. exiting
592 <p>The last few days I had a look at several of the around
250
593 packages in Debian with udev rules. These seem like good candidates
594 to install when a given hardware dongle is inserted, and I found
595 several that should be proposed by isenkram. I have not had time to
596 check all of them, but am happy to report that now there are
97
597 packages packages mapped to hardware by Isenkram.
11 of these
598 packages provide hardware mapping using AppStream, while the rest are
599 listed in the modaliases file provided in isenkram.
</p>
601 <p>These are the packages with hardware mappings at the moment. The
602 <strong>marked packages
</strong> are also announcing their hardware
603 support using AppStream, for everyone to use:
</p>
605 <p>air-quality-sensor, alsa-firmware-loaders, argyll,
606 <strong>array-info
</strong>, avarice, avrdude, b43-fwcutter,
607 bit-babbler, bluez, bluez-firmware,
<strong>brltty
</strong>,
608 <strong>broadcom-sta-dkms
</strong>, calibre, cgminer, cheese, colord,
609 <strong>colorhug-client
</strong>, dahdi-firmware-nonfree, dahdi-linux,
610 dfu-util, dolphin-emu, ekeyd, ethtool, firmware-ipw2x00, fprintd,
611 fprintd-demo,
<strong>galileo
</strong>, gkrellm-thinkbat, gphoto2,
612 gpsbabel, gpsbabel-gui, gpsman, gpstrans, gqrx-sdr, gr-fcdproplus,
613 gr-osmosdr, gtkpod, hackrf, hdapsd, hdmi2usb-udev, hpijs-ppds, hplip,
614 ipw3945-source, ipw3945d, kde-config-tablet, kinect-audio-setup,
615 <strong>libnxt
</strong>, libpam-fprintd,
<strong>lomoco
</strong>,
616 madwimax, minidisc-utils, mkgmap, msi-keyboard, mtkbabel,
617 <strong>nbc
</strong>,
<strong>nqc
</strong>, nut-hal-drivers, ola,
618 open-vm-toolbox, open-vm-tools, openambit, pcgminer, pcmciautils,
619 pcscd, pidgin-blinklight, printer-driver-splix,
620 <strong>pymissile
</strong>, python-nxt, qlandkartegt,
621 qlandkartegt-garmin, rosegarden, rt2x00-source, sispmctl,
622 soapysdr-module-hackrf, solaar, squeak-plugins-scratch, sunxi-tools,
623 <strong>t2n
</strong>, thinkfan, thinkfinger-tools, tlp, tp-smapi-dkms,
624 tp-smapi-source, tpb, tucnak, uhd-host, usbmuxd, viking,
625 virtualbox-ose-guest-x11, w1retap, xawtv, xserver-xorg-input-vmmouse,
626 xserver-xorg-input-wacom, xserver-xorg-video-qxl,
627 xserver-xorg-video-vmware, yubikey-personalization and
630 <p>If you know of other packages, please let me know with a wishlist
631 bug report against the isenkram-cli package, and ask the package
633 <a href=
"https://wiki.debian.org/AppStream/Guidelines">add AppStream
634 metadata according to the guidelines
</a> to provide the information
635 for everyone. In time, I hope to get rid of the isenkram specific
636 hardware mapping and depend exclusively on AppStream.
</p>
638 <p>Note, the AppStream metadata for broadcom-sta-dkms is matching too
639 much hardware, and suggest that the package with with any ethernet
640 card. See
<a href=
"http://bugs.debian.org/838735">bug #
838735</a> for
641 the details. I hope the maintainer find time to address it soon. In
642 the mean time I provide an override in isenkram.
</p>
648 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>.
653 <div class=
"padding"></div>
657 <a href=
"http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html">Oolite, a life in space as vagabond and mercenary - nice free software
</a>
663 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png"/></p>
665 <p>In my early years, I played
666 <a href=
"http://wiki.alioth.net/index.php/Classic_Elite">the epic game
667 Elite
</a> on my PC. I spent many months trading and fighting in
668 space, and reached the 'elite' fighting status before I moved on. The
669 original Elite game was available on Commodore
64 and the IBM PC
670 edition I played had a
64 KB executable. I am still impressed today
671 that the authors managed to squeeze both a
3D engine and details about
672 more than
2000 planet systems across
7 galaxies into a binary so
675 <p>I have known about
<a href=
"http://www.oolite.org/">the free
676 software game Oolite inspired by Elite
</a> for a while, but did not
677 really have time to test it properly until a few days ago. It was
678 great to discover that my old knowledge about trading routes were
679 still valid. But my fighting and flying abilities were gone, so I had
680 to retrain to be able to dock on a space station. And I am still not
681 able to make much resistance when I am attacked by pirates, so I
682 bougth and mounted the most powerful laser in the rear to be able to
683 put up at least some resistance while fleeing for my life. :)
</p>
685 <p>When playing Elite in the late eighties, I had to discover
686 everything on my own, and I had long lists of prices seen on different
687 planets to be able to decide where to trade what. This time I had the
689 <a href=
"http://wiki.alioth.net/index.php/Main_Page">Elite wiki
</a>,
690 where information about each planet is easily available with common
691 price ranges and suggested trading routes. This improved my ability
692 to earn money and I have been able to earn enough to buy a lot of
693 useful equipent in a few days. I believe I originally played for
694 months before I could get a docking computer, while now I could get it
695 after less then a week.
</p>
697 <p>If you like science fiction and dreamed of a life as a vagabond in
698 space, you should try out Oolite. It is available for Linux, MacOSX
699 and Windows, and is included in Debian and derivatives since
2011.
</p>
701 <p>As usual, if you use Bitcoin and want to show your support of my
702 activities, please send Bitcoin donations to my address
703 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
709 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/nice free software">nice free software
</a>.
714 <div class=
"padding"></div>
718 <a href=
"http://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html">Quicker Debian installations using eatmydata
</a>
724 <p>Two years ago, I did some experiments with eatmydata and the Debian
725 installation system, observing how using
726 <a href=
"http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html">eatmydata
727 could speed up the installation
</a> quite a bit. My testing measured
728 speedup around
20-
40 percent for Debian Edu, where we install around
729 1000 packages from within the installer. The eatmydata package
730 provide a way to disable/delay file system flushing. This is a bit
731 risky in the general case, as files that should be stored on disk will
732 stay only in memory a bit longer than expected, causing problems if a
733 machine crashes at an inconvenient time. But for an installation, if
734 the machine crashes during installation the process is normally
735 restarted, and avoiding disk operations as much as possible to speed
736 up the process make perfect sense.
738 <p>I added code in the Debian Edu specific installation code to enable
739 <a href=
"https://tracker.debian.org/pkg/libeatmydata">eatmydata
</a>,
740 but did not have time to push it any further. But a few months ago I
741 picked it up again and worked with the libeatmydata package maintainer
742 Mattia Rizzolo to make it easier for everyone to get this installation
743 speedup in Debian. Thanks to our cooperation There is now an
744 eatmydata-udeb package in Debian testing and unstable, and simply
745 enabling/installing it in debian-installer (d-i) is enough to get the
746 quicker installations. It can be enabled using preseeding. The
747 following untested kernel argument should do the trick:
</p>
750 preseed/
early_command="anna-install eatmydata-udeb"
753 <p>This should ask d-i to install the package inside the d-i
754 environment early in the installation sequence. Having it installed
755 in d-i in turn will make sure the relevant scripts are called just
756 after debootstrap filled /target/ with the freshly installed Debian
757 system to configure apt to run dpkg with eatmydata. This is enough to
758 speed up the installation process. There is a proposal to
759 <a href=
"https://bugs.debian.org/841153">extend the idea a bit further
760 by using /etc/ld.so.preload instead of apt.conf
</a>, but I have not
761 tested its impact.
</p>
768 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
773 <div class=
"padding"></div>
777 <a href=
"http://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html">Oversette bokmål til nynorsk, enklere enn du tror takket være Apertium
</a>
783 <p>I Norge er det mange som trenger å skrive både bokmål og nynorsk.
784 Eksamensoppgaver, offentlige brev og nyheter er eksempler på tekster
785 der det er krav om skriftspråk. I tillegg til alle skoleoppgavene som
786 elever over det ganske land skal levere inn hvert år. Det mange ikke
787 vet er at selv om de kommersielle alternativene
788 <a href=
"https://translate.google.com/">Google Translate
</a> og
789 <a href=
"https://www.bing.com/translator/">Bing Translator
</a> ikke kan
790 bidra med å oversette mellom bokmål og nynorsk, så finnes det et
791 utmerket fri programvarealternativ som kan. Oversetterverktøyet
792 Apertium har støtte for en rekke språkkombinasjoner, og takket være
793 den utrettelige innsatsen til blant annet Kevin Brubeck Unhammer, kan
794 en bruke webtjenesten til å fylle inn en tekst på bokmål eller
795 nynorsk, og få den automatoversatt til det andre skriftspråket.
796 Resultatet er ikke perfekt, men et svært godt utgangspunkt. Av og til
797 er resultatet så bra at det kan benyttes uten endringer. Jeg vet
798 f.eks. at store deler av Joomla ble oversatt til nynorsk ved hjelp
799 Apertium. Høres det ut som noe du kan ha bruk for? Besøk i så fall
800 <a href=
"https://www.apertium.org/">Apertium.org
</a> og fyll inn
801 teksten din i webskjemaet der.
803 <p>Hvis du trenger maskinell tilgang til den bakenforliggende
804 teknologien kan du enten installere pakken
805 <a href=
"https://tracker.debian.org/apertium-nno-nob">apertium-nno-nob
</a>
806 på en Debian-maskin eller bruke web-API-et tilgjengelig fra
808 <a href=
"http://wiki.apertium.org/wiki/Apertium-apy">API-dokumentasjonen
</a>
809 for detaljer om web-API-et. Her kan du se hvordan resultatet blir for
810 denne teksten som ble skrevet på bokmål over maskinoversatt til
815 <p>I Noreg er det mange som treng å skriva både bokmål og nynorsk.
816 Eksamensoppgåver, offentlege brev og nyhende er døme på tekster der
817 det er krav om skriftspråk. I tillegg til alle skuleoppgåvene som
818 elevar over det ganske land skal levera inn kvart år. Det mange ikkje
819 veit er at sjølv om dei kommersielle alternativa
820 <a href=
"https://translate.google.com/">Google *Translate
</a> og
821 <a href=
"https://www.bing.com/translator/">Bing *Translator
</a> ikkje
822 kan bidra med å omsetja mellom bokmål og nynorsk, så finst det eit
823 utmerka fri programvarealternativ som kan. Omsetjarverktøyet
824 *Apertium har støtte for ei rekkje språkkombinasjonar, og takka vera
825 den utrøyttelege innsatsen til blant anna Kevin Brubeck Unhammer, kan
826 ein bruka *webtjenesten til å fylla inn ei tekst på bokmål eller
827 nynorsk, og få den *automatoversatt til det andre skriftspråket.
828 Resultatet er ikkje perfekt, men eit svært godt utgangspunkt. Av og
829 til er resultatet så bra at det kan nyttast utan endringar. Eg veit
830 t.d. at store delar av *Joomla vart omsett til nynorsk ved hjelp
831 *Apertium. Høyrast det ut som noko du kan ha bruk for? Besøk i så
832 fall
<a href=
"https://www.apertium.org/">*Apertium.org
</a> og fyll inn
833 teksta di i *webskjemaet der.
835 <p>Viss du treng *maskinell tilgjenge til den *bakenforliggende
836 teknologien kan du anten installera pakken
837 <a href=
"https://tracker.debian.org/apertium-nno-nob">*apertium-*nno-*nob
</a>
838 på ein *Debian-maskin eller bruka *web-*API-eit tilgjengeleg frå
839 *api.*apertium.org. Sjå
840 <a href=
"http://wiki.apertium.org/wiki/Apertium-apy">*API-dokumentasjonen
</a>
841 for detaljar om *web-*API-eit. Her kan du sjå korleis resultatet vert
842 for denne teksta som vart skreva på bokmål over *maskinoversatt til
849 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll
</a>.
854 <div class=
"padding"></div>
858 <a href=
"http://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html">Coz profiler for multi-threaded software is now in Debian
</a>
864 <p><a href=
"http://coz-profiler.org/">The Coz profiler
</a>, a nice
865 profiler able to run benchmarking experiments on the instrumented
866 multi-threaded program, finally
867 <a href=
"https://tracker.debian.org/pkg/coz-profiler">made it into
868 Debian unstable yesterday
</A>. Lluís Vilanova and I have spent many
870 <a href=
"http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">I
871 blogged about the coz tool
</a> in August working with upstream to make
872 it suitable for Debian. There are still issues with clang
873 compatibility, inline assembly only working x86 and minimized
874 JavaScript libraries.
</p>
876 <p>To test it, install 'coz-profiler' using apt and run it like this:
</p>
879 <tt>coz run --- /path/to/binary-with-debug-info
</tt>
882 <p>This will produce a profile.coz file in the current working
883 directory with the profiling information. This is then given to a
884 JavaScript application provided in the package and available from
885 <a href=
"http://plasma-umass.github.io/coz/">a project web page
</a>.
886 To start the local copy, invoke it in a browser like this:
</p>
889 <tt>sensible-browser /usr/share/coz-profiler/viewer/index.htm
</tt>
892 <p>See the project home page and the
893 <a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger">USENIX
894 ;login: article on Coz
</a> for more information on how it is
901 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>.
906 <div class=
"padding"></div>
910 <a href=
"http://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway
</a>
916 <p>A while back I received a Gyro sensor for the NXT
917 <a href=
"mindstorms.lego.com">Mindstorms
</a> controller as a birthday
918 present. It had been on my wishlist for a while, because I wanted to
919 build a Segway like balancing lego robot. I had already built
920 <a href=
"http://www.nxtprograms.com/NXT2/segway/">a simple balancing
921 robot
</a> with the kids, using the light/color sensor included in the
922 NXT kit as the balance sensor, but it was not working very well. It
923 could balance for a while, but was very sensitive to the light
924 condition in the room and the reflective properties of the surface and
925 would fall over after a short while. I wanted something more robust,
927 <a href=
"https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NGY1044">the
928 gyro sensor from HiTechnic
</a> I believed would solve it on my
929 wishlist for some years before it suddenly showed up as a gift from my
932 <p>Unfortunately I have not had time to sit down and play with it
933 since then. But that changed some days ago, when I was searching for
934 lego segway information and came across a recipe from HiTechnic for
936 <a href=
"http://www.hitechnic.com/blog/gyro-sensor/htway/">the
937 HTWay
</a>, a segway like balancing robot. Build instructions and
938 <a href=
"https://www.hitechnic.com/upload/786-HTWayC.nxc">source
939 code
</a> was included, so it was just a question of putting it all
940 together. And thanks to the great work of many Debian developers, the
941 compiler needed to build the source for the NXT is already included in
942 Debian, so I was read to go in less than an hour. The resulting robot
943 do not look very impressive in its simplicity:
</p>
945 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg"></p>
947 <p>Because I lack the infrared sensor used to control the robot in the
948 design from HiTechnic, I had to comment out the last task
949 (taskControl). I simply placed /* and */ around it get the program
950 working without that sensor present. Now it balances just fine until
951 the battery status run low:
</p>
953 <p align=
"center"><video width=
"70%" controls=
"true">
954 <source src=
"http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-balancing.ogv" type=
"video/ogg">
957 <p>Now we would like to teach it how to follow a line and take remote
958 control instructions using the included Bluetooth receiver in the NXT.
</p>
960 <p>If you, like me, love LEGO and want to make sure we find the tools
961 they need to work with LEGO in Debian and all our derivative
962 distributions like Ubuntu, check out
963 <a href=
"http://wiki.debian.org/LegoDesigners">the LEGO designers
964 project page
</a> and join the Debian LEGO team. Personally I own a
965 RCX and NXT controller (no EV3), and would like to make sure the
966 Debian tools needed to program the systems I own work as they
973 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>.
978 <div class=
"padding"></div>
982 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">Experience and updated recipe for using the Signal app without a mobile phone
</a>
989 <a href=
"http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html">I
990 wrote how to get the Signal Chrome/Chromium app working
</a> without
991 the ability to receive SMS messages (aka without a cell phone). It is
992 time to share some experiences and provide an updated setup.
</p>
994 <p>The Signal app have worked fine for several months now, and I use
995 it regularly to chat with my loved ones. I had a major snag at the
996 end of my summer vacation, when the the app completely forgot my
997 setup, identity and keys. The reason behind this major mess was
998 running out of disk space. To avoid that ever happening again I have
999 started storing everything in
<tt>userdata/
</tt> in git, to be able to
1000 roll back to an earlier version if the files are wiped by mistake. I
1001 had to use it once after introducing the git backup. When rolling
1002 back to an earlier version, one need to use the 'reset session' option
1003 in Signal to get going, and notify the people you talk with about the
1004 problem. I assume there is some sequence number tracking in the
1005 protocol to detect rollback attacks. The git repository is rather big
1006 (
674 MiB so far), but I have not tried to figure out if some of the
1007 content can be added to a .gitignore file due to lack of spare
1010 <p>I've also hit the
90 days timeout blocking, and noticed that this
1011 make it impossible to send messages using Signal. I could still
1012 receive them, but had to patch the code with a new timestamp to send.
1013 I believe the timeout is added by the developers to force people to
1014 upgrade to the latest version of the app, even when there is no
1015 protocol changes, to reduce the version skew among the user base and
1016 thus try to keep the number of support requests down.
</p>
1018 <p>Since my original recipe, the Signal source code changed slightly,
1019 making the old patch fail to apply cleanly. Below is an updated
1020 patch, including the shell wrapper I use to start Signal. The
1021 original version required a new user to locate the JavaScript console
1022 and call a function from there. I got help from a friend with more
1023 JavaScript knowledge than me to modify the code to provide a GUI
1024 button instead. This mean that to get started you just need to run
1025 the wrapper and click the 'Register without mobile phone' to get going
1026 now. I've also modified the timeout code to always set it to
90 days
1027 in the future, to avoid having to patch the code regularly.
</p>
1029 <p>So, the updated recipe for Debian Jessie:
</p>
1033 <li>First, install required packages to get the source code and the
1034 browser you need. Signal only work with Chrome/Chromium, as far as I
1035 know, so you need to install it.
1038 apt install git tor chromium
1039 git clone https://github.com/WhisperSystems/Signal-Desktop.git
1042 <li>Modify the source code using command listed in the the patch
1045 <li>Start Signal using the run-signal-app wrapper (for example using
1046 <tt>`pwd`/run-signal-app
</tt>).
1048 <li>Click on the 'Register without mobile phone', will in a phone
1049 number you can receive calls to the next minute, receive the
1050 verification code and enter it into the form field and press
1051 'Register'. Note, the phone number you use will be user Signal
1052 username, ie the way others can find you on Signal.
</li>
1054 <li>You can now use Signal to contact others. Note, new contacts do
1055 not show up in the contact list until you restart Signal, and there is
1056 no way to assign names to Contacts. There is also no way to create or
1057 update chat groups. I suspect this is because the web app do not have
1058 a associated contact database.
</li>
1062 <p>I am still a bit uneasy about using Signal, because of the way its
1063 main author moxie0 reject federation and accept dependencies to major
1064 corporations like Google (part of the code is fetched from Google) and
1065 Amazon (the central coordination point is owned by Amazon). See for
1067 <a href=
"https://github.com/LibreSignal/LibreSignal/issues/37">the
1068 LibreSignal issue tracker
</a> for a thread documenting the authors
1069 view on these issues. But the network effect is strong in this case,
1070 and several of the people I want to communicate with already use
1071 Signal. Perhaps we can all move to
<a href=
"https://ring.cx/">Ring
</a>
1072 once it
<a href=
"https://bugs.debian.org/830265">work on my
1073 laptop
</a>? It already work on Windows and Android, and is included
1074 in
<a href=
"https://tracker.debian.org/pkg/ring">Debian
</a> and
1075 <a href=
"https://launchpad.net/ubuntu/+source/ring">Ubuntu
</a>, but not
1076 working on Debian Stable.
</p>
1078 <p>Anyway, this is the patch I apply to the Signal code to get it
1079 working. It switch to the production servers, disable to timeout,
1080 make registration easier and add the shell wrapper:
</p>
1083 cd Signal-Desktop; cat
<<EOF | patch -p1
1084 diff --git a/js/background.js b/js/background.js
1085 index
24b4c1d.
.579345f
100644
1086 --- a/js/background.js
1087 +++ b/js/background.js
1092 - var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
1093 + var SERVER_URL = 'https://textsecure-service-ca.whispersystems.org';
1094 var SERVER_PORTS = [
80,
4433,
8443];
1095 - var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com';
1096 + var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments.s3.amazonaws.com';
1097 var messageReceiver;
1098 window.getSocketStatus = function() {
1099 if (messageReceiver) {
1100 diff --git a/js/expire.js b/js/expire.js
1101 index
639aeae..beb91c3
100644
1107 - var BUILD_EXPIRATION =
0;
1108 + var BUILD_EXPIRATION = Date.now() + (
90 *
24 *
60 *
60 *
1000);
1110 window.extension = window.extension || {};
1112 diff --git a/js/views/install_view.js b/js/views/install_view.js
1113 index
7816f4f.
.1d6233b
100644
1114 --- a/js/views/install_view.js
1115 +++ b/js/views/install_view.js
1118 'click .step1': this.selectStep.bind(this,
1),
1119 'click .step2': this.selectStep.bind(this,
2),
1120 - 'click .step3': this.selectStep.bind(this,
3)
1121 + 'click .step3': this.selectStep.bind(this,
3),
1122 + 'click .callreg': function() { extension.install('standalone') },
1125 clearQR: function() {
1126 diff --git a/options.html b/options.html
1127 index dc0f28e.
.8d709f6
100644
1131 <div class='nav'
>
1132 <h1
>{{ installWelcome }}
</h1
>
1133 <p
>{{ installTagline }}
</p
>
1134 -
<div
> <a class='button step2'
>{{ installGetStartedButton }}
</a
> </div
>
1135 +
<div
> <a class='button step2'
>{{ installGetStartedButton }}
</a
>
1136 +
<br
> <a
class="button callreg"
>Register without mobile phone
</a
>
1139 <span class='dot step1 selected'
></span
>
1140 <span class='dot step2'
></span
>
1141 <span class='dot step3'
></span
>
1142 --- /dev/null
2016-
10-
07 09:
55:
13.730181472 +
0200
1143 +++ b/run-signal-app
2016-
10-
10 08:
54:
09.434172391 +
0200
1149 +
userdata="`pwd`/userdata"
1150 +if [ -d "$userdata" ] && [ ! -d "$userdata/.git" ] ; then
1151 + (cd $userdata && git init)
1153 +(cd $userdata && git add . && git commit -m "Current status." || true)
1155 +
--proxy-server="socks://localhost:
9050" \
1156 + --user-data-dir=$userdata --load-and-launch-app=`pwd`
1158 chmod a+rx run-signal-app
1161 <p>As usual, if you use Bitcoin and want to show your support of my
1162 activities, please send Bitcoin donations to my address
1163 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1169 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
1174 <div class=
"padding"></div>
1178 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html">Isenkram, Appstream and udev make life as a LEGO builder easier
</a>
1184 <p><a href=
"http://packages.qa.debian.org/isenkram">The Isenkram
1185 system
</a> provide a practical and easy way to figure out which
1186 packages support the hardware in a given machine. The command line
1187 tool
<tt>isenkram-lookup
</tt> and the tasksel options provide a
1188 convenient way to list and install packages relevant for the current
1189 hardware during system installation, both user space packages and
1190 firmware packages. The GUI background daemon on the other hand provide
1191 a pop-up proposing to install packages when a new dongle is inserted
1192 while using the computer. For example, if you plug in a smart card
1193 reader, the system will ask if you want to install
<tt>pcscd
</tt> if
1194 that package isn't already installed, and if you plug in a USB video
1195 camera the system will ask if you want to install
<tt>cheese
</tt> if
1196 cheese is currently missing. This already work just fine.
</p>
1198 <p>But Isenkram depend on a database mapping from hardware IDs to
1199 package names. When I started no such database existed in Debian, so
1200 I made my own data set and included it with the isenkram package and
1201 made isenkram fetch the latest version of this database from git using
1202 http. This way the isenkram users would get updated package proposals
1203 as soon as I learned more about hardware related packages.
</p>
1205 <p>The hardware is identified using modalias strings. The modalias
1206 design is from the Linux kernel where most hardware descriptors are
1207 made available as a strings that can be matched using filename style
1208 globbing. It handle USB, PCI, DMI and a lot of other hardware related
1211 <p>The downside to the Isenkram specific database is that there is no
1212 information about relevant distribution / Debian version, making
1213 isenkram propose obsolete packages too. But along came AppStream, a
1214 cross distribution mechanism to store and collect metadata about
1215 software packages. When I heard about the proposal, I contacted the
1216 people involved and suggested to add a hardware matching rule using
1217 modalias strings in the specification, to be able to use AppStream for
1218 mapping hardware to packages. This idea was accepted and AppStream is
1219 now a great way for a package to announce the hardware it support in a
1220 distribution neutral way. I wrote
1221 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">a
1222 recipe on how to add such meta-information
</a> in a blog post last
1223 December. If you have a hardware related package in Debian, please
1224 announce the relevant hardware IDs using AppStream.
</p>
1226 <p>In Debian, almost all packages that can talk to a LEGO Mindestorms
1227 RCX or NXT unit, announce this support using AppStream. The effect is
1228 that when you insert such LEGO robot controller into your Debian
1229 machine, Isenkram will propose to install the packages needed to get
1230 it working. The intention is that this should allow the local user to
1231 start programming his robot controller right away without having to
1232 guess what packages to use or which permissions to fix.
</p>
1234 <p>But when I sat down with my son the other day to program our NXT
1235 unit using his Debian Stretch computer, I discovered something
1236 annoying. The local console user (ie my son) did not get access to
1237 the USB device for programming the unit. This used to work, but no
1238 longer in Jessie and Stretch. After some investigation and asking
1239 around on #debian-devel, I discovered that this was because udev had
1240 changed the mechanism used to grant access to local devices. The
1241 ConsoleKit mechanism from
<tt>/lib/udev/rules.d/
70-udev-acl.rules
</tt>
1242 no longer applied, because LDAP users no longer was added to the
1243 plugdev group during login. Michael Biebl told me that this method
1244 was obsolete and the new method used ACLs instead. This was good
1245 news, as the plugdev mechanism is a mess when using a remote user
1246 directory like LDAP. Using ACLs would make sure a user lost device
1247 access when she logged out, even if the user left behind a background
1248 process which would retain the plugdev membership with the ConsoleKit
1249 setup. Armed with this knowledge I moved on to fix the access problem
1250 for the LEGO Mindstorms related packages.
</p>
1252 <p>The new system uses a udev tag, 'uaccess'. It can either be
1253 applied directly for a device, or is applied in
1254 /lib/udev/rules.d/
70-uaccess.rules for classes of devices. As the
1255 LEGO Mindstorms udev rules did not have a class, I decided to add the
1256 tag directly in the udev rules files included in the packages. Here
1257 is one example. For the nqc C compiler for the RCX, the
1258 <tt>/lib/udev/rules.d/
60-nqc.rules
</tt> file now look like this:
1261 SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="
0694", ATTR{idProduct}=="
0001", \
1262 SYMLINK+="rcx-%k", TAG+="uaccess"
1265 <p>The key part is the 'TAG+="uaccess"' at the end. I suspect all
1266 packages using plugdev in their /lib/udev/rules.d/ files should be
1267 changed to use this tag (either directly or indirectly via
1268 <tt>70-uaccess.rules
</tt>). Perhaps a lintian check should be created
1271 <p>I've been unable to find good documentation on the uaccess feature.
1272 It is unclear to me if the uaccess tag is an internal implementation
1273 detail like the udev-acl tag used by
1274 <tt>/lib/udev/rules.d/
70-udev-acl.rules
</tt>. If it is, I guess the
1275 indirect method is the preferred way. Michael
1276 <a href=
"https://github.com/systemd/systemd/issues/4288">asked for more
1277 documentation from the systemd project
</a> and I hope it will make
1278 this clearer. For now I use the generic classes when they exist and
1279 is already handled by
<tt>70-uaccess.rules
</tt>, and add the tag
1280 directly if no such class exist.
</p>
1282 <p>To learn more about the isenkram system, please check out
1283 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">my
1284 blog posts tagged isenkram
</a>.
</p>
1286 <p>To help out making life for LEGO constructors in Debian easier,
1287 please join us on our IRC channel
1288 <a href=
"irc://irc.debian.org/%23debian-lego">#debian-lego
</a> and join
1289 the
<a href=
"https://alioth.debian.org/projects/debian-lego/">Debian
1290 LEGO team
</a> in the Alioth project we created yesterday. A mailing
1291 list is not yet created, but we are working on it. :)
</p>
1293 <p>As usual, if you use Bitcoin and want to show your support of my
1294 activities, please send Bitcoin donations to my address
1295 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1301 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>.
1306 <div class=
"padding"></div>
1310 <a href=
"http://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html">First draft Norwegian Bokmål edition of The Debian Administrator's Handbook now public
</a>
1317 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html">started
1318 to work
</a> on a Norwegian Bokmål edition of the "open access" book on
1319 how to set up and administrate a Debian system. Today I am happy to
1320 report that the first draft is now publicly available. You can find
1321 it on
<a href=
"https://debian-handbook.info/get/">get the Debian
1322 Administrator's Handbook page
</a> (under Other languages). The first
1323 eight chapters have a first draft translation, and we are working on
1324 proofreading the content. If you want to help out, please start
1326 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">the
1327 hosted weblate project page
</a>, and get in touch using
1328 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators">the
1329 translators mailing list
</a>. Please also check out
1330 <a href=
"https://debian-handbook.info/contribute/">the instructions for
1331 contributors
</a>. A good way to contribute is to proofread the text
1332 and update weblate if you find errors.
</p>
1334 <p>Our goal is still to make the Norwegian book available on paper as well as
1335 electronic form.
</p>
1341 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1346 <div class=
"padding"></div>
1350 <a href=
"http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">Coz can help you find bottlenecks in multi-threaded software - nice free software
</a>
1356 <p>This summer, I read a great article
1357 "
<a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
1358 This Is the Profiler You're Looking For
</a>" in USENIX ;login: about
1359 how to profile multi-threaded programs. It presented a system for
1360 profiling software by running experiences in the running program,
1361 testing how run time performance is affected by "speeding up
" parts of
1362 the code to various degrees compared to a normal run. It does this by
1363 slowing down parallel threads while the "faster up
" code is running
1364 and measure how this affect processing time. The processing time is
1365 measured using probes inserted into the code, either using progress
1366 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
1367 can also measure unmodified code by measuring complete the program
1368 runtime and running the program several times instead.</p>
1370 <p>The project and presentation was so inspiring that I would like to
1371 get the system into Debian. I
1372 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
830708">created
1373 a WNPP request for it</a> and contacted upstream to try to make the
1374 system ready for Debian by sending patches. The build process need to
1375 be changed a bit to avoid running 'git clone' to get dependencies, and
1376 to include the JavaScript web page used to visualize the collected
1377 profiling information included in the source package.
1378 But I expect that should work out fairly soon.</p>
1380 <p>The way the system work is fairly simple. To run an coz experiment
1381 on a binary with debug symbols available, start the program like this:
1383 <p><blockquote><pre>
1384 coz run --- program-to-run
1385 </pre></blockquote></p>
1387 <p>This will create a text file profile.coz with the instrumentation
1388 information. To show what part of the code affect the performance
1389 most, use a web browser and either point it to
1390 <a href="http://plasma-umass.github.io/coz/
">http://plasma-umass.github.io/coz/</a>
1391 or use the copy from git (in the gh-pages branch). Check out this web
1392 site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
1393 profiling more useful you include <coz.h> and insert the
1394 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
1395 code, rebuild and run the profiler. This allow coz to do more
1396 targeted experiments.</p>
1398 <p>A video published by ACM
1399 <a href="https://www.youtube.com/watch?v=jE0V-p1odPg
">presenting the
1400 Coz profiler</a> is available from Youtube. There is also a paper
1401 from the 25th Symposium on Operating Systems Principles available
1403 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger
">Coz:
1404 finding code that counts with causal profiling</a>.</p>
1406 <p><a href="https://github.com/plasma-umass/coz
">The source code</a>
1407 for Coz is available from github. It will only build with clang
1409 <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=
55606">C++
1410 feature missing in GCC</a>, but I've submitted
1411 <a href="https://github.com/plasma-umass/coz/pull/
67">a patch to solve
1412 it</a> and hope it will be included in the upstream source soon.</p>
1414 <p>Please get in touch if you, like me, would like to see this piece
1415 of software in Debian. I would very much like some help with the
1416 packaging effort, as I lack the in depth knowledge on how to package
1423 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/nice free software
">nice free software</a>.
1428 <div class="padding
"></div>
1432 <a href="http://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html
">Unlocking HTC Desire HD on Linux using unruu and fastboot</a>
1438 <p>Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
1439 to be a slight challenge. Here is the recipe if I ever need to do it
1440 again. It all started by me wanting to try the recipe to set up
1441 <a href="https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy
">an
1442 hardened Android installation</a> from the Tor project blog on a
1443 device I had access to. It is a old mobile phone with a broken
1444 microphone The initial idea had been to just
1445 <a href="http://wiki.cyanogenmod.org/w/Install_CM_for_ace
">install
1446 CyanogenMod on it</a>, but did not quite find time to start on it
1447 until a few days ago.</p>
1449 <p>The unlock process is supposed to be simple: (1) Boot into the boot
1450 loader (press volume down and power at the same time), (2) select
1451 'fastboot' before (3) connecting the device via USB to a Linux
1452 machine, (4) request the device identifier token by running 'fastboot
1453 oem get_identifier_token', (5) request the device unlocking key using
1454 the <a href="http://www.htcdev.com/bootloader/
">HTC developer web
1455 site</a> and unlock the phone using the key file emailed to you.</p>
1457 <p>Unfortunately, this only work fi you have hboot version 2.00.0029
1458 or newer, and the device I was working on had 2.00.0027. This
1459 apparently can be easily fixed by downloading a Windows program and
1460 running it on your Windows machine, if you accept the terms Microsoft
1461 require you to accept to use Windows - which I do not. So I had to
1462 come up with a different approach. I got a lot of help from AndyCap
1463 on #nuug, and would not have been able to get this working without
1466 <p>First I needed to extract the hboot firmware from
1467 <a href="http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00
.0029.exe
">the
1468 windows binary for HTC Desire HD</a> downloaded as 'the RUU' from HTC.
1469 For this there is is <a href="https://github.com/kmdm/unruu/
">a github
1470 project named unruu</a> using libunshield. The unshield tool did not
1471 recognise the file format, but unruu worked and extracted rom.zip,
1472 containing the new hboot firmware and a text file describing which
1473 devices it would work for.</p>
1475 <p>Next, I needed to get the new firmware into the device. For this I
1476 followed some instructions
1477 <a href="http://www.htc1guru.com/
2013/
09/new-ruu-zips-posted/
">available
1478 from HTC1Guru.com</a>, and ran these commands as root on a Linux
1479 machine with Debian testing:</p>
1482 adb reboot-bootloader
1483 fastboot oem rebootRUU
1484 fastboot flash zip rom.zip
1485 fastboot flash zip rom.zip
1489 <p>The flash command apparently need to be done twice to take effect,
1490 as the first is just preparations and the second one do the flashing.
1491 The adb command is just to get to the boot loader menu, so turning the
1492 device on while holding volume down and the power button should work
1495 <p>With the new hboot version in place I could start following the
1496 instructions on the HTC developer web site. I got the device token
1500 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
1503 <p>And once I got the unlock code via email, I could use it like
1507 fastboot flash unlocktoken Unlock_code.bin
1510 <p>And with that final step in place, the phone was unlocked and I
1511 could start stuffing the software of my own choosing into the device.
1512 So far I only inserted a replacement recovery image to wipe the phone
1513 before I start. We will see what happen next. Perhaps I should
1514 install <a href="https://www.debian.org/
">Debian</a> on it. :)</p>
1520 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
1525 <div class="padding
"></div>
1529 <a href="http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html
">How to use the Signal app if you only have a land line (ie no mobile phone)</a>
1535 <p>For a while now, I have wanted to test
1536 <a href="https://whispersystems.org/
">the Signal app</a>, as it is
1537 said to provide end to end encrypted communication and several of my
1538 friends and family are already using it. As I by choice do not own a
1539 mobile phone, this proved to be harder than expected. And I wanted to
1540 have the source of the client and know that it was the code used on my
1541 machine. But yesterday I managed to get it working. I used the
1542 Github source, compared it to the source in
1543 <a href="https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk?hl=en-US
">the
1544 Signal Chrome app</a> available from the Chrome web store, applied
1545 patches to use the production Signal servers, started the app and
1546 asked for the hidden "register without a smart phone" form. Here is
1547 the recipe how I did it.
</p>
1549 <p>First, I fetched the Signal desktop source from Github, using
1552 git clone https://github.com/WhisperSystems/Signal-Desktop.git
1555 <p>Next, I patched the source to use the production servers, to be
1556 able to talk to other Signal users:
</p>
1559 cat
<<EOF | patch -p0
1560 diff -ur ./js/background.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
1561 --- ./js/background.js
2016-
06-
29 13:
43:
15.630344628 +
0200
1562 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
2016-
06-
29 14:
06:
29.530300934 +
0200
1567 - var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
1568 - var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com';
1569 + var SERVER_URL = 'https://textsecure-service-ca.whispersystems.org:
4433';
1570 + var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments.s3.amazonaws.com';
1571 var messageReceiver;
1572 window.getSocketStatus = function() {
1573 if (messageReceiver) {
1574 diff -ur ./js/expire.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js
1575 --- ./js/expire.js
2016-
06-
29 13:
43:
15.630344628 +
0200
1576 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js2016-
06-
29 14:
06:
29.530300934 +
0200
1580 - var BUILD_EXPIRATION =
0;
1581 + var BUILD_EXPIRATION =
1474492690000;
1583 window.extension = window.extension || {};
1588 <p>The first part is changing the servers, and the second is updating
1589 an expiration timestamp. This timestamp need to be updated regularly.
1590 It is set
90 days in the future by the build process (Gruntfile.js).
1591 The value is seconds since
1970 times
1000, as far as I can tell.
</p>
1593 <p>Based on a tip and good help from the #nuug IRC channel, I wrote a
1594 script to launch Signal in Chromium.
</p>
1601 --proxy-server="socks://localhost:
9050" \
1602 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
1605 <p> The script start the app and configure Chromium to use the Tor
1606 SOCKS5 proxy to make sure those controlling the Signal servers (today
1607 Amazon and Whisper Systems) as well as those listening on the lines
1608 will have a harder time location my laptop based on the Signal
1609 connections if they use source IP address.
</p>
1611 <p>When the script starts, one need to follow the instructions under
1612 "Standalone Registration" in the CONTRIBUTING.md file in the git
1613 repository. I right clicked on the Signal window to get up the
1614 Chromium debugging tool, visited the 'Console' tab and wrote
1615 'extension.install("standalone")' on the console prompt to get the
1616 registration form. Then I entered by land line phone number and
1617 pressed 'Call'.
5 seconds later the phone rang and a robot voice
1618 repeated the verification code three times. After entering the number
1619 into the verification code field in the form, I could start using
1620 Signal from my laptop.
1622 <p>As far as I can tell, The Signal app will leak who is talking to
1623 whom and thus who know who to those controlling the central server,
1624 but such leakage is hard to avoid with a centrally controlled server
1625 setup. It is something to keep in mind when using Signal - the
1626 content of your chats are harder to intercept, but the meta data
1627 exposing your contact network is available to people you do not know.
1628 So better than many options, but not great. And sadly the usage is
1629 connected to my land line, thus allowing those controlling the server
1630 to associate it to my home and person. I would prefer it if only
1631 those I knew could tell who I was on Signal. There are options
1632 avoiding such information leakage, but most of my friends are not
1633 using them, so I am stuck with Signal for now.
</p>
1635 <p><strong>Update
2017-
01-
10</strong>: There is an updated blog post
1637 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">Experience
1638 and updated recipe for using the Signal app without a mobile
1645 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
1650 <div class=
"padding"></div>
1654 <a href=
"http://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html">The new "best" multimedia player in Debian?
</a>
1660 <p>When I set out a few weeks ago to figure out
1661 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html">which
1662 multimedia player in Debian claimed to support most file formats /
1663 MIME types
</a>, I was a bit surprised how varied the sets of MIME types
1664 the various players claimed support for. The range was from
55 to
130
1665 MIME types. I suspect most media formats are supported by all
1666 players, but this is not really reflected in the MimeTypes values in
1667 their desktop files. There are probably also some bogus MIME types
1668 listed, but it is hard to identify which one this is.
</p>
1670 <p>Anyway, in the mean time I got in touch with upstream for some of
1671 the players suggesting to add more MIME types to their desktop files,
1672 and decided to spend some time myself improving the situation for my
1673 favorite media player VLC. The fixes for VLC entered Debian unstable
1674 yesterday. The complete list of MIME types can be seen on the
1675 <a href=
"https://wiki.debian.org/DebianMultimedia/PlayerSupport">Multimedia
1676 player MIME type support status
</a> Debian wiki page.
</p>
1678 <p>The new "best" multimedia player in Debian? It is VLC, followed by
1679 totem, parole, kplayer, gnome-mpv, mpv, smplayer, mplayer-gui and
1680 kmplayer. I am sure some of the other players desktop files support
1681 several of the formats currently listed as working only with vlc,
1682 toten and parole.
</p>
1684 <p>A sad observation is that only
14 MIME types are listed as
1685 supported by all the tested multimedia players in Debian in their
1686 desktop files: audio/mpeg, audio/vnd.rn-realaudio, audio/x-mpegurl,
1687 audio/x-ms-wma, audio/x-scpls, audio/x-wav, video/mp4, video/mpeg,
1688 video/quicktime, video/vnd.rn-realvideo, video/x-matroska,
1689 video/x-ms-asf, video/x-ms-wmv and video/x-msvideo. Personally I find
1690 it sad that video/ogg and video/webm is not supported by all the media
1691 players in Debian. As far as I can tell, all of them can handle both
1698 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
1703 <div class=
"padding"></div>
1707 <a href=
"http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html">A program should be able to open its own files on Linux
</a>
1713 <p>Many years ago, when koffice was fresh and with few users, I
1714 decided to test its presentation tool when making the slides for a
1715 talk I was giving for NUUG on Japhar, a free Java virtual machine. I
1716 wrote the first draft of the slides, saved the result and went to bed
1717 the day before I would give the talk. The next day I took a plane to
1718 the location where the meeting should take place, and on the plane I
1719 started up koffice again to polish the talk a bit, only to discover
1720 that kpresenter refused to load its own data file. I cursed a bit and
1721 started making the slides again from memory, to have something to
1722 present when I arrived. I tested that the saved files could be
1723 loaded, and the day seemed to be rescued. I continued to polish the
1724 slides until I suddenly discovered that the saved file could no longer
1725 be loaded into kpresenter. In the end I had to rewrite the slides
1726 three times, condensing the content until the talk became shorter and
1727 shorter. After the talk I was able to pinpoint the problem
–
1728 kpresenter wrote inline images in a way itself could not understand.
1729 Eventually that bug was fixed and kpresenter ended up being a great
1730 program to make slides. The point I'm trying to make is that we
1731 expect a program to be able to load its own data files, and it is
1732 embarrassing to its developers if it can't.
</p>
1734 <p>Did you ever experience a program failing to load its own data
1735 files from the desktop file browser? It is not a uncommon problem. A
1736 while back I discovered that the screencast recorder
1737 gtk-recordmydesktop would save an Ogg Theora video file the KDE file
1738 browser would refuse to open. No video player claimed to understand
1739 such file. I tracked down the cause being
<tt>file --mime-type
</tt>
1740 returning the application/ogg MIME type, which no video player I had
1741 installed listed as a MIME type they would understand. I asked for
1742 <a href=
"http://bugs.gw.com/view.php?id=382">file to change its
1743 behavour
</a> and use the MIME type video/ogg instead. I also asked
1744 several video players to add video/ogg to their desktop files, to give
1745 the file browser an idea what to do about Ogg Theora files. After a
1746 while, the desktop file browsers in Debian started to handle the
1747 output from gtk-recordmydesktop properly.
</p>
1749 <p>But history repeats itself. A few days ago I tested the music
1750 system Rosegarden again, and I discovered that the KDE and xfce file
1751 browsers did not know what to do with the Rosegarden project files
1752 (*.rg). I've reported
<a href=
"http://bugs.debian.org/825993">the
1753 rosegarden problem to BTS
</a> and a fix is commited to git and will be
1754 included in the next upload. To increase the chance of me remembering
1755 how to fix the problem next time some program fail to load its files
1756 from the file browser, here are some notes on how to fix it.
</p>
1758 <p>The file browsers in Debian in general operates on MIME types.
1759 There are two sources for the MIME type of a given file. The output from
1760 <tt>file --mime-type
</tt> mentioned above, and the content of the
1761 shared MIME type registry (under /usr/share/mime/). The file MIME
1762 type is mapped to programs supporting the MIME type, and this
1763 information is collected from
1764 <a href=
"https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/">the
1765 desktop files
</a> available in /usr/share/applications/. If there is
1766 one desktop file claiming support for the MIME type of the file, it is
1767 activated when asking to open a given file. If there are more, one
1768 can normally select which one to use by right-clicking on the file and
1769 selecting the wanted one using 'Open with' or similar. In general
1770 this work well. But it depend on each program picking a good MIME
1772 <a href=
"http://www.iana.org/assignments/media-types/media-types.xhtml">a
1773 MIME type registered with IANA
</a>), file and/or the shared MIME
1774 registry recognizing the file and the desktop file to list the MIME
1775 type in its list of supported MIME types.
</p>
1777 <p>The
<tt>/usr/share/mime/packages/rosegarden.xml
</tt> entry for
1778 <a href=
"http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">the
1779 Shared MIME database
</a> look like this:
</p>
1781 <p><blockquote><pre>
1782 <?xml
version="
1.0"
encoding="UTF-
8"?
>
1783 <mime-info
xmlns="http://www.freedesktop.org/standards/shared-mime-info"
>
1784 <mime-type
type="audio/x-rosegarden"
>
1785 <sub-class-of
type="application/x-gzip"/
>
1786 <comment
>Rosegarden project file
</comment
>
1787 <glob
pattern="*.rg"/
>
1790 </pre></blockquote></p>
1792 <p>This states that audio/x-rosegarden is a kind of application/x-gzip
1793 (it is a gzipped XML file). Note, it is much better to use an
1794 official MIME type registered with IANA than it is to make up ones own
1795 unofficial ones like the x-rosegarden type used by rosegarden.
</p>
1797 <p>The desktop file of the rosegarden program failed to list
1798 audio/x-rosegarden in its list of supported MIME types, causing the
1799 file browsers to have no idea what to do with *.rg files:
</p>
1801 <p><blockquote><pre>
1802 % grep Mime /usr/share/applications/rosegarden.desktop
1803 MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
1804 X-KDE-NativeMimeType=audio/x-rosegarden-composition
1806 </pre></blockquote></p>
1808 <p>The fix was to add "audio/x-rosegarden;" at the end of the
1811 <p>If you run into a file which fail to open the correct program when
1812 selected from the file browser, please check out the output from
1813 <tt>file --mime-type
</tt> for the file, ensure the file ending and
1814 MIME type is registered somewhere under /usr/share/mime/ and check
1815 that some desktop file under /usr/share/applications/ is claiming
1816 support for this MIME type. If not, please report a bug to have it
1823 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>.
1828 <div class=
"padding"></div>
1832 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html">Isenkram with PackageKit support - new version
0.23 available in Debian unstable
</a>
1838 <p><a href=
"https://tracker.debian.org/pkg/isenkram">The isenkram
1839 system
</a> is a user-focused solution in Debian for handling hardware
1840 related packages. The idea is to have a database of mappings between
1841 hardware and packages, and pop up a dialog suggesting for the user to
1842 install the packages to use a given hardware dongle. Some use cases
1843 are when you insert a Yubikey, it proposes to install the software
1844 needed to control it; when you insert a braille reader list it
1845 proposes to install the packages needed to send text to the reader;
1846 and when you insert a ColorHug screen calibrator it suggests to
1847 install the driver for it. The system work well, and even have a few
1848 command line tools to install firmware packages and packages for the
1849 hardware already in the machine (as opposed to hotpluggable hardware).
</p>
1851 <p>The system was initially written using aptdaemon, because I found
1852 good documentation and example code on how to use it. But aptdaemon
1853 is going away and is generally being replaced by
1854 <a href=
"http://www.freedesktop.org/software/PackageKit/">PackageKit
</a>,
1855 so Isenkram needed a rewrite. And today, thanks to the great patch
1856 from my college Sunil Mohan Adapa in the FreedomBox project, the
1857 rewrite finally took place. I've just uploaded a new version of
1858 Isenkram into Debian Unstable with the patch included, and the default
1859 for the background daemon is now to use PackageKit. To check it out,
1860 install the
<tt>isenkram
</tt> package and insert some hardware dongle
1861 and see if it is recognised.
</p>
1863 <p>If you want to know what kind of packages isenkram would propose for
1864 the machine it is running on, you can check out the isenkram-lookup
1865 program. This is what it look like on a Thinkpad X230:
</p>
1867 <p><blockquote><pre>
1883 </pre></blockquote></p>
1885 <p>The hardware mappings come from several places. The preferred way
1886 is for packages to announce their hardware support using
1887 <a href=
"https://www.freedesktop.org/software/appstream/docs/">the
1888 cross distribution appstream system
</a>.
1890 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">previous
1891 blog posts about isenkram
</a> to learn how to do that.
</p>
1897 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>.
1902 <div class=
"padding"></div>
1906 <a href=
"http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html">Discharge rate estimate in new battery statistics collector for Debian
</a>
1912 <p>Yesterday I updated the
1913 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
1914 package in Debian
</a> with a few patches sent to me by skilled and
1915 enterprising users. There were some nice user and visible changes.
1916 First of all, both desktop menu entries now work. A design flaw in
1917 one of the script made the history graph fail to show up (its PNG was
1918 dumped in ~/.xsession-errors) if no controlling TTY was available.
1919 The script worked when called from the command line, but not when
1920 called from the desktop menu. I changed this to look for a DISPLAY
1921 variable or a TTY before deciding where to draw the graph, and now the
1922 graph window pop up as expected.
</p>
1924 <p>The next new feature is a discharge rate estimator in one of the
1925 graphs (the one showing the last few hours). New is also the user of
1926 colours showing charging in blue and discharge in red. The percentages
1927 of this graph is relative to last full charge, not battery design
1930 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-rate.png"/></p>
1932 <p>The other graph show the entire history of the collected battery
1933 statistics, comparing it to the design capacity of the battery to
1934 visualise how the battery life time get shorter over time. The red
1935 line in this graph is what the previous graph considers
100 percent:
1937 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-history.png"/></p>
1939 <p>In this graph you can see that I only charge the battery to
80
1940 percent of last full capacity, and how the capacity of the battery is
1943 <p>The last new feature is in the collector, which now will handle
1944 more hardware models. On some hardware, Linux power supply
1945 information is stored in /sys/class/power_supply/ACAD/, while the
1946 collector previously only looked in /sys/class/power_supply/AC/. Now
1947 both are checked to figure if there is power connected to the
1950 <p>If you are interested in how your laptop battery is doing, please
1952 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
</a>
1953 in Debian unstable, or rebuild it on Jessie to get it working on
1954 Debian stable. :) The upstream source is available from
<a
1955 href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
1956 Patches are very welcome.
</p>
1958 <p>As usual, if you use Bitcoin and want to show your support of my
1959 activities, please send Bitcoin donations to my address
1960 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1966 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>.
1971 <div class=
"padding"></div>
1975 <a href=
"http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html">Debian now with ZFS on Linux included
</a>
1981 <p>Today, after many years of hard work from many people,
1982 <a href=
"http://zfsonlinux.org/">ZFS for Linux
</a> finally entered
1983 Debian. The package status can be seen on
1984 <a href=
"https://tracker.debian.org/pkg/zfs-linux">the package tracker
1985 for zfs-linux
</a>. and
1986 <a href=
"https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org">the
1987 team status page
</a>. If you want to help out, please join us.
1988 <a href=
"http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git">The
1989 source code
</a> is available via git on Alioth. It would also be
1990 great if you could help out with
1991 <a href=
"https://tracker.debian.org/pkg/dkms">the dkms package
</a>, as
1992 it is an important piece of the puzzle to get ZFS working.
</p>
1998 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>.
2003 <div class=
"padding"></div>
2007 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html">What is the best multimedia player in Debian?
</a>
2013 <p><strong>Where I set out to figure out which multimedia player in
2014 Debian claim support for most file formats.
</strong></p>
2016 <p>A few years ago, I had a look at the media support for Browser
2017 plugins in Debian, to get an idea which plugins to include in Debian
2018 Edu. I created a script to extract the set of supported MIME types
2019 for each plugin, and used this to find out which multimedia browser
2020 plugin supported most file formats / media types.
2021 <a href=
"https://wiki.debian.org/DebianEdu/BrowserMultimedia">The
2022 result
</a> can still be seen on the Debian wiki, even though it have
2023 not been updated for a while. But browser plugins are less relevant
2024 these days, so I thought it was time to look at standalone
2027 <p>A few days ago I was tired of VLC not being listed as a viable
2028 player when I wanted to play videos from the Norwegian National
2029 Broadcasting Company, and decided to investigate why. The cause is a
2030 <a href=
"https://bugs.debian.org/822245">missing MIME type in the VLC
2031 desktop file
</a>. In the process I wrote a script to compare the set
2032 of MIME types announced in the desktop file and the browser plugin,
2033 only to discover that there is quite a large difference between the
2034 two for VLC. This discovery made me dig up the script I used to
2035 compare browser plugins, and adjust it to compare desktop files
2036 instead, to try to figure out which multimedia player in Debian
2037 support most file formats.
</p>
2039 <p>The result can be seen on the Debian Wiki, as
2040 <a href=
"https://wiki.debian.org/DebianMultimedia/PlayerSupport">a
2041 table listing all MIME types supported by one of the packages included
2042 in the table
</a>, with the package supporting most MIME types being
2043 listed first in the table.
</p>
2045 </p>The best multimedia player in Debian? It is totem, followed by
2046 parole, kplayer, mpv, vlc, smplayer mplayer-gui gnome-mpv and
2047 kmplayer. Time for the other players to update their announced MIME
2054 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
2059 <div class=
"padding"></div>
2063 <a href=
"http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html">The Pyra - handheld computer with Debian preinstalled
</a>
2069 A friend of mine made me aware of
2070 <a href=
"https://pyra-handheld.com/boards/pages/pyra/">The Pyra
</a>, a
2071 handheld computer which will be delivered with Debian preinstalled. I
2072 would love to get one of those for my birthday. :)
</p>
2074 <p>The machine is a complete ARM-based PC with micro HDMI, SATA, USB
2075 plugs and many others connectors, and include a full keyboard and a
5"
2076 LCD touch screen. The
6000mAh battery is claimed to provide a whole
2077 day of battery life time, but I have not seen any independent tests
2078 confirming this. The vendor is still collecting preorders, and the
2079 last I heard last night was that
22 more orders were needed before
2080 production started.
</p>
2082 <p>As far as I know, this is the first handheld preinstalled with
2083 Debian. Please let me know if you know of any others. Is it the
2084 first computer being sold with Debian preinstalled?
</p>
2090 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>.
2095 <div class=
"padding"></div>
2099 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html">Lets make a Norwegian Bokmål edition of The Debian Administrator's Handbook
</a>
2105 <p>During this weekends
2106 <a href=
"http://www.nuug.no/news/Oslo__Takk_for_feilfiksingsfesten.shtml">bug
2107 squashing party and developer gathering
</a>, we decided to do our part
2108 to make sure there are good books about Debian available in Norwegian
2109 Bokmål, and got in touch with the people behind the
2110 <a href=
"http://debian-handbook.info/">Debian Administrator's Handbook
2111 project
</a> to get started. If you want to help out, please start
2113 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">the
2114 hosted weblate project page
</a>, and get in touch using
2115 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators">the
2116 translators mailing list
</a>. Please also check out
2117 <a href=
"https://debian-handbook.info/contribute/">the instructions for
2118 contributors
</a>.
</p>
2120 <p>The book is already available on paper in English, French and
2121 Japanese, and our goal is to get it available on paper in Norwegian
2122 Bokmål too. In addition to the paper edition, there are also EPUB and
2123 Mobi versions available. And there are incomplete translations
2124 available for many more languages.
</p>
2130 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
2135 <div class=
"padding"></div>
2139 <a href=
"http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html">One in two hundred Debian users using ZFS on Linux?
</a>
2145 <p>Just for fun I had a look at the popcon number of ZFS related
2146 packages in Debian, and was quite surprised with what I found. I use
2147 ZFS myself at home, but did not really expect many others to do so.
2148 But I might be wrong.
</p>
2151 <a href=
"https://qa.debian.org/popcon.php?package=spl-linux">the popcon
2152 results for spl-linux
</a>, there are
1019 Debian installations, or
2153 0.53% of the population, with the package installed. As far as I know
2154 the only use of the spl-linux package is as a support library for ZFS
2155 on Linux, so I use it here as proxy for measuring the number of ZFS
2156 installation on Linux in Debian. In the kFreeBSD variant of Debian
2157 the ZFS feature is already available, and there
2158 <a href=
"https://qa.debian.org/popcon.php?package=zfsutils">the popcon
2159 results for zfsutils
</a> show
1625 Debian installations or
0.84% of
2160 the population. So I guess I am not alone in using ZFS on Debian.
</p>
2162 <p>But even though the Debian project leader Lucas Nussbaum
2163 <a href=
"https://lists.debian.org/debian-devel-announce/2015/04/msg00006.html">announced
2164 in April
2015</a> that the legal obstacles blocking ZFS on Debian were
2165 cleared, the package is still not in Debian. The package is again in
2166 the NEW queue. Several uploads have been rejected so far because the
2167 debian/copyright file was incomplete or wrong, but there is no reason
2168 to give up. The current status can be seen on
2169 <a href=
"https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org">the
2170 team status page
</a>, and
2171 <a href=
"http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git">the
2172 source code
</a> is available on Alioth.
</p>
2174 <p>As I want ZFS to be included in next version of Debian to make sure
2175 my home server can function in the future using only official Debian
2176 packages, and the current blocker is to get the debian/copyright file
2177 accepted by the FTP masters in Debian, I decided a while back to try
2178 to help out the team. This was the background for my blog post about
2179 <a href=
"http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">creating,
2180 updating and checking debian/copyright semi-automatically
</a>, and I
2181 used the techniques I explored there to try to find any errors in the
2182 copyright file. It is not very easy to check every one of the around
2183 2000 files in the source package, but I hope we this time got it
2184 right. If you want to help out, check out the git source and try to
2185 find missing entries in the debian/copyright file.
</p>
2191 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>.
2196 <div class=
"padding"></div>
2200 <a href=
"http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html">Full battery stats collector is now available in Debian
</a>
2206 <p>Since this morning, the battery-stats package in Debian include an
2207 extended collector that will collect the complete battery history for
2208 later processing and graphing. The original collector store the
2209 battery level as percentage of last full level, while the new
2210 collector also record battery vendor, model, serial number, design
2211 full level, last full level and current battery level. This make it
2212 possible to predict the lifetime of the battery as well as visualise
2213 the energy flow when the battery is charging or discharging.
</p>
2215 <p>The new tools are available in
<tt>/usr/share/battery-stats/
</tt>
2216 in the version
0.5.1 package in unstable. Get the new battery level graph
2217 and lifetime prediction by running:
2220 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
2223 <p>Or select the 'Battery Level Graph' from your application menu.
</p>
2225 <p>The flow in/out of the battery can be seen by running (no menu
2229 /usr/share/battery-stats/battery-stats-graph-flow
2232 <p>I'm not quite happy with the way the data is visualised, at least
2233 when there are few data points. The graphs look a bit better with a
2234 few years of data.
</p>
2236 <p>A while back one important feature I use in the battery stats
2237 collector broke in Debian. The scripts in
2238 <tt>/usr/lib/pm-utils/power.d/
</tt> were no longer executed. I
2239 suspect it happened when Jessie started using systemd, but I do not
2240 know. The issue is reported as
2241 <a href=
"https://bugs.debian.org/818649">bug #
818649</a> against
2242 pm-utils. I managed to work around it by adding an udev rule to call
2243 the collector script every time the power connector is connected and
2244 disconnected. With this fix in place it was finally time to make a
2245 new release of the package, and get it into Debian.
</p>
2247 <p>If you are interested in how your laptop battery is doing, please
2249 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
</a>
2250 in Debian unstable, or rebuild it on Jessie to get it working on
2251 Debian stable. :) The upstream source is available from
2252 <a href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
2253 As always, patches are very welcome.
</p>
2259 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>.
2264 <div class=
"padding"></div>
2268 <a href=
"http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html">Making battery measurements a little easier in Debian
</a>
2274 <p>Back in September, I blogged about
2275 <a href=
"http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html">the
2276 system I wrote to collect statistics about my laptop battery
</a>, and
2277 how it showed the decay and death of this battery (now replaced). I
2278 created a simple deb package to handle the collection and graphing,
2279 but did not want to upload it to Debian as there were already
2280 <a href=
"https://tracker.debian.org/pkg/battery-stats">a battery-stats
2281 package in Debian
</a> that should do the same thing, and I did not see
2282 a point of uploading a competing package when battery-stats could be
2283 fixed instead. I reported a few bugs about its non-function, and
2284 hoped someone would step in and fix it. But no-one did.
</p>
2286 <p>I got tired of waiting a few days ago, and took matters in my own
2287 hands. The end result is that I am now the new upstream developer of
2288 battery stats (
<a href=
"https://github.com/petterreinholdtsen/battery-stats">available from github
</a>) and part of the team maintaining
2289 battery-stats in Debian, and the package in Debian unstable is finally
2290 able to collect battery status using the
<tt>/sys/class/power_supply/
</tt>
2291 information provided by the Linux kernel. If you install the
2292 battery-stats package from unstable now, you will be able to get a
2293 graph of the current battery fill level, to get some idea about the
2294 status of the battery. The source package build and work just fine in
2295 Debian testing and stable (and probably oldstable too, but I have not
2296 tested). The default graph you get for that system look like this:
</p>
2298 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-03-15-battery-stats-graph-example.png" width=
"70%" align=
"center"></p>
2300 <p>My plans for the future is to merge my old scripts into the
2301 battery-stats package, as my old scripts collected a lot more details
2302 about the battery. The scripts are merged into the upstream
2303 battery-stats git repository already, but I am not convinced they work
2304 yet, as I changed a lot of paths along the way. Will have to test a
2305 bit more before I make a new release.
</p>
2307 <p>I will also consider changing the file format slightly, as I
2308 suspect the way I combine several values into one field might make it
2309 impossible to know the type of the value when using it for processing
2312 <p>If you would like I would like to keep an close eye on your laptop
2313 battery, check out the battery-stats package in
2314 <a href=
"https://tracker.debian.org/pkg/battery-stats">Debian
</a> and
2316 <a href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
2317 I would love some help to improve the system further.
</p>
2323 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>.
2328 <div class=
"padding"></div>
2332 <a href=
"http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">Creating, updating and checking debian/copyright semi-automatically
</a>
2338 <p>Making packages for Debian requires quite a lot of attention to
2339 details. And one of the details is the content of the
2340 debian/copyright file, which should list all relevant licenses used by
2341 the code in the package in question, preferably in
2342 <a href=
"https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">machine
2343 readable DEP5 format
</a>.
</p>
2345 <p>For large packages with lots of contributors it is hard to write
2346 and update this file manually, and if you get some detail wrong, the
2347 package is normally rejected by the ftpmasters. So getting it right
2348 the first time around get the package into Debian faster, and save
2349 both you and the ftpmasters some work.. Today, while trying to figure
2350 out what was wrong with
2351 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447">the
2352 zfsonlinux copyright file
</a>, I decided to spend some time on
2353 figuring out the options for doing this job automatically, or at least
2354 semi-automatically.
</p>
2356 <p>Lucikly, there are at least two tools available for generating the
2357 file based on the code in the source package,
2358 <tt><a href=
"https://tracker.debian.org/pkg/debmake">debmake
</a></tt>
2359 and
<tt><a href=
"https://tracker.debian.org/pkg/cme">cme
</a></tt>. I'm
2360 not sure which one of them came first, but both seem to be able to
2361 create a sensible draft file. As far as I can tell, none of them can
2362 be trusted to get the result just right, so the content need to be
2363 polished a bit before the file is OK to upload. I found the debmake
2365 <a href=
"http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html">a
2366 blog posts from
2014</a>.
2368 <p>To generate using debmake, use the -cc option:
2371 debmake -cc
> debian/copyright
2374 <p>Note there are some problems with python and non-ASCII names, so
2375 this might not be the best option.
</p>
2377 <p>The cme option is based on a config parsing library, and I found
2379 <a href=
"https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/">a
2380 blog post from
2015</a>. To generate using cme, use the 'update
2381 dpkg-copyright' option:
2384 cme update dpkg-copyright
2387 <p>This will create or update debian/copyright. The cme tool seem to
2388 handle UTF-
8 names better than debmake.
</p>
2390 <p>When the copyright file is created, I would also like some help to
2391 check if the file is correct. For this I found two good options,
2392 <tt>debmake -k
</tt> and
<tt>license-reconcile
</tt>. The former seem
2393 to focus on license types and file matching, and is able to detect
2394 ineffective blocks in the copyright file. The latter reports missing
2395 copyright holders and years, but was confused by inconsistent license
2396 names (like CDDL vs. CDDL-
1.0). I suspect it is good to use both and
2397 fix all issues reported by them before uploading. But I do not know
2398 if the tools and the ftpmasters agree on what is important to fix in a
2399 copyright file, so the package might still be rejected.
</p>
2401 <p>The devscripts tool
<tt>licensecheck
</tt> deserve mentioning. It
2402 will read through the source and try to find all copyright statements.
2403 It is not comparing the result to the content of debian/copyright, but
2404 can be useful when verifying the content of the copyright file.
</p>
2406 <p>Are you aware of better tools in Debian to create and update
2407 debian/copyright file. Please let me know, or blog about it on
2408 planet.debian.org.
</p>
2410 <p>As usual, if you use Bitcoin and want to show your support of my
2411 activities, please send Bitcoin donations to my address
2412 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
2414 <p><strong>Update
2016-
02-
20</strong>: I got a tip from Mike Gabriel
2415 on how to use licensecheck and cdbs to create a draft copyright file
2418 licensecheck --copyright -r `find * -type f` | \
2419 /usr/lib/cdbs/licensecheck2dep5
> debian/copyright.auto
2422 <p>He mentioned that he normally check the generated file into the
2423 version control system to make it easier to discover license and
2424 copyright changes in the upstream source. I will try to do the same
2425 with my packages in the future.
</p>
2427 <p><strong>Update
2016-
02-
21</strong>: The cme author recommended
2428 against using -quiet for new users, so I removed it from the proposed
2435 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>.
2440 <div class=
"padding"></div>
2444 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html">Using appstream in Debian to locate packages with firmware and mime type support
</a>
2450 <p>The
<a href=
"https://wiki.debian.org/DEP-11">appstream system
</a>
2451 is taking shape in Debian, and one provided feature is a very
2452 convenient way to tell you which package to install to make a given
2453 firmware file available when the kernel is looking for it. This can
2454 be done using apt-file too, but that is for someone else to blog
2457 <p>Here is a small recipe to find the package with a given firmware
2458 file, in this example I am looking for ctfw-
3.2.3.0.bin, randomly
2459 picked from the set of firmware announced using appstream in Debian
2460 unstable. In general you would be looking for the firmware requested
2461 by the kernel during kernel module loading. To find the package
2462 providing the example file, do like this:
</p>
2465 % apt install appstream
2469 % appstreamcli what-provides firmware:runtime ctfw-
3.2.3.0.bin | \
2470 awk '/Package:/ {print $
2}'
2475 <p>See
<a href=
"https://wiki.debian.org/AppStream/Guidelines">the
2476 appstream wiki
</a> page to learn how to embed the package metadata in
2477 a way appstream can use.
</p>
2479 <p>This same approach can be used to find any package supporting a
2480 given MIME type. This is very useful when you get a file you do not
2481 know how to handle. First find the mime type using
<tt>file
2482 --mime-type
</tt>, and next look up the package providing support for
2483 it. Lets say you got an SVG file. Its MIME type is image/svg+xml,
2484 and you can find all packages handling this type like this:
</p>
2487 % apt install appstream
2491 % appstreamcli what-provides mimetype image/svg+xml | \
2492 awk '/Package:/ {print $
2}'
2516 <p>I believe the MIME types are fetched from the desktop file for
2517 packages providing appstream metadata.
</p>
2523 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>.
2528 <div class=
"padding"></div>
2532 <a href=
"http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html">Creepy, visualise geotagged social media information - nice free software
</a>
2538 <p>Most people seem not to realise that every time they walk around
2539 with the computerised radio beacon known as a mobile phone their
2540 position is tracked by the phone company and often stored for a long
2541 time (like every time a SMS is received or sent). And if their
2542 computerised radio beacon is capable of running programs (often called
2543 mobile apps) downloaded from the Internet, these programs are often
2544 also capable of tracking their location (if the app requested access
2545 during installation). And when these programs send out information to
2546 central collection points, the location is often included, unless
2547 extra care is taken to not send the location. The provided
2548 information is used by several entities, for good and bad (what is
2549 good and bad, depend on your point of view). What is certain, is that
2550 the private sphere and the right to free movement is challenged and
2551 perhaps even eradicated for those announcing their location this way,
2552 when they share their whereabouts with private and public
2555 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png"></p>
2557 <p>The phone company logs provide a register of locations to check out
2558 when one want to figure out what the tracked person was doing. It is
2559 unavailable for most of us, but provided to selected government
2560 officials, company staff, those illegally buying information from
2561 unfaithful servants and crackers stealing the information. But the
2562 public information can be collected and analysed, and a free software
2563 tool to do so is called
2564 <a href=
"http://www.geocreepy.com/">Creepy or Cree.py
</a>. I
2565 discovered it when I read
2566 <a href=
"http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html">an
2567 article about Creepy
</a> in the Norwegian newspaper Aftenposten i
2568 November
2014, and decided to check if it was available in Debian.
2569 The python program was in Debian, but
2570 <a href=
"https://tracker.debian.org/pkg/creepy">the version in
2571 Debian
</a> was completely broken and practically unmaintained. I
2572 uploaded a new version which did not work quite right, but did not
2573 have time to fix it then. This Christmas I decided to finally try to
2574 get Creepy operational in Debian. Now a fixed version is available in
2575 Debian unstable and testing, and almost all Debian specific patches
2577 <a href=
"https://github.com/jkakavas/creepy">upstream
</a>.
</p>
2579 <p>The Creepy program visualises geolocation information fetched from
2580 Twitter, Instagram, Flickr and Google+, and allow one to get a
2581 complete picture of every social media message posted recently in a
2582 given area, or track the movement of a given individual across all
2583 these services. Earlier it was possible to use the search API of at
2584 least some of these services without identifying oneself, but these
2585 days it is impossible. This mean that to use Creepy, you need to
2586 configure it to log in as yourself on these services, and provide
2587 information to them about your search interests. This should be taken
2588 into account when using Creepy, as it will also share information
2589 about yourself with the services.
</p>
2591 <p>The picture above show the twitter messages sent from (or at least
2592 geotagged with a position from) the city centre of Oslo, the capital
2593 of Norway. One useful way to use Creepy is to first look at
2594 information tagged with an area of interest, and next look at all the
2595 information provided by one or more individuals who was in the area.
2596 I tested it by checking out which celebrity provide their location in
2597 twitter messages by checkout out who sent twitter messages near a
2598 Norwegian TV station, and next could track their position over time,
2599 making it possible to locate their home and work place, among other
2600 things. A similar technique have been
2601 <a href=
"http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl">used
2602 to locate Russian soldiers in Ukraine
</a>, and it is both a powerful
2603 tool to discover lying governments, and a useful tool to help people
2604 understand the value of the private information they provide to the
2607 <p>The package is not trivial to backport to Debian Stable/Jessie, as
2608 it depend on several python modules currently missing in Jessie (at
2609 least python-instagram, python-flickrapi and
2610 python-requests-toolbelt).
</p>
2613 <a href=
"https://screenshots.debian.net/package/creepy">the image to
2614 screenshots.debian.net
</a> and licensed it under the same terms as the
2615 Creepy program in Debian.)
</p>
2621 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/nice free software">nice free software
</a>.
2626 <div class=
"padding"></div>
2630 <a href=
"http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html">Always download Debian packages using Tor - the simple recipe
</a>
2636 <p>During his DebConf15 keynote, Jacob Appelbaum
2637 <a href=
"https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/">observed
2638 that those listening on the Internet lines would have good reason to
2639 believe a computer have a given security hole
</a> if it download a
2640 security fix from a Debian mirror. This is a good reason to always
2641 use encrypted connections to the Debian mirror, to make sure those
2642 listening do not know which IP address to attack. In August, Richard
2643 Hartmann observed that encryption was not enough, when it was possible
2644 to interfere download size to security patches or the fact that
2645 download took place shortly after a security fix was released, and
2646 <a href=
"http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/">proposed
2647 to always use Tor to download packages from the Debian mirror
</a>. He
2648 was not the first to propose this, as the
2649 <tt><a href=
"https://tracker.debian.org/pkg/apt-transport-tor">apt-transport-tor
</a></tt>
2650 package by Tim Retout already existed to make it easy to convince apt
2651 to use
<a href=
"https://www.torproject.org/">Tor
</a>, but I was not
2652 aware of that package when I read the blog post from Richard.
</p>
2654 <p>Richard discussed the idea with Peter Palfrader, one of the Debian
2655 sysadmins, and he set up a Tor hidden service on one of the central
2656 Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
2657 it possible to download packages directly between two tor nodes,
2658 making sure the network traffic always were encrypted.
</p>
2660 <p>Here is a short recipe for enabling this on your machine, by
2661 installing
<tt>apt-transport-tor
</tt> and replacing http and https
2662 urls with tor+http and tor+https, and using the hidden service instead
2663 of the official Debian mirror site. I recommend installing
2664 <tt>etckeeper
</tt> before you start to have a history of the changes
2668 apt install apt-transport-tor
2669 sed -i 's% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%' /etc/apt/sources.list
2670 sed -i 's% http% tor+http%' /etc/apt/sources.list
2673 <p>If you have more sources listed in /etc/apt/sources.list.d/, run
2674 the sed commands for these too. The sed command is assuming your are
2675 using the ftp.debian.org Debian mirror. Adjust the command (or just
2676 edit the file manually) to match your mirror.
</p>
2678 <p>This work in Debian Jessie and later. Note that tools like
2679 <tt>apt-file
</tt> only recently started using the apt transport
2680 system, and do not work with these tor+http URLs. For
2681 <tt>apt-file
</tt> you need the version currently in experimental,
2682 which need a recent apt version currently only in unstable. So if you
2683 need a working
<tt>apt-file
</tt>, this is not for you.
</p>
2685 <p>Another advantage from this change is that your machine will start
2686 using Tor regularly and at fairly random intervals (every time you
2687 update the package lists or upgrade or install a new package), thus
2688 masking other Tor traffic done from the same machine. Using Tor will
2689 become normal for the machine in question.
</p>
2691 <p>On
<a href=
"https://wiki.debian.org/FreedomBox">Freedombox
</a>, APT
2692 is set up by default to use
<tt>apt-transport-tor
</tt> when Tor is
2693 enabled. It would be great if it was the default on any Debian
2700 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
2705 <div class=
"padding"></div>
2709 <a href=
"http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html">OpenALPR, find car license plates in video streams - nice free software
</a>
2715 <p>When I was a kid, we used to collect "car numbers", as we used to
2716 call the car license plate numbers in those days. I would write the
2717 numbers down in my little book and compare notes with the other kids
2718 to see how many region codes we had seen and if we had seen some
2719 exotic or special region codes and numbers. It was a fun game to pass
2720 time, as we kids have plenty of it.
</p>
2722 <p>A few days I came across
2723 <a href=
"https://github.com/openalpr/openalpr">the OpenALPR
2724 project
</a>, a free software project to automatically discover and
2725 report license plates in images and video streams, and provide the
2726 "car numbers" in a machine readable format. I've been looking for
2727 such system for a while now, because I believe it is a bad idea that the
2728 <a href=
"https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic
2729 number plate recognition
</a> tool only is available in the hands of
2730 the powerful, and want it to be available also for the powerless to
2731 even the score when it comes to surveillance and sousveillance. I
2732 discovered the developer
2733 <a href=
"https://bugs.debian.org/747509">wanted to get the tool into
2734 Debian
</a>, and as I too wanted it to be in Debian, I volunteered to
2735 help him get it into shape to get the package uploaded into the Debian
2738 <p>Today we finally managed to get the package into shape and uploaded
2739 it into Debian, where it currently
2740 <a href=
"https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits
2741 in the NEW queue
</a> for review by the Debian ftpmasters.
</p>
2743 <p>I guess you are wondering why on earth such tool would be useful
2744 for the common folks, ie those not running a large government
2745 surveillance system? Well, I plan to put it in a computer on my bike
2746 and in my car, tracking the cars nearby and allowing me to be notified
2747 when number plates on my watch list are discovered. Another use case
2748 was suggested by a friend of mine, who wanted to set it up at his home
2749 to open the car port automatically when it discovered the plate on his
2750 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
2751 capable of placing his license plate number of a piece of cardboard to
2752 open his car port, men replied that it was always unlocked anyway. I
2753 guess for such use case it make sense. I am sure there are other use
2754 cases too, for those with imagination and a vision.
</p>
2756 <p>If you want to build your own version of the Debian package, check
2757 out the upstream git source and symlink ./distros/debian to ./debian/
2758 before running "debuild" to build the source. Or wait a bit until the
2759 package show up in unstable.
</p>
2765 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/nice free software">nice free software
</a>.
2770 <div class=
"padding"></div>
2774 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">Using appstream with isenkram to install hardware related packages in Debian
</a>
2780 <p>Around three years ago, I created
2781 <a href=
"http://packages.qa.debian.org/isenkram">the isenkram
2782 system
</a> to get a more practical solution in Debian for handing
2783 hardware related packages. A GUI system in the isenkram package will
2784 present a pop-up dialog when some hardware dongle supported by
2785 relevant packages in Debian is inserted into the machine. The same
2786 lookup mechanism to detect packages is available as command line
2787 tools in the isenkram-cli package. In addition to mapping hardware,
2788 it will also map kernel firmware files to packages and make it easy to
2789 install needed firmware packages automatically. The key for this
2790 system to work is a good way to map hardware to packages, in other
2791 words, allow packages to announce what hardware they will work
2794 <p>I started by providing data files in the isenkram source, and
2795 adding code to download the latest version of these data files at run
2796 time, to ensure every user had the most up to date mapping available.
2797 I also added support for storing the mapping in the Packages file in
2798 the apt repositories, but did not push this approach because while I
2799 was trying to figure out how to best store hardware/package mappings,
2800 <a href=
"http://www.freedesktop.org/software/appstream/docs/">the
2801 appstream system
</a> was announced. I got in touch and suggested to
2802 add the hardware mapping into that data set to be able to use
2803 appstream as a data source, and this was accepted at least for the
2804 Debian version of appstream.
</p>
2806 <p>A few days ago using appstream in Debian for this became possible,
2807 and today I uploaded a new version
0.20 of isenkram adding support for
2808 appstream as a data source for mapping hardware to packages. The only
2809 package so far using appstream to announce its hardware support is my
2810 pymissile package. I got help from Matthias Klumpp with figuring out
2811 how do add the required
2812 <a href=
"https://appstream.debian.org/html/sid/main/metainfo/pymissile.html">metadata
2813 in pymissile
</a>. I added a file debian/pymissile.metainfo.xml with
2817 <?xml
version="
1.0"
encoding="UTF-
8"?
>
2819 <id
>pymissile
</id
>
2820 <metadata_license
>MIT
</metadata_license
>
2821 <name
>pymissile
</name
>
2822 <summary
>Control original Striker USB Missile Launcher
</summary
>
2825 Pymissile provides a curses interface to control an original
2826 Marks and Spencer / Striker USB Missile Launcher, as well as a
2827 motion control script to allow a webcamera to control the
2830 </description
>
2832 <modalias
>usb:v1130p0202d*
</modalias
>
2837 <p>The key for isenkram is the component/provides/modalias value,
2838 which is a glob style match rule for hardware specific strings
2839 (modalias strings) provided by the Linux kernel. In this case, it
2840 will map to all USB devices with vendor code
1130 and product code
2843 <p>Note, it is important that the license of all the metadata files
2844 are compatible to have permissions to aggregate them into archive wide
2845 appstream files. Matthias suggested to use MIT or BSD licenses for
2846 these files. A challenge is figuring out a good id for the data, as
2847 it is supposed to be globally unique and shared across distributions
2848 (in other words, best to coordinate with upstream what to use). But
2849 it can be changed later or, so we went with the package name as
2850 upstream for this project is dormant.
</p>
2852 <p>To get the metadata file installed in the correct location for the
2853 mirror update scripts to pick it up and include its content the
2854 appstream data source, the file must be installed in the binary
2855 package under /usr/share/appdata/. I did this by adding the following
2856 line to debian/pymissile.install:
</p>
2859 debian/pymissile.metainfo.xml usr/share/appdata
2862 <p>With that in place, the command line tool isenkram-lookup will list
2863 all packages useful on the current computer automatically, and the GUI
2864 pop-up handler will propose to install the package not already
2865 installed if a hardware dongle is inserted into the machine in
2868 <p>Details of the modalias field in appstream is available from the
2869 <a href=
"https://wiki.debian.org/DEP-11">DEP-
11</a> proposal.
</p>
2871 <p>To locate the modalias values of all hardware present in a machine,
2872 try running this command on the command line:
</p>
2875 cat $(find /sys/devices/|grep modalias)
2878 <p>To learn more about the isenkram system, please check out
2879 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">my
2880 blog posts tagged isenkram
</a>.
</p>
2886 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>.
2891 <div class=
"padding"></div>
2895 <a href=
"http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html">The GNU General Public License is not magic pixie dust
</a>
2901 <p>A blog post from my fellow Debian developer Paul Wise titled
2902 "
<a href=
"http://bonedaddy.net/pabs3/log/2015/11/27/sfc-supporter/">The
2903 GPL is not magic pixie dust
</a>" explain the importance of making sure
2904 the <a href="http://www.gnu.org/copyleft/gpl.html
">GPL</a> is enforced.
2905 I quote the blog post from Paul in full here with his permission:<p>
2909 <p><a href="https://sfconservancy.org/supporter/
"><img src="https://sfconservancy.org/img/supporter-badge.png
" width="194" height="90" alt="Become a Software Freedom Conservancy Supporter!
" align="right
" border="0" /></a></p>
2912 The GPL is not magic pixie dust. It does not work by itself.<br/>
2914 The first step is to choose a
2915 <a href="https://copyleft.org/
">copyleft</a> license for your
2918 The next step is, when someone fails to follow that copyleft license,
2919 <b>it must be enforced</b><br/>
2921 and its a simple fact of our modern society that such type of
2924 is incredibly expensive to do and incredibly difficult to do.
2927 <p><small>-- <a href="http://ebb.org/bkuhn/
">Bradley Kuhn</a>, in
2928 <a href="http://faif.us/
" title="Free as in Freedom
">FaiF</a>
2929 <a href="http://faif.us/cast/
2015/nov/
24/
0x57/
">episode
2930 0x57</a></small></p>
2932 <p>As the Debian Website
2933 <a href="https://bugs.debian.org/
794116">used</a>
2934 <a href="https://anonscm.debian.org/viewvc/webwml/webwml/english/intro/free.wml?r1=
1.24&r2=
1.25">to</a>
2935 imply, public domain and permissively licensed software can lead to
2936 the production of more proprietary software as people discover useful
2937 software, extend it and or incorporate it into their hardware or
2938 software products. Copyleft licenses such as the GNU GPL were created
2939 to close off this avenue to the production of proprietary software but
2940 such licenses are not enough. With the ongoing adoption of Free
2941 Software by individuals and groups, inevitably the community's
2942 expectations of license compliance are violated, usually out of
2943 ignorance of the way Free Software works, but not always. As Karen
2944 and Bradley explained in <a href="http://faif.us/
" title="Free as in
2946 <a href="http://faif.us/cast/
2015/nov/
24/
0x57/
">episode 0x57</a>,
2947 copyleft is nothing if no-one is willing and able to stand up in court
2948 to protect it. The reality of today's world is that legal
2949 representation is expensive, difficult and time consuming. With
2950 <a href="http://gpl-violations.org/
">gpl-violations.org</a> in hiatus
2951 <a href="http://gpl-violations.org/news/
20151027-homepage-recovers/
">until</a>
2952 some time in 2016, the <a href="https://sfconservancy.org/
">Software
2953 Freedom Conservancy</a> (a tax-exempt charity) is the major defender
2954 of the Linux project, Debian and other groups against GPL violations.
2955 In March the SFC supported a
2956 <a href="https://sfconservancy.org/news/
2015/mar/
05/vmware-lawsuit/
">lawsuit
2957 by Christoph Hellwig</a> against VMware for refusing to
2958 <a href="https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html
">comply
2959 with the GPL</a> in relation to their use of parts of the Linux
2960 kernel. Since then two of their sponsors pulled corporate funding and
2962 <a href="https://sfconservancy.org/blog/
2015/nov/
24/faif-carols-fundraiser/
">blocked
2963 or cancelled their talks</a>. As a result they have decided to rely
2964 less on corporate funding and more on the broad community of
2965 individuals who support Free Software and copyleft. So the SFC has
2966 <a href="https://sfconservancy.org/news/
2015/nov/
23/
2015fundraiser/
">launched</a>
2967 a <a href="https://sfconservancy.org/supporter/
">campaign</a> to create
2968 a community of folks who stand up for copyleft and the GPL by
2969 supporting their work on promoting and supporting copyleft and Free
2972 <p>If you support Free Software,
2973 <a href="https://sfconservancy.org/blog/
2015/nov/
26/like-what-I-do/
">like</a>
2974 what the SFC do, agree with their
2975 <a href="https://sfconservancy.org/linux-compliance/principles.html
">compliance
2976 principles</a>, are happy about their
2977 <a href="https://sfconservancy.org/supporter/
">successes</a> in 2015,
2978 work on a project that is an SFC
2979 <a href="https://sfconservancy.org/members/current/
">member</a> and or
2980 just want to stand up for copyleft, please join
2981 <a href="https://identi.ca/cwebber/image/JQGPA4qbTyyp3-MY8QpvuA
">Christopher
2983 <a href="https://sfconservancy.org/blog/
2015/nov/
24/faif-carols-fundraiser/
">Carol
2985 <a href="http://www.jonobacon.org/
2015/
11/
25/supporting-software-freedom-conservancy/
">Jono
2986 Bacon</a>, myself and
2987 <a href="https://sfconservancy.org/sponsors/#supporters
">others</a> in
2989 <a href="https://sfconservancy.org/supporter/
">supporter</a>. For the
2990 next week your donation will be
2991 <a href="https://sfconservancy.org/news/
2015/nov/
27/black-friday/
">matched</a>
2992 by an anonymous donor. Please also consider asking your employer to
2993 match your donation or become a sponsor of SFC. Don't forget to
2994 spread the word about your support for SFC via email, your blog and or
2995 social media accounts.</p>
2999 <p>I agree with Paul on this topic and just signed up as a Supporter
3000 of Software Freedom Conservancy myself. Perhaps you should be a
3007 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett</a>.
3012 <div class="padding
"></div>
3016 <a href="http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html
">PGP key transition statement for key EE4E02F9</a>
3022 <p>I've needed a new OpenPGP key for a while, but have not had time to
3023 set it up properly. I wanted to generate it offline and have it
3024 available on <a href="http://shop.kernelconcepts.de/#openpgp
">a OpenPGP
3025 smart card</a> for daily use, and learning how to do it and finding
3026 time to sit down with an offline machine almost took forever. But
3027 finally I've been able to complete the process, and have now moved
3028 from my old GPG key to a new GPG key. See
3029 <a href="http://people.skolelinux.org/pere/blog/images/
2015-
11-
17-new-gpg-key-transition.txt
">the
3030 full transition statement, signed with both my old and new key</a> for
3031 the details. This is my new key:</p>
3034 pub 3936R/<a href="http://pgp.cs.uu.nl/stats/
111D6B29EE4E02F9.html
">111D6B29EE4E02F9</a> 2015-11-03 [expires: 2019-11-14]
3035 Key fingerprint = 3AC7 B2E3 ACA5 DF87 78F1 D827 111D 6B29 EE4E 02F9
3036 uid Petter Reinholdtsen <pere@hungry.com>
3037 uid Petter Reinholdtsen <pere@debian.org>
3038 sub 4096R/87BAFB0E 2015-11-03 [expires: 2019-11-02]
3039 sub 4096R/F91E6DE9 2015-11-03 [expires: 2019-11-02]
3040 sub 4096R/A0439BAB 2015-11-03 [expires: 2019-11-02]
3043 <p>The key can be downloaded from the OpenPGP key servers, signed by
3046 <p>If you signed my old key
3047 (<a href="http://pgp.cs.uu.nl/stats/DB4CCC4B2A30D729.html
">DB4CCC4B2A30D729</a>),
3048 I'd very much appreciate a signature on my new key, details and
3049 instructions in the transition statement. I m happy to reciprocate if
3050 you have a similarly signed transition statement to present.</p>
3056 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
3061 <div class="padding
"></div>
3065 <a href="http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html
">The life and death of a laptop battery</a>
3071 <p>When I get a new laptop, the battery life time at the start is OK.
3072 But this do not last. The last few laptops gave me a feeling that
3073 within a year, the life time is just a fraction of what it used to be,
3074 and it slowly become painful to use the laptop without power connected
3075 all the time. Because of this, when I got a new Thinkpad X230 laptop
3076 about two years ago, I decided to monitor its battery state to have
3077 more hard facts when the battery started to fail.</p>
3079 <img src="http://people.skolelinux.org/pere/blog/images/
2015-
09-
24-laptop-battery-graph.png
"/>
3081 <p>First I tried to find a sensible Debian package to record the
3082 battery status, assuming that this must be a problem already handled
3083 by someone else. I found
3084 <a href="https://tracker.debian.org/pkg/battery-stats
">battery-stats</a>,
3085 which collects statistics from the battery, but it was completely
3086 broken. I sent a few suggestions to the maintainer, but decided to
3087 write my own collector as a shell script while I waited for feedback
3089 <a href="http://www.ifweassume.com/
2013/
08/the-de-evolution-of-my-laptop-battery.html
">a
3090 blog post about the battery development on a MacBook Air</a> I also
3092 <a href="https://github.com/jradavenport/batlog.git
">batlog</a>, not
3093 available in Debian.</p>
3095 <p>I started my collector 2013-07-15, and it has been collecting
3096 battery stats ever since. Now my
3097 /var/log/hjemmenett-battery-status.log file contain around 115,000
3098 measurements, from the time the battery was working great until now,
3099 when it is unable to charge above 7% of original capacity. My
3100 collector shell script is quite simple and look like this:</p>
3105 # http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
3107 # http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
3108 logfile=/var/log/hjemmenett-battery-status.log
3110 files="manufacturer model_name technology serial_number \
3111 energy_full energy_full_design energy_now cycle_count status"
3113 if [ ! -e "$logfile" ] ; then
3124 # Print complete message in one echo call, to avoid race condition
3125 # when several log processes run in parallel.
3126 msg=$(printf
"%s," $(date +%s); \
3127 for f in $files; do \
3128 printf
"%s," $(cat $f); \
3133 cd /sys/class/power_supply
3136 (cd $bat && log_battery
>> "$logfile")
3140 <p>The script is called when the power management system detect a
3141 change in the power status (power plug in or out), and when going into
3142 and out of hibernation and suspend. In addition, it collect a value
3143 every
10 minutes. This make it possible for me know when the battery
3144 is discharging, charging and how the maximum charge change over time.
3145 The code for the Debian package
3146 <a href=
"https://github.com/petterreinholdtsen/battery-status">is now
3147 available on github
</a>.
</p>
3149 <p>The collected log file look like this:
</p>
3152 timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status,
3153 1376591133,LGC,
45N1025,Li-ion,
974,
62800000,
62160000,
39050000,
0,Discharging,
3155 1443090528,LGC,
45N1025,Li-ion,
974,
4900000,
62160000,
4900000,
0,Full,
3156 1443090601,LGC,
45N1025,Li-ion,
974,
4900000,
62160000,
4900000,
0,Full,
3159 <p>I wrote a small script to create a graph of the charge development
3160 over time. This graph depicted above show the slow death of my laptop
3163 <p>But why is this happening? Why are my laptop batteries always
3164 dying in a year or two, while the batteries of space probes and
3165 satellites keep working year after year. If we are to believe
3166 <a href=
"http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries">Battery
3167 University
</a>, the cause is me charging the battery whenever I have a
3168 chance, and the fix is to not charge the Lithium-ion batteries to
100%
3169 all the time, but to stay below
90% of full charge most of the time.
3170 I've been told that the Tesla electric cars
3171 <a href=
"http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit">limit
3172 the charge of their batteries to
80%
</a>, with the option to charge to
3173 100% when preparing for a longer trip (not that I would want a car
3174 like Tesla where rights to privacy is abandoned, but that is another
3175 story), which I guess is the option we should have for laptops on
3178 <p>Is there a good and generic way with Linux to tell the battery to
3179 stop charging at
80%, unless requested to charge to
100% once in
3180 preparation for a longer trip? I found
3181 <a href=
"http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity">one
3182 recipe on askubuntu for Ubuntu to limit charging on Thinkpad to
3183 80%
</a>, but could not get it to work (kernel module refused to
3186 <p>I wonder why the battery capacity was reported to be more than
100%
3187 at the start. I also wonder why the "full capacity" increases some
3188 times, and if it is possible to repeat the process to get the battery
3189 back to design capacity. And I wonder if the discharge and charge
3190 speed change over time, or if this stay the same. I did not yet try
3191 to write a tool to calculate the derivative values of the battery
3192 level, but suspect some interesting insights might be learned from
3195 <p>Update
2015-
09-
24: I got a tip to install the packages
3196 acpi-call-dkms and tlp (unfortunately missing in Debian stable)
3197 packages instead of the tp-smapi-dkms package I had tried to use
3198 initially, and use 'tlp setcharge
40 80' to change when charging start
3199 and stop. I've done so now, but expect my existing battery is toast
3200 and need to be replaced. The proposal is unfortunately Thinkpad
3207 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>.
3212 <div class=
"padding"></div>
3216 <a href=
"http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html">New laptop - some more clues and ideas based on feedback
</a>
3222 <p>Several people contacted me after my previous blog post about my
3223 need for a new laptop, and provided very useful feedback. I wish to
3224 thank every one of these. Several pointed me to the possibility of
3225 fixing my X230, and I am already in the process of getting Lenovo to
3226 do so thanks to the on site, next day support contract covering the
3227 machine. But the battery is almost useless (I expect to replace it
3228 with a non-official battery) and I do not expect the machine to live
3229 for many more years, so it is time to plan its replacement. If I did
3230 not have a support contract, it was suggested to find replacement parts
3231 using
<a href=
"http://www.francecrans.com/">FrancEcrans
</a>, but it
3232 might present a language barrier as I do not understand French.
</p>
3234 <p>One tip I got was to use the
3235 <a href=
"https://skinflint.co.uk/?cat=nb">Skinflint
</a> web service to
3236 compare laptop models. It seem to have more models available than
3237 prisjakt.no. Another tip I got from someone I know have similar
3238 keyboard preferences was that the HP EliteBook
840 keyboard is not
3239 very good, and this matches my experience with earlier EliteBook
3240 keyboards I tested. Because of this, I will not consider it any further.
3242 <p>When I wrote my blog post, I was not aware of Thinkpad X250, the
3243 newest Thinkpad X model. The keyboard reintroduces mouse buttons
3244 (which is missing from the X240), and is working fairly well with
3245 Debian Sid/Unstable according to
3246 <a href=
"http://www.corsac.net/X250/">Corsac.net
</a>. The reports I
3247 got on the keyboard quality are not consistent. Some say the keyboard
3248 is good, others say it is ok, while others say it is not very good.
3249 Those with experience from X41 and and X60 agree that the X250
3250 keyboard is not as good as those trusty old laptops, and suggest I
3251 keep and fix my X230 instead of upgrading, or get a used X230 to
3252 replace it. I'm also told that the X250 lack leds for caps lock, disk
3253 activity and battery status, which is very convenient on my X230. I'm
3254 also told that the CPU fan is running very often, making it a bit
3255 noisy. In any case, the X250 do not work out of the box with Debian
3256 Stable/Jessie, one of my requirements.
</p>
3258 <p>I have also gotten a few vendor proposals, one was
3259 <a href=
"http://pro-star.com">Pro-Star
</a>, another was
3260 <a href=
"http://shop.gluglug.org.uk/product/libreboot-x200/">Libreboot
</a>.
3261 The latter look very attractive to me.
</p>
3263 <p>Again, thank you all for the very useful feedback. It help a lot
3264 as I keep looking for a replacement.
</p>
3266 <p>Update
2015-
07-
06: I was recommended to check out the
3267 <a href=
"">lapstore.de
</a> web shop for used laptops. They got several
3269 <a href=
"http://www.lapstore.de/f.php/shop/lapstore/f/411/lang/x/kw/Lenovo_ThinkPad_X_Serie/">old
3270 thinkpad X models
</a>, and provide one year warranty.
</p>
3276 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>.
3281 <div class=
"padding"></div>
3285 <a href=
"http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html">Time to find a new laptop, as the old one is broken after only two years
</a>
3291 <p>My primary work horse laptop is failing, and will need a
3292 replacement soon. The left
5 cm of the screen on my Thinkpad X230
3293 started flickering yesterday, and I suspect the cause is a broken
3294 cable, as changing the angle of the screen some times get rid of the
3297 <p>My requirements have not really changed since I bought it, and is
3299 <a href=
"http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">I
3300 described them in
2013</a>. The last time I bought a laptop, I had
3302 <a href=
"http://www.prisjakt.no/category.php?k=353">prisjakt.no
</a>
3303 where I could select at least a few of the requirements (mouse pin,
3304 wifi, weight) and go through the rest manually. Three button mouse
3305 and a good keyboard is not available as an option, and all the three
3306 laptop models proposed today (Thinkpad X240, HP EliteBook
820 G1 and
3307 G2) lack three mouse buttons). It is also unclear to me how good the
3308 keyboard on the HP EliteBooks are. I hope Lenovo have not messed up
3309 the keyboard, even if the quality and robustness in the X series have
3310 deteriorated since X41.
</p>
3312 <p>I wonder how I can find a sensible laptop when none of the options
3313 seem sensible to me? Are there better services around to search the
3314 set of available laptops for features? Please send me an email if you
3315 have suggestions.
</p>
3317 <p>Update
2015-
07-
23: I got a suggestion to check out the FSF
3318 <a href=
"http://www.fsf.org/resources/hw/endorsement/respects-your-freedom">list
3319 of endorsed hardware
</a>, which is useful background information.
</p>
3325 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>.
3330 <div class=
"padding"></div>
3334 <a href=
"http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html">How to stay with sysvinit in Debian Jessie
</a>
3340 <p>By now, it is well known that Debian Jessie will not be using
3341 sysvinit as its boot system by default. But how can one keep using
3342 sysvinit in Jessie? It is fairly easy, and here are a few recipes,
3344 <a href=
"http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html">Erich
3346 <a href=
"http://smcv.pseudorandom.co.uk/2014/still_universal/">Simon
3349 <p>If you already are using Wheezy and want to upgrade to Jessie and
3350 keep sysvinit as your boot system, create a file
3351 <tt>/etc/apt/preferences.d/use-sysvinit
</tt> with this content before
3354 <p><blockquote><pre>
3355 Package: systemd-sysv
3356 Pin: release o=Debian
3358 </pre></blockquote><p>
3360 <p>This file content will tell apt and aptitude to not consider
3361 installing systemd-sysv as part of any installation and upgrade
3362 solution when resolving dependencies, and thus tell it to avoid
3363 systemd as a default boot system. The end result should be that the
3364 upgraded system keep using sysvinit.
</p>
3366 <p>If you are installing Jessie for the first time, there is no way to
3367 get sysvinit installed by default (debootstrap used by
3368 debian-installer have no option for this), but one can tell the
3369 installer to switch to sysvinit before the first boot. Either by
3370 using a kernel argument to the installer, or by adding a line to the
3371 preseed file used. First, the kernel command line argument:
3373 <p><blockquote><pre>
3374 preseed/
late_command="in-target apt-get install --purge -y sysvinit-core"
3375 </pre></blockquote><p>
3377 <p>Next, the line to use in a preseed file:
</p>
3379 <p><blockquote><pre>
3380 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
3381 </pre></blockquote><p>
3383 <p>One can of course also do this after the first boot by installing
3384 the sysvinit-core package.
</p>
3386 <p>I recommend only using sysvinit if you really need it, as the
3387 sysvinit boot sequence in Debian have several hardware specific bugs
3388 on Linux caused by the fact that it is unpredictable when hardware
3389 devices show up during boot. But on the other hand, the new default
3390 boot system still have a few rough edges I hope will be fixed before
3391 Jessie is released.
</p>
3393 <p>Update
2014-
11-
26: Inspired by
3394 <ahref=
"https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg">a
3395 blog post by Torsten Glaser
</a>, added --purge to the preseed
3402 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3407 <div class=
"padding"></div>
3411 <a href=
"http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html">A Debian package for SMTP via Tor (aka SMTorP) using exim4
</a>
3417 <p>The right to communicate with your friends and family in private,
3418 without anyone snooping, is a right every citicen have in a liberal
3419 democracy. But this right is under serious attack these days.
</p>
3421 <p>A while back it occurred to me that one way to make the dragnet
3422 surveillance conducted by NSA, GCHQ, FRA and others (and confirmed by
3423 the whisleblower Snowden) more expensive for Internet email,
3424 is to deliver all email using SMTP via Tor. Such SMTP option would be
3425 a nice addition to the FreedomBox project if we could send email
3426 between FreedomBox machines without leaking metadata about the emails
3427 to the people peeking on the wire. I
3428 <a href=
"http://lists.alioth.debian.org/pipermail/freedombox-discuss/2014-October/006493.html">proposed
3429 this on the FreedomBox project mailing list in October
</a> and got a
3430 lot of useful feedback and suggestions. It also became obvious to me
3431 that this was not a novel idea, as the same idea was tested and
3432 documented by Johannes Berg as early as
2006, and both
3433 <a href=
"https://github.com/pagekite/Mailpile/wiki/SMTorP">the
3434 Mailpile
</a> and
<a href=
"http://dee.su/cables">the Cables
</a> systems
3435 propose a similar method / protocol to pass emails between users.
</p>
3437 <p>To implement such system one need to set up a Tor hidden service
3438 providing the SMTP protocol on port
25, and use email addresses
3439 looking like username@hidden-service-name.onion. With such addresses
3440 the connections to port
25 on hidden-service-name.onion using Tor will
3441 go to the correct SMTP server. To do this, one need to configure the
3442 Tor daemon to provide the hidden service and the mail server to accept
3443 emails for this .onion domain. To learn more about Exim configuration
3444 in Debian and test the design provided by Johannes Berg in his FAQ, I
3445 set out yesterday to create a Debian package for making it trivial to
3446 set up such SMTP over Tor service based on Debian. Getting it to work
3447 were fairly easy, and
3448 <a href=
"https://github.com/petterreinholdtsen/exim4-smtorp">the
3449 source code for the Debian package
</a> is available from github. I
3450 plan to move it into Debian if further testing prove this to be a
3451 useful approach.
</p>
3453 <p>If you want to test this, set up a blank Debian machine without any
3454 mail system installed (or run
<tt>apt-get purge exim4-config
</tt> to
3455 get rid of exim4). Install tor, clone the git repository mentioned
3456 above, build the deb and install it on the machine. Next, run
3457 <tt>/usr/lib/exim4-smtorp/setup-exim-hidden-service
</tt> and follow
3458 the instructions to get the service up and running. Restart tor and
3459 exim when it is done, and test mail delivery using swaks like
3462 <p><blockquote><pre>
3463 torsocks swaks --server dutlqrrmjhtfa3vp.onion \
3464 --to fbx@dutlqrrmjhtfa3vp.onion
3465 </pre></blockquote></p>
3467 <p>This will test the SMTP delivery using tor. Replace the email
3468 address with your own address to test your server. :)
</p>
3470 <p>The setup procedure is still to complex, and I hope it can be made
3471 easier and more automatic. Especially the tor setup need more work.
3472 Also, the package include a tor-smtp tool written in C, but its task
3473 should probably be rewritten in some script language to make the deb
3474 architecture independent. It would probably also make the code easier
3475 to review. The tor-smtp tool currently need to listen on a socket for
3476 exim to talk to it and is started using xinetd. It would be better if
3477 no daemon and no socket is needed. I suspect it is possible to get
3478 exim to run a command line tool for delivery instead of talking to a
3479 socket, and hope to figure out how in a future version of this
3482 <p>Until I wipe my test machine, I can be reached using the
3483 <tt>fbx@dutlqrrmjhtfa3vp.onion
</tt> mail address, deliverable over
3490 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/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
3495 <div class=
"padding"></div>
3499 <a href=
"http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html">listadmin, the quick way to moderate mailman lists - nice free software
</a>
3505 <p>If you ever had to moderate a mailman list, like the ones on
3506 alioth.debian.org, you know the web interface is fairly slow to
3507 operate. First you visit one web page, enter the moderation password
3508 and get a new page shown with a list of all the messages to moderate
3509 and various options for each email address. This take a while for
3510 every list you moderate, and you need to do it regularly to do a good
3511 job as a list moderator. But there is a quick alternative,
3512 <a href=
"http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the
3513 listadmin program
</a>. It allow you to check lists for new messages
3514 to moderate in a fraction of a second. Here is a test run on two
3515 lists I recently took over:
</p>
3517 <p><blockquote><pre>
3518 % time listadmin xiph
3519 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
3520 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
3526 </pre></blockquote></p>
3528 <p>In
1.7 seconds I had checked two mailing lists and confirmed that
3529 there are no message in the moderation queue. Every morning I
3530 currently moderate
68 mailman lists, and it normally take around two
3531 minutes. When I took over the two pkg-xiph lists above a few days
3532 ago, there were
400 emails waiting in the moderator queue. It took me
3533 less than
15 minutes to process them all using the listadmin
3537 <a href=
"https://tracker.debian.org/pkg/listadmin">the listadmin
3538 package
</a> from Debian and create a file
<tt>~/.listadmin.ini
</tt>
3539 with content like this, the moderation task is a breeze:
</p>
3541 <p><blockquote><pre>
3542 username username@example.org
3545 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
3548 adminurl https://{domain}/mailman/admindb/{list}
3549 mailman-list@lists.example.com
3552 other-list@otherserver.example.org
3553 </pre></blockquote></p>
3555 <p>There are other options to set as well. Check the manual page to
3556 learn the details.
</p>
3558 <p>If you are forced to moderate lists on a mailman installation where
3559 the SSL certificate is self signed or not properly signed by a
3560 generally accepted signing authority, you can set a environment
3561 variable when calling listadmin to disable SSL verification:
</p>
3563 <p><blockquote><pre>
3564 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 listadmin
3565 </pre></blockquote></p>
3567 <p>If you want to moderate a subset of the lists you take care of, you
3568 can provide an argument to the listadmin script like I do in the
3569 initial screen dump (the xiph argument). Using an argument, only
3570 lists matching the argument string will be processed. This make it
3571 quick to accept messages if you notice the moderation request in your
3574 <p>Without the listadmin program, I would never be the moderator of
68
3575 mailing lists, as I simply do not have time to spend on that if the
3576 process was any slower. The listadmin program have saved me hours of
3577 time I could spend elsewhere over the years. It truly is nice free
3580 <p>As usual, if you use Bitcoin and want to show your support of my
3581 activities, please send Bitcoin donations to my address
3582 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
3584 <p>Update
2014-
10-
27: Added missing 'username' statement in
3585 configuration example. Also, I've been told that the
3586 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 setting do not work for everyone. Not
3593 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/nice free software">nice free software
</a>.
3598 <div class=
"padding"></div>
3602 <a href=
"http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html">Debian Jessie, PXE and automatic firmware installation
</a>
3608 <p>When PXE installing laptops with Debian, I often run into the
3609 problem that the WiFi card require some firmware to work properly.
3610 And it has been a pain to fix this using preseeding in Debian.
3611 Normally something more is needed. But thanks to
3612 <a href=
"https://packages.qa.debian.org/i/isenkram.html">my isenkram
3613 package
</a> and its recent tasksel extension, it has now become easy
3614 to do this using simple preseeding.
</p>
3616 <p>The isenkram-cli package provide tasksel tasks which will install
3617 firmware for the hardware found in the machine (actually, requested by
3618 the kernel modules for the hardware). (It can also install user space
3619 programs supporting the hardware detected, but that is not the focus
3622 <p>To get this working in the default installation, two preeseding
3623 values are needed. First, the isenkram-cli package must be installed
3624 into the target chroot (aka the hard drive) before tasksel is executed
3625 in the pkgsel step of the debian-installer system. This is done by
3626 preseeding the base-installer/includes debconf value to include the
3627 isenkram-cli package. The package name is next passed to debootstrap
3628 for installation. With the isenkram-cli package in place, tasksel
3629 will automatically use the isenkram tasks to detect hardware specific
3630 packages for the machine being installed and install them, because
3631 isenkram-cli contain tasksel tasks.
</p>
3633 <p>Second, one need to enable the non-free APT repository, because
3634 most firmware unfortunately is non-free. This is done by preseeding
3635 the apt-mirror-setup step. This is unfortunate, but for a lot of
3636 hardware it is the only option in Debian.
</p>
3638 <p>The end result is two lines needed in your preseeding file to get
3639 firmware installed automatically by the installer:
</p>
3641 <p><blockquote><pre>
3642 base-installer base-installer/includes string isenkram-cli
3643 apt-mirror-setup apt-setup/non-free boolean true
3644 </pre></blockquote></p>
3646 <p>The current version of isenkram-cli in testing/jessie will install
3647 both firmware and user space packages when using this method. It also
3648 do not work well, so use version
0.15 or later. Installing both
3649 firmware and user space packages might give you a bit more than you
3650 want, so I decided to split the tasksel task in two, one for firmware
3651 and one for user space programs. The firmware task is enabled by
3652 default, while the one for user space programs is not. This split is
3653 implemented in the package currently in unstable.
</p>
3655 <p>If you decide to give this a go, please let me know (via email) how
3656 this recipe work for you. :)
</p>
3658 <p>So, I bet you are wondering, how can this work. First and
3659 foremost, it work because tasksel is modular, and driven by whatever
3660 files it find in /usr/lib/tasksel/ and /usr/share/tasksel/. So the
3661 isenkram-cli package place two files for tasksel to find. First there
3662 is the task description file (/usr/share/tasksel/descs/isenkram.desc):
</p>
3664 <p><blockquote><pre>
3665 Task: isenkram-packages
3667 Description: Hardware specific packages (autodetected by isenkram)
3668 Based on the detected hardware various hardware specific packages are
3670 Test-new-install: show show
3672 Packages: for-current-hardware
3674 Task: isenkram-firmware
3676 Description: Hardware specific firmware packages (autodetected by isenkram)
3677 Based on the detected hardware various hardware specific firmware
3678 packages are proposed.
3679 Test-new-install: mark show
3681 Packages: for-current-hardware-firmware
3682 </pre></blockquote></p>
3684 <p>The key parts are Test-new-install which indicate how the task
3685 should be handled and the Packages line referencing to a script in
3686 /usr/lib/tasksel/packages/. The scripts use other scripts to get a
3687 list of packages to install. The for-current-hardware-firmware script
3688 look like this to list relevant firmware for the machine:
3690 <p><blockquote><pre>
3693 PATH=/usr/sbin:$PATH
3695 isenkram-autoinstall-firmware -l
3696 </pre></blockquote></p>
3698 <p>With those two pieces in place, the firmware is installed by
3699 tasksel during the normal d-i run. :)
</p>
3701 <p>If you want to test what tasksel will install when isenkram-cli is
3702 installed, run
<tt>DEBIAN_PRIORITY=critical tasksel --test
3703 --new-install
</tt> to get the list of packages that tasksel would
3706 <p><a href=
"https://wiki.debian.org/DebianEdu/">Debian Edu
</a> will be
3707 pilots in testing this feature, as isenkram is used there now to
3708 install firmware, replacing the earlier scripts.
</p>
3714 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>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin
</a>.
3719 <div class=
"padding"></div>
3723 <a href=
"http://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html">Ubuntu used to show the bread prizes at ICA Storo
</a>
3729 <p>Today I came across an unexpected Ubuntu boot screen. Above the
3730 bread shelf on the ICA shop at Storo in Oslo, the grub menu of Ubuntu
3731 with Linux kernel
3.2.0-
23 (ie probably version
12.04 LTS) was stuck
3732 on a screen normally showing the bread types and prizes:
</p>
3734 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2014-10-04-ubuntu-ica-storo-crop.jpeg"></p>
3736 <p>If it had booted as it was supposed to, I would never had known
3737 about this hidden Linux installation. It is interesting what
3738 <a href=
"http://revealingerrors.com/">errors can reveal
</a>.
</p>
3744 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>.
3749 <div class=
"padding"></div>
3753 <a href=
"http://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html">New lsdvd release version
0.17 is ready
</a>
3759 <p>The
<a href=
"https://sourceforge.net/p/lsdvd/">lsdvd project
</a>
3760 got a new set of developers a few weeks ago, after the original
3761 developer decided to step down and pass the project to fresh blood.
3762 This project is now maintained by Petter Reinholdtsen and Steve
3765 <p>I just wrapped up
3766 <a href=
"https://sourceforge.net/p/lsdvd/mailman/message/32896061/">a
3767 new lsdvd release
</a>, available in git or from
3768 <a href=
"https://sourceforge.net/projects/lsdvd/files/lsdvd/">the
3769 download page
</a>. This is the changelog dated
2014-
10-
03 for version
3774 <li>Ignore 'phantom' audio, subtitle tracks
</li>
3775 <li>Check for garbage in the program chains, which indicate that a track is
3776 non-existant, to work around additional copy protection
</li>
3777 <li>Fix displaying content type for audio tracks, subtitles
</li>
3778 <li>Fix pallete display of first entry
</li>
3779 <li>Fix include orders
</li>
3780 <li>Ignore read errors in titles that would not be displayed anyway
</li>
3781 <li>Fix the chapter count
</li>
3782 <li>Make sure the array size and the array limit used when initialising
3783 the palette size is the same.
</li>
3784 <li>Fix array printing.
</li>
3785 <li>Correct subsecond calculations.
</li>
3786 <li>Add sector information to the output format.
</li>
3787 <li>Clean up code to be closer to ANSI C and compile without warnings
3788 with more GCC compiler warnings.
</li>
3792 <p>This change bring together patches for lsdvd in use in various
3793 Linux and Unix distributions, as well as patches submitted to the
3794 project the last nine years. Please check it out. :)
</p>
3800 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/lsdvd">lsdvd
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
3805 <div class=
"padding"></div>
3809 <a href=
"http://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html">How to test Debian Edu Jessie despite some fatal problems with the installer
</a>
3815 <p>The
<a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
3816 project
</a> provide a Linux solution for schools, including a
3817 powerful desktop with education software, a central server providing
3818 web pages, user database, user home directories, central login and PXE
3819 boot of both clients without disk and the installation to install Debian
3820 Edu on machines with disk (and a few other services perhaps to small
3821 to mention here). We in the Debian Edu team are currently working on
3822 the Jessie based version, trying to get everything in shape before the
3823 freeze, to avoid having to maintain our own package repository in the
3825 <a href=
"https://wiki.debian.org/DebianEdu/Status/Jessie">current
3826 status
</a> can be seen on the Debian wiki, and there is still heaps of
3827 work left. Some fatal problems block testing, breaking the installer,
3828 but it is possible to work around these to get anyway. Here is a
3829 recipe on how to get the installation limping along.
</p>
3831 <p>First, download the test ISO via
3832 <a href=
"ftp://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">ftp
</a>,
3833 <a href=
"http://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">http
</a>
3835 ftp.skolelinux.org::cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-
1.iso).
3836 The ISO build was broken on Tuesday, so we do not get a new ISO every
3837 12 hours or so, but thankfully the ISO we already got we are able to
3838 install with some tweaking.
</p>
3840 <p>When you get to the Debian Edu profile question, go to tty2
3841 (use Alt-Ctrl-F2), run
</p>
3843 <p><blockquote><pre>
3844 nano /usr/bin/edu-eatmydata-install
3845 </pre></blockquote></p>
3847 <p>and add 'exit
0' as the second line, disabling the eatmydata
3848 optimization. Return to the installation, select the profile you want
3849 and continue. Without this change, exim4-config will fail to install
3850 due to a known bug in eatmydata.
</p>
3852 <p>When you get the grub question at the end, answer /dev/sda (or if
3853 this do not work, figure out what your correct value would be. All my
3854 test machines need /dev/sda, so I have no advice if it do not fit
3857 <p>If you installed a profile including a graphical desktop, log in as
3858 root after the initial boot from hard drive, and install the
3859 education-desktop-XXX metapackage. XXX can be kde, gnome, lxde, xfce
3860 or mate. If you want several desktop options, install more than one
3861 metapackage. Once this is done, reboot and you should have a working
3862 graphical login screen. This workaround should no longer be needed
3863 once the education-tasks package version
1.801 enter testing in two
3866 <p>I believe the ISO build will start working on two days when the new
3867 tasksel package enter testing and Steve McIntyre get a chance to
3868 update the debian-cd git repository. The eatmydata, grub and desktop
3869 issues are already fixed in unstable and testing, and should show up
3870 on the ISO as soon as the ISO build start working again. Well the
3871 eatmydata optimization is really just disabled. The proper fix
3872 require an upload by the eatmydata maintainer applying the patch
3873 provided in bug
<a href=
"https://bugs.debian.org/702711">#
702711</a>.
3874 The rest have proper fixes in unstable.
</p>
3876 <p>I hope this get you going with the installation testing, as we are
3877 quickly running out of time trying to get our Jessie based
3878 installation ready before the distribution freeze in a month.
</p>
3884 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3889 <div class=
"padding"></div>
3893 <a href=
"http://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html">Suddenly I am the new upstream of the lsdvd command line tool
</a>
3899 <p>I use the
<a href=
"https://sourceforge.net/p/lsdvd/">lsdvd tool
</a>
3900 to handle my fairly large DVD collection. It is a nice command line
3901 tool to get details about a DVD, like title, tracks, track length,
3902 etc, in XML, Perl or human readable format. But lsdvd have not seen
3903 any new development since
2006 and had a few irritating bugs affecting
3904 its use with some DVDs. Upstream seemed to be dead, and in January I
3905 sent a small probe asking for a version control repository for the
3906 project, without any reply. But I use it regularly and would like to
3907 get
<a href=
"https://packages.qa.debian.org/lsdvd">an updated version
3908 into Debian
</a>. So two weeks ago I tried harder to get in touch with
3909 the project admin, and after getting a reply from him explaining that
3910 he was no longer interested in the project, I asked if I could take
3911 over. And yesterday, I became project admin.
</p>
3913 <p>I've been in touch with a Gentoo developer and the Debian
3914 maintainer interested in joining forces to maintain the upstream
3915 project, and I hope we can get a new release out fairly quickly,
3916 collecting the patches spread around on the internet into on place.
3917 I've added the relevant Debian patches to the freshly created git
3918 repository, and expect the Gentoo patches to make it too. If you got
3919 a DVD collection and care about command line tools, check out
3920 <a href=
"https://sourceforge.net/p/lsdvd/git/ci/master/tree/">the git source
</a> and join
3921 <a href=
"https://sourceforge.net/p/lsdvd/mailman/">the project mailing
3928 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/lsdvd">lsdvd
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
3933 <div class=
"padding"></div>
3937 <a href=
"http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html">Speeding up the Debian installer using eatmydata and dpkg-divert
</a>
3943 <p>The
<a href=
"https://www.debian.org/">Debian
</a> installer could be
3944 a lot quicker. When we install more than
2000 packages in
3945 <a href=
"http://www.skolelinux.org/">Skolelinux / Debian Edu
</a> using
3946 tasksel in the installer, unpacking the binary packages take forever.
3947 A part of the slow I/O issue was discussed in
3948 <a href=
"https://bugs.debian.org/613428">bug #
613428</a> about too
3949 much file system sync-ing done by dpkg, which is the package
3950 responsible for unpacking the binary packages. Other parts (like code
3951 executed by postinst scripts) might also sync to disk during
3952 installation. All this sync-ing to disk do not really make sense to
3953 me. If the machine crash half-way through, I start over, I do not try
3954 to salvage the half installed system. So the failure sync-ing is
3955 supposed to protect against, hardware or system crash, is not really
3956 relevant while the installer is running.
</p>
3958 <p>A few days ago, I thought of a way to get rid of all the file
3959 system sync()-ing in a fairly non-intrusive way, without the need to
3960 change the code in several packages. The idea is not new, but I have
3961 not heard anyone propose the approach using dpkg-divert before. It
3962 depend on the small and clever package
3963 <a href=
"https://packages.qa.debian.org/eatmydata">eatmydata
</a>, which
3964 uses LD_PRELOAD to replace the system functions for syncing data to
3965 disk with functions doing nothing, thus allowing programs to live
3966 dangerous while speeding up disk I/O significantly. Instead of
3967 modifying the implementation of dpkg, apt and tasksel (which are the
3968 packages responsible for selecting, fetching and installing packages),
3969 it occurred to me that we could just divert the programs away, replace
3970 them with a simple shell wrapper calling
3971 "eatmydata
$program
$@", to get the same effect.
3972 Two days ago I decided to test the idea, and wrapped up a simple
3973 implementation for the Debian Edu udeb.
</p>
3975 <p>The effect was stunning. In my first test it reduced the running
3976 time of the pkgsel step (installing tasks) from
64 to less than
44
3977 minutes (
20 minutes shaved off the installation) on an old Dell
3978 Latitude D505 machine. I am not quite sure what the optimised time
3979 would have been, as I messed up the testing a bit, causing the debconf
3980 priority to get low enough for two questions to pop up during
3981 installation. As soon as I saw the questions I moved the installation
3982 along, but do not know how long the question were holding up the
3983 installation. I did some more measurements using Debian Edu Jessie,
3984 and got these results. The time measured is the time stamp in
3985 /var/log/syslog between the "pkgsel: starting tasksel" and the
3986 "pkgsel: finishing up" lines, if you want to do the same measurement
3987 yourself. In Debian Edu, the tasksel dialog do not show up, and the
3988 timing thus do not depend on how quickly the user handle the tasksel
3994 <th>Machine/setup
</th>
3995 <th>Original tasksel
</th>
3996 <th>Optimised tasksel
</th>
4001 <td>Latitude D505 Main+LTSP LXDE
</td>
4002 <td>64 min (
07:
46-
08:
50)
</td>
4003 <td><44 min (
11:
27-
12:
11)
</td>
4004 <td>>20 min
18%
</td>
4008 <td>Latitude D505 Roaming LXDE
</td>
4009 <td>57 min (
08:
48-
09:
45)
</td>
4010 <td>34 min (
07:
43-
08:
17)
</td>
4015 <td>Latitude D505 Minimal
</td>
4016 <td>22 min (
10:
37-
10:
59)
</td>
4017 <td>11 min (
11:
16-
11:
27)
</td>
4022 <td>Thinkpad X200 Minimal
</td>
4023 <td>6 min (
08:
19-
08:
25)
</td>
4024 <td>4 min (
08:
04-
08:
08)
</td>
4029 <td>Thinkpad X200 Roaming KDE
</td>
4030 <td>19 min (
09:
21-
09:
40)
</td>
4031 <td>15 min (
10:
25-
10:
40)
</td>
4037 <p>The test is done using a netinst ISO on a USB stick, so some of the
4038 time is spent downloading packages. The connection to the Internet
4039 was
100Mbit/s during testing, so downloading should not be a
4040 significant factor in the measurement. Download typically took a few
4041 seconds to a few minutes, depending on the amount of packages being
4044 <p>The speedup is implemented by using two hooks in
4045 <a href=
"https://www.debian.org/devel/debian-installer/">Debian
4046 Installer
</a>, the pre-pkgsel.d hook to set up the diverts, and the
4047 finish-install.d hook to remove the divert at the end of the
4048 installation. I picked the pre-pkgsel.d hook instead of the
4049 post-base-installer.d hook because I test using an ISO without the
4050 eatmydata package included, and the post-base-installer.d hook in
4051 Debian Edu can only operate on packages included in the ISO. The
4052 negative effect of this is that I am unable to activate this
4053 optimization for the kernel installation step in d-i. If the code is
4054 moved to the post-base-installer.d hook, the speedup would be larger
4055 for the entire installation.
</p>
4057 <p>I've implemented this in the
4058 <a href=
"https://packages.qa.debian.org/debian-edu-install">debian-edu-install
</a>
4059 git repository, and plan to provide the optimization as part of the
4060 Debian Edu installation. If you want to test this yourself, you can
4061 create two files in the installer (or in an udeb). One shell script
4062 need do go into /usr/lib/pre-pkgsel.d/, with content like this:
</p>
4064 <p><blockquote><pre>
4067 . /usr/share/debconf/confmodule
4069 logger -t my-pkgsel "info: $*"
4072 logger -t my-pkgsel "error: $*"
4074 override_install() {
4075 apt-install eatmydata || true
4076 if [ -x /target/usr/bin/eatmydata ] ; then
4077 for bin in dpkg apt-get aptitude tasksel ; do
4079 # Test that the file exist and have not been diverted already.
4080 if [ -f /target$file ] ; then
4081 info "diverting $file using eatmydata"
4082 printf "#!/bin/sh\neatmydata $bin.distrib \"\$@\"\n" \
4084 chmod
755 /target$file.edu
4085 in-target dpkg-divert --package debian-edu-config \
4086 --rename --quiet --add $file
4087 ln -sf ./$bin.edu /target$file
4089 error "unable to divert $file, as it is missing."
4093 error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
4098 </pre></blockquote></p>
4100 <p>To clean up, another shell script should go into
4101 /usr/lib/finish-install.d/ with code like this:
4103 <p><blockquote><pre>
4105 . /usr/share/debconf/confmodule
4107 logger -t my-finish-install "error: $@"
4109 remove_install_override() {
4110 for bin in dpkg apt-get aptitude tasksel ; do
4112 if [ -x /target$file.edu ] ; then
4114 in-target dpkg-divert --package debian-edu-config \
4115 --rename --quiet --remove $file
4118 error "Missing divert for $file."
4121 sync # Flush file buffers before continuing
4124 remove_install_override
4125 </pre></blockquote></p>
4127 <p>In Debian Edu, I placed both code fragments in a separate script
4128 edu-eatmydata-install and call it from the pre-pkgsel.d and
4129 finish-install.d scripts.
</p>
4131 <p>By now you might ask if this change should get into the normal
4132 Debian installer too? I suspect it should, but am not sure the
4133 current debian-installer coordinators find it useful enough. It also
4134 depend on the side effects of the change. I'm not aware of any, but I
4135 guess we will see if the change is safe after some more testing.
4136 Perhaps there is some package in Debian depending on sync() and
4137 fsync() having effect? Perhaps it should go into its own udeb, to
4138 allow those of us wanting to enable it to do so without affecting
4141 <p>Update
2014-
09-
24: Since a few days ago, enabling this optimization
4142 will break installation of all programs using gnutls because of
4143 <a href=
"https://bugs.debian.org/702711">bug #
702711</a>. An updated
4144 eatmydata package in Debian will solve it.
</p>
4146 <p>Update
2014-
10-
17: The bug mentioned above is fixed in testing and
4147 the optimization work again. And I have discovered that the
4148 dpkg-divert trick is not really needed and implemented a slightly
4149 simpler approach as part of the debian-edu-install package. See
4150 tools/edu-eatmydata-install in the source package.
</p>
4152 <p>Update
2014-
11-
11: Unfortunately, a new
4153 <a href=
"http://bugs.debian.org/765738">bug #
765738</a> in eatmydata only
4154 triggering on i386 made it into testing, and broke this installation
4155 optimization again. If
<a href=
"http://bugs.debian.org/768893">unblock
4156 request
768893</a> is accepted, it should be working again.
</p>
4162 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4167 <div class=
"padding"></div>
4171 <a href=
"http://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html">Good bye subkeys.pgp.net, welcome pool.sks-keyservers.net
</a>
4177 <p>Yesterday, I had the pleasure of attending a talk with the
4178 <a href=
"http://www.nuug.no/">Norwegian Unix User Group
</a> about
4179 <a href=
"http://www.nuug.no/aktiviteter/20140909-sks-keyservers/">the
4180 OpenPGP keyserver pool sks-keyservers.net
</a>, and was very happy to
4181 learn that there is a large set of publicly available key servers to
4182 use when looking for peoples public key. So far I have used
4183 subkeys.pgp.net, and some times wwwkeys.nl.pgp.net when the former
4184 were misbehaving, but those days are ended. The servers I have used
4185 up until yesterday have been slow and some times unavailable. I hope
4186 those problems are gone now.
</p>
4188 <p>Behind the round robin DNS entry of the
4189 <a href=
"https://sks-keyservers.net/">sks-keyservers.net
</a> service
4190 there is a pool of more than
100 keyservers which are checked every
4191 day to ensure they are well connected and up to date. It must be
4192 better than what I have used so far. :)
</p>
4194 <p>Yesterdays speaker told me that the service is the default
4195 keyserver provided by the default configuration in GnuPG, but this do
4196 not seem to be used in Debian. Perhaps it should?
</p>
4198 <p>Anyway, I've updated my ~/.gnupg/options file to now include this
4201 <p><blockquote><pre>
4202 keyserver pool.sks-keyservers.net
4203 </pre></blockquote></p>
4205 <p>With GnuPG version
2 one can also locate the keyserver using SRV
4206 entries in DNS. Just for fun, I did just that at work, so now every
4207 user of GnuPG at the University of Oslo should find a OpenGPG
4208 keyserver automatically should their need it:
</p>
4210 <p><blockquote><pre>
4211 % host -t srv _pgpkey-http._tcp.uio.no
4212 _pgpkey-http._tcp.uio.no has SRV record
0 100 11371 pool.sks-keyservers.net.
4214 </pre></blockquote></p>
4217 <a href=
"http://ietfreport.isoc.org/idref/draft-shaw-openpgp-hkp/">the
4218 HKP lookup protocol
</a> supported finding signature paths, I would be
4219 very happy. It can look up a given key or search for a user ID, but I
4220 normally do not want that, but to find a trust path from my key to
4221 another key. Given a user ID or key ID, I would like to find (and
4222 download) the keys representing a signature path from my key to the
4223 key in question, to be able to get a trust path between the two keys.
4224 This is as far as I can tell not possible today. Perhaps something
4225 for a future version of the protocol?
</p>
4231 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/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
4236 <div class=
"padding"></div>
4240 <a href=
"http://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html">From English wiki to translated PDF and epub via Docbook
</a>
4246 <p>The
<a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
4247 project
</a> provide an instruction manual for teachers, system
4248 administrators and other users that contain useful tips for setting up
4249 and maintaining a Debian Edu installation. This text is about how the
4250 text processing of this manual is handled in the project.
</p>
4252 <p>One goal of the project is to provide information in the native
4253 language of its users, and for this we need to handle translations.
4254 But we also want to make sure each language contain the same
4255 information, so for this we need a good way to keep the translations
4256 in sync. And we want it to be easy for our users to improve the
4257 documentation, avoiding the need to learn special formats or tools to
4258 contribute, and the obvious way to do this is to make it possible to
4259 edit the documentation using a web browser. We also want it to be
4260 easy for translators to keep the translation up to date, and give them
4261 help in figuring out what need to be translated. Here is the list of
4262 tools and the process we have found trying to reach all these
4265 <p>We maintain the authoritative source of our manual in the
4266 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">Debian
4267 wiki
</a>, as several wiki pages written in English. It consist of one
4268 front page with references to the different chapters, several pages
4269 for each chapter, and finally one "collection page" gluing all the
4270 chapters together into one large web page (aka
4271 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/AllInOne">the
4272 AllInOne page
</a>). The AllInOne page is the one used for further
4273 processing and translations. Thanks to the fact that the
4274 <a href=
"http://moinmo.in/">MoinMoin
</a> installation on
4275 wiki.debian.org support exporting pages in
4276 <a href=
"http://www.docbook.org/">the Docbook format
</a>, we can fetch
4277 the list of pages to export using the raw version of the AllInOne
4278 page, loop over each of them to generate a Docbook XML version of the
4279 manual. This process also download images and transform image
4280 references to use the locally downloaded images. The generated
4281 Docbook XML files are slightly broken, so some post-processing is done
4282 using the
<tt>documentation/scripts/get_manual
</tt> program, and the
4283 result is a nice Docbook XML file (debian-edu-wheezy-manual.xml) and
4284 a handfull of images. The XML file can now be used to generate PDF, HTML
4285 and epub versions of the English manual. This is the basic step of
4286 our process, making PDF (using dblatex), HTML (using xsltproc) and
4287 epub (using dbtoepub) version from Docbook XML, and the resulting files
4288 are placed in the debian-edu-doc-en binary package.
</p>
4290 <p>But English documentation is not enough for us. We want translated
4291 documentation too, and we want to make it easy for translators to
4292 track the English original. For this we use the
4293 <a href=
"http://packages.qa.debian.org/p/poxml.html">poxml
</a> package,
4294 which allow us to transform the English Docbook XML file into a
4295 translation file (a .pot file), usable with the normal gettext based
4296 translation tools used by those translating free software. The pot
4297 file is used to create and maintain translation files (several .po
4298 files), which the translations update with the native language
4299 translations of all titles, paragraphs and blocks of text in the
4300 original. The next step is combining the original English Docbook XML
4301 and the translation file (say debian-edu-wheezy-manual.nb.po), to
4302 create a translated Docbook XML file (in this case
4303 debian-edu-wheezy-manual.nb.xml). This translated (or partly
4304 translated, if the translation is not complete) Docbook XML file can
4305 then be used like the original to create a PDF, HTML and epub version
4306 of the documentation.
</p>
4308 <p>The translators use different tools to edit the .po files. We
4310 <a href=
"http://www.kde.org/applications/development/lokalize/">lokalize
</a>,
4311 while some use emacs and vi, others can use web based editors like
4312 <a href=
"http://pootle.translatehouse.org/">Poodle
</a> or
4313 <a href=
"https://www.transifex.com/">Transifex
</a>. All we care about
4314 is where the .po file end up, in our git repository. Updated
4315 translations can either be committed directly to git, or submitted as
4316 <a href=
"https://bugs.debian.org/src:debian-edu-doc">bug reports
4317 against the debian-edu-doc package
</a>.
</p>
4319 <p>One challenge is images, which both might need to be translated (if
4320 they show translated user applications), and are needed in different
4321 formats when creating PDF and HTML versions (epub is a HTML version in
4322 this regard). For this we transform the original PNG images to the
4323 needed density and format during build, and have a way to provide
4324 translated images by storing translated versions in
4325 images/$LANGUAGECODE/. I am a bit unsure about the details here. The
4326 package maintainers know more.
</p>
4328 <p>If you wonder what the result look like, we provide
4329 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/">the content
4330 of the documentation packages on the web
</a>. See for example the
4331 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/it/debian-edu-wheezy-manual.pdf">Italian
4332 PDF version
</a> or the
4333 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/de/debian-edu-wheezy-manual.html">German
4334 HTML version
</a>. We do not yet build the epub version by default,
4335 but perhaps it will be done in the future.
</p>
4337 <p>To learn more, check out
4338 <a href=
"http://packages.qa.debian.org/d/debian-edu-doc.html">the
4339 debian-edu-doc package
</a>,
4340 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">the
4341 manual on the wiki
</a> and
4342 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Translations">the
4343 translation instructions
</a> in the manual.
</p>
4349 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4354 <div class=
"padding"></div>
4358 <a href=
"http://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html">Install hardware dependent packages using tasksel (Isenkram
0.7)
</a>
4364 <p>It would be nice if it was easier in Debian to get all the hardware
4365 related packages relevant for the computer installed automatically.
4366 So I implemented one, using
4367 <a href=
"http://packages.qa.debian.org/isenkram">my Isenkram
4368 package
</a>. To use it, install the tasksel and isenkram packages and
4369 run tasksel as user root. You should be presented with a new option,
4370 "Hardware specific packages (autodetected by isenkram)". When you
4371 select it, tasksel will install the packages isenkram claim is fit for
4372 the current hardware, hot pluggable or not.
<p>
4374 <p>The implementation is in two files, one is the tasksel menu entry
4375 description, and the other is the script used to extract the list of
4376 packages to install. The first part is in
4377 <tt>/usr/share/tasksel/descs/isenkram.desc
</tt> and look like
4380 <p><blockquote><pre>
4383 Description: Hardware specific packages (autodetected by isenkram)
4384 Based on the detected hardware various hardware specific packages are
4386 Test-new-install: mark show
4388 Packages: for-current-hardware
4389 </pre></blockquote></p>
4391 <p>The second part is in
4392 <tt>/usr/lib/tasksel/packages/for-current-hardware
</tt> and look like
4395 <p><blockquote><pre>
4400 isenkram-autoinstall-firmware -l
4402 </pre></blockquote></p>
4404 <p>All in all, a very short and simple implementation making it
4405 trivial to install the hardware dependent package we all may want to
4406 have installed on our machines. I've not been able to find a way to
4407 get tasksel to tell you exactly which packages it plan to install
4408 before doing the installation. So if you are curious or careful,
4409 check the output from the isenkram-* command line tools first.
</p>
4411 <p>The information about which packages are handling which hardware is
4412 fetched either from the isenkram package itself in
4413 /usr/share/isenkram/, from git.debian.org or from the APT package
4414 database (using the Modaliases header). The APT package database
4415 parsing have caused a nasty resource leak in the isenkram daemon (bugs
4416 <a href=
"http://bugs.debian.org/719837">#
719837</a> and
4417 <a href=
"http://bugs.debian.org/730704">#
730704</a>). The cause is in
4418 the python-apt code (bug
4419 <a href=
"http://bugs.debian.org/745487">#
745487</a>), but using a
4420 workaround I was able to get rid of the file descriptor leak and
4421 reduce the memory leak from ~
30 MiB per hardware detection down to
4422 around
2 MiB per hardware detection. It should make the desktop
4423 daemon a lot more useful. The fix is in version
0.7 uploaded to
4426 <p>I believe the current way of mapping hardware to packages in
4427 Isenkram is is a good draft, but in the future I expect isenkram to
4428 use the AppStream data source for this. A proposal for getting proper
4429 AppStream support into Debian is floating around as
4430 <a href=
"https://wiki.debian.org/DEP-11">DEP-
11</a>, and
4431 <a href=
"https://wiki.debian.org/SummerOfCode2014/Projects#SummerOfCode2014.2FProjects.2FAppStreamDEP11Implementation.AppStream.2FDEP-11_for_the_Debian_Archive">GSoC
4432 project
</a> will take place this summer to improve the situation. I
4433 look forward to seeing the result, and welcome patches for isenkram to
4434 start using the information when it is ready.
</p>
4436 <p>If you want your package to map to some specific hardware, either
4437 add a "Xb-Modaliases" header to your control file like I did in
4438 <a href=
"http://packages.qa.debian.org/pymissile">the pymissile
4439 package
</a> or submit a bug report with the details to the isenkram
4441 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">all my
4442 blog posts tagged isenkram
</a> for details on the notation. I expect
4443 the information will be migrated to AppStream eventually, but for the
4444 moment I got no better place to store it.
</p>
4450 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>.
4455 <div class=
"padding"></div>
4459 <a href=
"http://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html">FreedomBox milestone - all packages now in Debian Sid
</a>
4465 <p>The
<a href=
"https://wiki.debian.org/FreedomBox">Freedombox
4466 project
</a> is working on providing the software and hardware to make
4467 it easy for non-technical people to host their data and communication
4468 at home, and being able to communicate with their friends and family
4469 encrypted and away from prying eyes. It is still going strong, and
4470 today a major mile stone was reached.
</p>
4472 <p>Today, the last of the packages currently used by the project to
4473 created the system images were accepted into Debian Unstable. It was
4474 the freedombox-setup package, which is used to configure the images
4475 during build and on the first boot. Now all one need to get going is
4476 the build code from the freedom-maker git repository and packages from
4477 Debian. And once the freedombox-setup package enter testing, we can
4478 build everything directly from Debian. :)
</p>
4480 <p>Some key packages used by Freedombox are
4481 <a href=
"http://packages.qa.debian.org/freedombox-setup">freedombox-setup
</a>,
4482 <a href=
"http://packages.qa.debian.org/plinth">plinth
</a>,
4483 <a href=
"http://packages.qa.debian.org/pagekite">pagekite
</a>,
4484 <a href=
"http://packages.qa.debian.org/tor">tor
</a>,
4485 <a href=
"http://packages.qa.debian.org/privoxy">privoxy
</a>,
4486 <a href=
"http://packages.qa.debian.org/owncloud">owncloud
</a> and
4487 <a href=
"http://packages.qa.debian.org/dnsmasq">dnsmasq
</a>. There
4488 are plans to integrate more packages into the setup. User
4489 documentation is maintained on the Debian wiki. Please
4490 <a href=
"https://wiki.debian.org/FreedomBox/Manual/Jessie">check out
4491 the manual
</a> and help us improve it.
</p>
4493 <p>To test for yourself and create boot images with the FreedomBox
4494 setup, run this on a Debian machine using a user with sudo rights to
4498 sudo apt-get install git vmdebootstrap mercurial python-docutils \
4499 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
4501 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
4503 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
4506 <p>Root access is needed to run debootstrap and mount loopback
4507 devices. See the README in the freedom-maker git repo for more
4508 details on the build. If you do not want all three images, trim the
4509 make line. Note that the virtualbox-image target is not really
4510 virtualbox specific. It create a x86 image usable in kvm, qemu,
4511 vmware and any other x86 virtual machine environment. You might need
4512 the version of vmdebootstrap in Jessie to get the build working, as it
4513 include fixes for a race condition with kpartx.
</p>
4515 <p>If you instead want to install using a Debian CD and the preseed
4516 method, boot a Debian Wheezy ISO and use this boot argument to load
4517 the preseed values:
</p>
4520 url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
</a>
4523 <p>I have not tested it myself the last few weeks, so I do not know if
4526 <p>If you wonder how to help, one task you could look at is using
4527 systemd as the boot system. It will become the default for Linux in
4528 Jessie, so we need to make sure it is usable on the Freedombox. I did
4529 a simple test a few weeks ago, and noticed dnsmasq failed to start
4530 during boot when using systemd. I suspect there are other problems
4531 too. :) To detect problems, there is a test suite included, which can
4532 be run from the plinth web interface.
</p>
4534 <p>Give it a go and let us know how it goes on the mailing list, and help
4535 us get the new release published. :) Please join us on
4536 <a href=
"irc://irc.debian.org:6667/%23freedombox">IRC (#freedombox on
4537 irc.debian.org)
</a> and
4538 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
4539 mailing list
</a> if you want to help make this vision come true.
</p>
4545 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/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
4550 <div class=
"padding"></div>
4554 <a href=
"http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html">S3QL, a locally mounted cloud file system - nice free software
</a>
4560 <p>For a while now, I have been looking for a sensible offsite backup
4561 solution for use at home. My requirements are simple, it must be
4562 cheap and locally encrypted (in other words, I keep the encryption
4563 keys, the storage provider do not have access to my private files).
4564 One idea me and my friends had many years ago, before the cloud
4565 storage providers showed up, was to use Google mail as storage,
4566 writing a Linux block device storing blocks as emails in the mail
4567 service provided by Google, and thus get heaps of free space. On top
4568 of this one can add encryption, RAID and volume management to have
4569 lots of (fairly slow, I admit that) cheap and encrypted storage. But
4570 I never found time to implement such system. But the last few weeks I
4571 have looked at a system called
4572 <a href=
"https://bitbucket.org/nikratio/s3ql/">S3QL
</a>, a locally
4573 mounted network backed file system with the features I need.
</p>
4575 <p>S3QL is a fuse file system with a local cache and cloud storage,
4576 handling several different storage providers, any with Amazon S3,
4577 Google Drive or OpenStack API. There are heaps of such storage
4578 providers. S3QL can also use a local directory as storage, which
4579 combined with sshfs allow for file storage on any ssh server. S3QL
4580 include support for encryption, compression, de-duplication, snapshots
4581 and immutable file systems, allowing me to mount the remote storage as
4582 a local mount point, look at and use the files as if they were local,
4583 while the content is stored in the cloud as well. This allow me to
4584 have a backup that should survive fire. The file system can not be
4585 shared between several machines at the same time, as only one can
4586 mount it at the time, but any machine with the encryption key and
4587 access to the storage service can mount it if it is unmounted.
</p>
4589 <p>It is simple to use. I'm using it on Debian Wheezy, where the
4590 package is included already. So to get started, run
<tt>apt-get
4591 install s3ql
</tt>. Next, pick a storage provider. I ended up picking
4592 Greenqloud, after reading their nice recipe on
4593 <a href=
"https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
4594 to use S3QL with their Amazon S3 service
</a>, because I trust the laws
4595 in Iceland more than those in USA when it come to keeping my personal
4596 data safe and private, and thus would rather spend money on a company
4597 in Iceland. Another nice recipe is available from the article
4598 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
4599 Filesystem for HPC Storage
</a> by Jeff Layton in the HPC section of
4600 Admin magazine. When the provider is picked, figure out how to get
4601 the API key needed to connect to the storage API. With Greencloud,
4602 the key did not show up until I had added payment details to my
4605 <p>Armed with the API access details, it is time to create the file
4606 system. First, create a new bucket in the cloud. This bucket is the
4607 file system storage area. I picked a bucket name reflecting the
4608 machine that was going to store data there, but any name will do.
4609 I'll refer to it as
<tt>bucket-name
</tt> below. In addition, one need
4610 the API login and password, and a locally created password. Store it
4611 all in ~root/.s3ql/authinfo2 like this:
4613 <p><blockquote><pre>
4615 storage-url: s3c://s.greenqloud.com:
443/bucket-name
4616 backend-login: API-login
4617 backend-password: API-password
4618 fs-passphrase: local-password
4619 </pre></blockquote></p>
4621 <p>I create my local passphrase using
<tt>pwget
50</tt> or similar,
4622 but any sensible way to create a fairly random password should do it.
4623 Armed with these details, it is now time to run mkfs, entering the API
4624 details and password to create it:
</p>
4626 <p><blockquote><pre>
4627 # mkdir -m
700 /var/lib/s3ql-cache
4628 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
4629 --ssl s3c://s.greenqloud.com:
443/bucket-name
4630 Enter backend login:
4631 Enter backend password:
4632 Before using S3QL, make sure to read the user's guide, especially
4633 the 'Important Rules to Avoid Loosing Data' section.
4634 Enter encryption password:
4635 Confirm encryption password:
4636 Generating random encryption key...
4637 Creating metadata tables...
4647 Compressing and uploading metadata...
4648 Wrote
0.00 MB of compressed metadata.
4649 #
</pre></blockquote></p>
4651 <p>The next step is mounting the file system to make the storage available.
4653 <p><blockquote><pre>
4654 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
4655 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
4656 Using
4 upload threads.
4657 Downloading and decompressing metadata...
4667 Mounting filesystem...
4669 Filesystem Size Used Avail Use% Mounted on
4670 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
4672 </pre></blockquote></p>
4674 <p>The file system is now ready for use. I use rsync to store my
4675 backups in it, and as the metadata used by rsync is downloaded at
4676 mount time, no network traffic (and storage cost) is triggered by
4677 running rsync. To unmount, one should not use the normal umount
4678 command, as this will not flush the cache to the cloud storage, but
4679 instead running the umount.s3ql command like this:
4681 <p><blockquote><pre>
4684 </pre></blockquote></p>
4686 <p>There is a fsck command available to check the file system and
4687 correct any problems detected. This can be used if the local server
4688 crashes while the file system is mounted, to reset the "already
4689 mounted" flag. This is what it look like when processing a working
4692 <p><blockquote><pre>
4693 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
4694 Using cached metadata.
4695 File system seems clean, checking anyway.
4696 Checking DB integrity...
4697 Creating temporary extra indices...
4698 Checking lost+found...
4699 Checking cached objects...
4700 Checking names (refcounts)...
4701 Checking contents (names)...
4702 Checking contents (inodes)...
4703 Checking contents (parent inodes)...
4704 Checking objects (reference counts)...
4705 Checking objects (backend)...
4706 ..processed
5000 objects so far..
4707 ..processed
10000 objects so far..
4708 ..processed
15000 objects so far..
4709 Checking objects (sizes)...
4710 Checking blocks (referenced objects)...
4711 Checking blocks (refcounts)...
4712 Checking inode-block mapping (blocks)...
4713 Checking inode-block mapping (inodes)...
4714 Checking inodes (refcounts)...
4715 Checking inodes (sizes)...
4716 Checking extended attributes (names)...
4717 Checking extended attributes (inodes)...
4718 Checking symlinks (inodes)...
4719 Checking directory reachability...
4720 Checking unix conventions...
4721 Checking referential integrity...
4722 Dropping temporary indices...
4723 Backing up old metadata...
4733 Compressing and uploading metadata...
4734 Wrote
0.89 MB of compressed metadata.
4736 </pre></blockquote></p>
4738 <p>Thanks to the cache, working on files that fit in the cache is very
4739 quick, about the same speed as local file access. Uploading large
4740 amount of data is to me limited by the bandwidth out of and into my
4741 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
4742 which is very close to my upload speed, and downloading the same
4743 Debian installation ISO gave me
610 kiB/s, close to my download speed.
4744 Both were measured using
<tt>dd
</tt>. So for me, the bottleneck is my
4745 network, not the file system code. I do not know what a good cache
4746 size would be, but suspect that the cache should e larger than your
4749 <p>I mentioned that only one machine can mount the file system at the
4750 time. If another machine try, it is told that the file system is
4753 <p><blockquote><pre>
4754 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
4755 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
4756 Using
8 upload threads.
4757 Backend reports that fs is still mounted elsewhere, aborting.
4759 </pre></blockquote></p>
4761 <p>The file content is uploaded when the cache is full, while the
4762 metadata is uploaded once every
24 hour by default. To ensure the
4763 file system content is flushed to the cloud, one can either umount the
4764 file system, or ask S3QL to flush the cache and metadata using
4767 <p><blockquote><pre>
4768 # s3qlctrl upload-meta /s3ql
4769 # s3qlctrl flushcache /s3ql
4771 </pre></blockquote></p>
4773 <p>If you are curious about how much space your data uses in the
4774 cloud, and how much compression and deduplication cut down on the
4775 storage usage, you can use s3qlstat on the mounted file system to get
4778 <p><blockquote><pre>
4780 Directory entries:
9141
4783 Total data size:
22049.38 MB
4784 After de-duplication:
21955.46 MB (
99.57% of total)
4785 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
4786 Database size:
2.39 MB (uncompressed)
4787 (some values do not take into account not-yet-uploaded dirty blocks in cache)
4789 </pre></blockquote></p>
4791 <p>I mentioned earlier that there are several possible suppliers of
4792 storage. I did not try to locate them all, but am aware of at least
4793 <a href=
"https://www.greenqloud.com/">Greenqloud
</a>,
4794 <a href=
"http://drive.google.com/">Google Drive
</a>,
4795 <a href=
"http://aws.amazon.com/s3/">Amazon S3 web serivces
</a>,
4796 <a href=
"http://www.rackspace.com/">Rackspace
</a> and
4797 <a href=
"http://crowncloud.net/">Crowncloud
</A>. The latter even
4798 accept payment in Bitcoin. Pick one that suit your need. Some of
4799 them provide several GiB of free storage, but the prize models are
4800 quite different and you will have to figure out what suits you
4803 <p>While researching this blog post, I had a look at research papers
4804 and posters discussing the S3QL file system. There are several, which
4805 told me that the file system is getting a critical check by the
4806 science community and increased my confidence in using it. One nice
4808 "
<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
4809 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
4810 Store and Transformative Parallel I/O Approach
</a>" by Hsing-Bung
4811 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
4812 and Pamela Smith. Please have a look.</p>
4814 <p>Given my problems with different file systems earlier, I decided to
4815 check out the mounted S3QL file system to see if it would be usable as
4816 a home directory (in other word, that it provided POSIX semantics when
4817 it come to locking and umask handling etc). Running
4818 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
4819 test code to check file system semantics</a>, I was happy to discover that
4820 no error was found. So the file system can be used for home
4821 directories, if one chooses to do so.</p>
4823 <p>If you do not want a locally file system, and want something that
4824 work without the Linux fuse file system, I would like to mention the
4825 <a href="http://www.tarsnap.com/
">Tarsnap service</a>, which also
4826 provide locally encrypted backup using a command line client. It have
4827 a nicer access control system, where one can split out read and write
4828 access, allowing some systems to write to the backup and others to
4829 only read from it.</p>
4831 <p>As usual, if you use Bitcoin and want to show your support of my
4832 activities, please send Bitcoin donations to my address
4833 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
4839 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/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
4844 <div class="padding
"></div>
4848 <a href="http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html
">Freedombox on Dreamplug, Raspberry Pi and virtual x86 machine</a>
4854 <p>The <a href="https://wiki.debian.org/FreedomBox
">Freedombox
4855 project</a> is working on providing the software and hardware for
4856 making it easy for non-technical people to host their data and
4857 communication at home, and being able to communicate with their
4858 friends and family encrypted and away from prying eyes. It has been
4859 going on for a while, and is slowly progressing towards a new test
4862 <p>And what day could be better than the Pi day to announce that the
4863 new version will provide "hard drive" / SD card / USB stick images for
4864 Dreamplug, Raspberry Pi and VirtualBox (or any other virtualization
4865 system), and can also be installed using a Debian installer preseed
4866 file. The Debian based Freedombox is now based on Debian Jessie,
4867 where most of the needed packages used are already present. Only one,
4868 the freedombox-setup package, is missing. To try to build your own
4869 boot image to test the current status, fetch the freedom-maker scripts
4871 <a href=
"http://packages.qa.debian.org/vmdebootstrap">vmdebootstrap
</a>
4872 with a user with sudo access to become root:
4875 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
4877 sudo apt-get install git vmdebootstrap mercurial python-docutils \
4878 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
4880 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
4883 <p>Root access is needed to run debootstrap and mount loopback
4884 devices. See the README for more details on the build. If you do not
4885 want all three images, trim the make line. But note that thanks to
<a
4886 href=
"https://bugs.debian.org/741407">a race condition in
4887 vmdebootstrap
</a>, the build might fail without the patch to the
4890 <p>If you instead want to install using a Debian CD and the preseed
4891 method, boot a Debian Wheezy ISO and use this boot argument to load
4892 the preseed values:
</p>
4895 url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
</a>
4898 <p>But note that due to
<a href=
"https://bugs.debian.org/740673">a
4899 recently introduced bug in apt in Jessie
</a>, the installer will
4900 currently hang while setting up APT sources. Killing the
4901 '
<tt>apt-cdrom ident
</tt>' process when it hang a few times during the
4902 installation will get the installation going. This affect all
4903 installations in Jessie, and I expect it will be fixed soon.
</p>
4905 <p>Give it a go and let us know how it goes on the mailing list, and help
4906 us get the new release published. :) Please join us on
4907 <a href=
"irc://irc.debian.org:6667/%23freedombox">IRC (#freedombox on
4908 irc.debian.org)
</a> and
4909 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
4910 mailing list
</a> if you want to help make this vision come true.
</p>
4916 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/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
4921 <div class=
"padding"></div>
4925 <a href=
"http://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html">New home and release
1.0 for netgroup and innetgr (aka ng-utils)
</a>
4931 <p>Many years ago, I wrote a GPL licensed version of the netgroup and
4932 innetgr tools, because I needed them in
4933 <a href=
"http://www.skolelinux.org/">Skolelinux
</a>. I called the project
4934 ng-utils, and it has served me well. I placed the project under the
4935 <a href=
"http://www.hungry.com/">Hungry Programmer
</a> umbrella, and it was maintained in our CVS
4936 repository. But many years ago, the CVS repository was dropped (lost,
4937 not migrated to new hardware, not sure), and the project have lacked a
4938 proper home since then.
</p>
4940 <p>Last summer, I had a look at the package and made a new release
4941 fixing a irritating crash bug, but was unable to store the changes in
4942 a proper source control system. I applied for a project on
4943 <a href=
"https://alioth.debian.org/">Alioth
</a>, but did not have time
4944 to follow up on it. Until today. :)
</p>
4946 <p>After many hours of cleaning and migration, the ng-utils project
4947 now have a new home, and a git repository with the highlight of the
4948 history of the project. I published all release tarballs and imported
4949 them into the git repository. As the project is really stable and not
4950 expected to gain new features any time soon, I decided to make a new
4951 release and call it
1.0. Visit the new project home on
4952 <a href=
"https://alioth.debian.org/projects/ng-utils/">https://alioth.debian.org/projects/ng-utils/
</a>
4953 if you want to check it out. The new version is also uploaded into
4954 <a href=
"http://packages.qa.debian.org/n/ng-utils.html">Debian Unstable
</a>.
</p>
4960 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>.
4965 <div class=
"padding"></div>
4969 <a href=
"http://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html">Testing sysvinit from experimental in Debian Hurd
</a>
4975 <p>A few days ago I decided to try to help the Hurd people to get
4976 their changes into sysvinit, to allow them to use the normal sysvinit
4977 boot system instead of their old one. This follow up on the
4978 <a href=
"https://teythoon.cryptobitch.de//categories/gsoc.html">great
4979 Google Summer of Code work
</a> done last summer by Justus Winter to
4980 get Debian on Hurd working more like Debian on Linux. To get started,
4981 I downloaded a prebuilt hard disk image from
4982 <a href=
"http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz">http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz
</a>,
4983 and started it using virt-manager.
</p>
4985 <p>The first think I had to do after logging in (root without any
4986 password) was to get the network operational. I followed
4987 <a href=
"https://www.debian.org/ports/hurd/hurd-install">the
4988 instructions on the Debian GNU/Hurd ports page
</a> and ran these
4989 commands as root to get the machine to accept a IP address from the
4990 kvm internal DHCP server:
</p>
4992 <p><blockquote><pre>
4993 settrans -fgap /dev/netdde /hurd/netdde
4994 kill $(ps -ef|awk '/[p]finet/ { print $
2}')
4995 kill $(ps -ef|awk '/[d]evnode/ { print $
2}')
4997 </pre></blockquote></p>
4999 <p>After this, the machine had internet connectivity, and I could
5000 upgrade it and install the sysvinit packages from experimental and
5001 enable it as the default boot system in Hurd.
</p>
5003 <p>But before I did that, I set a password on the root user, as ssh is
5004 running on the machine it for ssh login to work a password need to be
5005 set. Also, note that a bug somewhere in openssh on Hurd block
5006 compression from working. Remember to turn that off on the client
5009 <p>Run these commands as root to upgrade and test the new sysvinit
5012 <p><blockquote><pre>
5013 cat
> /etc/apt/sources.list.d/experimental.list
<<EOF
5014 deb http://http.debian.net/debian/ experimental main
5017 apt-get dist-upgrade
5018 apt-get install -t experimental initscripts sysv-rc sysvinit \
5019 sysvinit-core sysvinit-utils
5020 update-alternatives --config runsystem
5021 </pre></blockquote></p>
5023 <p>To reboot after switching boot system, you have to use
5024 <tt>reboot-hurd
</tt> instead of just
<tt>reboot
</tt>, as there is not
5025 yet a sysvinit process able to receive the signals from the normal
5026 'reboot' command. After switching to sysvinit as the boot system,
5027 upgrading every package and rebooting, the network come up with DHCP
5028 after boot as it should, and the settrans/pkill hack mentioned at the
5029 start is no longer needed. But for some strange reason, there are no
5030 longer any login prompt in the virtual console, so I logged in using
5033 <p>Note that there are some race conditions in Hurd making the boot
5034 fail some times. No idea what the cause is, but hope the Hurd porters
5035 figure it out. At least Justus said on IRC (#debian-hurd on
5036 irc.debian.org) that they are aware of the problem. A way to reduce
5037 the impact is to upgrade to the Hurd packages built by Justus by
5038 adding this repository to the machine:
</p>
5040 <p><blockquote><pre>
5041 cat
> /etc/apt/sources.list.d/hurd-ci.list
<<EOF
5042 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
5044 </pre></blockquote></p>
5046 <p>At the moment the prebuilt virtual machine get some packages from
5047 http://ftp.debian-ports.org/debian, because some of the packages in
5048 unstable do not yet include the required patches that are lingering in
5049 BTS. This is the completely list of "unofficial" packages installed:
</p>
5051 <p><blockquote><pre>
5052 # aptitude search '?narrow(?version(CURRENT),?origin(Debian Ports))'
5053 i emacs - GNU Emacs editor (metapackage)
5054 i gdb - GNU Debugger
5055 i hurd-recommended - Miscellaneous translators
5056 i isc-dhcp-client - ISC DHCP client
5057 i isc-dhcp-common - common files used by all the isc-dhcp* packages
5058 i libc-bin - Embedded GNU C Library: Binaries
5059 i libc-dev-bin - Embedded GNU C Library: Development binaries
5060 i libc0.3 - Embedded GNU C Library: Shared libraries
5061 i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
5062 i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
5063 i multiarch-support - Transitional package to ensure multiarch compatibilit
5064 i A x11-common - X Window System (X.Org) infrastructure
5065 i xorg - X.Org X Window System
5066 i A xserver-xorg - X.Org X server
5067 i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
5069 </pre></blockquote></p>
5071 <p>All in all, testing hurd has been an interesting experience. :)
5072 X.org did not work out of the box and I never took the time to follow
5073 the porters instructions to fix it. This time I was interested in the
5074 command line stuff.
<p>
5080 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5085 <div class=
"padding"></div>
5089 <a href=
"http://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html">New chrpath release
0.16</a>
5095 <p><a href=
"http://www.coverity.com/">Coverity
</a> is a nice tool to
5096 find problems in C, C++ and Java code using static source code
5097 analysis. It can detect a lot of different problems, and is very
5098 useful to find memory and locking bugs in the error handling part of
5099 the source. The company behind it provide
5100 <a href=
"https://scan.coverity.com/">check of free software projects as
5101 a community service
</a>, and many hundred free software projects are
5102 already checked. A few days ago I decided to have a closer look at
5103 the Coverity system, and discovered that the
5104 <a href=
"http://www.gnu.org/software/gnash/">gnash
</a> and
5105 <a href=
"http://sourceforge.net/projects/ipmitool/">ipmitool
</a>
5106 projects I am involved with was already registered. But these are
5107 fairly big, and I would also like to have a small and easy project to
5108 check, and decided to
<a href=
"http://scan.coverity.com/projects/1179">request
5109 checking of the chrpath project
</a>. It was
5110 added to the checker and discovered seven potential defects. Six of
5111 these were real, mostly resource "leak" when the program detected an
5112 error. Nothing serious, as the resources would be released a fraction
5113 of a second later when the program exited because of the error, but it
5114 is nice to do it right in case the source of the program some time in
5115 the future end up in a library. Having fixed all defects and added
5116 <a href=
"https://lists.alioth.debian.org/mailman/listinfo/chrpath-devel">a
5117 mailing list for the chrpath developers
</a>, I decided it was time to
5118 publish a new release. These are the release notes:
</p>
5120 <p>New in
0.16 released
2014-
01-
14:
</p>
5124 <li>Fixed all minor bugs discovered by Coverity.
</li>
5125 <li>Updated config.sub and config.guess from the GNU project.
</li>
5126 <li>Mention new project mailing list in the documentation.
</li>
5131 <a href=
"https://alioth.debian.org/frs/?group_id=31052">download the
5132 new version
0.16 from alioth
</a>. Please let us know via the Alioth
5133 project if something is wrong with the new release. The test suite
5134 did not discover any old errors, so if you find a new one, please also
5135 include a test suite check.
</p>
5141 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5146 <div class=
"padding"></div>
5150 <a href=
"http://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html">New chrpath release
0.15</a>
5156 <p>After many years break from the package and a vain hope that
5157 development would be continued by someone else, I finally pulled my
5158 acts together this morning and wrapped up a new release of chrpath,
5159 the command line tool to modify the rpath and runpath of already
5160 compiled ELF programs. The update was triggered by the persistence of
5161 Isha Vishnoi at IBM, which needed a new config.guess file to get
5162 support for the ppc64le architecture (powerpc
64-bit Little Endian) he
5163 is working on. I checked the
5164 <a href=
"http://packages.qa.debian.org/chrpath">Debian
</a>,
5165 <a href=
"https://launchpad.net/ubuntu/+source/chrpath">Ubuntu
</a> and
5166 <a href=
"https://admin.fedoraproject.org/pkgdb/acls/name/chrpath">Fedora
</a>
5167 packages for interesting patches (failed to find the source from
5168 OpenSUSE and Mandriva packages), and found quite a few nice fixes.
5169 These are the release notes:
</p>
5171 <p>New in
0.15 released
2013-
11-
24:
</p>
5175 <li>Updated config.sub and config.guess from the GNU project to work
5176 with newer architectures. Thanks to isha vishnoi for the heads
5179 <li>Updated README with current URLs.
</li>
5181 <li>Added byteswap fix found in Ubuntu, credited Jeremy Kerr and
5182 Matthias Klose.
</li>
5184 <li>Added missing help for -k|--keepgoing option, using patch by
5185 Petr Machata found in Fedora.
</li>
5187 <li>Rewrite removal of RPATH/RUNPATH to make sure the entry in
5188 .dynamic is a NULL terminated string. Based on patch found in
5189 Fedora credited Axel Thimm and Christian Krause.
</li>
5194 <a href=
"https://alioth.debian.org/frs/?group_id=31052">download the
5195 new version
0.15 from alioth
</a>. Please let us know via the Alioth
5196 project if something is wrong with the new release. The test suite
5197 did not discover any old errors, so if you find a new one, please also
5198 include a testsuite check.
</p>
5204 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5209 <div class=
"padding"></div>
5213 <a href=
"http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html">Debian init.d boot script example for rsyslog
</a>
5219 <p>If one of the points of switching to a new init system in Debian is
5220 <a href=
"http://thomas.goirand.fr/blog/?p=147">to get rid of huge
5221 init.d scripts
</a>, I doubt we need to switch away from sysvinit and
5222 init.d scripts at all. Here is an example init.d script, ie a rewrite
5223 of /etc/init.d/rsyslog:
</p>
5226 #!/lib/init/init-d-script
5229 # Required-Start: $remote_fs $time
5230 # Required-Stop: umountnfs $time
5231 # X-Stop-After: sendsigs
5232 # Default-Start:
2 3 4 5
5233 # Default-Stop:
0 1 6
5234 # Short-Description: enhanced syslogd
5235 # Description: Rsyslog is an enhanced multi-threaded syslogd.
5236 # It is quite compatible to stock sysklogd and can be
5237 # used as a drop-in replacement.
5239 DESC="enhanced syslogd"
5240 DAEMON=/usr/sbin/rsyslogd
5243 <p>Pretty minimalistic to me... For the record, the original sysv-rc
5244 script was
137 lines, and the above is just
15 lines, most of it meta
5247 <p>How to do this, you ask? Well, one create a new script
5248 /lib/init/init-d-script looking something like this:
5253 # Define LSB log_* functions.
5254 # Depend on lsb-base (
>=
3.2-
14) to ensure that this file is present
5255 # and status_of_proc is working.
5256 . /lib/lsb/init-functions
5259 # Function that starts the daemon/service
5265 #
0 if daemon has been started
5266 #
1 if daemon was already running
5267 #
2 if daemon could not be started
5268 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test
> /dev/null \
5270 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
5273 # Add code here, if necessary, that waits for the process to be ready
5274 # to handle requests from services started subsequently which depend
5275 # on this one. As a last resort, sleep for some time.
5279 # Function that stops the daemon/service
5284 #
0 if daemon has been stopped
5285 #
1 if daemon was already stopped
5286 #
2 if daemon could not be stopped
5287 # other if a failure occurred
5288 start-stop-daemon --stop --quiet --retry=TERM/
30/KILL/
5 --pidfile $PIDFILE --name $NAME
5290 [ "$RETVAL" =
2 ] && return
2
5291 # Wait for children to finish too if this is a daemon that forks
5292 # and if the daemon is only ever run from this initscript.
5293 # If the above conditions are not satisfied then add some other code
5294 # that waits for the process to drop all resources that could be
5295 # needed by services started subsequently. A last resort is to
5296 # sleep for some time.
5297 start-stop-daemon --stop --quiet --oknodo --retry=
0/
30/KILL/
5 --exec $DAEMON
5298 [ "$?" =
2 ] && return
2
5299 # Many daemons don't delete their pidfiles when they exit.
5305 # Function that sends a SIGHUP to the daemon/service
5309 # If the daemon can reload its configuration without
5310 # restarting (for example, when it is sent a SIGHUP),
5311 # then implement that here.
5313 start-stop-daemon --stop --signal
1 --quiet --pidfile $PIDFILE --name $NAME
5318 scriptbasename="$(basename $
1)"
5319 echo "SN: $scriptbasename"
5320 if [ "$scriptbasename" != "init-d-library" ] ; then
5328 NAME=$(basename $DAEMON)
5329 PIDFILE=/var/run/$NAME.pid
5331 # Exit if the package is not installed
5332 #[ -x "$DAEMON" ] || exit
0
5334 # Read configuration variable file if it is present
5335 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
5337 # Load the VERBOSE setting and other rcS variables
5342 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
5345 0|
1) [ "$VERBOSE" != no ] && log_end_msg
0 ;;
5346 2) [ "$VERBOSE" != no ] && log_end_msg
1 ;;
5350 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
5353 0|
1) [ "$VERBOSE" != no ] && log_end_msg
0 ;;
5354 2) [ "$VERBOSE" != no ] && log_end_msg
1 ;;
5358 status_of_proc "$DAEMON" "$NAME" && exit
0 || exit $?
5360 #reload|force-reload)
5362 # If do_reload() is not implemented then leave this commented out
5363 # and leave 'force-reload' as an alias for 'restart'.
5365 #log_daemon_msg "Reloading $DESC" "$NAME"
5369 restart|force-reload)
5371 # If the "reload" option is implemented then remove the
5372 # 'force-reload' alias
5374 log_daemon_msg "Restarting $DESC" "$NAME"
5381 1) log_end_msg
1 ;; # Old process is still running
5382 *) log_end_msg
1 ;; # Failed to start
5392 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
>&
2
5400 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
5401 lot. I did not really polish the approach, so it might not always
5402 work out of the box, but you get the idea. I did not try very hard to
5403 optimize it nor make it more robust either.
</p>
5405 <p>A better argument for switching init system in Debian than reducing
5406 the size of init scripts (which is a good thing to do anyway), is to
5407 get boot system that is able to handle the kernel events sensibly and
5408 robustly, and do not depend on the boot to run sequentially. The boot
5409 and the kernel have not behaved sequentially in years.
</p>
5415 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5420 <div class=
"padding"></div>
5424 <a href=
"http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html">Browser plugin for SPICE (spice-xpi) uploaded to Debian
</a>
5430 <p><a href=
"http://www.spice-space.org/">The SPICE protocol
</a> for
5431 remote display access is the preferred solution with oVirt and RedHat
5432 Enterprise Virtualization, and I was sad to discover the other day
5433 that the browser plugin needed to use these systems seamlessly was
5434 missing in Debian. The
<a href=
"http://bugs.debian.org/668284">request
5435 for a package
</a> was from
2012-
04-
10 with no progress since
5436 2013-
04-
01, so I decided to wrap up a package based on the great work
5437 from Cajus Pollmeier and put it in a collab-maint maintained git
5438 repository to get a package I could use. I would very much like
5439 others to help me maintain the package (or just take over, I do not
5440 mind), but as no-one had volunteered so far, I just uploaded it to
5441 NEW. I hope it will be available in Debian in a few days.
</p>
5443 <p>The source is now available from
5444 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary">http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary
</a>.
</p>
5450 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>.
5455 <div class=
"padding"></div>
5459 <a href=
"http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html">Teaching vmdebootstrap to create Raspberry Pi SD card images
</a>
5466 <a href=
"http://packages.qa.debian.org/v/vmdebootstrap.html">vmdebootstrap
</a>
5467 program is a a very nice system to create virtual machine images. It
5468 create a image file, add a partition table, mount it and run
5469 debootstrap in the mounted directory to create a Debian system on a
5470 stick. Yesterday, I decided to try to teach it how to make images for
5471 <a href=
"https://wiki.debian.org/RaspberryPi">Raspberry Pi
</a>, as part
5472 of a plan to simplify the build system for
5473 <a href=
"https://wiki.debian.org/FreedomBox">the FreedomBox
5474 project
</a>. The FreedomBox project already uses vmdebootstrap for
5475 the virtualbox images, but its current build system made multistrap
5476 based system for Dreamplug images, and it is lacking support for
5479 <p>Armed with the knowledge on how to build "foreign" (aka non-native
5480 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
5481 code and adjusted it to be able to build armel images on my amd64
5482 Debian laptop. I ended up giving vmdebootstrap five new options,
5483 allowing me to replicate the image creation process I use to make
5484 <a href=
"http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html">Debian
5485 Jessie based mesh node images for the Raspberry Pi
</a>. First, the
5486 <tt>--foreign /path/to/binfm_handler
</tt> option tell vmdebootstrap to
5487 call debootstrap with --foreign and to copy the handler into the
5488 generated chroot before running the second stage. This allow
5489 vmdebootstrap to create armel images on an amd64 host. Next I added
5490 two new options
<tt>--bootsize size
</tt> and
<tt>--boottype
5491 fstype
</tt> to teach it to create a separate /boot/ partition with the
5492 given file system type, allowing me to create an image with a vfat
5493 partition for the /boot/ stuff. I also added a
<tt>--variant
5494 variant
</tt> option to allow me to create smaller images without the
5495 Debian base system packages installed. Finally, I added an option
5496 <tt>--no-extlinux
</tt> to tell vmdebootstrap to not install extlinux
5497 as a boot loader. It is not needed on the Raspberry Pi and probably
5498 most other non-x86 architectures. The changes were accepted by the
5499 upstream author of vmdebootstrap yesterday and today, and is now
5501 <a href=
"http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/">the
5502 upstream project page
</a>.
</p>
5504 <p>To use it to build a Raspberry Pi image using Debian Jessie, first
5505 create a small script (the customize script) to add the non-free
5506 binary blob needed to boot the Raspberry Pi and the APT source
5511 set -e # Exit on first error
5514 cat
<<EOF
> etc/apt/sources.list
5515 deb http://http.debian.net/debian/ jessie main contrib non-free
5517 # Install non-free binary blob needed to boot Raspberry Pi. This
5518 # install a kernel somewhere too.
5519 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
5520 -O $rootdir/usr/bin/rpi-update
5521 chmod a+x $rootdir/usr/bin/rpi-update
5522 mkdir -p $rootdir/lib/modules
5523 touch $rootdir/boot/start.elf
5524 chroot $rootdir rpi-update
5527 <p>Next, fetch the latest vmdebootstrap script and call it like this
5528 to build the image:
</p>
5531 sudo ./vmdebootstrap \
5534 --distribution jessie \
5535 --mirror http://http.debian.net/debian \
5544 --root-password raspberry \
5545 --hostname raspberrypi \
5546 --foreign /usr/bin/qemu-arm-static \
5547 --customize `pwd`/customize \
5549 --package git-core \
5550 --package binutils \
5551 --package ca-certificates \
5556 <p>The list of packages being installed are the ones needed by
5557 rpi-update to make the image bootable on the Raspberry Pi, with the
5558 exception of netbase, which is needed by debootstrap to find
5559 /etc/hosts with the minbase variant. I really wish there was a way to
5560 set up an Raspberry Pi using only packages in the Debian archive, but
5561 that is not possible as far as I know, because it boots from the GPU
5562 using a non-free binary blob.
</p>
5564 <p>The build host need debootstrap, kpartx and qemu-user-static and
5565 probably a few others installed. I have not checked the complete
5566 build dependency list.
</p>
5568 <p>The resulting image will not use the hardware floating point unit
5569 on the Raspberry PI, because the armel architecture in Debian is not
5570 optimized for that use. So the images created will be a bit slower
5571 than
<a href=
"http://www.raspbian.org/">Raspbian
</a> based images.
</p>
5577 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/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network
</a>.
5582 <div class=
"padding"></div>
5586 <a href=
"http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html">Good causes: Debian Outreach Program for Women, EFF documenting the spying and Open access in Norway
</a>
5592 <p>The last few days I came across a few good causes that should get
5593 wider attention. I recommend signing and donating to each one of
5596 <p>Via
<a href=
"http://www.debian.org/News/weekly/2013/18/">Debian
5597 Project News for
2013-
10-
14</a> I came across the Outreach Program for
5598 Women program which is a Google Summer of Code like initiative to get
5599 more women involved in free software. One debian sponsor has offered
5600 to match
<a href=
"http://debian.ch/opw2013">any donation done to Debian
5601 earmarked
</a> for this initiative. I donated a few minutes ago, and
5602 hope you will to. :)
</p>
5604 <p>And the Electronic Frontier Foundation just announced plans to
5605 create
<a href=
"https://supporters.eff.org/donate/nsa-videos">video
5606 documentaries about the excessive spying
</a> on every Internet user that
5607 take place these days, and their need to fund the work. I've already
5608 donated. Are you next?
</p>
5610 <p>For my Norwegian audience, the organisation Studentenes og
5611 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
5612 statement under the heading
5613 <a href=
"http://saih.no/Bloggers_United/">Bloggers United for Open
5614 Access
</a> for those of us asking for more focus on open access in the
5615 Norwegian government. So far
499 signatures. I hope you will sign it
5622 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/opphavsrett">opphavsrett
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
5627 <div class=
"padding"></div>
5631 <a href=
"http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html">Videos about the Freedombox project - for inspiration and learning
</a>
5637 <p>The
<a href=
"http://www.freedomboxfoundation.org/">Freedombox
5638 project
</a> have been going on for a while, and have presented the
5639 vision, ideas and solution several places. Here is a little
5640 collection of videos of talks and presentation of the project.
</p>
5644 <li><a href=
"http://www.youtube.com/watch?v=ukvUz5taxvA">FreedomBox -
5645 2,
5 minute marketing film
</a> (Youtube)
</li>
5647 <li><a href=
"http://www.youtube.com/watch?v=SzW25QTVWsE">Eben Moglen
5648 discusses the Freedombox on CBS news
2011</a> (Youtube)
</li>
5650 <li><a href=
"http://www.youtube.com/watch?v=Ae8SZbxfE0g">Eben Moglen -
5651 Freedom in the Cloud - Software Freedom, Privacy and and Security for
5652 Web
2.0 and Cloud computing at ISOC-NY Public Meeting
2010</a>
5655 <li><a href=
"http://www.youtube.com/watch?v=vNaIji_3xBE">Fosdem
2011
5656 Keynote by Eben Moglen presenting the Freedombox
</a> (Youtube)
</li>
5658 <li><a href=
"http://www.youtube.com/watch?v=9bDDUyJSQ9s">Presentation of
5659 the Freedombox by James Vasile at Elevate in Gratz
2011</a> (Youtube)
</li>
5661 <li><a href=
"http://www.youtube.com/watch?v=zQTmnk27g9s"> Freedombox -
5662 Discovery, Identity, and Trust by Nick Daly at Freedombox Hackfest New
5663 York City in
2012</a> (Youtube)
</li>
5665 <li><a href=
"http://www.youtube.com/watch?v=tkbSB4Ba7Ck">Introduction
5666 to the Freedombox at Freedombox Hackfest New York City in
2012</a>
5669 <li><a href=
"http://www.youtube.com/watch?v=z-P2Jaeg0aQ">Freedom, Out
5670 of the Box! by Bdale Garbee at linux.conf.au Ballarat,
2012</a> (Youtube)
</li>
5672 <li><a href=
"https://archive.fosdem.org/2013/schedule/event/freedombox/">Freedombox
5673 1.0 by Eben Moglen and Bdale Garbee at Fosdem
2013</a> (FOSDEM)
</li>
5675 <li><a href=
"http://www.youtube.com/watch?v=e1LpYX2zVYg">What is the
5676 FreedomBox today by Bdale Garbee at Debconf13 in Vaumarcus
5677 2013</a> (Youtube)
</li>
5681 <p>A larger list is available from
5682 <a href=
"https://wiki.debian.org/FreedomBox/TalksAndPresentations">the
5683 Freedombox Wiki
</a>.
</p>
5685 <p>On other news, I am happy to report that Freedombox based on Debian
5686 Jessie is coming along quite well, and soon both Owncloud and using
5687 Tor should be available for testers of the Freedombox solution. :) In
5688 a few weeks I hope everything needed to test it is included in Debian.
5689 The withsqlite package is already in Debian, and the plinth package is
5690 pending in NEW. The third and vital part of that puzzle is the
5691 metapackage/setup framework, which is still pending an upload. Join
5692 us on
<a href=
"irc://irc.debian.org:6667/%23freedombox">IRC
5693 (#freedombox on irc.debian.org)
</a> and
5694 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
5695 mailing list
</a> if you want to help make this vision come true.
</p>
5701 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/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
5706 <div class=
"padding"></div>
5710 <a href=
"http://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html">Recipe to test the Freedombox project on amd64 or Raspberry Pi
</a>
5716 <p>I was introduced to the
5717 <a href=
"http://www.freedomboxfoundation.org/">Freedombox project
</a>
5718 in
2010, when Eben Moglen presented his vision about serving the need
5719 of non-technical people to keep their personal information private and
5720 within the legal protection of their own homes. The idea is to give
5721 people back the power over their network and machines, and return
5722 Internet back to its intended peer-to-peer architecture. Instead of
5723 depending on a central service, the Freedombox will give everyone
5724 control over their own basic infrastructure.
</p>
5726 <p>I've intended to join the effort since then, but other tasks have
5727 taken priority. But this summers nasty news about the misuse of trust
5728 and privilege exercised by the "western" intelligence gathering
5729 communities increased my eagerness to contribute to a point where I
5730 actually started working on the project a while back.
</p>
5732 <p>The
<a href=
"https://alioth.debian.org/projects/freedombox/">initial
5733 Debian initiative
</a> based on the vision from Eben Moglen, is to
5734 create a simple and cheap Debian based appliance that anyone can hook
5735 up in their home and get access to secure and private services and
5736 communication. The initial deployment platform have been the
5737 <a href=
"http://www.globalscaletechnologies.com/t-dreamplugdetails.aspx">Dreamplug
</a>,
5738 which is a piece of hardware I do not own. So to be able to test what
5739 the current Freedombox setup look like, I had to come up with a way to install
5740 it on some hardware I do have access to. I have rewritten the
5741 <a href=
"https://github.com/NickDaly/freedom-maker">freedom-maker
</a>
5742 image build framework to use .deb packages instead of only copying
5743 setup into the boot images, and thanks to this rewrite I am able to
5744 set up any machine supported by Debian Wheezy as a Freedombox, using
5745 the previously mentioned deb (and a few support debs for packages
5746 missing in Debian).
</p>
5748 <p>The current Freedombox setup consist of a set of bootstrapping
5750 (
<a href=
"https://github.com/petterreinholdtsen/freedombox-setup">freedombox-setup
</a>),
5751 and a administrative web interface
5752 (
<a href=
"https://github.com/NickDaly/Plinth">plinth
</a> + exmachina +
5753 withsqlite), as well as a privacy enhancing proxy based on
5754 <a href=
"http://packages.qa.debian.org/privoxy">privoxy
</a>
5755 (freedombox-privoxy). There is also a web/javascript based XMPP
5756 client (
<a href=
"http://packages.qa.debian.org/jwchat">jwchat
</a>)
5757 trying (unsuccessfully so far) to talk to the XMPP server
5758 (
<a href=
"http://packages.qa.debian.org/ejabberd">ejabberd
</a>). The
5759 web interface is pluggable, and the goal is to use it to enable OpenID
5760 services, mesh network connectivity, use of TOR, etc, etc. Not much of
5761 this is really working yet, see
5762 <a href=
"https://github.com/NickDaly/freedombox-todos/blob/master/TODO">the
5763 project TODO
</a> for links to GIT repositories. Most of the code is
5764 on github at the moment. The HTTP proxy is operational out of the
5765 box, and the admin web interface can be used to add/remove plinth
5766 users. I've not been able to do anything else with it so far, but
5767 know there are several branches spread around github and other places
5768 with lots of half baked features.
</p>
5770 <p>Anyway, if you want to have a look at the current state, the
5771 following recipes should work to give you a test machine to poke
5774 <p><strong>Debian Wheezy amd64
</strong></p>
5778 <li>Fetch normal Debian Wheezy installation ISO.
</li>
5779 <li>Boot from it, either as CD or USB stick.
</li>
5780 <li><p>Press [tab] on the boot prompt and add this as a boot argument
5781 to the Debian installer:
<p>
5782 <pre>url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat">http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat
</a></pre></li>
5784 <li>Answer the few language/region/password questions and pick disk to
5787 <li>When the installation is finished and the machine have rebooted a
5788 few times, your Freedombox is ready for testing.
</li>
5792 <p><strong>Raspberry Pi Raspbian
</strong></p>
5796 <li>Fetch a Raspbian SD card image, create SD card.
</li>
5797 <li>Boot from SD card, extend file system to fill the card completely.
</li>
5798 <li><p>Log in and add this to /etc/sources.list:
</p>
5800 deb
<a href=
"http://www.reinholdtsen.name/freedombox/">http://www.reinholdtsen.name/freedombox
</a> wheezy main
5802 <li><p>Run this as root:
</p>
5804 wget -O - http://www.reinholdtsen.name/freedombox/BE1A583D.asc | \
5807 apt-get install freedombox-setup
5808 /usr/lib/freedombox/setup
5810 <li>Reboot into your freshly created Freedombox.
</li>
5814 <p>You can test it on other architectures too, but because the
5815 freedombox-privoxy package is binary, it will only work as intended on
5816 the architectures where I have had time to build the binary and put it
5817 in my APT repository. But do not let this stop you. It is only a
5818 short "
<tt>apt-get source -b freedombox-privoxy
</tt>" away. :)</p>
5820 <p>Note that by default Freedombox is a DHCP server on the
5821 192.168.1.0/24 subnet, so if this is your subnet be careful and turn
5822 off the DHCP server by running "<tt>update-rc.d isc-dhcp-server
5823 disable
</tt>" as root.</p>
5825 <p>Please let me know if this works for you, or if you have any
5826 problems. We gather on the IRC channel
5827 <a href="irc://irc.debian.org:
6667/%
23freedombox
">#freedombox</a> on
5828 irc.debian.org and the
5829 <a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/freedombox-discuss
">project
5830 mailing list</a>.</p>
5832 <p>Once you get your freedombox operational, you can visit
5833 <tt>http://your-host-name:8001/</tt> to see the state of the plint
5834 welcome screen (dead end - do not be surprised if you are unable to
5835 get past it), and next visit <tt>http://your-host-name:8001/help/</tt>
5836 to look at the rest of plinth. The default user is 'admin' and the
5837 default password is 'secret'.</p>
5843 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/freedombox
">freedombox</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web
">web</a>.
5848 <div class="padding
"></div>
5852 <a href="http://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html
">Intel 180 SSD disk with Lenovo firmware can not use Intel firmware</a>
5858 <p>Earlier, I reported about
5859 <a href="http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html
">my
5860 problems using an Intel SSD 520 Series 180 GB disk</a>. Friday I was
5861 told by IBM that the original disk should be thrown away. And as
5862 there no longer was a problem if I bricked the firmware, I decided
5863 today to try to install Intel firmware to replace the Lenovo firmware
5864 currently on the disk.</p>
5866 <p>I searched the Intel site for firmware, and found
5867 <a href="https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=
3472&DwnldID=
18363&ProductFamily=Solid-State+Drives+and+Caching&ProductLine=Intel%c2%ae+High+Performance+Solid-State+Drive&ProductProduct=Intel%c2%ae+SSD+
520+Series+(
180GB%
2c+
2.5in+SATA+
6Gb%
2fs%
2c+
25nm%
2c+MLC)&lang=eng
">issdfut_2.0.4.iso</a>
5868 (aka Intel SATA Solid-State Drive Firmware Update Tool) which
5869 according to the site should contain the latest firmware for SSD
5870 disks. I inserted the broken disk in one of my spare laptops and
5871 booted the ISO from a USB stick. The disk was recognized, but the
5872 program claimed the newest firmware already were installed and refused
5873 to insert any Intel firmware. So no change, and the disk is still
5874 unable to handle write load. :( I guess the only way to get them
5875 working would be if Lenovo releases new firmware. No idea how likely
5876 that is. Anyway, just blogging about this test for completeness. I
5877 got a working Samsung disk, and see no point in spending more time on
5878 the broken disks.</p>
5884 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>.
5889 <div class="padding
"></div>
5893 <a href="http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html
">How to fix a Thinkpad X230 with a broken 180 GB SSD disk</a>
5899 <p>Today I switched to
5900 <a href="http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html
">my
5901 new laptop</a>. I've previously written about the problems I had with
5902 my new Thinkpad X230, which was delivered with an
5903 <a href="http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html
">180
5904 GB Intel SSD disk with Lenovo firmware</a> that did not handle
5905 sustained writes. My hardware supplier have been very forthcoming in
5906 trying to find a solution, and after first trying with another
5907 identical 180 GB disks they decided to send me a 256 GB Samsung SSD
5908 disk instead to fix it once and for all. The Samsung disk survived
5909 the installation of Debian with encrypted disks (filling the disk with
5910 random data during installation killed the first two), and I thus
5911 decided to trust it with my data. I have installed it as a Debian Edu
5912 Wheezy roaming workstation hooked up with my Debian Edu Squeeze main
5913 server at home using Kerberos and LDAP, and will use it as my work
5914 station from now on.</p>
5916 <p>As this is a solid state disk with no moving parts, I believe the
5917 Debian Wheezy default installation need to be tuned a bit to increase
5918 performance and increase life time of the disk. The Linux kernel and
5919 user space applications do not yet adjust automatically to such
5920 environment. To make it easier for my self, I created a draft Debian
5921 package <tt>ssd-setup</tt> to handle this tuning. The
5922 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/ssd-setup.git
">source
5923 for the ssd-setup package</a> is available from collab-maint, and it
5924 is set up to adjust the setup of the machine by just installing the
5925 package. If there is any non-SSD disk in the machine, the package
5926 will refuse to install, as I did not try to write any logic to sort
5927 file systems in SSD and non-SSD file systems.</p>
5929 <p>I consider the package a draft, as I am a bit unsure how to best
5930 set up Debian Wheezy with an SSD. It is adjusted to my use case,
5931 where I set up the machine with one large encrypted partition (in
5932 addition to /boot), put LVM on top of this and set up partitions on
5933 top of this again. See the README file in the package source for the
5934 references I used to pick the settings. At the moment these
5935 parameters are tuned:</p>
5939 <li>Set up cryptsetup to pass TRIM commands to the physical disk
5940 (adding discard to /etc/crypttab)</li>
5942 <li>Set up LVM to pass on TRIM commands to the underlying device (in
5943 this case a cryptsetup partition) by changing issue_discards from
5944 0 to 1 in /etc/lvm/lvm.conf.</li>
5946 <li>Set relatime as a file system option for ext3 and ext4 file
5949 <li>Tell swap to use TRIM commands by adding 'discard' to
5952 <li>Change I/O scheduler from cfq to deadline using a udev rule.</li>
5954 <li>Run fstrim on every ext3 and ext4 file system every night (from
5957 <li>Adjust sysctl values vm.swappiness to 1 and vm.vfs_cache_pressure
5958 to 50 to reduce the kernel eagerness to swap out processes.</li>
5962 <p>During installation, I cancelled the part where the installer fill
5963 the disk with random data, as this would kill the SSD performance for
5964 little gain. My goal with the encrypted file system is to ensure
5965 those stealing my laptop end up with a brick and not a working
5966 computer. I have no hope in keeping the really resourceful people
5967 from getting the data on the disk (see
5968 <a href="http://xkcd.com/
538/
">XKCD #538</a> for an explanation why).
5969 Thus I concluded that adding the discard option to crypttab is the
5970 right thing to do.</p>
5972 <p>I considered using the noop I/O scheduler, as several recommended
5973 it for SSD, but others recommended deadline and a benchmark I found
5974 indicated that deadline might be better for interactive use.</p>
5976 <p>I also considered using the 'discard' file system option for ext3
5977 and ext4, but read that it would give a performance hit ever time a
5978 file is removed, and thought it best to that that slowdown once a day
5979 instead of during my work.</p>
5981 <p>My package do not set up tmpfs on /var/run, /var/lock and /tmp, as
5982 this is already done by Debian Edu.</p>
5984 <p>I have not yet started on the user space tuning. I expect
5985 iceweasel need some tuning, and perhaps other applications too, but
5986 have not yet had time to investigate those parts.</p>
5988 <p>The package should work on Ubuntu too, but I have not yet tested it
5991 <p>As for the answer to the question in the title of this blog post,
5992 as far as I know, the only solution I know about is to replace the
5993 disk. It might be possible to flash it with Intel firmware instead of
5994 the Lenovo firmware. But I have not tried and did not want to do so
5995 without approval from Lenovo as I wanted to keep the warranty on the
5996 disk until a solution was found and they wanted the broken disks
6003 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>.
6008 <div class="padding
"></div>
6012 <a href="http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html
">Intel SSD 520 Series 180 GB with Lenovo firmware still lock up from sustained writes</a>
6018 <p>A few days ago, I wrote about
6019 <a href="http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html
">the
6020 problems I experienced with my new X230 and its SSD disk</a>, which
6021 was dying during installation because it is unable to cope with
6022 sustained write. My supplier is in contact with
6023 <a href="http://www.lenovo.com/
">Lenovo</a>, and they wanted to send a
6024 replacement disk to try to fix the problem. They decided to send an
6025 identical model, so my hopes for a permanent fix was slim.</p>
6027 <p>Anyway, today I got the replacement disk and tried to install
6028 Debian Edu Wheezy with encrypted disk on it. The new disk have the
6029 same firmware version as the original. This time my hope raised
6030 slightly as the installation progressed, as the original disk used to
6031 die after 4-7% of the disk was written to, while this time it kept
6032 going past 10%, 20%, 40% and even past 50%. But around 60%, the disk
6033 died again and I was back on square one. I still do not have a new
6034 laptop with a disk I can trust. I can not live with a disk that might
6035 lock up when I download a new
6036 <a href="http://www.skolelinux.org/
">Debian Edu / Skolelinux</a> ISO or
6037 other large files. I look forward to hearing from my supplier with
6038 the next proposal from Lenovo.</p>
6040 <p>The original disk is marked Intel SSD 520 Series 180 GB,
6041 11S0C38722Z1ZNME35X1TR, ISN: CVCV321407HB180EGN, SA: G57560302, FW:
6042 LF1i, 29MAY2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
6043 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40002756C4, Model:
6044 SSDSC2BW180A3L 2.5" 6Gb/s SATA SSD
180G
5V
1A, ASM P/N
0C38732, FRU
6045 P/N
45N8295, P0C38732.
</p>
6047 <p>The replacement disk is marked Intel SSD
520 Series
180 GB,
6048 11S0C38722Z1ZNDE34N0L0, ISN: CVCV315306RK180EGN, SA: G57560-
302, FW:
6049 LF1i,
22APR2013, PBA: G39779-
300, LBA
351,
651,
888, LI P/N:
0C38722,
6050 Pb-free
2LI, LC P/N:
16-
200366, WWN:
55CD2E40000AB69E, Model:
6051 SSDSC2BW180A3L
2.5"
6Gb/s SATA SSD
180G
5V
1A, ASM P/N
0C38732, FRU
6052 P/N
45N8295, P0C38732.
</p>
6054 <p>The only difference is in the first number (serial number?), ISN,
6055 SA, date and WNPP values. Mentioning all the details here in case
6056 someone is able to use the information to find a way to identify the
6057 failing disk among working ones (if any such working disk actually
6064 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>.
6069 <div class=
"padding"></div>
6073 <a href=
"http://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html">July
13th: Debian/Ubuntu BSP and Skolelinux/Debian Edu developer gathering in Oslo
</a>
6079 <p>The upcoming Saturday,
2013-
07-
13, we are organising a combined
6080 Debian Edu developer gathering and Debian and Ubuntu bug squashing
6081 party in Oslo. It is organised by
<a href=
"http://www.nuug.no/">the
6082 member assosiation NUUG
</a> and
6083 <a href=
"http://www.skolelinux.org/">the Debian Edu / Skolelinux
6084 project
</a> together with
<a href=
"http://bitraf.no/">the hack space
6087 <p>It starts
10:
00 and continue until late evening. Everyone is
6088 welcome, and there is no fee to participate. There is on the other
6089 hand limited space, and only room for
30 people. Please put your name
6090 on
<a href=
"http://wiki.debian.org/BSP/2013/07/13/no/Oslo">the event
6091 wiki page
</a> if you plan to join us.
</p>
6097 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
6102 <div class=
"padding"></div>
6106 <a href=
"http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html">The Thinkpad is dead, long live the Thinkpad X230?
</a>
6112 <p>Half a year ago, I reported that I had to find a
6113 <a href=
"http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">replacement
6114 for my trusty old Thinkpad X41
</a>. Unfortunately I did not have much
6115 time to spend on it, and it took a while to find a model I believe
6116 will do the job, but two days ago the replacement finally arrived. I
6118 <a href=
"http://www.linlap.com/lenovo_thinkpad_x230">Thinkpad X230
</a>
6119 with SSD disk (NZDAJMN). I first test installed Debian Edu Wheezy as
6120 a roaming workstation, and it seemed to work flawlessly. But my
6121 second installation with encrypted disk was not as successful. More
6124 <p>I had a hard time trying to track down a good laptop, as my most
6125 important requirements (robust and with a good keyboard) are never
6126 listed in the feature list. But I did get good help from the search
6127 feature at
<a href=
"http://www.prisjakt.no/">Prisjakt
</a>, which
6128 allowed me to limit the list of interesting laptops based on my other
6129 requirements. A bit surprising that SSD disk are not disks according
6130 to that search interface, so I had to drop specifying the number of
6131 disks from my search parameters. I also asked around among friends to
6132 get their impression on keyboards and robustness.
</p>
6134 <p>So the new laptop arrived, and it is quite a lot wider than the
6135 X41. I am not quite convinced about the keyboard, as it is
6136 significantly wider than my old keyboard, and I have to stretch my
6137 hand a lot more to reach the edges. But the key response is fairly
6138 good and the individual key shape is fairly easy to handle, so I hope
6139 I will get used to it. My old X40 was starting to fail, and I really
6140 needed a new laptop now. :)
</p>
6142 <p>Turning off the touch pad was simple. All it took was a quick
6143 visit to the BIOS during boot it disable it.
</p>
6145 <p>But there is a fatal problem with the laptop. The
180 GB SSD disk
6146 lock up during load. And this happen when installing Debian Wheezy
6147 with encrypted disk, while the disk is being filled with random data.
6148 I also tested to install Ubuntu Raring, and it happen there too if I
6149 reenable the code to fill the disk with random data (it is disabled by
6150 default in Ubuntu). And the bug with is already known. It was
6151 reported to Debian as
<a href=
"http://bugs.debian.org/691427">BTS
6152 report #
691427 2012-
10-
25</a> (journal commit I/O error on brand-new
6153 Thinkpad T430s ext4 on lvm on SSD). It is also reported to the Linux
6154 kernel developers as
6155 <a href=
"https://bugzilla.kernel.org/show_bug.cgi?id=51861">Kernel bugzilla
6156 report #
51861 2012-
12-
20</a> (Intel SSD
520 stops working under load
6157 (SSDSC2BW180A3L in Lenovo ThinkPad T430s)). It is also reported on the
6158 Lenovo forums, both for
6159 <a href=
"http://forums.lenovo.com/t5/T400-T500-and-newer-T-series/T430s-Intel-SSD-520-180GB-issue/m-p/1070549">T430
6160 2012-
11-
10</a> and for
6161 <a href=
"http://forums.lenovo.com/t5/X-Series-ThinkPad-Laptops/x230-SATA-errors-with-180GB-Intel-520-SSD-under-heavy-write-load/m-p/1068147">X230
6162 03-
20-
2013</a>. The problem do not only affect installation. The
6163 reports state that the disk lock up during use if many writes are done
6164 on the disk, so it is much no use to work around the installation
6165 problem and end up with a computer that can lock up at any moment.
6167 <a href=
"https://git.efficios.com/?p=test-ssd.git">small C program
6168 available
</a> that will lock up the hard drive after running a few
6169 minutes by writing to a file.
</p>
6171 <p>I've contacted my supplier and asked how to handle this, and after
6172 contacting PCHELP Norway (request
01D1FDP) which handle support
6173 requests for Lenovo, his first suggestion was to upgrade the disk
6174 firmware. Unfortunately there is no newer firmware available from
6175 Lenovo, as my disk already have the most recent one (version LF1i). I
6176 hope to hear more from him today and hope the problem can be
6183 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>.
6188 <div class=
"padding"></div>
6192 <a href=
"http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html">The Thinkpad is dead, long live the Thinkpad X230
</a>
6198 <p>Half a year ago, I reported that I had to find a replacement for my
6199 trusty old Thinkpad X41. Unfortunately I did not have much time to
6200 spend on it, but today the replacement finally arrived. I ended up
6201 picking a
<a href=
"http://www.linlap.com/lenovo_thinkpad_x230">Thinkpad
6202 X230
</a> with SSD disk (NZDAJMN). I first test installed Debian Edu
6203 Wheezy as a roaming workstation, and it worked flawlessly. As I write
6204 this, it is installing what I hope will be a more final installation,
6205 with a encrypted hard drive to ensure any dope head stealing it end up
6206 with an expencive door stop.
</p>
6208 <p>I had a hard time trying to track down a good laptop, as my most
6209 important requirements (robust and with a good keyboard) are never
6210 listed in the feature list. But I did get good help from the search
6211 feature at
<ahref=
"http://www.prisjakt.no/">Prisjakt
</a>, which
6212 allowed me to limit the list of interesting laptops based on my other
6213 requirements. A bit surprising that SSD disk are not disks, so I had
6214 to drop number of disks from my search parameters.
</p>
6216 <p>I am not quite convinced about the keyboard, as it is significantly
6217 wider than my old keyboard, and I have to stretch my hand a lot more
6218 to reach the edges. But the key response is fairly good and the
6219 individual key shape is fairly easy to handle, so I hope I will get
6220 used to it. My old X40 was starting to fail, and I really needed a
6221 new laptop now. :)
</p>
6223 <p>I look forward to figuring out how to turn off the touch pad.
</p>
6229 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>.
6234 <div class=
"padding"></div>
6238 <a href=
"http://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html">Automatically locate and install required firmware packages on Debian (Isenkram
0.4)
</a>
6244 <p>It annoys me when the computer fail to do automatically what it is
6245 perfectly capable of, and I have to do it manually to get things
6246 working. One such task is to find out what firmware packages are
6247 needed to get the hardware on my computer working. Most often this
6248 affect the wifi card, but some times it even affect the RAID
6249 controller or the ethernet card. Today I pushed version
0.4 of the
6250 <a href=
"http://packages.qa.debian.org/isenkram">Isenkram package
</a>
6251 including a new script isenkram-autoinstall-firmware handling the
6252 process of asking all the loaded kernel modules what firmware files
6253 they want, find debian packages providing these files and install the
6254 debian packages. Here is a test run on my laptop:
</p>
6257 # isenkram-autoinstall-firmware
6258 info: kernel drivers requested extra firmware: ipw2200-bss.fw ipw2200-ibss.fw ipw2200-sniffer.fw
6259 info: fetching http://http.debian.net/debian/dists/squeeze/Contents-i386.gz
6260 info: locating packages with the requested firmware files
6261 info: Updating APT sources after adding non-free APT source
6262 info: trying to install firmware-ipw2x00
6265 Preconfiguring packages ...
6266 Selecting previously deselected package firmware-ipw2x00.
6267 (Reading database ...
259727 files and directories currently installed.)
6268 Unpacking firmware-ipw2x00 (from .../firmware-ipw2x00_0.28+squeeze1_all.deb) ...
6269 Setting up firmware-ipw2x00 (
0.28+squeeze1) ...
6273 <p>When all the requested firmware is present, a simple message is
6274 printed instead:
</p>
6277 # isenkram-autoinstall-firmware
6278 info: did not find any firmware files requested by loaded kernel modules. exiting
6282 <p>It could use some polish, but it is already working well and saving
6283 me some time when setting up new machines. :)
</p>
6285 <p>So, how does it work? It look at the set of currently loaded
6286 kernel modules, and look up each one of them using modinfo, to find
6287 the firmware files listed in the module meta-information. Next, it
6288 download the Contents file from a nearby APT mirror, and search for
6289 the firmware files in this file to locate the package with the
6290 requested firmware file. If the package is in the non-free section, a
6291 non-free APT source is added and the package is installed using
6292 <tt>apt-get install
</tt>. The end result is a slightly better working
6295 <p>I hope someone find time to implement a more polished version of
6296 this script as part of the hw-detect debian-installer module, to
6297 finally fix
<a href=
"http://bugs.debian.org/655507">BTS report
6298 #
655507</a>. There really is no need to insert USB sticks with
6299 firmware during a PXE install when the packages already are available
6300 from the nearby Debian mirror.
</p>
6306 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>.
6311 <div class=
"padding"></div>
6315 <a href=
"http://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html">Fixing the Linux black screen of death on machines with Intel HD video
</a>
6321 <p>When installing RedHat, Fedora, Debian and Ubuntu on some machines,
6322 the screen just turn black when Linux boot, either during installation
6323 or on first boot from the hard disk. I've seen it once in a while the
6324 last few years, but only recently understood the cause. I've seen it
6325 on HP laptops, and on my latest acquaintance the Packard Bell laptop.
6326 The reason seem to be in the wiring of some laptops. The system to
6327 control the screen background light is inverted, so when Linux try to
6328 turn the brightness fully on, it end up turning it off instead. I do
6329 not know which Linux drivers are affected, but this post is about the
6330 i915 driver used by the
6331 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Packard Bell
6332 EasyNote LV
</a>, Thinkpad X40 and many other laptops.
</p>
6334 <p>The problem can be worked around two ways. Either by adding
6335 i915.invert_brightness=
1 as a kernel option, or by adding a file in
6336 /etc/modprobe.d/ to tell modprobe to add the invert_brightness=
1
6337 option when it load the i915 kernel module. On Debian and Ubuntu, it
6338 can be done by running these commands as root:
</p>
6341 echo options i915 invert_brightness=
1 | tee /etc/modprobe.d/i915.conf
6342 update-initramfs -u -k all
6345 <p>Since March
2012 there is
6346 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955">a
6347 mechanism in the Linux kernel
</a> to tell the i915 driver which
6348 hardware have this problem, and get the driver to invert the
6349 brightness setting automatically. To use it, one need to add a row in
6350 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/intel_display.c">the
6351 intel_quirks array
</a> in the driver source
6352 <tt>drivers/gpu/drm/i915/intel_display.c
</tt> (look for "
<tt>static
6353 struct intel_quirk intel_quirks
</tt>"), specifying the PCI device
6354 number (vendor number 8086 is assumed) and subdevice vendor and device
6357 <p>My Packard Bell EasyNote LV got this output from <tt>lspci
6358 -vvnn</tt> for the video card in question:</p>
6361 00:02.0 VGA compatible controller [0300]: Intel Corporation \
6362 3rd Gen Core processor Graphics Controller [8086:0156] \
6363 (rev 09) (prog-if 00 [VGA controller])
6364 Subsystem: Acer Incorporated [ALI] Device [1025:0688]
6365 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- \
6366 ParErr- Stepping- SE RR- FastB2B- DisINTx+
6367 Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- \
6368 <TAbort- <MAbort->SERR- <PERR- INTx-
6370 Interrupt: pin A routed to IRQ 42
6371 Region 0: Memory at c2000000 (64-bit, non-prefetchable) [size=4M]
6372 Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
6373 Region 4: I/O ports at 4000 [size=64]
6374 Expansion ROM at <unassigned> [disabled]
6375 Capabilities: <access denied>
6376 Kernel driver in use: i915
6379 <p>The resulting intel_quirks entry would then look like this:</p>
6382 struct intel_quirk intel_quirks[] = {
6384 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
6385 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
6390 <p>According to the kernel module instructions (as seen using
6391 <tt>modinfo i915</tt>), information about hardware needing the
6392 invert_brightness flag should be sent to the
6393 <a href="http://lists.freedesktop.org/mailman/listinfo/dri-devel
">dri-devel
6394 (at) lists.freedesktop.org</a> mailing list to reach the kernel
6395 developers. But my email about the laptop sent 2013-06-03 have not
6397 <a href="http://lists.freedesktop.org/archives/dri-devel/
2013-June/thread.html
">the
6398 web archive for the mailing list</a>, so I suspect they do not accept
6399 emails from non-subscribers. Because of this, I sent my patch also to
6400 the Debian bug tracking system instead as
6401 <a href="http://bugs.debian.org/
710938">BTS report #710938</a>, to make
6402 sure the patch is not lost.</p>
6404 <p>Unfortunately, it is not enough to fix the kernel to get Laptops
6405 with this problem working properly with Linux. If you use Gnome, your
6406 worries should be over at this point. But if you use KDE, there is
6407 something in KDE ignoring the invert_brightness setting and turning on
6408 the screen during login. I've reported it to Debian as
6409 <a href="http://bugs.debian.org/
711237">BTS report #711237</a>, and
6410 have no idea yet how to figure out exactly what subsystem is doing
6411 this. Perhaps you can help? Perhaps you know what the Gnome
6412 developers did to handle this, and this can give a clue to the KDE
6413 developers? Or you know where in KDE the screen brightness is changed
6414 during login? If so, please update the BTS report (or get in touch if
6415 you do not know how to update BTS).</p>
6417 <p>Update 2013-07-19: The correct fix for this machine seem to be
6418 acpi_backlight=vendor, to disable ACPI backlight support completely,
6419 as the ACPI information on the machine is trash and it is better to
6420 leave it to the intel video driver to control the screen
6427 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>.
6432 <div class="padding
"></div>
6436 <a href="http://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html
">How to install Linux on a Packard Bell Easynote LV preinstalled with Windows 8</a>
6442 <p>Two days ago, I asked
6443 <a href="http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html
">how
6444 I could install Linux on a Packard Bell EasyNote LV computer
6445 preinstalled with Windows 8</a>. I found a solution, but am horrified
6446 with the obstacles put in the way of Linux users on a laptop with UEFI
6449 <p>I never found out if the cause of my problems were the use of UEFI
6450 secure booting or fast boot. I suspect fast boot was the problem,
6451 causing the firmware to boot directly from HD without considering any
6452 key presses and alternative devices, but do not know UEFI settings
6455 <p>There is no way to install Linux on the machine in question without
6456 opening the box and disconnecting the hard drive! This is as far as I
6457 can tell, the only way to get access to the firmware setup menu
6458 without accepting the Windows 8 license agreement. I am told (and
6459 found description on how to) that it is possible to configure the
6460 firmware setup once booted into Windows 8. But as I believe the terms
6461 of that agreement are completely unacceptable, accepting the license
6462 was never an alternative. I do not enter agreements I do not intend
6465 <p>I feared I had to return the laptops and ask for a refund, and
6466 waste many hours on this, but luckily there was a way to get it to
6467 work. But I would not recommend it to anyone planning to run Linux on
6468 it, and I have become sceptical to Windows 8 certified laptops. Is
6469 this the way Linux will be forced out of the market place, by making
6470 it close to impossible for "normal" users to install Linux without
6471 accepting the Microsoft Windows license terms? Or at least not
6472 without risking to loose the warranty?
</p>
6475 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Linux Laptop
6476 wiki page for Packard Bell EasyNote LV
</a>, to ensure the next person
6477 do not have to struggle as much as I did to get Linux into the
6480 <p>Thanks to Bob Rosbag, Florian Weimer, Philipp Kern, Ben Hutching,
6481 Michael Tokarev and others for feedback and ideas.
</p>
6487 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>.
6492 <div class=
"padding"></div>
6496 <a href=
"http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html">How can I install Linux on a Packard Bell Easynote LV preinstalled with Windows
8?
</a>
6502 <p>I've run into quite a problem the last few days. I bought three
6503 new laptops for my parents and a few others. I bought Packard Bell
6504 Easynote LV to run Kubuntu on and use as their home computer. But I
6505 am completely unable to figure out how to install Linux on it. The
6506 computer is preinstalled with Windows
8, and I suspect it uses UEFI
6507 instead of a BIOS to boot.
</p>
6509 <p>The problem is that I am unable to get it to PXE boot, and unable
6510 to get it to boot the Linux installer from my USB stick. I have yet
6511 to try the DVD install, and still hope it will work. when I turn on
6512 the computer, there is no information on what buttons to press to get
6513 the normal boot menu. I expect to get some boot menu to select PXE or
6514 USB stick booting. When booting, it first ask for the language to
6515 use, then for some regional settings, and finally if I will accept the
6516 Windows
8 terms of use. As these terms are completely unacceptable to
6517 me, I have no other choice but to turn off the computer and try again
6518 to get it to boot the Linux installer.
</p>
6520 <p>I have gathered my findings so far on a Linlap page about the
6521 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Packard Bell
6522 EasyNote LV
</a> model. If you have any idea how to get Linux
6523 installed on this machine, please get in touch or update that wiki
6524 page. If I can't find a way to install Linux, I will have to return
6525 the laptop to the seller and find another machine for my parents.
</p>
6527 <p>I wonder, is this the way Linux will be forced out of the market
6528 using UEFI and "secure boot" by making it impossible to install Linux
6535 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>.
6540 <div class=
"padding"></div>
6544 <a href=
"http://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html">How to transform a Debian based system to a Debian Edu installation
</a>
6550 <p><a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
</a> is
6551 an operating system based on Debian intended for use in schools. It
6552 contain a turn-key solution for the computer network provided to
6553 pupils in the primary schools. It provide both the central server,
6554 network boot servers and desktop environments with heaps of
6555 educational software. The project was founded almost
12 years ago,
6556 2001-
07-
02. If you want to support the project, which is in need for
6557 cash to fund developer gatherings and other project related activity,
6558 <a href=
"http://www.linuxiskolen.no/slxdebianlabs/donations.html">please
6559 donate some money
</a>.
6561 <p>A topic that come up again and again on the Debian Edu mailing
6562 lists and elsewhere, is the question on how to transform a Debian or
6563 Ubuntu installation into a Debian Edu installation. It isn't very
6564 hard, and last week I wrote a script to replicate the steps done by
6565 the Debian Edu installer.
</p>
6568 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/branches/wheezy/debian-edu-config/share/debian-edu-config/tools/debian-edu-bless?view=markup">debian-edu-bless
<a/>
6569 in the debian-edu-config package, will go through these six steps and
6570 transform an existing Debian Wheezy or Ubuntu (untested) installation
6571 into a Debian Edu Workstation:
</p>
6575 <li>Add skolelinux related APT sources.
</li>
6576 <li>Create /etc/debian-edu/config with the wanted configuration.
</li>
6577 <li>Install debian-edu-install to load preseeding values and pull in
6578 our configuration.
</li>
6579 <li>Preseed debconf database with profile setup in
6580 /etc/debian-edu/config, and run tasksel to install packages
6581 according to the profile specified in the config above,
6582 overriding some of the Debian automation machinery.
</li>
6583 <li>Run debian-edu-cfengine-D installation to configure everything
6584 that could not be done using preseeding.
</li>
6585 <li>Ask for a reboot to enable all the configuration changes.
</li>
6589 <p>There are some steps in the Debian Edu installation that can not be
6590 replicated like this. Disk partitioning and LVM setup, for example.
6591 So this script just assume there is enough disk space to install all
6592 the needed packages.
</p>
6594 <p>The script was created to help a Debian Edu student working on
6595 setting up
<a href=
"http://www.raspberrypi.org">Raspberry Pi
</a> as a
6596 Debian Edu client, and using it he can take the existing
6597 <a href=
"http://www.raspbian.org/FrontPage">Raspbian
</a> installation and
6598 transform it into a fully functioning Debian Edu Workstation (or
6599 Roaming Workstation, or whatever :).
</p>
6601 <p>The default setting in the script is to create a KDE Workstation.
6602 If a LXDE based Roaming workstation is wanted instead, modify the
6603 PROFILE and DESKTOP values at the top to look like this instead:
</p>
6606 PROFILE="Roaming-Workstation"
6610 <p>The script could even become useful to set up Debian Edu servers in
6611 the cloud, by starting with a virtual Debian installation at some
6612 virtual hosting service and setting up all the services on first
6619 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6624 <div class=
"padding"></div>
6628 <a href=
"http://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html">Debian, the Linux distribution of choice for LEGO designers?
</a>
6635 <a href=
"http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">I
6636 announced a
</a> new
<a href=
"irc://irc.debian.org/%23debian-lego">IRC
6637 channel #debian-lego
</a>, for those of us in the Debian and Linux
6638 community interested in
<a href=
"http://www.lego.com/">LEGO
</a>, the
6639 marvellous construction system from Denmark. We also created
6640 <a href=
"http://wiki.debian.org/LegoDesigners">a wiki page
</a> to have
6641 a place to take notes and write down our plans and hopes. And several
6642 people showed up to help. I was very happy to see the effect of my
6643 call. Since the small start, we have a debtags tag
6644 <a href=
"http://debtags.debian.net/search/bytag?wl=hardware::hobby:lego">hardware::hobby:lego
</a>
6645 tag for LEGO related packages, and now count
10 packages related to
6646 LEGO and
<a href=
"http://mindstorms.lego.com/">Mindstorms
</a>:
</p>
6649 <tr><td><a href=
"http://packages.qa.debian.org/brickos">brickos
</a></td><td>alternative OS for LEGO Mindstorms RCX. Supports development in C/C++
</td></tr>
6650 <tr><td><a href=
"http://packages.qa.debian.org/leocad">leocad
</a></td><td>virtual brick CAD software
</td></tr>
6651 <tr><td><a href=
"http://packages.qa.debian.org/libnxt">libnxt
</a></td><td>utility library for talking to the LEGO Mindstorms NX
</td></tr>
6652 <tr><td><a href=
"http://packages.qa.debian.org/lnpd">lnpd
</a></td><td>daemon for LNP communication with BrickOS
</td></tr>
6653 <tr><td><a href=
"http://packages.qa.debian.org/nbc">nbc
</a></td><td>compiler for LEGO Mindstorms NXT bricks
</td></tr>
6654 <tr><td><a href=
"http://packages.qa.debian.org/nqc">nqc
</a></td><td>Not Quite C compiler for LEGO Mindstorms RCX
</td></tr>
6655 <tr><td><a href=
"http://packages.qa.debian.org/python-nxt">python-nxt
</a></td><td>python driver/interface/wrapper for the Lego Mindstorms NXT robot
</td></tr>
6656 <tr><td><a href=
"http://packages.qa.debian.org/python-nxt-filer">python-nxt-filer
</a></td><td>simple GUI to manage files on a LEGO Mindstorms NXT
</td></tr>
6657 <tr><td><a href=
"http://packages.qa.debian.org/scratch">scratch
</a></td><td>easy to use programming environment for ages
8 and up
</td></tr>
6658 <tr><td><a href=
"http://packages.qa.debian.org/t2n">t2n
</a></td><td>simple command-line tool for Lego NXT
</td></tr>
6661 <p>Some of these are available in Wheezy, and all but one are
6662 currently available in Jessie/testing. leocad is so far only
6663 available in experimental.
</p>
6665 <p>If you care about LEGO in Debian, please join us on IRC and help
6666 adding the rest of the great free software tools available on Linux
6667 for LEGO designers.
</p>
6673 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>.
6678 <div class=
"padding"></div>
6682 <a href=
"http://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html">Debian Wheezy is out - and Debian Edu / Skolelinux should soon follow! #newinwheezy
</a>
6688 <p>When I woke up this morning, I was very happy to see that the
6689 <a href=
"http://www.debian.org/News/2013/20130504">release announcement
6690 for Debian Wheezy
</a> was waiting in my mail box. This is a great
6691 Debian release, and I expect to move my machines at home over to it fairly
6694 <p>The new debian release contain heaps of new stuff, and one program
6695 in particular make me very happy to see included. The
6696 <a href=
"http://scratch.mit.edu/">Scratch
</a> program, made famous by
6697 the
<a href=
"http://www.code.org/">Teach kids code
</a> movement, is
6698 included for the first time. Alongside similar programs like
6699 <a href=
"http://edu.kde.org/kturtle/">kturtle
</a> and
6700 <a href=
"http://wiki.sugarlabs.org/go/Activities/Turtle_Art">turtleart
</a>,
6701 it allow for visual programming where syntax errors can not happen,
6702 and a friendly programming environment for learning to control the
6703 computer. Scratch will also be included in the next release of Debian
6706 <p>And now that Wheezy is wrapped up, we can wrap up the next Debian
6707 Edu/Skolelinux release too. The
6708 <a href=
"http://lists.debian.org/debian-edu/2013/04/msg00132.html">first
6709 alpha release
</a> went out last week, and the next should soon
6716 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6721 <div class=
"padding"></div>
6725 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html">Isenkram
0.2 finally in the Debian archive
</a>
6731 <p>Today the
<a href=
"http://packages.qa.debian.org/isenkram">Isenkram
6732 package
</a> finally made it into the archive, after lingering in NEW
6733 for many months. I uploaded it to the Debian experimental suite
6734 2013-
01-
27, and today it was accepted into the archive.
</p>
6736 <p>Isenkram is a system for suggesting to users what packages to
6737 install to work with a pluggable hardware device. The suggestion pop
6738 up when the device is plugged in. For example if a Lego Mindstorm NXT
6739 is inserted, it will suggest to install the program needed to program
6740 the NXT controller. Give it a go, and report bugs and suggestions to
6747 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>.
6752 <div class=
"padding"></div>
6756 <a href=
"http://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html">Bitcoin GUI now available from Debian/unstable (and Ubuntu/raring)
</a>
6763 <a href=
"http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">last
6764 bitcoin related blog post
</a> mentioned that the new
6765 <a href=
"http://packages.qa.debian.org/bitcoin">bitcoin package
</a> for
6766 Debian was waiting in NEW. It was accepted by the Debian ftp-masters
6767 2013-
01-
19, and have been available in unstable since then. It was
6768 automatically copied to Ubuntu, and is available in their Raring
6771 <p>But there is a strange problem with the build that block this new
6772 version from being available on the i386 and kfreebsd-i386
6773 architectures. For some strange reason, the autobuilders in Debian
6774 for these architectures fail to run the test suite on these
6775 architectures (
<a href=
"http://bugs.debian.org/672524">BTS #
672524</a>).
6776 We are so far unable to reproduce it when building it manually, and
6777 no-one have been able to propose a fix. If you got an idea what is
6778 failing, please let us know via the BTS.
</p>
6780 <p>One feature that is annoying me with of the bitcoin client, because
6781 I often run low on disk space, is the fact that the client will exit
6782 if it run short on space (
<a href=
"http://bugs.debian.org/696715">BTS
6783 #
696715</a>). So make sure you have enough disk space when you run
6786 <p>As usual, if you use bitcoin and want to show your support of my
6787 activities, please send Bitcoin donations to my address
6788 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
6794 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6799 <div class=
"padding"></div>
6803 <a href=
"http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">Welcome to the world, Isenkram!
</a>
6810 <a href=
"http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">asked
6811 for testers
</a> for my prototype for making Debian better at handling
6812 pluggable hardware devices, which I
6813 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">set
6814 out to create
</a> earlier this month. Several valuable testers showed
6815 up, and caused me to really want to to open up the development to more
6816 people. But before I did this, I want to come up with a sensible name
6817 for this project. Today I finally decided on a new name, and I have
6818 renamed the project from hw-support-handler to this new name. In the
6819 process, I moved the source to git and made it available as a
6820 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git">collab-maint
</a>
6821 repository in Debian. The new name? It is
<strong>Isenkram
</strong>.
6822 To fetch and build the latest version of the source, use
</p>
6825 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
6826 cd isenkram && git-buildpackage -us -uc
6829 <p>I have not yet adjusted all files to use the new name yet. If you
6830 want to hack on the source or improve the package, please go ahead.
6831 But please talk to me first on IRC or via email before you do major
6832 changes, to make sure we do not step on each others toes. :)
</p>
6834 <p>If you wonder what 'isenkram' is, it is a Norwegian word for iron
6835 stuff, typically meaning tools, nails, screws, etc. Typical hardware
6836 stuff, in other words. I've been told it is the Norwegian variant of
6837 the German word eisenkram, for those that are familiar with that
6840 <p><strong>Update
2013-
01-
26</strong>: Added -us -us to build
6841 instructions, to avoid confusing people with an error from the signing
6844 <p><strong>Update
2013-
01-
27</strong>: Switch to HTTP URL for the git
6845 clone argument to avoid the need for authentication.
</p>
6851 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>.
6856 <div class=
"padding"></div>
6860 <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>
6866 <p>Early this month I set out to try to
6867 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">improve
6868 the Debian support for pluggable hardware devices
</a>. Now my
6869 prototype is working, and it is ready for a larger audience. To test
6871 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">source
6872 from the Debian Edu subversion repository
</a>, build and install the
6873 package. You might have to log out and in again activate the
6874 autostart script.
</p>
6876 <p>The design is simple:
</p>
6880 <li>Add desktop entry in /usr/share/autostart/ causing a program
6881 hw-support-handlerd to start when the user log in.
</li>
6883 <li>This program listen for kernel events about new hardware (directly
6884 from the kernel like udev does), not using HAL dbus events as I
6887 <li>When new hardware is inserted, look up the hardware modalias in
6888 the APT database, a database
6889 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup">available
6890 via HTTP
</a> and a database available as part of the package.
</li>
6892 <li>If a package is mapped to the hardware in question, the package
6893 isn't installed yet and this is the first time the hardware was
6894 plugged in, show a desktop notification suggesting to install the
6895 package or packages.
</li>
6897 <li>If the user click on the 'install package now' button, ask
6898 aptdaemon via the PackageKit API to install the requrired package.
</li>
6900 <li>aptdaemon ask for root password or sudo password, and install the
6901 package while showing progress information in a window.
</li>
6905 <p>I still need to come up with a better name for the system. Here
6906 are some screen shots showing the prototype in action. First the
6907 notification, then the password request, and finally the request to
6908 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.
</p>
6910 <p><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png">
6911 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png">
6912 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png">
6913 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png">
6914 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png" width=
"70%"></p>
6916 <p>The prototype still need to be improved with longer timeouts, but
6917 is already useful. The database of hardware to package mappings also
6918 need more work. It is currently compatible with the Ubuntu way of
6919 storing such information in the package control file, but could be
6920 changed to use other formats instead or in addition to the current
6921 method. I've dropped the use of discover for this mapping, as the
6922 modalias approach is more flexible and easier to use on Linux as long
6923 as the Linux kernel expose its modalias strings directly.
</p>
6925 <p><strong>Update
2013-
01-
21 16:
50</strong>: Due to popular demand,
6926 here is the command required to check out and build the source: Use
6928 svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
6929 hw-support-handler; debuild
</tt>'. If you lack debuild, install the
6930 devscripts package.
</p>
6932 <p><strong>Update
2013-
01-
23 12:
00</strong>: The project is now
6933 renamed to Isenkram and the source moved from the Debian Edu
6934 subversion repository to a Debian collab-maint git repository. See
6935 <a href=
"http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">build
6936 instructions
</a> for details.
</p>
6942 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>.
6947 <div class=
"padding"></div>
6951 <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>
6957 <p>This Christmas my trusty old laptop died. It died quietly and
6958 suddenly in bed. With a quiet whimper, it went completely quiet and
6959 black. The power button was no longer able to turn it on. It was a
6960 IBM Thinkpad X41, and the best laptop I ever had. Better than both
6961 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
6962 Compaq I had before that. Now I need to find a replacement. To keep
6963 going during Christmas, I moved the one year old SSD disk to my old
6964 X40 where it fitted (only one I had left that could use it), but it is
6965 not a durable solution.
6967 <p>My laptop needs are fairly modest. This is my wishlist from when I
6968 got a new one more than
10 years ago. It still holds true.:)
</p>
6972 <li>Lightweight (around
1 kg) and small volume (preferably smaller
6974 <li>Robust, it will be in my backpack every day.
</li>
6975 <li>Three button mouse and a mouse pin instead of touch pad.
</li>
6976 <li>Long battery life time. Preferable a week.
</li>
6977 <li>Internal WIFI network card.
</li>
6978 <li>Internal Twisted Pair network card.
</li>
6979 <li>Some USB slots (
2-
3 is plenty)
</li>
6980 <li>Good keyboard - similar to the Thinkpad.
</li>
6981 <li>Video resolution at least
1024x768, with size around
12" (A4 paper
6983 <li>Hardware supported by Debian Stable, ie the default kernel and
6984 X.org packages.
</li>
6985 <li>Quiet, preferably fan free (or at least not using the fan most of
6990 <p>You will notice that there are no RAM and CPU requirements in the
6991 list. The reason is simply that the specifications on laptops the
6992 last
10-
15 years have been sufficient for my needs, and I have to look
6993 at other features to choose my laptop. But are there still made as
6994 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
6995 robust, and Thinkpads seem to be heading in the wrong direction since
6996 Lenovo took over. But I've been told that X220 and X1 Carbon might
6997 still be useful.
</p>
6999 <p>Perhaps I should rethink my needs, and look for a pad with an
7000 external keyboard? I'll have to check the
7001 <a href=
"http://www.linux-laptop.net/">Linux Laptops site
</a> for
7002 well-supported laptops, or perhaps just buy one preinstalled from one
7003 of the vendors listed on the
<a href=
"http://linuxpreloaded.com/">Linux
7004 Pre-loaded site
</a>.
</p>
7010 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>.
7015 <div class=
"padding"></div>
7019 <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>
7025 <p>Some times I try to figure out which Iceweasel browser plugin to
7026 install to get support for a given MIME type. Thanks to
7027 <a href=
"https://wiki.ubuntu.com/MozillaTeam/Plugins">specifications
7028 done by Ubuntu
</a> and Mozilla, it is possible to do this in Debian.
7029 Unfortunately, not very many packages provide the needed meta
7030 information, Anyway, here is a small script to look up all browser
7031 plugin packages announcing ther MIME support using this specification:
</p>
7037 def pkgs_handling_mimetype(mimetype):
7042 version = pkg.candidate
7044 version = pkg.installed
7047 record = version.record
7048 if not record.has_key('Npp-MimeType'):
7050 mime_types = record['Npp-MimeType'].split(',')
7051 for t in mime_types:
7052 t = t.rstrip().strip()
7054 thepkgs.append(pkg.name)
7056 mimetype = "audio/ogg"
7057 if
1 < len(sys.argv):
7058 mimetype = sys.argv[
1]
7059 print "Browser plugin packages supporting %s:" % mimetype
7060 for pkg in pkgs_handling_mimetype(mimetype):
7064 <p>It can be used like this to look up a given MIME type:
</p>
7067 % ./apt-find-browserplug-for-mimetype
7068 Browser plugin packages supporting audio/ogg:
7070 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
7071 Browser plugin packages supporting application/x-shockwave-flash:
7072 browser-plugin-gnash
7076 <p>In Ubuntu this mechanism is combined with support in the browser
7077 itself to query for plugins and propose to install the needed
7078 packages. It would be great if Debian supported such feature too. Is
7079 anyone working on adding it?
</p>
7081 <p><strong>Update
2013-
01-
18 14:
20</strong>: The Debian BTS
7082 request for icweasel support for this feature is
7083 <a href=
"http://bugs.debian.org/484010">#
484010</a> from
2008 (and
7084 <a href=
"http://bugs.debian.org/698426">#
698426</a> from today). Lack
7085 of manpower and wish for a different design is the reason thus feature
7086 is not yet in iceweasel from Debian.
</p>
7092 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>.
7097 <div class=
"padding"></div>
7101 <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>
7107 <p>The
<a href=
"http://wiki.debian.org/AppStreamDebianProposal">DEP-
11
7108 proposal to add AppStream information to the Debian archive
</a>, is a
7109 proposal to make it possible for a Desktop application to propose to
7110 the user some package to install to gain support for a given MIME
7111 type, font, library etc. that is currently missing. With such
7112 mechanism in place, it would be possible for the desktop to
7113 automatically propose and install leocad if some LDraw file is
7114 downloaded by the browser.
</p>
7116 <p>To get some idea about the current content of the archive, I decided
7117 to write a simple program to extract all .desktop files from the
7118 Debian archive and look up the claimed MIME support there. The result
7120 <a href=
"http://ftp.skolelinux.org/pub/AppStreamTest">Skolelinux FTP
7121 site
</a>. Using the collected information, it become possible to
7122 answer the question in the title. Here are the
20 most supported MIME
7123 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
7124 The complete list is available from the link above.
</p>
7126 <p><strong>Debian Stable:
</strong></p>
7130 ----- -----------------------
7146 18 application/x-ogg
7153 <p><strong>Debian Testing:
</strong></p>
7157 ----- -----------------------
7173 18 application/x-ogg
7180 <p><strong>Debian Unstable:
</strong></p>
7184 ----- -----------------------
7201 18 application/x-ogg
7207 <p>I am told that PackageKit can provide an API to access the kind of
7208 information mentioned in DEP-
11. I have not yet had time to look at
7209 it, but hope the PackageKit people in Debian are on top of these
7212 <p><strong>Update
2013-
01-
16 13:
35</strong>: Updated numbers after
7213 discovering a typo in my script.
</p>
7219 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>.
7224 <div class=
"padding"></div>
7228 <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>
7234 <p>Yesterday, I wrote about the
7235 <a href=
"http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">modalias
7236 values provided by the Linux kernel
</a> following my hope for
7237 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">better
7238 dongle support in Debian
</a>. Using this knowledge, I have tested how
7239 modalias values attached to package names can be used to map packages
7240 to hardware. This allow the system to look up and suggest relevant
7241 packages when I plug in some new hardware into my machine, and replace
7242 discover and discover-data as the database used to map hardware to
7245 <p>I create a modaliases file with entries like the following,
7246 containing package name, kernel module name (if relevant, otherwise
7247 the package name) and globs matching the relevant hardware
7251 Package: package-name
7252 <br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)
</p>
7255 <p>It is fairly trivial to write code to find the relevant packages
7256 for a given modalias value using this file.
</p>
7258 <p>An entry like this would suggest the video and picture application
7259 cheese for many USB web cameras (interface bus class
0E01):
</p>
7263 <br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)
</p>
7266 <p>An entry like this would suggest the pcmciautils package when a
7267 CardBus bridge (bus class
0607) PCI device is present:
</p>
7270 Package: pcmciautils
7271 <br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
7274 <p>An entry like this would suggest the package colorhug-client when
7275 plugging in a ColorHug with USB IDs
04D8:F8DA:
</p>
7278 Package: colorhug-client
7279 <br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)
</p>
7282 <p>I believe the format is compatible with the format of the Packages
7283 file in the Debian archive. Ubuntu already uses their Packages file
7284 to store their mappings from packages to hardware.
</p>
7286 <p>By adding a XB-Modaliases: header in debian/control, any .deb can
7287 announce the hardware it support in a way my prototype understand.
7288 This allow those publishing packages in an APT source outside the
7289 Debian archive as well as those backporting packages to make sure the
7290 hardware mapping are included in the package meta information. I've
7291 tested such header in the pymissile package, and its modalias mapping
7292 is working as it should with my prototype. It even made it to Ubuntu
7295 <p>To test if it was possible to look up supported hardware using only
7296 the shell tools available in the Debian installer, I wrote a shell
7297 implementation of the lookup code. The idea is to create files for
7298 each modalias and let the shell do the matching. Please check out and
7300 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co">hw-support-lookup
</a>
7301 shell script. It run without any extra dependencies and fetch the
7302 hardware mappings from the Debian archive and the subversion
7303 repository where I currently work on my prototype.
</p>
7305 <p>When I use it on a machine with a yubikey inserted, it suggest to
7306 install yubikey-personalization:
</p>
7309 % ./hw-support-lookup
7310 <br>yubikey-personalization
7314 <p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
7315 propose to install the pcmciautils package:
</p>
7318 % ./hw-support-lookup
7323 <p>If you know of any hardware-package mapping that should be added to
7324 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co">my
7325 database
</a>, please tell me about it.
</p>
7327 <p>It could be possible to generate several of the mappings between
7328 packages and hardware. One source would be to look at packages with
7329 kernel modules, ie packages with *.ko files in /lib/modules/, and
7330 extract their modalias information. Another would be to look at
7331 packages with udev rules, ie packages with files in
7332 /lib/udev/rules.d/, and extract their vendor/model information to
7333 generate a modalias matching rule. I have not tested any of these to
7336 <p>If you want to help implementing a system to let us propose what
7337 packages to install when new hardware is plugged into a Debian
7338 machine, please send me an email or talk to me on
7339 <a href=
"irc://irc.debian.org/%23debian-devel">#debian-devel
</a>.
</p>
7345 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>.
7350 <div class=
"padding"></div>
7354 <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>
7360 <p>While looking into how to look up Debian packages based on hardware
7361 information, to find the packages that support a given piece of
7362 hardware, I refreshed my memory regarding modalias values, and decided
7363 to document the details. Here are my findings so far, also available
7365 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
7366 Debian Edu subversion repository
</a>:
7368 <p><strong>Modalias decoded
</strong></p>
7370 <p>This document try to explain what the different types of modalias
7371 values stands for. It is in part based on information from
7372 <URL:
<a href=
"https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias
</a> >,
7373 <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> >,
7374 <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> > and
7375 <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> >.
7377 <p>The modalias entries for a given Linux machine can be found using
7378 this shell script:
</p>
7381 find /sys -name modalias -print0 | xargs -
0 cat | sort -u
7384 <p>The supported modalias globs for a given kernel module can be found
7388 % /sbin/modinfo psmouse | grep alias:
7389 alias: serio:ty05pr*id*ex*
7390 alias: serio:ty01pr*id*ex*
7394 <p><strong>PCI subtype
</strong></p>
7396 <p>A typical PCI entry can look like this. This is an Intel Host
7397 Bridge memory controller:
</p>
7400 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
7403 <p>This represent these values:
</p>
7408 sv
00001028 (subvendor)
7409 sd
000001AD (subdevice)
7411 sc
00 (bus subclass)
7415 <p>The vendor/device values are the same values outputted from 'lspci
7416 -n' as
8086:
2770. The bus class/subclass is also shown by lspci as
7417 0600. The
0600 class is a host bridge. Other useful bus values are
7418 0300 (VGA compatible card) and
0200 (Ethernet controller).
</p>
7420 <p>Not sure how to figure out the interface value, nor what it
7423 <p><strong>USB subtype
</strong></p>
7425 <p>Some typical USB entries can look like this. This is an internal
7426 USB hub in a laptop:
</p>
7429 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
7432 <p>Here is the values included in this alias:
</p>
7435 v
1D6B (device vendor)
7436 p
0001 (device product)
7438 dc
09 (device class)
7439 dsc
00 (device subclass)
7440 dp
00 (device protocol)
7441 ic
09 (interface class)
7442 isc
00 (interface subclass)
7443 ip
00 (interface protocol)
7446 <p>The
0900 device class/subclass means hub. Some times the relevant
7447 class is in the interface class section. For a simple USB web camera,
7448 these alias entries show up:
</p>
7451 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
7452 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
7453 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
7454 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
7457 <p>Interface class
0E01 is video control,
0E02 is video streaming (aka
7458 camera),
0101 is audio control device and
0102 is audio streaming (aka
7459 microphone). Thus this is a camera with microphone included.
</p>
7461 <p><strong>ACPI subtype
</strong></p>
7463 <p>The ACPI type is used for several non-PCI/USB stuff. This is an IR
7464 receiver in a Thinkpad X40:
</p>
7467 acpi:IBM0071:PNP0511:
7470 <p>The values between the colons are IDs.
</p>
7472 <p><strong>DMI subtype
</strong></p>
7474 <p>The DMI table contain lots of information about the computer case
7475 and model. This is an entry for a IBM Thinkpad X40, fetched from
7476 /sys/devices/virtual/dmi/id/modalias:
</p>
7479 dmi:bvnIBM:bvr1UETB6WW(
1.66):bd06/
15/
2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
7482 <p>The values present are
</p>
7485 bvn IBM (BIOS vendor)
7486 bvr
1UETB
6WW(
1.66) (BIOS version)
7487 bd
06/
15/
2005 (BIOS date)
7488 svn IBM (system vendor)
7489 pn
2371H4G (product name)
7490 pvr ThinkPadX40 (product version)
7491 rvn IBM (board vendor)
7492 rn
2371H4G (board name)
7493 rvr NotAvailable (board version)
7494 cvn IBM (chassis vendor)
7495 ct
10 (chassis type)
7496 cvr NotAvailable (chassis version)
7499 <p>The chassis type
10 is Notebook. Other interesting values can be
7500 found in the dmidecode source:
</p>
7504 4 Low Profile Desktop
7517 17 Main Server Chassis
7518 18 Expansion Chassis
7520 20 Bus Expansion Chassis
7521 21 Peripheral Chassis
7523 23 Rack Mount Chassis
7532 <p>The chassis type values are not always accurately set in the DMI
7533 table. For example my home server is a tower, but the DMI modalias
7534 claim it is a desktop.
</p>
7536 <p><strong>SerIO subtype
</strong></p>
7538 <p>This type is used for PS/
2 mouse plugs. One example is from my
7542 serio:ty01pr00id00ex00
7545 <p>The values present are
</p>
7554 <p>This type is supported by the psmouse driver. I am not sure what
7555 the valid values are.
</p>
7557 <p><strong>Other subtypes
</strong></p>
7559 <p>There are heaps of other modalias subtypes according to
7560 file2alias.c. There is the rest of the list from that source: amba,
7561 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
7562 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
7563 vmbus, x86cpu and zorro. I did not spend time documenting all of
7564 these, as they do not seem relevant for my intended use with mapping
7565 hardware to packages when new stuff is inserted during run time.
</p>
7567 <p><strong>Looking up kernel modules using modalias values
</strong></p>
7569 <p>To check which kernel modules provide support for a given modalias,
7570 one can use the following shell script:
</p>
7573 for id in $(find /sys -name modalias -print0 | xargs -
0 cat | sort -u); do \
7575 /sbin/modprobe --show-depends "$id"|sed 's/^/ /' ; \
7579 <p>The output can look like this (only the first few entries as the
7580 list is very long on my test machine):
</p>
7584 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/acpi/ac.ko
7586 FATAL: Module acpi:device: not found.
7588 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/char/nvram.ko
7589 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/leds/led-class.ko
7590 insmod /lib/modules/
2.6.32-
5-
686/kernel/net/rfkill/rfkill.ko
7591 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/platform/x86/thinkpad_acpi.ko
7592 acpi:IBM0071:PNP0511:
7593 insmod /lib/modules/
2.6.32-
5-
686/kernel/lib/crc-ccitt.ko
7594 insmod /lib/modules/
2.6.32-
5-
686/kernel/net/irda/irda.ko
7595 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/net/irda/nsc-ircc.ko
7599 <p>If you want to help implementing a system to let us propose what
7600 packages to install when new hardware is plugged into a Debian
7601 machine, please send me an email or talk to me on
7602 <a href=
"irc://irc.debian.org/%23debian-devel">#debian-devel
</a>.
</p>
7604 <p><strong>Update
2013-
01-
15:
</strong> Rewrite "cat $(find ...)" to
7605 "find ... -print0 | xargs -
0 cat" to make sure it handle directories
7606 in /sys/ with space in them.
</p>
7612 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>.
7617 <div class=
"padding"></div>
7621 <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>
7627 <p>As part of my investigation on how to improve the support in Debian
7628 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
7629 Launcher and updated the Debian package
7630 <a href=
"http://packages.qa.debian.org/pymissile">pymissile
</a> to make
7631 sure udev will fix the device permissions when it is plugged in. I
7632 also added a "Modaliases" header to test it in the Debian archive and
7633 hopefully make the package be proposed by jockey in Ubuntu when a user
7634 plug in his rocket launcher. In the process I moved the source to a
7635 git repository under collab-maint, to make it easier for any DD to
7636 contribute.
<a href=
"http://code.google.com/p/pymissile/">Upstream
</a>
7637 is not very active, but the software still work for me even after five
7638 years of relative silence. The new git repository is not listed in
7639 the uploaded package yet, because I want to test the other changes a
7640 bit more before I upload the new version. If you want to check out
7641 the new version with a .desktop file included, visit the
7642 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git">gitweb
7643 view
</a> or use "
<tt>git clone
7644 git://anonscm.debian.org/collab-maint/pymissile.git
</tt>".</p>
7650 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>, <a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot</a>.
7655 <div class="padding
"></div>
7659 <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>
7665 <p>One thing that annoys me with Debian and Linux distributions in
7666 general, is that there is a great package management system with the
7667 ability to automatically install software packages by downloading them
7668 from the distribution mirrors, but no way to get it to automatically
7669 install the packages I need to use the hardware I plug into my
7670 machine. Even if the package to use it is easily available from the
7671 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
7672 suggest to automatically install the python-nxt, nbc and t2n packages
7673 I need to talk to it. When I plug in a Yubikey, it could propose the
7674 yubikey-personalization package. The information required to do this
7675 is available, but no-one have pulled all the pieces together.</p>
7677 <p>Some years ago, I proposed to
7678 <a href="http://lists.debian.org/debian-devel/
2010/
05/msg01206.html
">use
7679 the discover subsystem to implement this</a>. The idea is fairly
7684 <li>Add a desktop entry in /usr/share/autostart/ pointing to a program
7685 starting when a user log in.</li>
7687 <li>Set this program up to listen for kernel events emitted when new
7688 hardware is inserted into the computer.</li>
7690 <li>When new hardware is inserted, look up the hardware ID in a
7691 database mapping to packages, and take note of any non-installed
7694 <li>Show a message to the user proposing to install the discovered
7695 package, and make it easy to install it.</li>
7699 <p>I am not sure what the best way to implement this is, but my
7700 initial idea was to use dbus events to discover new hardware, the
7701 discover database to find packages and
7702 <a href="http://www.packagekit.org/
">PackageKit</a> to install
7705 <p>Yesterday, I found time to try to implement this idea, and the
7706 draft package is now checked into
7707 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/
">the
7708 Debian Edu subversion repository</a>. In the process, I updated the
7709 <a href="http://packages.qa.debian.org/d/discover-data.html
">discover-data</a>
7710 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
7711 the relevant packages in Debian, and uploaded a new version
7712 2.2013.01.09 to unstable. I also discovered that the current
7713 <a href="http://packages.qa.debian.org/d/discover.html
">discover</a>
7714 package in Debian no longer discovered any USB devices, because
7715 /proc/bus/usb/devices is no longer present. I ported it to use
7716 libusb as a fall back option to get it working. The fixed package
7717 version 2.1.2-6 is now in experimental (didn't upload it to unstable
7718 because of the freeze).</p>
7720 <p>With this prototype in place, I can insert my Yubikey, and get this
7721 desktop notification to show up (only once, the first time it is
7724 <p align="center
"><img src="http://people.skolelinux.org/pere/blog/images/
2013-
01-
09-hw-autoinstall.png
"></p>
7726 <p>For this prototype to be really useful, some way to automatically
7727 install the proposed packages by pressing the "Please install
7728 program(s)" button should to be implemented.
</p>
7730 <p>If this idea seem useful to you, and you want to help make it
7731 happen, please help me update the discover-data database with mappings
7732 from hardware to Debian packages. Check if 'discover-pkginstall -l'
7733 list the package you would like to have installed when a given
7734 hardware device is inserted into your computer, and report bugs using
7735 reportbug if it isn't. Or, if you know of a better way to provide
7736 such mapping, please let me know.
</p>
7738 <p>This prototype need more work, and there are several questions that
7739 should be considered before it is ready for production use. Is dbus
7740 the correct way to detect new hardware? At the moment I look for HAL
7741 dbus events on the system bus, because that is the events I could see
7742 on my Debian Squeeze KDE desktop. Are there better events to use?
7743 How should the user be notified? Is the desktop notification
7744 mechanism the best option, or should the background daemon raise a
7745 popup instead? How should packages be installed? When should they
7746 not be installed?
</p>
7748 <p>If you want to help getting such feature implemented in Debian,
7749 please send me an email. :)
</p>
7755 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>.
7760 <div class=
"padding"></div>
7764 <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>
7770 <p>During Christmas, I have worked a bit on the Debian support for
7771 <a href=
"http://mindstorms.lego.com/en-us/Default.aspx">LEGO Mindstorm
7772 NXT
</a>. My son and I have played a bit with my NXT set, and I
7773 discovered I had to build all the tools myself because none were
7774 already in Debian Squeeze. If Debian support for LEGO is something
7775 you care about, please join me on the IRC channel
7776 <a href=
"irc://irc.debian.org/%23debian-lego">#debian-lego
</a> (server
7777 irc.debian.org). There is a lot that could be done to improve the
7778 Debian support for LEGO designers. For example both CAD software
7779 and Mindstorm compilers are missing. :)
</p>
7781 <p>Update
2012-
01-
03: A
7782 <a href=
"http://wiki.debian.org/LegoDesigners">project page
</a>
7783 including links to Lego related packages is now available.
</p>
7789 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>.
7794 <div class=
"padding"></div>
7798 <a href=
"http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">How to backport bitcoin-qt version
0.7.2-
2 to Debian Squeeze
</a>
7804 <p>Let me start by wishing you all marry Christmas and a happy new
7805 year! I hope next year will prove to be a good year.
</p>
7807 <p><a href=
"http://www.bitcoin.org/">Bitcoin
</a>, the digital
7808 decentralised "currency" that allow people to transfer bitcoins
7809 between each other with minimal overhead, is a very interesting
7810 experiment. And as I wrote a few days ago, the bitcoin situation in
7811 <a href=
"http://www.debian.org/">Debian
</a> is about to improve a bit.
7812 The
<a href=
"http://packages.qa.debian.org/bitcoin">new debian source
7813 package
</a> (version
0.7.2-
2) was uploaded yesterday, and is waiting
7814 in
<a href=
"http://ftp-master.debian.org/new.html">the NEW queue
</A>
7815 for one of the ftpmasters to approve the new bitcoin-qt package
7818 <p>And thanks to the great work of Jonas and the rest of the bitcoin
7819 team in Debian, you can easily test the package in Debian Squeeze
7820 using the following steps to get a set of working packages:
</p>
7823 git clone git://git.debian.org/git/collab-maint/bitcoin
7825 DEB_MAINTAINER_MODE=
1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
7826 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
7829 <p>You might have to install some build dependencies as well. The
7830 list of commands should give you two packages, bitcoind and
7831 bitcoin-qt, ready for use in a Squeeze environment. Note that the
7832 client will download the complete set of bitcoin "blocks", which need
7833 around
5.6 GiB of data on my machine at the moment. Make sure your
7834 ~/.bitcoin/ directory have lots of spare room if you want to download
7835 all the blocks. The client will warn if the disk is getting full, so
7836 there is not really a problem if you got too little room, but you will
7837 not be able to get all the features out of the client.
</p>
7839 <p>As usual, if you use bitcoin and want to show your support of my
7840 activities, please send Bitcoin donations to my address
7841 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
7847 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7852 <div class=
"padding"></div>
7856 <a href=
"http://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html">A word on bitcoin support in Debian
</a>
7862 <p>It has been a while since I wrote about
7863 <a href=
"http://www.bitcoin.org/">bitcoin
</a>, the decentralised
7864 peer-to-peer based crypto-currency, and the reason is simply that I
7865 have been busy elsewhere. But two days ago, I started looking at the
7866 state of
<a href=
"http://packages.qa.debian.org/bitcoin">bitcoin in
7867 Debian
</a> again to try to recover my old bitcoin wallet. The package
7868 is now maintained by a
7869 <a href=
"https://alioth.debian.org/projects/pkg-bitcoin/">team of
7870 people
</a>, and the grunt work had already been done by this team. We
7871 owe a huge thank you to all these team members. :)
7872 But I was sad to discover that the bitcoin client is missing in
7873 Wheezy. It is only available in Sid (and an outdated client from
7874 backports). The client had several RC bugs registered in BTS blocking
7875 it from entering testing. To try to help the team and improve the
7876 situation, I spent some time providing patches and triaging the bug
7877 reports. I also had a look at the bitcoin package available from Matt
7879 <a href=
"https://launchpad.net/~bitcoin/+archive/bitcoin">PPA for
7880 Ubuntu
</a>, and moved the useful pieces from that version into the
7883 <p>After checking with the main package maintainer Jonas Smedegaard on
7884 IRC, I pushed several patches into the collab-maint git repository to
7885 improve the package. It now contains fixes for the RC issues (not from
7886 me, but fixed by Scott Howard), build rules for a Qt GUI client
7887 package, konqueror support for the bitcoin: URI and bash completion
7888 setup. As I work on Debian Squeeze, I also created
7889 <a href=
"http://lists.alioth.debian.org/pipermail/pkg-bitcoin-devel/Week-of-Mon-20121217/000041.html">a
7890 patch to backport
</a> the latest version. Jonas is going to look at
7891 it and try to integrate it into the git repository before uploading a
7892 new version to unstable.
7894 <p>I would very much like bitcoin to succeed, to get rid of the
7895 centralized control currently exercised in the monetary system. I
7896 find it completely unacceptable that the USA government is collecting
7897 transaction data for almost all international money transfers (most are done in USD and transaction logs shipped to the spooks), and
7898 that the major credit card companies can block legal money
7899 transactions to Wikileaks. But for bitcoin to succeed, more people
7900 need to use bitcoins, and more people need to accept bitcoins when
7901 they sell products and services. Improving the bitcoin support in
7902 Debian is a small step in the right direction, but not enough.
7903 Unfortunately the user experience when browsing the web and wanting to
7904 pay with bitcoin is still not very good. The bitcoin: URI is a step
7905 in the right direction, but need to work in most or every browser in
7906 use. Also the bitcoin-qt client is too heavy to fire up to do a
7907 quick transaction. I believe there are other clients available, but
7908 have not tested them.
</p>
7911 <a href=
"http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">experiment
7912 with bitcoins
</a> showed that at least some of my readers use bitcoin.
7913 I received
20.15 BTC so far on the address I provided in my blog two
7914 years ago, as can be
7915 <a href=
"http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">seen
7916 on the blockexplorer service
</a>. Thank you everyone for your
7917 donation. The blockexplorer service demonstrates quite well that
7918 bitcoin is not quite anonymous and untracked. :) I wonder if the
7919 number of users have gone up since then. If you use bitcoin and want
7920 to show your support of my activity, please send Bitcoin donations to
7921 the same address as last time,
7922 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
7928 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7933 <div class=
"padding"></div>
7937 <a href=
"http://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html">Git repository for song book for Computer Scientists
</a>
7944 <a href=
"http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">mentioned
7945 this summer
</a>, I have created a Computer Science song book a few
7946 years ago, and today I finally found time to create a public
7947 <a href=
"https://gitorious.org/pere-cs-songbook/pere-cs-songbook">Gitorious
7948 repository for the project
</a>.
</p>
7950 <p>If you want to help out, please clone the source and submit patches
7951 to the HTML version. To generate the PDF and PostScript version,
7952 please use prince XML, or let me know about a useful free software
7953 processor capable of creating a good looking PDF from the HTML.
</p>
7955 <p>Want to sing? You can still find the song book in HTML, PDF and
7956 PostScript formats at
7957 <a href=
"http://www.hungry.com/~pere/cs-songbook/">Petter's Computer
7958 Science Songbook
</a>.
</p>
7964 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
7969 <div class=
"padding"></div>
7973 <a href=
"http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html">Gratulerer med
19-årsdagen, Debian!
</a>
7980 <a href=
"http://www.debian.org/News/2012/20120813">Debian-prosjektet
19
7981 år
</a>. Jeg har fulgt det de siste
12 årene, og er veldig glad for å kunne
7982 si gratulerer med dagen, Debian!
</p>
7988 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
7993 <div class=
"padding"></div>
7997 <a href=
"http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">Song book for Computer Scientists
</a>
8003 <p>Many years ago, while studying Computer Science at the
8004 <a href=
"http://www.uit.no/">University of Tromsø
</a>, I started
8005 collecting computer related songs for use at parties. The original
8006 version was written in LaTeX, but a few years ago I got help from
8007 Håkon W. Lie, one of the inventors of W3C CSS, to convert it to HTML
8008 while keeping the ability to create a nice book in PDF format. I have
8009 not had time to maintain the book for a while now, and guess I should
8010 put it up on some public version control repository where others can
8011 help me extend and update the book. If anyone is volunteering to help
8012 me with this, send me an email. Also let me know if there are songs
8013 missing in my book.
</p>
8015 <p>I have not mentioned the book on my blog so far, and it occured to
8016 me today that I really should let all my readers share the joys of
8017 singing out load about programming, computers and computer networks.
8018 Especially now that
<a href=
"http://debconf12.debconf.org/">Debconf
8019 12</a> is about to start (and I am not going). Want to sing? Check
8020 out
<a href=
"http://www.hungry.com/~pere/cs-songbook/">Petter's
8021 Computer Science Songbook
</a>.
8027 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
8032 <div class=
"padding"></div>
8036 <a href=
"http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html">Automatically upgrading server firmware on Dell PowerEdge
</a>
8042 <p>At work we have heaps of servers. I believe the total count is
8043 around
1000 at the moment. To be able to get help from the vendors
8044 when something go wrong, we want to keep the firmware on the servers
8045 up to date. If the firmware isn't the latest and greatest, the
8046 vendors typically refuse to start debugging any problems until the
8047 firmware is upgraded. So before every reboot, we want to upgrade the
8048 firmware, and we would really like everyone handling servers at the
8049 university to do this themselves when they plan to reboot a machine.
8050 For that to happen we at the unix server admin group need to provide
8051 the tools to do so.
</p>
8053 <p>To make firmware upgrading easier, I am working on a script to
8054 fetch and install the latest firmware for the servers we got. Most of
8055 our hardware are from Dell and HP, so I have focused on these servers
8056 so far. This blog post is about the Dell part.
</P>
8058 <p>On the Dell FTP site I was lucky enough to find
8059 <a href=
"ftp://ftp.us.dell.com/catalog/Catalog.xml.gz">an XML file
</a>
8060 with firmware information for all
11th generation servers, listing
8061 which firmware should be used on a given model and where on the FTP
8062 site I can find it. Using a simple perl XML parser I can then
8063 download the shell scripts Dell provides to do firmware upgrades from
8064 within Linux and reboot when all the firmware is primed and ready to
8065 be activated on the first reboot.
</p>
8067 <p>This is the Dell related fragment of the perl code I am working on.
8068 Are there anyone working on similar tools for firmware upgrading all
8069 servers at a site? Please get in touch and lets share resources.
</p>
8075 use File::Temp qw(tempdir);
8077 # Install needed RHEL packages if missing
8079 'XML::Simple' =
> 'perl-XML-Simple',
8081 for my $module (keys %rhelmodules) {
8082 eval "use $module;";
8084 my $pkg = $rhelmodules{$module};
8085 system("yum install -y $pkg");
8086 eval "use $module;";
8090 my $errorsto = 'pere@hungry.com';
8096 sub run_firmware_script {
8097 my ($opts, $script) = @_;
8099 print STDERR "fail: missing script name\n";
8102 print STDERR "Running $script\n\n";
8104 if (
0 == system("sh $script $opts")) { # FIXME correct exit code handling
8105 print STDERR "success: firmware script ran succcessfully\n";
8107 print STDERR "fail: firmware script returned error\n";
8111 sub run_firmware_scripts {
8112 my ($opts, @dirs) = @_;
8113 # Run firmware packages
8114 for my $dir (@dirs) {
8115 print STDERR "info: Running scripts in $dir\n";
8116 opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
8117 while (my $s = readdir $dh) {
8118 next if $s =~ m/^\.\.?/;
8119 run_firmware_script($opts, "$dir/$s");
8127 print STDERR "info: Downloading $url\n";
8128 system("wget --quiet \"$url\"");
8133 my $product = `dmidecode -s system-product-name`;
8136 if ($product =~ m/PowerEdge/) {
8138 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
8139 system('yum install -y compat-libstdc++-
33.i686 libstdc++.i686 libxml2.i686 procmail');
8141 my $tmpdir = tempdir(
8145 fetch_dell_fw('catalog/Catalog.xml.gz');
8146 system('gunzip Catalog.xml.gz');
8147 my @paths = fetch_dell_fw_list('Catalog.xml');
8148 # -q is quiet, disabling interactivity and reducing console output
8151 for my $url (@paths) {
8152 fetch_dell_fw($url);
8154 run_firmware_scripts($fwopts, $tmpdir);
8156 print STDERR
"error: Unsupported Dell model '$product'.\n";
8157 print STDERR
"error: Please report to $errorsto.\n";
8161 print STDERR
"error: Unsupported Dell model '$product'.\n";
8162 print STDERR
"error: Please report to $errorsto.\n";
8168 my $url =
"ftp://ftp.us.dell.com/$path";
8172 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
8173 # firmware packages to download from Dell. Only work for Linux
8174 # machines and
11th generation Dell servers.
8175 sub fetch_dell_fw_list {
8176 my $filename = shift;
8178 my $product = `dmidecode -s system-product-name`;
8180 my ($mybrand, $mymodel) = split(/\s+/, $product);
8182 print STDERR
"Finding firmware bundles for $mybrand $mymodel\n";
8184 my $xml = XMLin($filename);
8186 for my $bundle (@{$xml-
>{SoftwareBundle}}) {
8187 my $brand = $bundle-
>{TargetSystems}-
>{Brand}-
>{Display}-
>{content};
8188 my $model = $bundle-
>{TargetSystems}-
>{Brand}-
>{Model}-
>{Display}-
>{content};
8190 if ("ARRAY" eq ref $bundle-
>{TargetOSes}-
>{OperatingSystem}) {
8191 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}[
0]-
>{osCode};
8193 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}-
>{osCode};
8195 if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
8197 @paths = map { $_-
>{path} } @{$bundle-
>{Contents}-
>{Package}};
8200 for my $component (@{$xml-
>{SoftwareComponent}}) {
8201 my $componenttype = $component-
>{ComponentType}-
>{value};
8203 # Drop application packages, only firmware and BIOS
8204 next if 'APAC' eq $componenttype;
8206 my $cpath = $component-
>{path};
8207 for my $path (@paths) {
8208 if ($cpath =~ m%/$path$%) {
8209 push(@paths, $cpath);
8217 <p>The code is only tested on RedHat Enterprise Linux, but I suspect
8218 it could work on other platforms with some tweaking. Anyone know a
8219 index like Catalog.xml is available from HP for HP servers? At the
8220 moment I maintain a similar list manually and it is quickly getting
8227 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>.
8232 <div class=
"padding"></div>
8236 <a href=
"http://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html">How is booting into runlevel
1 different from single user boots?
</a>
8242 <p>Wouter Verhelst have some
8243 <a href=
"http://grep.be/blog/en/retorts/pere_kubuntu_boot">interesting
8244 comments and opinions
</a> on my blog post on
8245 <a href=
"http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html">the
8246 need to clean up /etc/rcS.d/ in Debian
</a> and my blog post about
8247 <a href=
"http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html">the
8248 default KDE desktop in Debian
</a>. I only have time to address one
8249 small piece of his comment now, and though it best to address the
8250 misunderstanding he bring forward:
</p>
8253 Currently, a system admin has four options: [...] boot to a
8254 single-user system (by adding 'single' to the kernel command line;
8255 this runs rcS and rc1 scripts)
8258 <p>This make me believe Wouter believe booting into single user mode
8259 and booting into runlevel
1 is the same. I am not surprised he
8260 believe this, because it would make sense and is a quite sensible
8261 thing to believe. But because the boot in Debian is slightly broken,
8262 runlevel
1 do not work properly and it isn't the same as single user
8263 mode. I'll try to explain what is actually happing, but it is a bit
8264 hard to explain.
</p>
8266 <p>Single user mode is defined like this in /etc/inittab:
8267 "
<tt>~~:S:wait:/sbin/sulogin
</tt>". This means the only thing that is
8268 executed in single user mode is sulogin. Single user mode is a boot
8269 state "between
" the runlevels, and when booting into single user mode,
8270 only the scripts in /etc/rcS.d/ are executed before the init process
8271 enters the single user state. When switching to runlevel 1, the state
8272 is in fact not ending in runlevel 1, but it passes through runlevel 1
8273 and end up in the single user mode (see /etc/rc1.d/S03single, which
8274 runs "init -t1 S
" to switch to single user mode at the end of runlevel
8275 1. It is confusing that the 'S' (single user) init mode is not the
8276 mode enabled by /etc/rcS.d/ (which is more like the initial boot
8279 <p>This summary might make it clearer. When booting for the first
8280 time into single user mode, the following commands are executed:
8281 "<tt>/etc/init.d/rc S; /sbin/sulogin
</tt>". When booting into
8282 runlevel 1, the following commands are executed: "<tt>/etc/init.d/rc
8283 S; /etc/init.d/rc
1; /sbin/sulogin
</tt>". A problem show up when
8284 trying to continue after visiting single user mode. Not all services
8285 are started again as they should, causing the machine to end up in an
8286 unpredicatble state. This is why Debian admins recommend rebooting
8287 after visiting single user mode.</p>
8289 <p>A similar problem with runlevel 1 is caused by the amount of
8290 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
8291 to runlevel 1, the services started from /etc/rcS.d/ are not properly
8292 stopped when passing through the scripts in /etc/rc1.d/, and not
8293 started again when switching away from runlevel 1 to the runlevels
8294 2-5. I believe the problem is best fixed by moving all the scripts
8295 out of /etc/rcS.d/ that are not <strong>required</strong> to get a
8296 functioning single user mode during boot.</p>
8298 <p>I have spent several years investigating the Debian boot system,
8299 and discovered this problem a few years ago. I suspect it originates
8300 from when sysvinit was introduced into Debian, a long time ago.</p>
8306 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
8311 <div class="padding
"></div>
8315 <a href="http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html
">What should start from /etc/rcS.d/ in Debian? - almost nothing</a>
8321 <p>In the Debian boot system, several packages include scripts that
8322 are started from /etc/rcS.d/. In fact, there is a bite more of them
8323 than make sense, and this causes a few problems. What kind of
8324 problems, you might ask. There are at least two problems. The first
8325 is that it is not possible to recover a machine after switching to
8326 runlevel 1. One need to actually reboot to get the machine back to
8327 the expected state. The other is that single user boot will sometimes
8328 run into problems because some of the subsystems are activated before
8329 the root login is presented, causing problems when trying to recover a
8330 machine from a problem in that subsystem. A minor additional point is
8331 that moving more scripts out of rcS.d/ and into the other rc#.d/
8332 directories will increase the amount of scripts that can run in
8333 parallel during boot, and thus decrease the boot time.</p>
8335 <p>So, which scripts should start from rcS.d/. In short, only the
8336 scripts that _have_ to execute before the root login prompt is
8337 presented during a single user boot should go there. Everything else
8338 should go into the numeric runlevels. This means things like
8339 lm-sensors, fuse and x11-common should not run from rcS.d, but from
8340 the numeric runlevels. Today in Debian, there are around 115 init.d
8341 scripts that are started from rcS.d/, and most of them should be moved
8342 out. Do your package have one of them? Please help us make single
8343 user and runlevel 1 better by moving it.</p>
8345 <p>Scripts setting up the screen, keyboard, system partitions
8346 etc. should still be started from rcS.d/, but there is for example no
8347 need to have the network enabled before the single user login prompt
8350 <p>As always, things are not so easy to fix as they sound. To keep
8351 Debian systems working while scripts migrate and during upgrades, the
8352 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
8353 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
8354 and the next ones can only be moved when their dependencies have been
8355 moved first. This migration must be done sequentially while we ensure
8356 that the package system upgrade packages in the right order to keep
8357 the system state correct. This will require some coordination when it
8358 comes to network related packages, but most of the packages with
8359 scripts that should migrate do not have anything in rcS.d/ depending
8360 on them. Some packages have already been updated, like the sudo
8361 package, while others are still left to do. I wish I had time to work
8362 on this myself, but real live constrains make it unlikely that I will
8363 find time to push this forward.</p>
8369 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
8374 <div class="padding
"></div>
8378 <a href="http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html
">What is missing in the Debian desktop, or why my parents use Kubuntu</a>
8384 <p>While at Debconf11, I have several times during discussions
8385 mentioned the issues I believe should be improved in Debian for its
8386 desktop to be useful for more people. The use case for this is my
8387 parents, which are currently running Kubuntu which solve the
8390 <p>I suspect these four missing features are not very hard to
8391 implement. After all, they are present in Ubuntu, so if we wanted to
8392 do this in Debian we would have a source.</p>
8396 <li><strong>Simple GUI based upgrade of packages.</strong> When there
8397 are new packages available for upgrades, a icon in the KDE status bar
8398 indicate this, and clicking on it will activate the simple upgrade
8399 tool to handle it. I have no problem guiding both of my parents
8400 through the process over the phone. If a kernel reboot is required,
8401 this too is indicated by the status bars and the upgrade tool. Last
8402 time I checked, nothing with the same features was working in KDE in
8405 <li><strong>Simple handling of missing Firefox browser
8406 plugins.</strong> When the browser encounter a MIME type it do not
8407 currently have a handler for, it will ask the user if the system
8408 should search for a package that would add support for this MIME type,
8409 and if the user say yes, the APT sources will be searched for packages
8410 advertising the MIME type in their control file (visible in the
8411 Packages file in the APT archive). If one or more packages are found,
8412 it is a simple click of the mouse to add support for the missing mime
8413 type. If the package require the user to accept some non-free
8414 license, this is explained to the user. The entire process make it
8415 more clear to the user why something do not work in the browser, and
8416 make the chances higher for the user to blame the web page authors and
8417 not the browser for any missing features.</li>
8419 <li><strong>Simple handling of missing multimedia codec/format
8420 handlers.</strong> When the media players encounter a format or codec
8421 it is not supporting, a dialog pop up asking the user if the system
8422 should search for a package that would add support for it. This
8423 happen with things like MP3, Windows Media or H.264. The selection
8424 and installation procedure is very similar to the Firefox browser
8425 plugin handling. This is as far as I know implemented using a
8426 gstreamer hook. The end result is that the user easily get access to
8427 the codecs that are present from the APT archives available, while
8428 explaining more on why a given format is unsupported by Ubuntu.</li>
8430 <li><strong>Better browser handling of some MIME types.</strong> When
8431 displaying a text/plain file in my Debian browser, it will propose to
8432 start emacs to show it. If I remember correctly, when doing the same
8433 in Kunbutu it show the file as a text file in the browser. At least I
8434 know Opera will show text files within the browser. I much prefer the
8435 latter behaviour.</li>
8439 <p>There are other nice features as well, like the simplified suite
8440 upgrader, but given that I am the one mostly doing the dist-upgrade,
8441 it do not matter much.</p>
8443 <p>I really hope we could get these features in place for the next
8444 Debian release. It would require the coordinated effort of several
8445 maintainers, but would make the end user experience a lot better.</p>
8451 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/h264
">h264</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web
">web</a>.
8456 <div class="padding
"></div>
8460 <a href="http://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html
">Perl modules used by FixMyStreet which are missing in Debian/Squeeze</a>
8466 <p>The Norwegian <a href="http://www.fiksgatami.no/
">FiksGataMi</A>
8467 site is build on Debian/Squeeze, and this platform was chosen because
8468 I am most familiar with Debian (being a Debian Developer for around 10
8469 years) because it is the latest stable Debian release which should get
8470 security support for a few years.</p>
8472 <p>The web service is written in Perl, and depend on some perl modules
8473 that are missing in Debian at the moment. It would be great if these
8474 modules were added to the Debian archive, allowing anyone to set up
8475 their own <a href="http://www.fixmystreet.com
">FixMyStreet</a> clone
8476 in their own country using only Debian packages. The list of modules
8477 missing in Debian/Squeeze isn't very long, and I hope the perl group
8478 will find time to package the 12 modules Catalyst::Plugin::SmartURI,
8479 Catalyst::Plugin::Unicode::Encoding, Catalyst::View::TT, Devel::Hide,
8480 Sort::Key, Statistics::Distributions, Template::Plugin::Comma,
8481 Template::Plugin::DateTime::Format, Term::Size::Any, Term::Size::Perl,
8482 URI::SmartURI and Web::Scraper to make the maintenance of FixMyStreet
8483 easier in the future.</p>
8485 <p>Thanks to the great tools in Debian, getting the missing modules
8486 installed on my server was a simple call to 'cpan2deb Module::Name'
8487 and 'dpkg -i' to install the resulting package. But this leave me
8488 with the responsibility of tracking security problems, which I really
8489 do not have time for.</p>
8495 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami</a>.
8500 <div class="padding
"></div>
8504 <a href="http://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html
">A Norwegian FixMyStreet have kept me busy the last few weeks</a>
8510 <p>Here is a small update for my English readers. Most of my blog
8511 posts have been in Norwegian the last few weeks, so here is a short
8512 update in English.</p>
8514 <p>The kids still keep me too busy to get much free software work
8515 done, but I did manage to organise a project to get a Norwegian port
8516 of the British service
8517 <a href="http://www.fixmystreet.com/
">FixMyStreet</a> up and running,
8518 and it has been running for a month now. The entire project has been
8519 organised by me and two others. Around Christmas we gathered sponsors
8520 to fund the development work. In January I drafted a contract with
8521 <a href="http://www.mysociety.org/
">mySociety</a> on what to develop,
8522 and in February the development took place. Most of it involved
8523 converting the source to use GPS coordinates instead of British
8524 easting/northing, and the resulting code should be a lot easier to get
8525 running in any country by now. The Norwegian
8526 <a href="http://www.fiksgatami.no/
">FiksGataMi</a> is using
8527 <a href="http://www.openstreetmap.org/
">OpenStreetmap</a> as the map
8528 source and the source for administrative borders in Norway, and
8529 support for this had to be added/fixed.</p>
8531 <p>The Norwegian version went live March 3th, and we spent the weekend
8532 polishing the system before we announced it March 7th. The system is
8533 running on a KVM instance of Debian/Squeeze, and has seen almost 3000
8534 problem reports in a few weeks. Soon we hope to announce the Android
8535 and iPhone versions making it even easier to report problems with the
8536 public infrastructure.</p>
8538 <p>Perhaps something to consider for those of you in countries without
8545 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami</a>, <a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart</a>.
8550 <div class="padding
"></div>
8554 <a href="http://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html
">Using NVD and CPE to track CVEs in locally maintained software</a>
8560 <p>The last few days I have looked at ways to track open security
8561 issues here at my work with the University of Oslo. My idea is that
8562 it should be possible to use the information about security issues
8563 available on the Internet, and check our locally
8564 maintained/distributed software against this information. It should
8565 allow us to verify that no known security issues are forgotten. The
8566 CVE database listing vulnerabilities seem like a great central point,
8567 and by using the package lists from Debian mapped to CVEs provided by
8568 the testing security team, I believed it should be possible to figure
8569 out which security holes were present in our free software
8572 <p>After reading up on the topic, it became obvious that the first
8573 building block is to be able to name software packages in a unique and
8574 consistent way across data sources. I considered several ways to do
8575 this, for example coming up with my own naming scheme like using URLs
8576 to project home pages or URLs to the Freshmeat entries, or using some
8577 existing naming scheme. And it seem like I am not the first one to
8578 come across this problem, as MITRE already proposed and implemented a
8579 solution. Enter the <a href="http://cpe.mitre.org/index.html
">Common
8580 Platform Enumeration</a> dictionary, a vocabulary for referring to
8581 software, hardware and other platform components. The CPE ids are
8582 mapped to CVEs in the <a href="http://web.nvd.nist.gov/
">National
8583 Vulnerability Database</a>, allowing me to look up know security
8584 issues for any CPE name. With this in place, all I need to do is to
8585 locate the CPE id for the software packages we use at the university.
8586 This is fairly trivial (I google for 'cve cpe $package' and check the
8587 NVD entry if a CVE for the package exist).</p>
8589 <p>To give you an example. The GNU gzip source package have the CPE
8590 name cpe:/a:gnu:gzip. If the old version 1.3.3 was the package to
8591 check out, one could look up
8592 <a href="http://web.nvd.nist.gov/view/vuln/search?cpe=cpe%
3A%
2Fa%
3Agnu%
3Agzip:
1.3.3">cpe:/a:gnu:gzip:1.3.3
8593 in NVD</a> and get a list of 6 security holes with public CVE entries.
8594 The most recent one is
8595 <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-
2010-
0001">CVE-2010-0001</a>,
8596 and at the bottom of the NVD page for this vulnerability the complete
8597 list of affected versions is provided.</p>
8599 <p>The NVD database of CVEs is also available as a XML dump, allowing
8600 for offline processing of issues. Using this dump, I've written a
8601 small script taking a list of CPEs as input and list all CVEs
8602 affecting the packages represented by these CPEs. One give it CPEs
8603 with version numbers as specified above and get a list of open
8604 security issues out.</p>
8606 <p>Of course for this approach to be useful, the quality of the NVD
8607 information need to be high. For that to happen, I believe as many as
8608 possible need to use and contribute to the NVD database. I notice
8610 <a href="https://www.redhat.com/security/data/metrics/rhsamapcpe.txt
">a
8611 map from CVE to CPE</a>, indicating that they are using the CPE
8612 information. I'm not aware of Debian and Ubuntu doing the same.</p>
8614 <p>To get an idea about the quality for free software, I spent some
8615 time making it possible to compare the CVE database from Debian with
8616 the CVE database in NVD. The result look fairly good, but there are
8617 some inconsistencies in NVD (same software package having several
8618 CPEs), and some inaccuracies (NVD not mentioning buggy packages that
8619 Debian believe are affected by a CVE). Hope to find time to improve
8620 the quality of NVD, but that require being able to get in touch with
8621 someone maintaining it. So far my three emails with questions and
8622 corrections have not seen any reply, but I hope contact can be
8623 established soon.</p>
8625 <p>An interesting application for CPEs is cross platform package
8626 mapping. It would be useful to know which packages in for example
8627 RHEL, OpenSuSe and Mandriva are missing from Debian and Ubuntu, and
8628 this would be trivial if all linux distributions provided CPE entries
8629 for their packages.</p>
8635 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
8640 <div class="padding
"></div>
8644 <a href="http://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html
">Which module is loaded for a given PCI and USB device?</a>
8651 <a href="http://packages.qa.debian.org/discover-data
">discover-data</a>
8652 package in Debian, there is a script to report useful information
8653 about the running hardware for use when people report missing
8654 information. One part of this script that I find very useful when
8655 debugging hardware problems, is the part mapping loaded kernel module
8656 to the PCI device it claims. It allow me to quickly see if the kernel
8657 module I expect is driving the hardware I am struggling with. To see
8658 the output, make sure discover-data is installed and run
8659 <tt>/usr/share/bug/discover-data 3>&1</tt>. The relevant output on
8660 one of my machines like this:</p>
8664 10de:03eb i2c_nforce2
8667 10de:03f0 snd_hda_intel
8676 <p>The code in question look like this, slightly modified for
8677 readability and to drop the output to file descriptor 3:</p>
8680 if [ -d /sys/bus/pci/devices/ ] ; then
8681 echo loaded pci modules:
8683 cd /sys/bus/pci/devices/
8684 for address in * ; do
8685 if [ -d "$address/driver/module" ] ; then
8686 module=`cd $address/driver/module ; pwd -P | xargs basename`
8687 if grep -q "^$module " /proc/modules ; then
8688 address=$(echo $address |sed s/
0000://)
8689 id=`lspci -n -s $address | tail -n
1 | awk '{print $
3}'`
8699 <p>Similar code could be used to extract USB device module
8703 if [ -d /sys/bus/usb/devices/ ] ; then
8704 echo loaded usb modules:
8706 cd /sys/bus/usb/devices/
8707 for address in * ; do
8708 if [ -d "$address/driver/module" ] ; then
8709 module=`cd $address/driver/module ; pwd -P | xargs basename`
8710 if grep -q "^$module " /proc/modules ; then
8711 address=$(echo $address |sed s/
0000://)
8712 id=$(lsusb -s $address | tail -n
1 | awk '{print $
6}')
8724 <p>This might perhaps be something to include in other tools as
8731 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>.
8736 <div class=
"padding"></div>
8740 <a href=
"http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html">How to test if a laptop is working with Linux
</a>
8746 <p>The last few days I have spent at work here at the
<a
8747 href=
"http://www.uio.no/">University of Oslo
</a> testing if the new
8748 batch of computers will work with Linux. Every year for the last few
8749 years the university have organised shared bid of a few thousand
8750 computers, and this year HP won the bid. Two different desktops and
8751 five different laptops are on the list this year. We in the UNIX
8752 group want to know which one of these computers work well with RHEL
8753 and Ubuntu, the two Linux distributions we currently handle at the
8756 <p>My test method is simple, and I share it here to get feedback and
8757 perhaps inspire others to test hardware as well. To test, I PXE
8758 install the OS version of choice, and log in as my normal user and run
8759 a few applications and plug in selected pieces of hardware. When
8760 something fail, I make a note about this in the test matrix and move
8761 on. If I have some spare time I try to report the bug to the OS
8762 vendor, but as I only have the machines for a short time, I rarely
8763 have the time to do this for all the problems I find.
</p>
8765 <p>Anyway, to get to the point of this post. Here is the simple tests
8766 I perform on a new model.
</p>
8770 <li>Is PXE installation working? I'm testing with RHEL6, Ubuntu Lucid
8771 and Ubuntu Maverik at the moment. If I feel like it, I also test with
8772 RHEL5 and Debian Edu/Squeeze.
</li>
8774 <li>Is X.org working? If the graphical login screen show up after
8775 installation, X.org is working.
</li>
8777 <li>Is hardware accelerated OpenGL working? Running glxgears (in
8778 package mesa-utils on Ubuntu) and writing down the frames per second
8779 reported by the program.
</li>
8781 <li>Is sound working? With Gnome and KDE, a sound is played when
8782 logging in, and if I can hear this the test is successful. If there
8783 are several audio exits on the machine, I try them all and check if
8784 the Gnome/KDE audio mixer can control where to send the sound. I
8785 normally test this by playing
8786 <a href=
"http://www.nuug.no/aktiviteter/20101012-chef/ ">a HTML5
8787 video
</a> in Firefox/Iceweasel.
</li>
8789 <li>Is the USB subsystem working? I test this by plugging in a USB
8790 memory stick and see if Gnome/KDE notices this.
</li>
8792 <li>Is the CD/DVD player working? I test this by inserting any CD/DVD
8793 I have lying around, and see if Gnome/KDE notices this.
</li>
8795 <li>Is any built in camera working? Test using cheese, and see if a
8796 picture from the v4l device show up.
</li>
8798 <li>Is bluetooth working? Use the Gnome/KDE browsing tool to see if
8799 any bluetooth devices are discovered. In my office, I normally see a
8802 <li>For laptops, is the SD or Compaq Flash reader working. I have
8803 memory modules lying around, and stick them in and see if Gnome/KDE
8806 <li>For laptops, is suspend/hibernate working? I'm testing if the
8807 special button work, and if the laptop continue to work after
8810 <li>For laptops, is the extra buttons working, like audio level,
8811 adjusting background light, switching on/off external video output,
8812 switching on/off wifi, bluetooth, etc? The set of buttons differ from
8813 laptop to laptop, so I just write down which are working and which are
8816 <li>Some laptops have smart card readers, finger print readers,
8817 acceleration sensors etc. I rarely test these, as I do not know how
8818 to quickly test if they are working or not, so I only document their
8823 <p>By now I suspect you are really curious what the test results are
8824 for the HP machines I am testing. I'm not done yet, so I will report
8825 the test results later. For now I can report that HP
8100 Elite work
8826 fine, and hibernation fail with HP EliteBook
8440p on Ubuntu Lucid,
8827 and audio fail on RHEL6. Ubuntu Maverik worked with
8440p. As you
8828 can see, I have most machines left to test. One interesting
8829 observation is that Ubuntu Lucid has almost twice the frame rate than
8830 RHEL6 with glxgears. No idea why.
</p>
8836 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8841 <div class=
"padding"></div>
8845 <a href=
"http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html">Some thoughts on BitCoins
</a>
8851 <p>As I continue to explore
8852 <a href=
"http://www.bitcoin.org/">BitCoin
</a>, I've starting to wonder
8853 what properties the system have, and how it will be affected by laws
8854 and regulations here in Norway. Here are some random notes.
</p>
8856 <p>One interesting thing to note is that since the transactions are
8857 verified using a peer to peer network, all details about a transaction
8858 is known to everyone. This means that if a BitCoin address has been
8859 published like I did with mine in my initial post about BitCoin, it is
8860 possible for everyone to see how many BitCoins have been transfered to
8861 that address. There is even a web service to look at the details for
8862 all transactions. There I can see that my address
8863 <a href=
"http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a>
8864 have received
16.06 Bitcoin, the
8865 <a href=
"http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3">1LfdGnGuWkpSJgbQySxxCWhv
8MHqvwst
3</a>
8866 address of Simon Phipps have received
181.97 BitCoin and the address
8867 <a href=
"http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt">1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt
</A>
8868 of EFF have received
2447.38 BitCoins so far. Thank you to each and
8869 every one of you that donated bitcoins to support my activity. The
8870 fact that anyone can see how much money was transfered to a given
8871 address make it more obvious why the BitCoin community recommend to
8872 generate and hand out a new address for each transaction. I'm told
8873 there is no way to track which addresses belong to a given person or
8874 organisation without the person or organisation revealing it
8875 themselves, as Simon, EFF and I have done.
</p>
8877 <p>In Norway, and in most other countries, there are laws and
8878 regulations limiting how much money one can transfer across the border
8879 without declaring it. There are money laundering, tax and accounting
8880 laws and regulations I would expect to apply to the use of BitCoin.
8881 If the Skolelinux foundation
8882 (
<a href=
"http://linuxiskolen.no/slxdebianlabs/donations.html">SLX
8883 Debian Labs
</a>) were to accept donations in BitCoin in addition to
8884 normal bank transfers like EFF is doing, how should this be accounted?
8885 Given that it is impossible to know if money can cross the border or
8886 not, should everything or nothing be declared? What exchange rate
8887 should be used when calculating taxes? Would receivers have to pay
8888 income tax if the foundation were to pay Skolelinux contributors in
8889 BitCoin? I have no idea, but it would be interesting to know.
</p>
8891 <p>For a currency to be useful and successful, it must be trusted and
8892 accepted by a lot of users. It must be possible to get easy access to
8893 the currency (as a wage or using currency exchanges), and it must be
8894 easy to spend it. At the moment BitCoin seem fairly easy to get
8895 access to, but there are very few places to spend it. I am not really
8896 a regular user of any of the vendor types currently accepting BitCoin,
8897 so I wonder when my kind of shop would start accepting BitCoins. I
8898 would like to buy electronics, travels and subway tickets, not herbs
8899 and books. :) The currency is young, and this will improve over time
8900 if it become popular, but I suspect regular banks will start to lobby
8901 to get BitCoin declared illegal if it become popular. I'm sure they
8902 will claim it is helping fund terrorism and money laundering (which
8903 probably would be true, as is any currency in existence), but I
8904 believe the problems should be solved elsewhere and not by blaming
8907 <p>The process of creating new BitCoins is called mining, and it is
8908 CPU intensive process that depend on a bit of luck as well (as one is
8909 competing against all the other miners currently spending CPU cycles
8910 to see which one get the next lump of cash). The "winner" get
50
8911 BitCoin when this happen. Yesterday I came across the obvious way to
8912 join forces to increase ones changes of getting at least some coins,
8913 by coordinating the work on mining BitCoins across several machines
8914 and people, and sharing the result if one is lucky and get the
50
8916 <a href=
"http://www.bluishcoder.co.nz/bitcoin-pool/">BitCoin Pool
</a>
8917 if this sounds interesting. I have not had time to try to set up a
8918 machine to participate there yet, but have seen that running on ones
8919 own for a few days have not yield any BitCoins througth mining
8922 <p>Update
2010-
12-
15: Found an
<a
8923 href=
"http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi">interesting
8924 criticism
</a> of bitcoin. Not quite sure how valid it is, but thought
8925 it was interesting to read. The arguments presented seem to be
8926 equally valid for gold, which was used as a currency for many years.
</p>
8932 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
8937 <div class=
"padding"></div>
8941 <a href=
"http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">Now accepting bitcoins - anonymous and distributed p2p crypto-money
</a>
8947 <p>With this weeks lawless
8948 <a href=
"http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html">governmental
8949 attacks
</a> on Wikileak and
8950 <a href=
"http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech">free
8951 speech
</a>, it has become obvious that PayPal, visa and mastercard can
8952 not be trusted to handle money transactions.
8954 <a href=
"http://webmink.com/2010/12/06/now-accepting-bitcoin/">Simon
8955 Phipps on bitcoin
</a> reminded me about a project that a friend of
8956 mine mentioned earlier. I decided to follow Simon's example, and get
8957 involved with
<a href=
"http://www.bitcoin.org/">BitCoin
</a>. I got
8958 some help from my friend to get it all running, and he even handed me
8959 some bitcoins to get started. I even donated a few bitcoins to Simon
8960 for helping me remember BitCoin.
</p>
8962 <p>So, what is bitcoins, you probably wonder? It is a digital
8963 crypto-currency, decentralised and handled using peer-to-peer
8964 networks. It allows anonymous transactions and prohibits central
8965 control over the transactions, making it impossible for governments
8966 and companies alike to block donations and other transactions. The
8967 source is free software, and while the key dependency wxWidgets
2.9
8968 for the graphical user interface is missing in Debian, the command
8969 line client builds just fine. Hopefully Jonas
8970 <a href=
"http://bugs.debian.org/578157">will get the package into
8971 Debian
</a> soon.
</p>
8973 <p>Bitcoins can be converted to other currencies, like USD and EUR.
8974 There are
<a href=
"http://www.bitcoin.org/trade">companies accepting
8975 bitcoins
</a> when selling services and goods, and there are even
8976 currency "stock" markets where the exchange rate is decided. There
8977 are not many users so far, but the concept seems promising. If you
8978 want to get started and lack a friend with any bitcoins to spare,
8980 <a href=
"https://freebitcoins.appspot.com/">some for free
</a> (
0.05
8981 bitcoin at the time of writing). Use
8982 <a href=
"http://www.bitcoinwatch.com/">BitcoinWatch
</a> to keep an eye
8983 on the current exchange rates.
</p>
8985 <p>As an experiment, I have decided to set up bitcoind on one of my
8986 machines. If you want to support my activity, please send Bitcoin
8987 donations to the address
8988 <b>15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</b>. Thank you!
</p>
8994 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
8999 <div class=
"padding"></div>
9003 <a href=
"http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html">Why isn't Debian Edu using VLC?
</a>
9009 <p>In the latest issue of Linux Journal, the readers choices were
9010 presented, and the winner among the multimedia player were VLC.
9011 Personally, I like VLC, and it is my player of choice when I first try
9012 to play a video file or stream. Only if VLC fail will I drag out
9013 gmplayer to see if it can do better. The reason is mostly the failure
9014 model and trust. When VLC fail, it normally pop up a error message
9015 reporting the problem. When mplayer fail, it normally segfault or
9016 just hangs. The latter failure mode drain my trust in the program.
<p>
9018 <p>But even if VLC is my player of choice, we have choosen to use
9019 mplayer in
<a href=
"http://www.skolelinux.org/">Debian
9020 Edu/Skolelinux
</a>. The reason is simple. We need a good browser
9021 plugin to play web videos seamlessly, and the VLC browser plugin is
9022 not very good. For example, it lack in-line control buttons, so there
9023 is no way for the user to pause the video. Also, when I
9024 <a href=
"http://wiki.debian.org/DebianEdu/BrowserMultimedia">last
9025 tested the browser plugins
</a> available in Debian, the VLC plugin
9026 failed on several video pages where mplayer based plugins worked. If
9027 the browser plugin for VLC was as good as the gecko-mediaplayer
9028 package (which uses mplayer), we would switch.
</P>
9030 <p>While VLC is a good player, its user interface is slightly
9031 annoying. The most annoying feature is its inconsistent use of
9032 keyboard shortcuts. When the player is in full screen mode, its
9033 shortcuts are different from when it is playing the video in a window.
9034 For example, space only work as pause when in full screen mode. I
9035 wish it had consisten shortcuts and that space also would work when in
9036 window mode. Another nice shortcut in gmplayer is [enter] to restart
9037 the current video. It is very nice when playing short videos from the
9038 web and want to restart it when new people arrive to have a look at
9039 what is going on.
</p>
9045 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
9050 <div class=
"padding"></div>
9054 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html">Lenny-
>Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove
</a>
9060 <p>Michael Biebl suggested to me on IRC, that I changed my automated
9061 upgrade testing of the
9062 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
9063 Gnome and KDE Desktop
</a> to do
<tt>apt-get autoremove
</tt> when using apt-get.
9064 This seem like a very good idea, so I adjusted by test scripts and
9065 can now present the updated result from today:
</p>
9067 <p>This is for Gnome:
</p>
9069 <p>Installed using apt-get, missing with aptitude
</p>
9076 browser-plugin-gnash
9083 freedesktop-sound-theme
9085 gconf-defaults-service
9100 gnome-desktop-environment
9104 gnome-session-canberra
9109 gstreamer0.10-fluendo-mp3
9115 libapache2-mod-dnssd
9118 libaprutil1-dbd-sqlite3
9121 libboost-date-time1.42
.0
9122 libboost-python1.42
.0
9123 libboost-thread1.42
.0
9125 libchamplain-gtk-
0.4-
0
9127 libclutter-gtk-
0.10-
0
9134 libfreerdp-plugins-standard
9149 libgnomepanel2.24-cil
9154 libgtksourceview2.0-common
9155 libmono-addins-gui0.2-cil
9156 libmono-addins0.2-cil
9157 libmono-cairo2.0-cil
9158 libmono-corlib2.0-cil
9159 libmono-i18n-west2.0-cil
9160 libmono-posix2.0-cil
9161 libmono-security2.0-cil
9162 libmono-sharpzip2.84-cil
9163 libmono-system2.0-cil
9166 libndesk-dbus-glib1.0-cil
9167 libndesk-dbus1.0-cil
9177 libtelepathy-farsight0
9186 nautilus-sendto-empathy
9190 python-aptdaemon-gtk
9192 python-beautifulsoup
9207 python-gtksourceview2
9218 python-pkg-resources
9225 python-twisted-conch
9231 python-zope.interface
9236 rhythmbox-plugin-cdrecorder
9243 system-config-printer-udev
9245 telepathy-mission-control-
5
9258 <p>Installed using apt-get, removed with aptitude
</p>
9266 fast-user-switch-applet
9285 libgtksourceview2.0-
0
9287 libsdl1.2debian-alsa
9293 system-config-printer
9300 <p>Installed using aptitude, missing with apt-get
</p>
9303 gstreamer0.10-gnomevfs
9306 <p>Installed using aptitude, removed with apt-get
</p>
9312 <p>This is for KDE:
</p>
9314 <p>Installed using apt-get, missing with aptitude
</p>
9320 <p>Installed using apt-get, removed with aptitude
</p>
9327 <p>Installed using aptitude, missing with apt-get
</p>
9343 kdeartwork-emoticons
9345 kdeartwork-theme-icon
9349 kdebase-workspace-bin
9350 kdebase-workspace-data
9364 kscreensaver-xsavers
9379 plasma-dataengines-workspace
9381 plasma-desktopthemes-artwork
9382 plasma-runners-addons
9383 plasma-scriptengine-googlegadgets
9384 plasma-scriptengine-python
9385 plasma-scriptengine-qedje
9386 plasma-scriptengine-ruby
9387 plasma-scriptengine-webkit
9388 plasma-scriptengines
9389 plasma-wallpapers-addons
9390 plasma-widget-folderview
9391 plasma-widget-networkmanagement
9395 xscreensaver-data-extra
9397 xscreensaver-gl-extra
9398 xscreensaver-screensaver-bsod
9401 <p>Installed using aptitude, removed with apt-get
</p>
9405 google-gadgets-common
9423 libggadget-qt-
1.0-
0b
9428 libkonqsidebarplugin4a
9437 libplasma-geolocation-interface4
9439 libplasmagenericshell4
9453 libsmokeknewstuff2-
3
9454 libsmokeknewstuff3-
3
9456 libsmokektexteditor3
9464 libsmokeqtnetwork4-
3
9470 libsmokeqtuitools4-
3
9482 plasma-dataengines-addons
9483 plasma-scriptengine-superkaramba
9484 plasma-widget-lancelot
9485 plasma-widgets-addons
9486 plasma-widgets-workspace
9490 update-notifier-common
9493 <p>Running apt-get autoremove made the results using apt-get and
9494 aptitude a bit more similar, but there are still quite a lott of
9495 differences. I have no idea what packages should be installed after
9496 the upgrade, but hope those that do can have a look.
</p>
9502 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9507 <div class=
"padding"></div>
9511 <a href=
"http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html">Migrating Xen virtual machines using LVM to KVM using disk images
</a>
9517 <p>Most of the computers in use by the
9518 <a href=
"http://www.skolelinux.org/">Debian Edu/Skolelinux project
</a>
9519 are virtual machines. And they have been Xen machines running on a
9520 fairly old IBM eserver xseries
345 machine, and we wanted to migrate
9521 them to KVM on a newer Dell PowerEdge
2950 host machine. This was a
9522 bit harder that it could have been, because we set up the Xen virtual
9523 machines to get the virtual partitions from LVM, which as far as I
9524 know is not supported by KVM. So to migrate, we had to convert
9525 several LVM logical volumes to partitions on a virtual disk file.
</p>
9528 <a href=
"http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM">a
9529 nice recipe
</a> to do this, and wrote the following script to do the
9530 migration. It uses qemu-img from the qemu package to make the disk
9531 image, parted to partition it, losetup and kpartx to present the disk
9532 image partions as devices, and dd to copy the data. I NFS mounted the
9533 new servers storage area on the old server to do the migration.
</p>
9539 # http://searchnetworking.techtarget.com.au/articles/
35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
9544 if [ -z "$
1" ] ; then
9545 echo "Usage: $
0 <hostname
>"
9551 if [ ! -e /dev/vg_data/$host-disk ] ; then
9552 echo "error: unable to find LVM volume for $host"
9556 # Partitions need to be a bit bigger than the LVM LVs. not sure why.
9557 disksize=$( lvs --units m | grep $host-disk | awk '{sum = sum + $
4} END { print int(sum *
1.05) }')
9558 swapsize=$( lvs --units m | grep $host-swap | awk '{sum = sum + $
4} END { print int(sum *
1.05) }')
9559 totalsize=$(( ( $disksize + $swapsize ) ))
9562 #dd if=/dev/zero of=$img bs=
1M count=$(( $disksize + $swapsize ))
9563 qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
9565 parted $img mklabel msdos
9566 parted $img mkpart primary linux-swap
0 $disksize
9567 parted $img mkpart primary ext2 $disksize $totalsize
9568 parted $img set
1 boot on
9571 losetup /dev/loop0 $img
9572 kpartx -a /dev/loop0
9574 dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=
1M
9575 fsck.ext3 -f /dev/mapper/loop0p1 || true
9576 mkswap /dev/mapper/loop0p2
9578 kpartx -d /dev/loop0
9579 losetup -d /dev/loop0
9582 <p>The script is perhaps so simple that it is not copyrightable, but
9583 if it is, it is licenced using GPL v2 or later at your discretion.
</p>
9585 <p>After doing this, I booted a Debian CD in rescue mode in KVM with
9586 the new disk image attached, installed grub-pc and linux-image-
686 and
9587 set up grub to boot from the disk image. After this, the KVM machines
9588 seem to work just fine.
</p>
9594 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9599 <div class=
"padding"></div>
9603 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html">Lenny-
>Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop
</a>
9609 <p>I'm still running upgrade testing of the
9610 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
9611 Gnome and KDE Desktop
</a>, but have not had time to spend on reporting the
9612 status. Here is a short update based on a test I ran
20101118.
</p>
9614 <p>I still do not know what a correct migration should look like, so I
9615 report any differences between apt and aptitude and hope someone else
9616 can see if anything should be changed.
</p>
9618 <p>This is for Gnome:
</p>
9620 <p>Installed using apt-get, missing with aptitude
</p>
9623 apache2.2-bin aptdaemon at-spi baobab binfmt-support
9624 browser-plugin-gnash cheese-common cli-common cpp-
4.3 cups-pk-helper
9625 dmz-cursor-theme empathy empathy-common finger
9626 freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
9627 gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
9628 geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
9629 gnome-cards-data gnome-codec-install gnome-core
9630 gnome-desktop-environment gnome-disk-utility gnome-screenshot
9631 gnome-search-tool gnome-session-canberra gnome-spell
9632 gnome-system-log gnome-themes-extras gnome-themes-more
9633 gnome-user-share gs-common gstreamer0.10-fluendo-mp3
9634 gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
9635 gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
9636 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
9637 libart2.0-cil libatspi1.0-
0 libboost-date-time1.42
.0
9638 libboost-python1.42
.0 libboost-thread1.42
.0 libchamplain-
0.4-
0
9639 libchamplain-gtk-
0.4-
0 libcheese-gtk18 libclutter-gtk-
0.10-
0
9640 libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-
1.0-
2
9641 libepc-common libepc-ui-
1.0-
2 libfreerdp-plugins-standard
9642 libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
9643 libgdl-
1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-
0 libgif4
9644 libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
9645 libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
9646 libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
9647 libgtk2.0-cil libgtkglext1 libgtksourceview-common
9648 libgtksourceview2.0-common libmono-addins-gui0.2-cil
9649 libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
9650 libmono-i18n-west2.0-cil libmono-posix2.0-cil
9651 libmono-security2.0-cil libmono-sharpzip2.84-cil
9652 libmono-system2.0-cil libmtp8 libmusicbrainz3-
6
9653 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6
.8
9654 libpolkit-gtk-
1-
0 libpt-
1.10.10-plugins-alsa
9655 libpt-
1.10.10-plugins-v4l libpt2.6
.7 libpython2.6 librpm1 librpmio1
9656 libsdl1.2debian libservlet2.4-java libsrtp0 libssh-
4
9657 libtelepathy-farsight0 libtelepathy-glib0 libtidy-
0.99-
0
9658 libxalan2-java libxerces2-java media-player-info mesa-utils
9659 mono-
2.0-gac mono-gac mono-runtime nautilus-sendto
9660 nautilus-sendto-empathy openoffice.org-writer2latex
9661 openssl-blacklist p7zip p7zip-full pkg-config python-
4suite-xml
9662 python-aptdaemon python-aptdaemon-gtk python-axiom
9663 python-beautifulsoup python-bugbuddy python-clientform
9664 python-coherence python-configobj python-crypto python-cupshelpers
9665 python-cupsutils python-eggtrayicon python-elementtree
9666 python-epsilon python-evolution python-feedparser python-gdata
9667 python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
9668 python-gtksourceview2 python-httplib2 python-louie python-mako
9669 python-markupsafe python-mechanize python-nevow python-notify
9670 python-opengl python-openssl python-pam python-pkg-resources
9671 python-pyasn1 python-pysqlite2 python-rdflib python-serial
9672 python-tagpy python-twisted-bin python-twisted-conch
9673 python-twisted-core python-twisted-web python-utidylib python-webkit
9674 python-xdg python-zope.interface remmina remmina-plugin-data
9675 remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
9676 rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
9677 software-center svgalibg1 system-config-printer-udev
9678 telepathy-gabble telepathy-mission-control-
5 telepathy-salut tomboy
9679 totem totem-coherence totem-mozilla totem-plugins
9680 transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
9684 Installed using apt-get, removed with aptitude
9687 arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
9688 epiphany-extensions epiphany-gecko evolution-exchange
9689 fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
9690 gedit-common gnome-app-install gnome-games gnome-games-data
9691 gnome-nettool gnome-system-tools gnome-themes gnome-utils
9692 gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
9693 guile-
1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
9694 libavahi-ui0 libbind9-
50 libbluetooth2 libcamel1.2-
11 libcdio7
9695 libcucul0 libcurl3 libdirectfb-
1.0-
0 libdmx1 libdvdread3
9696 libedata-cal1.2-
6 libedataserver1.2-
9 libeel2-
2.20 libepc-
1.0-
1
9697 libepc-ui-
1.0-
1 libexchange-storage1.2-
3 libfaad0 libgadu3
9698 libgalago3 libgd2-noxpm libgda3-
3 libgda3-common libggz2 libggzcore9
9699 libggzmod4 libgksu1.2-
0 libgksuui1.0-
1 libgmyth0 libgnome-desktop-
2
9700 libgnome-pilot2 libgnomecups1.0-
1 libgnomeprint2.2-
0
9701 libgnomeprintui2.2-
0 libgpod3 libgraphviz4 libgtk-vnc-
1.0-
0
9702 libgtkhtml2-
0 libgtksourceview1.0-
0 libgtksourceview2.0-
0
9703 libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
9704 libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
9705 libmagick++
10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
9706 libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
9707 libnm-util0 libopal-
2.2 libosp5 libparted1.8-
10 libpisock9
9708 libpisync1 libpoppler-glib3 libpoppler3 libpt-
1.10.10 libraw1394-
8
9709 libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-
8
9710 libspeexdsp1 libssh2-
1 libsuitesparse-
3.1.0 libsvga1
9711 libswfdec-
0.6-
90 libtalloc1 libtotem-plparser10 libtrackerclient0
9712 libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
9713 libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
9714 sound-juicer swfdec-gnome system-config-printer totem-common
9715 totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
9718 <p>Installed using aptitude, missing with apt-get
</p>
9721 gstreamer0.10-gnomevfs
9724 <p>Installed using aptitude, removed with apt-get
</p>
9730 <p>This is for KDE:
</p>
9732 <p>Installed using apt-get, missing with aptitude
</p>
9735 autopoint bomber bovo cantor cantor-backend-kalgebra cpp-
4.3 dcoprss
9736 edict espeak espeak-data eyesapplet fifteenapplet finger gettext
9737 ghostscript-x git gnome-audio gnugo granatier gs-common
9738 gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
9739 kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
9740 kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
9741 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
9742 kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
9743 kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
9744 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
9745 kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
9746 kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
9747 killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
9748 kollision kpf krosspython ksirk ksmserver ksquares kstars-data
9749 ksudoku kubrick kweather libasound2-plugins libboost-python1.42
.0
9750 libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
9751 libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
9752 libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
9753 libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
9754 libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
9755 libkrossui4 libmailtools-perl libmime-tools-perl
9756 libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
9757 libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
9758 libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
9759 lirc luatex marble networkstatus noatun-plugins
9760 openoffice.org-writer2latex palapeli palapeli-data parley
9761 parley-data poster psutils pulseaudio pulseaudio-esound-compat
9762 pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
9763 speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
9767 <p>Installed using apt-get, removed with aptitude
</p>
9770 amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
9771 dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
9772 kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
9773 kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
9774 keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
9775 kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
9776 kitchensync kiten kjumpingcube klatin klettres klickety klines
9777 klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
9778 kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
9779 kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
9780 kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
9781 ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
9782 ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
9783 kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
9784 kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
9785 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
9786 libavahi-core5 libavc1394-
0 libbind9-
50 libbluetooth2
9787 libboost-python1.34
.1 libcucul0 libcurl3 libcvsservice0
9788 libdirectfb-
1.0-
0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
9789 libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-
0 libicu38
9790 libiec61883-
0 libindex0 libisccc50 libisccfg50 libiw29
9791 libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
9792 libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
9793 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
9794 libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
9795 libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
9796 libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
9797 libpoppler-qt2 libpoppler3 libraw1394-
8 librss1 libsensors3
9798 libsmbios2 libssh2-
1 libsuitesparse-
3.1.0 libswfdec-
0.6-
90
9799 libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
9800 mpeglib network-manager-kde noatun pmount tex-common texlive-base
9801 texlive-common texlive-doc-base texlive-fonts-recommended tidy
9802 ttf-dustin ttf-kochi-gothic ttf-sjfonts
9805 <p>Installed using aptitude, missing with apt-get
</p>
9808 dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
9809 kdeartwork kdebase kdebase-apps kdebase-workspace
9810 kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
9811 kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
9812 netpbm plasma-widget-folderview plasma-widget-networkmanagement
9813 xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
9814 xscreensaver-screensaver-bsod
9817 <p>Installed using aptitude, removed with apt-get
</p>
9820 kdebase-bin konq-plugins konqueror
9827 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9832 <div class=
"padding"></div>
9836 <a href=
"http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html">Gnash buildbot slave and Debian kfreebsd
</a>
9843 <a href=
"http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html">the
9844 call from the Gnash project
</a> for
9845 <a href=
"http://www.gnashdev.org:8010">buildbot
</a> slaves to test the
9846 current source, I have set up a virtual KVM machine on the Debian
9847 Edu/Skolelinux virtualization host to test the git source on
9848 Debian/Squeeze. I hope this can help the developers in getting new
9849 releases out more often.
</p>
9851 <p>As the developers want less main-stream build platforms tested to,
9852 I have considered setting up a
<a
9853 href=
"http://www.debian.org/ports/kfreebsd-gnu/">Debian/kfreebsd
</a>
9854 machine as well. I have also considered using the kfreebsd
9855 architecture in Debian as a file server in NUUG to get access to the
5
9856 TB zfs volume we currently use to store DV video. Because of this, I
9857 finally got around to do a test installation of Debian/Squeeze with
9858 kfreebsd. Installation went fairly smooth, thought I noticed some
9859 visual glitches in the cdebconf dialogs (black cursor left on the
9860 screen at random locations). Have not gotten very far with the
9861 testing. Noticed cfdisk did not work, but fdisk did so it was not a
9862 fatal problem. Have to spend some more time on it to see if it is
9863 useful as a file server for NUUG. Will try to find time to set up a
9864 gnash buildbot slave on the Debian Edu/Skolelinux this weekend.
</p>
9870 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
9875 <div class=
"padding"></div>
9879 <a href=
"http://people.skolelinux.org/pere/blog/Debian_in_3D.html">Debian in
3D
</a>
9885 <p><img src=
"http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg"></p>
9887 <p>3D printing is just great. I just came across this Debian logo in
9889 <a href=
"http://blog.thingiverse.com/2010/11/09/participatory-branding/">the
9890 thingiverse blog
</a>.
</p>
9896 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9901 <div class=
"padding"></div>
9905 <a href=
"http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates
2010-
10-
24</a>
9911 <p>Some updates.
</p>
9913 <p>My
<a href=
"http://pledgebank.com/gnash-avm2">gnash pledge
</a> to
9914 raise money for the project is going well. The lower limit of
10
9915 signers was reached in
24 hours, and so far
13 people have signed it.
9916 More signers and more funding is most welcome, and I am really curious
9917 how far we can get before the time limit of December
24 is reached.
9920 <p>On the #gnash IRC channel on irc.freenode.net, I was just tipped
9921 about what appear to be a great code coverage tool capable of
9922 generating code coverage stats without any changes to the source code.
9924 <a href=
"http://simonkagstrom.github.com/kcov/index.html">kcov
</a>,
9925 and can be used using
<tt>kcov
<directory
> <binary
></tt>.
9926 It is missing in Debian, but the git source built just fine in Squeeze
9927 after I installed libelf-dev, libdwarf-dev, pkg-config and
9928 libglib2.0-dev. Failed to build in Lenny, but suspect that is
9929 solvable. I hope kcov make it into Debian soon.
</p>
9931 <p>Finally found time to wrap up the release notes for
<a
9932 href=
"http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html">a
9933 new alpha release of Debian Edu
</a>, and just published the second
9934 alpha test release of the Squeeze based Debian Edu /
9935 <a href=
"http://www.skolelinux.org/">Skolelinux
</a>
9936 release. Give it a try if you need a complete linux solution for your
9937 school, including central infrastructure server, workstations, thin
9938 client servers and diskless workstations. A nice touch added
9939 yesterday is RDP support on the thin client servers, for windows
9940 clients to get a Linux desktop on request.
</p>
9946 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
9951 <div class=
"padding"></div>
9955 <a href=
"http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html">Some notes on Flash in Debian and Debian Edu
</a>
9961 <p>In the
<a href=
"http://popcon.debian.org/unknown/by_vote">Debian
9962 popularity-contest numbers
</a>, the adobe-flashplugin package the
9963 second most popular used package that is missing in Debian. The sixth
9964 most popular is flashplayer-mozilla. This is a clear indication that
9965 working flash is important for Debian users. Around
10 percent of the
9966 users submitting data to popcon.debian.org have this package
9969 <p>In the report written by Lars Risan in August
2008
9970 («
<a href=
"http://wiki.skolelinux.no/Dokumentasjon/Rapporter?action=AttachFile&do=view&target=Skolelinux_i_bruk_rapport_1.0.pdf">Skolelinux
9971 i bruk – Rapport for Hurum kommune, Universitetet i Agder og
9972 stiftelsen SLX Debian Labs
</a>»), one of the most important problems
9973 schools experienced with
<a href=
"http://www.skolelinux.org/">Debian
9974 Edu/Skolelinux
</a> was the lack of working Flash. A lot of educational
9975 web sites require Flash to work, and lacking working Flash support in
9976 the web browser and the problems with installing it was perceived as a
9977 good reason to stay with Windows.
</p>
9979 <p>I once saw a funny and sad comment in a web forum, where Linux was
9980 said to be the retarded cousin that did not really understand
9981 everything you told him but could work fairly well. This was a
9982 comment regarding the problems Linux have with proprietary formats and
9983 non-standard web pages, and is sad because it exposes a fairly common
9984 understanding of whose fault it is if web pages that only work in for
9985 example Internet Explorer
6 fail to work on Firefox, and funny because
9986 it explain very well how annoying it is for users when Linux
9987 distributions do not work with the documents they receive or the web
9988 pages they want to visit.
</p>
9990 <p>This is part of the reason why I believe it is important for Debian
9991 and Debian Edu to have a well working Flash implementation in the
9992 distribution, to get at least popular sites as Youtube and Google
9993 Video to working out of the box. For Squeeze, Debian have the chance
9994 to include the latest version of Gnash that will make this happen, as
9995 the new release
0.8.8 was published a few weeks ago and is resting in
9996 unstable. The new version work with more sites that version
0.8.7.
9997 The Gnash maintainers have asked for a freeze exception, but the
9998 release team have not had time to reply to it yet. I hope they agree
9999 with me that Flash is important for the Debian desktop users, and thus
10000 accept the new package into Squeeze.
</p>
10006 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
10011 <div class=
"padding"></div>
10013 <div class=
"entry">
10014 <div class=
"title">
10015 <a href=
"http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html">Circular package dependencies harms apt recovery
</a>
10021 <p>I discovered this while doing
10022 <a href=
"http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">automated
10023 testing of upgrades from Debian Lenny to Squeeze
</a>. A few packages
10024 in Debian still got circular dependencies, and it is often claimed
10025 that apt and aptitude should be able to handle this just fine, but
10026 some times these dependency loops causes apt to fail.
</p>
10028 <p>An example is from todays
10029 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt">upgrade
10030 of KDE using aptitude
</a>. In it, a bug in kdebase-workspace-data
10031 causes perl-modules to fail to upgrade. The cause is simple. If a
10032 package fail to unpack, then only part of packages with the circular
10033 dependency might end up being unpacked when unpacking aborts, and the
10034 ones already unpacked will fail to configure in the recovery phase
10035 because its dependencies are unavailable.
</p>
10037 <p>In this log, the problem manifest itself with this error:
</p>
10040 dpkg: dependency problems prevent configuration of perl-modules:
10041 perl-modules depends on perl (
>=
5.10.1-
1); however:
10042 Version of perl on system is
5.10.0-
19lenny
2.
10043 dpkg: error processing perl-modules (--configure):
10044 dependency problems - leaving unconfigured
10045 </pre></blockquote>
10047 <p>The perl/perl-modules circular dependency is already
10048 <a href=
"http://bugs.debian.org/527917">reported as a bug
</a>, and will
10049 hopefully be solved as soon as possible, but it is not the only one,
10050 and each one of these loops in the dependency tree can cause similar
10051 failures. Of course, they only occur when there are bugs in other
10052 packages causing the unpacking to fail, but it is rather nasty when
10053 the failure of one package causes the problem to become worse because
10054 of dependency loops.
</p>
10057 <a href=
"http://lists.debian.org/debian-devel/2010/06/msg00116.html">the
10058 tireless effort by Bill Allombert
</a>, the number of circular
10060 <a href=
"http://debian.semistable.com/debgraph.out.html">left in Debian
10061 is dropping
</a>, and perhaps it will reach zero one day. :)
</p>
10063 <p>Todays testing also exposed a bug in
10064 <a href=
"http://bugs.debian.org/590605">update-notifier
</a> and
10065 <a href=
"http://bugs.debian.org/590604">different behaviour
</a> between
10066 apt-get and aptitude, the latter possibly caused by some circular
10067 dependency. Reported both to BTS to try to get someone to look at
10074 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10079 <div class=
"padding"></div>
10081 <div class=
"entry">
10082 <div class=
"title">
10083 <a href=
"http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html">What are they searching for - PowerDNS and ISC DHCP in LDAP
</a>
10090 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">followup
</a>
10092 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">previous
10094 <a href=
"http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">merging
10095 all
</a> the computer related LDAP objects in Debian Edu.
</p>
10097 <p>As a step to try to see if it possible to merge the DNS and DHCP
10098 LDAP objects, I have had a look at how the packages pdns-backend-ldap
10099 and dhcp3-server-ldap in Debian use the LDAP server. The two
10100 implementations are quite different in how they use LDAP.
</p>
10102 To get this information, I started slapd with debugging enabled and
10103 dumped the debug output to a file to get the LDAP searches performed
10104 on a Debian Edu main-server. Here is a summary.
10106 <p><strong>powerdns
</strong></p>
10108 <a href=
"http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend">Clues
10109 on how to
</a> set up PowerDNS to use a LDAP backend is available on
10112 <p>PowerDNS have two modes of operation using LDAP as its backend.
10113 One "strict" mode where the forward and reverse DNS lookups are done
10114 using the same LDAP objects, and a "tree" mode where the forward and
10115 reverse entries are in two different subtrees in LDAP with a structure
10116 based on the DNS names, as in tjener.intern and
10117 2.2.0.10.in-addr.arpa.
</p>
10119 <p>In tree mode, the server is set up to use a LDAP subtree as its
10120 base, and uses a "base" scoped search for the DNS name by adding
10121 "dc=tjener,dc=intern," to the base with a filter for
10122 "(associateddomain=tjener.intern)" for the forward entry and
10123 "dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa," with a filter for
10124 "(associateddomain=
2.2.0.10.in-addr.arpa)" for the reverse entry. For
10125 forward entries, it is looking for attributes named dnsttl, arecord,
10126 nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
10127 txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
10128 srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
10129 ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
10130 spfrecord and modifytimestamp. For reverse entries it is looking for
10131 the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
10132 ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
10133 locrecord, srvrecord, naptrrecord and modifytimestamp. The equivalent
10134 ldapsearch commands could look like this:
</p>
10137 ldapsearch -h ldap \
10138 -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
10139 -s base -x '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
10140 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
10141 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
10142 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
10143 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
10145 ldapsearch -h ldap \
10146 -b dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
10147 -s base -x '(associateddomain=
2.2.0.10.in-addr.arpa)'
10148 dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
10149 hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
10150 srvrecord naptrrecord modifytimestamp
10151 </pre></blockquote>
10153 <p>In Debian Edu/Lenny, the PowerDNS tree mode is used with
10154 ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
10155 example LDAP objects used there. In addition to these objects, the
10156 parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
10160 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
10162 objectclass: dnsdomain
10163 objectclass: domainrelatedobject
10166 associateddomain: tjener.intern
10168 dn: dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
10170 objectclass: dnsdomain2
10171 objectclass: domainrelatedobject
10173 ptrrecord: tjener.intern
10174 associateddomain:
2.2.0.10.in-addr.arpa
10175 </pre></blockquote>
10177 <p>In strict mode, the server behaves differently. When looking for
10178 forward DNS entries, it is doing a "subtree" scoped search with the
10179 same base as in the tree mode for a object with filter
10180 "(associateddomain=tjener.intern)" and requests the attributes dnsttl,
10181 arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
10182 mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
10183 naptrrecord and modifytimestamp. For reverse entires it also do a
10184 subtree scoped search but this time the filter is "(arecord=
10.0.2.2)"
10185 and the requested attributes are associateddomain, dnsttl and
10186 modifytimestamp. In short, in strict mode the objects with ptrrecord
10187 go away, and the arecord attribute in the forward object is used
10190 <p>The forward and reverse searches can be simulated using ldapsearch
10194 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
10195 '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
10196 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
10197 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
10198 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
10199 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
10201 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
10202 '(arecord=
10.0.2.2)' associateddomain dnsttl modifytimestamp
10203 </pre></blockquote>
10205 <p>In addition to the forward and reverse searches , there is also a
10206 search for SOA records, which behave similar to the forward and
10207 reverse lookups.
</p>
10209 <p>A thing to note with the PowerDNS behaviour is that it do not
10210 specify any objectclass names, and instead look for the attributes it
10211 need to generate a DNS reply. This make it able to work with any
10212 objectclass that provide the needed attributes.
</p>
10214 <p>The attributes are normally provided in the cosine (RFC
1274) and
10215 dnsdomain2 schemas. The latter is used for reverse entries like
10216 ptrrecord and recent DNS additions like aaaarecord and srvrecord.
</p>
10218 <p>In Debian Edu, we have created DNS objects using the object classes
10219 dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
10220 attributes) and domainrelatedobject (for associatedDomain). The use
10221 of structural object classes make it impossible to combine these
10222 classes with the object classes used by DHCP.
</p>
10224 <p>There are other schemas that could be used too, for example the
10225 dnszone structural object class used by Gosa and bind-sdb for the DNS
10226 attributes combined with the domainrelatedobject object class, but in
10227 this case some unused attributes would have to be included as well
10228 (zonename and relativedomainname).
</p>
10230 <p>My proposal for Debian Edu would be to switch PowerDNS to strict
10231 mode and not use any of the existing objectclasses (dnsdomain,
10232 dnsdomain2 and dnszone) when one want to combine the DNS information
10233 with DHCP information, and instead create a auxiliary object class
10234 defined something like this (using the attributes defined for
10235 dnsdomain and dnsdomain2 or dnszone):
</p>
10238 objectclass ( some-oid NAME 'dnsDomainAux'
10241 MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
10242 DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
10243 TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
10244 NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
10245 A6Record $ DNAMERecord
10247 </pre></blockquote>
10249 <p>This will allow any object to become a DNS entry when combined with
10250 the domainrelatedobject object class, and allow any entity to include
10251 all the attributes PowerDNS wants. I've sent an email to the PowerDNS
10252 developers asking for their view on this schema and if they are
10253 interested in providing such schema with PowerDNS, and I hope my
10254 message will be accepted into their mailing list soon.
</p>
10256 <p><strong>ISC dhcp
</strong></p>
10258 <p>The DHCP server searches for specific objectclass and requests all
10259 the object attributes, and then uses the attributes it want. This
10260 make it harder to figure out exactly what attributes are used, but
10261 thanks to the working example in Debian Edu I can at least get an idea
10262 what is needed without having to read the source code.
</p>
10264 <p>In the DHCP server configuration, the LDAP base to use and the
10265 search filter to use to locate the correct dhcpServer entity is
10266 stored. These are the relevant entries from
10267 /etc/dhcp3/dhcpd.conf:
</p>
10270 ldap-base-dn "dc=skole,dc=skolelinux,dc=no";
10271 ldap-dhcp-server-cn "dhcp";
10272 </pre></blockquote>
10274 <p>The DHCP server uses this information to nest all the DHCP
10275 configuration it need. The cn "dhcp" is located using the given LDAP
10276 base and the filter "(&(objectClass=dhcpServer)(cn=dhcp))". The
10277 search result is this entry:
</p>
10280 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
10283 objectClass: dhcpServer
10284 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10285 </pre></blockquote>
10287 <p>The content of the dhcpServiceDN attribute is next used to locate the
10288 subtree with DHCP configuration. The DHCP configuration subtree base
10289 is located using a base scope search with base "cn=DHCP
10290 Config,dc=skole,dc=skolelinux,dc=no" and filter
10291 "(&(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))".
10292 The search result is this entry:
</p>
10295 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10298 objectClass: dhcpService
10299 objectClass: dhcpOptions
10300 dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
10301 dhcpStatements: ddns-update-style none
10302 dhcpStatements: authoritative
10303 dhcpOption: smtp-server code
69 = array of ip-address
10304 dhcpOption: www-server code
72 = array of ip-address
10305 dhcpOption: wpad-url code
252 = text
10306 </pre></blockquote>
10308 <p>Next, the entire subtree is processed, one level at the time. When
10309 all the DHCP configuration is loaded, it is ready to receive requests.
10310 The subtree in Debian Edu contain objects with object classes
10311 top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
10312 top/dhcpSubnet, top/dhcpGroup and top/dhcpHost. These provide options
10313 and information about netmasks, dynamic range etc. Leaving out the
10314 details here because it is not relevant for the focus of my
10315 investigation, which is to see if it is possible to merge dns and dhcp
10316 related computer objects.
</p>
10318 <p>When a DHCP request come in, LDAP is searched for the MAC address
10319 of the client (
00:
00:
00:
00:
00:
00 in this example), using a subtree
10320 scoped search with "cn=DHCP Config,dc=skole,dc=skolelinux,dc=no" as
10321 the base and "(&(objectClass=dhcpHost)(dhcpHWAddress=ethernet
10322 00:
00:
00:
00:
00:
00))" as the filter. This is what a host object look
10326 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10329 objectClass: dhcpHost
10330 dhcpHWAddress: ethernet
00:
00:
00:
00:
00:
00
10331 dhcpStatements: fixed-address hostname
10332 </pre></blockquote>
10334 <p>There is less flexiblity in the way LDAP searches are done here.
10335 The object classes need to have fixed names, and the configuration
10336 need to be stored in a fairly specific LDAP structure. On the
10337 positive side, the invidiual dhcpHost entires can be anywhere without
10338 the DN pointed to by the dhcpServer entries. The latter should make
10339 it possible to group all host entries in a subtree next to the
10340 configuration entries, and this subtree can also be shared with the
10341 DNS server if the schema proposed above is combined with the dhcpHost
10342 structural object class.
10344 <p><strong>Conclusion
</strong></p>
10346 <p>The PowerDNS implementation seem to be very flexible when it come
10347 to which LDAP schemas to use. While its "tree" mode is rigid when it
10348 come to the the LDAP structure, the "strict" mode is very flexible,
10349 allowing DNS objects to be stored anywhere under the base cn specified
10350 in the configuration.
</p>
10352 <p>The DHCP implementation on the other hand is very inflexible, both
10353 regarding which LDAP schemas to use and which LDAP structure to use.
10354 I guess one could implement ones own schema, as long as the
10355 objectclasses and attributes have the names used, but this do not
10356 really help when the DHCP subtree need to have a fairly fixed
10359 <p>Based on the observed behaviour, I suspect a LDAP structure like
10360 this might work for Debian Edu:
</p>
10364 cn=machine-info (dhcpService) - dhcpServiceDN points here
10365 cn=dhcp (dhcpServer)
10366 cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
10367 cn=
10.0.2.0 (dhcpSubnet)
10368 cn=group1 (dhcpGroup/dhcpOptions)
10369 cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
10370 cn=
192.168.0.0 (dhcpSubnet)
10371 cn=group1 (dhcpGroup/dhcpOptions)
10372 ou=machines - PowerDNS base points here
10373 cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
10374 </pre></blockquote>
10376 <P>This is not tested yet. If the DHCP server require the dhcpHost
10377 entries to be in the dhcpGroup subtrees, the entries can be stored
10378 there instead of a common machines subtree, and the PowerDNS base
10379 would have to be moved one level up to the machine-info subtree.
</p>
10381 <p>The combined object under the machines subtree would look something
10385 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
10388 objectClass: dhcpHost
10389 objectclass: domainrelatedobject
10390 objectclass: dnsDomainAux
10391 associateddomain: hostname.intern
10392 arecord:
10.11.12.13
10393 dhcpHWAddress: ethernet
00:
00:
00:
00:
00:
00
10394 dhcpStatements: fixed-address hostname.intern
10395 </pre></blockquote>
10397 </p>One could even add the LTSP configuration associated with a given
10398 machine, as long as the required attributes are available in a
10399 auxiliary object class.
</p>
10405 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10410 <div class=
"padding"></div>
10412 <div class=
"entry">
10413 <div class=
"title">
10414 <a href=
"http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">Combining PowerDNS and ISC DHCP LDAP objects
</a>
10420 <p>For a while now, I have wanted to find a way to change the DNS and
10421 DHCP services in Debian Edu to use the same LDAP objects for a given
10422 computer, to avoid the possibility of having a inconsistent state for
10423 a computer in LDAP (as in DHCP but no DNS entry or the other way
10424 around) and make it easier to add computers to LDAP.
</p>
10426 <p>I've looked at how powerdns and dhcpd is using LDAP, and using this
10427 information finally found a solution that seem to work.
</p>
10429 <p>The old setup required three LDAP objects for a given computer.
10430 One forward DNS entry, one reverse DNS entry and one DHCP entry. If
10431 we switch powerdns to use its strict LDAP method (ldap-method=strict
10432 in pdns-debian-edu.conf), the forward and reverse DNS entries are
10433 merged into one while making it impossible to transfer the reverse map
10434 to a slave DNS server.
</p>
10436 <p>If we also replace the object class used to get the DNS related
10437 attributes to one allowing these attributes to be combined with the
10438 dhcphost object class, we can merge the DNS and DHCP entries into one.
10439 I've written such object class in the dnsdomainaux.schema file (need
10440 proper OIDs, but that is a minor issue), and tested the setup. It
10443 <p>With this test setup in place, we can get away with one LDAP object
10444 for both DNS and DHCP, and even the LTSP configuration I suggested in
10445 an earlier email. The combined LDAP object will look something like
10449 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10451 objectClass: dhcphost
10452 objectclass: domainrelatedobject
10453 objectclass: dnsdomainaux
10454 associateddomain: hostname.intern
10455 arecord:
10.11.12.13
10456 dhcphwaddress: ethernet
00:
00:
00:
00:
00:
00
10457 dhcpstatements: fixed-address hostname
10459 </pre></blockquote>
10461 <p>The DNS server uses the associateddomain and arecord entries, while
10462 the DHCP server uses the dhcphwaddress and dhcpstatements entries
10463 before asking DNS to resolve the fixed-adddress. LTSP will use
10464 dhcphwaddress or associateddomain and the ldapconfig* attributes.
</p>
10466 <p>I am not yet sure if I can get the DHCP server to look for its
10467 dhcphost in a different location, to allow us to put the objects
10468 outside the "DHCP Config" subtree, but hope to figure out a way to do
10469 that. If I can't figure out a way to do that, we can still get rid of
10470 the hosts subtree and move all its content into the DHCP Config tree
10471 (which probably should be renamed to be more related to the new
10472 content. I suspect cn=dnsdhcp,ou=services or something like that
10473 might be a good place to put it.
</p>
10475 <p>If you want to help out with implementing this for Debian Edu,
10476 please contact us on debian-edu@lists.debian.org.
</p>
10482 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10487 <div class=
"padding"></div>
10489 <div class=
"entry">
10490 <div class=
"title">
10491 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html">Idea for storing LTSP configuration in LDAP
</a>
10497 <p>Vagrant mentioned on IRC today that ltsp_config now support
10498 sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
10499 clients, and that this can be used to fetch configuration from LDAP if
10500 Debian Edu choose to store configuration there.
</p>
10502 <p>Armed with this information, I got inspired and wrote a test module
10503 to get configuration from LDAP. The idea is to look up the MAC
10504 address of the client in LDAP, and look for attributes on the form
10505 ltspconfigsetting=value, and use this to export SETTING=value to the
10508 <p>The goal is to be able to store the LTSP configuration attributes
10509 in a "computer" LDAP object used by both DNS and DHCP, and thus
10510 allowing us to store all information about a computer in one place.
</p>
10512 <p>This is a untested draft implementation, and I welcome feedback on
10513 this approach. A real LDAP schema for the ltspClientAux objectclass
10514 need to be written. Comments, suggestions, etc?
</p>
10517 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
10519 # Fetch LTSP client settings from LDAP based on MAC address
10521 # Uses ethernet address as stored in the dhcpHost objectclass using
10522 # the dhcpHWAddress attribute or ethernet address stored in the
10523 # ieee802Device objectclass with the macAddress attribute.
10525 # This module is written to be schema agnostic, and only depend on the
10526 # existence of attribute names.
10528 # The LTSP configuration variables are saved directly using a
10529 # ltspConfig prefix and uppercasing the rest of the attribute name.
10530 # To set the SERVER variable, set the ltspConfigServer attribute.
10532 # Some LDAP schema should be created with all the relevant
10533 # configuration settings. Something like this should work:
10535 # objectclass (
1.1.2.2 NAME 'ltspClientAux'
10538 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
10540 LDAPSERVER=$(debian-edu-ldapserver)
10541 if [ "$LDAPSERVER" ] ; then
10542 LDAPBASE=$(debian-edu-ldapserver -b)
10543 for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk '{print $
5}'|sort -u) ; do
10544 filter="(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))"
10545 ldapsearch -h "$LDAPSERVER" -b "$LDAPBASE" -v -x "$filter" | \
10546 grep '^ltspConfig' | while read attr value ; do
10547 # Remove prefix and convert to upper case
10548 attr=$(echo $attr | sed 's/^ltspConfig//i' | tr a-z A-Z)
10549 # bass value on to clients
10550 eval "$attr=$value; export $attr"
10554 </pre></blockquote>
10556 <p>I'm not sure this shell construction will work, because I suspect
10557 the while block might end up in a subshell causing the variables set
10558 there to not show up in ltsp-config, but if that is the case I am sure
10559 the code can be restructured to make sure the variables are passed on.
10560 I expect that can be solved with some testing. :)
</p>
10562 <p>If you want to help out with implementing this for Debian Edu,
10563 please contact us on debian-edu@lists.debian.org.
</p>
10565 <p>Update
2010-
07-
17: I am aware of another effort to store LTSP
10566 configuration in LDAP that was created around year
2000 by
10567 <a href=
"http://www.pcxperience.com/thinclient/documentation/ldap.html">PC
10568 Xperience, Inc.,
2000</a>. I found its
10569 <a href=
"http://people.redhat.com/alikins/ltsp/ldap/">files
</a> on a
10570 personal home page over at redhat.com.
</p>
10576 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10581 <div class=
"padding"></div>
10583 <div class=
"entry">
10584 <div class=
"title">
10585 <a href=
"http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html">jXplorer, a very nice LDAP GUI
</a>
10592 <a href=
"http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">my
10593 last post
</a> about available LDAP tools in Debian, I was told about a
10594 LDAP GUI that is even better than luma. The java application
10595 <a href=
"http://jxplorer.org/">jXplorer
</a> is claimed to be capable of
10596 moving LDAP objects and subtrees using drag-and-drop, and can
10597 authenticate using Kerberos. I have only tested the Kerberos
10598 authentication, but do not have a LDAP setup allowing me to rewrite
10599 LDAP with my test user yet. It is
10600 <a href=
"http://packages.qa.debian.org/j/jxplorer.html">available in
10601 Debian
</a> testing and unstable at the moment. The only problem I
10602 have with it is how it handle errors. If something go wrong, its
10603 non-intuitive behaviour require me to go through some query work list
10604 and remove the failing query. Nothing big, but very annoying.
</p>
10610 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10615 <div class=
"padding"></div>
10617 <div class=
"entry">
10618 <div class=
"title">
10619 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html">Lenny-
>Squeeze upgrades, apt vs aptitude with the Gnome desktop
</a>
10625 <p>Here is a short update on my
<a
10626 href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">my
10627 Debian Lenny-
>Squeeze upgrade testing
</a>. Here is a summary of the
10628 difference for Gnome when it is upgraded by apt-get and aptitude. I'm
10629 not reporting the status for KDE, because the upgrade crashes when
10630 aptitude try because of missing conflicts
10631 (
<a href=
"http://bugs.debian.org/584861">#
584861</a> and
10632 <a href=
"http://bugs.debian.org/585716">#
585716</a>).
</p>
10634 <p>At the end of the upgrade test script, dpkg -l is executed to get a
10635 complete list of the installed packages. Based on this I see these
10636 differences when I did a test run today. As usual, I do not really
10637 know what the correct set of packages would be, but thought it best to
10638 publish the difference.
</p>
10640 <p>Installed using apt-get, missing with aptitude
</p>
10643 at-spi cpp-
4.3 finger gnome-spell gstreamer0.10-gnomevfs
10644 libatspi1.0-
0 libcupsys2 libeel2-data libgail-common libgdl-
1-common
10645 libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
10646 libgtksourceview-common libpt-
1.10.10-plugins-alsa
10647 libpt-
1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
10648 libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
10649 python-
4suite-xml python-eggtrayicon python-gtkhtml2
10650 python-gtkmozembed svgalibg1 xserver-xephyr zip
10653 <p>Installed using apt-get, removed with aptitude
</p>
10656 bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
10657 gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
10658 libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-
50
10659 libbluetooth2 libcamel1.2-
11 libcdio7 libcucul0 libcurl3
10660 libdirectfb-
1.0-
0 libdvdread3 libedata-cal1.2-
6 libedataserver1.2-
9
10661 libeel2-
2.20 libepc-
1.0-
1 libepc-ui-
1.0-
1 libexchange-storage1.2-
3
10662 libfaad0 libgd2-noxpm libgda3-
3 libgda3-common libggz2 libggzcore9
10663 libggzmod4 libgksu1.2-
0 libgksuui1.0-
1 libgmyth0 libgnome-desktop-
2
10664 libgnome-pilot2 libgnomecups1.0-
1 libgnomeprint2.2-
0
10665 libgnomeprintui2.2-
0 libgpod3 libgraphviz4 libgtkhtml2-
0
10666 libgtksourceview1.0-
0 libgucharmap6 libhesiod0 libicu38 libisccc50
10667 libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++
10
10668 libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
10669 libneon27 libnm-glib0 libnm-util0 libopal-
2.2 libosp5
10670 libparted1.8-
10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
10671 libpt-
1.10.10 libraw1394-
8 libsensors3 libsmbios2 libsoup2.2-
8
10672 libssh2-
1 libsuitesparse-
3.1.0 libswfdec-
0.6-
90 libtalloc1
10673 libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
10674 libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
10675 mysql-common swfdec-gnome totem-gstreamer wodim
10678 <p>Installed using aptitude, missing with apt-get
</p>
10681 gnome gnome-desktop-environment hamster-applet python-gnomeapplet
10682 python-gnomekeyring python-wnck rhythmbox-plugins xorg
10683 xserver-xorg-input-all xserver-xorg-input-evdev
10684 xserver-xorg-input-kbd xserver-xorg-input-mouse
10685 xserver-xorg-input-synaptics xserver-xorg-video-all
10686 xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
10687 xserver-xorg-video-chips xserver-xorg-video-cirrus
10688 xserver-xorg-video-dummy xserver-xorg-video-fbdev
10689 xserver-xorg-video-glint xserver-xorg-video-i128
10690 xserver-xorg-video-i740 xserver-xorg-video-mach64
10691 xserver-xorg-video-mga xserver-xorg-video-neomagic
10692 xserver-xorg-video-nouveau xserver-xorg-video-nv
10693 xserver-xorg-video-r128 xserver-xorg-video-radeon
10694 xserver-xorg-video-radeonhd xserver-xorg-video-rendition
10695 xserver-xorg-video-s3 xserver-xorg-video-s3virge
10696 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
10697 xserver-xorg-video-sis xserver-xorg-video-sisusb
10698 xserver-xorg-video-tdfx xserver-xorg-video-tga
10699 xserver-xorg-video-trident xserver-xorg-video-tseng
10700 xserver-xorg-video-vesa xserver-xorg-video-vmware
10701 xserver-xorg-video-voodoo
10704 <p>Installed using aptitude, removed with apt-get
</p>
10707 deskbar-applet xserver-xorg xserver-xorg-core
10708 xserver-xorg-input-wacom xserver-xorg-video-intel
10709 xserver-xorg-video-openchrome
10712 <p>I was told on IRC that the xorg-xserver package was
10713 <a href=
"http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120">changed
10714 in git
</a> today to try to get apt-get to not remove xorg completely.
10715 No idea when it hits Squeeze, but when it does I hope it will reduce
10716 the difference somewhat.
10722 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
10727 <div class=
"padding"></div>
10729 <div class=
"entry">
10730 <div class=
"title">
10731 <a href=
"http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">LUMA, a very nice LDAP GUI
</a>
10737 <p>The last few days I have been looking into the status of the LDAP
10738 directory in Debian Edu, and in the process I started to miss a GUI
10739 tool to browse the LDAP tree. The only one I was able to find in
10740 Debian/Squeeze and Lenny is
10741 <a href=
"http://luma.sourceforge.net/">LUMA
</a>, which has proved to
10742 be a great tool to get a overview of the current LDAP directory
10743 populated by default in Skolelinux. Thanks to it, I have been able to
10744 find empty and obsolete subtrees, misplaced objects and duplicate
10745 objects. It will be installed by default in Debian/Squeeze. If you
10746 are working with LDAP, give it a go. :)
</p>
10748 <p>I did notice one problem with it I have not had time to report to
10749 the BTS yet. There is no .desktop file in the package, so the tool do
10750 not show up in the Gnome and KDE menus, but only deep down in in the
10751 Debian submenu in KDE. I hope that can be fixed before Squeeze is
10754 <p>I have not yet been able to get it to modify the tree yet. I would
10755 like to move objects and remove subtrees directly in the GUI, but have
10756 not found a way to do that with LUMA yet. So in the mean time, I use
10757 <a href=
"http://www.lichteblau.com/ldapvi/">ldapvi
</a> for that.
</p>
10759 <p>If you have tips on other GUI tools for LDAP that might be useful
10760 in Debian Edu, please contact us on debian-edu@lists.debian.org.
</p>
10762 <p>Update
2010-
06-
29: Ross Reedstrom tipped us about the
10763 <a href=
"http://packages.qa.debian.org/g/gq.html">gq
</a> package as a
10764 useful GUI alternative. It seem like a good tool, but is unmaintained
10765 in Debian and got a RC bug keeping it out of Squeeze. Unless that
10766 changes, it will not be an option for Debian Edu based on Squeeze.
</p>
10772 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10777 <div class=
"padding"></div>
10779 <div class=
"entry">
10780 <div class=
"title">
10781 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">Idea for a change to LDAP schemas allowing DNS and DHCP info to be combined into one object
</a>
10788 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">complained
10789 about the fact
</a> that it is not possible with the provided schemas
10790 for storing DNS and DHCP information in LDAP to combine the two sets
10791 of information into one LDAP object representing a computer.
</p>
10793 <p>In the mean time, I discovered that a simple fix would be to make
10794 the dhcpHost object class auxiliary, to allow it to be combined with
10795 the dNSDomain object class, and thus forming one object for one
10796 computer when storing both DHCP and DNS information in LDAP.
</p>
10798 <p>If I understand this correctly, it is not safe to do this change
10799 without also changing the assigned number for the object class, and I
10800 do not know enough about LDAP schema design to do that properly for
10803 <p>Anyway, for future reference, this is how I believe we could change
10805 <a href=
"http://tools.ietf.org/html/draft-ietf-dhc-ldap-schema-00">DHCP
10806 schema
</a> to solve at least part of the problem with the LDAP schemas
10807 available today from IETF.
</p>
10810 --- dhcp.schema (revision
65192)
10811 +++ dhcp.schema (working copy)
10812 @@ -
376,
7 +
376,
7 @@
10813 objectclass (
2.16.840.1.113719.1.203.6.6
10815 DESC 'This represents information about a particular client'
10817 + SUP top AUXILIARY
10819 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
10820 X-NDS_CONTAINMENT ('dhcpService' 'dhcpSubnet' 'dhcpGroup') )
10823 <p>I very much welcome clues on how to do this properly for Debian
10824 Edu/Squeeze. We provide the DHCP schema in our debian-edu-config
10825 package, and should thus be free to rewrite it as we see fit.
</p>
10827 <p>If you want to help out with implementing this for Debian Edu,
10828 please contact us on debian-edu@lists.debian.org.
</p>
10834 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
10839 <div class=
"padding"></div>
10841 <div class=
"entry">
10842 <div class=
"title">
10843 <a href=
"http://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html">Calling tasksel like the installer, while still getting useful output
</a>
10849 <p>A few times I have had the need to simulate the way tasksel
10850 installs packages during the normal debian-installer run. Until now,
10851 I have ended up letting tasksel do the work, with the annoying problem
10852 of not getting any feedback at all when something fails (like a
10853 conffile question from dpkg or a download that fails), using code like
10857 export DEBIAN_FRONTEND=noninteractive
10858 tasksel --new-install
10859 </pre></blockquote>
10861 This would invoke tasksel, let its automatic task selection pick the
10862 tasks to install, and continue to install the requested tasks without
10863 any output what so ever.
10865 Recently I revisited this problem while working on the automatic
10866 package upgrade testing, because tasksel would some times hang without
10867 any useful feedback, and I want to see what is going on when it
10868 happen. Then it occured to me, I can parse the output from tasksel
10869 when asked to run in test mode, and use that aptitude command line
10870 printed by tasksel then to simulate the tasksel run. I ended up using
10874 export DEBIAN_FRONTEND=noninteractive
10875 cmd="$(in_target tasksel -t --new-install | sed 's/debconf-apt-progress -- //')"
10877 </pre></blockquote>
10879 <p>The content of $cmd is typically something like "
<tt>aptitude -q
10880 --without-recommends -o APT::Install-Recommends=no -y install
10881 ~t^desktop$ ~t^gnome-desktop$ ~t^laptop$ ~pstandard ~prequired
10882 ~pimportant
</tt>", which will install the gnome desktop task, the
10883 laptop task and all packages with priority standard , required and
10884 important, just like tasksel would have done it during
10887 <p>A better approach is probably to extend tasksel to be able to
10888 install packages without using debconf-apt-progress, for use cases
10895 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug</a>.
10900 <div class="padding
"></div>
10902 <div class="entry
">
10903 <div class="title
">
10904 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html
">Lenny->Squeeze upgrades, removals by apt and aptitude</a>
10911 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html
">testing
10912 of Debian upgrades</a> from Lenny to Squeeze continues, and I've
10913 finally made the upgrade logs available from
10914 <a href="http://people.skolelinux.org/pere/debian-upgrade-testing/
">http://people.skolelinux.org/pere/debian-upgrade-testing/</a>.
10915 I am now testing dist-upgrade of Gnome and KDE in a chroot using both
10916 apt and aptitude, and found their differences interesting. This time
10917 I will only focus on their removal plans.</p>
10919 <p>After installing a Gnome desktop and the laptop task, apt-get wants
10920 to remove 72 packages when dist-upgrading from Lenny to Squeeze. The
10921 surprising part is that it want to remove xorg and all
10922 xserver-xorg-video* drivers. Clearly not a good choice, but I am not
10923 sure why. When asking aptitude to do the same, it want to remove 129
10924 packages, but most of them are library packages I suspect are no
10925 longer needed. Both of them want to remove bluetooth packages, which
10926 I do not know. Perhaps these bluetooth packages are obsolete?</p>
10928 <p>For KDE, apt-get want to remove 82 packages, among them kdebase
10929 which seem like a bad idea and xorg the same way as with Gnome. Asking
10930 aptitude for the same, it wants to remove 192 packages, none which are
10931 too surprising.</p>
10933 <p>I guess the removal of xorg during upgrades should be investigated
10934 and avoided, and perhaps others as well. Here are the complete list
10935 of planned removals. The complete logs is available from the URL
10936 above. Note if you want to repeat these tests, that the upgrade test
10937 for kde+apt-get hung in the tasksel setup because of dpkg asking
10938 conffile questions. No idea why. I worked around it by using
10939 '<tt>echo >> /proc/<em>pidofdpkg</em>/fd/0</tt>' to tell dpkg to
10942 <p><b>apt-get gnome 72</b>
10943 <br>bluez-gnome cupsddk-drivers deskbar-applet gnome
10944 gnome-desktop-environment gnome-network-admin gtkhtml3.14
10945 iceweasel-gnome-support libavcodec51 libdatrie0 libgdl-1-0
10946 libgnomekbd2 libgnomekbdui2 libmetacity0 libslab0 libxcb-xlib0
10947 nautilus-cd-burner python-gnome2-desktop python-gnome2-extras
10948 serpentine swfdec-mozilla update-manager xorg xserver-xorg
10949 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
10950 xserver-xorg-input-kbd xserver-xorg-input-mouse
10951 xserver-xorg-input-synaptics xserver-xorg-input-wacom
10952 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
10953 xserver-xorg-video-ati xserver-xorg-video-chips
10954 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
10955 xserver-xorg-video-dummy xserver-xorg-video-fbdev
10956 xserver-xorg-video-glint xserver-xorg-video-i128
10957 xserver-xorg-video-i740 xserver-xorg-video-imstt
10958 xserver-xorg-video-intel xserver-xorg-video-mach64
10959 xserver-xorg-video-mga xserver-xorg-video-neomagic
10960 xserver-xorg-video-nsc xserver-xorg-video-nv
10961 xserver-xorg-video-openchrome xserver-xorg-video-r128
10962 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
10963 xserver-xorg-video-rendition xserver-xorg-video-s3
10964 xserver-xorg-video-s3virge xserver-xorg-video-savage
10965 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
10966 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
10967 xserver-xorg-video-tga xserver-xorg-video-trident
10968 xserver-xorg-video-tseng xserver-xorg-video-v4l
10969 xserver-xorg-video-vesa xserver-xorg-video-vga
10970 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9
10971 xulrunner-1.9-gnome-support</p>
10973 <p><b>aptitude gnome 129</b>
10975 <br>bluez-gnome bluez-utils cpp-4.3 cupsddk-drivers dhcdbd
10976 djvulibre-desktop finger gnome-app-install gnome-mount
10977 gnome-network-admin gnome-spell gnome-vfs-obexftp
10978 gnome-volume-manager gstreamer0.10-gnomevfs gtkhtml3.14 libao2
10979 libavahi-compat-libdnssd1 libavahi-core5 libavcodec51 libbluetooth2
10980 libcamel1.2-11 libcdio7 libcucul0 libcupsys2 libcurl3 libdatrie0
10981 libdirectfb-1.0-0 libdvdread3 libedataserver1.2-9 libeel2-2.20
10982 libeel2-data libepc-1.0-1 libepc-ui-1.0-1 libfaad0 libgail-common
10983 libgd2-noxpm libgda3-3 libgda3-common libgdl-1-0 libgdl-1-common
10984 libggz2 libggzcore9 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0
10985 libgnomecups1.0-1 libgnomekbd2 libgnomekbdui2 libgnomeprint2.2-0
10986 libgnomeprint2.2-data libgnomeprintui2.2-0 libgnomeprintui2.2-common
10987 libgnomevfs2-bin libgpod3 libgraphviz4 libgtkhtml2-0
10988 libgtksourceview-common libgtksourceview1.0-0 libgucharmap6
10989 libhesiod0 libicu38 libiw29 libkpathsea4 libltdl3 libmagick++10
10990 libmagick10 libmalaga7 libmetacity0 libmtp7 libmysqlclient15off
10991 libnautilus-burn4 libneon27 libnm-glib0 libnm-util0 libopal-2.2
10992 libosp5 libparted1.8-10 libpoppler-glib3 libpoppler3 libpt-1.10.10
10993 libpt-1.10.10-plugins-alsa libpt-1.10.10-plugins-v4l libraw1394-8
10994 libsensors3 libslab0 libsmbios2 libsoup2.2-8 libssh2-1
10995 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1 libtotem-plparser10
10996 libtrackerclient0 libxalan2-java libxalan2-java-gcj libxcb-xlib0
10997 libxerces2-java libxerces2-java-gcj libxklavier12 libxtrap6
10998 libxxf86misc1 libzephyr3 mysql-common nautilus-cd-burner
10999 openoffice.org-writer2latex openssl-blacklist p7zip
11000 python-4suite-xml python-eggtrayicon python-gnome2-desktop
11001 python-gnome2-extras python-gtkhtml2 python-gtkmozembed
11002 python-numeric python-sexy serpentine svgalibg1 swfdec-gnome
11003 swfdec-mozilla totem-gstreamer update-manager wodim
11004 xserver-xorg-video-cyrix xserver-xorg-video-imstt
11005 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
11008 <p><b>apt-get kde 82</b>
11010 <br>cupsddk-drivers karm kaudiocreator kcoloredit kcontrol kde kde-core
11011 kdeaddons kdeartwork kdebase kdebase-bin kdebase-bin-kde3
11012 kdebase-kio-plugins kdesktop kdeutils khelpcenter kicker
11013 kicker-applets knewsticker kolourpaint konq-plugins konqueror korn
11014 kpersonalizer kscreensaver ksplash libavcodec51 libdatrie0 libkiten1
11015 libxcb-xlib0 quanta superkaramba texlive-base-bin xorg xserver-xorg
11016 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
11017 xserver-xorg-input-kbd xserver-xorg-input-mouse
11018 xserver-xorg-input-synaptics xserver-xorg-input-wacom
11019 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
11020 xserver-xorg-video-ati xserver-xorg-video-chips
11021 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
11022 xserver-xorg-video-dummy xserver-xorg-video-fbdev
11023 xserver-xorg-video-glint xserver-xorg-video-i128
11024 xserver-xorg-video-i740 xserver-xorg-video-imstt
11025 xserver-xorg-video-intel xserver-xorg-video-mach64
11026 xserver-xorg-video-mga xserver-xorg-video-neomagic
11027 xserver-xorg-video-nsc xserver-xorg-video-nv
11028 xserver-xorg-video-openchrome xserver-xorg-video-r128
11029 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
11030 xserver-xorg-video-rendition xserver-xorg-video-s3
11031 xserver-xorg-video-s3virge xserver-xorg-video-savage
11032 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
11033 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
11034 xserver-xorg-video-tga xserver-xorg-video-trident
11035 xserver-xorg-video-tseng xserver-xorg-video-v4l
11036 xserver-xorg-video-vesa xserver-xorg-video-vga
11037 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9</p>
11039 <p><b>aptitude kde 192</b>
11040 <br>bluez-utils cpp-4.3 cupsddk-drivers cvs dcoprss dhcdbd
11041 djvulibre-desktop dosfstools eyesapplet fifteenapplet finger gettext
11042 ghostscript-x imlib-base imlib11 indi kandy karm kasteroids
11043 kaudiocreator kbackgammon kbstate kcoloredit kcontrol kcron kdat
11044 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
11045 kdebase-bin-kde3 kdebase-kio-plugins kdeedu-data
11046 kdegraphics-kfile-plugins kdelirc kdemultimedia-kappfinder-data
11047 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
11048 kdepim-kfile-plugins kdepim-kio-plugins kdeprint kdesktop kdessh
11049 kdict kdnssd kdvi kedit keduca kenolaba kfax kfaxview kfouleggs
11050 kghostview khelpcenter khexedit kiconedit kitchensync klatin
11051 klickety kmailcvt kmenuedit kmid kmilo kmoon kmrml kodo kolourpaint
11052 kooka korn kpager kpdf kpercentage kpf kpilot kpoker kpovmodeler
11053 krec kregexpeditor ksayit ksim ksirc ksirtet ksmiletris ksmserver
11054 ksnake ksokoban ksplash ksvg ksysv ktip ktnef kuickshow kverbos
11055 kview kviewshell kvoctrain kwifimanager kwin kwin4 kworldclock
11056 kxsldbg libakode2 libao2 libarts1-akode libarts1-audiofile
11057 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
11058 libavahi-core5 libavc1394-0 libavcodec51 libbluetooth2
11059 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0 libdatrie0
11060 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
11061 libgail-common libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0
11062 libicu38 libiec61883-0 libindex0 libiw29 libk3b3 libkcal2b libkcddb1
11063 libkdeedu3 libkdepim1a libkgantt0 libkiten1 libkleopatra1 libkmime2
11064 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
11065 libksieve0 libktnef1 liblockdev1 libltdl3 libmagick10 libmimelib1c2a
11066 libmozjs1d libmpcdec3 libneon27 libnm-util0 libopensync0 libpisock9
11067 libpoppler-glib3 libpoppler-qt2 libpoppler3 libraw1394-8 libsmbios2
11068 libssh2-1 libsuitesparse-3.1.0 libtalloc1 libtiff-tools
11069 libxalan2-java libxalan2-java-gcj libxcb-xlib0 libxerces2-java
11070 libxerces2-java-gcj libxtrap6 mpeglib networkstatus
11071 openoffice.org-writer2latex pmount poster psutils quanta quanta-data
11072 superkaramba svgalibg1 tex-common texlive-base texlive-base-bin
11073 texlive-common texlive-doc-base texlive-fonts-recommended
11074 xserver-xorg-video-cyrix xserver-xorg-video-imstt
11075 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
11083 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
11088 <div class="padding
"></div>
11090 <div class="entry
">
11091 <div class="title
">
11092 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html
">Automatic upgrade testing from Lenny to Squeeze</a>
11098 <p>The last few days I have done some upgrade testing in Debian, to
11099 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
11100 have been discovered and reported in the process
11101 (<a href="http://bugs.debian.org/
585410">#585410</a> in nagios3-cgi,
11102 <a href="http://bugs.debian.org/
584879">#584879</a> already fixed in
11103 enscript and <a href="http://bugs.debian.org/
584861">#584861</a> in
11104 kdebase-workspace-data), and to get a more regular testing going on, I
11105 am working on a script to automate the test.</p>
11107 <p>The idea is to create a Lenny chroot and use tasksel to install a
11108 Gnome or KDE desktop installation inside the chroot before upgrading
11109 it. To ensure no services are started in the chroot, a policy-rc.d
11110 script is inserted. To make sure tasksel believe it is to install a
11111 desktop on a laptop, the tasksel tests are replaced in the chroot
11112 (only acceptable because this is a throw-away chroot).</p>
11114 <p>A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
11115 currently always fail because udev refuses to upgrade with the kernel
11116 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
11117 is created. The bug report
11118 <a href="http://bugs.debian.org/
566000">#566000</a> make me suspect
11119 this problem do not trigger in a chroot, but I touch the file anyway
11120 to make sure the upgrade go well. Testing on virtual and real
11121 hardware have failed me because of udev so far, and creating this file
11122 do the trick in such settings anyway. This is a
11123 <a href="http://www.linuxquestions.org/questions/debian-
26/failed-dist-upgrade-due-to-udev-config_sysfs_deprecated-nonsense-
804130/
">known
11124 issue</a> and the current udev behaviour is intended by the udev
11125 maintainer because he lack the resources to rewrite udev to keep
11126 working with old kernels or something like that. I really wish the
11127 udev upstream would keep udev backwards compatible, to avoid such
11128 upgrade problem, but given that they fail to do so, I guess
11129 documenting the way out of this mess is the best option we got for
11130 Debian Squeeze.</p>
11132 <p>Anyway, back to the task at hand, testing upgrades. This test
11133 script, which I call <tt>upgrade-test</tt> for now, is doing the
11149 exec
< /dev/null
11151 mirror=http://ftp.skolelinux.org/debian
11152 tmpdir=chroot-$from-upgrade-$to-$desktop
11154 debootstrap $from $tmpdir $mirror
11155 chroot $tmpdir aptitude update
11156 cat
> $tmpdir/usr/sbin/policy-rc.d
<<EOF
11160 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
11162 umount $tmpdir/proc
11164 mount -t proc proc $tmpdir/proc
11165 # Make sure proc is unmounted also on failure
11166 trap exit_cleanup EXIT INT
11168 chroot $tmpdir aptitude -y install debconf-utils
11170 # Make sure tasksel autoselection trigger. It need the test scripts
11171 # to return the correct answers.
11172 echo tasksel tasksel/desktop multiselect $desktop | \
11173 chroot $tmpdir debconf-set-selections
11175 # Include the desktop and laptop task
11176 for test in desktop laptop ; do
11177 echo
> $tmpdir/usr/lib/tasksel/tests/$test
<<EOF
11181 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
11184 DEBIAN_FRONTEND=noninteractive
11185 DEBIAN_PRIORITY=critical
11186 export DEBIAN_FRONTEND DEBIAN_PRIORITY
11187 chroot $tmpdir tasksel --new-install
11189 echo deb $mirror $to main
> $tmpdir/etc/apt/sources.list
11190 chroot $tmpdir aptitude update
11191 touch $tmpdir/etc/udev/kernel-upgrade
11192 chroot $tmpdir aptitude -y dist-upgrade
11194 </pre></blockquote>
11196 <p>I suspect it would be useful to test upgrades with both apt-get and
11197 with aptitude, but I have not had time to look at how they behave
11198 differently so far. I hope to get a cron job running to do the test
11199 regularly and post the result on the web. The Gnome upgrade currently
11200 work, while the KDE upgrade fail because of the bug in
11201 kdebase-workspace-data
</p>
11203 <p>I am not quite sure what kind of extract from the huge upgrade logs
11204 (KDE
167 KiB, Gnome
516 KiB) it make sense to include in this blog
11205 post, so I will refrain from trying. I can report that for Gnome,
11206 aptitude report
760 packages upgraded,
448 newly installed,
129 to
11207 remove and
1 not upgraded and
1024MB need to be downloaded while for
11208 KDE the same numbers are
702 packages upgraded,
507 newly installed,
11209 193 to remove and
0 not upgraded and
1117MB need to be downloaded
</p>
11211 <p>I am very happy to notice that the Gnome desktop + laptop upgrade
11212 is able to migrate to dependency based boot sequencing and parallel
11213 booting without a hitch. Was unsure if there were still bugs with
11214 packages failing to clean up their obsolete init.d script during
11215 upgrades, and no such problem seem to affect the Gnome desktop+laptop
11222 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11227 <div class=
"padding"></div>
11229 <div class=
"entry">
11230 <div class=
"title">
11231 <a href=
"http://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html">Upstart or sysvinit - as init.d scripts see it
</a>
11237 <p>If Debian is to migrate to upstart on Linux, I expect some init.d
11238 scripts to migrate (some of) their operations to upstart job while
11239 keeping the init.d for hurd and kfreebsd. The packages with such
11240 needs will need a way to get their init.d scripts to behave
11241 differently when used with sysvinit and with upstart. Because of
11242 this, I had a look at the environment variables set when a init.d
11243 script is running under upstart, and when it is not.
</p>
11245 <p>With upstart, I notice these environment variables are set when a
11246 script is started from rcS.d/ (ignoring some irrelevant ones like
11255 UPSTART_EVENTS=startup
11257 UPSTART_JOB=rc-sysinit
11258 </pre></blockquote>
11260 <p>With sysvinit, these environment variables are set for the same
11264 INIT_VERSION=sysvinit-
2.88
11269 </pre></blockquote>
11271 <p>The RUNLEVEL and PREVLEVEL environment variables passed on from
11272 sysvinit are not set by upstart. Not sure if it is intentional or not
11273 to not be compatible with sysvinit in this regard.
</p>
11275 <p>For scripts needing to behave differently when upstart is used,
11276 looking for the UPSTART_JOB environment variable seem to be a good
11283 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11288 <div class=
"padding"></div>
11290 <div class=
"entry">
11291 <div class=
"title">
11292 <a href=
"http://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html">A manual for standards wars...
</a>
11299 <a href=
"http://feedproxy.google.com/~r/robweir/antic-atom/~3/QzU4RgoAGMg/weekly-links-10.html">blog
11300 of Rob Weir
</a> I came across the very interesting essay named
11301 <a href=
"http://faculty.haas.berkeley.edu/shapiro/wars.pdf">The Art of
11302 Standards Wars
</a> (PDF
25 pages). I recommend it for everyone
11303 following the standards wars of today.
</p>
11309 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
11314 <div class=
"padding"></div>
11316 <div class=
"entry">
11317 <div class=
"title">
11318 <a href=
"http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html">Sitesummary tip: Listing computer hardware models used at site
</a>
11324 <p>When using sitesummary at a site to track machines, it is possible
11325 to get a list of the machine types in use thanks to the DMI
11326 information extracted from each machine. The script to do so is
11327 included in the sitesummary package, and here is example output from
11328 the Skolelinux build servers:
</p>
11331 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
11333 Dell Computer Corporation
1
11336 eserver xSeries
345 -[
8670M1X]-
1
11340 </pre></blockquote>
11342 <p>The quality of the report depend on the quality of the DMI tables
11343 provided in each machine. Here there are Intel machines without model
11344 information listed with Intel as vendor and no model, and virtual Xen
11345 machines listed as [no-dmi-info]. One can add -l as a command line
11346 option to list the individual machines.
</p>
11348 <p>A larger list is
11349 <a href=
"http://narvikskolen.no/sitesummary/">available from the the
11350 city of Narvik
</a>, which uses Skolelinux on all their shools and also
11351 provide the basic sitesummary report publicly. In their report there
11352 are ~
1400 machines. I know they use both Ubuntu and Skolelinux on
11353 their machines, and as sitesummary is available in both distributions,
11354 it is trivial to get all of them to report to the same central
11361 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary
</a>.
11366 <div class=
"padding"></div>
11368 <div class=
"entry">
11369 <div class=
"title">
11370 <a href=
"http://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html">KDM fail at boot with NVidia cards - and no one try to fix it?
</a>
11376 <p>It is strange to watch how a bug in Debian causing KDM to fail to
11377 start at boot when an NVidia video card is used is handled. The
11378 problem seem to be that the nvidia X.org driver uses a long time to
11379 initialize, and this duration is longer than kdm is configured to
11382 <p>I came across two bugs related to this issue,
11383 <a href=
"http://bugs.debian.org/583312">#
583312</a> initially filed
11384 against initscripts and passed on to nvidia-glx when it became obvious
11385 that the nvidia drivers were involved, and
11386 <a href=
"http://bugs.debian.org/524751">#
524751</a> initially filed against
11387 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.
</p>
11389 <p>To me, it seem that no-one is interested in actually solving the
11390 problem nvidia video card owners experience and make sure the Debian
11391 distribution work out of the box for these users. The nvidia driver
11392 maintainers expect kdm to be set up to wait longer, while kdm expect
11393 the nvidia driver maintainers to fix the driver to start faster, and
11394 while they wait for each other I guess the users end up switching to a
11395 distribution that work for them. I have no idea what the solution is,
11396 but I am pretty sure that waiting for each other is not it.
</p>
11398 <p>I wonder why we end up handling bugs this way.
</p>
11404 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11409 <div class=
"padding"></div>
11411 <div class=
"entry">
11412 <div class=
"title">
11413 <a href=
"http://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html">Parallellized boot seem to hold up well in Debian/testing
</a>
11419 <p>A few days ago, parallel booting was enabled in Debian/testing.
11420 The feature seem to hold up pretty well, but three fairly serious
11421 issues are known and should be solved:
11425 <li>The wicd package seen to
11426 <a href=
"http://bugs.debian.org/508289">break NFS mounting
</a> and
11427 <a href=
"http://bugs.debian.org/581586">network setup
</a> when
11428 parallel booting is enabled. No idea why, but the wicd maintainer
11429 seem to be on the case.
</li>
11431 <li>The nvidia X driver seem to
11432 <a href=
"http://bugs.debian.org/583312">have a race condition
</a>
11433 triggered more easily when parallel booting is in effect. The
11434 maintainer is on the case.
</li>
11436 <li>The sysv-rc package fail to properly enable dependency based boot
11437 sequencing (the shutdown is broken) when old file-rc users
11438 <a href=
"http://bugs.debian.org/575080">try to switch back
</a> to
11439 sysv-rc. One way to solve it would be for file-rc to create
11440 /etc/init.d/.legacy-bootordering, and another is to try to make
11441 sysv-rc more robust. Will investigate some more and probably upload a
11442 workaround in sysv-rc to help those trying to move from file-rc to
11443 sysv-rc get a working shutdown.
</li>
11447 <p>All in all not many surprising issues, and all of them seem
11448 solvable before Squeeze is released. In addition to these there are
11449 some packages with bugs in their dependencies and run level settings,
11450 which I expect will be fixed in a reasonable time span.
</p>
11452 <p>If you report any problems with dependencies in init.d scripts to
11453 the BTS, please usertag the report to get it to show up at
11454 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
11455 list of usertagged bugs related to this
</a>.
</p>
11457 <p>Update: Correct bug number to file-rc issue.
</p>
11463 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11468 <div class=
"padding"></div>
11470 <div class=
"entry">
11471 <div class=
"title">
11472 <a href=
"http://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html">More flexible firmware handling in debian-installer
</a>
11478 <p>After a long break from debian-installer development, I finally
11479 found time today to return to the project. Having to spend less time
11480 working dependency based boot in debian, as it is almost complete now,
11481 definitely helped freeing some time.
</p>
11483 <p>A while back, I ran into a problem while working on Debian Edu. We
11484 include some firmware packages on the Debian Edu CDs, those needed to
11485 get disk and network controllers working. Without having these
11486 firmware packages available during installation, it is impossible to
11487 install Debian Edu on the given machine, and because our target group
11488 are non-technical people, asking them to provide firmware packages on
11489 an external medium is a support pain. Initially, I expected it to be
11490 enough to include the firmware packages on the CD to get
11491 debian-installer to find and use them. This proved to be wrong.
11492 Next, I hoped it was enough to symlink the relevant firmware packages
11493 to some useful location on the CD (tried /cdrom/ and
11494 /cdrom/firmware/). This also proved to not work, and at this point I
11495 found time to look at the debian-installer code to figure out what was
11498 <p>The firmware loading code is in the hw-detect package, and a closer
11499 look revealed that it would only look for firmware packages outside
11500 the installation media, so the CD was never checked for firmware
11501 packages. It would only check USB sticks, floppies and other
11502 "external" media devices. Today I changed it to also look in the
11503 /cdrom/firmware/ directory on the mounted CD or DVD, which should
11504 solve the problem I ran into with Debian edu. I also changed it to
11505 look in /firmware/, to make sure the installer also find firmware
11506 provided in the initrd when booting the installer via PXE, to allow us
11507 to provide the same feature in the PXE setup included in Debian
11510 <p>To make sure firmware deb packages with a license questions are not
11511 activated without asking if the license is accepted, I extended
11512 hw-detect to look for preinst scripts in the firmware packages, and
11513 run these before activating the firmware during installation. The
11514 license question is asked using debconf in the preinst, so this should
11515 solve the issue for the firmware packages I have looked at so far.
</p>
11517 <p>If you want to discuss the details of these features, please
11518 contact us on debian-boot@lists.debian.org.
</p>
11524 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11529 <div class=
"padding"></div>
11531 <div class=
"entry">
11532 <div class=
"title">
11533 <a href=
"http://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html">Parallellized boot is now the default in Debian/unstable
</a>
11539 <p>Since this evening, parallel booting is the default in
11540 Debian/unstable for machines using dependency based boot sequencing.
11541 Apparently the testing of concurrent booting has been wider than
11542 expected, if I am to believe the
11543 <a href=
"http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
11544 on debian-devel@
</a>, and I concluded a few days ago to move forward
11545 with the feature this weekend, to give us some time to detect any
11546 remaining problems before Squeeze is frozen. If serious problems are
11547 detected, it is simple to change the default back to sequential boot.
11548 The upload of the new sysvinit package also activate a new upstream
11551 More information about
11552 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
11553 based boot sequencing
</a> is available from the Debian wiki. It is
11554 currently possible to disable parallel booting when one run into
11555 problems caused by it, by adding this line to /etc/default/rcS:
</p>
11559 </pre></blockquote>
11561 <p>If you report any problems with dependencies in init.d scripts to
11562 the BTS, please usertag the report to get it to show up at
11563 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
11564 list of usertagged bugs related to this
</a>.
</p>
11570 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11575 <div class=
"padding"></div>
11577 <div class=
"entry">
11578 <div class=
"title">
11579 <a href=
"http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html">Sitesummary tip: Listing MAC address of all clients
</a>
11585 <p>In the recent Debian Edu versions, the
11586 <a href=
"http://wiki.debian.org/DebianEdu/HowTo/SiteSummary">sitesummary
11587 system
</a> is used to keep track of the machines in the school
11588 network. Each machine will automatically report its status to the
11589 central server after boot and once per night. The network setup is
11590 also reported, and using this information it is possible to get the
11591 MAC address of all network interfaces in the machines. This is useful
11592 to update the DHCP configuration.
</p>
11594 <p>To give some idea how to use sitesummary, here is a one-liner to
11595 ist all MAC addresses of all machines reporting to sitesummary. Run
11596 this on the collector host:
</p>
11599 perl -MSiteSummary -e 'for_all_hosts(sub { print join(" ", get_macaddresses(shift)), "\n"; });'
11600 </pre></blockquote>
11602 <p>This will list all MAC addresses assosiated with all machine, one
11603 line per machine and with space between the MAC addresses.
</p>
11605 <p>To allow system administrators easier job at adding static DHCP
11606 addresses for hosts, it would be possible to extend this to fetch
11607 machine information from sitesummary and update the DHCP and DNS
11608 tables in LDAP using this information. Such tool is unfortunately not
11615 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary
</a>.
11620 <div class=
"padding"></div>
11622 <div class=
"entry">
11623 <div class=
"title">
11624 <a href=
"http://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html">systemd, an interesting alternative to upstart
</a>
11630 <p>The last few days a new boot system called
11631 <a href=
"http://www.freedesktop.org/wiki/Software/systemd">systemd
</a>
11633 <a href=
"http://0pointer.de/blog/projects/systemd.html">introduced
</a>
11635 to the free software world. I have not yet had time to play around
11636 with it, but it seem to be a very interesting alternative to
11637 <a href=
"http://upstart.ubuntu.com/">upstart
</a>, and might prove to be
11638 a good alternative for Debian when we are able to switch to an event
11639 based boot system. Tollef is
11640 <a href=
"http://bugs.debian.org/580814">in the process
</a> of getting
11641 systemd into Debian, and I look forward to seeing how well it work. I
11642 like the fact that systemd handles init.d scripts with dependency
11643 information natively, allowing them to run in parallel where upstart
11644 at the moment do not.
</p>
11646 <p>Unfortunately do systemd have the same problem as upstart regarding
11647 platform support. It only work on recent Linux kernels, and also need
11648 some new kernel features enabled to function properly. This means
11649 kFreeBSD and Hurd ports of Debian will need a port or a different boot
11650 system. Not sure how that will be handled if systemd proves to be the
11653 <p>In the mean time, based on the
11654 <a href=
"http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
11655 on debian-devel@
</a> regarding parallel booting in Debian, I have
11656 decided to enable full parallel booting as the default in Debian as
11657 soon as possible (probably this weekend or early next week), to see if
11658 there are any remaining serious bugs in the init.d dependencies. A
11659 new version of the sysvinit package implementing this change is
11660 already in experimental. If all go well, Squeeze will be released
11661 with parallel booting enabled by default.
</p>
11667 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11672 <div class=
"padding"></div>
11674 <div class=
"entry">
11675 <div class=
"title">
11676 <a href=
"http://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html">Parallellizing the boot in Debian Squeeze - ready for wider testing
</a>
11682 <p>These days, the init.d script dependencies in Squeeze are quite
11683 complete, so complete that it is actually possible to run all the
11684 init.d scripts in parallell based on these dependencies. If you want
11685 to test your Squeeze system, make sure
11686 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
11687 based boot sequencing
</a> is enabled, and add this line to
11688 /etc/default/rcS:
</p>
11691 CONCURRENCY=makefile
11692 </pre></blockquote>
11694 <p>That is it. It will cause sysv-rc to use the startpar tool to run
11695 scripts in parallel using the dependency information stored in
11696 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
11697 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
11698 to try to start the kdm and gdm scripts as early as possible, and will
11699 start the facilities required by kdm or gdm as early as possible to
11700 make this happen.
</p>
11702 <p>Give it a try, and see if you like the result. If some services
11703 fail to start properly, it is most likely because they have incomplete
11704 init.d script dependencies in their startup script (or some of their
11705 dependent scripts have incomplete dependencies). Report bugs and get
11706 the package maintainers to fix it. :)
</p>
11708 <p>Running scripts in parallel could be the default in Debian when we
11709 manage to get the init.d script dependencies complete and correct. I
11710 expect we will get there in Squeeze+
1, if we get manage to test and
11711 fix the remaining issues.
</p>
11713 <p>If you report any problems with dependencies in init.d scripts to
11714 the BTS, please usertag the report to get it to show up at
11715 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
11716 list of usertagged bugs related to this
</a>.
</p>
11722 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11727 <div class=
"padding"></div>
11729 <div class=
"entry">
11730 <div class=
"title">
11731 <a href=
"http://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html">Debian has switched to dependency based boot sequencing
</a>
11737 <p>Since this evening, with the upload of sysvinit version
2.87dsf-
2,
11738 and the upload of insserv version
1.12.0-
10 yesterday, Debian unstable
11739 have been migrated to using dependency based boot sequencing. This
11740 conclude work me and others have been doing for the last three days.
11741 It feels great to see this finally part of the default Debian
11742 installation. Now we just need to weed out the last few problems that
11743 are bound to show up, to get everything ready for Squeeze.
</p>
11745 <p>The next step is migrating /sbin/init from sysvinit to upstart, and
11746 fixing the more fundamental problem of handing the event based
11747 non-predictable kernel in the early boot.
</p>
11753 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11758 <div class=
"padding"></div>
11760 <div class=
"entry">
11761 <div class=
"title">
11762 <a href=
"http://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html">Taking over sysvinit development
</a>
11768 <p>After several years of frustration with the lack of activity from
11769 the existing sysvinit upstream developer, I decided a few weeks ago to
11770 take over the package and become the new upstream. The number of
11771 patches to track for the Debian package was becoming a burden, and the
11772 lack of synchronization between the distribution made it hard to keep
11773 the package up to date.
</p>
11775 <p>On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
11776 and my Debian co-maintainer Kel Modderman. About
10 days ago, I made
11777 a new upstream tarball with version number
2.87dsf (for Debian, SuSe
11778 and Fedora), based on the patches currently in use in these
11779 distributions. We Debian maintainers plan to move to this tarball as
11780 the new upstream as soon as we find time to do the merge. Since the
11781 new tarball was created, we agreed with Werner at SuSe to make a new
11782 upstream project at
<a href=
"http://savannah.nongnu.org/">Savannah
</a>, and continue
11783 development there. The project is registered and currently waiting
11784 for approval by the Savannah administrators, and as soon as it is
11785 approved, we will import the old versions from svn and continue
11786 working on the future release.
</p>
11788 <p>It is a bit ironic that this is done now, when some of the involved
11789 distributions are moving to upstart as a syvinit replacement.
</p>
11795 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11800 <div class=
"padding"></div>
11802 <div class=
"entry">
11803 <div class=
"title">
11804 <a href=
"http://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html">Debian boots quicker and quicker
</a>
11810 <p>I spent Monday and tuesday this week in London with a lot of the
11811 people involved in the boot system on Debian and Ubuntu, to see if we
11812 could find more ways to speed up the boot system. This was an Ubuntu
11814 <a href=
"https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint">developer
11815 gathering
</a>. It was quite productive. We also discussed the future
11816 of boot systems, and ways to handle the increasing number of boot
11817 issues introduced by the Linux kernel becoming more and more
11818 asynchronous and event base. The Ubuntu approach using udev and
11819 upstart might be a good way forward. Time will show.
</p>
11821 <p>Anyway, there are a few ways at the moment to speed up the boot
11822 process in Debian. All of these should be applied to get a quick
11827 <li>Use dash as /bin/sh.
</li>
11829 <li>Disable the init.d/hwclock*.sh scripts and make sure the hardware
11830 clock is in UTC.
</li>
11832 <li>Install and activate the insserv package to enable
11833 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
11834 based boot sequencing
</a>, and enable concurrent booting.
</li>
11838 These points are based on the Google summer of code work done by
11839 <a href=
"http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/">Carlos
11842 <p>Support for makefile-style concurrency during boot was uploaded to
11843 unstable yesterday. When we tested it, we were able to cut
6 seconds
11844 from the boot sequence. It depend on very correct dependency
11845 declaration in all init.d scripts, so I expect us to find edge cases
11846 where the dependences in some scripts are slightly wrong when we start
11849 <p>On our IRC channel for this effort, #pkg-sysvinit, a new idea was
11850 introduced by Raphael Geissert today, one that could affect the
11851 startup speed as well. Instead of starting some scripts concurrently
11852 from rcS.d/ and another set of scripts from rc2.d/, it would be
11853 possible to run a of them in the same process. A quick way to test
11854 this would be to enable insserv and run 'mv /etc/rc2.d/S* /etc/rcS.d/;
11855 insserv'. Will need to test if that work. :)
</p>
11861 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11866 <div class=
"padding"></div>
11868 <div class=
"entry">
11869 <div class=
"title">
11870 <a href=
"http://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html">BSAs påstander om piratkopiering møter motstand
</a>
11876 <p>Hvert år de siste årene har BSA, lobbyfronten til de store
11877 programvareselskapene som Microsoft og Apple, publisert en rapport der
11878 de gjetter på hvor mye piratkopiering påfører i tapte inntekter i
11879 ulike land rundt om i verden. Resultatene er tendensiøse. For noen
11881 <a href=
"http://global.bsa.org/globalpiracy2008/studies/globalpiracy2008.pdf">siste
11882 rapport
</a>, og det er flere kritiske kommentarer publisert de siste
11883 dagene. Et spesielt interessant kommentar fra Sverige,
11884 <a href=
"http://www.idg.se/2.1085/1.229795/bsa-hoftade-sverigesiffror">BSA
11885 höftade Sverigesiffror
</a>, oppsummeres slik:
</p>
11888 I sin senaste rapport slår BSA fast att
25 procent av all mjukvara i
11889 Sverige är piratkopierad. Det utan att ha pratat med ett enda svenskt
11890 företag. "Man bör nog kanske inte se de här siffrorna som helt
11891 exakta", säger BSAs Sverigechef John Hugosson.
11894 <p>Mon tro om de er like metodiske når de gjetter på andelen piratkopiering i Norge? To andre kommentarer er
<a
11895 href=
"http://www.vnunet.com/vnunet/comment/2242134/bsa-piracy-figures-shot-reality">BSA
11896 piracy figures need a shot of reality
</a> og
<a
11897 href=
"http://www.michaelgeist.ca/content/view/3958/125/">Does The WIPO
11898 Copyright Treaty Work?
</a></p>
11900 <p>Fant lenkene via
<a
11901 href=
"http://tech.slashdot.org/article.pl?sid=09/05/17/1632242">oppslag
11902 på Slashdot
</a>.
</p>
11908 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>.
11913 <div class=
"padding"></div>
11915 <div class=
"entry">
11916 <div class=
"title">
11917 <a href=
"http://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html">IDG mener linux i servermarkedet vil vokse med
21% i
2009</a>
11924 <a href=
"http://news.cnet.com/8301-13505_3-10216873-16.html">interessante
11925 tall
</a> fra IDG om utviklingen av linuxservermarkedet. Fikk meg til
11926 å tenke på antall tjenermaskiner ved Universitetet i Oslo der jeg
11927 jobber til daglig. En rask opptelling forteller meg at vi har
490
11928 (
61%) fysiske unix-tjener (mest linux men også noen solaris) og
196
11929 (
25%) windowstjenere, samt
112 (
14%) virtuelle unix-tjenere. Med den
11930 bakgrunnskunnskapen kan jeg godt tro at IDG er inne på noe.
</p>
11936 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11941 <div class=
"padding"></div>
11943 <div class=
"entry">
11944 <div class=
"title">
11945 <a href=
"http://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html">Kryptert harddisk - naturligvis
</a>
11951 <p><a href=
"http://www.dagensit.no/trender/article1658676.ece">Dagens
11952 IT melder
</a> at Intel hevder at det er dyrt å miste en datamaskin,
11953 når en tar tap av arbeidstid, fortrolige dokumenter,
11954 personopplysninger og alt annet det innebærer. Det er ingen tvil om
11955 at det er en kostbar affære å miste sin datamaskin, og det er årsaken
11956 til at jeg har kryptert harddisken på både kontormaskinen og min
11957 bærbare. Begge inneholder personopplysninger jeg ikke ønsker skal
11958 komme på avveie, den første informasjon relatert til jobben min ved
11959 Universitetet i Oslo, og den andre relatert til blant annet
11960 foreningsarbeide. Kryptering av diskene gjør at det er lite
11961 sannsynlig at dophoder som kan finne på å rappe maskinene får noe ut
11962 av dem. Maskinene låses automatisk etter noen minutter uten bruk,
11963 og en reboot vil gjøre at de ber om passord før de vil starte opp.
11964 Jeg bruker Debian på begge maskinene, og installasjonssystemet der
11965 gjør det trivielt å sette opp krypterte disker. Jeg har LVM på toppen
11966 av krypterte partisjoner, slik at alt av datapartisjoner er kryptert.
11967 Jeg anbefaler alle å kryptere diskene på sine bærbare. Kostnaden når
11968 det er gjort slik jeg gjør det er minimale, og gevinstene er
11969 betydelige. En bør dog passe på passordet. Hvis det går tapt, må
11970 maskinen reinstalleres og alt er tapt.
</p>
11972 <p>Krypteringen vil ikke stoppe kompetente angripere som f.eks. kjøler
11973 ned minnebrikkene før maskinen rebootes med programvare for å hente ut
11974 krypteringsnøklene. Kostnaden med å forsvare seg mot slike angripere
11975 er for min del høyere enn gevinsten. Jeg tror oddsene for at
11976 f.eks. etteretningsorganisasjoner har glede av å titte på mine
11977 maskiner er minimale, og ulempene jeg ville oppnå ved å forsøke å
11978 gjøre det vanskeligere for angripere med kompetanse og ressurser er
11985 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
11990 <div class=
"padding"></div>
11992 <div class=
"entry">
11993 <div class=
"title">
11994 <a href=
"http://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html">Two projects that have improved the quality of free software a lot
</a>
12000 <p>There are two software projects that have had huge influence on the
12001 quality of free software, and I wanted to mention both in case someone
12002 do not yet know them.
</p>
12004 <p>The first one is
<a href=
"http://valgrind.org/">valgrind
</a>, a
12005 tool to detect and expose errors in the memory handling of programs.
12006 It is easy to use, all one need to do is to run 'valgrind program',
12007 and it will report any problems on stdout. It is even better if the
12008 program include debug information. With debug information, it is able
12009 to report the source file name and line number where the problem
12010 occurs. It can report things like 'reading past memory block in file
12011 X line N, the memory block was allocated in file Y, line M', and
12012 'using uninitialised value in control logic'. This tool has made it
12013 trivial to investigate reproducible crash bugs in programs, and have
12014 reduced the number of this kind of bugs in free software a lot.
12016 <p>The second one is
12017 <a href=
"http://en.wikipedia.org/wiki/Coverity">Coverity
</a> which is
12018 a source code checker. It is able to process the source of a program
12019 and find problems in the logic without running the program. It
12020 started out as the Stanford Checker and became well known when it was
12021 used to find bugs in the Linux kernel. It is now a commercial tool
12022 and the company behind it is running
12023 <a href=
"http://www.scan.coverity.com/">a community service
</a> for the
12024 free software community, where a lot of free software projects get
12025 their source checked for free. Several thousand defects have been
12026 found and fixed so far. It can find errors like 'lock L taken in file
12027 X line N is never released if exiting in line M', or 'the code in file
12028 Y lines O to P can never be executed'. The projects included in the
12029 community service project have managed to get rid of a lot of
12030 reliability problems thanks to Coverity.
</p>
12032 <p>I believe tools like this, that are able to automatically find
12033 errors in the source, are vital to improve the quality of software and
12034 make sure we can get rid of the crashing and failing software we are
12035 surrounded by today.
</p>
12041 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>.
12046 <div class=
"padding"></div>
12048 <div class=
"entry">
12049 <div class=
"title">
12050 <a href=
"http://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html">No patch is not better than a useless patch
</a>
12057 <a href=
"http://blog.technologeek.org/2009/04/12/214">claim that no
12058 patch is better than a useless patch
</a>. I completely disagree, as a
12059 patch allow one to discuss a concrete and proposed solution, and also
12060 prove that the issue at hand is important enough for someone to spent
12061 time on fixing it. No patch do not provide any of these positive
12068 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12073 <div class=
"padding"></div>
12075 <div class=
"entry">
12076 <div class=
"title">
12077 <a href=
"http://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html">Standardize on protocols and formats, not vendors and applications
</a>
12083 <p>Where I work at the University of Oslo, one decision stand out as a
12084 very good one to form a long lived computer infrastructure. It is the
12085 simple one, lost by many in todays computer industry: Standardize on
12086 open network protocols and open exchange/storage formats, not applications.
12087 Applications come and go, while protocols and files tend to stay, and
12088 thus one want to make it easy to change application and vendor, while
12089 avoiding conversion costs and locking users to a specific platform or
12092 <p>This approach make it possible to replace the client applications
12093 independently of the server applications. One can even allow users to
12094 use several different applications as long as they handle the selected
12095 protocol and format. In the normal case, only one client application
12096 is recommended and users only get help if they choose to use this
12097 application, but those that want to deviate from the easy path are not
12098 blocked from doing so.
</p>
12100 <p>It also allow us to replace the server side without forcing the
12101 users to replace their applications, and thus allow us to select the
12102 best server implementation at any moment, when scale and resouce
12103 requirements change.
</p>
12105 <p>I strongly recommend standardizing - on open network protocols and
12106 open formats, but I would never recommend standardizing on a single
12107 application that do not use open network protocol or open formats.
</p>
12113 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
12118 <div class=
"padding"></div>
12120 <div class=
"entry">
12121 <div class=
"title">
12122 <a href=
"http://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html">Returning from Skolelinux developer gathering
</a>
12128 <p>I'm sitting on the train going home from this weekends Debian
12129 Edu/Skolelinux development gathering. I got a bit done tuning the
12130 desktop, and looked into the dynamic service location protocol
12131 implementation avahi. It look like it could be useful for us. Almost
12132 30 people participated, and I believe it was a great environment to
12133 get to know the Skolelinux system. Walter Bender, involved in the
12134 development of the Sugar educational platform, presented his stuff and
12135 also helped me improve my OLPC installation. He also showed me that
12136 his Turtle Art application can be used in standalone mode, and we
12137 agreed that I would help getting it packaged for Debian. As a
12138 standalone application it would be great for Debian Edu. We also
12139 tried to get the video conferencing working with two OLPCs, but that
12140 proved to be too hard for us. The application seem to need more work
12141 before it is ready for me. I look forward to getting home and relax
12148 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12153 <div class=
"padding"></div>
12155 <div class=
"entry">
12156 <div class=
"title">
12157 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">Time for new LDAP schemas replacing RFC
2307?
</a>
12163 <p>The state of standardized LDAP schemas on Linux is far from
12164 optimal. There is RFC
2307 documenting one way to store NIS maps in
12165 LDAP, and a modified version of this normally called RFC
2307bis, with
12166 some modifications to be compatible with Active Directory. The RFC
12167 specification handle the content of a lot of system databases, but do
12168 not handle DNS zones and DHCP configuration.
</p>
12170 <p>In
<a href=
"http://www.skolelinux.org/">Debian Edu/Skolelinux
</a>,
12171 we would like to store information about users, SMB clients/hosts,
12172 filegroups, netgroups (users and hosts), DHCP and DNS configuration,
12173 and LTSP configuration in LDAP. These objects have a lot in common,
12174 but with the current LDAP schemas it is not possible to have one
12175 object per entity. For example, one need to have at least three LDAP
12176 objects for a given computer, one with the SMB related stuff, one with
12177 DNS information and another with DHCP information. The schemas
12178 provided for DNS and DHCP are impossible to combine into one LDAP
12179 object. In addition, it is impossible to implement quick queries for
12180 netgroup membership, because of the way NIS triples are implemented.
12181 It just do not scale. I believe it is time for a few RFC
12182 specifications to cleam up this mess.
</p>
12184 <p>I would like to have one LDAP object representing each computer in
12185 the network, and this object can then keep the SMB (ie host key), DHCP
12186 (mac address/name) and DNS (name/IP address) settings in one place.
12187 It need to be efficently stored to make sure it scale well.
</p>
12189 <p>I would also like to have a quick way to map from a user or
12190 computer and to the net group this user or computer is a member.
</p>
12192 <p>Active Directory have done a better job than unix heads like myself
12193 in this regard, and the unix side need to catch up. Time to start a
12194 new IETF work group?
</p>
12200 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12205 <div class=
"padding"></div>
12207 <div class=
"entry">
12208 <div class=
"title">
12209 <a href=
"http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html">Endelig er Debian Lenny gitt ut
</a>
12215 <p>Endelig er
<a href=
"http://www.debian.org/">Debian
</a>
12216 <a href=
"http://www.debian.org/News/2009/20090214">Lenny
</a> gitt ut.
12217 Et langt steg videre for Debian-prosjektet, og en rekke nye
12218 programpakker blir nå tilgjengelig for de av oss som bruker den
12219 stabile utgaven av Debian. Neste steg er nå å få
12220 <a href=
"http://www.skolelinux.org/">Skolelinux
</a> /
12221 <a href=
"http://wiki.debian.org/DebianEdu/">Debian Edu
</a> ferdig
12222 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
12223 slippes løs på skolene. Takk til alle debian-utviklerne som har
12224 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
12225 bootsekvens tilgjengelig i stabil utgave, vha pakken
12226 <tt>insserv
</tt>.
</p>
12232 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
12237 <div class=
"padding"></div>
12239 <div class=
"entry">
12240 <div class=
"title">
12241 <a href=
"http://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html">Devcamp brought us closer to the Lenny based Debian Edu release
</a>
12247 <p>This weekend we had a small developer gathering for Debian Edu in
12248 Oslo. Most of Saturday was used for the general assemly for the
12249 member organization, but the rest of the weekend I used to tune the
12250 LTSP installation. LTSP now work out of the box on the
10-network.
12251 Acer Aspire One proved to be a very nice thin client, with both
12252 screen, mouse and keybard in a small box. Was working on getting the
12253 diskless workstation setup configured out of the box, but did not
12254 finish it before the weekend was up.
</p>
12256 <p>Did not find time to look at the
4 VGA cards in one box we got from
12257 the Brazilian group, so that will have to wait for the next
12258 development gathering. Would love to have the Debian Edu installer
12259 automatically detect and configure a multiseat setup when it find one
12260 of these cards.
</p>
12266 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp
</a>.
12271 <div class=
"padding"></div>
12273 <div class=
"entry">
12274 <div class=
"title">
12275 <a href=
"http://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html">The sorry state of multimedia browser plugins in Debian
</a>
12281 <p>Recently I have spent some time evaluating the multimedia browser
12282 plugins available in Debian Lenny, to see which one we should use by
12283 default in Debian Edu. We need an embedded video playing plugin with
12284 control buttons to pause or stop the video, and capable of streaming
12285 all the multimedia content available on the web. The test results and
12286 notes are available on
12287 <a href=
"http://wiki.debian.org/DebianEdu/BrowserMultimedia">the
12288 Debian wiki
</a>. I was surprised how few of the plugins are able to
12289 fill this need. My personal video player favorite, VLC, has a really
12290 bad plugin which fail on a lot of the test pages. A lot of the MIME
12291 types I would expect to work with any free software player (like
12292 video/ogg), just do not work. And simple formats like the
12293 audio/x-mplegurl format (m3u playlists), just isn't supported by the
12294 totem and vlc plugins. I hope the situation will improve soon. No
12295 wonder sites use the proprietary Adobe flash to play video.
</p>
12297 <p>For Lenny, we seem to end up with the mplayer plugin. It seem to
12298 be the only one fitting our needs. :/
</p>
12304 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
12309 <div class=
"padding"></div>
12311 <p style=
"text-align: right;"><a href=
"debian.rss"><img src=
"http://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS Feed" width=
"36" height=
"14" /></a></p>
12322 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
12324 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
12326 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
12328 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
12335 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
12337 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
12339 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
12341 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
12343 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
12345 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
12347 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
12349 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
12351 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
12353 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
12355 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
12357 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
12364 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
12366 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
12368 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
12370 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
12372 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
12374 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
12376 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
12378 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
12380 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
12382 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
12384 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
12386 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
12393 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
12395 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
12397 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
12399 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
12401 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
12403 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
12405 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
12407 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
12409 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
12411 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
12413 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
12415 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
12422 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
12424 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
12426 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
12428 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
12430 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
12432 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
12434 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
12436 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
12438 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
12440 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
12442 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
12444 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
12451 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
12453 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
12455 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
12457 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
12459 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
12461 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
12463 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
12465 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
12467 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
12469 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
12471 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
12473 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
12480 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
12482 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
12484 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
12486 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
12488 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
12490 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
12492 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
12494 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
12496 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
12498 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
12500 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
12502 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
12509 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
12511 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
12513 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
12515 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
12517 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
12519 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
12521 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
12523 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
12525 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
12527 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
12529 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
12531 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
12538 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
12540 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
12542 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
12544 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
12546 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
12548 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
12550 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
12552 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
12554 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
12556 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
12558 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
12560 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
12567 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
12569 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
12580 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
13)
</a></li>
12582 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
12584 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
12586 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
12588 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
9)
</a></li>
12590 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
16)
</a></li>
12592 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
12594 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
12596 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
148)
</a></li>
12598 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
12600 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
3)
</a></li>
12602 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
10)
</a></li>
12604 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
16)
</a></li>
12606 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
23)
</a></li>
12608 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
12610 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
346)
</a></li>
12612 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
12614 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
12)
</a></li>
12616 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
29)
</a></li>
12618 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
12620 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
18)
</a></li>
12622 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
12624 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
12626 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
15)
</a></li>
12628 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
20)
</a></li>
12630 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
12632 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
12634 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
12636 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
12638 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
12640 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
39)
</a></li>
12642 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
9)
</a></li>
12644 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
289)
</a></li>
12646 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
188)
</a></li>
12648 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
31)
</a></li>
12650 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
12652 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
64)
</a></li>
12654 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
99)
</a></li>
12656 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
1)
</a></li>
12658 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
12660 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
12662 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
12664 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
10)
</a></li>
12666 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
12668 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
5)
</a></li>
12670 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
12672 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
52)
</a></li>
12674 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
12676 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
12678 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
52)
</a></li>
12680 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
5)
</a></li>
12682 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
11)
</a></li>
12684 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
48)
</a></li>
12686 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
3)
</a></li>
12688 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
12690 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
8)
</a></li>
12692 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
59)
</a></li>
12694 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
12696 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
40)
</a></li>
12702 <p style=
"text-align: right">
12703 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>