]> pere.pagekite.me Git - homepage.git/blob - blog/tags/debian/index.html
69997feb263a7fcdb54d82f8567398b6ca198ece
[homepage.git] / blog / tags / debian / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Entries Tagged debian</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="debian.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21 <h3>Entries tagged "debian".</h3>
22
23 <div class="entry">
24 <div class="title">
25 <a href="http://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html">Detecting NFS hangs on Linux without hanging yourself...</a>
26 </div>
27 <div class="date">
28 9th March 2017
29 </div>
30 <div class="body">
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>
39
40 <p><blockquote>
41 nfs: server nfsserver not responding, still trying
42 <br>nfs: server nfsserver OK
43 </blockquote></p>
44
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
48 are noticed.</p>
49
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>
56
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>
63
64 <p>The content for a NFS mount point look similar to this:</p>
65
66 <p><blockquote><pre>
67 [...]
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
71 age: 7863311
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
78 per-op statistics
79 NULL: 0 0 0 0 0 0 0 0
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
101
102 device binfmt_misc mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
103 [...]
104 </pre></blockquote></p>
105
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
115 mount options.</p>
116
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/.
119 But according to
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>
126
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>
132
133 </div>
134 <div class="tags">
135
136
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>.
138
139
140 </div>
141 </div>
142 <div class="padding"></div>
143
144 <div class="entry">
145 <div class="title">
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>
147 </div>
148 <div class="date">
149 3rd March 2017
150 </div>
151 <div class="body">
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>
161
162 <p><a href="http://people.skolelinux.org/pere/debian-handbook/debian-handbook-nb-NO.pdf">A
163
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>
172
173 </div>
174 <div class="tags">
175
176
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>.
178
179
180 </div>
181 </div>
182 <div class="padding"></div>
183
184 <div class="entry">
185 <div class="title">
186 <a href="http://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html">Unlimited randomness with the ChaosKey?</a>
187 </div>
188 <div class="date">
189 1st March 2017
190 </div>
191 <div class="body">
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>
203
204 <blockquote><pre>
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; \
209 sleep 1; \
210 done
211 300
212 0+1 oppføringer inn
213 0+1 oppføringer ut
214 28 byte kopiert, 0,000264565 s, 106 kB/s
215 4
216 8
217 12
218 17
219 21
220 %
221 </pre></blockquote>
222
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>
227
228 <blockquote><pre>
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; \
233 sleep 1; \
234 done
235 1079
236 0+1 oppføringer inn
237 0+1 oppføringer ut
238 104 byte kopiert, 0,000487647 s, 213 kB/s
239 433
240 1028
241 1031
242 1035
243 1038
244 %
245 </pre></blockquote>
246
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>
249
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
255 post.</p>
256
257 </div>
258 <div class="tags">
259
260
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>.
262
263
264 </div>
265 </div>
266 <div class="padding"></div>
267
268 <div class="entry">
269 <div class="title">
270 <a href="http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html">Where did that package go? &mdash; geolocated IP traceroute</a>
271 </div>
272 <div class="date">
273 9th January 2017
274 </div>
275 <div class="body">
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
286 this:
287
288 <p><pre>
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
297 8 * * *
298 9 * * *
299 [...]
300 </pre></p>
301
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>
309
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>
315
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>
325
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>
342
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>
345
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.
360
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>
363
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
367 question.
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>
375
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>
378
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>
394
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>
397
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>
402
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>
410
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>
418
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>
423
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>
427
428 </div>
429 <div class="tags">
430
431
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>.
433
434
435 </div>
436 </div>
437 <div class="padding"></div>
438
439 <div class="entry">
440 <div class="title">
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>
442 </div>
443 <div class="date">
444 23rd December 2016
445 </div>
446 <div class="body">
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>
459
460 <p><pre>
461 % appstreamcli what-provides modalias \
462 usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
463 Identifier: pymissile [generic]
464 Name: pymissile
465 Summary: Control original Striker USB Missile Launcher
466 Package: pymissile
467 % appstreamcli what-provides modalias usb:v0694p0002d0000
468 Identifier: libnxt [generic]
469 Name: libnxt
470 Summary: utility library for talking to the LEGO Mindstorms NXT brick
471 Package: libnxt
472 ---
473 Identifier: t2n [generic]
474 Name: t2n
475 Summary: Simple command-line tool for Lego NXT
476 Package: t2n
477 ---
478 Identifier: python-nxt [generic]
479 Name: python-nxt
480 Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
481 Package: python-nxt
482 ---
483 Identifier: nbc [generic]
484 Name: nbc
485 Summary: C compiler for LEGO Mindstorms NXT bricks
486 Package: nbc
487 %
488 </pre></p>
489
490 <p>A similar query can be done using the combined AppStream and
491 Isenkram databases using the isenkram-lookup tool:</p>
492
493 <p><pre>
494 % isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
495 pymissile
496 % isenkram-lookup usb:v0694p0002d0000
497 libnxt
498 nbc
499 python-nxt
500 t2n
501 %
502 </pre></p>
503
504 <p>You can find modalias values relevant for your machine using
505 <tt>cat $(find /sys/devices/ -name modalias)</tt>.
506
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>
526
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>
530
531 </div>
532 <div class="tags">
533
534
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>.
536
537
538 </div>
539 </div>
540 <div class="padding"></div>
541
542 <div class="entry">
543 <div class="title">
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>
545 </div>
546 <div class="date">
547 20th December 2016
548 </div>
549 <div class="body">
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>
560
561 <p>Here is an command line example from my Thinkpad laptop:</p>
562
563 <p><pre>
564 % isenkram-lookup
565 bluez
566 cheese
567 ethtool
568 fprintd
569 fprintd-demo
570 gkrellm-thinkbat
571 hdapsd
572 libpam-fprintd
573 pidgin-blinklight
574 thinkfan
575 tlp
576 tp-smapi-dkms
577 tp-smapi-source
578 tpb
579 %
580 </pre></p>
581
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:
585
586 <p><pre>
587 % /usr/sbin/isenkram-autoinstall-firmware -l
588 info: did not find any firmware files requested by loaded kernel modules. exiting
589 %
590 </pre></p>
591
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>
600
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>
604
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
628 zd1211-firmware</p>
629
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
632 maintainer to
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>
637
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>
643
644 </div>
645 <div class="tags">
646
647
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>.
649
650
651 </div>
652 </div>
653 <div class="padding"></div>
654
655 <div class="entry">
656 <div class="title">
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>
658 </div>
659 <div class="date">
660 11th December 2016
661 </div>
662 <div class="body">
663 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png"/></p>
664
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
673 small.</p>
674
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>
684
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
688 advantages of 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>
696
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>
700
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>
704
705 </div>
706 <div class="tags">
707
708
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>.
710
711
712 </div>
713 </div>
714 <div class="padding"></div>
715
716 <div class="entry">
717 <div class="title">
718 <a href="http://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html">Quicker Debian installations using eatmydata</a>
719 </div>
720 <div class="date">
721 25th November 2016
722 </div>
723 <div class="body">
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.
737
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>
748
749 <blockquote><pre>
750 preseed/early_command="anna-install eatmydata-udeb"
751 </pre></blockquote>
752
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>
762
763
764 </div>
765 <div class="tags">
766
767
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>.
769
770
771 </div>
772 </div>
773 <div class="padding"></div>
774
775 <div class="entry">
776 <div class="title">
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>
778 </div>
779 <div class="date">
780 24th November 2016
781 </div>
782 <div class="body">
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.
802
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
807 api.apertium.org. Se
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
811 nynorsk.</p>
812
813 <hr/>
814
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.
834
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
843 nynorsk.</p>
844
845 </div>
846 <div class="tags">
847
848
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>.
850
851
852 </div>
853 </div>
854 <div class="padding"></div>
855
856 <div class="entry">
857 <div class="title">
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>
859 </div>
860 <div class="date">
861 13th November 2016
862 </div>
863 <div class="body">
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
869 months since
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>
875
876 <p>To test it, install 'coz-profiler' using apt and run it like this:</p>
877
878 <p><blockquote>
879 <tt>coz run --- /path/to/binary-with-debug-info</tt>
880 </blockquote></p>
881
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>
887
888 <p><blockquote>
889 <tt>sensible-browser /usr/share/coz-profiler/viewer/index.htm</tt>
890 </blockquote></p>
891
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
895 working.</p>
896
897 </div>
898 <div class="tags">
899
900
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>.
902
903
904 </div>
905 </div>
906 <div class="padding"></div>
907
908 <div class="entry">
909 <div class="title">
910 <a href="http://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway</a>
911 </div>
912 <div class="date">
913 4th November 2016
914 </div>
915 <div class="body">
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,
926 and had
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
930 loved ones. :)</p>
931
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
935 building
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>
944
945 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg"></p>
946
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>
952
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">
955 </video></p>
956
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>
959
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
967 should.</p>
968
969 </div>
970 <div class="tags">
971
972
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>.
974
975
976 </div>
977 </div>
978 <div class="padding"></div>
979
980 <div class="entry">
981 <div class="title">
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>
983 </div>
984 <div class="date">
985 10th October 2016
986 </div>
987 <div class="body">
988 <p>In July
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>
993
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
1008 time.</p>
1009
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>
1017
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>
1028
1029 <p>So, the updated recipe for Debian Jessie:</p>
1030
1031 <ol>
1032
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.
1036
1037 <pre>
1038 apt install git tor chromium
1039 git clone https://github.com/WhisperSystems/Signal-Desktop.git
1040 </pre></li>
1041
1042 <li>Modify the source code using command listed in the the patch
1043 block below.</li>
1044
1045 <li>Start Signal using the run-signal-app wrapper (for example using
1046 <tt>`pwd`/run-signal-app</tt>).
1047
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>
1053
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>
1059
1060 </ol>
1061
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
1066 example
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>
1077
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>
1081
1082 <pre>
1083 cd Signal-Desktop; cat &lt;&lt;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
1088 @@ -33,9 +33,9 @@
1089 });
1090 });
1091
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
1102 --- a/js/expire.js
1103 +++ b/js/expire.js
1104 @@ -1,6 +1,6 @@
1105 ;(function() {
1106 'use strict';
1107 - var BUILD_EXPIRATION = 0;
1108 + var BUILD_EXPIRATION = Date.now() + (90 * 24 * 60 * 60 * 1000);
1109
1110 window.extension = window.extension || {};
1111
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
1116 @@ -38,7 +38,8 @@
1117 return {
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') },
1123 };
1124 },
1125 clearQR: function() {
1126 diff --git a/options.html b/options.html
1127 index dc0f28e..8d709f6 100644
1128 --- a/options.html
1129 +++ b/options.html
1130 @@ -14,7 +14,10 @@
1131 &lt;div class='nav'>
1132 &lt;h1>{{ installWelcome }}&lt;/h1>
1133 &lt;p>{{ installTagline }}&lt;/p>
1134 - &lt;div> &lt;a class='button step2'>{{ installGetStartedButton }}&lt;/a> &lt;/div>
1135 + &lt;div> &lt;a class='button step2'>{{ installGetStartedButton }}&lt;/a>
1136 + &lt;br> &lt;a class="button callreg">Register without mobile phone&lt;/a>
1137 +
1138 + &lt;/div>
1139 &lt;span class='dot step1 selected'>&lt;/span>
1140 &lt;span class='dot step2'>&lt;/span>
1141 &lt;span class='dot step3'>&lt;/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
1144 @@ -0,0 +1,12 @@
1145 +#!/bin/sh
1146 +set -e
1147 +cd $(dirname $0)
1148 +mkdir -p userdata
1149 +userdata="`pwd`/userdata"
1150 +if [ -d "$userdata" ] && [ ! -d "$userdata/.git" ] ; then
1151 + (cd $userdata && git init)
1152 +fi
1153 +(cd $userdata && git add . && git commit -m "Current status." || true)
1154 +exec chromium \
1155 + --proxy-server="socks://localhost:9050" \
1156 + --user-data-dir=$userdata --load-and-launch-app=`pwd`
1157 EOF
1158 chmod a+rx run-signal-app
1159 </pre>
1160
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>
1164
1165 </div>
1166 <div class="tags">
1167
1168
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>.
1170
1171
1172 </div>
1173 </div>
1174 <div class="padding"></div>
1175
1176 <div class="entry">
1177 <div class="title">
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>
1179 </div>
1180 <div class="date">
1181 7th October 2016
1182 </div>
1183 <div class="body">
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>
1197
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>
1204
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
1209 identifiers.</p>
1210
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>
1225
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>
1233
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>
1251
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:
1259
1260 <p><pre>
1261 SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0694", ATTR{idProduct}=="0001", \
1262 SYMLINK+="rcx-%k", TAG+="uaccess"
1263 </pre></p>
1264
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
1269 to detect this?</p>
1270
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>
1281
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>
1285
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>
1292
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>
1296
1297 </div>
1298 <div class="tags">
1299
1300
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>.
1302
1303
1304 </div>
1305 </div>
1306 <div class="padding"></div>
1307
1308 <div class="entry">
1309 <div class="title">
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>
1311 </div>
1312 <div class="date">
1313 30th August 2016
1314 </div>
1315 <div class="body">
1316 <p>In April we
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
1325 contributing using
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>
1333
1334 <p>Our goal is still to make the Norwegian book available on paper as well as
1335 electronic form.</p>
1336
1337 </div>
1338 <div class="tags">
1339
1340
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>.
1342
1343
1344 </div>
1345 </div>
1346 <div class="padding"></div>
1347
1348 <div class="entry">
1349 <div class="title">
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>
1351 </div>
1352 <div class="date">
1353 11th August 2016
1354 </div>
1355 <div class="body">
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>
1369
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>
1379
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:
1382
1383 <p><blockquote><pre>
1384 coz run --- program-to-run
1385 </pre></blockquote></p>
1386
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 &lt;coz.h&gt; 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>
1397
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
1402 titled
1403 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger">Coz:
1404 finding code that counts with causal profiling</a>.</p>
1405
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
1408 because it uses a
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>
1413
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
1417 C++ libraries.</p>
1418
1419 </div>
1420 <div class="tags">
1421
1422
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>.
1424
1425
1426 </div>
1427 </div>
1428 <div class="padding"></div>
1429
1430 <div class="entry">
1431 <div class="title">
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>
1433 </div>
1434 <div class="date">
1435 7th July 2016
1436 </div>
1437 <div class="body">
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>
1448
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>
1456
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
1464 him.</p>
1465
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>
1474
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>
1480
1481 <p><pre>
1482 adb reboot-bootloader
1483 fastboot oem rebootRUU
1484 fastboot flash zip rom.zip
1485 fastboot flash zip rom.zip
1486 fastboot reboot
1487 </pre></p>
1488
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
1493 too.</p>
1494
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
1497 like this:</p>
1498
1499 <p><pre>
1500 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
1501 </pre>
1502
1503 <p>And once I got the unlock code via email, I could use it like
1504 this:</p>
1505
1506 <p><pre>
1507 fastboot flash unlocktoken Unlock_code.bin
1508 </pre></p>
1509
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>
1515
1516 </div>
1517 <div class="tags">
1518
1519
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>.
1521
1522
1523 </div>
1524 </div>
1525 <div class="padding"></div>
1526
1527 <div class="entry">
1528 <div class="title">
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>
1530 </div>
1531 <div class="date">
1532 3rd July 2016
1533 </div>
1534 <div class="body">
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>
1548
1549 <p>First, I fetched the Signal desktop source from Github, using
1550
1551 <pre>
1552 git clone https://github.com/WhisperSystems/Signal-Desktop.git
1553 </pre>
1554
1555 <p>Next, I patched the source to use the production servers, to be
1556 able to talk to other Signal users:</p>
1557
1558 <pre>
1559 cat &lt;&lt;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
1563 @@ -47,8 +47,8 @@
1564 });
1565 });
1566
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
1577 @@ -1,6 +1,6 @@
1578 ;(function() {
1579 'use strict';
1580 - var BUILD_EXPIRATION = 0;
1581 + var BUILD_EXPIRATION = 1474492690000;
1582
1583 window.extension = window.extension || {};
1584
1585 EOF
1586 </pre>
1587
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>
1592
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>
1595
1596 <pre>
1597 #!/bin/sh
1598 cd $(dirname $0)
1599 mkdir -p userdata
1600 exec chromium \
1601 --proxy-server="socks://localhost:9050" \
1602 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
1603 </pre>
1604
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>
1610
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.
1621
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>
1634
1635 <p><strong>Update 2017-01-10</strong>: There is an updated blog post
1636 on this topic in
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
1639 phone</a>.</p>
1640
1641 </div>
1642 <div class="tags">
1643
1644
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>.
1646
1647
1648 </div>
1649 </div>
1650 <div class="padding"></div>
1651
1652 <div class="entry">
1653 <div class="title">
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>
1655 </div>
1656 <div class="date">
1657 6th June 2016
1658 </div>
1659 <div class="body">
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>
1669
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>
1677
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>
1683
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
1692 formats.</p>
1693
1694 </div>
1695 <div class="tags">
1696
1697
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>.
1699
1700
1701 </div>
1702 </div>
1703 <div class="padding"></div>
1704
1705 <div class="entry">
1706 <div class="title">
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>
1708 </div>
1709 <div class="date">
1710 5th June 2016
1711 </div>
1712 <div class="body">
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 &ndash;
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>
1733
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>
1748
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>
1757
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
1771 type (preferably
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>
1776
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>
1780
1781 <p><blockquote><pre>
1782 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
1783 &lt;mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"&gt;
1784 &lt;mime-type type="audio/x-rosegarden"&gt;
1785 &lt;sub-class-of type="application/x-gzip"/&gt;
1786 &lt;comment&gt;Rosegarden project file&lt;/comment&gt;
1787 &lt;glob pattern="*.rg"/&gt;
1788 &lt;/mime-type&gt;
1789 &lt;/mime-info&gt;
1790 </pre></blockquote></p>
1791
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>
1796
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>
1800
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
1805 %
1806 </pre></blockquote></p>
1807
1808 <p>The fix was to add "audio/x-rosegarden;" at the end of the
1809 MimeType= line.</p>
1810
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
1817 fixed. :)</p>
1818
1819 </div>
1820 <div class="tags">
1821
1822
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>.
1824
1825
1826 </div>
1827 </div>
1828 <div class="padding"></div>
1829
1830 <div class="entry">
1831 <div class="title">
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>
1833 </div>
1834 <div class="date">
1835 25th May 2016
1836 </div>
1837 <div class="body">
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>
1850
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>
1862
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>
1866
1867 <p><blockquote><pre>
1868 % isenkram-lookup
1869 bluez
1870 cheese
1871 fprintd
1872 fprintd-demo
1873 gkrellm-thinkbat
1874 hdapsd
1875 libpam-fprintd
1876 pidgin-blinklight
1877 thinkfan
1878 tleds
1879 tp-smapi-dkms
1880 tp-smapi-source
1881 tpb
1882 %p
1883 </pre></blockquote></p>
1884
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>.
1889 See
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>
1892
1893 </div>
1894 <div class="tags">
1895
1896
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>.
1898
1899
1900 </div>
1901 </div>
1902 <div class="padding"></div>
1903
1904 <div class="entry">
1905 <div class="title">
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>
1907 </div>
1908 <div class="date">
1909 23rd May 2016
1910 </div>
1911 <div class="body">
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>
1923
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
1928 capacity.</p>
1929
1930 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-rate.png"/></p>
1931
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:
1936
1937 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-history.png"/></p>
1938
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
1941 shrinking. :(</p>
1942
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
1948 machine.</p>
1949
1950 <p>If you are interested in how your laptop battery is doing, please
1951 check out the
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>
1957
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>
1961
1962 </div>
1963 <div class="tags">
1964
1965
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>.
1967
1968
1969 </div>
1970 </div>
1971 <div class="padding"></div>
1972
1973 <div class="entry">
1974 <div class="title">
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>
1976 </div>
1977 <div class="date">
1978 12th May 2016
1979 </div>
1980 <div class="body">
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>
1993
1994 </div>
1995 <div class="tags">
1996
1997
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>.
1999
2000
2001 </div>
2002 </div>
2003 <div class="padding"></div>
2004
2005 <div class="entry">
2006 <div class="title">
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>
2008 </div>
2009 <div class="date">
2010 8th May 2016
2011 </div>
2012 <div class="body">
2013 <p><strong>Where I set out to figure out which multimedia player in
2014 Debian claim support for most file formats.</strong></p>
2015
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
2025 players.</p>
2026
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>
2038
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>
2044
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
2048 support?</p>
2049
2050 </div>
2051 <div class="tags">
2052
2053
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>.
2055
2056
2057 </div>
2058 </div>
2059 <div class="padding"></div>
2060
2061 <div class="entry">
2062 <div class="title">
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>
2064 </div>
2065 <div class="date">
2066 4th May 2016
2067 </div>
2068 <div class="body">
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>
2073
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>
2081
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>
2085
2086 </div>
2087 <div class="tags">
2088
2089
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>.
2091
2092
2093 </div>
2094 </div>
2095 <div class="padding"></div>
2096
2097 <div class="entry">
2098 <div class="title">
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>
2100 </div>
2101 <div class="date">
2102 10th April 2016
2103 </div>
2104 <div class="body">
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
2112 contributing using
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>
2119
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>
2125
2126 </div>
2127 <div class="tags">
2128
2129
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>.
2131
2132
2133 </div>
2134 </div>
2135 <div class="padding"></div>
2136
2137 <div class="entry">
2138 <div class="title">
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>
2140 </div>
2141 <div class="date">
2142 7th April 2016
2143 </div>
2144 <div class="body">
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>
2149
2150 <p>According to
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>
2161
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>
2173
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>
2186
2187 </div>
2188 <div class="tags">
2189
2190
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>.
2192
2193
2194 </div>
2195 </div>
2196 <div class="padding"></div>
2197
2198 <div class="entry">
2199 <div class="title">
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>
2201 </div>
2202 <div class="date">
2203 23rd March 2016
2204 </div>
2205 <div class="body">
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>
2214
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:
2218
2219 <p><pre>
2220 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
2221 </pre></p>
2222
2223 <p>Or select the 'Battery Level Graph' from your application menu.</p>
2224
2225 <p>The flow in/out of the battery can be seen by running (no menu
2226 entry yet):</p>
2227
2228 <p><pre>
2229 /usr/share/battery-stats/battery-stats-graph-flow
2230 </pre></p>
2231
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>
2235
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>
2246
2247 <p>If you are interested in how your laptop battery is doing, please
2248 check out the
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>
2254
2255 </div>
2256 <div class="tags">
2257
2258
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>.
2260
2261
2262 </div>
2263 </div>
2264 <div class="padding"></div>
2265
2266 <div class="entry">
2267 <div class="title">
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>
2269 </div>
2270 <div class="date">
2271 15th March 2016
2272 </div>
2273 <div class="body">
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>
2285
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>
2297
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>
2299
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>
2306
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
2310 and graphing.</p>
2311
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
2315 on
2316 <a href="https://github.com/petterreinholdtsen/battery-stats">github</a>.
2317 I would love some help to improve the system further.</p>
2318
2319 </div>
2320 <div class="tags">
2321
2322
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>.
2324
2325
2326 </div>
2327 </div>
2328 <div class="padding"></div>
2329
2330 <div class="entry">
2331 <div class="title">
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>
2333 </div>
2334 <div class="date">
2335 19th February 2016
2336 </div>
2337 <div class="body">
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>
2344
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>
2355
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
2364 option in
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>.
2367
2368 <p>To generate using debmake, use the -cc option:
2369
2370 <p><pre>
2371 debmake -cc > debian/copyright
2372 </pre></p>
2373
2374 <p>Note there are some problems with python and non-ASCII names, so
2375 this might not be the best option.</p>
2376
2377 <p>The cme option is based on a config parsing library, and I found
2378 this approach in
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:
2382
2383 <p><pre>
2384 cme update dpkg-copyright
2385 </pre></p>
2386
2387 <p>This will create or update debian/copyright. The cme tool seem to
2388 handle UTF-8 names better than debmake.</p>
2389
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>
2400
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>
2405
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>
2409
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>
2413
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
2416
2417 <p><pre>
2418 licensecheck --copyright -r `find * -type f` | \
2419 /usr/lib/cdbs/licensecheck2dep5 > debian/copyright.auto
2420 </pre></p>
2421
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>
2426
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
2429 command line.</p>
2430
2431 </div>
2432 <div class="tags">
2433
2434
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>.
2436
2437
2438 </div>
2439 </div>
2440 <div class="padding"></div>
2441
2442 <div class="entry">
2443 <div class="title">
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>
2445 </div>
2446 <div class="date">
2447 4th February 2016
2448 </div>
2449 <div class="body">
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
2455 about. :)</p>
2456
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>
2463
2464 <blockquote><pre>
2465 % apt install appstream
2466 [...]
2467 % apt update
2468 [...]
2469 % appstreamcli what-provides firmware:runtime ctfw-3.2.3.0.bin | \
2470 awk '/Package:/ {print $2}'
2471 firmware-qlogic
2472 %
2473 </pre></blockquote>
2474
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>
2478
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>
2485
2486 <blockquote><pre>
2487 % apt install appstream
2488 [...]
2489 % apt update
2490 [...]
2491 % appstreamcli what-provides mimetype image/svg+xml | \
2492 awk '/Package:/ {print $2}'
2493 bkchem
2494 phototonic
2495 inkscape
2496 shutter
2497 tetzle
2498 geeqie
2499 xia
2500 pinta
2501 gthumb
2502 karbon
2503 comix
2504 mirage
2505 viewnior
2506 postr
2507 ristretto
2508 kolourpaint4
2509 eog
2510 eom
2511 gimagereader
2512 midori
2513 %
2514 </pre></blockquote>
2515
2516 <p>I believe the MIME types are fetched from the desktop file for
2517 packages providing appstream metadata.</p>
2518
2519 </div>
2520 <div class="tags">
2521
2522
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>.
2524
2525
2526 </div>
2527 </div>
2528 <div class="padding"></div>
2529
2530 <div class="entry">
2531 <div class="title">
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>
2533 </div>
2534 <div class="date">
2535 24th January 2016
2536 </div>
2537 <div class="body">
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
2553 entities.</p>
2554
2555 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png"></p>
2556
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
2576 are now included
2577 <a href="https://github.com/jkakavas/creepy">upstream</a>.</p>
2578
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>
2590
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
2605 public.</p>
2606
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>
2611
2612 <p>(I have uploaded
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>
2616
2617 </div>
2618 <div class="tags">
2619
2620
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>.
2622
2623
2624 </div>
2625 </div>
2626 <div class="padding"></div>
2627
2628 <div class="entry">
2629 <div class="title">
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>
2631 </div>
2632 <div class="date">
2633 15th January 2016
2634 </div>
2635 <div class="body">
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>
2653
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>
2659
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
2665 done in /etc/.</p>
2666
2667 <blockquote><pre>
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
2671 </pre></blockquote>
2672
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>
2677
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>
2684
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>
2690
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
2694 system.</p>
2695
2696 </div>
2697 <div class="tags">
2698
2699
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>.
2701
2702
2703 </div>
2704 </div>
2705 <div class="padding"></div>
2706
2707 <div class="entry">
2708 <div class="title">
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>
2710 </div>
2711 <div class="date">
2712 23rd December 2015
2713 </div>
2714 <div class="body">
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>
2721
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
2736 archive.</p>
2737
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>
2742
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>
2755
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>
2760
2761 </div>
2762 <div class="tags">
2763
2764
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>.
2766
2767
2768 </div>
2769 </div>
2770 <div class="padding"></div>
2771
2772 <div class="entry">
2773 <div class="title">
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>
2775 </div>
2776 <div class="date">
2777 20th December 2015
2778 </div>
2779 <div class="body">
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
2792 with.</p>
2793
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>
2805
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
2814 this content:</p>
2815
2816 <blockquote><pre>
2817 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
2818 &lt;component&gt;
2819 &lt;id&gt;pymissile&lt;/id&gt;
2820 &lt;metadata_license&gt;MIT&lt;/metadata_license&gt;
2821 &lt;name&gt;pymissile&lt;/name&gt;
2822 &lt;summary&gt;Control original Striker USB Missile Launcher&lt;/summary&gt;
2823 &lt;description&gt;
2824 &lt;p&gt;
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
2828 launcher.
2829 &lt;/p&gt;
2830 &lt;/description&gt;
2831 &lt;provides&gt;
2832 &lt;modalias&gt;usb:v1130p0202d*&lt;/modalias&gt;
2833 &lt;/provides&gt;
2834 &lt;/component&gt;
2835 </pre></blockquote>
2836
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
2841 0202.</p>
2842
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>
2851
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>
2857
2858 <blockquote><pre>
2859 debian/pymissile.metainfo.xml usr/share/appdata
2860 </pre></blockquote>
2861
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
2866 question.</p>
2867
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>
2870
2871 <p>To locate the modalias values of all hardware present in a machine,
2872 try running this command on the command line:</p>
2873
2874 <blockquote><pre>
2875 cat $(find /sys/devices/|grep modalias)
2876 </pre></blockquote>
2877
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>
2881
2882 </div>
2883 <div class="tags">
2884
2885
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>.
2887
2888
2889 </div>
2890 </div>
2891 <div class="padding"></div>
2892
2893 <div class="entry">
2894 <div class="title">
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>
2896 </div>
2897 <div class="date">
2898 30th November 2015
2899 </div>
2900 <div class="body">
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>
2906
2907 <blockquote>
2908
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>
2910
2911 <blockquote>
2912 The GPL is not magic pixie dust. It does not work by itself.<br/>
2913
2914 The first step is to choose a
2915 <a href="https://copyleft.org/">copyleft</a> license for your
2916 code.<br/>
2917
2918 The next step is, when someone fails to follow that copyleft license,
2919 <b>it must be enforced</b><br/>
2920
2921 and its a simple fact of our modern society that such type of
2922 work<br/>
2923
2924 is incredibly expensive to do and incredibly difficult to do.
2925 </blockquote>
2926
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>
2931
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&amp;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
2945 Freedom">FaiF</a>
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
2961 conferences
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
2970 Software.</p>
2971
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
2982 Allan Webber</a>,
2983 <a href="https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/">Carol
2984 Smith</a>,
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
2988 becoming a
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>
2996
2997 </blockquote>
2998
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
3001 supporter too?</p>
3002
3003 </div>
3004 <div class="tags">
3005
3006
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>.
3008
3009
3010 </div>
3011 </div>
3012 <div class="padding"></div>
3013
3014 <div class="entry">
3015 <div class="title">
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>
3017 </div>
3018 <div class="date">
3019 17th November 2015
3020 </div>
3021 <div class="body">
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>
3032
3033 <pre>
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 &lt;pere@hungry.com&gt;
3037 uid Petter Reinholdtsen &lt;pere@debian.org&gt;
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]
3041 </pre>
3042
3043 <p>The key can be downloaded from the OpenPGP key servers, signed by
3044 my old key.</p>
3045
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>
3051
3052 </div>
3053 <div class="tags">
3054
3055
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>.
3057
3058
3059 </div>
3060 </div>
3061 <div class="padding"></div>
3062
3063 <div class="entry">
3064 <div class="title">
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>
3066 </div>
3067 <div class="date">
3068 24th September 2015
3069 </div>
3070 <div class="body">
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>
3078
3079 <img src="http://people.skolelinux.org/pere/blog/images/2015-09-24-laptop-battery-graph.png"/>
3080
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
3088 from him. Via
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
3091 discovered
3092 <a href="https://github.com/jradavenport/batlog.git">batlog</a>, not
3093 available in Debian.</p>
3094
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>
3101
3102 <pre>
3103 #!/bin/sh
3104 # Inspired by
3105 # http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
3106 # See also
3107 # http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
3108 logfile=/var/log/hjemmenett-battery-status.log
3109
3110 files="manufacturer model_name technology serial_number \
3111 energy_full energy_full_design energy_now cycle_count status"
3112
3113 if [ ! -e "$logfile" ] ; then
3114 (
3115 printf "timestamp,"
3116 for f in $files; do
3117 printf "%s," $f
3118 done
3119 echo
3120 ) > "$logfile"
3121 fi
3122
3123 log_battery() {
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); \
3129 done)
3130 echo "$msg"
3131 }
3132
3133 cd /sys/class/power_supply
3134
3135 for bat in BAT*; do
3136 (cd $bat && log_battery >> "$logfile")
3137 done
3138 </pre>
3139
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>
3148
3149 <p>The collected log file look like this:</p>
3150
3151 <pre>
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,
3154 [...]
3155 1443090528,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
3156 1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
3157 </pre>
3158
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
3161 battery.</p>
3162
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
3176 Linux too.</p>
3177
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
3184 load).</p>
3185
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
3193 those.</p>
3194
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
3201 specific.</p>
3202
3203 </div>
3204 <div class="tags">
3205
3206
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>.
3208
3209
3210 </div>
3211 </div>
3212 <div class="padding"></div>
3213
3214 <div class="entry">
3215 <div class="title">
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>
3217 </div>
3218 <div class="date">
3219 5th July 2015
3220 </div>
3221 <div class="body">
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>
3233
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.
3241
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>
3257
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>
3262
3263 <p>Again, thank you all for the very useful feedback. It help a lot
3264 as I keep looking for a replacement.</p>
3265
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
3268 different
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>
3271
3272 </div>
3273 <div class="tags">
3274
3275
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>.
3277
3278
3279 </div>
3280 </div>
3281 <div class="padding"></div>
3282
3283 <div class="entry">
3284 <div class="title">
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>
3286 </div>
3287 <div class="date">
3288 3rd July 2015
3289 </div>
3290 <div class="body">
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
3295 flickering.</p>
3296
3297 <p>My requirements have not really changed since I bought it, and is
3298 still as
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
3301 good help from
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>
3311
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>
3316
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>
3320
3321 </div>
3322 <div class="tags">
3323
3324
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>.
3326
3327
3328 </div>
3329 </div>
3330 <div class="padding"></div>
3331
3332 <div class="entry">
3333 <div class="title">
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>
3335 </div>
3336 <div class="date">
3337 22nd November 2014
3338 </div>
3339 <div class="body">
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,
3343 courtesy of
3344 <a href="http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html">Erich
3345 Schubert</a> and
3346 <a href="http://smcv.pseudorandom.co.uk/2014/still_universal/">Simon
3347 McVittie</a>.
3348
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
3352 you upgrade:</p>
3353
3354 <p><blockquote><pre>
3355 Package: systemd-sysv
3356 Pin: release o=Debian
3357 Pin-Priority: -1
3358 </pre></blockquote><p>
3359
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>
3365
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:
3372
3373 <p><blockquote><pre>
3374 preseed/late_command="in-target apt-get install --purge -y sysvinit-core"
3375 </pre></blockquote><p>
3376
3377 <p>Next, the line to use in a preseed file:</p>
3378
3379 <p><blockquote><pre>
3380 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
3381 </pre></blockquote><p>
3382
3383 <p>One can of course also do this after the first boot by installing
3384 the sysvinit-core package.</p>
3385
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>
3392
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
3396 line.</p>
3397
3398 </div>
3399 <div class="tags">
3400
3401
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>.
3403
3404
3405 </div>
3406 </div>
3407 <div class="padding"></div>
3408
3409 <div class="entry">
3410 <div class="title">
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>
3412 </div>
3413 <div class="date">
3414 10th November 2014
3415 </div>
3416 <div class="body">
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>
3420
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>
3436
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>
3452
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
3460 this:</p>
3461
3462 <p><blockquote><pre>
3463 torsocks swaks --server dutlqrrmjhtfa3vp.onion \
3464 --to fbx@dutlqrrmjhtfa3vp.onion
3465 </pre></blockquote></p>
3466
3467 <p>This will test the SMTP delivery using tor. Replace the email
3468 address with your own address to test your server. :)</p>
3469
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
3480 system.</p>
3481
3482 <p>Until I wipe my test machine, I can be reached using the
3483 <tt>fbx@dutlqrrmjhtfa3vp.onion</tt> mail address, deliverable over
3484 SMTorP. :)</p>
3485
3486 </div>
3487 <div class="tags">
3488
3489
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>.
3491
3492
3493 </div>
3494 </div>
3495 <div class="padding"></div>
3496
3497 <div class="entry">
3498 <div class="title">
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>
3500 </div>
3501 <div class="date">
3502 22nd October 2014
3503 </div>
3504 <div class="body">
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>
3516
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
3521
3522 real 0m1.709s
3523 user 0m0.232s
3524 sys 0m0.012s
3525 %
3526 </pre></blockquote></p>
3527
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
3534 program.</p>
3535
3536 <p>If you install
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>
3540
3541 <p><blockquote><pre>
3542 username username@example.org
3543 spamlevel 23
3544 default discard
3545 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
3546
3547 password secret
3548 adminurl https://{domain}/mailman/admindb/{list}
3549 mailman-list@lists.example.com
3550
3551 password hidden
3552 other-list@otherserver.example.org
3553 </pre></blockquote></p>
3554
3555 <p>There are other options to set as well. Check the manual page to
3556 learn the details.</p>
3557
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>
3562
3563 <p><blockquote><pre>
3564 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
3565 </pre></blockquote></p>
3566
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
3572 email.</p>
3573
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
3578 software.</p>
3579
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>
3583
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
3587 sure why.</p>
3588
3589 </div>
3590 <div class="tags">
3591
3592
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>.
3594
3595
3596 </div>
3597 </div>
3598 <div class="padding"></div>
3599
3600 <div class="entry">
3601 <div class="title">
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>
3603 </div>
3604 <div class="date">
3605 17th October 2014
3606 </div>
3607 <div class="body">
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>
3615
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
3620 of this story.)</p>
3621
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>
3632
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>
3637
3638 <p>The end result is two lines needed in your preseeding file to get
3639 firmware installed automatically by the installer:</p>
3640
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>
3645
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>
3654
3655 <p>If you decide to give this a go, please let me know (via email) how
3656 this recipe work for you. :)</p>
3657
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>
3663
3664 <p><blockquote><pre>
3665 Task: isenkram-packages
3666 Section: hardware
3667 Description: Hardware specific packages (autodetected by isenkram)
3668 Based on the detected hardware various hardware specific packages are
3669 proposed.
3670 Test-new-install: show show
3671 Relevance: 8
3672 Packages: for-current-hardware
3673
3674 Task: isenkram-firmware
3675 Section: hardware
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
3680 Relevance: 8
3681 Packages: for-current-hardware-firmware
3682 </pre></blockquote></p>
3683
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:
3689
3690 <p><blockquote><pre>
3691 #!/bin/sh
3692 #
3693 PATH=/usr/sbin:$PATH
3694 export PATH
3695 isenkram-autoinstall-firmware -l
3696 </pre></blockquote></p>
3697
3698 <p>With those two pieces in place, the firmware is installed by
3699 tasksel during the normal d-i run. :)</p>
3700
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
3704 install.</p>
3705
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>
3709
3710 </div>
3711 <div class="tags">
3712
3713
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>.
3715
3716
3717 </div>
3718 </div>
3719 <div class="padding"></div>
3720
3721 <div class="entry">
3722 <div class="title">
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>
3724 </div>
3725 <div class="date">
3726 4th October 2014
3727 </div>
3728 <div class="body">
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>
3733
3734 <p align="center"><img width="70%" src="http://people.skolelinux.org/pere/blog/images/2014-10-04-ubuntu-ica-storo-crop.jpeg"></p>
3735
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>
3739
3740 </div>
3741 <div class="tags">
3742
3743
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>.
3745
3746
3747 </div>
3748 </div>
3749 <div class="padding"></div>
3750
3751 <div class="entry">
3752 <div class="title">
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>
3754 </div>
3755 <div class="date">
3756 4th October 2014
3757 </div>
3758 <div class="body">
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
3763 Dibb.</p>
3764
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
3770 0.17.</p>
3771
3772 <ul>
3773
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>
3789
3790 </ul>
3791
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>
3795
3796 </div>
3797 <div class="tags">
3798
3799
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>.
3801
3802
3803 </div>
3804 </div>
3805 <div class="padding"></div>
3806
3807 <div class="entry">
3808 <div class="title">
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>
3810 </div>
3811 <div class="date">
3812 26th September 2014
3813 </div>
3814 <div class="body">
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
3824 future. 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>
3830
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>
3834 or rsync (use
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>
3839
3840 <p>When you get to the Debian Edu profile question, go to tty2
3841 (use Alt-Ctrl-F2), run</p>
3842
3843 <p><blockquote><pre>
3844 nano /usr/bin/edu-eatmydata-install
3845 </pre></blockquote></p>
3846
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>
3851
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
3855 your need.</p>
3856
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
3864 days.</p>
3865
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>
3875
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>
3879
3880 </div>
3881 <div class="tags">
3882
3883
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>.
3885
3886
3887 </div>
3888 </div>
3889 <div class="padding"></div>
3890
3891 <div class="entry">
3892 <div class="title">
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>
3894 </div>
3895 <div class="date">
3896 25th September 2014
3897 </div>
3898 <div class="body">
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>
3912
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
3922 list</a>. :)</p>
3923
3924 </div>
3925 <div class="tags">
3926
3927
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>.
3929
3930
3931 </div>
3932 </div>
3933 <div class="padding"></div>
3934
3935 <div class="entry">
3936 <div class="title">
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>
3938 </div>
3939 <div class="date">
3940 16th September 2014
3941 </div>
3942 <div class="body">
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>
3957
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&nbsp;$program&nbsp;$@", 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>
3974
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
3989 dialog.</p>
3990
3991 <p><table>
3992
3993 <tr>
3994 <th>Machine/setup</th>
3995 <th>Original tasksel</th>
3996 <th>Optimised tasksel</th>
3997 <th>Reduction</th>
3998 </tr>
3999
4000 <tr>
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>
4005 </tr>
4006
4007 <tr>
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>
4011 <td>23 min 40%</td>
4012 </tr>
4013
4014 <tr>
4015 <td>Latitude D505 Minimal</td>
4016 <td>22 min (10:37-10:59)</td>
4017 <td>11 min (11:16-11:27)</td>
4018 <td>11 min 50%</td>
4019 </tr>
4020
4021 <tr>
4022 <td>Thinkpad X200 Minimal</td>
4023 <td>6 min (08:19-08:25)</td>
4024 <td>4 min (08:04-08:08)</td>
4025 <td>2 min 33%</td>
4026 </tr>
4027
4028 <tr>
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>
4032 <td>4 min 21%</td>
4033 </tr>
4034
4035 </table></p>
4036
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
4042 installed.</p>
4043
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>
4056
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>
4063
4064 <p><blockquote><pre>
4065 #!/bin/sh
4066 set -e
4067 . /usr/share/debconf/confmodule
4068 info() {
4069 logger -t my-pkgsel "info: $*"
4070 }
4071 error() {
4072 logger -t my-pkgsel "error: $*"
4073 }
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
4078 file=/usr/bin/$bin
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" \
4083 > /target$file.edu
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
4088 else
4089 error "unable to divert $file, as it is missing."
4090 fi
4091 done
4092 else
4093 error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
4094 fi
4095 }
4096
4097 override_install
4098 </pre></blockquote></p>
4099
4100 <p>To clean up, another shell script should go into
4101 /usr/lib/finish-install.d/ with code like this:
4102
4103 <p><blockquote><pre>
4104 #! /bin/sh -e
4105 . /usr/share/debconf/confmodule
4106 error() {
4107 logger -t my-finish-install "error: $@"
4108 }
4109 remove_install_override() {
4110 for bin in dpkg apt-get aptitude tasksel ; do
4111 file=/usr/bin/$bin
4112 if [ -x /target$file.edu ] ; then
4113 rm /target$file
4114 in-target dpkg-divert --package debian-edu-config \
4115 --rename --quiet --remove $file
4116 rm /target$file.edu
4117 else
4118 error "Missing divert for $file."
4119 fi
4120 done
4121 sync # Flush file buffers before continuing
4122 }
4123
4124 remove_install_override
4125 </pre></blockquote></p>
4126
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>
4130
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
4139 everyone.</p>
4140
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>
4145
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>
4151
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>
4157
4158 </div>
4159 <div class="tags">
4160
4161
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>.
4163
4164
4165 </div>
4166 </div>
4167 <div class="padding"></div>
4168
4169 <div class="entry">
4170 <div class="title">
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>
4172 </div>
4173 <div class="date">
4174 10th September 2014
4175 </div>
4176 <div class="body">
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>
4187
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>
4193
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>
4197
4198 <p>Anyway, I've updated my ~/.gnupg/options file to now include this
4199 line:</p>
4200
4201 <p><blockquote><pre>
4202 keyserver pool.sks-keyservers.net
4203 </pre></blockquote></p>
4204
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>
4209
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.
4213 %
4214 </pre></blockquote></p>
4215
4216 <p>Now if only
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>
4226
4227 </div>
4228 <div class="tags">
4229
4230
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>.
4232
4233
4234 </div>
4235 </div>
4236 <div class="padding"></div>
4237
4238 <div class="entry">
4239 <div class="title">
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>
4241 </div>
4242 <div class="date">
4243 17th June 2014
4244 </div>
4245 <div class="body">
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>
4251
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
4263 goals.</p>
4264
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>
4289
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>
4307
4308 <p>The translators use different tools to edit the .po files. We
4309 recommend using
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>
4318
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>
4327
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>
4336
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>
4344
4345 </div>
4346 <div class="tags">
4347
4348
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>.
4350
4351
4352 </div>
4353 </div>
4354 <div class="padding"></div>
4355
4356 <div class="entry">
4357 <div class="title">
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>
4359 </div>
4360 <div class="date">
4361 23rd April 2014
4362 </div>
4363 <div class="body">
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>
4373
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
4378 this:</p>
4379
4380 <p><blockquote><pre>
4381 Task: isenkram
4382 Section: hardware
4383 Description: Hardware specific packages (autodetected by isenkram)
4384 Based on the detected hardware various hardware specific packages are
4385 proposed.
4386 Test-new-install: mark show
4387 Relevance: 8
4388 Packages: for-current-hardware
4389 </pre></blockquote></p>
4390
4391 <p>The second part is in
4392 <tt>/usr/lib/tasksel/packages/for-current-hardware</tt> and look like
4393 this:</p>
4394
4395 <p><blockquote><pre>
4396 #!/bin/sh
4397 #
4398 (
4399 isenkram-lookup
4400 isenkram-autoinstall-firmware -l
4401 ) | sort -u
4402 </pre></blockquote></p>
4403
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>
4410
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
4424 unstable today.</p>
4425
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>
4435
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
4440 package. See also
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>
4445
4446 </div>
4447 <div class="tags">
4448
4449
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>.
4451
4452
4453 </div>
4454 </div>
4455 <div class="padding"></div>
4456
4457 <div class="entry">
4458 <div class="title">
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>
4460 </div>
4461 <div class="date">
4462 15th April 2014
4463 </div>
4464 <div class="body">
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>
4471
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>
4479
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>
4492
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
4495 become root:</p>
4496
4497 <p><pre>
4498 sudo apt-get install git vmdebootstrap mercurial python-docutils \
4499 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
4500 u-boot-tools
4501 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
4502 freedom-maker
4503 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
4504 </pre></p>
4505
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>
4514
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>
4518
4519 <p><pre>
4520 url=<a href="http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat</a>
4521 </pre></p>
4522
4523 <p>I have not tested it myself the last few weeks, so I do not know if
4524 it still work.</p>
4525
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>
4533
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>
4540
4541 </div>
4542 <div class="tags">
4543
4544
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>.
4546
4547
4548 </div>
4549 </div>
4550 <div class="padding"></div>
4551
4552 <div class="entry">
4553 <div class="title">
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>
4555 </div>
4556 <div class="date">
4557 9th April 2014
4558 </div>
4559 <div class="body">
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>
4574
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>
4588
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
4603 account.</p>
4604
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:
4612
4613 <p><blockquote><pre>
4614 [s3c]
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>
4620
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>
4625
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...
4638 Dumping metadata...
4639 ..objects..
4640 ..blocks..
4641 ..inodes..
4642 ..inode_blocks..
4643 ..symlink_targets..
4644 ..names..
4645 ..contents..
4646 ..ext_attributes..
4647 Compressing and uploading metadata...
4648 Wrote 0.00 MB of compressed metadata.
4649 # </pre></blockquote></p>
4650
4651 <p>The next step is mounting the file system to make the storage available.
4652
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...
4658 Reading metadata...
4659 ..objects..
4660 ..blocks..
4661 ..inodes..
4662 ..inode_blocks..
4663 ..symlink_targets..
4664 ..names..
4665 ..contents..
4666 ..ext_attributes..
4667 Mounting filesystem...
4668 # df -h /s3ql
4669 Filesystem Size Used Avail Use% Mounted on
4670 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
4671 #
4672 </pre></blockquote></p>
4673
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:
4680
4681 <p><blockquote><pre>
4682 # umount.s3ql /s3ql
4683 #
4684 </pre></blockquote></p>
4685
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
4690 file system:</p>
4691
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...
4724 Dumping metadata...
4725 ..objects..
4726 ..blocks..
4727 ..inodes..
4728 ..inode_blocks..
4729 ..symlink_targets..
4730 ..names..
4731 ..contents..
4732 ..ext_attributes..
4733 Compressing and uploading metadata...
4734 Wrote 0.89 MB of compressed metadata.
4735 #
4736 </pre></blockquote></p>
4737
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
4747 working set.</p>
4748
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
4751 busy:</p>
4752
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.
4758 #
4759 </pre></blockquote></p>
4760
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
4765 s3qlctrl:
4766
4767 <p><blockquote><pre>
4768 # s3qlctrl upload-meta /s3ql
4769 # s3qlctrl flushcache /s3ql
4770 #
4771 </pre></blockquote></p>
4772
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
4776 a report:</p>
4777
4778 <p><blockquote><pre>
4779 # s3qlstat /s3ql
4780 Directory entries: 9141
4781 Inodes: 9143
4782 Data blocks: 8851
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)
4788 #
4789 </pre></blockquote></p>
4790
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
4801 best.</p>
4802
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
4807 poster is titled
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>
4813
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>
4822
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>
4830
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>
4834
4835 </div>
4836 <div class="tags">
4837
4838
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>.
4840
4841
4842 </div>
4843 </div>
4844 <div class="padding"></div>
4845
4846 <div class="entry">
4847 <div class="title">
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>
4849 </div>
4850 <div class="date">
4851 14th March 2014
4852 </div>
4853 <div class="body">
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
4860 release (0.2).</p>
4861
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
4870 and build using
4871 <a href="http://packages.qa.debian.org/vmdebootstrap">vmdebootstrap</a>
4872 with a user with sudo access to become root:
4873
4874 <pre>
4875 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
4876 freedom-maker
4877 sudo apt-get install git vmdebootstrap mercurial python-docutils \
4878 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
4879 u-boot-tools
4880 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
4881 </pre>
4882
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
4888 kpartx call.</p>
4889
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>
4893
4894 <pre>
4895 url=<a href="http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat</a>
4896 </pre>
4897
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>
4904
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>
4911
4912 </div>
4913 <div class="tags">
4914
4915
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>.
4917
4918
4919 </div>
4920 </div>
4921 <div class="padding"></div>
4922
4923 <div class="entry">
4924 <div class="title">
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>
4926 </div>
4927 <div class="date">
4928 22nd February 2014
4929 </div>
4930 <div class="body">
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>
4939
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>
4945
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>
4955
4956 </div>
4957 <div class="tags">
4958
4959
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>.
4961
4962
4963 </div>
4964 </div>
4965 <div class="padding"></div>
4966
4967 <div class="entry">
4968 <div class="title">
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>
4970 </div>
4971 <div class="date">
4972 3rd February 2014
4973 </div>
4974 <div class="body">
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>
4984
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>
4991
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}')
4996 dhclient /dev/eth0
4997 </pre></blockquote></p>
4998
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>
5002
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
5007 side.</p>
5008
5009 <p>Run these commands as root to upgrade and test the new sysvinit
5010 stuff:</p>
5011
5012 <p><blockquote><pre>
5013 cat > /etc/apt/sources.list.d/experimental.list &lt;&lt;EOF
5014 deb http://http.debian.net/debian/ experimental main
5015 EOF
5016 apt-get update
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>
5022
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
5031 ssh instead.
5032
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>
5039
5040 <p><blockquote><pre>
5041 cat > /etc/apt/sources.list.d/hurd-ci.list &lt;&lt;EOF
5042 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
5043 EOF
5044 </pre></blockquote></p>
5045
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>
5050
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
5068 #
5069 </pre></blockquote></p>
5070
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>
5075
5076 </div>
5077 <div class="tags">
5078
5079
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>.
5081
5082
5083 </div>
5084 </div>
5085 <div class="padding"></div>
5086
5087 <div class="entry">
5088 <div class="title">
5089 <a href="http://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html">New chrpath release 0.16</a>
5090 </div>
5091 <div class="date">
5092 14th January 2014
5093 </div>
5094 <div class="body">
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>
5119
5120 <p>New in 0.16 released 2014-01-14:</p>
5121
5122 <ul>
5123
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>
5127
5128 </ul>
5129
5130 <p>You can
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>
5136
5137 </div>
5138 <div class="tags">
5139
5140
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>.
5142
5143
5144 </div>
5145 </div>
5146 <div class="padding"></div>
5147
5148 <div class="entry">
5149 <div class="title">
5150 <a href="http://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html">New chrpath release 0.15</a>
5151 </div>
5152 <div class="date">
5153 24th November 2013
5154 </div>
5155 <div class="body">
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>
5170
5171 <p>New in 0.15 released 2013-11-24:</p>
5172
5173 <ul>
5174
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
5177 up.</li>
5178
5179 <li>Updated README with current URLs.</li>
5180
5181 <li>Added byteswap fix found in Ubuntu, credited Jeremy Kerr and
5182 Matthias Klose.</li>
5183
5184 <li>Added missing help for -k|--keepgoing option, using patch by
5185 Petr Machata found in Fedora.</li>
5186
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>
5190
5191 </ul>
5192
5193 <p>You can
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>
5199
5200 </div>
5201 <div class="tags">
5202
5203
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>.
5205
5206
5207 </div>
5208 </div>
5209 <div class="padding"></div>
5210
5211 <div class="entry">
5212 <div class="title">
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>
5214 </div>
5215 <div class="date">
5216 2nd November 2013
5217 </div>
5218 <div class="body">
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>
5224
5225 <p><pre>
5226 #!/lib/init/init-d-script
5227 ### BEGIN INIT INFO
5228 # Provides: rsyslog
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.
5238 ### END INIT INFO
5239 DESC="enhanced syslogd"
5240 DAEMON=/usr/sbin/rsyslogd
5241 </pre></p>
5242
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
5245 info/comments.</p>
5246
5247 <p>How to do this, you ask? Well, one create a new script
5248 /lib/init/init-d-script looking something like this:
5249
5250 <p><pre>
5251 #!/bin/sh
5252
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
5257
5258 #
5259 # Function that starts the daemon/service
5260
5261 #
5262 do_start()
5263 {
5264 # Return
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 \
5269 || return 1
5270 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
5271 $DAEMON_ARGS \
5272 || return 2
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.
5276 }
5277
5278 #
5279 # Function that stops the daemon/service
5280 #
5281 do_stop()
5282 {
5283 # Return
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
5289 RETVAL="$?"
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.
5300 rm -f $PIDFILE
5301 return "$RETVAL"
5302 }
5303
5304 #
5305 # Function that sends a SIGHUP to the daemon/service
5306 #
5307 do_reload() {
5308 #
5309 # If the daemon can reload its configuration without
5310 # restarting (for example, when it is sent a SIGHUP),
5311 # then implement that here.
5312 #
5313 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
5314 return 0
5315 }
5316
5317 SCRIPTNAME=$1
5318 scriptbasename="$(basename $1)"
5319 echo "SN: $scriptbasename"
5320 if [ "$scriptbasename" != "init-d-library" ] ; then
5321 script="$1"
5322 shift
5323 . $script
5324 else
5325 exit 0
5326 fi
5327
5328 NAME=$(basename $DAEMON)
5329 PIDFILE=/var/run/$NAME.pid
5330
5331 # Exit if the package is not installed
5332 #[ -x "$DAEMON" ] || exit 0
5333
5334 # Read configuration variable file if it is present
5335 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
5336
5337 # Load the VERBOSE setting and other rcS variables
5338 . /lib/init/vars.sh
5339
5340 case "$1" in
5341 start)
5342 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
5343 do_start
5344 case "$?" in
5345 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
5346 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
5347 esac
5348 ;;
5349 stop)
5350 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
5351 do_stop
5352 case "$?" in
5353 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
5354 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
5355 esac
5356 ;;
5357 status)
5358 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
5359 ;;
5360 #reload|force-reload)
5361 #
5362 # If do_reload() is not implemented then leave this commented out
5363 # and leave 'force-reload' as an alias for 'restart'.
5364 #
5365 #log_daemon_msg "Reloading $DESC" "$NAME"
5366 #do_reload
5367 #log_end_msg $?
5368 #;;
5369 restart|force-reload)
5370 #
5371 # If the "reload" option is implemented then remove the
5372 # 'force-reload' alias
5373 #
5374 log_daemon_msg "Restarting $DESC" "$NAME"
5375 do_stop
5376 case "$?" in
5377 0|1)
5378 do_start
5379 case "$?" in
5380 0) log_end_msg 0 ;;
5381 1) log_end_msg 1 ;; # Old process is still running
5382 *) log_end_msg 1 ;; # Failed to start
5383 esac
5384 ;;
5385 *)
5386 # Failed to stop
5387 log_end_msg 1
5388 ;;
5389 esac
5390 ;;
5391 *)
5392 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
5393 exit 3
5394 ;;
5395 esac
5396
5397 :
5398 </pre></p>
5399
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>
5404
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>
5410
5411 </div>
5412 <div class="tags">
5413
5414
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>.
5416
5417
5418 </div>
5419 </div>
5420 <div class="padding"></div>
5421
5422 <div class="entry">
5423 <div class="title">
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>
5425 </div>
5426 <div class="date">
5427 1st November 2013
5428 </div>
5429 <div class="body">
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>
5442
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>
5445
5446 </div>
5447 <div class="tags">
5448
5449
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>.
5451
5452
5453 </div>
5454 </div>
5455 <div class="padding"></div>
5456
5457 <div class="entry">
5458 <div class="title">
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>
5460 </div>
5461 <div class="date">
5462 27th October 2013
5463 </div>
5464 <div class="body">
5465 <p>The
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
5477 Raspberry Pi.</p>
5478
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
5500 available from
5501 <a href="http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/">the
5502 upstream project page</a>.</p>
5503
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
5507 list:</p>
5508
5509 <p><pre>
5510 #!/bin/sh
5511 set -e # Exit on first error
5512 rootdir="$1"
5513 cd "$rootdir"
5514 cat &lt;&lt;EOF > etc/apt/sources.list
5515 deb http://http.debian.net/debian/ jessie main contrib non-free
5516 EOF
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
5525 </pre></p>
5526
5527 <p>Next, fetch the latest vmdebootstrap script and call it like this
5528 to build the image:</p>
5529
5530 <pre>
5531 sudo ./vmdebootstrap \
5532 --variant minbase \
5533 --arch armel \
5534 --distribution jessie \
5535 --mirror http://http.debian.net/debian \
5536 --image test.img \
5537 --size 600M \
5538 --bootsize 64M \
5539 --boottype vfat \
5540 --log-level debug \
5541 --verbose \
5542 --no-kernel \
5543 --no-extlinux \
5544 --root-password raspberry \
5545 --hostname raspberrypi \
5546 --foreign /usr/bin/qemu-arm-static \
5547 --customize `pwd`/customize \
5548 --package netbase \
5549 --package git-core \
5550 --package binutils \
5551 --package ca-certificates \
5552 --package wget \
5553 --package kmod
5554 </pre></p>
5555
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>
5563
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>
5567
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>
5572
5573 </div>
5574 <div class="tags">
5575
5576
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>.
5578
5579
5580 </div>
5581 </div>
5582 <div class="padding"></div>
5583
5584 <div class="entry">
5585 <div class="title">
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>
5587 </div>
5588 <div class="date">
5589 15th October 2013
5590 </div>
5591 <div class="body">
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
5594 these. :)</p>
5595
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>
5603
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>
5609
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
5616 too.</p>
5617
5618 </div>
5619 <div class="tags">
5620
5621
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>.
5623
5624
5625 </div>
5626 </div>
5627 <div class="padding"></div>
5628
5629 <div class="entry">
5630 <div class="title">
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>
5632 </div>
5633 <div class="date">
5634 27th September 2013
5635 </div>
5636 <div class="body">
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>
5641
5642 <ul>
5643
5644 <li><a href="http://www.youtube.com/watch?v=ukvUz5taxvA">FreedomBox -
5645 2,5 minute marketing film</a> (Youtube)</li>
5646
5647 <li><a href="http://www.youtube.com/watch?v=SzW25QTVWsE">Eben Moglen
5648 discusses the Freedombox on CBS news 2011</a> (Youtube)</li>
5649
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>
5653 (Youtube)</li>
5654
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>
5657
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>
5660
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>
5664
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>
5667 (Youtube)</li>
5668
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>
5671
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>
5674
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>
5678
5679 </ul>
5680
5681 <p>A larger list is available from
5682 <a href="https://wiki.debian.org/FreedomBox/TalksAndPresentations">the
5683 Freedombox Wiki</a>.</p>
5684
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>
5696
5697 </div>
5698 <div class="tags">
5699
5700
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>.
5702
5703
5704 </div>
5705 </div>
5706 <div class="padding"></div>
5707
5708 <div class="entry">
5709 <div class="title">
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>
5711 </div>
5712 <div class="date">
5713 10th September 2013
5714 </div>
5715 <div class="body">
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>
5725
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>
5731
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>
5747
5748 <p>The current Freedombox setup consist of a set of bootstrapping
5749 scripts
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>
5769
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
5772 at.</p>
5773
5774 <p><strong>Debian Wheezy amd64</strong></p>
5775
5776 <ol>
5777
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>
5783
5784 <li>Answer the few language/region/password questions and pick disk to
5785 install on.</li>
5786
5787 <li>When the installation is finished and the machine have rebooted a
5788 few times, your Freedombox is ready for testing.</li>
5789
5790 </ol>
5791
5792 <p><strong>Raspberry Pi Raspbian</strong></p>
5793
5794 <ol>
5795
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>
5799 <pre>
5800 deb <a href="http://www.reinholdtsen.name/freedombox/">http://www.reinholdtsen.name/freedombox</a> wheezy main
5801 </pre></li>
5802 <li><p>Run this as root:</p>
5803 <pre>
5804 wget -O - http://www.reinholdtsen.name/freedombox/BE1A583D.asc | \
5805 apt-key add -
5806 apt-get update
5807 apt-get install freedombox-setup
5808 /usr/lib/freedombox/setup
5809 </pre></li>
5810 <li>Reboot into your freshly created Freedombox.</li>
5811
5812 </ol>
5813
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>
5819
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>
5824
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>
5831
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>
5838
5839 </div>
5840 <div class="tags">
5841
5842
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>.
5844
5845
5846 </div>
5847 </div>
5848 <div class="padding"></div>
5849
5850 <div class="entry">
5851 <div class="title">
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>
5853 </div>
5854 <div class="date">
5855 18th August 2013
5856 </div>
5857 <div class="body">
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>
5865
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>
5879
5880 </div>
5881 <div class="tags">
5882
5883
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>.
5885
5886
5887 </div>
5888 </div>
5889 <div class="padding"></div>
5890
5891 <div class="entry">
5892 <div class="title">
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>
5894 </div>
5895 <div class="date">
5896 17th July 2013
5897 </div>
5898 <div class="body">
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>
5915
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>
5928
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>
5936
5937 <ul>
5938
5939 <li>Set up cryptsetup to pass TRIM commands to the physical disk
5940 (adding discard to /etc/crypttab)</li>
5941
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>
5945
5946 <li>Set relatime as a file system option for ext3 and ext4 file
5947 systems.</li>
5948
5949 <li>Tell swap to use TRIM commands by adding 'discard' to
5950 /etc/fstab.</li>
5951
5952 <li>Change I/O scheduler from cfq to deadline using a udev rule.</li>
5953
5954 <li>Run fstrim on every ext3 and ext4 file system every night (from
5955 cron.daily).</li>
5956
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>
5959
5960 </ul>
5961
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>
5971
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>
5975
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>
5980
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>
5983
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>
5987
5988 <p>The package should work on Ubuntu too, but I have not yet tested it
5989 there.</p>
5990
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
5997 back.</p>
5998
5999 </div>
6000 <div class="tags">
6001
6002
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>.
6004
6005
6006 </div>
6007 </div>
6008 <div class="padding"></div>
6009
6010 <div class="entry">
6011 <div class="title">
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>
6013 </div>
6014 <div class="date">
6015 10th July 2013
6016 </div>
6017 <div class="body">
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>
6026
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>
6039
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>
6046
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>
6053
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
6058 exist).</p>
6059
6060 </div>
6061 <div class="tags">
6062
6063
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>.
6065
6066
6067 </div>
6068 </div>
6069 <div class="padding"></div>
6070
6071 <div class="entry">
6072 <div class="title">
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>
6074 </div>
6075 <div class="date">
6076 9th July 2013
6077 </div>
6078 <div class="body">
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
6085 Bitraf</a>.</p>
6086
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>
6092
6093 </div>
6094 <div class="tags">
6095
6096
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>.
6098
6099
6100 </div>
6101 </div>
6102 <div class="padding"></div>
6103
6104 <div class="entry">
6105 <div class="title">
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>
6107 </div>
6108 <div class="date">
6109 5th July 2013
6110 </div>
6111 <div class="body">
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
6117 ended up picking a
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
6122 on that below.</p>
6123
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>
6133
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>
6141
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>
6144
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.
6166 There is even a
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>
6170
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
6177 fixed. :)</p>
6178
6179 </div>
6180 <div class="tags">
6181
6182
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>.
6184
6185
6186 </div>
6187 </div>
6188 <div class="padding"></div>
6189
6190 <div class="entry">
6191 <div class="title">
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>
6193 </div>
6194 <div class="date">
6195 4th July 2013
6196 </div>
6197 <div class="body">
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>
6207
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>
6215
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>
6222
6223 <p>I look forward to figuring out how to turn off the touch pad.</p>
6224
6225 </div>
6226 <div class="tags">
6227
6228
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>.
6230
6231
6232 </div>
6233 </div>
6234 <div class="padding"></div>
6235
6236 <div class="entry">
6237 <div class="title">
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>
6239 </div>
6240 <div class="date">
6241 25th June 2013
6242 </div>
6243 <div class="body">
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>
6255
6256 <p><pre>
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
6263 firmware-ipw2x00
6264 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) ...
6270 #
6271 </pre></p>
6272
6273 <p>When all the requested firmware is present, a simple message is
6274 printed instead:</p>
6275
6276 <p><pre>
6277 # isenkram-autoinstall-firmware
6278 info: did not find any firmware files requested by loaded kernel modules. exiting
6279 #
6280 </pre></p>
6281
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>
6284
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
6293 machine.</p>
6294
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>
6301
6302 </div>
6303 <div class="tags">
6304
6305
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>.
6307
6308
6309 </div>
6310 </div>
6311 <div class="padding"></div>
6312
6313 <div class="entry">
6314 <div class="title">
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>
6316 </div>
6317 <div class="date">
6318 11th June 2013
6319 </div>
6320 <div class="body">
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>
6333
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>
6339
6340 <pre>
6341 echo options i915 invert_brightness=1 | tee /etc/modprobe.d/i915.conf
6342 update-initramfs -u -k all
6343 </pre>
6344
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
6355 number.</p>
6356
6357 <p>My Packard Bell EasyNote LV got this output from <tt>lspci
6358 -vvnn</tt> for the video card in question:</p>
6359
6360 <p><pre>
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-
6369 Latency: 0
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
6377 </pre></p>
6378
6379 <p>The resulting intel_quirks entry would then look like this:</p>
6380
6381 <p><pre>
6382 struct intel_quirk intel_quirks[] = {
6383 ...
6384 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
6385 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
6386 ...
6387 }
6388 </pre></p>
6389
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
6396 yet shown up in
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>
6403
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>
6416
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
6421 backlight.</p>
6422
6423 </div>
6424 <div class="tags">
6425
6426
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>.
6428
6429
6430 </div>
6431 </div>
6432 <div class="padding"></div>
6433
6434 <div class="entry">
6435 <div class="title">
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>
6437 </div>
6438 <div class="date">
6439 27th May 2013
6440 </div>
6441 <div class="body">
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
6447 and Windows 8.</p>
6448
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
6453 enough to tell.</p>
6454
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
6463 to follow.</p>
6464
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>
6473
6474 <p>I've updated the
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
6478 machine.</p>
6479
6480 <p>Thanks to Bob Rosbag, Florian Weimer, Philipp Kern, Ben Hutching,
6481 Michael Tokarev and others for feedback and ideas.</p>
6482
6483 </div>
6484 <div class="tags">
6485
6486
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>.
6488
6489
6490 </div>
6491 </div>
6492 <div class="padding"></div>
6493
6494 <div class="entry">
6495 <div class="title">
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>
6497 </div>
6498 <div class="date">
6499 25th May 2013
6500 </div>
6501 <div class="body">
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>
6508
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>
6519
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>
6526
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
6529 on new Laptops?</p>
6530
6531 </div>
6532 <div class="tags">
6533
6534
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>.
6536
6537
6538 </div>
6539 </div>
6540 <div class="padding"></div>
6541
6542 <div class="entry">
6543 <div class="title">
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>
6545 </div>
6546 <div class="date">
6547 17th May 2013
6548 </div>
6549 <div class="body">
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>.
6560
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>
6566
6567 <p>The script,
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>
6572
6573 <ol>
6574
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>
6586
6587 </ol>
6588
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>
6593
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>
6600
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>
6604
6605 <p><pre>
6606 PROFILE="Roaming-Workstation"
6607 DESKTOP="lxde"
6608 </pre></p>
6609
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
6613 boot.</p>
6614
6615 </div>
6616 <div class="tags">
6617
6618
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>.
6620
6621
6622 </div>
6623 </div>
6624 <div class="padding"></div>
6625
6626 <div class="entry">
6627 <div class="title">
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>
6629 </div>
6630 <div class="date">
6631 11th May 2013
6632 </div>
6633 <div class="body">
6634 <P>In January,
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>
6647
6648 <p><table>
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>
6659 </table></p>
6660
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>
6664
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>
6668
6669 </div>
6670 <div class="tags">
6671
6672
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>.
6674
6675
6676 </div>
6677 </div>
6678 <div class="padding"></div>
6679
6680 <div class="entry">
6681 <div class="title">
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>
6683 </div>
6684 <div class="date">
6685 5th May 2013
6686 </div>
6687 <div class="body">
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
6692 soon.</p>
6693
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
6704 Edu.</a>
6705
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
6710 follow.<p>
6711
6712 </div>
6713 <div class="tags">
6714
6715
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>.
6717
6718
6719 </div>
6720 </div>
6721 <div class="padding"></div>
6722
6723 <div class="entry">
6724 <div class="title">
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>
6726 </div>
6727 <div class="date">
6728 3rd April 2013
6729 </div>
6730 <div class="body">
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>
6735
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
6741 BTS. :)</p>
6742
6743 </div>
6744 <div class="tags">
6745
6746
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>.
6748
6749
6750 </div>
6751 </div>
6752 <div class="padding"></div>
6753
6754 <div class="entry">
6755 <div class="title">
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>
6757 </div>
6758 <div class="date">
6759 2nd February 2013
6760 </div>
6761 <div class="body">
6762 <p>My
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
6769 version too.</p>
6770
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>
6779
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
6784 it. :)</p>
6785
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>
6789
6790 </div>
6791 <div class="tags">
6792
6793
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>.
6795
6796
6797 </div>
6798 </div>
6799 <div class="padding"></div>
6800
6801 <div class="entry">
6802 <div class="title">
6803 <a href="http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">Welcome to the world, Isenkram!</a>
6804 </div>
6805 <div class="date">
6806 22nd January 2013
6807 </div>
6808 <div class="body">
6809 <p>Yesterday, I
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>
6823
6824 <pre>
6825 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
6826 cd isenkram && git-buildpackage -us -uc
6827 </pre>
6828
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>
6833
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
6838 word.</p>
6839
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
6842 process.</p>
6843
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>
6846
6847 </div>
6848 <div class="tags">
6849
6850
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>.
6852
6853
6854 </div>
6855 </div>
6856 <div class="padding"></div>
6857
6858 <div class="entry">
6859 <div class="title">
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>
6861 </div>
6862 <div class="date">
6863 21st January 2013
6864 </div>
6865 <div class="body">
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
6870 it, fetch the
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>
6875
6876 <p>The design is simple:</p>
6877
6878 <ul>
6879
6880 <li>Add desktop entry in /usr/share/autostart/ causing a program
6881 hw-support-handlerd to start when the user log in.</li>
6882
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
6885 initially did.</li>
6886
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>
6891
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>
6896
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>
6899
6900 <li>aptdaemon ask for root password or sudo password, and install the
6901 package while showing progress information in a window.</li>
6902
6903 </ul>
6904
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>
6909
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>
6915
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>
6924
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
6927 '<tt>svn checkout
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>
6931
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>
6937
6938 </div>
6939 <div class="tags">
6940
6941
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>.
6943
6944
6945 </div>
6946 </div>
6947 <div class="padding"></div>
6948
6949 <div class="entry">
6950 <div class="title">
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>
6952 </div>
6953 <div class="date">
6954 19th January 2013
6955 </div>
6956 <div class="body">
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.
6966
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>
6969
6970 <ul>
6971
6972 <li>Lightweight (around 1 kg) and small volume (preferably smaller
6973 than A4).</li>
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
6982 size).</li>
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
6986 the time).
6987
6988 </ul>
6989
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>
6998
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>
7005
7006 </div>
7007 <div class="tags">
7008
7009
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>.
7011
7012
7013 </div>
7014 </div>
7015 <div class="padding"></div>
7016
7017 <div class="entry">
7018 <div class="title">
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>
7020 </div>
7021 <div class="date">
7022 18th January 2013
7023 </div>
7024 <div class="body">
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>
7032
7033 <pre>
7034 #!/usr/bin/python
7035 import sys
7036 import apt
7037 def pkgs_handling_mimetype(mimetype):
7038 cache = apt.Cache()
7039 cache.open(None)
7040 thepkgs = []
7041 for pkg in cache:
7042 version = pkg.candidate
7043 if version is None:
7044 version = pkg.installed
7045 if version is None:
7046 continue
7047 record = version.record
7048 if not record.has_key('Npp-MimeType'):
7049 continue
7050 mime_types = record['Npp-MimeType'].split(',')
7051 for t in mime_types:
7052 t = t.rstrip().strip()
7053 if t == mimetype:
7054 thepkgs.append(pkg.name)
7055 return thepkgs
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):
7061 print " %s" %pkg
7062 </pre>
7063
7064 <p>It can be used like this to look up a given MIME type:</p>
7065
7066 <pre>
7067 % ./apt-find-browserplug-for-mimetype
7068 Browser plugin packages supporting audio/ogg:
7069 gecko-mediaplayer
7070 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
7071 Browser plugin packages supporting application/x-shockwave-flash:
7072 browser-plugin-gnash
7073 %
7074 </pre>
7075
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>
7080
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>
7087
7088 </div>
7089 <div class="tags">
7090
7091
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>.
7093
7094
7095 </div>
7096 </div>
7097 <div class="padding"></div>
7098
7099 <div class="entry">
7100 <div class="title">
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>
7102 </div>
7103 <div class="date">
7104 16th January 2013
7105 </div>
7106 <div class="body">
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>
7115
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
7119 can be found on the
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>
7125
7126 <p><strong>Debian Stable:</strong></p>
7127
7128 <pre>
7129 count MIME type
7130 ----- -----------------------
7131 32 text/plain
7132 30 audio/mpeg
7133 29 image/png
7134 28 image/jpeg
7135 27 application/ogg
7136 26 audio/x-mp3
7137 25 image/tiff
7138 25 image/gif
7139 22 image/bmp
7140 22 audio/x-wav
7141 20 audio/x-flac
7142 19 audio/x-mpegurl
7143 18 video/x-ms-asf
7144 18 audio/x-musepack
7145 18 audio/x-mpeg
7146 18 application/x-ogg
7147 17 video/mpeg
7148 17 audio/x-scpls
7149 17 audio/ogg
7150 16 video/x-ms-wmv
7151 </pre>
7152
7153 <p><strong>Debian Testing:</strong></p>
7154
7155 <pre>
7156 count MIME type
7157 ----- -----------------------
7158 33 text/plain
7159 32 image/png
7160 32 image/jpeg
7161 29 audio/mpeg
7162 27 image/gif
7163 26 image/tiff
7164 26 application/ogg
7165 25 audio/x-mp3
7166 22 image/bmp
7167 21 audio/x-wav
7168 19 audio/x-mpegurl
7169 19 audio/x-mpeg
7170 18 video/mpeg
7171 18 audio/x-scpls
7172 18 audio/x-flac
7173 18 application/x-ogg
7174 17 video/x-ms-asf
7175 17 text/html
7176 17 audio/x-musepack
7177 16 image/x-xbitmap
7178 </pre>
7179
7180 <p><strong>Debian Unstable:</strong></p>
7181
7182 <pre>
7183 count MIME type
7184 ----- -----------------------
7185 31 text/plain
7186 31 image/png
7187 31 image/jpeg
7188 29 audio/mpeg
7189 28 application/ogg
7190 27 image/gif
7191 26 image/tiff
7192 26 audio/x-mp3
7193 23 audio/x-wav
7194 22 image/bmp
7195 21 audio/x-flac
7196 20 audio/x-mpegurl
7197 19 audio/x-mpeg
7198 18 video/x-ms-asf
7199 18 video/mpeg
7200 18 audio/x-scpls
7201 18 application/x-ogg
7202 17 audio/x-musepack
7203 16 video/x-ms-wmv
7204 16 video/x-msvideo
7205 </pre>
7206
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
7210 issues.</p>
7211
7212 <p><strong>Update 2013-01-16 13:35</strong>: Updated numbers after
7213 discovering a typo in my script.</p>
7214
7215 </div>
7216 <div class="tags">
7217
7218
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>.
7220
7221
7222 </div>
7223 </div>
7224 <div class="padding"></div>
7225
7226 <div class="entry">
7227 <div class="title">
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>
7229 </div>
7230 <div class="date">
7231 15th January 2013
7232 </div>
7233 <div class="body">
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
7243 packages.</p>
7244
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
7248 modalias.</p>
7249
7250 <p><blockquote>
7251 Package: package-name
7252 <br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)</p>
7253 </blockquote></p>
7254
7255 <p>It is fairly trivial to write code to find the relevant packages
7256 for a given modalias value using this file.</p>
7257
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>
7260
7261 <p><blockquote>
7262 Package: cheese
7263 <br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)</p>
7264 </blockquote></p>
7265
7266 <p>An entry like this would suggest the pcmciautils package when a
7267 CardBus bridge (bus class 0607) PCI device is present:</p>
7268
7269 <p><blockquote>
7270 Package: pcmciautils
7271 <br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
7272 </blockquote></p>
7273
7274 <p>An entry like this would suggest the package colorhug-client when
7275 plugging in a ColorHug with USB IDs 04D8:F8DA:</p>
7276
7277 <p><blockquote>
7278 Package: colorhug-client
7279 <br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)</p>
7280 </blockquote></p>
7281
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>
7285
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
7293 Raring.</p>
7294
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
7299 try the
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>
7304
7305 <p>When I use it on a machine with a yubikey inserted, it suggest to
7306 install yubikey-personalization:</p>
7307
7308 <p><blockquote>
7309 % ./hw-support-lookup
7310 <br>yubikey-personalization
7311 <br>%
7312 </blockquote></p>
7313
7314 <p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
7315 propose to install the pcmciautils package:</p>
7316
7317 <p><blockquote>
7318 % ./hw-support-lookup
7319 <br>pcmciautils
7320 <br>%
7321 </blockquote></p>
7322
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>
7326
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
7334 see if it work.</p>
7335
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>
7340
7341 </div>
7342 <div class="tags">
7343
7344
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>.
7346
7347
7348 </div>
7349 </div>
7350 <div class="padding"></div>
7351
7352 <div class="entry">
7353 <div class="title">
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>
7355 </div>
7356 <div class="date">
7357 14th January 2013
7358 </div>
7359 <div class="body">
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
7364 in
7365 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
7366 Debian Edu subversion repository</a>:
7367
7368 <p><strong>Modalias decoded</strong></p>
7369
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 &lt;URL: <a href="https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias</a> &gt;,
7373 &lt;URL: <a href="http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device">http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device</a> &gt;,
7374 &lt;URL: <a href="http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c">http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c</a> &gt; and
7375 &lt;URL: <a href="http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup">http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup</a> &gt;.
7376
7377 <p>The modalias entries for a given Linux machine can be found using
7378 this shell script:</p>
7379
7380 <pre>
7381 find /sys -name modalias -print0 | xargs -0 cat | sort -u
7382 </pre>
7383
7384 <p>The supported modalias globs for a given kernel module can be found
7385 using modinfo:</p>
7386
7387 <pre>
7388 % /sbin/modinfo psmouse | grep alias:
7389 alias: serio:ty05pr*id*ex*
7390 alias: serio:ty01pr*id*ex*
7391 %
7392 </pre>
7393
7394 <p><strong>PCI subtype</strong></p>
7395
7396 <p>A typical PCI entry can look like this. This is an Intel Host
7397 Bridge memory controller:</p>
7398
7399 <p><blockquote>
7400 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
7401 </blockquote></p>
7402
7403 <p>This represent these values:</p>
7404
7405 <pre>
7406 v 00008086 (vendor)
7407 d 00002770 (device)
7408 sv 00001028 (subvendor)
7409 sd 000001AD (subdevice)
7410 bc 06 (bus class)
7411 sc 00 (bus subclass)
7412 i 00 (interface)
7413 </pre>
7414
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>
7419
7420 <p>Not sure how to figure out the interface value, nor what it
7421 means.</p>
7422
7423 <p><strong>USB subtype</strong></p>
7424
7425 <p>Some typical USB entries can look like this. This is an internal
7426 USB hub in a laptop:</p>
7427
7428 <p><blockquote>
7429 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
7430 </blockquote></p>
7431
7432 <p>Here is the values included in this alias:</p>
7433
7434 <pre>
7435 v 1D6B (device vendor)
7436 p 0001 (device product)
7437 d 0206 (bcddevice)
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)
7444 </pre>
7445
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>
7449
7450 <p><blockquote>
7451 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
7452 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
7453 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
7454 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
7455 </blockquote></p>
7456
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>
7460
7461 <p><strong>ACPI subtype</strong></p>
7462
7463 <p>The ACPI type is used for several non-PCI/USB stuff. This is an IR
7464 receiver in a Thinkpad X40:</p>
7465
7466 <p><blockquote>
7467 acpi:IBM0071:PNP0511:
7468 </blockquote></p>
7469
7470 <p>The values between the colons are IDs.</p>
7471
7472 <p><strong>DMI subtype</strong></p>
7473
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>
7477
7478 <p><blockquote>
7479 dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
7480 </blockquote></p>
7481
7482 <p>The values present are</p>
7483
7484 <pre>
7485 bvn IBM (BIOS vendor)
7486 bvr 1UETB6WW(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)
7497 </pre>
7498
7499 <p>The chassis type 10 is Notebook. Other interesting values can be
7500 found in the dmidecode source:</p>
7501
7502 <pre>
7503 3 Desktop
7504 4 Low Profile Desktop
7505 5 Pizza Box
7506 6 Mini Tower
7507 7 Tower
7508 8 Portable
7509 9 Laptop
7510 10 Notebook
7511 11 Hand Held
7512 12 Docking Station
7513 13 All In One
7514 14 Sub Notebook
7515 15 Space-saving
7516 16 Lunch Box
7517 17 Main Server Chassis
7518 18 Expansion Chassis
7519 19 Sub Chassis
7520 20 Bus Expansion Chassis
7521 21 Peripheral Chassis
7522 22 RAID Chassis
7523 23 Rack Mount Chassis
7524 24 Sealed-case PC
7525 25 Multi-system
7526 26 CompactPCI
7527 27 AdvancedTCA
7528 28 Blade
7529 29 Blade Enclosing
7530 </pre>
7531
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>
7535
7536 <p><strong>SerIO subtype</strong></p>
7537
7538 <p>This type is used for PS/2 mouse plugs. One example is from my
7539 test machine:</p>
7540
7541 <p><blockquote>
7542 serio:ty01pr00id00ex00
7543 </blockquote></p>
7544
7545 <p>The values present are</p>
7546
7547 <pre>
7548 ty 01 (type)
7549 pr 00 (prototype)
7550 id 00 (id)
7551 ex 00 (extra)
7552 </pre>
7553
7554 <p>This type is supported by the psmouse driver. I am not sure what
7555 the valid values are.</p>
7556
7557 <p><strong>Other subtypes</strong></p>
7558
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>
7566
7567 <p><strong>Looking up kernel modules using modalias values</strong></p>
7568
7569 <p>To check which kernel modules provide support for a given modalias,
7570 one can use the following shell script:</p>
7571
7572 <pre>
7573 for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
7574 echo "$id" ; \
7575 /sbin/modprobe --show-depends "$id"|sed 's/^/ /' ; \
7576 done
7577 </pre>
7578
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>
7581
7582 <pre>
7583 acpi:ACPI0003:
7584 insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko
7585 acpi:device:
7586 FATAL: Module acpi:device: not found.
7587 acpi:IBM0068:
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
7596 [...]
7597 </pre>
7598
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>
7603
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>
7607
7608 </div>
7609 <div class="tags">
7610
7611
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>.
7613
7614
7615 </div>
7616 </div>
7617 <div class="padding"></div>
7618
7619 <div class="entry">
7620 <div class="title">
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>
7622 </div>
7623 <div class="date">
7624 10th January 2013
7625 </div>
7626 <div class="body">
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>
7645
7646 </div>
7647 <div class="tags">
7648
7649
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>.
7651
7652
7653 </div>
7654 </div>
7655 <div class="padding"></div>
7656
7657 <div class="entry">
7658 <div class="title">
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>
7660 </div>
7661 <div class="date">
7662 9th January 2013
7663 </div>
7664 <div class="body">
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>
7676
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
7680 simple:
7681
7682 <ul>
7683
7684 <li>Add a desktop entry in /usr/share/autostart/ pointing to a program
7685 starting when a user log in.</li>
7686
7687 <li>Set this program up to listen for kernel events emitted when new
7688 hardware is inserted into the computer.</li>
7689
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
7692 packages.</li>
7693
7694 <li>Show a message to the user proposing to install the discovered
7695 package, and make it easy to install it.</li>
7696
7697 </ul>
7698
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
7703 packages.</p>
7704
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>
7719
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
7722 inserted):</p>
7723
7724 <p align="center"><img src="http://people.skolelinux.org/pere/blog/images/2013-01-09-hw-autoinstall.png"></p>
7725
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>
7729
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>
7737
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>
7747
7748 <p>If you want to help getting such feature implemented in Debian,
7749 please send me an email. :)</p>
7750
7751 </div>
7752 <div class="tags">
7753
7754
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>.
7756
7757
7758 </div>
7759 </div>
7760 <div class="padding"></div>
7761
7762 <div class="entry">
7763 <div class="title">
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>
7765 </div>
7766 <div class="date">
7767 2nd January 2013
7768 </div>
7769 <div class="body">
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>
7780
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>
7784
7785 </div>
7786 <div class="tags">
7787
7788
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>.
7790
7791
7792 </div>
7793 </div>
7794 <div class="padding"></div>
7795
7796 <div class="entry">
7797 <div class="title">
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>
7799 </div>
7800 <div class="date">
7801 25th December 2012
7802 </div>
7803 <div class="body">
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>
7806
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
7816 name.</p>
7817
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>
7821
7822 <blockquote><pre>
7823 git clone git://git.debian.org/git/collab-maint/bitcoin
7824 cd bitcoin
7825 DEB_MAINTAINER_MODE=1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
7826 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
7827 </pre></blockquote>
7828
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>
7838
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>
7842
7843 </div>
7844 <div class="tags">
7845
7846
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>.
7848
7849
7850 </div>
7851 </div>
7852 <div class="padding"></div>
7853
7854 <div class="entry">
7855 <div class="title">
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>
7857 </div>
7858 <div class="date">
7859 21st December 2012
7860 </div>
7861 <div class="body">
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
7878 Corallo in a
7879 <a href="https://launchpad.net/~bitcoin/+archive/bitcoin">PPA for
7880 Ubuntu</a>, and moved the useful pieces from that version into the
7881 Debian package.</p>
7882
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.
7893
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>
7909
7910 <p>My
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>
7923
7924 </div>
7925 <div class="tags">
7926
7927
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>.
7929
7930
7931 </div>
7932 </div>
7933 <div class="padding"></div>
7934
7935 <div class="entry">
7936 <div class="title">
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>
7938 </div>
7939 <div class="date">
7940 7th September 2012
7941 </div>
7942 <div class="body">
7943 <p>As I
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>
7949
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>
7954
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>
7959
7960 </div>
7961 <div class="tags">
7962
7963
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>.
7965
7966
7967 </div>
7968 </div>
7969 <div class="padding"></div>
7970
7971 <div class="entry">
7972 <div class="title">
7973 <a href="http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html">Gratulerer med 19-årsdagen, Debian!</a>
7974 </div>
7975 <div class="date">
7976 16th August 2012
7977 </div>
7978 <div class="body">
7979 <p>I dag fyller
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>
7983
7984 </div>
7985 <div class="tags">
7986
7987
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>.
7989
7990
7991 </div>
7992 </div>
7993 <div class="padding"></div>
7994
7995 <div class="entry">
7996 <div class="title">
7997 <a href="http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">Song book for Computer Scientists</a>
7998 </div>
7999 <div class="date">
8000 24th June 2012
8001 </div>
8002 <div class="body">
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>
8014
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>.
8022
8023 </div>
8024 <div class="tags">
8025
8026
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>.
8028
8029
8030 </div>
8031 </div>
8032 <div class="padding"></div>
8033
8034 <div class="entry">
8035 <div class="title">
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>
8037 </div>
8038 <div class="date">
8039 21st November 2011
8040 </div>
8041 <div class="body">
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>
8052
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>
8057
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>
8066
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>
8070
8071 <p><pre>
8072 #!/usr/bin/perl
8073 use strict;
8074 use warnings;
8075 use File::Temp qw(tempdir);
8076 BEGIN {
8077 # Install needed RHEL packages if missing
8078 my %rhelmodules = (
8079 'XML::Simple' => 'perl-XML-Simple',
8080 );
8081 for my $module (keys %rhelmodules) {
8082 eval "use $module;";
8083 if ($@) {
8084 my $pkg = $rhelmodules{$module};
8085 system("yum install -y $pkg");
8086 eval "use $module;";
8087 }
8088 }
8089 }
8090 my $errorsto = 'pere@hungry.com';
8091
8092 upgrade_dell();
8093
8094 exit 0;
8095
8096 sub run_firmware_script {
8097 my ($opts, $script) = @_;
8098 unless ($script) {
8099 print STDERR "fail: missing script name\n";
8100 exit 1
8101 }
8102 print STDERR "Running $script\n\n";
8103
8104 if (0 == system("sh $script $opts")) { # FIXME correct exit code handling
8105 print STDERR "success: firmware script ran succcessfully\n";
8106 } else {
8107 print STDERR "fail: firmware script returned error\n";
8108 }
8109 }
8110
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");
8120 }
8121 closedir $dh;
8122 }
8123 }
8124
8125 sub download {
8126 my $url = shift;
8127 print STDERR "info: Downloading $url\n";
8128 system("wget --quiet \"$url\"");
8129 }
8130
8131 sub upgrade_dell {
8132 my @dirs;
8133 my $product = `dmidecode -s system-product-name`;
8134 chomp $product;
8135
8136 if ($product =~ m/PowerEdge/) {
8137
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');
8140
8141 my $tmpdir = tempdir(
8142 CLEANUP => 1
8143 );
8144 chdir($tmpdir);
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
8149 my $fwopts = "-q";
8150 if (@paths) {
8151 for my $url (@paths) {
8152 fetch_dell_fw($url);
8153 }
8154 run_firmware_scripts($fwopts, $tmpdir);
8155 } else {
8156 print STDERR "error: Unsupported Dell model '$product'.\n";
8157 print STDERR "error: Please report to $errorsto.\n";
8158 }
8159 chdir('/');
8160 } else {
8161 print STDERR "error: Unsupported Dell model '$product'.\n";
8162 print STDERR "error: Please report to $errorsto.\n";
8163 }
8164 }
8165
8166 sub fetch_dell_fw {
8167 my $path = shift;
8168 my $url = "ftp://ftp.us.dell.com/$path";
8169 download($url);
8170 }
8171
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;
8177
8178 my $product = `dmidecode -s system-product-name`;
8179 chomp $product;
8180 my ($mybrand, $mymodel) = split(/\s+/, $product);
8181
8182 print STDERR "Finding firmware bundles for $mybrand $mymodel\n";
8183
8184 my $xml = XMLin($filename);
8185 my @paths;
8186 for my $bundle (@{$xml->{SoftwareBundle}}) {
8187 my $brand = $bundle->{TargetSystems}->{Brand}->{Display}->{content};
8188 my $model = $bundle->{TargetSystems}->{Brand}->{Model}->{Display}->{content};
8189 my $oscode;
8190 if ("ARRAY" eq ref $bundle->{TargetOSes}->{OperatingSystem}) {
8191 $oscode = $bundle->{TargetOSes}->{OperatingSystem}[0]->{osCode};
8192 } else {
8193 $oscode = $bundle->{TargetOSes}->{OperatingSystem}->{osCode};
8194 }
8195 if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
8196 {
8197 @paths = map { $_->{path} } @{$bundle->{Contents}->{Package}};
8198 }
8199 }
8200 for my $component (@{$xml->{SoftwareComponent}}) {
8201 my $componenttype = $component->{ComponentType}->{value};
8202
8203 # Drop application packages, only firmware and BIOS
8204 next if 'APAC' eq $componenttype;
8205
8206 my $cpath = $component->{path};
8207 for my $path (@paths) {
8208 if ($cpath =~ m%/$path$%) {
8209 push(@paths, $cpath);
8210 }
8211 }
8212 }
8213 return @paths;
8214 }
8215 </pre>
8216
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
8221 outdated.</p>
8222
8223 </div>
8224 <div class="tags">
8225
8226
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>.
8228
8229
8230 </div>
8231 </div>
8232 <div class="padding"></div>
8233
8234 <div class="entry">
8235 <div class="title">
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>
8237 </div>
8238 <div class="date">
8239 4th August 2011
8240 </div>
8241 <div class="body">
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>
8251
8252 <p><blockquote>
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)
8256 </blockquote></p>
8257
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>
8265
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
8277 mode).</p>
8278
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>
8288
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>
8297
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>
8301
8302 </div>
8303 <div class="tags">
8304
8305
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>.
8307
8308
8309 </div>
8310 </div>
8311 <div class="padding"></div>
8312
8313 <div class="entry">
8314 <div class="title">
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>
8316 </div>
8317 <div class="date">
8318 30th July 2011
8319 </div>
8320 <div class="body">
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>
8334
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>
8344
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
8348 is presented.</p>
8349
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>
8364
8365 </div>
8366 <div class="tags">
8367
8368
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>.
8370
8371
8372 </div>
8373 </div>
8374 <div class="padding"></div>
8375
8376 <div class="entry">
8377 <div class="title">
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>
8379 </div>
8380 <div class="date">
8381 29th July 2011
8382 </div>
8383 <div class="body">
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
8388 issues.</p>
8389
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>
8393
8394 <ol>
8395
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
8403 Debian.</li>
8404
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>
8418
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>
8429
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>
8436
8437 </ol>
8438
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>
8442
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>
8446
8447 </div>
8448 <div class="tags">
8449
8450
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>.
8452
8453
8454 </div>
8455 </div>
8456 <div class="padding"></div>
8457
8458 <div class="entry">
8459 <div class="title">
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>
8461 </div>
8462 <div class="date">
8463 26th July 2011
8464 </div>
8465 <div class="body">
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>
8471
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>
8484
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>
8490
8491 </div>
8492 <div class="tags">
8493
8494
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>.
8496
8497
8498 </div>
8499 </div>
8500 <div class="padding"></div>
8501
8502 <div class="entry">
8503 <div class="title">
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>
8505 </div>
8506 <div class="date">
8507 3rd April 2011
8508 </div>
8509 <div class="body">
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>
8513
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>
8530
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>
8537
8538 <p>Perhaps something to consider for those of you in countries without
8539 such service?</p>
8540
8541 </div>
8542 <div class="tags">
8543
8544
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>.
8546
8547
8548 </div>
8549 </div>
8550 <div class="padding"></div>
8551
8552 <div class="entry">
8553 <div class="title">
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>
8555 </div>
8556 <div class="date">
8557 28th January 2011
8558 </div>
8559 <div class="body">
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
8570 collection.</p>
8571
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>
8588
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>
8598
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>
8605
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
8609 RHEL is providing
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>
8613
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>
8624
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>
8630
8631 </div>
8632 <div class="tags">
8633
8634
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>.
8636
8637
8638 </div>
8639 </div>
8640 <div class="padding"></div>
8641
8642 <div class="entry">
8643 <div class="title">
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>
8645 </div>
8646 <div class="date">
8647 23rd January 2011
8648 </div>
8649 <div class="body">
8650 <p>In the
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>
8661
8662 <pre>
8663 loaded modules:
8664 10de:03eb i2c_nforce2
8665 10de:03f1 ohci_hcd
8666 10de:03f2 ehci_hcd
8667 10de:03f0 snd_hda_intel
8668 10de:03ec pata_amd
8669 10de:03f6 sata_nv
8670 1022:1103 k8temp
8671 109e:036e bttv
8672 109e:0878 snd_bt87x
8673 11ab:4364 sky2
8674 </pre>
8675
8676 <p>The code in question look like this, slightly modified for
8677 readability and to drop the output to file descriptor 3:</p>
8678
8679 <pre>
8680 if [ -d /sys/bus/pci/devices/ ] ; then
8681 echo loaded pci modules:
8682 (
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}'`
8690 echo "$id $module"
8691 fi
8692 fi
8693 done
8694 )
8695 echo
8696 fi
8697 </pre>
8698
8699 <p>Similar code could be used to extract USB device module
8700 mappings:</p>
8701
8702 <pre>
8703 if [ -d /sys/bus/usb/devices/ ] ; then
8704 echo loaded usb modules:
8705 (
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}')
8713 if [ "$id" ] ; then
8714 echo "$id $module"
8715 fi
8716 fi
8717 fi
8718 done
8719 )
8720 echo
8721 fi
8722 </pre>
8723
8724 <p>This might perhaps be something to include in other tools as
8725 well.</p>
8726
8727 </div>
8728 <div class="tags">
8729
8730
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>.
8732
8733
8734 </div>
8735 </div>
8736 <div class="padding"></div>
8737
8738 <div class="entry">
8739 <div class="title">
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>
8741 </div>
8742 <div class="date">
8743 22nd December 2010
8744 </div>
8745 <div class="body">
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
8754 university.</p>
8755
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>
8764
8765 <p>Anyway, to get to the point of this post. Here is the simple tests
8766 I perform on a new model.</p>
8767
8768 <ul>
8769
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>
8773
8774 <li>Is X.org working? If the graphical login screen show up after
8775 installation, X.org is working.</li>
8776
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>
8780
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>
8788
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>
8791
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>
8794
8795 <li>Is any built in camera working? Test using cheese, and see if a
8796 picture from the v4l device show up.</li>
8797
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
8800 few.</li>
8801
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
8804 notice this.</li>
8805
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
8808 resume.</li>
8809
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
8814 not.</li>
8815
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
8819 existence.</li>
8820
8821 </ul>
8822
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>
8831
8832 </div>
8833 <div class="tags">
8834
8835
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>.
8837
8838
8839 </div>
8840 </div>
8841 <div class="padding"></div>
8842
8843 <div class="entry">
8844 <div class="title">
8845 <a href="http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html">Some thoughts on BitCoins</a>
8846 </div>
8847 <div class="date">
8848 11th December 2010
8849 </div>
8850 <div class="body">
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>
8855
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">1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3</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>
8876
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>
8890
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
8905 currencies.</p>
8906
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
8915 BitCoins. Check out
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
8920 yet.</p>
8921
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>
8927
8928 </div>
8929 <div class="tags">
8930
8931
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>.
8933
8934
8935 </div>
8936 </div>
8937 <div class="padding"></div>
8938
8939 <div class="entry">
8940 <div class="title">
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>
8942 </div>
8943 <div class="date">
8944 10th December 2010
8945 </div>
8946 <div class="body">
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.
8953 A blog post from
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>
8961
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>
8972
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,
8979 you can even get
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>
8984
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>
8989
8990 </div>
8991 <div class="tags">
8992
8993
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>.
8995
8996
8997 </div>
8998 </div>
8999 <div class="padding"></div>
9000
9001 <div class="entry">
9002 <div class="title">
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>
9004 </div>
9005 <div class="date">
9006 27th November 2010
9007 </div>
9008 <div class="body">
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>
9017
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>
9029
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>
9040
9041 </div>
9042 <div class="tags">
9043
9044
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>.
9046
9047
9048 </div>
9049 </div>
9050 <div class="padding"></div>
9051
9052 <div class="entry">
9053 <div class="title">
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>
9055 </div>
9056 <div class="date">
9057 22nd November 2010
9058 </div>
9059 <div class="body">
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>
9066
9067 <p>This is for Gnome:</p>
9068
9069 <p>Installed using apt-get, missing with aptitude</p>
9070
9071 <blockquote><p>
9072 apache2.2-bin
9073 aptdaemon
9074 baobab
9075 binfmt-support
9076 browser-plugin-gnash
9077 cheese-common
9078 cli-common
9079 cups-pk-helper
9080 dmz-cursor-theme
9081 empathy
9082 empathy-common
9083 freedesktop-sound-theme
9084 freeglut3
9085 gconf-defaults-service
9086 gdm-themes
9087 gedit-plugins
9088 geoclue
9089 geoclue-hostip
9090 geoclue-localnet
9091 geoclue-manual
9092 geoclue-yahoo
9093 gnash
9094 gnash-common
9095 gnome
9096 gnome-backgrounds
9097 gnome-cards-data
9098 gnome-codec-install
9099 gnome-core
9100 gnome-desktop-environment
9101 gnome-disk-utility
9102 gnome-screenshot
9103 gnome-search-tool
9104 gnome-session-canberra
9105 gnome-system-log
9106 gnome-themes-extras
9107 gnome-themes-more
9108 gnome-user-share
9109 gstreamer0.10-fluendo-mp3
9110 gstreamer0.10-tools
9111 gtk2-engines
9112 gtk2-engines-pixbuf
9113 gtk2-engines-smooth
9114 hamster-applet
9115 libapache2-mod-dnssd
9116 libapr1
9117 libaprutil1
9118 libaprutil1-dbd-sqlite3
9119 libaprutil1-ldap
9120 libart2.0-cil
9121 libboost-date-time1.42.0
9122 libboost-python1.42.0
9123 libboost-thread1.42.0
9124 libchamplain-0.4-0
9125 libchamplain-gtk-0.4-0
9126 libcheese-gtk18
9127 libclutter-gtk-0.10-0
9128 libcryptui0
9129 libdiscid0
9130 libelf1
9131 libepc-1.0-2
9132 libepc-common
9133 libepc-ui-1.0-2
9134 libfreerdp-plugins-standard
9135 libfreerdp0
9136 libgconf2.0-cil
9137 libgdata-common
9138 libgdata7
9139 libgdu-gtk0
9140 libgee2
9141 libgeoclue0
9142 libgexiv2-0
9143 libgif4
9144 libglade2.0-cil
9145 libglib2.0-cil
9146 libgmime2.4-cil
9147 libgnome-vfs2.0-cil
9148 libgnome2.24-cil
9149 libgnomepanel2.24-cil
9150 libgpod-common
9151 libgpod4
9152 libgtk2.0-cil
9153 libgtkglext1
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
9164 libmtp8
9165 libmusicbrainz3-6
9166 libndesk-dbus-glib1.0-cil
9167 libndesk-dbus1.0-cil
9168 libopal3.6.8
9169 libpolkit-gtk-1-0
9170 libpt2.6.7
9171 libpython2.6
9172 librpm1
9173 librpmio1
9174 libsdl1.2debian
9175 libsrtp0
9176 libssh-4
9177 libtelepathy-farsight0
9178 libtelepathy-glib0
9179 libtidy-0.99-0
9180 media-player-info
9181 mesa-utils
9182 mono-2.0-gac
9183 mono-gac
9184 mono-runtime
9185 nautilus-sendto
9186 nautilus-sendto-empathy
9187 p7zip-full
9188 pkg-config
9189 python-aptdaemon
9190 python-aptdaemon-gtk
9191 python-axiom
9192 python-beautifulsoup
9193 python-bugbuddy
9194 python-clientform
9195 python-coherence
9196 python-configobj
9197 python-crypto
9198 python-cupshelpers
9199 python-elementtree
9200 python-epsilon
9201 python-evolution
9202 python-feedparser
9203 python-gdata
9204 python-gdbm
9205 python-gst0.10
9206 python-gtkglext1
9207 python-gtksourceview2
9208 python-httplib2
9209 python-louie
9210 python-mako
9211 python-markupsafe
9212 python-mechanize
9213 python-nevow
9214 python-notify
9215 python-opengl
9216 python-openssl
9217 python-pam
9218 python-pkg-resources
9219 python-pyasn1
9220 python-pysqlite2
9221 python-rdflib
9222 python-serial
9223 python-tagpy
9224 python-twisted-bin
9225 python-twisted-conch
9226 python-twisted-core
9227 python-twisted-web
9228 python-utidylib
9229 python-webkit
9230 python-xdg
9231 python-zope.interface
9232 remmina
9233 remmina-plugin-data
9234 remmina-plugin-rdp
9235 remmina-plugin-vnc
9236 rhythmbox-plugin-cdrecorder
9237 rhythmbox-plugins
9238 rpm-common
9239 rpm2cpio
9240 seahorse-plugins
9241 shotwell
9242 software-center
9243 system-config-printer-udev
9244 telepathy-gabble
9245 telepathy-mission-control-5
9246 telepathy-salut
9247 tomboy
9248 totem
9249 totem-coherence
9250 totem-mozilla
9251 totem-plugins
9252 transmission-common
9253 xdg-user-dirs
9254 xdg-user-dirs-gtk
9255 xserver-xephyr
9256 </p></blockquote>
9257
9258 <p>Installed using apt-get, removed with aptitude</p>
9259
9260 <blockquote><p>
9261 cheese
9262 ekiga
9263 eog
9264 epiphany-extensions
9265 evolution-exchange
9266 fast-user-switch-applet
9267 file-roller
9268 gcalctool
9269 gconf-editor
9270 gdm
9271 gedit
9272 gedit-common
9273 gnome-games
9274 gnome-games-data
9275 gnome-nettool
9276 gnome-system-tools
9277 gnome-themes
9278 gnuchess
9279 gucharmap
9280 guile-1.8-libs
9281 libavahi-ui0
9282 libdmx1
9283 libgalago3
9284 libgtk-vnc-1.0-0
9285 libgtksourceview2.0-0
9286 liblircclient0
9287 libsdl1.2debian-alsa
9288 libspeexdsp1
9289 libsvga1
9290 rhythmbox
9291 seahorse
9292 sound-juicer
9293 system-config-printer
9294 totem-common
9295 transmission-gtk
9296 vinagre
9297 vino
9298 </p></blockquote>
9299
9300 <p>Installed using aptitude, missing with apt-get</p>
9301
9302 <blockquote><p>
9303 gstreamer0.10-gnomevfs
9304 </p></blockquote>
9305
9306 <p>Installed using aptitude, removed with apt-get</p>
9307
9308 <blockquote><p>
9309 [nothing]
9310 </p></blockquote>
9311
9312 <p>This is for KDE:</p>
9313
9314 <p>Installed using apt-get, missing with aptitude</p>
9315
9316 <blockquote><p>
9317 ksmserver
9318 </p></blockquote>
9319
9320 <p>Installed using apt-get, removed with aptitude</p>
9321
9322 <blockquote><p>
9323 kwin
9324 network-manager-kde
9325 </p></blockquote>
9326
9327 <p>Installed using aptitude, missing with apt-get</p>
9328
9329 <blockquote><p>
9330 arts
9331 dolphin
9332 freespacenotifier
9333 google-gadgets-gst
9334 google-gadgets-xul
9335 kappfinder
9336 kcalc
9337 kcharselect
9338 kde-core
9339 kde-plasma-desktop
9340 kde-standard
9341 kde-window-manager
9342 kdeartwork
9343 kdeartwork-emoticons
9344 kdeartwork-style
9345 kdeartwork-theme-icon
9346 kdebase
9347 kdebase-apps
9348 kdebase-workspace
9349 kdebase-workspace-bin
9350 kdebase-workspace-data
9351 kdeeject
9352 kdelibs
9353 kdeplasma-addons
9354 kdeutils
9355 kdewallpapers
9356 kdf
9357 kfloppy
9358 kgpg
9359 khelpcenter4
9360 kinfocenter
9361 konq-plugins-l10n
9362 konqueror-nsplugins
9363 kscreensaver
9364 kscreensaver-xsavers
9365 ktimer
9366 kwrite
9367 libgle3
9368 libkde4-ruby1.8
9369 libkonq5
9370 libkonq5-templates
9371 libnetpbm10
9372 libplasma-ruby
9373 libplasma-ruby1.8
9374 libqt4-ruby1.8
9375 marble-data
9376 marble-plugins
9377 netpbm
9378 nuvola-icon-theme
9379 plasma-dataengines-workspace
9380 plasma-desktop
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
9392 ruby
9393 sweeper
9394 update-notifier-kde
9395 xscreensaver-data-extra
9396 xscreensaver-gl
9397 xscreensaver-gl-extra
9398 xscreensaver-screensaver-bsod
9399 </p></blockquote>
9400
9401 <p>Installed using aptitude, removed with apt-get</p>
9402
9403 <blockquote><p>
9404 ark
9405 google-gadgets-common
9406 google-gadgets-qt
9407 htdig
9408 kate
9409 kdebase-bin
9410 kdebase-data
9411 kdepasswd
9412 kfind
9413 klipper
9414 konq-plugins
9415 konqueror
9416 ksysguard
9417 ksysguardd
9418 libarchive1
9419 libcln6
9420 libeet1
9421 libeina-svn-06
9422 libggadget-1.0-0b
9423 libggadget-qt-1.0-0b
9424 libgps19
9425 libkdecorations4
9426 libkephal4
9427 libkonq4
9428 libkonqsidebarplugin4a
9429 libkscreensaver5
9430 libksgrd4
9431 libksignalplotter4
9432 libkunitconversion4
9433 libkwineffects1a
9434 libmarblewidget4
9435 libntrack-qt4-1
9436 libntrack0
9437 libplasma-geolocation-interface4
9438 libplasmaclock4a
9439 libplasmagenericshell4
9440 libprocesscore4a
9441 libprocessui4a
9442 libqalculate5
9443 libqedje0a
9444 libqtruby4shared2
9445 libqzion0a
9446 libruby1.8
9447 libscim8c2a
9448 libsmokekdecore4-3
9449 libsmokekdeui4-3
9450 libsmokekfile3
9451 libsmokekhtml3
9452 libsmokekio3
9453 libsmokeknewstuff2-3
9454 libsmokeknewstuff3-3
9455 libsmokekparts3
9456 libsmokektexteditor3
9457 libsmokekutils3
9458 libsmokenepomuk3
9459 libsmokephonon3
9460 libsmokeplasma3
9461 libsmokeqtcore4-3
9462 libsmokeqtdbus4-3
9463 libsmokeqtgui4-3
9464 libsmokeqtnetwork4-3
9465 libsmokeqtopengl4-3
9466 libsmokeqtscript4-3
9467 libsmokeqtsql4-3
9468 libsmokeqtsvg4-3
9469 libsmokeqttest4-3
9470 libsmokeqtuitools4-3
9471 libsmokeqtwebkit4-3
9472 libsmokeqtxml4-3
9473 libsmokesolid3
9474 libsmokesoprano3
9475 libtaskmanager4a
9476 libtidy-0.99-0
9477 libweather-ion4a
9478 libxklavier16
9479 libxxf86misc1
9480 okteta
9481 oxygencursors
9482 plasma-dataengines-addons
9483 plasma-scriptengine-superkaramba
9484 plasma-widget-lancelot
9485 plasma-widgets-addons
9486 plasma-widgets-workspace
9487 polkit-kde-1
9488 ruby1.8
9489 systemsettings
9490 update-notifier-common
9491 </p></blockquote>
9492
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>
9497
9498 </div>
9499 <div class="tags">
9500
9501
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>.
9503
9504
9505 </div>
9506 </div>
9507 <div class="padding"></div>
9508
9509 <div class="entry">
9510 <div class="title">
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>
9512 </div>
9513 <div class="date">
9514 22nd November 2010
9515 </div>
9516 <div class="body">
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>
9526
9527 <p>I found
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>
9534
9535 <pre>
9536 #!/bin/sh
9537
9538 # Based on
9539 # http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
9540
9541 set -e
9542 set -x
9543
9544 if [ -z "$1" ] ; then
9545 echo "Usage: $0 &lt;hostname&gt;"
9546 exit 1
9547 else
9548 host="$1"
9549 fi
9550
9551 if [ ! -e /dev/vg_data/$host-disk ] ; then
9552 echo "error: unable to find LVM volume for $host"
9553 exit 1
9554 fi
9555
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 ) ))
9560
9561 img=$host.img
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
9564
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
9569
9570 modprobe dm-mod
9571 losetup /dev/loop0 $img
9572 kpartx -a /dev/loop0
9573
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
9577
9578 kpartx -d /dev/loop0
9579 losetup -d /dev/loop0
9580 </pre>
9581
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>
9584
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>
9589
9590 </div>
9591 <div class="tags">
9592
9593
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>.
9595
9596
9597 </div>
9598 </div>
9599 <div class="padding"></div>
9600
9601 <div class="entry">
9602 <div class="title">
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>
9604 </div>
9605 <div class="date">
9606 20th November 2010
9607 </div>
9608 <div class="body">
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>
9613
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>
9617
9618 <p>This is for Gnome:</p>
9619
9620 <p>Installed using apt-get, missing with aptitude</p>
9621
9622 <blockquote><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
9681 zip
9682 </p></blockquote>
9683
9684 Installed using apt-get, removed with aptitude
9685
9686 <blockquote><p>
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
9716 </p></blockquote>
9717
9718 <p>Installed using aptitude, missing with apt-get</p>
9719
9720 <blockquote><p>
9721 gstreamer0.10-gnomevfs
9722 </p></blockquote>
9723
9724 <p>Installed using aptitude, removed with apt-get</p>
9725
9726 <blockquote><p>
9727 [nothing]
9728 </p></blockquote>
9729
9730 <p>This is for KDE:</p>
9731
9732 <p>Installed using apt-get, missing with aptitude</p>
9733
9734 <blockquote><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
9764 ttf-sazanami-gothic
9765 </p></blockquote>
9766
9767 <p>Installed using apt-get, removed with aptitude</p>
9768
9769 <blockquote><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
9803 </p></blockquote>
9804
9805 <p>Installed using aptitude, missing with apt-get</p>
9806
9807 <blockquote><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
9815 </p></blockquote>
9816
9817 <p>Installed using aptitude, removed with apt-get</p>
9818
9819 <blockquote><p>
9820 kdebase-bin konq-plugins konqueror
9821 </p></blockquote>
9822
9823 </div>
9824 <div class="tags">
9825
9826
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>.
9828
9829
9830 </div>
9831 </div>
9832 <div class="padding"></div>
9833
9834 <div class="entry">
9835 <div class="title">
9836 <a href="http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html">Gnash buildbot slave and Debian kfreebsd</a>
9837 </div>
9838 <div class="date">
9839 20th November 2010
9840 </div>
9841 <div class="body">
9842 <p>Answering
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>
9850
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>
9865
9866 </div>
9867 <div class="tags">
9868
9869
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>.
9871
9872
9873 </div>
9874 </div>
9875 <div class="padding"></div>
9876
9877 <div class="entry">
9878 <div class="title">
9879 <a href="http://people.skolelinux.org/pere/blog/Debian_in_3D.html">Debian in 3D</a>
9880 </div>
9881 <div class="date">
9882 9th November 2010
9883 </div>
9884 <div class="body">
9885 <p><img src="http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg"></p>
9886
9887 <p>3D printing is just great. I just came across this Debian logo in
9888 3D linked in from
9889 <a href="http://blog.thingiverse.com/2010/11/09/participatory-branding/">the
9890 thingiverse blog</a>.</p>
9891
9892 </div>
9893 <div class="tags">
9894
9895
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>.
9897
9898
9899 </div>
9900 </div>
9901 <div class="padding"></div>
9902
9903 <div class="entry">
9904 <div class="title">
9905 <a href="http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates 2010-10-24</a>
9906 </div>
9907 <div class="date">
9908 24th October 2010
9909 </div>
9910 <div class="body">
9911 <p>Some updates.</p>
9912
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.
9918 :)</p>
9919
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.
9923 It is called
9924 <a href="http://simonkagstrom.github.com/kcov/index.html">kcov</a>,
9925 and can be used using <tt>kcov &lt;directory&gt; &lt;binary&gt;</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>
9930
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>
9941
9942 </div>
9943 <div class="tags">
9944
9945
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>.
9947
9948
9949 </div>
9950 </div>
9951 <div class="padding"></div>
9952
9953 <div class="entry">
9954 <div class="title">
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>
9956 </div>
9957 <div class="date">
9958 4th September 2010
9959 </div>
9960 <div class="body">
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
9967 installed.</p>
9968
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>
9978
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>
9989
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>
10001
10002 </div>
10003 <div class="tags">
10004
10005
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>.
10007
10008
10009 </div>
10010 </div>
10011 <div class="padding"></div>
10012
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>
10016 </div>
10017 <div class="date">
10018 27th July 2010
10019 </div>
10020 <div class="body">
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>
10027
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>
10036
10037 <p>In this log, the problem manifest itself with this error:</p>
10038
10039 <blockquote><pre>
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-19lenny2.
10043 dpkg: error processing perl-modules (--configure):
10044 dependency problems - leaving unconfigured
10045 </pre></blockquote>
10046
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>
10055
10056 <p>Thanks to
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
10059 dependencies
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>
10062
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
10068 it.</p>
10069
10070 </div>
10071 <div class="tags">
10072
10073
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>.
10075
10076
10077 </div>
10078 </div>
10079 <div class="padding"></div>
10080
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>
10084 </div>
10085 <div class="date">
10086 17th July 2010
10087 </div>
10088 <div class="body">
10089 <p>This is a
10090 <a href="http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">followup</a>
10091 on my
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
10093 work</a> on
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>
10096
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>
10101
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.
10105
10106 <p><strong>powerdns</strong></p>
10107
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
10110 the web.
10111
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>
10118
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>
10135
10136 <blockquote><pre>
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
10144
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>
10152
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
10157 also exist.</p>
10158
10159 <blockquote><pre>
10160 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
10161 objectclass: top
10162 objectclass: dnsdomain
10163 objectclass: domainrelatedobject
10164 dc: tjener
10165 arecord: 10.0.2.2
10166 associateddomain: tjener.intern
10167
10168 dn: dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
10169 objectclass: top
10170 objectclass: dnsdomain2
10171 objectclass: domainrelatedobject
10172 dc: 2
10173 ptrrecord: tjener.intern
10174 associateddomain: 2.2.0.10.in-addr.arpa
10175 </pre></blockquote>
10176
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
10188 instead.</p>
10189
10190 <p>The forward and reverse searches can be simulated using ldapsearch
10191 like this:</p>
10192
10193 <blockquote><pre>
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
10200
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>
10204
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>
10208
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>
10213
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>
10217
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>
10223
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>
10229
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>
10236
10237 <blockquote><pre>
10238 objectclass ( some-oid NAME 'dnsDomainAux'
10239 SUP top
10240 AUXILIARY
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
10246 ))
10247 </pre></blockquote>
10248
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>
10255
10256 <p><strong>ISC dhcp</strong></p>
10257
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>
10263
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>
10268
10269 <blockquote><pre>
10270 ldap-base-dn "dc=skole,dc=skolelinux,dc=no";
10271 ldap-dhcp-server-cn "dhcp";
10272 </pre></blockquote>
10273
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>
10278
10279 <blockquote><pre>
10280 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
10281 cn: dhcp
10282 objectClass: top
10283 objectClass: dhcpServer
10284 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10285 </pre></blockquote>
10286
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>
10293
10294 <blockquote><pre>
10295 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10296 cn: DHCP Config
10297 objectClass: top
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>
10307
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>
10317
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
10323 like:</p>
10324
10325 <blockquote><pre>
10326 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10327 cn: hostname
10328 objectClass: top
10329 objectClass: dhcpHost
10330 dhcpHWAddress: ethernet 00:00:00:00:00:00
10331 dhcpStatements: fixed-address hostname
10332 </pre></blockquote>
10333
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.
10343
10344 <p><strong>Conclusion</strong></p>
10345
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>
10351
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
10357 structure.</p>
10358
10359 <p>Based on the observed behaviour, I suspect a LDAP structure like
10360 this might work for Debian Edu:</p>
10361
10362 <blockquote><pre>
10363 ou=services
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>
10375
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>
10380
10381 <p>The combined object under the machines subtree would look something
10382 like this:</p>
10383
10384 <blockquote><pre>
10385 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
10386 dc: hostname
10387 objectClass: top
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>
10396
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>
10400
10401 </div>
10402 <div class="tags">
10403
10404
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>.
10406
10407
10408 </div>
10409 </div>
10410 <div class="padding"></div>
10411
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>
10415 </div>
10416 <div class="date">
10417 14th July 2010
10418 </div>
10419 <div class="body">
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>
10425
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>
10428
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>
10435
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
10441 seem to work.</p>
10442
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
10446 this:</p>
10447
10448 <blockquote><pre>
10449 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
10450 cn: hostname
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
10458 ldapconfigsound: Y
10459 </pre></blockquote>
10460
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>
10465
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>
10474
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>
10477
10478 </div>
10479 <div class="tags">
10480
10481
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>.
10483
10484
10485 </div>
10486 </div>
10487 <div class="padding"></div>
10488
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>
10492 </div>
10493 <div class="date">
10494 11th July 2010
10495 </div>
10496 <div class="body">
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>
10501
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
10506 LTSP clients.</p>
10507
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>
10511
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>
10515
10516 <blockquote><pre>
10517 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
10518 #
10519 # Fetch LTSP client settings from LDAP based on MAC address
10520 #
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.
10524 #
10525 # This module is written to be schema agnostic, and only depend on the
10526 # existence of attribute names.
10527 #
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.
10531 #
10532 # Some LDAP schema should be created with all the relevant
10533 # configuration settings. Something like this should work:
10534 #
10535 # objectclass ( 1.1.2.2 NAME 'ltspClientAux'
10536 # SUP top
10537 # AUXILIARY
10538 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
10539
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"
10551 done
10552 done
10553 fi
10554 </pre></blockquote>
10555
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>
10561
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>
10564
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>
10571
10572 </div>
10573 <div class="tags">
10574
10575
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>.
10577
10578
10579 </div>
10580 </div>
10581 <div class="padding"></div>
10582
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>
10586 </div>
10587 <div class="date">
10588 9th July 2010
10589 </div>
10590 <div class="body">
10591 <p>Since
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>
10605
10606 </div>
10607 <div class="tags">
10608
10609
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>.
10611
10612
10613 </div>
10614 </div>
10615 <div class="padding"></div>
10616
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>
10620 </div>
10621 <div class="date">
10622 3rd July 2010
10623 </div>
10624 <div class="body">
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>
10633
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>
10639
10640 <p>Installed using apt-get, missing with aptitude</p>
10641
10642 <blockquote><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
10651 </p></blockquote>
10652
10653 <p>Installed using apt-get, removed with aptitude</p>
10654
10655 <blockquote><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
10676 </p></blockquote>
10677
10678 <p>Installed using aptitude, missing with apt-get</p>
10679
10680 <blockquote><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
10702 </p></blockquote>
10703
10704 <p>Installed using aptitude, removed with apt-get</p>
10705
10706 <blockquote><p>
10707 deskbar-applet xserver-xorg xserver-xorg-core
10708 xserver-xorg-input-wacom xserver-xorg-video-intel
10709 xserver-xorg-video-openchrome
10710 </p></blockquote>
10711
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.
10717
10718 </div>
10719 <div class="tags">
10720
10721
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>.
10723
10724
10725 </div>
10726 </div>
10727 <div class="padding"></div>
10728
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>
10732 </div>
10733 <div class="date">
10734 28th June 2010
10735 </div>
10736 <div class="body">
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>
10747
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
10752 released.</p>
10753
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>
10758
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>
10761
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>
10767
10768 </div>
10769 <div class="tags">
10770
10771
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>.
10773
10774
10775 </div>
10776 </div>
10777 <div class="padding"></div>
10778
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>
10782 </div>
10783 <div class="date">
10784 24th June 2010
10785 </div>
10786 <div class="body">
10787 <p>A while back, I
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>
10792
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>
10797
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
10801 Debian Edu.</p>
10802
10803 <p>Anyway, for future reference, this is how I believe we could change
10804 the
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>
10808
10809 <pre>
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
10814 NAME 'dhcpHost'
10815 DESC 'This represents information about a particular client'
10816 - SUP top
10817 + SUP top AUXILIARY
10818 MUST cn
10819 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
10820 X-NDS_CONTAINMENT ('dhcpService' 'dhcpSubnet' 'dhcpGroup') )
10821 </pre>
10822
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>
10826
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>
10829
10830 </div>
10831 <div class="tags">
10832
10833
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>.
10835
10836
10837 </div>
10838 </div>
10839 <div class="padding"></div>
10840
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>
10844 </div>
10845 <div class="date">
10846 16th June 2010
10847 </div>
10848 <div class="body">
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
10854 this:
10855
10856 <blockquote><pre>
10857 export DEBIAN_FRONTEND=noninteractive
10858 tasksel --new-install
10859 </pre></blockquote>
10860
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.
10864
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
10871 code like this:
10872
10873 <blockquote><pre>
10874 export DEBIAN_FRONTEND=noninteractive
10875 cmd="$(in_target tasksel -t --new-install | sed 's/debconf-apt-progress -- //')"
10876 $cmd
10877 </pre></blockquote>
10878
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
10885 installation.</p>
10886
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
10889 like this.</p>
10890
10891 </div>
10892 <div class="tags">
10893
10894
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>.
10896
10897
10898 </div>
10899 </div>
10900 <div class="padding"></div>
10901
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>
10905 </div>
10906 <div class="date">
10907 13th June 2010
10908 </div>
10909 <div class="body">
10910 <p>My
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>
10918
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>
10927
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>
10932
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
10940 continue.</p>
10941
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>
10972
10973 <p><b>aptitude gnome 129</b>
10974
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
11006 zip</p>
11007
11008 <p><b>apt-get kde 82</b>
11009
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>
11038
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
11076 xulrunner-1.9</p>
11077
11078
11079 </div>
11080 <div class="tags">
11081
11082
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>.
11084
11085
11086 </div>
11087 </div>
11088 <div class="padding"></div>
11089
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>
11093 </div>
11094 <div class="date">
11095 11th June 2010
11096 </div>
11097 <div class="body">
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>
11106
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>
11113
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>
11131
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
11134 trick:</p>
11135
11136 <blockquote><pre>
11137 #!/bin/sh
11138 set -ex
11139
11140 if [ "$1" ] ; then
11141 desktop=$1
11142 else
11143 desktop=gnome
11144 fi
11145
11146 from=lenny
11147 to=squeeze
11148
11149 exec &lt; /dev/null
11150 unset LANG
11151 mirror=http://ftp.skolelinux.org/debian
11152 tmpdir=chroot-$from-upgrade-$to-$desktop
11153 fuser -mv .
11154 debootstrap $from $tmpdir $mirror
11155 chroot $tmpdir aptitude update
11156 cat > $tmpdir/usr/sbin/policy-rc.d &lt;&lt;EOF
11157 #!/bin/sh
11158 exit 101
11159 EOF
11160 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
11161 exit_cleanup() {
11162 umount $tmpdir/proc
11163 }
11164 mount -t proc proc $tmpdir/proc
11165 # Make sure proc is unmounted also on failure
11166 trap exit_cleanup EXIT INT
11167
11168 chroot $tmpdir aptitude -y install debconf-utils
11169
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
11174
11175 # Include the desktop and laptop task
11176 for test in desktop laptop ; do
11177 echo > $tmpdir/usr/lib/tasksel/tests/$test &lt;&lt;EOF
11178 #!/bin/sh
11179 exit 2
11180 EOF
11181 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
11182 done
11183
11184 DEBIAN_FRONTEND=noninteractive
11185 DEBIAN_PRIORITY=critical
11186 export DEBIAN_FRONTEND DEBIAN_PRIORITY
11187 chroot $tmpdir tasksel --new-install
11188
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
11193 fuser -mv
11194 </pre></blockquote>
11195
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>
11202
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>
11210
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
11216 packages.</p>
11217
11218 </div>
11219 <div class="tags">
11220
11221
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>.
11223
11224
11225 </div>
11226 </div>
11227 <div class="padding"></div>
11228
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>
11232 </div>
11233 <div class="date">
11234 6th June 2010
11235 </div>
11236 <div class="body">
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>
11244
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
11247 COLUMNS):</p>
11248
11249 <blockquote><pre>
11250 DEFAULT_RUNLEVEL=2
11251 previous=N
11252 PREVLEVEL=
11253 RUNLEVEL=
11254 runlevel=S
11255 UPSTART_EVENTS=startup
11256 UPSTART_INSTANCE=
11257 UPSTART_JOB=rc-sysinit
11258 </pre></blockquote>
11259
11260 <p>With sysvinit, these environment variables are set for the same
11261 script.</p>
11262
11263 <blockquote><pre>
11264 INIT_VERSION=sysvinit-2.88
11265 previous=N
11266 PREVLEVEL=N
11267 RUNLEVEL=S
11268 runlevel=S
11269 </pre></blockquote>
11270
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>
11274
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
11277 choice.</p>
11278
11279 </div>
11280 <div class="tags">
11281
11282
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>.
11284
11285
11286 </div>
11287 </div>
11288 <div class="padding"></div>
11289
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>
11293 </div>
11294 <div class="date">
11295 6th June 2010
11296 </div>
11297 <div class="body">
11298 <p>Via the
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>
11304
11305 </div>
11306 <div class="tags">
11307
11308
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>.
11310
11311
11312 </div>
11313 </div>
11314 <div class="padding"></div>
11315
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>
11319 </div>
11320 <div class="date">
11321 3rd June 2010
11322 </div>
11323 <div class="body">
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>
11329
11330 <blockquote><pre>
11331 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
11332 vendor count
11333 Dell Computer Corporation 1
11334 PowerEdge 1750 1
11335 IBM 1
11336 eserver xSeries 345 -[8670M1X]- 1
11337 Intel 2
11338 [no-dmi-info] 3
11339 maintainer:~#
11340 </pre></blockquote>
11341
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>
11347
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
11355 collector.</p>
11356
11357 </div>
11358 <div class="tags">
11359
11360
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>.
11362
11363
11364 </div>
11365 </div>
11366 <div class="padding"></div>
11367
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>
11371 </div>
11372 <div class="date">
11373 1st June 2010
11374 </div>
11375 <div class="body">
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
11380 wait.</p>
11381
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>
11388
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>
11397
11398 <p>I wonder why we end up handling bugs this way.</p>
11399
11400 </div>
11401 <div class="tags">
11402
11403
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>.
11405
11406
11407 </div>
11408 </div>
11409 <div class="padding"></div>
11410
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>
11414 </div>
11415 <div class="date">
11416 27th May 2010
11417 </div>
11418 <div class="body">
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:
11422
11423 <p><ul>
11424
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>
11430
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>
11435
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>
11444
11445 </ul></p>
11446
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>
11451
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>
11456
11457 <p>Update: Correct bug number to file-rc issue.</p>
11458
11459 </div>
11460 <div class="tags">
11461
11462
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>.
11464
11465
11466 </div>
11467 </div>
11468 <div class="padding"></div>
11469
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>
11473 </div>
11474 <div class="date">
11475 22nd May 2010
11476 </div>
11477 <div class="body">
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>
11482
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
11496 going to work.</p>
11497
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
11508 Edu.</p>
11509
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>
11516
11517 <p>If you want to discuss the details of these features, please
11518 contact us on debian-boot@lists.debian.org.</p>
11519
11520 </div>
11521 <div class="tags">
11522
11523
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>.
11525
11526
11527 </div>
11528 </div>
11529 <div class="padding"></div>
11530
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>
11534 </div>
11535 <div class="date">
11536 14th May 2010
11537 </div>
11538 <div class="body">
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
11549 version.</p>
11550
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>
11556
11557 <blockquote><pre>
11558 CONCURRENCY=none
11559 </pre></blockquote>
11560
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>
11565
11566 </div>
11567 <div class="tags">
11568
11569
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>.
11571
11572
11573 </div>
11574 </div>
11575 <div class="padding"></div>
11576
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>
11580 </div>
11581 <div class="date">
11582 14th May 2010
11583 </div>
11584 <div class="body">
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>
11593
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>
11597
11598 <blockquote><pre>
11599 perl -MSiteSummary -e 'for_all_hosts(sub { print join(" ", get_macaddresses(shift)), "\n"; });'
11600 </pre></blockquote>
11601
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>
11604
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
11609 written yet.</p>
11610
11611 </div>
11612 <div class="tags">
11613
11614
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>.
11616
11617
11618 </div>
11619 </div>
11620 <div class="padding"></div>
11621
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>
11625 </div>
11626 <div class="date">
11627 13th May 2010
11628 </div>
11629 <div class="body">
11630 <p>The last few days a new boot system called
11631 <a href="http://www.freedesktop.org/wiki/Software/systemd">systemd</a>
11632 has been
11633 <a href="http://0pointer.de/blog/projects/systemd.html">introduced</a>
11634
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>
11645
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
11651 way forward.</p>
11652
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>
11662
11663 </div>
11664 <div class="tags">
11665
11666
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>.
11668
11669
11670 </div>
11671 </div>
11672 <div class="padding"></div>
11673
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>
11677 </div>
11678 <div class="date">
11679 6th May 2010
11680 </div>
11681 <div class="body">
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>
11689
11690 <blockquote><pre>
11691 CONCURRENCY=makefile
11692 </pre></blockquote>
11693
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>
11701
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>
11707
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>
11712
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>
11717
11718 </div>
11719 <div class="tags">
11720
11721
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>.
11723
11724
11725 </div>
11726 </div>
11727 <div class="padding"></div>
11728
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>
11732 </div>
11733 <div class="date">
11734 27th July 2009
11735 </div>
11736 <div class="body">
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>
11744
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>
11748
11749 </div>
11750 <div class="tags">
11751
11752
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>.
11754
11755
11756 </div>
11757 </div>
11758 <div class="padding"></div>
11759
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>
11763 </div>
11764 <div class="date">
11765 22nd July 2009
11766 </div>
11767 <div class="body">
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>
11774
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>
11787
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>
11790
11791 </div>
11792 <div class="tags">
11793
11794
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>.
11796
11797
11798 </div>
11799 </div>
11800 <div class="padding"></div>
11801
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>
11805 </div>
11806 <div class="date">
11807 24th June 2009
11808 </div>
11809 <div class="body">
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
11813 funded
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>
11820
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
11823 boot:</p>
11824
11825 <ul>
11826
11827 <li>Use dash as /bin/sh.</li>
11828
11829 <li>Disable the init.d/hwclock*.sh scripts and make sure the hardware
11830 clock is in UTC.</li>
11831
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>
11835
11836 </ul>
11837
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
11840 Villegas</a>.
11841
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
11847 using this.</p>
11848
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>
11856
11857 </div>
11858 <div class="tags">
11859
11860
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>.
11862
11863
11864 </div>
11865 </div>
11866 <div class="padding"></div>
11867
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>
11871 </div>
11872 <div class="date">
11873 17th May 2009
11874 </div>
11875 <div class="body">
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
11880 dager siden kom
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>
11886
11887 <blockquote>
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.
11892 </blockquote>
11893
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>
11899
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>
11903
11904 </div>
11905 <div class="tags">
11906
11907
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>.
11909
11910
11911 </div>
11912 </div>
11913 <div class="padding"></div>
11914
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>
11918 </div>
11919 <div class="date">
11920 7th May 2009
11921 </div>
11922 <div class="body">
11923 <p>Kom over
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>
11931
11932 </div>
11933 <div class="tags">
11934
11935
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>.
11937
11938
11939 </div>
11940 </div>
11941 <div class="padding"></div>
11942
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>
11946 </div>
11947 <div class="date">
11948 2nd May 2009
11949 </div>
11950 <div class="body">
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>
11971
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
11979 betydelige.</p>
11980
11981 </div>
11982 <div class="tags">
11983
11984
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>.
11986
11987
11988 </div>
11989 </div>
11990 <div class="padding"></div>
11991
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>
11995 </div>
11996 <div class="date">
11997 2nd May 2009
11998 </div>
11999 <div class="body">
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>
12003
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.
12015
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>
12031
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>
12036
12037 </div>
12038 <div class="tags">
12039
12040
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>.
12042
12043
12044 </div>
12045 </div>
12046 <div class="padding"></div>
12047
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>
12051 </div>
12052 <div class="date">
12053 28th April 2009
12054 </div>
12055 <div class="body">
12056 <p>Julien Blache
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
12062 properties.</p>
12063
12064 </div>
12065 <div class="tags">
12066
12067
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>.
12069
12070
12071 </div>
12072 </div>
12073 <div class="padding"></div>
12074
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>
12078 </div>
12079 <div class="date">
12080 30th March 2009
12081 </div>
12082 <div class="body">
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
12090 application.</p>
12091
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>
12099
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>
12104
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>
12108
12109 </div>
12110 <div class="tags">
12111
12112
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>.
12114
12115
12116 </div>
12117 </div>
12118 <div class="padding"></div>
12119
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>
12123 </div>
12124 <div class="date">
12125 29th March 2009
12126 </div>
12127 <div class="body">
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
12142 now. :)</p>
12143
12144 </div>
12145 <div class="tags">
12146
12147
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>.
12149
12150
12151 </div>
12152 </div>
12153 <div class="padding"></div>
12154
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>
12158 </div>
12159 <div class="date">
12160 29th March 2009
12161 </div>
12162 <div class="body">
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>
12169
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>
12183
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>
12188
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>
12191
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>
12195
12196 </div>
12197 <div class="tags">
12198
12199
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>.
12201
12202
12203 </div>
12204 </div>
12205 <div class="padding"></div>
12206
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>
12210 </div>
12211 <div class="date">
12212 15th February 2009
12213 </div>
12214 <div class="body">
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>
12227
12228 </div>
12229 <div class="tags">
12230
12231
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>.
12233
12234
12235 </div>
12236 </div>
12237 <div class="padding"></div>
12238
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>
12242 </div>
12243 <div class="date">
12244 7th December 2008
12245 </div>
12246 <div class="body">
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>
12255
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>
12261
12262 </div>
12263 <div class="tags">
12264
12265
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>.
12267
12268
12269 </div>
12270 </div>
12271 <div class="padding"></div>
12272
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>
12276 </div>
12277 <div class="date">
12278 25th November 2008
12279 </div>
12280 <div class="body">
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>
12296
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>
12299
12300 </div>
12301 <div class="tags">
12302
12303
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>.
12305
12306
12307 </div>
12308 </div>
12309 <div class="padding"></div>
12310
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>
12312 <div id="sidebar">
12313
12314
12315
12316 <h2>Archive</h2>
12317 <ul>
12318
12319 <li>2017
12320 <ul>
12321
12322 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
12323
12324 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
12325
12326 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
12327
12328 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
12329
12330 </ul></li>
12331
12332 <li>2016
12333 <ul>
12334
12335 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
12336
12337 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
12338
12339 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
12340
12341 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
12342
12343 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
12344
12345 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
12346
12347 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
12348
12349 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
12350
12351 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
12352
12353 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
12354
12355 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
12356
12357 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
12358
12359 </ul></li>
12360
12361 <li>2015
12362 <ul>
12363
12364 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
12365
12366 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
12367
12368 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
12369
12370 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
12371
12372 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
12373
12374 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
12375
12376 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
12377
12378 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
12379
12380 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
12381
12382 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
12383
12384 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
12385
12386 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
12387
12388 </ul></li>
12389
12390 <li>2014
12391 <ul>
12392
12393 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
12394
12395 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
12396
12397 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
12398
12399 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
12400
12401 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
12402
12403 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
12404
12405 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
12406
12407 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
12408
12409 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
12410
12411 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
12412
12413 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
12414
12415 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
12416
12417 </ul></li>
12418
12419 <li>2013
12420 <ul>
12421
12422 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
12423
12424 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
12425
12426 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
12427
12428 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
12429
12430 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
12431
12432 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
12433
12434 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
12435
12436 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
12437
12438 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
12439
12440 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
12441
12442 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
12443
12444 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
12445
12446 </ul></li>
12447
12448 <li>2012
12449 <ul>
12450
12451 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
12452
12453 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
12454
12455 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
12456
12457 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
12458
12459 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
12460
12461 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
12462
12463 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
12464
12465 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
12466
12467 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
12468
12469 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
12470
12471 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
12472
12473 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
12474
12475 </ul></li>
12476
12477 <li>2011
12478 <ul>
12479
12480 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
12481
12482 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
12483
12484 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
12485
12486 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
12487
12488 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
12489
12490 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
12491
12492 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
12493
12494 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
12495
12496 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
12497
12498 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
12499
12500 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
12501
12502 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
12503
12504 </ul></li>
12505
12506 <li>2010
12507 <ul>
12508
12509 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
12510
12511 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
12512
12513 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
12514
12515 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
12516
12517 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
12518
12519 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
12520
12521 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
12522
12523 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
12524
12525 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
12526
12527 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
12528
12529 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
12530
12531 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
12532
12533 </ul></li>
12534
12535 <li>2009
12536 <ul>
12537
12538 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
12539
12540 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
12541
12542 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
12543
12544 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
12545
12546 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
12547
12548 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
12549
12550 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
12551
12552 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
12553
12554 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
12555
12556 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
12557
12558 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
12559
12560 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
12561
12562 </ul></li>
12563
12564 <li>2008
12565 <ul>
12566
12567 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
12568
12569 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
12570
12571 </ul></li>
12572
12573 </ul>
12574
12575
12576
12577 <h2>Tags</h2>
12578 <ul>
12579
12580 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
12581
12582 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
12583
12584 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
12585
12586 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
12587
12588 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
12589
12590 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (16)</a></li>
12591
12592 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
12593
12594 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
12595
12596 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (148)</a></li>
12597
12598 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
12599
12600 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (3)</a></li>
12601
12602 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
12603
12604 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (16)</a></li>
12605
12606 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (23)</a></li>
12607
12608 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
12609
12610 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (346)</a></li>
12611
12612 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
12613
12614 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
12615
12616 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (29)</a></li>
12617
12618 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
12619
12620 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
12621
12622 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
12623
12624 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
12625
12626 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (15)</a></li>
12627
12628 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (20)</a></li>
12629
12630 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
12631
12632 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
12633
12634 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
12635
12636 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
12637
12638 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
12639
12640 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (39)</a></li>
12641
12642 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (9)</a></li>
12643
12644 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (289)</a></li>
12645
12646 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (188)</a></li>
12647
12648 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (31)</a></li>
12649
12650 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
12651
12652 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (64)</a></li>
12653
12654 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (99)</a></li>
12655
12656 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
12657
12658 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
12659
12660 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
12661
12662 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
12663
12664 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (10)</a></li>
12665
12666 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
12667
12668 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (5)</a></li>
12669
12670 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
12671
12672 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (52)</a></li>
12673
12674 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
12675
12676 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
12677
12678 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (52)</a></li>
12679
12680 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (5)</a></li>
12681
12682 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (11)</a></li>
12683
12684 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (48)</a></li>
12685
12686 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (3)</a></li>
12687
12688 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
12689
12690 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
12691
12692 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (59)</a></li>
12693
12694 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
12695
12696 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (40)</a></li>
12697
12698 </ul>
12699
12700
12701 </div>
12702 <p style="text-align: right">
12703 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
12704 </p>
12705
12706 </body>
12707 </html>