]> pere.pagekite.me Git - homepage.git/blob - blog/tags/debian/debian.rss
a50a01658f7578e3666bba4d761656aed819aa90
[homepage.git] / blog / tags / debian / debian.rss
1 <?xml version="1.0" encoding="utf-8"?>
2 <rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
3 <channel>
4 <title>Petter Reinholdtsen - Entries tagged debian</title>
5 <description>Entries tagged debian</description>
6 <link>https://people.skolelinux.org/pere/blog/</link>
7
8
9 <item>
10 <title>Opensnitch, the application level interactive firewall, heading into the Debian archive</title>
11 <link>https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html</link>
12 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html</guid>
13 <pubDate>Sun, 22 Jan 2023 23:55:00 +0100</pubDate>
14 <description>&lt;p&gt;While reading a
15 &lt;a href=&quot;https://sneak.berlin/20230115/macos-scans-your-local-files-now/&quot;&gt;blog
16 post claiming MacOS X recently started scanning local files and
17 reporting information about them to Apple&lt;/a&gt;, even on a machine where
18 all such callback features had been disabled, I came across a
19 description of the Little Snitch application for MacOS X. It seemed
20 like a very nice tool to have in the tool box, and I decided to see if
21 something similar was available for Linux.&lt;/p&gt;
22
23 &lt;p&gt;It did not took long to find
24 &lt;a href=&quot;https://github.com/evilsocket/opensnitch&quot;&gt;the OpenSnitch
25 package&lt;/a&gt;, which has been in development since 2017, and now is in
26 version 1.5.0. It has had a
27 &lt;a href=&quot;https://bugs.debian.org/909567&quot;&gt;request for Debian
28 packaging&lt;/a&gt; since 2018, but no-one completed the job so far. Just
29 for fun, I decided to see if I could help, and I was very happy to
30 discover that
31 &lt;a href=&quot;https://github.com/evilsocket/opensnitch/issues/304&quot;&gt;upstream
32 want a Debian package too&lt;/a&gt;.&lt;/p&gt;
33
34 &lt;p&gt;After struggling a bit with getting the program to run, figuring
35 out building Go programs (and a little failed detour to look at eBPF
36 builds too - help needed), I am very happy to report that I am
37 sponsoring upstream to maintain the package in Debian, and it has
38 since this morning been waiting in NEW for the ftpmasters to have a
39 look. Perhaps it can get into the archive in time for the Bookworm
40 release?&lt;/p&gt;
41
42 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
43 activities, please send Bitcoin donations to my address
44 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
45 </description>
46 </item>
47
48 <item>
49 <title>LinuxCNC MQTT publisher component</title>
50 <link>https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html</link>
51 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html</guid>
52 <pubDate>Sun, 8 Jan 2023 19:30:00 +0100</pubDate>
53 <description>&lt;p&gt;I watched &lt;a href=&quot;https://yewtu.be/watch?v=jmKUV3aNLjk&quot;&gt;a 2015
54 video from Andreas Schiffler&lt;/a&gt; the other day, where he set up
55 &lt;a href=&quot;https://linuxcnc.org/&quot;&gt;LinuxCNC&lt;/a&gt; to send status
56 information to the MQTT broker IBM Bluemix. As I also use MQTT for
57 graphing, it occured to me that a generic MQTT LinuxCNC component
58 would be useful and I set out to implement it. Today I got the first
59 draft limping along and submitted as
60 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/pull/2253&quot;&gt;a patch to the
61 LinuxCNC project&lt;/a&gt;.&lt;/p&gt;
62
63 &lt;p&gt;The simple part was setting up the MQTT publishing code in Python.
64 I already have set up other parts submitting data to my Mosquito MQTT
65 broker, so I could reuse that code. Writing a LinuxCNC component in
66 Python as new to me, but using existing examples in the code
67 repository and the extensive documentation, this was fairly straight
68 forward. The hardest part was creating a automated test for the
69 component to ensure it was working. Testing it in a simulated
70 LinuxCNC machine proved very useful, as I discovered features I needed
71 that I had not thought of yet, and adjusted the code quite a bit to
72 make it easier to test without a operational MQTT broker
73 available.&lt;/p&gt;
74
75 &lt;p&gt;The draft is ready and working, but I am unsure which LinuxCNC HAL
76 pins I should collect and publish by default (in other words, the
77 default set of information pieces published), and how to get the
78 machine name from the LinuxCNC INI file. The latter is a minor
79 detail, but I expect it would be useful in a setup with several
80 machines available. I am hoping for feedback from the experienced
81 LinuxCNC developers and users, to make the component even better
82 before it can go into the mainland LinuxCNC code base.&lt;/p&gt;
83
84 &lt;p&gt;Since I started on the MQTT component, I came across
85 &lt;a href=&quot;https://yewtu.be/watch?v=Bqa2grG0XtA&quot;&gt;another video from Kent
86 VanderVelden&lt;/a&gt; where he combine LinuxCNC with a set of screen glasses
87 controlled by a Raspberry Pi, and it occured to me that it would
88 be useful for such use cases if LinuxCNC also provided a REST API for
89 querying its status. I hope to start on such component once the MQTT
90 component is working well.&lt;/p&gt;
91
92 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
93 activities, please send Bitcoin donations to my address
94 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
95 </description>
96 </item>
97
98 <item>
99 <title>ONVIF IP camera management tool finally in Debian</title>
100 <link>https://people.skolelinux.org/pere/blog/ONVIF_IP_camera_management_tool_finally_in_Debian.html</link>
101 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/ONVIF_IP_camera_management_tool_finally_in_Debian.html</guid>
102 <pubDate>Sat, 24 Dec 2022 08:00:00 +0100</pubDate>
103 <description>&lt;p&gt;Merry Christmas to you all. Here is a small gift to all those with
104 IP cameras following the &lt;a href=&quot;https://www.onvif.org/&quot;&gt;ONVIF
105 specification&lt;/a&gt;. There is finally a nice command line and GUI tool
106 in Debian to manage ONVIF IP cameras. After working with upstream for
107 a few months and sponsoring the upload, I am very happy to report that
108 the &lt;a href=&quot;https://tracker.debian.org/libonvif&quot;&gt;libonvif package&lt;/a&gt;
109 entered Debian Sid last night.&lt;/p&gt;
110
111 &lt;p&gt;The package provide a C library to communicate with such cameras, a
112 command line tool to locate and update settings of (like password) the
113 cameras and a GUI tool to configure and control the units as well as
114 preview the video from the camera. Libonvif is available on Both
115 Linux and Windows and the GUI tool uses the Qt library. The main
116 competitors are non-free software, while libonvif is GNU GPL licensed.
117 I am very glad Debian users in the future can control their cameras
118 using a free software system provided by Debian. But the ONVIF world
119 is full of slightly broken firmware, where the cameras pretend to
120 follow the ONVIF specification but fail to set some configuration
121 values or refuse to provide video to more than one recipient at the
122 time, and the onvif project is quite young and might take a while
123 before it completely work with your camera. Upstream seem eager to
124 improve the library, so handling any broken camera might be just &lt;a
125 href=&quot;https://github.com/sr99622/libonvif/&quot;&gt;a bug report away&lt;/a&gt;.&lt;/p&gt;
126
127 &lt;p&gt;The package just cleared NEW, and need a new source only upload
128 before it can enter testing. This will happen in the next few
129 days.&lt;/p&gt;
130
131 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
132 activities, please send Bitcoin donations to my address
133 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
134 </description>
135 </item>
136
137 <item>
138 <title>Managing and using ONVIF IP cameras with Linux</title>
139 <link>https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</link>
140 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</guid>
141 <pubDate>Wed, 19 Oct 2022 12:30:00 +0200</pubDate>
142 <description>&lt;p&gt;Recently I have been looking at how to control and collect data
143 from a handful IP cameras using Linux. I both wanted to change their
144 settings and to make their imagery available via a free software
145 service under my control. Here is a summary of the tools I found.&lt;/p&gt;
146
147 &lt;p&gt;First I had to identify the cameras and their protocols. As far as
148 I could tell, they were using some SOAP looking protocol and their
149 internal web server seem to only work with Microsoft Internet Explorer
150 with some proprietary binary plugin, which in these days of course is
151 a security disaster and also made it impossible for me to use the
152 camera web interface. Luckily I discovered that the SOAP looking
153 protocol is actually following &lt;a href=&quot;https://www.onvif.org/&quot;&gt;the
154 ONVIF specification&lt;/a&gt;, which seem to be supported by a lot of IP
155 cameras these days.&lt;/p&gt;
156
157 &lt;p&gt;Once the protocol was identified, I was able to find what appear to
158 be the most popular way to configure ONVIF cameras, the free software
159 Windows tool named
160 &lt;a href=&quot;https://sourceforge.net/projects/onvifdm/&quot;&gt;ONVIF Device
161 Manager&lt;/a&gt;. Lacking any other options at the time, I tried
162 unsuccessfully to get it running using Wine, but was missing a dotnet
163 40 library and I found no way around it to run it on Linux.&lt;/p&gt;
164
165 &lt;p&gt;The next tool I found to configure the cameras were a non-free Linux Qt
166 client &lt;a href=&quot;https://www.lingodigit.com/onvif_nvcdemo.html&quot;&gt;ONVIF
167 Device Tool&lt;/a&gt;. I did not like its terms of use, so did not spend
168 much time on it.&lt;/p&gt;
169
170 &lt;p&gt;To collect the video and make it available in a web interface, I
171 found the Zoneminder tool in Debian. A recent version was able to
172 automatically detect and configure ONVIF devices, so I could use it to
173 set up motion detection in and collection of the camera output. I had
174 initial problems getting the ONVIF autodetection to work, as both
175 Firefox and Chromium &lt;a href=&quot;https://bugs.debian.org/1001188&quot;&gt;refused
176 the inter-tab communication&lt;/a&gt; being used by the Zoneminder web
177 pages, but managed to get konqueror to work. Apparently the &quot;Enhanced
178 Tracking Protection&quot; in Firefox cause the problem. I ended up
179 upgrading to the Bookworm edition of Zoneminder in the process to try
180 to fix the issue, and believe the problem might be solved now.&lt;/p&gt;
181
182 &lt;p&gt;In the process I came across the nice Linux GUI tool
183 &lt;a href=&quot;https://gitlab.com/caspermeijn/onvifviewer/&quot;&gt;ONVIF Viewer&lt;/a&gt;
184 allowing me to preview the camera output and validate the login
185 passwords required. Sadly its author has grown tired of maintaining
186 the software, so it might not see any future updates. Which is sad,
187 as the viewer is sightly unstable and the picture tend to lock up.
188 Note, this lockup might be due to limitations in the cameras and not
189 the viewer implementation. I suspect the camera is only able to
190 provide pictures to one client at the time, and the Zoneminder feed
191 might interfere with the GUI viewer. I have
192 &lt;a href=&quot;https://bugs.debian.org/1000820&quot;&gt;asked for the tool to be
193 included in Debian&lt;/a&gt;.&lt;/p&gt;
194
195 &lt;p&gt;Finally, I found what appear to be very nice Linux free software
196 replacement for the Windows tool, named
197 &lt;a href=&quot;https://github.com/sr99622/libonvif/&quot;&gt;libonvif&lt;/a&gt;. It
198 provide a C library to talk to ONVIF devices as well as a command line
199 and GUI tool using the library. Using the GUI tool I was able to change
200 the admin passwords and update other settings of the cameras. I have
201 &lt;a href=&quot;https://bugs.debian.org/1021980&quot;&gt;asked for the package to be
202 included in Debian&lt;/a&gt;.&lt;/p&gt;
203
204 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
205 activities, please send Bitcoin donations to my address
206 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
207
208 &lt;p&gt;&lt;strong&gt;Update 2022-10-20&lt;/strong&gt;: Since my initial publication of
209 this text, I got several suggestions for more free software Linux
210 tools. There is &lt;a href=&quot;https://github.com/quatanium/python-onvif&quot;&gt;a
211 ONVIF python library&lt;/a&gt; (already
212 &lt;a href=&quot;https://bugs.debian.org/824240&quot;&gt;requested into Debian&lt;/a&gt;) and
213 &lt;a href=&quot;https://github.com/FalkTannhaeuser/python-onvif-zeep&quot;&gt;a python 3
214 fork&lt;/a&gt; using a different SOAP dependency. There is also
215 &lt;a href=&quot;https://www.home-assistant.io/integrations/onvif/&quot;&gt;support for
216 ONVIF in Home Assistant&lt;/a&gt;, and there is an alternative to Zoneminder
217 called &lt;a href=&quot;https://www.shinobi.video/&quot;&gt;Shinobi&lt;/a&gt;. The latter
218 two are not included in Debian either. I have not tested any of these
219 so far.&lt;/p&gt;
220 </description>
221 </item>
222
223 <item>
224 <title>Time to translate the Bullseye edition of the Debian Administrator&#39;s Handbook</title>
225 <link>https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</link>
226 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</guid>
227 <pubDate>Mon, 12 Sep 2022 15:45:00 +0200</pubDate>
228 <description>&lt;p align=&quot;center&quot;&gt;&lt;img align=&quot;center&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2020-10-20-debian-handbook-nb-testprint.jpeg&quot; width=&quot;60%&quot;/&gt;&lt;/p&gt;
229
230 &lt;p&gt;(The picture is of the previous edition.)&lt;/p&gt;
231
232 &lt;p&gt;Almost two years after the previous Norwegian Bokmål translation of
233 the &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
234 Handbook&lt;/a&gt;&quot; was published, a new edition is finally being prepared. The
235 english text is updated, and it is time to start working on the
236 translations. Around 37 percent of the strings have been updated, one
237 way or another, and the translations starting from a complete Debian Buster
238 edition now need to bring their translation up from 63% to 100%. The
239 complete book is licensed using a Creative Commons license, and has
240 been published in several languages over the years. The translations
241 are done by volunteers to bring Linux in their native tongue. The
242 last time I checked, it complete text was available in English,
243 Norwegian Bokmål, German, Indonesian, Brazil Portuguese and Spanish.
244 In addition, work has been started for Arabic (Morocco), Catalan,
245 Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish,
246 Dutch, French, Greek, Italian, Japanese, Korean, Persian, Polish,
247 Romanian, Russian, Swedish, Turkish and Vietnamese.&lt;/p&gt;
248
249 &lt;p&gt;The translation is conducted on
250 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
251 hosted weblate project page&lt;/a&gt;. Prospective translators are
252 recommeded to subscribe to
253 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
254 translators mailing list&lt;/a&gt; and should also check out
255 &lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
256 contributors&lt;/a&gt;.&lt;/p&gt;
257
258 &lt;p&gt;I am one of the Norwegian Bokmål translators of this book, and we
259 have just started. Your contribution is most welcome.&lt;/p&gt;
260
261 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
262 activities, please send Bitcoin donations to my address
263 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
264 </description>
265 </item>
266
267 <item>
268 <title>Automatic LinuxCNC servo PID tuning?</title>
269 <link>https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html</link>
270 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html</guid>
271 <pubDate>Sat, 16 Jul 2022 22:30:00 +0200</pubDate>
272 <description>&lt;p&gt;While working on a CNC with servo motors controlled by the
273 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt;
274 &lt;a href=&quot;https://en.wikipedia.org/wiki/PID_controller&quot;&gt;PID
275 controller&lt;/a&gt;, I recently had to learn how to tune the collection of values
276 that control such mathematical machinery that a PID controller is. It
277 proved to be a lot harder than I hoped, and I still have not succeeded
278 in getting the Z PID controller to successfully defy gravity, nor X
279 and Y to move accurately and reliably. But while climbing up this
280 rather steep learning curve, I discovered that some motor control
281 systems are able to tune their PID controllers. I got the impression
282 from the documentation that LinuxCNC were not. This proved to be not
283 true.&lt;/p&gt;
284
285 &lt;p&gt;The LinuxCNC
286 &lt;a href=&quot;http://linuxcnc.org/docs/html/man/man9/pid.9.html&quot;&gt;pid
287 component&lt;/a&gt; is the recommended PID controller to use. It uses eight
288 constants &lt;tt&gt;Pgain&lt;/tt&gt;, &lt;tt&gt;Igain&lt;/tt&gt;, &lt;tt&gt;Dgain&lt;/tt&gt;,
289 &lt;tt&gt;bias&lt;/tt&gt;, &lt;tt&gt;FF0&lt;/tt&gt;, &lt;tt&gt;FF1&lt;/tt&gt;, &lt;tt&gt;FF2&lt;/tt&gt; and
290 &lt;tt&gt;FF3&lt;/tt&gt; to calculate the output value based on current and wanted
291 state, and all of these need to have a sensible value for the
292 controller to behave properly. Note, there are even more values
293 involved, theser are just the most important ones. In my case I need
294 the X, Y and Z axes to follow the requested path with little error.
295 This has proved quite a challenge for someone who have never tuned a
296 PID controller before, but there is at least some help to be found.
297
298 &lt;p&gt;I discovered that included in LinuxCNC was this old PID component
299 at_pid claiming to have auto tuning capabilities. Sadly it had been
300 neglected since 2011, and could not be used as a plug in replacement
301 for the default pid component. One would have to rewriting the
302 LinuxCNC HAL setup to test at_pid. This was rather sad, when I wanted
303 to quickly test auto tuning to see if it did a better job than me at
304 figuring out good P, I and D values to use.&lt;/p&gt;
305
306 &lt;p&gt;I decided to have a look if the situation could be improved. This
307 involved trying to understand the code and history of the pid and
308 at_pid components. Apparently they had a common ancestor, as code
309 structure, comments and variable names were quite close to each other.
310 Sadly this was not reflected in the git history, making it hard to
311 figure out what really happened. My guess is that the author of
312 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/at_pid.c&quot;&gt;at_pid.c&lt;/a&gt;
313 took a version of
314 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/pid.c&quot;&gt;pid.c&lt;/a&gt;,
315 rewrote it to follow the structure he wished pid.c to have, then added
316 support for auto tuning and finally got it included into the LinuxCNC
317 repository. The restructuring and lack of early history made it
318 harder to figure out which part of the code were relevant to the auto
319 tuning, and which part of the code needed to be updated to work the
320 same way as the current pid.c implementation. I started by trying to
321 isolate relevant changes in pid.c, and applying them to at_pid.c. My
322 aim was to make sure the at_pid component could replace the pid
323 component with a simple change in the HAL setup loadrt line, without
324 having to &quot;rewire&quot; the rest of the HAL configuration. After a few
325 hours following this approach, I had learned quite a lot about the
326 code structure of both components, while concluding I was heading down
327 the wrong rabbit hole, and should get back to the surface and find a
328 different path.&lt;/p&gt;
329
330 &lt;p&gt;For the second attempt, I decided to throw away all the PID control
331 related part of the original at_pid.c, and instead isolate and lift
332 the auto tuning part of the code and inject it into a copy of pid.c.
333 This ensured compatibility with the current pid component, while
334 adding auto tuning as a run time option. To make it easier to identify
335 the relevant parts in the future, I wrapped all the auto tuning code
336 with &#39;#ifdef AUTO_TUNER&#39;. The end result behave just like the current
337 pid component by default, as that part of the code is identical. The
338 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/pull/1820&quot;&gt;end result
339 entered the LinuxCNC master branch&lt;/a&gt; a few days ago.&lt;/p&gt;
340
341 &lt;p&gt;To enable auto tuning, one need to set a few HAL pins in the PID
342 component. The most important ones are &lt;tt&gt;tune-effort&lt;/tt&gt;,
343 &lt;tt&gt;tune-mode&lt;/tt&gt; and &lt;tt&gt;tune-start&lt;/tt&gt;. But lets take a step
344 back, and see what the auto tuning code will do. I do not know the
345 mathematical foundation of the at_pid algorithm, but from observation
346 I can tell that the algorithm will, when enabled, produce a square
347 wave pattern centered around the &lt;tt&gt;bias&lt;/tt&gt; value on the output pin
348 of the PID controller. This can be seen using the HAL Scope provided
349 by LinuxCNC. In my case, this is translated into voltage (+-10V) sent
350 to the motor controller, which in turn is translated into motor speed.
351 So at_pid will ask the motor to move the axis back and forth. The
352 number of cycles in the pattern is controlled by the
353 &lt;tt&gt;tune-cycles&lt;/tt&gt; pin, and the extremes of the wave pattern is
354 controlled by the &lt;tt&gt;tune-effort&lt;/tt&gt; pin. Of course, trying to
355 change the direction of a physical object instantly (as in going
356 directly from a positive voltage to the equivalent negative voltage)
357 do not change velocity instantly, and it take some time for the object
358 to slow down and move in the opposite direction. This result in a
359 more smooth movement wave form, as the axis in question were vibrating
360 back and forth. When the axis reached the target speed in the
361 opposing direction, the auto tuner change direction again. After
362 several of these changes, the average time delay between the &#39;peaks&#39;
363 and &#39;valleys&#39; of this movement graph is then used to calculate
364 proposed values for Pgain, Igain and Dgain, and insert them into the
365 HAL model to use by the pid controller. The auto tuned settings are
366 not great, but htye work a lot better than the values I had been able
367 to cook up on my own, at least for the horizontal X and Y axis. But I
368 had to use very small &lt;tt&gt;tune-effort&lt;tt&gt; values, as my motor
369 controllers error out if the voltage change too quickly. I&#39;ve been
370 less lucky with the Z axis, which is moving a heavy object up and
371 down, and seem to confuse the algorithm. The Z axis movement became a
372 lot better when I introduced a &lt;tt&gt;bias&lt;/tt&gt; value to counter the
373 gravitational drag, but I will have to work a lot more on the Z axis
374 PID values.&lt;/p&gt;
375
376 &lt;p&gt;Armed with this knowledge, it is time to look at how to do the
377 tuning. Lets say the HAL configuration in question load the PID
378 component for X, Y and Z like this:&lt;/p&gt;
379
380 &lt;blockquote&gt;&lt;pre&gt;
381 loadrt pid names=pid.x,pid.y,pid.z
382 &lt;/pre&gt;&lt;/blockquote&gt;
383
384 &lt;p&gt;Armed with the new and improved at_pid component, the new line will
385 look like this:&lt;/p&gt;
386
387 &lt;blockquote&gt;&lt;pre&gt;
388 loadrt at_pid names=pid.x,pid.y,pid.z
389 &lt;/pre&gt;&lt;/blockquote&gt;
390
391 &lt;p&gt;The rest of the HAL setup can stay the same. This work because the
392 components are referenced by name. If the component had used count=3
393 instead, all use of pid.# had to be changed to at_pid.#.&lt;/p&gt;
394
395 &lt;p&gt;To start tuning the X axis, move the axis to the middle of its
396 range, to make sure it do not hit anything when it start moving back
397 and forth. Next, set the &lt;tt&gt;tune-effort&lt;/tt&gt; to a low number in the
398 output range. I used 0.1 as my initial value. Next, assign 1 to the
399 &lt;tt&gt;tune-mode&lt;/tt&gt; value. Note, this will disable the pid controlling
400 part and feed 0 to the output pin, which in my case initially caused a
401 lot of drift. In my case it proved to be a good idea with X and Y to
402 tune the motor driver to make sure 0 voltage stopped the motor
403 rotation. On the other hand, for the Z axis this proved to be a bad
404 idea, so it will depend on your setup. It might help to set the
405 &lt;tt&gt;bias&lt;/tt&gt; value to a output value that reduce or eliminate the
406 axis drift. Finally, after setting &lt;tt&gt;tune-mode&lt;/tt&gt;, set
407 &lt;tt&gt;tune-start&lt;/tt&gt; to 1 to activate the auto tuning. If all go well,
408 your axis will vibrate for a few seconds and when it is done, new
409 values for Pgain, Igain and Dgain will be active. To test them,
410 change &lt;tt&gt;tune-mode&lt;/tt&gt; back to 0. Note that this might cause the
411 machine to suddenly jerk as it bring the axis back to its commanded
412 position, which it might have drifted away from during tuning. To
413 summarize with some halcmd lines:&lt;/p&gt;
414
415 &lt;blockquote&gt;&lt;pre&gt;
416 setp pid.x.tune-effort 0.1
417 setp pid.x.tune-mode 1
418 setp pid.x.tune-start 1
419 # wait for the tuning to complete
420 setp pid.x.tune-mode 0
421 &lt;/pre&gt;&lt;/blockquote&gt;
422
423 &lt;p&gt;After doing this task quite a few times while trying to figure out
424 how to properly tune the PID controllers on the machine in, I decided
425 to figure out if this process could be automated, and wrote a script
426 to do the entire tuning process from power on. The end result will
427 ensure the machine is powered on and ready to run, home all axis if it
428 is not already done, check that the extra tuning pins are available,
429 move the axis to its mid point, run the auto tuning and re-enable the
430 pid controller when it is done. It can be run several times. Check
431 out the
432 &lt;a href=&quot;https://github.com/SebKuzminsky/MazakVQC1540/blob/bon-dev/scripts/run-auto-pid-tuner&quot;&gt;run-auto-pid-tuner&lt;/a&gt;
433 script on github if you want to learn how it is done.&lt;/p&gt;
434
435 &lt;p&gt;My hope is that this little adventure can inspire someone who know
436 more about motor PID controller tuning can implement even better
437 algorithms for automatic PID tuning in LinuxCNC, making life easier
438 for both me and all the others that want to use LinuxCNC but lack the
439 in depth knowledge needed to tune PID controllers well.&lt;/p&gt;
440
441 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
442 activities, please send Bitcoin donations to my address
443 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
444 </description>
445 </item>
446
447 <item>
448 <title>LinuxCNC translators life just got a bit easier</title>
449 <link>https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</link>
450 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</guid>
451 <pubDate>Fri, 3 Jun 2022 21:10:00 +0200</pubDate>
452 <description>&lt;p&gt;Back in oktober last year, when I started looking at the
453 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt; system, I
454 proposed to change the documentation build system make life easier for
455 translators. The original system consisted of independently written
456 documentation files for each language, with no automated way to track
457 changes done in other translations and no help for the translators to
458 know how much was left to translated. By using
459 &lt;a href=&quot;https://po4a.org/&quot;&gt;the po4a system&lt;/a&gt; to generate POT and PO
460 files from the English documentation, this can be improved. A small
461 team of LinuxCNC contributors got together and today our labour
462 finally payed off. Since a few hours ago, it is now possible to
463 translate &lt;a href=&quot;https://hosted.weblate.org/projects/linuxcnc/&quot;&gt;the
464 LinuxCNC documentation on Weblate&lt;/a&gt;, alongside the program itself.&lt;/p&gt;
465
466 &lt;p&gt;The effort to migrate the documentation to use po4a has been both
467 slow and frustrating. I am very happy we finally made it.&lt;/p&gt;
468
469 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
470 activities, please send Bitcoin donations to my address
471 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
472 </description>
473 </item>
474
475 <item>
476 <title>geteltorito make CD firmware upgrades a breeze</title>
477 <link>https://people.skolelinux.org/pere/blog/geteltorito_make_CD_firmware_upgrades_a_breeze.html</link>
478 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/geteltorito_make_CD_firmware_upgrades_a_breeze.html</guid>
479 <pubDate>Wed, 20 Apr 2022 11:50:00 +0200</pubDate>
480 <description>&lt;p&gt;Recently I wanted to upgrade the firmware of my thinkpad, and
481 located the firmware download page from Lenovo (which annoyingly do
482 not allow access via Tor, forcing me to hand them more personal
483 information that I would like). The
484 &lt;a href=&quot;https://support.lenovo.com/no/en/search?query=thinkpad firmware bios upgrade iso&amp;SearchType=Customer search&amp;searchLocation=Masthead&quot;&gt;download
485 from Lenovo&lt;/a&gt; is a bootable ISO image, which is a bit of a problem
486 when all I got available is a USB memory stick. I tried booting the
487 ISO as a USB stick, but this did not work. But genisoimage came to
488 the rescue.&lt;/p&gt;
489
490 &lt;P&gt;The geteltorito program in
491 &lt;a href=&quot;http://tracker.debian.org/cdrkit&quot;&gt;the genisoimage binary
492 package&lt;/a&gt; is able to convert the bootable ISO image to a bootable
493 USB stick using a simple command line recipe, which I then can write
494 to the most recently inserted USB stick:&lt;/p&gt;
495
496 &lt;blockquote&gt;&lt;pre&gt;
497 geteltorito -o usbstick.img lenovo-firmware.iso
498 sudo dd bs=10M if=usbstick.img of=$(ls -tr /dev/sd?|tail -1)
499 &lt;/pre&gt;&lt;/blockquote&gt;
500
501 &lt;p&gt;This USB stick booted the firmware upgrader just fine, and in a few
502 minutes my machine had the latest and greatest BIOS firmware in place.&lt;/p&gt;
503 </description>
504 </item>
505
506 <item>
507 <title>Run your industrial metal working machine using Debian?</title>
508 <link>https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html</link>
509 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html</guid>
510 <pubDate>Wed, 2 Mar 2022 18:40:00 +0100</pubDate>
511 <description>&lt;p&gt;After many months of hard work by the good people involved in
512 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt;, the
513 system was accepted Sunday
514 &lt;a href=&quot;https://tracker.debian.org/pkg/linuxcnc&quot;&gt;into Debian&lt;/a&gt;.
515 Once it was available from Debian, I was surprised to discover from
516 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=linuxcnc&quot;&gt;its
517 popularity-contest numbers&lt;/a&gt; that people have been reporting its use
518 since 2012. &lt;a href=&quot;http://linuxcnc.org/&quot;&gt;Its project site&lt;/a&gt; might
519 be a good place to check out, but sadly is not working when visiting
520 via Tor.&lt;/p&gt;
521
522 &lt;p&gt;But what is LinuxCNC, you are probably wondering? Perhaps a
523 Wikipedia quote is in place?&lt;/p&gt;
524
525 &lt;blockquote&gt;
526 &quot;LinuxCNC is a software system for numerical control of
527 machines such as milling machines, lathes, plasma cutters, routers,
528 cutting machines, robots and hexapods. It can control up to 9 axes or
529 joints of a CNC machine using G-code (RS-274NGC) as input. It has
530 several GUIs suited to specific kinds of usage (touch screen,
531 interactive development).&quot;
532 &lt;/blockquote&gt;
533
534 &lt;p&gt;It can even control 3D printers. And even though the Wikipedia
535 page indicate that it can only work with hard real time kernel
536 features, it can also work with the user space soft real time features
537 provided by the Debian kernel.
538 &lt;a href=&quot;https://github.com/linuxcnc/linuxcnc&quot;&gt;The source code&lt;/a&gt; is
539 available from Github. The last few months I&#39;ve been involved in the
540 translation setup for the program and documentation. Translators are
541 most welcome to
542 &lt;a href=&quot;https://hosted.weblate.org/engage/linuxcnc/&quot;&gt;join the
543 effort&lt;/a&gt; using Weblate.&lt;/p&gt;
544
545 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
546 activities, please send Bitcoin donations to my address
547 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
548 </description>
549 </item>
550
551 <item>
552 <title>Debian still an excellent choice for Lego builders</title>
553 <link>https://people.skolelinux.org/pere/blog/Debian_still_an_excellent_choice_for_Lego_builders.html</link>
554 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_still_an_excellent_choice_for_Lego_builders.html</guid>
555 <pubDate>Sun, 24 Oct 2021 07:10:00 +0200</pubDate>
556 <description>&lt;p&gt;The Debian Lego team saw a lot of activity the last few weeks. All
557 the packages under the team umbrella has been updated to fix
558 packaging, lintian issues and BTS reports. In addition, a new and
559 inspiring team member appeared on both the
560 &lt;a href=&quot;https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-lego-team&quot;&gt;debian-lego-team
561 Team mailing list&lt;/a&gt; and
562 &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;IRC channel
563 #debian-lego&lt;/a&gt;. If you are interested in Lego CAD design and LEGO
564 Mindstorms programming, check out the
565 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;team wiki page&lt;/a&gt; to
566 see what Debian can offer the Lego enthusiast.&lt;/p&gt;
567
568 &lt;p&gt;Patches has been sent upstream, causing new upstream releases, one
569 even the first one in more than ten years, and old upstreams was
570 released with new ones. There are still a lot of work left, and the
571 team welcome more members to help us make sure Debian is the Linux
572 distribution of choice for Lego builders. If you want to contribute,
573 join us in the IRC channel and become part of
574 &lt;a href=&quot;https://salsa.debian.org/debian-lego-team/&quot;&gt;the team on
575 Salsa&lt;/a&gt;.&lt;/p&gt;
576
577 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
578 activities, please send Bitcoin donations to my address
579 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
580 </description>
581 </item>
582
583 <item>
584 <title>Six complete translations of The Debian Administrator&#39;s Handbook for Buster</title>
585 <link>https://people.skolelinux.org/pere/blog/Six_complete_translations_of_The_Debian_Administrator_s_Handbook_for_Buster.html</link>
586 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Six_complete_translations_of_The_Debian_Administrator_s_Handbook_for_Buster.html</guid>
587 <pubDate>Mon, 5 Jul 2021 19:20:00 +0200</pubDate>
588 <description>&lt;p&gt;I am happy observe that the &lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The
589 Debian Administrator&#39;s Handbook&lt;/a&gt; is available in six languages now.
590 I am not sure which one of these are completely proof read, but the
591 complete book is available in these languages:
592
593 &lt;ul&gt;
594
595 &lt;li&gt;English&lt;/li&gt;
596 &lt;li&gt;Norwegian Bokmål&lt;/li&gt;
597 &lt;li&gt;German&lt;/li&gt;
598 &lt;li&gt;Indonesian&lt;/li&gt;
599 &lt;li&gt;Brazil Portuguese&lt;/li&gt;
600 &lt;li&gt;Spanish&lt;/li&gt;
601
602 &lt;/ul&gt;
603
604 &lt;p&gt;This is the list of languages more than 70% complete, in other
605 words with not too much left to do:&lt;/p&gt;
606
607 &lt;ul&gt;
608
609 &lt;li&gt;Chinese (Simplified) - 90%&lt;/li&gt;
610 &lt;li&gt;French - 79%&lt;/li&gt;
611 &lt;li&gt;Italian - 79%&lt;/li&gt;
612 &lt;li&gt;Japanese - 77%&lt;/li&gt;
613 &lt;li&gt;Arabic (Morocco) - 75%&lt;/li&gt;
614 &lt;li&gt;Persian - 71%&lt;/li&gt;
615
616 &lt;/ul&gt;
617
618 &lt;p&gt;I wonder how long it will take to bring these to 100%.&lt;/p&gt;
619
620 &lt;p&gt;Then there is the list of languages about halfway done:&lt;/p&gt;
621
622 &lt;ul&gt;
623
624 &lt;li&gt;Russian - 63%&lt;/li&gt;
625 &lt;li&gt;Swedish - 53%&lt;/li&gt;
626 &lt;li&gt;Chinese (Traditional) - 46%&lt;/li&gt;
627 &lt;li&gt;Catalan - 45%&lt;/li&gt;
628
629 &lt;/ul&gt;
630
631 &lt;p&gt;Several are on to a good start:&lt;/p&gt;
632
633 &lt;ul&gt;
634
635 &lt;li&gt;Dutch - 26%&lt;/li&gt;
636 &lt;li&gt;Vietnamese - 25%&lt;/li&gt;
637 &lt;li&gt;Polish - 23%&lt;/li&gt;
638 &lt;li&gt;Czech - 22%&lt;/li&gt;
639 &lt;li&gt;Turkish - 18%&lt;/li&gt;
640
641 &lt;/ul&gt;
642
643 &lt;p&gt;Finally, there are the ones just getting started:&lt;/p&gt;
644
645 &lt;ul&gt;
646
647 &lt;li&gt;Korean - 4%&lt;/li&gt;
648 &lt;li&gt;Croatian - 2%&lt;/li&gt;
649 &lt;li&gt;Greek - 2%&lt;/li&gt;
650 &lt;li&gt;Danish - 1%&lt;/li&gt;
651 &lt;li&gt;Romanian - 1%&lt;/li&gt;
652
653 &lt;/ul&gt;
654
655 &lt;p&gt;If you want to help provide a Debian instruction book in your own
656 language, visit
657 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/#languages&quot;&gt;Weblate&lt;/a&gt;
658 to contribute to the translations.&lt;/p&gt;
659
660 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
661 activities, please send Bitcoin donations to my address
662 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
663 </description>
664 </item>
665
666 <item>
667 <title>Latest Jami back in Debian Testing, and scriptable using dbus</title>
668 <link>https://people.skolelinux.org/pere/blog/Latest_Jami_back_in_Debian_Testing__and_scriptable_using_dbus.html</link>
669 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Latest_Jami_back_in_Debian_Testing__and_scriptable_using_dbus.html</guid>
670 <pubDate>Tue, 12 Jan 2021 17:00:00 +0100</pubDate>
671 <description>&lt;p&gt;After a lot of hard work by its maintainer Alexandre Viau and
672 others, the decentralized communication platform
673 &lt;a href=&quot;https://en.wikipedia.org/wiki/Jami_(software)&quot;&gt;Jami&lt;/a&gt;
674 (earlier known as Ring), managed to get
675 &lt;a href=&quot;https://tracker.debian.org/pkg/ring&quot;&gt;its latest version&lt;/a&gt;
676 into Debian Testing. Several of its dependencies has caused build and
677 propagation problems, which all seem to be solved now.&lt;/p&gt;
678
679 &lt;p&gt;In addition to the fact that Jami is decentralized, similar to how
680 bittorrent is decentralized, I first of all like how it is not
681 connected to external IDs like phone numbers. This allow me to set up
682 computers to send me notifications using Jami without having to find
683 get a phone number for each computer. Automatic notification via Jami
684 is also made trivial thanks to the provided client side API (as a DBus
685 service). Here is my bourne shell script demonstrating how to let any
686 system send a message to any Jami address. It will create a new
687 identity before sending the message, if no Jami identity exist
688 already:&lt;/p&gt;
689
690 &lt;p&gt;&lt;pre&gt;
691 #!/bin/sh
692 #
693 # Usage: $0 &lt;jami-address&gt; &lt;message&gt;
694 #
695 # Send &lt;message&gt; to &lt;jami-address&gt;, create local jami account if
696 # missing.
697 #
698 # License: GPL v2 or later at your choice
699 # Author: Petter Reinholdtsen
700
701
702 if [ -z &quot;$HOME&quot; ] ; then
703 echo &quot;error: missing \$HOME, required for dbus to work&quot;
704 exit 1
705 fi
706
707 # First, get dbus running if not already running
708 DBUSLAUNCH=/usr/bin/dbus-launch
709 PIDFILE=/run/asterisk/dbus-session.pid
710 if [ -e $PIDFILE ] ; then
711 . $PIDFILE
712 if ! kill -0 $DBUS_SESSION_BUS_PID 2&gt;/dev/null ; then
713 unset DBUS_SESSION_BUS_ADDRESS
714 fi
715 fi
716 if [ -z &quot;$DBUS_SESSION_BUS_ADDRESS&quot; ] &amp;&amp; [ -x &quot;$DBUSLAUNCH&quot; ]; then
717 DBUS_SESSION_BUS_ADDRESS=&quot;unix:path=$HOME/.dbus&quot;
718 dbus-daemon --session --address=&quot;$DBUS_SESSION_BUS_ADDRESS&quot; --nofork --nopidfile --syslog-only &lt; /dev/null &gt; /dev/null 2&gt;&amp;1 3&gt;&amp;1 &amp;
719 DBUS_SESSION_BUS_PID=$!
720 (
721 echo DBUS_SESSION_BUS_PID=$DBUS_SESSION_BUS_PID
722 echo DBUS_SESSION_BUS_ADDRESS=\&quot;&quot;$DBUS_SESSION_BUS_ADDRESS&quot;\&quot;
723 echo export DBUS_SESSION_BUS_ADDRESS
724 ) &gt; $PIDFILE
725 . $PIDFILE
726 fi &amp;
727
728 dringop() {
729 part=&quot;$1&quot;; shift
730 op=&quot;$1&quot;; shift
731 dbus-send --session \
732 --dest=&quot;cx.ring.Ring&quot; /cx/ring/Ring/$part cx.ring.Ring.$part.$op $*
733 }
734
735 dringopreply() {
736 part=&quot;$1&quot;; shift
737 op=&quot;$1&quot;; shift
738 dbus-send --session --print-reply \
739 --dest=&quot;cx.ring.Ring&quot; /cx/ring/Ring/$part cx.ring.Ring.$part.$op $*
740 }
741
742 firstaccount() {
743 dringopreply ConfigurationManager getAccountList | \
744 grep string | awk -F&#39;&quot;&#39; &#39;{print $2}&#39; | head -n 1
745 }
746
747 account=$(firstaccount)
748
749 if [ -z &quot;$account&quot; ] ; then
750 echo &quot;Missing local account, trying to create it&quot;
751 dringop ConfigurationManager addAccount \
752 dict:string:string:&quot;Account.type&quot;,&quot;RING&quot;,&quot;Account.videoEnabled&quot;,&quot;false&quot;
753 account=$(firstaccount)
754 if [ -z &quot;$account&quot; ] ; then
755 echo &quot;unable to create local account&quot;
756 exit 1
757 fi
758 fi
759
760 # Not using dringopreply to ensure $2 can contain spaces
761 dbus-send --print-reply --session \
762 --dest=cx.ring.Ring \
763 /cx/ring/Ring/ConfigurationManager \
764 cx.ring.Ring.ConfigurationManager.sendTextMessage \
765 string:&quot;$account&quot; string:&quot;$1&quot; \
766 dict:string:string:&quot;text/plain&quot;,&quot;$2&quot;
767 &lt;/pre&gt;&lt;/p&gt;
768
769 &lt;p&gt;If you want to check it out yourself, visit the
770 &lt;a href=&quot;https://jami.net/&quot;&gt;the Jami system project page&lt;/a&gt; to learn
771 more, and install the latest Jami client from Debian Unstable or
772 Testing.&lt;/p&gt;
773
774 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
775 activities, please send Bitcoin donations to my address
776 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
777 </description>
778 </item>
779
780 <item>
781 <title>Buster based Bokmål edition of Debian Administrator&#39;s Handbook</title>
782 <link>https://people.skolelinux.org/pere/blog/Buster_based_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html</link>
783 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Buster_based_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html</guid>
784 <pubDate>Tue, 20 Oct 2020 18:35:00 +0200</pubDate>
785 <description>&lt;p align=&quot;center&quot;&gt;&lt;img align=&quot;center&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2020-10-20-debian-handbook-nb-testprint.jpeg&quot; width=&quot;60%&quot;/&gt;&lt;/p&gt;
786
787 &lt;p&gt;I am happy to report that we finally made it! Norwegian Bokmål
788 became the first translation published on paper of the new Buster
789 based edition of &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian
790 Administrator&#39;s Handbook&lt;/a&gt;&quot;. The print proof reading copy arrived
791 some days ago, and it looked good, so now the book is approved for
792 general distribution. This updated paperback edition &lt;a
793 href=&quot;https://debian-handbook.info/get/#norwegian&quot;&gt;is available from
794 lulu.com&lt;/a&gt;. The book is also available for download in electronic
795 form as PDF, EPUB and Mobipocket, and can also be
796 &lt;a href=&quot;https://debian-handbook.info/browse/nb-NO/stable/&quot;&gt;read online&lt;/a&gt;.&lt;/p&gt;
797
798 &lt;p&gt;I am very happy to wrap up this Creative Common licensed project,
799 which concludes several months of work by several volunteers. The
800 number of Linux related books published in Norwegian are few, and I
801 really hope this one will gain many readers, as it is packed with deep
802 knowledge on Linux and the Debian ecosystem. The book will be
803 available for various Internet book stores like Amazon and Barnes &amp;
804 Noble soon, but I recommend buying
805 &quot;&lt;a href=&quot;https://www.lulu.com/en/us/shop/roland-mas-and-rapha%C3%ABl-hertzog/h%C3%A5ndbok-for-debian-administratoren/paperback/product-9j7qwq.html&quot;&gt;Håndbok
806 for Debian-administratoren&lt;/a&gt;&quot; directly from the source at Lulu.
807
808 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
809 activities, please send Bitcoin donations to my address
810 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
811 </description>
812 </item>
813
814 <item>
815 <title>Buster update of Norwegian Bokmål edition of Debian Administrator&#39;s Handbook almost done</title>
816 <link>https://people.skolelinux.org/pere/blog/Buster_update_of_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_almost_done.html</link>
817 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Buster_update_of_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_almost_done.html</guid>
818 <pubDate>Fri, 11 Sep 2020 09:45:00 +0200</pubDate>
819 <description>&lt;p&gt;Thanks to the good work of several volunteers, the updated edition
820 of the Norwegian translation for
821 &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
822 Handbook&lt;/a&gt;&quot; is now almost completed. After many months of proof
823 reading, I consider the proof reading complete enough for us to move
824 to the next step, and have asked for the print version to be prepared
825 and sent of to the print on demand service lulu.com. While it is
826 still not to late if you find any incorrect translations on
827 &lt;a href=&quot;https://hosted.weblate.org/languages/nb_NO/debian-handbook/&quot;&gt;the
828 hosted Weblate service&lt;/a&gt;, but it will be soon. :) You can check out
829 &lt;a href=&quot; https://debian-handbook.info/browse/nb-NO/stable/&quot;&gt;the Buster
830 edition on the web&lt;/a&gt; until the print edition is ready.&lt;/p&gt;
831
832 &lt;p&gt;The book will be for sale on lulu.com and various web book stores,
833 with links available from the web site for the book linked to above.
834 I hope a lot of readers find it useful.&lt;/p&gt;
835
836 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
837 activities, please send Bitcoin donations to my address
838 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
839 </description>
840 </item>
841
842 <item>
843 <title>Working on updated Norwegian Bokmål edition of Debian Administrator&#39;s Handbook</title>
844 <link>https://people.skolelinux.org/pere/blog/Working_on_updated_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html</link>
845 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Working_on_updated_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html</guid>
846 <pubDate>Sat, 4 Jul 2020 23:55:00 +0200</pubDate>
847 <description>&lt;p&gt;Three years ago, the first Norwegian Bokmål edition of
848 &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
849 Handbook&lt;/a&gt;&quot; was published. This was based on Debian Jessie. Now a
850 new and updated version based on Buster is getting ready. Work on the
851 updated Norwegian Bokmål edition has been going on for a few months
852 now, and yesterday, we reached the first mile stone, with 100% of the
853 texts being translated. A lot of proof reading remains, of course,
854 but a major step towards a new edition has been taken.&lt;/p&gt;
855
856 &lt;p&gt;The book is translated by volunteers, and we would love to get some
857 help with the proof reading. The translation uses
858 &lt;a href=&quot;https://hosted.weblate.org/languages/nb_NO/debian-handbook/&quot;&gt;the
859 hosted Weblate service&lt;/a&gt;, and we welcome everyone to have a look and
860 submit improvements and suggestions. There is also a proof readers
861 PDF available on request, get in touch if you want to help out that
862 way.&lt;/p&gt;
863
864 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
865 activities, please send Bitcoin donations to my address
866 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
867 </description>
868 </item>
869
870 <item>
871 <title>Secure Socket API - a simple and powerful approach for TLS support in software</title>
872 <link>https://people.skolelinux.org/pere/blog/Secure_Socket_API___a_simple_and_powerful_approach_for_TLS_support_in_software.html</link>
873 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Secure_Socket_API___a_simple_and_powerful_approach_for_TLS_support_in_software.html</guid>
874 <pubDate>Sat, 6 Jun 2020 12:40:00 +0200</pubDate>
875 <description>&lt;p&gt;As a member of the &lt;a href=&quot;https://www.nuug.no/&quot;&gt;Norwegian Unix
876 User Group&lt;/a&gt;, I have the pleasure of receiving the
877 &lt;a href=&quot;https://www.usenix.org/&quot;&gt;USENIX&lt;/a&gt; magazine
878 &lt;a href=&quot;https://www.usenix.org/publications/login/&quot;&gt;;login:&lt;/a&gt;
879 several times a year. I rarely have time to read all the articles,
880 but try to at least skim through them all as there is a lot of nice
881 knowledge passed on there. I even carry the latest issue with me most
882 of the time to try to get through all the articles when I have a few
883 spare minutes.&lt;/p&gt;
884
885 &lt;p&gt;The other day I came across a nice article titled
886 &quot;&lt;a href=&quot;https://www.usenix.org/publications/login/winter2018/oneill&quot;&gt;The
887 Secure Socket API: TLS as an Operating System Service&lt;/a&gt;&quot; with a
888 marvellous idea I hope can make it all the way into the POSIX standard.
889 The idea is as simple as it is powerful. By introducing a new
890 socket() option IPPROTO_TLS to use TLS, and a system wide service to
891 handle setting up TLS connections, one both make it trivial to add TLS
892 support to any program currently using the POSIX socket API, and gain
893 system wide control over certificates, TLS versions and encryption
894 systems used. Instead of doing this:&lt;/p&gt;
895
896 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
897 int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
898 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
899
900 &lt;p&gt;the program code would be doing this:&lt;p&gt;
901
902 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
903 int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TLS);
904 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
905
906 &lt;p&gt;According to the ;login: article, converting a C program to use TLS
907 would normally modify only 5-10 lines in the code, which is amazing
908 when compared to using for example the OpenSSL API.&lt;/p&gt;
909
910 &lt;p&gt;The project has set up the
911 &lt;a href=&quot;https://securesocketapi.org/&quot;&gt;https://securesocketapi.org/&lt;/a&gt;
912 web site to spread the idea, and the code for a kernel module and the
913 associated system daemon is available from two github repositories:
914 &lt;a href=&quot;https://github.com/markoneill/ssa&quot;&gt;ssa&lt;/a&gt; and
915 &lt;a href=&quot;https://github.com/markoneill/ssa-daemon&quot;&gt;ssa-daemon&lt;/a&gt;.
916 Unfortunately there is no explicit license information with the code,
917 so its copyright status is unclear. A
918 &lt;a href=&quot;https://github.com/markoneill/ssa/issues/2&quot;&gt;request to solve
919 this&lt;/a&gt; about it has been unsolved since 2018-08-17.&lt;/p&gt;
920
921 &lt;p&gt;I love the idea of extending socket() to gain TLS support, and
922 understand why it is an advantage to implement this as a kernel module
923 and system wide service daemon, but can not help to think that it
924 would be a lot easier to get projects to move to this way of setting
925 up TLS if it was done with a user space approach where programs
926 wanting to use this API approach could just link with a wrapper
927 library.&lt;/p&gt;
928
929 &lt;p&gt;I recommend you check out this simple and powerful approach to more
930 secure network connections. :)&lt;/p&gt;
931
932 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
933 activities, please send Bitcoin donations to my address
934 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
935 </description>
936 </item>
937
938 <item>
939 <title>Jami as a Zoom client, a trick for password protected rooms...</title>
940 <link>https://people.skolelinux.org/pere/blog/Jami_as_a_Zoom_client__a_trick_for_password_protected_rooms___.html</link>
941 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Jami_as_a_Zoom_client__a_trick_for_password_protected_rooms___.html</guid>
942 <pubDate>Fri, 8 May 2020 13:30:00 +0200</pubDate>
943 <description>&lt;p&gt;Half a year ago,
944 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html&quot;&gt;I
945 wrote&lt;/a&gt; about &lt;a href=&quot;https://jami.net/&quot;&gt;the Jami communication
946 client&lt;/a&gt;, capable of peer-to-peer encrypted communication. It
947 handle both messages, audio and video. It uses distributed hash
948 tables instead of central infrastructure to connect its users to each
949 other, which in my book is a plus. I mentioned briefly that it could
950 also work as a SIP client, which came in handy when the higher
951 educational sector in Norway started to promote Zoom as its video
952 conferencing solution. I am reluctant to use the official Zoom client
953 software, due to their &lt;a href=&quot;https://zoom.us/terms&quot;&gt;copyright
954 license clauses&lt;/a&gt; prohibiting users to reverse engineer (for example
955 to check the security) and benchmark it, and thus prefer to connect to
956 Zoom meetings with free software clients.&lt;/p&gt;
957
958 &lt;p&gt;Jami worked OK as a SIP client to Zoom as long as there was no
959 password set on the room. The Jami daemon leak memory like crazy
960 (approximately 1 GiB a minute) when I am connected to the video
961 conference, so I had to restart the client every 7-10 minutes, which
962 is not great. I tried to get other SIP Linux clients to work
963 without success, so I decided I would have to live with this wart
964 until someone managed to fix the leak in the dring code base. But
965 another problem showed up once the rooms were password protected. I
966 could not get my dial tone signaling through from Jami to Zoom, and
967 dial tone signaling is used to enter the password when connecting to
968 Zoom. I tried a lot of different permutations with my Jami and
969 Asterisk setup to try to figure out why the signaling did not get
970 through, only to finally discover that the fundamental problem seem to
971 be that Zoom is simply not able to receive dial tone signaling when
972 connecting via SIP. There seem to be nothing wrong with the Jami and
973 Asterisk end, it is simply broken in the Zoom end. I got help from a
974 very skilled VoIP engineer figuring out this last part. And being a
975 very skilled engineer, he was also able to locate a solution for me.
976 Or to be exact, a workaround that solve my initial problem of
977 connecting to password protected Zoom rooms using Jami.&lt;/p&gt;
978
979 &lt;p&gt;So, how do you do this, I am sure you are wondering by now. The
980 trick is already
981 &lt;a href=&quot;https://support.zoom.us/hc/en-us/articles/202405539-H-323-SIP-Room-Connector-Dial-Strings#sip&quot;&gt;documented
982 from Zoom&lt;/a&gt;, and it is to modify the SIP address to include the room
983 password. What is most surprising about this is that the
984 automatically generated email from Zoom with instructions on how to
985 connect via SIP do not mention this. The SIP address to use normally
986 consist of the room ID (a number), an @ character and the IP address
987 of the Zoom SIP gateway. But Zoom understand a lot more than just the
988 room ID in front of the at sign. The format is &quot;&lt;tt&gt;[Meeting
989 ID].[Password].[Layout].[Host Key]&lt;/tt&gt;&quot;, and you can here see how you
990 can both enter password, control the layout (full screen, active
991 presence and gallery) and specify the host key to start the meeting.
992 The full SIP address entered into Jami to provide the password will
993 then look like this (all using made up numbers):&lt;/p&gt;
994
995 &lt;p&gt;&lt;blockquote&gt;
996 &lt;tt&gt;sip:657837644.522827@192.168.169.170&lt;/tt&gt;
997 &lt;/blockquote&gt;&lt;/p&gt;
998
999 &lt;p&gt;Now if only jami would reduce its memory usage, I could even
1000 recommend this setup to others. :)&lt;/p&gt;
1001
1002 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1003 activities, please send Bitcoin donations to my address
1004 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1005 </description>
1006 </item>
1007
1008 <item>
1009 <title>GnuCOBOL, a free platform to learn and use COBOL - nice free software</title>
1010 <link>https://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html</link>
1011 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html</guid>
1012 <pubDate>Wed, 29 Apr 2020 13:10:00 +0200</pubDate>
1013 <description>&lt;p&gt;The curiosity got the better of me when
1014 &lt;a href=&quot;https://developers.slashdot.org/story/20/04/06/1424246/new-jersey-desperately-needs-cobol-programmers&quot;&gt;Slashdot
1015 reported&lt;/a&gt; that New Jersey was desperately looking for
1016 &lt;a href=&quot;https://en.wikipedia.org/wiki/COBOL&quot;&gt;COBOL&lt;/a&gt; programmers,
1017 and a few days later it was reported that
1018 &lt;a href=&quot;https://onezero.medium.com/ibm-rallies-cobol-engineers-to-save-overloaded-unemployment-systems-eeadf13eddce&quot;&gt;IBM
1019 tried to locate COBOL programmers&lt;/a&gt;.&lt;/p&gt;
1020
1021 &lt;p&gt;I thus decided to have a look at free software alternatives to
1022 learn COBOL, and had the pleasure to find
1023 &lt;a href=&quot;https://sourceforge.net/projects/open-cobol/&quot;&gt;GnuCOBOL&lt;/a&gt; was
1024 already &lt;a href=&quot;https://tracker.debian.org/pkg/gnucobol&quot;&gt;in
1025 Debian&lt;/a&gt;. It used to be called Open Cobol, and is a &quot;compiler&quot;
1026 transforming COBOL code to C or C++ before giving it to GCC or Visual
1027 Studio to build binaries.&lt;/p&gt;
1028
1029 &lt;p&gt;I managed to get in touch with upstream, and was impressed with the
1030 quick response, and also was happy to see a new Debian maintainer
1031 taking over when the original one recently asked to be replaced. A
1032 new Debian upload was done as recently as yesterday.&lt;/p&gt;
1033
1034 &lt;p&gt;Using the Debian package, I was able to follow a simple COBOL
1035 introduction and make and run simple COBOL programs. It was fun to
1036 learn a new programming language. If you want to test for yourself,
1037 &lt;a href=&quot;https://en.wikipedia.org/wiki/GnuCOBOL&quot;&gt;the GnuCOBOL Wikipedia
1038 page&lt;/a&gt; have a few simple examples to get you startet.&lt;/p&gt;
1039
1040 &lt;p&gt;As I do not have much experience with COBOL, I do not know how
1041 standard compliant it is, but it claim to pass most tests from COBOL
1042 test suite, which sound good to me. It is nice to know it is possible
1043 to learn COBOL using software without any usage restrictions, and I am
1044 very happy such nice free software project as this is available. If
1045 you as me is curious about COBOL, check it out.&lt;/p&gt;
1046
1047 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1048 activities, please send Bitcoin donations to my address
1049 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1050 </description>
1051 </item>
1052
1053 <item>
1054 <title>Jami/Ring, finally functioning peer to peer communication client</title>
1055 <link>https://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html</link>
1056 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html</guid>
1057 <pubDate>Wed, 19 Jun 2019 08:50:00 +0200</pubDate>
1058 <description>&lt;p&gt;Some years ago, in 2016, I
1059 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html&quot;&gt;wrote
1060 for the first time about&lt;/a&gt; the Ring peer to peer messaging system.
1061 It would provide messaging without any central server coordinating the
1062 system and without requiring all users to register a phone number or
1063 own a mobile phone. Back then, I could not get it to work, and put it
1064 aside until it had seen more development. A few days ago I decided to
1065 give it another try, and am happy to report that this time I am able
1066 to not only send and receive messages, but also place audio and video
1067 calls. But only if UDP is not blocked into your network.&lt;/p&gt;
1068
1069 &lt;p&gt;The Ring system changed name earlier this year to
1070 &lt;a href=&quot;https://en.wikipedia.org/wiki/Jami_(software)&quot;&gt;Jami&lt;/a&gt;. I
1071 tried doing web search for &#39;ring&#39; when I discovered it for the first
1072 time, and can only applaud this change as it is impossible to find
1073 something called Ring among the noise of other uses of that word. Now
1074 you can search for &#39;jami&#39; and this client and
1075 &lt;a href=&quot;https://jami.net/&quot;&gt;the Jami system&lt;/a&gt; is the first hit at
1076 least on duckduckgo.&lt;/p&gt;
1077
1078 &lt;p&gt;Jami will by default encrypt messages as well as audio and video
1079 calls, and try to send them directly between the communicating parties
1080 if possible. If this proves impossible (for example if both ends are
1081 behind NAT), it will use a central SIP TURN server maintained by the
1082 Jami project. Jami can also be a normal SIP client. If the SIP
1083 server is unencrypted, the audio and video calls will also be
1084 unencrypted. This is as far as I know the only case where Jami will
1085 do anything without encryption.&lt;/p&gt;
1086
1087 &lt;p&gt;Jami is available for several platforms: Linux, Windows, MacOSX,
1088 Android, iOS, and Android TV. It is included in Debian already. Jami
1089 also work for those using F-Droid without any Google connections,
1090 while Signal do not.
1091 &lt;a href=&quot;https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Protocol&quot;&gt;The
1092 protocol&lt;/a&gt; is described in the Ring project wiki. The system uses a
1093 distributed hash table (DHT) system (similar to BitTorrent) running
1094 over UDP. On one of the networks I use, I discovered Jami failed to
1095 work. I tracked this down to the fact that incoming UDP packages
1096 going to ports 1-49999 were blocked, and the DHT would pick a random
1097 port and end up in the low range most of the time. After talking to
1098 the developers, I solved this by enabling the dhtproxy in the
1099 settings, thus using TCP to talk to a central DHT proxy instead of
1100
1101 peering directly with others. I&#39;ve been told the developers are
1102 working on allowing DHT to use TCP to avoid this problem. I also ran
1103 into a problem when trying to talk to the version of Ring included in
1104 Debian Stable (Stretch). Apparently the protocol changed between
1105 beta2 and the current version, making these clients incompatible.
1106 Hopefully the protocol will not be made incompatible in the
1107 future.&lt;/p&gt;
1108
1109 &lt;p&gt;It is worth noting that while looking at Jami and its features, I
1110 came across another communication platform I have not tested yet. The
1111 &lt;a href=&quot;https://en.wikipedia.org/wiki/Tox_(protocol)&quot;&gt;Tox protocol&lt;/a&gt;
1112 and &lt;a href=&quot;https://tox.chat/&quot;&gt;family of Tox clients&lt;/a&gt;. It might
1113 become the topic of a future blog post.&lt;/p&gt;
1114
1115 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1116 activities, please send Bitcoin donations to my address
1117 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1118 </description>
1119 </item>
1120
1121 <item>
1122 <title>Strategispillet Unknown Horizons nå tilgjengelig på bokmål</title>
1123 <link>https://people.skolelinux.org/pere/blog/Strategispillet_Unknown_Horizons_n__tilgjengelig_p__bokm_l.html</link>
1124 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Strategispillet_Unknown_Horizons_n__tilgjengelig_p__bokm_l.html</guid>
1125 <pubDate>Wed, 23 Jan 2019 07:50:00 +0100</pubDate>
1126 <description>&lt;p&gt;I høst ble jeg inspirert til å bidra til oversettelsen av
1127 &lt;a href=&quot;http://unknown-horizons.org/&quot;&gt;strategispillet Unknown
1128 Horizons&lt;/a&gt;, og oversatte de nesten 200 strengene i prosjektet til
1129 bokmål. Deretter har jeg gått å ventet på at det kom en ny utgave som
1130 inneholdt disse oversettelsene. Nå er endelig ventetiden over. Den
1131 nye versjonen kom på nyåret, og ble
1132 &lt;a href=&quot;https://tracker.debian.org/pkg/unknown-horizons&quot;&gt;lastet opp i
1133 Debian&lt;/a&gt; for noen få dager siden. I går kveld fikk jeg testet det ut, og
1134 må innrømme at oversettelsene fungerer fint. Fant noen få tekster som
1135 måtte justeres, men ikke noe alvorlig. Har oppdatert
1136 &lt;a href=&quot;https://hosted.weblate.org/projects/uh/&quot;&gt;oversettelsen på
1137 Weblate&lt;/a&gt;, slik at neste utgave vil være enda bedre. :)&lt;/p&gt;
1138
1139 &lt;p&gt;Spillet er et ressursstyringsspill ala Civilization, og er morsomt
1140 å spille for oss som liker slikt. :)&lt;/p&gt;
1141
1142 &lt;p&gt;Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
1143 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
1144 til min adresse
1145 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.
1146 Merk, betaling med bitcoin er ikke anonymt. :)&lt;/p&gt;
1147 </description>
1148 </item>
1149
1150 <item>
1151 <title>Debian now got everything you need to program Micro:bit</title>
1152 <link>https://people.skolelinux.org/pere/blog/Debian_now_got_everything_you_need_to_program_Micro_bit.html</link>
1153 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_now_got_everything_you_need_to_program_Micro_bit.html</guid>
1154 <pubDate>Tue, 22 Jan 2019 17:20:00 +0100</pubDate>
1155 <description>&lt;p&gt;I am amazed and very pleased to discover that since a few days ago,
1156 everything you need to program the &lt;a href=&quot;https://microbit.org/&quot;&gt;BBC
1157 micro:bit&lt;/a&gt; is available from the Debian archive. All this is
1158 thanks to the hard work of Nick Morrott and the Debian python
1159 packaging team. The micro:bit project recommend the mu-editor to
1160 program the microcomputer, as this editor will take care of all the
1161 machinery required to injekt/flash micropython alongside the program
1162 into the micro:bit, as long as the pieces are available.&lt;/p&gt;
1163
1164 &lt;p&gt;There are three main pieces involved. The first to enter Debian
1165 was
1166 &lt;a href=&quot;https://tracker.debian.org/pkg/python-uflash&quot;&gt;python-uflash&lt;/a&gt;,
1167 which was accepted into the archive 2019-01-12. The next one was
1168 &lt;a href=&quot;https://tracker.debian.org/pkg/mu-editor&quot;&gt;mu-editor&lt;/a&gt;, which
1169 showed up 2019-01-13. The final and hardest part to to into the
1170 archive was
1171 &lt;a href=&quot;https://tracker.debian.org/pkg/firmware-microbit-micropython&quot;&gt;firmware-microbit-micropython&lt;/a&gt;,
1172 which needed to get its build system and dependencies into Debian
1173 before it was accepted 2019-01-20. The last one is already in Debian
1174 Unstable and should enter Debian Testing / Buster in three days. This
1175 all allow any user of the micro:bit to get going by simply running
1176 &#39;apt install mu-editor&#39; when using Testing or Unstable, and once
1177 Buster is released as stable, all the users of Debian stable will be
1178 catered for.&lt;/p&gt;
1179
1180 &lt;p&gt;As a minor final touch, I added rules to
1181 &lt;a href=&quot;https://tracker.debian.org/pkg/isenkram&quot;&gt;the isenkram
1182 package&lt;/a&gt; for recognizing micro:bit and recommend the mu-editor
1183 package. This make sure any user of the isenkram desktop daemon will
1184 get a popup suggesting to install mu-editor then the USB cable from
1185 the micro:bit is inserted for the first time.&lt;/p&gt;
1186
1187 &lt;p&gt;This should make it easier to have fun.&lt;/p&gt;
1188
1189 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1190 activities, please send Bitcoin donations to my address
1191 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1192 </description>
1193 </item>
1194
1195 <item>
1196 <title>Learn to program with Minetest on Debian</title>
1197 <link>https://people.skolelinux.org/pere/blog/Learn_to_program_with_Minetest_on_Debian.html</link>
1198 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Learn_to_program_with_Minetest_on_Debian.html</guid>
1199 <pubDate>Sat, 15 Dec 2018 15:30:00 +0100</pubDate>
1200 <description>&lt;p&gt;A fun way to learn how to program
1201 &lt;a href=&quot;https://www.python.org/&quot;&gt;Python&lt;/a&gt; is to follow the
1202 instructions in the book
1203 &quot;&lt;a href=&quot;https://nostarch.com/programwithminecraft&quot;&gt;Learn to program
1204 with Minecraft&lt;/a&gt;&quot;, which introduces programming in Python to people
1205 who like to play with Minecraft. The book uses a Python library to
1206 talk to a TCP/IP socket with an API accepting build instructions and
1207 providing information about the current players in a Minecraft world.
1208 The TCP/IP API was first created for the Minecraft implementation for
1209 Raspberry Pi, and has since been ported to some server versions of
1210 Minecraft. The book contain recipes for those using Windows, MacOSX
1211 and Raspian. But a little known fact is that you can follow the same
1212 recipes using the free software construction game
1213 &lt;a href=&quot;https://minetest.net/&quot;&gt;Minetest&lt;/a&gt;.&lt;/p&gt;
1214
1215 &lt;p&gt;There is &lt;a href=&quot;https://github.com/sprintingkiwi/pycraft_mod&quot;&gt;a
1216 Minetest module implementing the same API&lt;/a&gt;, making it possible to
1217 use the Python programs coded to talk to Minecraft with Minetest too.
1218 I
1219 &lt;a href=&quot;https://ftp-master.debian.org/new/minetest-mod-pycraft_0.20%2Bgit20180331.0376a0a%2Bdfsg-1.html&quot;&gt;uploaded
1220 this module&lt;/a&gt; to Debian two weeks ago, and as soon as it clears the
1221 FTP masters NEW queue, learning to program Python with Minetest on
1222 Debian will be a simple &#39;apt install&#39; away. The Debian package is
1223 maintained as part of the Debian Games team, and
1224 &lt;a href=&quot;https://salsa.debian.org/games-team/unfinished/minetest-mod-pycraft&quot;&gt;the
1225 packaging rules&lt;/a&gt; are currently located under &#39;unfinished&#39; on
1226 Salsa.&lt;/p&gt;
1227
1228 &lt;p&gt;You will most likely need to install several of the Minetest
1229 modules in Debian for the examples included with the library to work
1230 well, as there are several blocks used by the example scripts that are
1231 provided via modules in Minetest. Without the required blocks, a
1232 simple stone block is used instead. My initial testing with a analog
1233 clock did not get gold arms as instructed in the python library, but
1234 instead used stone arms.&lt;/p&gt;
1235
1236 &lt;p&gt;I tried to find a way to add the API to the desktop version of
1237 Minecraft, but were unable to find any working recipes. The
1238 &lt;a href=&quot;https://www.epiphanydigest.com/tag/minecraft-python-api/&quot;&gt;recipes&lt;/a&gt;
1239 I &lt;a href=&quot;https://github.com/kbsriram/mcpiapi&quot;&gt;found&lt;/a&gt; are only
1240 working with a standalone Minecraft server setup. Are there any
1241 options to use with the normal desktop version?&lt;/p&gt;
1242
1243 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1244 activities, please send Bitcoin donations to my address
1245 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1246 </description>
1247 </item>
1248
1249 <item>
1250 <title>Time for an official MIME type for patches?</title>
1251 <link>https://people.skolelinux.org/pere/blog/Time_for_an_official_MIME_type_for_patches_.html</link>
1252 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_for_an_official_MIME_type_for_patches_.html</guid>
1253 <pubDate>Thu, 1 Nov 2018 08:15:00 +0100</pubDate>
1254 <description>&lt;p&gt;As part of my involvement in
1255 &lt;a href=&quot;https://gitlab.com/OsloMet-ABI/nikita-noark5-core&quot;&gt;the Nikita
1256 archive API project&lt;/a&gt;, I&#39;ve been importing a fairly large lump of
1257 emails into a test instance of the archive to see how well this would
1258 go. I picked a subset of &lt;a href=&quot;https://notmuchmail.org/&quot;&gt;my
1259 notmuch email database&lt;/a&gt;, all public emails sent to me via
1260 @lists.debian.org, giving me a set of around 216 000 emails to import.
1261 In the process, I had a look at the various attachments included in
1262 these emails, to figure out what to do with attachments, and noticed
1263 that one of the most common attachment formats do not have
1264 &lt;a href=&quot;https://www.iana.org/assignments/media-types/media-types.xhtml&quot;&gt;an
1265 official MIME type&lt;/a&gt; registered with IANA/IETF. The output from
1266 diff, ie the input for patch, is on the top 10 list of formats
1267 included in these emails. At the moment people seem to use either
1268 text/x-patch or text/x-diff, but neither is officially registered. It
1269 would be better if one official MIME type were registered and used
1270 everywhere.&lt;/p&gt;
1271
1272 &lt;p&gt;To try to get one official MIME type for these files, I&#39;ve brought
1273 up the topic on
1274 &lt;a href=&quot;https://www.ietf.org/mailman/listinfo/media-types&quot;&gt;the
1275 media-types mailing list&lt;/a&gt;. If you are interested in discussion
1276 which MIME type to use as the official for patch files, or involved in
1277 making software using a MIME type for patches, perhaps you would like
1278 to join the discussion?&lt;/p&gt;
1279
1280 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1281 activities, please send Bitcoin donations to my address
1282 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1283 </description>
1284 </item>
1285
1286 <item>
1287 <title>Automatic Google Drive sync using grive in Debian</title>
1288 <link>https://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html</link>
1289 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html</guid>
1290 <pubDate>Thu, 4 Oct 2018 15:20:00 +0200</pubDate>
1291 <description>&lt;p&gt;A few days, I rescued a Windows victim over to Debian. To try to
1292 rescue the remains, I helped set up automatic sync with Google Drive.
1293 I did not find any sensible Debian package handling this
1294 automatically, so I rebuild the grive2 source from
1295 &lt;a href=&quot;http://www.webupd8.org/&quot;&gt;the Ubuntu UPD8 PPA&lt;/a&gt; to do the
1296 task and added a autostart desktop entry and a small shell script to
1297 run in the background while the user is logged in to do the sync.
1298 Here is a sketch of the setup for future reference.&lt;/p&gt;
1299
1300 &lt;p&gt;I first created &lt;tt&gt;~/googledrive&lt;/tt&gt;, entered the directory and
1301 ran &#39;&lt;tt&gt;grive -a&lt;/tt&gt;&#39; to authenticate the machine/user. Next, I
1302 created a autostart hook in &lt;tt&gt;~/.config/autostart/grive.desktop&lt;/tt&gt;
1303 to start the sync when the user log in:&lt;/p&gt;
1304
1305 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1306 [Desktop Entry]
1307 Name=Google drive autosync
1308 Type=Application
1309 Exec=/home/user/bin/grive-sync
1310 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1311
1312 &lt;p&gt;Finally, I wrote the &lt;tt&gt;~/bin/grive-sync&lt;/tt&gt; script to sync
1313 ~/googledrive/ with the files in Google Drive.&lt;/p&gt;
1314
1315 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1316 #!/bin/sh
1317 set -e
1318 cd ~/
1319 cleanup() {
1320 if [ &quot;$syncpid&quot; ] ; then
1321 kill $syncpid
1322 fi
1323 }
1324 trap cleanup EXIT INT QUIT
1325 /usr/lib/grive/grive-sync.sh listen googledrive 2&gt;&amp;1 | sed &quot;s%^%$0:%&quot; &amp;
1326 syncpdi=$!
1327 while true; do
1328 if ! xhost &gt;/dev/null 2&gt;&amp;1 ; then
1329 echo &quot;no DISPLAY, exiting as the user probably logged out&quot;
1330 exit 1
1331 fi
1332 if [ ! -e /run/user/1000/grive-sync.sh_googledrive ] ; then
1333 /usr/lib/grive/grive-sync.sh sync googledrive
1334 fi
1335 sleep 300
1336 done 2&gt;&amp;1 | sed &quot;s%^%$0:%&quot;
1337 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1338
1339 &lt;p&gt;Feel free to use the setup if you want. It can be assumed to be
1340 GNU GPL v2 licensed (or any later version, at your leisure), but I
1341 doubt this code is possible to claim copyright on.&lt;/p&gt;
1342
1343 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1344 activities, please send Bitcoin donations to my address
1345 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1346 </description>
1347 </item>
1348
1349 <item>
1350 <title>Using the Kodi API to play Youtube videos</title>
1351 <link>https://people.skolelinux.org/pere/blog/Using_the_Kodi_API_to_play_Youtube_videos.html</link>
1352 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Using_the_Kodi_API_to_play_Youtube_videos.html</guid>
1353 <pubDate>Sun, 2 Sep 2018 23:40:00 +0200</pubDate>
1354 <description>&lt;p&gt;I continue to explore my Kodi installation, and today I wanted to
1355 tell it to play a youtube URL I received in a chat, without having to
1356 insert search terms using the on-screen keyboard. After searching the
1357 web for API access to the Youtube plugin and testing a bit, I managed
1358 to find a recipe that worked. If you got a kodi instance with its API
1359 available from http://kodihost/jsonrpc, you can try the following to
1360 have check out a nice cover band.&lt;/p&gt;
1361
1362 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;curl --silent --header &#39;Content-Type: application/json&#39; \
1363 --data-binary &#39;{ &quot;id&quot;: 1, &quot;jsonrpc&quot;: &quot;2.0&quot;, &quot;method&quot;: &quot;Player.Open&quot;,
1364 &quot;params&quot;: {&quot;item&quot;: { &quot;file&quot;:
1365 &quot;plugin://plugin.video.youtube/play/?video_id=LuRGVM9O0qg&quot; } } }&#39; \
1366 http://projector.local/jsonrpc&lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1367
1368 &lt;p&gt;I&#39;ve extended kodi-stream program to take a video source as its
1369 first argument. It can now handle direct video links, youtube links
1370 and &#39;desktop&#39; to stream my desktop to Kodi. It is almost like a
1371 Chromecast. :)&lt;/p&gt;
1372
1373 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1374 activities, please send Bitcoin donations to my address
1375 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1376 </description>
1377 </item>
1378
1379 <item>
1380 <title>Sharing images with friends and family using RSS and EXIF/XMP metadata</title>
1381 <link>https://people.skolelinux.org/pere/blog/Sharing_images_with_friends_and_family_using_RSS_and_EXIF_XMP_metadata.html</link>
1382 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Sharing_images_with_friends_and_family_using_RSS_and_EXIF_XMP_metadata.html</guid>
1383 <pubDate>Tue, 31 Jul 2018 23:30:00 +0200</pubDate>
1384 <description>&lt;p&gt;For a while now, I have looked for a sensible way to share images
1385 with my family using a self hosted solution, as it is unacceptable to
1386 place images from my personal life under the control of strangers
1387 working for data hoarders like Google or Dropbox. The last few days I
1388 have drafted an approach that might work out, and I would like to
1389 share it with you. I would like to publish images on a server under
1390 my control, and point some Internet connected display units using some
1391 free and open standard to the images I published. As my primary
1392 language is not limited to ASCII, I need to store metadata using
1393 UTF-8. Many years ago, I hoped to find a digital photo frame capable
1394 of reading a RSS feed with image references (aka using the
1395 &amp;lt;enclosure&amp;gt; RSS tag), but was unable to find a current supplier
1396 of such frames. In the end I gave up that approach.&lt;/p&gt;
1397
1398 &lt;p&gt;Some months ago, I discovered that
1399 &lt;a href=&quot;https://www.jwz.org/xscreensaver/&quot;&gt;XScreensaver&lt;/a&gt; is able to
1400 read images from a RSS feed, and used it to set up a screen saver on
1401 my home info screen, showing images from the Daily images feed from
1402 NASA. This proved to work well. More recently I discovered that
1403 &lt;a href=&quot;https://kodi.tv&quot;&gt;Kodi&lt;/a&gt; (both using
1404 &lt;a href=&quot;https://www.openelec.tv/&quot;&gt;OpenELEC&lt;/a&gt; and
1405 &lt;a href=&quot;https://libreelec.tv&quot;&gt;LibreELEC&lt;/a&gt;) provide the
1406 &lt;a href=&quot;https://github.com/grinsted/script.screensaver.feedreader&quot;&gt;Feedreader&lt;/a&gt;
1407 screen saver capable of reading a RSS feed with images and news. For
1408 fun, I used it this summer to test Kodi on my parents TV by hooking up
1409 a Raspberry PI unit with LibreELEC, and wanted to provide them with a
1410 screen saver showing selected pictures from my selection.&lt;/p&gt;
1411
1412 &lt;p&gt;Armed with motivation and a test photo frame, I set out to generate
1413 a RSS feed for the Kodi instance. I adjusted my &lt;a
1414 href=&quot;https://freedombox.org/&quot;&gt;Freedombox&lt;/a&gt; instance, created
1415 /var/www/html/privatepictures/, wrote a small Perl script to extract
1416 title and description metadata from the photo files and generate the
1417 RSS file. I ended up using Perl instead of python, as the
1418 libimage-exiftool-perl Debian package seemed to handle the EXIF/XMP
1419 tags I ended up using, while python3-exif did not. The relevant EXIF
1420 tags only support ASCII, so I had to find better alternatives. XMP
1421 seem to have the support I need.&lt;/p&gt;
1422
1423 &lt;p&gt;I am a bit unsure which EXIF/XMP tags to use, as I would like to
1424 use tags that can be easily added/updated using normal free software
1425 photo managing software. I ended up using the tags set using this
1426 exiftool command, as these tags can also be set using digiKam:&lt;/p&gt;
1427
1428 &lt;blockquote&gt;&lt;pre&gt;
1429 exiftool -headline=&#39;The RSS image title&#39; \
1430 -description=&#39;The RSS image description.&#39; \
1431 -subject+=for-family photo.jpeg
1432 &lt;/pre&gt;&lt;/blockquote&gt;
1433
1434 &lt;p&gt;I initially tried the &quot;-title&quot; and &quot;keyword&quot; tags, but they were
1435 invisible in digiKam, so I changed to &quot;-headline&quot; and &quot;-subject&quot;. I
1436 use the keyword/subject &#39;for-family&#39; to flag that the photo should be
1437 shared with my family. Images with this keyword set are located and
1438 copied into my Freedombox for the RSS generating script to find.&lt;/p&gt;
1439
1440 &lt;p&gt;Are there better ways to do this? Get in touch if you have better
1441 suggestions.&lt;/p&gt;
1442
1443 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1444 activities, please send Bitcoin donations to my address
1445 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1446 </description>
1447 </item>
1448
1449 <item>
1450 <title>Simple streaming the Linux desktop to Kodi using GStreamer and RTP</title>
1451 <link>https://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html</link>
1452 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html</guid>
1453 <pubDate>Thu, 12 Jul 2018 17:55:00 +0200</pubDate>
1454 <description>&lt;p&gt;Last night, I wrote
1455 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html&quot;&gt;a
1456 recipe to stream a Linux desktop using VLC to a instance of Kodi&lt;/a&gt;.
1457 During the day I received valuable feedback, and thanks to the
1458 suggestions I have been able to rewrite the recipe into a much simpler
1459 approach requiring no setup at all. It is a single script that take
1460 care of it all.&lt;/p&gt;
1461
1462 &lt;p&gt;This new script uses GStreamer instead of VLC to capture the
1463 desktop and stream it to Kodi. This fixed the video quality issue I
1464 saw initially. It further removes the need to add a m3u file on the
1465 Kodi machine, as it instead connects to
1466 &lt;a href=&quot;https://kodi.wiki/view/JSON-RPC_API/v8&quot;&gt;the JSON-RPC API in
1467 Kodi&lt;/a&gt; and simply ask Kodi to play from the stream created using
1468 GStreamer. Streaming the desktop to Kodi now become trivial. Copy
1469 the script below, run it with the DNS name or IP address of the kodi
1470 server to stream to as the only argument, and watch your screen show
1471 up on the Kodi screen. Note, it depend on multicast on the local
1472 network, so if you need to stream outside the local network, the
1473 script must be modified. Also note, I have no idea if audio work, as
1474 I only care about the picture part.&lt;/p&gt;
1475
1476 &lt;blockquote&gt;&lt;pre&gt;
1477 #!/bin/sh
1478 #
1479 # Stream the Linux desktop view to Kodi. See
1480 # http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html
1481 # for backgorund information.
1482
1483 # Make sure the stream is stopped in Kodi and the gstreamer process is
1484 # killed if something go wrong (for example if curl is unable to find the
1485 # kodi server). Do the same when interrupting this script.
1486 kodicmd() {
1487 host=&quot;$1&quot;
1488 cmd=&quot;$2&quot;
1489 params=&quot;$3&quot;
1490 curl --silent --header &#39;Content-Type: application/json&#39; \
1491 --data-binary &quot;{ \&quot;id\&quot;: 1, \&quot;jsonrpc\&quot;: \&quot;2.0\&quot;, \&quot;method\&quot;: \&quot;$cmd\&quot;, \&quot;params\&quot;: $params }&quot; \
1492 &quot;http://$host/jsonrpc&quot;
1493 }
1494 cleanup() {
1495 if [ -n &quot;$kodihost&quot; ] ; then
1496 # Stop the playing when we end
1497 playerid=$(kodicmd &quot;$kodihost&quot; Player.GetActivePlayers &quot;{}&quot; |
1498 jq .result[].playerid)
1499 kodicmd &quot;$kodihost&quot; Player.Stop &quot;{ \&quot;playerid\&quot; : $playerid }&quot; &gt; /dev/null
1500 fi
1501 if [ &quot;$gstpid&quot; ] &amp;&amp; kill -0 &quot;$gstpid&quot; &gt;/dev/null 2&gt;&amp;1; then
1502 kill &quot;$gstpid&quot;
1503 fi
1504 }
1505 trap cleanup EXIT INT
1506
1507 if [ -n &quot;$1&quot; ]; then
1508 kodihost=$1
1509 shift
1510 else
1511 kodihost=kodi.local
1512 fi
1513
1514 mcast=239.255.0.1
1515 mcastport=1234
1516 mcastttl=1
1517
1518 pasrc=$(pactl list | grep -A2 &#39;Source #&#39; | grep &#39;Name: .*\.monitor$&#39; | \
1519 cut -d&quot; &quot; -f2|head -1)
1520 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
1521 videoconvert ! queue2 ! \
1522 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
1523 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
1524 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
1525 udpsink host=$mcast port=$mcastport ttl-mc=$mcastttl auto-multicast=1 sync=0 \
1526 pulsesrc device=$pasrc ! audioconvert ! queue2 ! avenc_aac ! queue2 ! mux. \
1527 &gt; /dev/null 2&gt;&amp;1 &amp;
1528 gstpid=$!
1529
1530 # Give stream a second to get going
1531 sleep 1
1532
1533 # Ask kodi to start streaming using its JSON-RPC API
1534 kodicmd &quot;$kodihost&quot; Player.Open \
1535 &quot;{\&quot;item\&quot;: { \&quot;file\&quot;: \&quot;udp://@$mcast:$mcastport\&quot; } }&quot; &gt; /dev/null
1536
1537 # wait for gst to end
1538 wait &quot;$gstpid&quot;
1539 &lt;/pre&gt;&lt;/blockquote&gt;
1540
1541 &lt;p&gt;I hope you find the approach useful. I know I do.&lt;/p&gt;
1542
1543 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1544 activities, please send Bitcoin donations to my address
1545 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1546 </description>
1547 </item>
1548
1549 <item>
1550 <title>Streaming the Linux desktop to Kodi using VLC and RTSP</title>
1551 <link>https://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html</link>
1552 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html</guid>
1553 <pubDate>Thu, 12 Jul 2018 02:00:00 +0200</pubDate>
1554 <description>&lt;p&gt;PS: See
1555 &lt;ahref=&quot;http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html&quot;&gt;the
1556 followup post&lt;/a&gt; for a even better approach.&lt;/p&gt;
1557
1558 &lt;p&gt;A while back, I was asked by a friend how to stream the desktop to
1559 my projector connected to Kodi. I sadly had to admit that I had no
1560 idea, as it was a task I never had tried. Since then, I have been
1561 looking for a way to do so, preferable without much extra software to
1562 install on either side. Today I found a way that seem to kind of
1563 work. Not great, but it is a start.&lt;/p&gt;
1564
1565 &lt;p&gt;I had a look at several approaches, for example
1566 &lt;a href=&quot;https://github.com/mfoetsch/dlna_live_streaming&quot;&gt;using uPnP
1567 DLNA as described in 2011&lt;/a&gt;, but it required a uPnP server, fuse and
1568 local storage enough to store the stream locally. This is not going
1569 to work well for me, lacking enough free space, and it would
1570 impossible for my friend to get working.&lt;/p&gt;
1571
1572 &lt;p&gt;Next, it occurred to me that perhaps I could use VLC to create a
1573 video stream that Kodi could play. Preferably using
1574 broadcast/multicast, to avoid having to change any setup on the Kodi
1575 side when starting such stream. Unfortunately, the only recipe I
1576 could find using multicast used the rtp protocol, and this protocol
1577 seem to not be supported by Kodi.&lt;/p&gt;
1578
1579 &lt;p&gt;On the other hand, the rtsp protocol is working! Unfortunately I
1580 have to specify the IP address of the streaming machine in both the
1581 sending command and the file on the Kodi server. But it is showing my
1582 desktop, and thus allow us to have a shared look on the big screen at
1583 the programs I work on.&lt;/p&gt;
1584
1585 &lt;p&gt;I did not spend much time investigating codeces. I combined the
1586 rtp and rtsp recipes from
1587 &lt;a href=&quot;https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/&quot;&gt;the
1588 VLC Streaming HowTo/Command Line Examples&lt;/a&gt;, and was able to get
1589 this working on the desktop/streaming end.&lt;/p&gt;
1590
1591 &lt;blockquote&gt;&lt;pre&gt;
1592 vlc screen:// --sout \
1593 &#39;#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{dst=projector.local,port=1234,sdp=rtsp://192.168.11.4:8080/test.sdp}&#39;
1594 &lt;/pre&gt;&lt;/blockquote&gt;
1595
1596 &lt;p&gt;I ssh-ed into my Kodi box and created a file like this with the
1597 same IP address:&lt;/p&gt;
1598
1599 &lt;blockquote&gt;&lt;pre&gt;
1600 echo rtsp://192.168.11.4:8080/test.sdp \
1601 &gt; /storage/videos/screenstream.m3u
1602 &lt;/pre&gt;&lt;/blockquote&gt;
1603
1604 &lt;p&gt;Note the 192.168.11.4 IP address is my desktops IP address. As far
1605 as I can tell the IP must be hardcoded for this to work. In other
1606 words, if someone elses machine is going to do the steaming, you have
1607 to update screenstream.m3u on the Kodi machine and adjust the vlc
1608 recipe. To get started, locate the file in Kodi and select the m3u
1609 file while the VLC stream is running. The desktop then show up in my
1610 big screen. :)&lt;/p&gt;
1611
1612 &lt;p&gt;When using the same technique to stream a video file with audio,
1613 the audio quality is really bad. No idea if the problem is package
1614 loss or bad parameters for the transcode. I do not know VLC nor Kodi
1615 enough to tell.&lt;/p&gt;
1616
1617 &lt;p&gt;&lt;strong&gt;Update 2018-07-12&lt;/strong&gt;: Johannes Schauer send me a few
1618 succestions and reminded me about an important step. The &quot;screen:&quot;
1619 input source is only available once the vlc-plugin-access-extra
1620 package is installed on Debian. Without it, you will see this error
1621 message: &quot;VLC is unable to open the MRL &#39;screen://&#39;. Check the log
1622 for details.&quot; He further found that it is possible to drop some parts
1623 of the VLC command line to reduce the amount of hardcoded information.
1624 It is also useful to consider using cvlc to avoid having the VLC
1625 window in the desktop view. In sum, this give us this command line on
1626 the source end
1627
1628 &lt;blockquote&gt;&lt;pre&gt;
1629 cvlc screen:// --sout \
1630 &#39;#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{sdp=rtsp://:8080/}&#39;
1631 &lt;/pre&gt;&lt;/blockquote&gt;
1632
1633 &lt;p&gt;and this on the Kodi end&lt;p&gt;
1634
1635 &lt;blockquote&gt;&lt;pre&gt;
1636 echo rtsp://192.168.11.4:8080/ \
1637 &gt; /storage/videos/screenstream.m3u
1638 &lt;/pre&gt;&lt;/blockquote&gt;
1639
1640 &lt;p&gt;Still bad image quality, though. But I did discover that streaming
1641 a DVD using dvdsimple:///dev/dvd as the source had excellent video and
1642 audio quality, so I guess the issue is in the input or transcoding
1643 parts, not the rtsp part. I&#39;ve tried to change the vb and ab
1644 parameters to use more bandwidth, but it did not make a
1645 difference.&lt;/p&gt;
1646
1647 &lt;p&gt;I further received a suggestion from Einar Haraldseid to try using
1648 gstreamer instead of VLC, and this proved to work great! He also
1649 provided me with the trick to get Kodi to use a multicast stream as
1650 its source. By using this monstrous oneliner, I can stream my desktop
1651 with good video quality in reasonable framerate to the 239.255.0.1
1652 multicast address on port 1234:
1653
1654 &lt;blockquote&gt;&lt;pre&gt;
1655 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
1656 videoconvert ! queue2 ! \
1657 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
1658 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
1659 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
1660 udpsink host=239.255.0.1 port=1234 ttl-mc=1 auto-multicast=1 sync=0 \
1661 pulsesrc device=$(pactl list | grep -A2 &#39;Source #&#39; | \
1662 grep &#39;Name: .*\.monitor$&#39; | cut -d&quot; &quot; -f2|head -1) ! \
1663 audioconvert ! queue2 ! avenc_aac ! queue2 ! mux.
1664 &lt;/pre&gt;&lt;/blockquote&gt;
1665
1666 &lt;p&gt;and this on the Kodi end&lt;p&gt;
1667
1668 &lt;blockquote&gt;&lt;pre&gt;
1669 echo udp://@239.255.0.1:1234 \
1670 &gt; /storage/videos/screenstream.m3u
1671 &lt;/pre&gt;&lt;/blockquote&gt;
1672
1673 &lt;p&gt;Note the trick to pick a valid pulseaudio source. It might not
1674 pick the one you need. This approach will of course lead to trouble
1675 if more than one source uses the same multicast port and address.
1676 Note the ttl-mc=1 setting, which limit the multicast packages to the
1677 local network. If the value is increased, your screen will be
1678 broadcasted further, one network &quot;hop&quot; for each increase (read up on
1679 multicast to learn more. :)!&lt;/p&gt;
1680
1681 &lt;p&gt;Having cracked how to get Kodi to receive multicast streams, I
1682 could use this VLC command to stream to the same multicast address.
1683 The image quality is way better than the rtsp approach, but gstreamer
1684 seem to be doing a better job.&lt;/p&gt;
1685
1686 &lt;blockquote&gt;&lt;pre&gt;
1687 cvlc screen:// --sout &#39;#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{mux=ts,dst=239.255.0.1,port=1234,sdp=sap}&#39;
1688 &lt;/pre&gt;&lt;/blockquote&gt;
1689
1690 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1691 activities, please send Bitcoin donations to my address
1692 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1693 </description>
1694 </item>
1695
1696 <item>
1697 <title>What is the most supported MIME type in Debian in 2018?</title>
1698 <link>https://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html</link>
1699 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html</guid>
1700 <pubDate>Mon, 9 Jul 2018 08:05:00 +0200</pubDate>
1701 <description>&lt;p&gt;Five years ago,
1702 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html&quot;&gt;I
1703 measured what the most supported MIME type in Debian was&lt;/a&gt;, by
1704 analysing the desktop files in all packages in the archive. Since
1705 then, the DEP-11 AppStream system has been put into production, making
1706 the task a lot easier. This made me want to repeat the measurement,
1707 to see how much things changed. Here are the new numbers, for
1708 unstable only this time:
1709
1710 &lt;p&gt;&lt;strong&gt;Debian Unstable:&lt;/strong&gt;&lt;/p&gt;
1711
1712 &lt;pre&gt;
1713 count MIME type
1714 ----- -----------------------
1715 56 image/jpeg
1716 55 image/png
1717 49 image/tiff
1718 48 image/gif
1719 39 image/bmp
1720 38 text/plain
1721 37 audio/mpeg
1722 34 application/ogg
1723 33 audio/x-flac
1724 32 audio/x-mp3
1725 30 audio/x-wav
1726 30 audio/x-vorbis+ogg
1727 29 image/x-portable-pixmap
1728 27 inode/directory
1729 27 image/x-portable-bitmap
1730 27 audio/x-mpeg
1731 26 application/x-ogg
1732 25 audio/x-mpegurl
1733 25 audio/ogg
1734 24 text/html
1735 &lt;/pre&gt;
1736
1737 &lt;p&gt;The list was created like this using a sid chroot: &quot;cat
1738 /var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk &#39;/^
1739 - \S+\/\S+$/ {print $2 }&#39; | sort | uniq -c | sort -nr | head -20&quot;&lt;/p&gt;
1740
1741 &lt;p&gt;It is interesting to see how image formats have passed text/plain
1742 as the most announced supported MIME type. These days, thanks to the
1743 AppStream system, if you run into a file format you do not know, and
1744 want to figure out which packages support the format, you can find the
1745 MIME type of the file using &quot;file --mime &amp;lt;filename&amp;gt;&quot;, and then
1746 look up all packages announcing support for this format in their
1747 AppStream metadata (XML or .desktop file) using &quot;appstreamcli
1748 what-provides mimetype &amp;lt;mime-type&amp;gt;. For example if you, like
1749 me, want to know which packages support inode/directory, you can get a
1750 list like this:&lt;/p&gt;
1751
1752 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1753 % appstreamcli what-provides mimetype inode/directory | grep Package: | sort
1754 Package: anjuta
1755 Package: audacious
1756 Package: baobab
1757 Package: cervisia
1758 Package: chirp
1759 Package: dolphin
1760 Package: doublecmd-common
1761 Package: easytag
1762 Package: enlightenment
1763 Package: ephoto
1764 Package: filelight
1765 Package: gwenview
1766 Package: k4dirstat
1767 Package: kaffeine
1768 Package: kdesvn
1769 Package: kid3
1770 Package: kid3-qt
1771 Package: nautilus
1772 Package: nemo
1773 Package: pcmanfm
1774 Package: pcmanfm-qt
1775 Package: qweborf
1776 Package: ranger
1777 Package: sirikali
1778 Package: spacefm
1779 Package: spacefm
1780 Package: vifm
1781 %
1782 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1783
1784 &lt;p&gt;Using the same method, I can quickly discover that the Sketchup file
1785 format is not yet supported by any package in Debian:&lt;/p&gt;
1786
1787 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1788 % appstreamcli what-provides mimetype application/vnd.sketchup.skp
1789 Could not find component providing &#39;mimetype::application/vnd.sketchup.skp&#39;.
1790 %
1791 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1792
1793 &lt;p&gt;Yesterday I used it to figure out which packages support the STL 3D
1794 format:&lt;/p&gt;
1795
1796 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1797 % appstreamcli what-provides mimetype application/sla|grep Package
1798 Package: cura
1799 Package: meshlab
1800 Package: printrun
1801 %
1802 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1803
1804 &lt;p&gt;PS: A new version of Cura was uploaded to Debian yesterday.&lt;/p&gt;
1805
1806 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1807 activities, please send Bitcoin donations to my address
1808 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1809 </description>
1810 </item>
1811
1812 <item>
1813 <title>Debian APT upgrade without enough free space on the disk...</title>
1814 <link>https://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html</link>
1815 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html</guid>
1816 <pubDate>Sun, 8 Jul 2018 12:10:00 +0200</pubDate>
1817 <description>&lt;p&gt;Quite regularly, I let my Debian Sid/Unstable chroot stay untouch
1818 for a while, and when I need to update it there is not enough free
1819 space on the disk for apt to do a normal &#39;apt upgrade&#39;. I normally
1820 would resolve the issue by doing &#39;apt install &amp;lt;somepackages&amp;gt;&#39; to
1821 upgrade only some of the packages in one batch, until the amount of
1822 packages to download fall below the amount of free space available.
1823 Today, I had about 500 packages to upgrade, and after a while I got
1824 tired of trying to install chunks of packages manually. I concluded
1825 that I did not have the spare hours required to complete the task, and
1826 decided to see if I could automate it. I came up with this small
1827 script which I call &#39;apt-in-chunks&#39;:&lt;/p&gt;
1828
1829 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1830 #!/bin/sh
1831 #
1832 # Upgrade packages when the disk is too full to upgrade every
1833 # upgradable package in one lump. Fetching packages to upgrade using
1834 # apt, and then installing using dpkg, to avoid changing the package
1835 # flag for manual/automatic.
1836
1837 set -e
1838
1839 ignore() {
1840 if [ &quot;$1&quot; ]; then
1841 grep -v &quot;$1&quot;
1842 else
1843 cat
1844 fi
1845 }
1846
1847 for p in $(apt list --upgradable | ignore &quot;$@&quot; |cut -d/ -f1 | grep -v &#39;^Listing...&#39;); do
1848 echo &quot;Upgrading $p&quot;
1849 apt clean
1850 apt install --download-only -y $p
1851 for f in /var/cache/apt/archives/*.deb; do
1852 if [ -e &quot;$f&quot; ]; then
1853 dpkg -i /var/cache/apt/archives/*.deb
1854 break
1855 fi
1856 done
1857 done
1858 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1859
1860 &lt;p&gt;The script will extract the list of packages to upgrade, try to
1861 download the packages needed to upgrade one package, install the
1862 downloaded packages using dpkg. The idea is to upgrade packages
1863 without changing the APT mark for the package (ie the one recording of
1864 the package was manually requested or pulled in as a dependency). To
1865 use it, simply run it as root from the command line. If it fail, try
1866 &#39;apt install -f&#39; to clean up the mess and run the script again. This
1867 might happen if the new packages conflict with one of the old
1868 packages. dpkg is unable to remove, while apt can do this.&lt;/p&gt;
1869
1870 &lt;p&gt;It take one option, a package to ignore in the list of packages to
1871 upgrade. The option to ignore a package is there to be able to skip
1872 the packages that are simply too large to unpack. Today this was
1873 &#39;ghc&#39;, but I have run into other large packages causing similar
1874 problems earlier (like TeX).&lt;/p&gt;
1875
1876 &lt;p&gt;Update 2018-07-08: Thanks to Paul Wise, I am aware of two
1877 alternative ways to handle this. The &quot;unattended-upgrades
1878 --minimal-upgrade-steps&quot; option will try to calculate upgrade sets for
1879 each package to upgrade, and then upgrade them in order, smallest set
1880 first. It might be a better option than my above mentioned script.
1881 Also, &quot;aptutude upgrade&quot; can upgrade single packages, thus avoiding
1882 the need for using &quot;dpkg -i&quot; in the script above.&lt;/p&gt;
1883
1884 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1885 activities, please send Bitcoin donations to my address
1886 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1887 </description>
1888 </item>
1889
1890 <item>
1891 <title>Version 3.1 of Cura, the 3D print slicer, is now in Debian</title>
1892 <link>https://people.skolelinux.org/pere/blog/Version_3_1_of_Cura__the_3D_print_slicer__is_now_in_Debian.html</link>
1893 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Version_3_1_of_Cura__the_3D_print_slicer__is_now_in_Debian.html</guid>
1894 <pubDate>Tue, 13 Feb 2018 06:20:00 +0100</pubDate>
1895 <description>&lt;p&gt;A new version of the
1896 &lt;a href=&quot;https://tracker.debian.org/pkg/cura&quot;&gt;3D printer slicer
1897 software Cura&lt;/a&gt;, version 3.1.0, is now available in Debian Testing
1898 (aka Buster) and Debian Unstable (aka Sid). I hope you find it
1899 useful. It was uploaded the last few days, and the last update will
1900 enter testing tomorrow. See the
1901 &lt;a href=&quot;https://ultimaker.com/en/products/cura-software/release-notes&quot;&gt;release
1902 notes&lt;/a&gt; for the list of bug fixes and new features. Version 3.2
1903 was announced 6 days ago. We will try to get it into Debian as
1904 well.&lt;/p&gt;
1905
1906 &lt;p&gt;More information related to 3D printing is available on the
1907 &lt;a href=&quot;https://wiki.debian.org/3DPrinting&quot;&gt;3D printing&lt;/a&gt; and
1908 &lt;a href=&quot;https://wiki.debian.org/3D-printer&quot;&gt;3D printer&lt;/a&gt; wiki pages
1909 in Debian.&lt;/p&gt;
1910
1911 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1912 activities, please send Bitcoin donations to my address
1913 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1914 </description>
1915 </item>
1916
1917 <item>
1918 <title>Cura, the nice 3D print slicer, is now in Debian Unstable</title>
1919 <link>https://people.skolelinux.org/pere/blog/Cura__the_nice_3D_print_slicer__is_now_in_Debian_Unstable.html</link>
1920 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Cura__the_nice_3D_print_slicer__is_now_in_Debian_Unstable.html</guid>
1921 <pubDate>Sun, 17 Dec 2017 07:00:00 +0100</pubDate>
1922 <description>&lt;p&gt;After several months of working and waiting, I am happy to report
1923 that the nice and user friendly 3D printer slicer software Cura just
1924 entered Debian Unstable. It consist of five packages,
1925 &lt;a href=&quot;https://tracker.debian.org/pkg/cura&quot;&gt;cura&lt;/a&gt;,
1926 &lt;a href=&quot;https://tracker.debian.org/pkg/cura-engine&quot;&gt;cura-engine&lt;/a&gt;,
1927 &lt;a href=&quot;https://tracker.debian.org/pkg/libarcus&quot;&gt;libarcus&lt;/a&gt;,
1928 &lt;a href=&quot;https://tracker.debian.org/pkg/fdm-materials&quot;&gt;fdm-materials&lt;/a&gt;,
1929 &lt;a href=&quot;https://tracker.debian.org/pkg/libsavitar&quot;&gt;libsavitar&lt;/a&gt; and
1930 &lt;a href=&quot;https://tracker.debian.org/pkg/uranium&quot;&gt;uranium&lt;/a&gt;. The last
1931 two, uranium and cura, entered Unstable yesterday. This should make
1932 it easier for Debian users to print on at least the Ultimaker class of
1933 3D printers. My nearest 3D printer is an Ultimaker 2+, so it will
1934 make life easier for at least me. :)&lt;/p&gt;
1935
1936 &lt;p&gt;The work to make this happen was done by Gregor Riepl, and I was
1937 happy to assist him in sponsoring the packages. With the introduction
1938 of Cura, Debian is up to three 3D printer slicers at your service,
1939 Cura, Slic3r and Slic3r Prusa. If you own or have access to a 3D
1940 printer, give it a go. :)&lt;/p&gt;
1941
1942 &lt;p&gt;The 3D printer software is maintained by the 3D printer Debian
1943 team, flocking together on the
1944 &lt;a href=&quot;http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/3dprinter-general&quot;&gt;3dprinter-general&lt;/a&gt;
1945 mailing list and the
1946 &lt;a href=&quot;irc://irc.debian.org/#debian-3dprinting&quot;&gt;#debian-3dprinting&lt;/a&gt;
1947 IRC channel.&lt;/p&gt;
1948
1949 &lt;p&gt;The next step for Cura in Debian is to update the cura package to
1950 version 3.0.3 and then update the entire set of packages to version
1951 3.1.0 which showed up the last few days.&lt;/p&gt;
1952 </description>
1953 </item>
1954
1955 <item>
1956 <title>Generating 3D prints in Debian using Cura and Slic3r(-prusa)</title>
1957 <link>https://people.skolelinux.org/pere/blog/Generating_3D_prints_in_Debian_using_Cura_and_Slic3r__prusa_.html</link>
1958 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Generating_3D_prints_in_Debian_using_Cura_and_Slic3r__prusa_.html</guid>
1959 <pubDate>Mon, 9 Oct 2017 10:50:00 +0200</pubDate>
1960 <description>&lt;p&gt;At my nearby maker space,
1961 &lt;a href=&quot;http://sonen.ifi.uio.no/&quot;&gt;Sonen&lt;/a&gt;, I heard the story that it
1962 was easier to generate gcode files for theyr 3D printers (Ultimake 2+)
1963 on Windows and MacOS X than Linux, because the software involved had
1964 to be manually compiled and set up on Linux while premade packages
1965 worked out of the box on Windows and MacOS X. I found this annoying,
1966 as the software involved,
1967 &lt;a href=&quot;https://github.com/Ultimaker/Cura&quot;&gt;Cura&lt;/a&gt;, is free software
1968 and should be trivial to get up and running on Linux if someone took
1969 the time to package it for the relevant distributions. I even found
1970 &lt;a href=&quot;https://bugs.debian.org/706656&quot;&gt;a request for adding into
1971 Debian&lt;/a&gt; from 2013, which had seem some activity over the years but
1972 never resulted in the software showing up in Debian. So a few days
1973 ago I offered my help to try to improve the situation.&lt;/p&gt;
1974
1975 &lt;p&gt;Now I am very happy to see that all the packages required by a
1976 working Cura in Debian are uploaded into Debian and waiting in the NEW
1977 queue for the ftpmasters to have a look. You can track the progress
1978 on
1979 &lt;a href=&quot;https://qa.debian.org/developer.php?email=3dprinter-general%40lists.alioth.debian.org&quot;&gt;the
1980 status page for the 3D printer team&lt;/a&gt;.&lt;/p&gt;
1981
1982 &lt;p&gt;The uploaded packages are a bit behind upstream, and was uploaded
1983 now to get slots in &lt;a href=&quot;https://ftp-master.debian.org/new.html&quot;&gt;the NEW
1984 queue&lt;/a&gt; while we work up updating the packages to the latest
1985 upstream version.&lt;/p&gt;
1986
1987 &lt;p&gt;On a related note, two competitors for Cura, which I found harder
1988 to use and was unable to configure correctly for Ultimaker 2+ in the
1989 short time I spent on it, are already in Debian. If you are looking
1990 for 3D printer &quot;slicers&quot; and want something already available in
1991 Debian, check out
1992 &lt;a href=&quot;https://tracker.debian.org/pkg/slic3r&quot;&gt;slic3r&lt;/a&gt; and
1993 &lt;a href=&quot;https://tracker.debian.org/pkg/slic3r-prusa&quot;&gt;slic3r-prusa&lt;/a&gt;.
1994 The latter is a fork of the former.&lt;/p&gt;
1995
1996 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1997 activities, please send Bitcoin donations to my address
1998 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1999 </description>
2000 </item>
2001
2002 <item>
2003 <title>Visualizing GSM radio chatter using gr-gsm and Hopglass</title>
2004 <link>https://people.skolelinux.org/pere/blog/Visualizing_GSM_radio_chatter_using_gr_gsm_and_Hopglass.html</link>
2005 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Visualizing_GSM_radio_chatter_using_gr_gsm_and_Hopglass.html</guid>
2006 <pubDate>Fri, 29 Sep 2017 10:30:00 +0200</pubDate>
2007 <description>&lt;p&gt;Every mobile phone announce its existence over radio to the nearby
2008 mobile cell towers. And this radio chatter is available for anyone
2009 with a radio receiver capable of receiving them. Details about the
2010 mobile phones with very good accuracy is of course collected by the
2011 phone companies, but this is not the topic of this blog post. The
2012 mobile phone radio chatter make it possible to figure out when a cell
2013 phone is nearby, as it include the SIM card ID (IMSI). By paying
2014 attention over time, one can see when a phone arrive and when it leave
2015 an area. I believe it would be nice to make this information more
2016 available to the general public, to make more people aware of how
2017 their phones are announcing their whereabouts to anyone that care to
2018 listen.&lt;/p&gt;
2019
2020 &lt;p&gt;I am very happy to report that we managed to get something
2021 visualizing this information up and running for
2022 &lt;a href=&quot;http://norwaymakers.org/osf17&quot;&gt;Oslo Skaperfestival 2017&lt;/a&gt;
2023 (Oslo Makers Festival) taking place today and tomorrow at Deichmanske
2024 library. The solution is based on the
2025 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html&quot;&gt;simple
2026 recipe for listening to GSM chatter&lt;/a&gt; I posted a few days ago, and
2027 will show up at the stand of &lt;a href=&quot;http://sonen.ifi.uio.no/&quot;&gt;Åpen
2028 Sone from the Computer Science department of the University of
2029 Oslo&lt;/a&gt;. The presentation will show the nearby mobile phones (aka
2030 IMSIs) as dots in a web browser graph, with lines to the dot
2031 representing mobile base station it is talking to. It was working in
2032 the lab yesterday, and was moved into place this morning.&lt;/p&gt;
2033
2034 &lt;p&gt;We set up a fairly powerful desktop machine using Debian
2035 Buster/Testing with several (five, I believe) RTL2838 DVB-T receivers
2036 connected and visualize the visible cell phone towers using an
2037 &lt;a href=&quot;https://github.com/marlow925/hopglass&quot;&gt;English version of
2038 Hopglass&lt;/a&gt;. A fairly powerfull machine is needed as the
2039 grgsm_livemon_headless processes from
2040 &lt;a href=&quot;https://tracker.debian.org/pkg/gr-gsm&quot;&gt;gr-gsm&lt;/a&gt; converting
2041 the radio signal to data packages is quite CPU intensive.&lt;/p&gt;
2042
2043 &lt;p&gt;The frequencies to listen to, are identified using a slightly
2044 patched scan-and-livemon (to set the --args values for each receiver),
2045 and the Hopglass data is generated using the
2046 &lt;a href=&quot;https://github.com/petterreinholdtsen/IMSI-catcher/tree/meshviewer-output&quot;&gt;patches
2047 in my meshviewer-output branch&lt;/a&gt;. For some reason we could not get
2048 more than four SDRs working. There is also a geographical map trying
2049 to show the location of the base stations, but I believe their
2050 coordinates are hardcoded to some random location in Germany, I
2051 believe. The code should be replaced with code to look up location in
2052 a text file, a sqlite database or one of the online databases
2053 mentioned in
2054 &lt;a href=&quot;https://github.com/Oros42/IMSI-catcher/issues/14&quot;&gt;the github
2055 issue for the topic&lt;/a&gt;.
2056
2057 &lt;p&gt;If this sound interesting, visit the stand at the festival!&lt;/p&gt;
2058 </description>
2059 </item>
2060
2061 <item>
2062 <title>Easier recipe to observe the cell phones around you</title>
2063 <link>https://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html</link>
2064 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html</guid>
2065 <pubDate>Sun, 24 Sep 2017 08:30:00 +0200</pubDate>
2066 <description>&lt;p&gt;A little more than a month ago I wrote
2067 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html&quot;&gt;how
2068 to observe the SIM card ID (aka IMSI number) of mobile phones talking
2069 to nearby mobile phone base stations using Debian GNU/Linux and a
2070 cheap USB software defined radio&lt;/a&gt;, and thus being able to pinpoint
2071 the location of people and equipment (like cars and trains) with an
2072 accuracy of a few kilometer. Since then we have worked to make the
2073 procedure even simpler, and it is now possible to do this without any
2074 manual frequency tuning and without building your own packages.&lt;/p&gt;
2075
2076 &lt;p&gt;The &lt;a href=&quot;https://tracker.debian.org/pkg/gr-gsm&quot;&gt;gr-gsm&lt;/a&gt;
2077 package is now included in Debian testing and unstable, and the
2078 IMSI-catcher code no longer require root access to fetch and decode
2079 the GSM data collected using gr-gsm.&lt;/p&gt;
2080
2081 &lt;p&gt;Here is an updated recipe, using packages built by Debian and a git
2082 clone of two python scripts:&lt;/p&gt;
2083
2084 &lt;ol&gt;
2085
2086 &lt;li&gt;Start with a Debian machine running the Buster version (aka
2087 testing).&lt;/li&gt;
2088
2089 &lt;li&gt;Run &#39;&lt;tt&gt;apt install gr-gsm python-numpy python-scipy
2090 python-scapy&lt;/tt&gt;&#39; as root to install required packages.&lt;/li&gt;
2091
2092 &lt;li&gt;Fetch the code decoding GSM packages using &#39;&lt;tt&gt;git clone
2093 github.com/Oros42/IMSI-catcher.git&lt;/tt&gt;&#39;.&lt;/li&gt;
2094
2095 &lt;li&gt;Insert USB software defined radio supported by GNU Radio.&lt;/li&gt;
2096
2097 &lt;li&gt;Enter the IMSI-catcher directory and run &#39;&lt;tt&gt;python
2098 scan-and-livemon&lt;/tt&gt;&#39; to locate the frequency of nearby base
2099 stations and start listening for GSM packages on one of them.&lt;/li&gt;
2100
2101 &lt;li&gt;Enter the IMSI-catcher directory and run &#39;&lt;tt&gt;python
2102 simple_IMSI-catcher.py&lt;/tt&gt;&#39; to display the collected information.&lt;/li&gt;
2103
2104 &lt;/ol&gt;
2105
2106 &lt;p&gt;Note, due to a bug somewhere the scan-and-livemon program (actually
2107 &lt;a href=&quot;https://github.com/ptrkrysik/gr-gsm/issues/336&quot;&gt;its underlying
2108 program grgsm_scanner&lt;/a&gt;) do not work with the HackRF radio. It does
2109 work with RTL 8232 and other similar USB radio receivers you can get
2110 very cheaply
2111 (&lt;a href=&quot;https://www.ebay.com/sch/items/?_nkw=rtl+2832&quot;&gt;for example
2112 from ebay&lt;/a&gt;), so for now the solution is to scan using the RTL radio
2113 and only use HackRF for fetching GSM data.&lt;/p&gt;
2114
2115 &lt;p&gt;As far as I can tell, a cell phone only show up on one of the
2116 frequencies at the time, so if you are going to track and count every
2117 cell phone around you, you need to listen to all the frequencies used.
2118 To listen to several frequencies, use the --numrecv argument to
2119 scan-and-livemon to use several receivers. Further, I am not sure if
2120 phones using 3G or 4G will show as talking GSM to base stations, so
2121 this approach might not see all phones around you. I typically see
2122 0-400 IMSI numbers an hour when looking around where I live.&lt;/p&gt;
2123
2124 &lt;p&gt;I&#39;ve tried to run the scanner on a
2125 &lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi 2 and 3
2126 running Debian Buster&lt;/a&gt;, but the grgsm_livemon_headless process seem
2127 to be too CPU intensive to keep up. When GNU Radio print &#39;O&#39; to
2128 stdout, I am told there it is caused by a buffer overflow between the
2129 radio and GNU Radio, caused by the program being unable to read the
2130 GSM data fast enough. If you see a stream of &#39;O&#39;s from the terminal
2131 where you started scan-and-livemon, you need a give the process more
2132 CPU power. Perhaps someone are able to optimize the code to a point
2133 where it become possible to set up RPi3 based GSM sniffers? I tried
2134 using Raspbian instead of Debian, but there seem to be something wrong
2135 with GNU Radio on raspbian, causing glibc to abort().&lt;/p&gt;
2136 </description>
2137 </item>
2138
2139 <item>
2140 <title>Simpler recipe on how to make a simple $7 IMSI Catcher using Debian</title>
2141 <link>https://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</link>
2142 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</guid>
2143 <pubDate>Wed, 9 Aug 2017 23:59:00 +0200</pubDate>
2144 <description>&lt;p&gt;On friday, I came across an interesting article in the Norwegian
2145 web based ICT news magazine digi.no on
2146 &lt;a href=&quot;https://www.digi.no/artikler/sikkerhetsforsker-lagde-enkel-imsi-catcher-for-60-kroner-na-kan-mobiler-kartlegges-av-alle/398588&quot;&gt;how
2147 to collect the IMSI numbers of nearby cell phones&lt;/a&gt; using the cheap
2148 DVB-T software defined radios. The article refered to instructions
2149 and &lt;a href=&quot;https://www.youtube.com/watch?v=UjwgNd_as30&quot;&gt;a recipe by
2150 Keld Norman on Youtube on how to make a simple $7 IMSI Catcher&lt;/a&gt;, and I decided to test them out.&lt;/p&gt;
2151
2152 &lt;p&gt;The instructions said to use Ubuntu, install pip using apt (to
2153 bypass apt), use pip to install pybombs (to bypass both apt and pip),
2154 and the ask pybombs to fetch and build everything you need from
2155 scratch. I wanted to see if I could do the same on the most recent
2156 Debian packages, but this did not work because pybombs tried to build
2157 stuff that no longer build with the most recent openssl library or
2158 some other version skew problem. While trying to get this recipe
2159 working, I learned that the apt-&gt;pip-&gt;pybombs route was a long detour,
2160 and the only piece of software dependency missing in Debian was the
2161 gr-gsm package. I also found out that the lead upstream developer of
2162 gr-gsm (the name stand for GNU Radio GSM) project already had a set of
2163 Debian packages provided in an Ubuntu PPA repository. All I needed to
2164 do was to dget the Debian source package and built it.&lt;/p&gt;
2165
2166 &lt;p&gt;The IMSI collector is a python script listening for packages on the
2167 loopback network device and printing to the terminal some specific GSM
2168 packages with IMSI numbers in them. The code is fairly short and easy
2169 to understand. The reason this work is because gr-gsm include a tool
2170 to read GSM data from a software defined radio like a DVB-T USB stick
2171 and other software defined radios, decode them and inject them into a
2172 network device on your Linux machine (using the loopback device by
2173 default). This proved to work just fine, and I&#39;ve been testing the
2174 collector for a few days now.&lt;/p&gt;
2175
2176 &lt;p&gt;The updated and simpler recipe is thus to&lt;/p&gt;
2177
2178 &lt;ol&gt;
2179
2180 &lt;li&gt;start with a Debian machine running Stretch or newer,&lt;/li&gt;
2181
2182 &lt;li&gt;build and install the gr-gsm package available from
2183 &lt;a href=&quot;http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/&quot;&gt;http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/&lt;/a&gt;,&lt;/li&gt;
2184
2185 &lt;li&gt;clone the git repostory from &lt;a href=&quot;https://github.com/Oros42/IMSI-catcher&quot;&gt;https://github.com/Oros42/IMSI-catcher&lt;/a&gt;,&lt;/li&gt;
2186
2187 &lt;li&gt;run grgsm_livemon and adjust the frequency until the terminal
2188 where it was started is filled with a stream of text (meaning you
2189 found a GSM station).&lt;/li&gt;
2190
2191 &lt;li&gt;go into the IMSI-catcher directory and run &#39;sudo python simple_IMSI-catcher.py&#39; to extract the IMSI numbers.&lt;/li&gt;
2192
2193 &lt;/ol&gt;
2194
2195 &lt;p&gt;To make it even easier in the future to get this sniffer up and
2196 running, I decided to package
2197 &lt;a href=&quot;https://github.com/ptrkrysik/gr-gsm/&quot;&gt;the gr-gsm project&lt;/a&gt;
2198 for Debian (&lt;a href=&quot;https://bugs.debian.org/871055&quot;&gt;WNPP
2199 #871055&lt;/a&gt;), and the package was uploaded into the NEW queue today.
2200 Luckily the gnuradio maintainer has promised to help me, as I do not
2201 know much about gnuradio stuff yet.&lt;/p&gt;
2202
2203 &lt;p&gt;I doubt this &quot;IMSI cacher&quot; is anywhere near as powerfull as
2204 commercial tools like
2205 &lt;a href=&quot;https://www.thespyphone.com/portable-imsi-imei-catcher/&quot;&gt;The
2206 Spy Phone Portable IMSI / IMEI Catcher&lt;/a&gt; or the
2207 &lt;a href=&quot;https://en.wikipedia.org/wiki/Stingray_phone_tracker&quot;&gt;Harris
2208 Stingray&lt;/a&gt;, but I hope the existance of cheap alternatives can make
2209 more people realise how their whereabouts when carrying a cell phone
2210 is easily tracked. Seeing the data flow on the screen, realizing that
2211 I live close to a police station and knowing that the police is also
2212 wearing cell phones, I wonder how hard it would be for criminals to
2213 track the position of the police officers to discover when there are
2214 police near by, or for foreign military forces to track the location
2215 of the Norwegian military forces, or for anyone to track the location
2216 of government officials...&lt;/p&gt;
2217
2218 &lt;p&gt;It is worth noting that the data reported by the IMSI-catcher
2219 script mentioned above is only a fraction of the data broadcasted on
2220 the GSM network. It will only collect one frequency at the time,
2221 while a typical phone will be using several frequencies, and not all
2222 phones will be using the frequencies tracked by the grgsm_livemod
2223 program. Also, there is a lot of radio chatter being ignored by the
2224 simple_IMSI-catcher script, which would be collected by extending the
2225 parser code. I wonder if gr-gsm can be set up to listen to more than
2226 one frequency?&lt;/p&gt;
2227 </description>
2228 </item>
2229
2230 <item>
2231 <title>Norwegian Bokmål edition of Debian Administrator&#39;s Handbook is now available</title>
2232 <link>https://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_is_now_available.html</link>
2233 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_is_now_available.html</guid>
2234 <pubDate>Tue, 25 Jul 2017 21:10:00 +0200</pubDate>
2235 <description>&lt;p align=&quot;center&quot;&gt;&lt;img align=&quot;center&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2017-07-25-debian-handbook-nb-testprint.png&quot;/&gt;&lt;/p&gt;
2236
2237 &lt;p&gt;I finally received a copy of the Norwegian Bokmål edition of
2238 &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
2239 Handbook&lt;/a&gt;&quot;. This test copy arrived in the mail a few days ago, and
2240 I am very happy to hold the result in my hand. We spent around one and a half year translating it. This paperbook edition
2241 &lt;a href=&quot;https://debian-handbook.info/get/#norwegian&quot;&gt;is available
2242 from lulu.com&lt;/a&gt;. If you buy it quickly, you save 25% on the list
2243 price. The book is also available for download in electronic form as
2244 PDF, EPUB and Mobipocket, as can be
2245 &lt;a href=&quot;https://debian-handbook.info/browse/nb-NO/stable/&quot;&gt;read online
2246 as a web page&lt;/a&gt;.&lt;/p&gt;
2247
2248 &lt;p&gt;This is the second book I publish (the first was the book
2249 &quot;&lt;a href=&quot;http://free-culture.cc/&quot;&gt;Free Culture&lt;/a&gt;&quot; by Lawrence Lessig
2250 in
2251 &lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/free-culture/paperback/product-22440520.html&quot;&gt;English&lt;/a&gt;,
2252 &lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/culture-libre/paperback/product-22645082.html&quot;&gt;French&lt;/a&gt;
2253 and
2254 &lt;a href=&quot;http://www.lulu.com/shop/lawrence-lessig/fri-kultur/paperback/product-22441576.html&quot;&gt;Norwegian
2255 Bokmål&lt;/a&gt;), and I am very excited to finally wrap up this
2256 project. I hope
2257 &quot;&lt;a href=&quot;http://www.lulu.com/shop/rapha%C3%ABl-hertzog-and-roland-mas/h%C3%A5ndbok-for-debian-administratoren/paperback/product-23262290.html&quot;&gt;Håndbok
2258 for Debian-administratoren&lt;/a&gt;&quot; will be well received.&lt;/p&gt;
2259 </description>
2260 </item>
2261
2262 <item>
2263 <title>Når nynorskoversettelsen svikter til eksamen...</title>
2264 <link>https://people.skolelinux.org/pere/blog/N_r_nynorskoversettelsen_svikter_til_eksamen___.html</link>
2265 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/N_r_nynorskoversettelsen_svikter_til_eksamen___.html</guid>
2266 <pubDate>Sat, 3 Jun 2017 08:20:00 +0200</pubDate>
2267 <description>&lt;p&gt;&lt;a href=&quot;http://www.aftenposten.no/norge/Krever-at-elever-ma-fa-annullert-eksamen-etter-rot-med-oppgavetekster-622459b.html&quot;&gt;Aftenposten
2268 melder i dag&lt;/a&gt; om feil i eksamensoppgavene for eksamen i politikk og
2269 menneskerettigheter, der teksten i bokmåls og nynorskutgaven ikke var
2270 like. Oppgaveteksten er gjengitt i artikkelen, og jeg ble nysgjerring
2271 på om den fri oversetterløsningen
2272 &lt;a href=&quot;https://www.apertium.org/&quot;&gt;Apertium&lt;/a&gt; ville gjort en bedre
2273 jobb enn Utdanningsdirektoratet. Det kan se slik ut.&lt;/p&gt;
2274
2275 &lt;p&gt;Her er bokmålsoppgaven fra eksamenen:&lt;/p&gt;
2276
2277 &lt;blockquote&gt;
2278 &lt;p&gt;Drøft utfordringene knyttet til nasjonalstatenes og andre aktørers
2279 rolle og muligheter til å håndtere internasjonale utfordringer, som
2280 for eksempel flykningekrisen.&lt;/p&gt;
2281
2282 &lt;p&gt;Vedlegge er eksempler på tekster som kan gi relevante perspektiver
2283 på temaet:&lt;/p&gt;
2284 &lt;ol&gt;
2285 &lt;li&gt;Flykningeregnskapet 2016, UNHCR og IDMC
2286 &lt;li&gt;«Grenseløst Europa for fall» A-Magasinet, 26. november 2015
2287 &lt;/ol&gt;
2288
2289 &lt;/blockquote&gt;
2290
2291 &lt;p&gt;Dette oversetter Apertium slik:&lt;/p&gt;
2292
2293 &lt;blockquote&gt;
2294 &lt;p&gt;Drøft utfordringane knytte til nasjonalstatane sine og rolla til
2295 andre aktørar og høve til å handtera internasjonale utfordringar, som
2296 til dømes *flykningekrisen.&lt;/p&gt;
2297
2298 &lt;p&gt;Vedleggja er døme på tekster som kan gje relevante perspektiv på
2299 temaet:&lt;/p&gt;
2300
2301 &lt;ol&gt;
2302 &lt;li&gt;*Flykningeregnskapet 2016, *UNHCR og *IDMC&lt;/li&gt;
2303 &lt;li&gt;«*Grenseløst Europa for fall» A-Magasinet, 26. november 2015&lt;/li&gt;
2304 &lt;/ol&gt;
2305
2306 &lt;/blockquote&gt;
2307
2308 &lt;p&gt;Ord som ikke ble forstått er markert med stjerne (*), og trenger
2309 ekstra språksjekk. Men ingen ord er forsvunnet, slik det var i
2310 oppgaven elevene fikk presentert på eksamen. Jeg mistenker dog at
2311 &quot;andre aktørers rolle og muligheter til ...&quot; burde vært oversatt til
2312 &quot;rolla til andre aktørar og deira høve til ...&quot; eller noe slikt, men
2313 det er kanskje flisespikking. Det understreker vel bare at det alltid
2314 trengs korrekturlesning etter automatisk oversettelse.&lt;/p&gt;
2315 </description>
2316 </item>
2317
2318 <item>
2319 <title>Detecting NFS hangs on Linux without hanging yourself...</title>
2320 <link>https://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html</link>
2321 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html</guid>
2322 <pubDate>Thu, 9 Mar 2017 15:20:00 +0100</pubDate>
2323 <description>&lt;p&gt;Over the years, administrating thousand of NFS mounting linux
2324 computers at the time, I often needed a way to detect if the machine
2325 was experiencing NFS hang. If you try to use &lt;tt&gt;df&lt;/tt&gt; or look at a
2326 file or directory affected by the hang, the process (and possibly the
2327 shell) will hang too. So you want to be able to detect this without
2328 risking the detection process getting stuck too. It has not been
2329 obvious how to do this. When the hang has lasted a while, it is
2330 possible to find messages like these in dmesg:&lt;/p&gt;
2331
2332 &lt;p&gt;&lt;blockquote&gt;
2333 nfs: server nfsserver not responding, still trying
2334 &lt;br&gt;nfs: server nfsserver OK
2335 &lt;/blockquote&gt;&lt;/p&gt;
2336
2337 &lt;p&gt;It is hard to know if the hang is still going on, and it is hard to
2338 be sure looking in dmesg is going to work. If there are lots of other
2339 messages in dmesg the lines might have rotated out of site before they
2340 are noticed.&lt;/p&gt;
2341
2342 &lt;p&gt;While reading through the nfs client implementation in linux kernel
2343 code, I came across some statistics that seem to give a way to detect
2344 it. The om_timeouts sunrpc value in the kernel will increase every
2345 time the above log entry is inserted into dmesg. And after digging a
2346 bit further, I discovered that this value show up in
2347 /proc/self/mountstats on Linux.&lt;/p&gt;
2348
2349 &lt;p&gt;The mountstats content seem to be shared between files using the
2350 same file system context, so it is enough to check one of the
2351 mountstats files to get the state of the mount point for the machine.
2352 I assume this will not show lazy umounted NFS points, nor NFS mount
2353 points in a different process context (ie with a different filesystem
2354 view), but that does not worry me.&lt;/p&gt;
2355
2356 &lt;p&gt;The content for a NFS mount point look similar to this:&lt;/p&gt;
2357
2358 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2359 [...]
2360 device /dev/mapper/Debian-var mounted on /var with fstype ext3
2361 device nfsserver:/mnt/nfsserver/home0 mounted on /mnt/nfsserver/home0 with fstype nfs statvers=1.1
2362 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
2363 age: 7863311
2364 caps: caps=0x3fe7,wtmult=4096,dtsize=8192,bsize=0,namlen=255
2365 sec: flavor=1,pseudoflavor=1
2366 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
2367 bytes: 166253035039 219519120027 0 0 40783504807 185466229638 11677877 45561809
2368 RPC iostats version: 1.0 p/v: 100003/3 (nfs)
2369 xprt: tcp 925 1 6810 0 0 111505412 111480497 109 2672418560317 0 248 53869103 22481820
2370 per-op statistics
2371 NULL: 0 0 0 0 0 0 0 0
2372 GETATTR: 61063106 61063108 0 9621383060 6839064400 453650 77291321 78926132
2373 SETATTR: 463469 463470 0 92005440 66739536 63787 603235 687943
2374 LOOKUP: 17021657 17021657 0 3354097764 4013442928 57216 35125459 35566511
2375 ACCESS: 14281703 14290009 5 2318400592 1713803640 1709282 4865144 7130140
2376 READLINK: 125 125 0 20472 18620 0 1112 1118
2377 READ: 4214236 4214237 0 715608524 41328653212 89884 22622768 22806693
2378 WRITE: 8479010 8494376 22 187695798568 1356087148 178264904 51506907 231671771
2379 CREATE: 171708 171708 0 38084748 46702272 873 1041833 1050398
2380 MKDIR: 3680 3680 0 773980 993920 26 23990 24245
2381 SYMLINK: 903 903 0 233428 245488 6 5865 5917
2382 MKNOD: 80 80 0 20148 21760 0 299 304
2383 REMOVE: 429921 429921 0 79796004 61908192 3313 2710416 2741636
2384 RMDIR: 3367 3367 0 645112 484848 22 5782 6002
2385 RENAME: 466201 466201 0 130026184 121212260 7075 5935207 5961288
2386 LINK: 289155 289155 0 72775556 67083960 2199 2565060 2585579
2387 READDIR: 2933237 2933237 0 516506204 13973833412 10385 3190199 3297917
2388 READDIRPLUS: 1652839 1652839 0 298640972 6895997744 84735 14307895 14448937
2389 FSSTAT: 6144 6144 0 1010516 1032192 51 9654 10022
2390 FSINFO: 2 2 0 232 328 0 1 1
2391 PATHCONF: 1 1 0 116 140 0 0 0
2392 COMMIT: 0 0 0 0 0 0 0 0
2393
2394 device binfmt_misc mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
2395 [...]
2396 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2397
2398 &lt;p&gt;The key number to look at is the third number in the per-op list.
2399 It is the number of NFS timeouts experiences per file system
2400 operation. Here 22 write timeouts and 5 access timeouts. If these
2401 numbers are increasing, I believe the machine is experiencing NFS
2402 hang. Unfortunately the timeout value do not start to increase right
2403 away. The NFS operations need to time out first, and this can take a
2404 while. The exact timeout value depend on the setup. For example the
2405 defaults for TCP and UDP mount points are quite different, and the
2406 timeout value is affected by the soft, hard, timeo and retrans NFS
2407 mount options.&lt;/p&gt;
2408
2409 &lt;p&gt;The only way I have been able to get working on Debian and RedHat
2410 Enterprise Linux for getting the timeout count is to peek in /proc/.
2411 But according to
2412 &lt;ahref=&quot;http://docs.oracle.com/cd/E19253-01/816-4555/netmonitor-12/index.html&quot;&gt;Solaris
2413 10 System Administration Guide: Network Services&lt;/a&gt;, the &#39;nfsstat -c&#39;
2414 command can be used to get these timeout values. But this do not work
2415 on Linux, as far as I can tell. I
2416 &lt;ahref=&quot;http://bugs.debian.org/857043&quot;&gt;asked Debian about this&lt;/a&gt;,
2417 but have not seen any replies yet.&lt;/p&gt;
2418
2419 &lt;p&gt;Is there a better way to figure out if a Linux NFS client is
2420 experiencing NFS hangs? Is there a way to detect which processes are
2421 affected? Is there a way to get the NFS mount going quickly once the
2422 network problem causing the NFS hang has been cleared? I would very
2423 much welcome some clues, as we regularly run into NFS hangs.&lt;/p&gt;
2424 </description>
2425 </item>
2426
2427 <item>
2428 <title>Norwegian Bokmål translation of The Debian Administrator&#39;s Handbook complete, proofreading in progress</title>
2429 <link>https://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html</link>
2430 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html</guid>
2431 <pubDate>Fri, 3 Mar 2017 14:50:00 +0100</pubDate>
2432 <description>&lt;p&gt;For almost a year now, we have been working on making a Norwegian
2433 Bokmål edition of &lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian
2434 Administrator&#39;s Handbook&lt;/a&gt;. Now, thanks to the tireless effort of
2435 Ole-Erik, Ingrid and Andreas, the initial translation is complete, and
2436 we are working on the proof reading to ensure consistent language and
2437 use of correct computer science terms. The plan is to make the book
2438 available on paper, as well as in electronic form. For that to
2439 happen, the proof reading must be completed and all the figures need
2440 to be translated. If you want to help out, get in touch.&lt;/p&gt;
2441
2442 &lt;p&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/debian-handbook/debian-handbook-nb-NO.pdf&quot;&gt;A
2443
2444 fresh PDF edition&lt;/a&gt; in A4 format (the final book will have smaller
2445 pages) of the book created every morning is available for
2446 proofreading. If you find any errors, please
2447 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;visit
2448 Weblate and correct the error&lt;/a&gt;. The
2449 &lt;a href=&quot;http://l.github.io/debian-handbook/stat/nb-NO/index.html&quot;&gt;state
2450 of the translation including figures&lt;/a&gt; is a useful source for those
2451 provide Norwegian bokmål screen shots and figures.&lt;/p&gt;
2452 </description>
2453 </item>
2454
2455 <item>
2456 <title>Unlimited randomness with the ChaosKey?</title>
2457 <link>https://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html</link>
2458 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html</guid>
2459 <pubDate>Wed, 1 Mar 2017 20:50:00 +0100</pubDate>
2460 <description>&lt;p&gt;A few days ago I ordered a small batch of
2461 &lt;a href=&quot;http://altusmetrum.org/ChaosKey/&quot;&gt;the ChaosKey&lt;/a&gt;, a small
2462 USB dongle for generating entropy created by Bdale Garbee and Keith
2463 Packard. Yesterday it arrived, and I am very happy to report that it
2464 work great! According to its designers, to get it to work out of the
2465 box, you need the Linux kernel version 4.1 or later. I tested on a
2466 Debian Stretch machine (kernel version 4.9), and there it worked just
2467 fine, increasing the available entropy very quickly. I wrote a small
2468 test oneliner to test. It first print the current entropy level,
2469 drain /dev/random, and then print the entropy level for five seconds.
2470 Here is the situation without the ChaosKey inserted:&lt;/p&gt;
2471
2472 &lt;blockquote&gt;&lt;pre&gt;
2473 % cat /proc/sys/kernel/random/entropy_avail; \
2474 dd bs=1M if=/dev/random of=/dev/null count=1; \
2475 for n in $(seq 1 5); do \
2476 cat /proc/sys/kernel/random/entropy_avail; \
2477 sleep 1; \
2478 done
2479 300
2480 0+1 oppføringer inn
2481 0+1 oppføringer ut
2482 28 byte kopiert, 0,000264565 s, 106 kB/s
2483 4
2484 8
2485 12
2486 17
2487 21
2488 %
2489 &lt;/pre&gt;&lt;/blockquote&gt;
2490
2491 &lt;p&gt;The entropy level increases by 3-4 every second. In such case any
2492 application requiring random bits (like a HTTPS enabled web server)
2493 will halt and wait for more entrpy. And here is the situation with
2494 the ChaosKey inserted:&lt;/p&gt;
2495
2496 &lt;blockquote&gt;&lt;pre&gt;
2497 % cat /proc/sys/kernel/random/entropy_avail; \
2498 dd bs=1M if=/dev/random of=/dev/null count=1; \
2499 for n in $(seq 1 5); do \
2500 cat /proc/sys/kernel/random/entropy_avail; \
2501 sleep 1; \
2502 done
2503 1079
2504 0+1 oppføringer inn
2505 0+1 oppføringer ut
2506 104 byte kopiert, 0,000487647 s, 213 kB/s
2507 433
2508 1028
2509 1031
2510 1035
2511 1038
2512 %
2513 &lt;/pre&gt;&lt;/blockquote&gt;
2514
2515 &lt;p&gt;Quite the difference. :) I bought a few more than I need, in case
2516 someone want to buy one here in Norway. :)&lt;/p&gt;
2517
2518 &lt;p&gt;Update: The dongle was presented at Debconf last year. You might
2519 find &lt;a href=&quot;https://debconf16.debconf.org/talks/94/&quot;&gt;the talk
2520 recording illuminating&lt;/a&gt;. It explains exactly what the source of
2521 randomness is, if you are unable to spot it from the schema drawing
2522 available from the ChaosKey web site linked at the start of this blog
2523 post.&lt;/p&gt;
2524 </description>
2525 </item>
2526
2527 <item>
2528 <title>Where did that package go? &amp;mdash; geolocated IP traceroute</title>
2529 <link>https://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html</link>
2530 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html</guid>
2531 <pubDate>Mon, 9 Jan 2017 12:20:00 +0100</pubDate>
2532 <description>&lt;p&gt;Did you ever wonder where the web trafic really flow to reach the
2533 web servers, and who own the network equipment it is flowing through?
2534 It is possible to get a glimpse of this from using traceroute, but it
2535 is hard to find all the details. Many years ago, I wrote a system to
2536 map the Norwegian Internet (trying to figure out if our plans for a
2537 network game service would get low enough latency, and who we needed
2538 to talk to about setting up game servers close to the users. Back
2539 then I used traceroute output from many locations (I asked my friends
2540 to run a script and send me their traceroute output) to create the
2541 graph and the map. The output from traceroute typically look like
2542 this:
2543
2544 &lt;p&gt;&lt;pre&gt;
2545 traceroute to www.stortinget.no (85.88.67.10), 30 hops max, 60 byte packets
2546 1 uio-gw10.uio.no (129.240.202.1) 0.447 ms 0.486 ms 0.621 ms
2547 2 uio-gw8.uio.no (129.240.24.229) 0.467 ms 0.578 ms 0.675 ms
2548 3 oslo-gw1.uninett.no (128.39.65.17) 0.385 ms 0.373 ms 0.358 ms
2549 4 te3-1-2.br1.fn3.as2116.net (193.156.90.3) 1.174 ms 1.172 ms 1.153 ms
2550 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
2551 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
2552 7 89.191.10.146 (89.191.10.146) 0.931 ms 0.917 ms 0.955 ms
2553 8 * * *
2554 9 * * *
2555 [...]
2556 &lt;/pre&gt;&lt;/p&gt;
2557
2558 &lt;p&gt;This show the DNS names and IP addresses of (at least some of the)
2559 network equipment involved in getting the data traffic from me to the
2560 www.stortinget.no server, and how long it took in milliseconds for a
2561 package to reach the equipment and return to me. Three packages are
2562 sent, and some times the packages do not follow the same path. This
2563 is shown for hop 5, where three different IP addresses replied to the
2564 traceroute request.&lt;/p&gt;
2565
2566 &lt;p&gt;There are many ways to measure trace routes. Other good traceroute
2567 implementations I use are traceroute (using ICMP packages) mtr (can do
2568 both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
2569 traceroute and a lot of other capabilities). All of them are easily
2570 available in &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt;.&lt;/p&gt;
2571
2572 &lt;p&gt;This time around, I wanted to know the geographic location of
2573 different route points, to visualize how visiting a web page spread
2574 information about the visit to a lot of servers around the globe. The
2575 background is that a web site today often will ask the browser to get
2576 from many servers the parts (for example HTML, JSON, fonts,
2577 JavaScript, CSS, video) required to display the content. This will
2578 leak information about the visit to those controlling these servers
2579 and anyone able to peek at the data traffic passing by (like your ISP,
2580 the ISPs backbone provider, FRA, GCHQ, NSA and others).&lt;/p&gt;
2581
2582 &lt;p&gt;Lets pick an example, the Norwegian parliament web site
2583 www.stortinget.no. It is read daily by all members of parliament and
2584 their staff, as well as political journalists, activits and many other
2585 citizens of Norway. A visit to the www.stortinget.no web site will
2586 ask your browser to contact 8 other servers: ajax.googleapis.com,
2587 insights.hotjar.com, script.hotjar.com, static.hotjar.com,
2588 stats.g.doubleclick.net, www.google-analytics.com,
2589 www.googletagmanager.com and www.netigate.se. I extracted this by
2590 asking &lt;a href=&quot;http://phantomjs.org/&quot;&gt;PhantomJS&lt;/a&gt; to visit the
2591 Stortinget web page and tell me all the URLs PhantomJS downloaded to
2592 render the page (in HAR format using
2593 &lt;a href=&quot;https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js&quot;&gt;their
2594 netsniff example&lt;/a&gt;. I am very grateful to Gorm for showing me how
2595 to do this). My goal is to visualize network traces to all IP
2596 addresses behind these DNS names, do show where visitors personal
2597 information is spread when visiting the page.&lt;/p&gt;
2598
2599 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;www.stortinget.no-geoip.kml&quot;&gt;&lt;img
2600 src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geoip-small.png&quot; alt=&quot;map of combined traces for URLs used by www.stortinget.no using GeoIP&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
2601
2602 &lt;p&gt;When I had a look around for options, I could not find any good
2603 free software tools to do this, and decided I needed my own traceroute
2604 wrapper outputting KML based on locations looked up using GeoIP. KML
2605 is easy to work with and easy to generate, and understood by several
2606 of the GIS tools I have available. I got good help from by NUUG
2607 colleague Anders Einar with this, and the result can be seen in
2608 &lt;a href=&quot;https://github.com/petterreinholdtsen/kmltraceroute&quot;&gt;my
2609 kmltraceroute git repository&lt;/a&gt;. Unfortunately, the quality of the
2610 free GeoIP databases I could find (and the for-pay databases my
2611 friends had access to) is not up to the task. The IP addresses of
2612 central Internet infrastructure would typically be placed near the
2613 controlling companies main office, and not where the router is really
2614 located, as you can see from &lt;a href=&quot;www.stortinget.no-geoip.kml&quot;&gt;the
2615 KML file I created&lt;/a&gt; using the GeoLite City dataset from MaxMind.
2616
2617 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg&quot;&gt;&lt;img
2618 src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy-small.png&quot; alt=&quot;scapy traceroute graph for URLs used by www.stortinget.no&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
2619
2620 &lt;p&gt;I also had a look at the visual traceroute graph created by
2621 &lt;a href=&quot;http://www.secdev.org/projects/scapy/&quot;&gt;the scrapy project&lt;/a&gt;,
2622 showing IP network ownership (aka AS owner) for the IP address in
2623 question.
2624 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg&quot;&gt;The
2625 graph display a lot of useful information about the traceroute in SVG
2626 format&lt;/a&gt;, and give a good indication on who control the network
2627 equipment involved, but it do not include geolocation. This graph
2628 make it possible to see the information is made available at least for
2629 UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
2630 3 Communications and NetDNA.&lt;/p&gt;
2631
2632 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://geotraceroute.com/index.php?node=4&amp;host=www.stortinget.no&quot;&gt;&lt;img
2633 src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-small.png&quot; alt=&quot;example geotraceroute view for www.stortinget.no&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
2634
2635 &lt;p&gt;In the process, I came across the
2636 &lt;a href=&quot;https://geotraceroute.com/&quot;&gt;web service GeoTraceroute&lt;/a&gt; by
2637 Salim Gasmi. Its methology of combining guesses based on DNS names,
2638 various location databases and finally use latecy times to rule out
2639 candidate locations seemed to do a very good job of guessing correct
2640 geolocation. But it could only do one trace at the time, did not have
2641 a sensor in Norway and did not make the geolocations easily available
2642 for postprocessing. So I contacted the developer and asked if he
2643 would be willing to share the code (he refused until he had time to
2644 clean it up), but he was interested in providing the geolocations in a
2645 machine readable format, and willing to set up a sensor in Norway. So
2646 since yesterday, it is possible to run traces from Norway in this
2647 service thanks to a sensor node set up by
2648 &lt;a href=&quot;https://www.nuug.no/&quot;&gt;the NUUG assosiation&lt;/a&gt;, and get the
2649 trace in KML format for further processing.&lt;/p&gt;
2650
2651 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml&quot;&gt;&lt;img
2652 src=&quot;http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.png&quot; alt=&quot;map of combined traces for URLs used by www.stortinget.no using geotraceroute&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
2653
2654 &lt;p&gt;Here we can see a lot of trafic passes Sweden on its way to
2655 Denmark, Germany, Holland and Ireland. Plenty of places where the
2656 Snowden confirmations verified the traffic is read by various actors
2657 without your best interest as their top priority.&lt;/p&gt;
2658
2659 &lt;p&gt;Combining KML files is trivial using a text editor, so I could loop
2660 over all the hosts behind the urls imported by www.stortinget.no and
2661 ask for the KML file from GeoTraceroute, and create a combined KML
2662 file with all the traces (unfortunately only one of the IP addresses
2663 behind the DNS name is traced this time. To get them all, one would
2664 have to request traces using IP number instead of DNS names from
2665 GeoTraceroute). That might be the next step in this project.&lt;/p&gt;
2666
2667 &lt;p&gt;Armed with these tools, I find it a lot easier to figure out where
2668 the IP traffic moves and who control the boxes involved in moving it.
2669 And every time the link crosses for example the Swedish border, we can
2670 be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
2671 Britain and NSA in USA and cables around the globe. (Hm, what should
2672 we tell them? :) Keep that in mind if you ever send anything
2673 unencrypted over the Internet.&lt;/p&gt;
2674
2675 &lt;p&gt;PS: KML files are drawn using
2676 &lt;a href=&quot;http://ivanrublev.me/kml/&quot;&gt;the KML viewer from Ivan
2677 Rublev&lt;a/&gt;, as it was less cluttered than the local Linux application
2678 Marble. There are heaps of other options too.&lt;/p&gt;
2679
2680 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
2681 activities, please send Bitcoin donations to my address
2682 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
2683 </description>
2684 </item>
2685
2686 <item>
2687 <title>Appstream just learned how to map hardware to packages too!</title>
2688 <link>https://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html</link>
2689 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html</guid>
2690 <pubDate>Fri, 23 Dec 2016 10:30:00 +0100</pubDate>
2691 <description>&lt;p&gt;I received a very nice Christmas present today. As my regular
2692 readers probably know, I have been working on the
2693 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;the Isenkram
2694 system&lt;/a&gt; for many years. The goal of the Isenkram system is to make
2695 it easier for users to figure out what to install to get a given piece
2696 of hardware to work in Debian, and a key part of this system is a way
2697 to map hardware to packages. Isenkram have its own mapping database,
2698 and also uses data provided by each package using the AppStream
2699 metadata format. And today,
2700 &lt;a href=&quot;https://tracker.debian.org/pkg/appstream&quot;&gt;AppStream&lt;/a&gt; in
2701 Debian learned to look up hardware the same way Isenkram is doing it,
2702 ie using fnmatch():&lt;/p&gt;
2703
2704 &lt;p&gt;&lt;pre&gt;
2705 % appstreamcli what-provides modalias \
2706 usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
2707 Identifier: pymissile [generic]
2708 Name: pymissile
2709 Summary: Control original Striker USB Missile Launcher
2710 Package: pymissile
2711 % appstreamcli what-provides modalias usb:v0694p0002d0000
2712 Identifier: libnxt [generic]
2713 Name: libnxt
2714 Summary: utility library for talking to the LEGO Mindstorms NXT brick
2715 Package: libnxt
2716 ---
2717 Identifier: t2n [generic]
2718 Name: t2n
2719 Summary: Simple command-line tool for Lego NXT
2720 Package: t2n
2721 ---
2722 Identifier: python-nxt [generic]
2723 Name: python-nxt
2724 Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
2725 Package: python-nxt
2726 ---
2727 Identifier: nbc [generic]
2728 Name: nbc
2729 Summary: C compiler for LEGO Mindstorms NXT bricks
2730 Package: nbc
2731 %
2732 &lt;/pre&gt;&lt;/p&gt;
2733
2734 &lt;p&gt;A similar query can be done using the combined AppStream and
2735 Isenkram databases using the isenkram-lookup tool:&lt;/p&gt;
2736
2737 &lt;p&gt;&lt;pre&gt;
2738 % isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
2739 pymissile
2740 % isenkram-lookup usb:v0694p0002d0000
2741 libnxt
2742 nbc
2743 python-nxt
2744 t2n
2745 %
2746 &lt;/pre&gt;&lt;/p&gt;
2747
2748 &lt;p&gt;You can find modalias values relevant for your machine using
2749 &lt;tt&gt;cat $(find /sys/devices/ -name modalias)&lt;/tt&gt;.
2750
2751 &lt;p&gt;If you want to make this system a success and help Debian users
2752 make the most of the hardware they have, please
2753 help&lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;add
2754 AppStream metadata for your package following the guidelines&lt;/a&gt;
2755 documented in the wiki. So far only 11 packages provide such
2756 information, among the several hundred hardware specific packages in
2757 Debian. The Isenkram database on the other hand contain 101 packages,
2758 mostly related to USB dongles. Most of the packages with hardware
2759 mapping in AppStream are LEGO Mindstorms related, because I have, as
2760 part of my involvement in
2761 &lt;a href=&quot;https://wiki.debian.org/LegoDesigners&quot;&gt;the Debian LEGO
2762 team&lt;/a&gt; given priority to making sure LEGO users get proposed the
2763 complete set of packages in Debian for that particular hardware. The
2764 team also got a nice Christmas present today. The
2765 &lt;a href=&quot;https://tracker.debian.org/pkg/nxt-firmware&quot;&gt;nxt-firmware
2766 package&lt;/a&gt; made it into Debian. With this package in place, it is
2767 now possible to use the LEGO Mindstorms NXT unit with only free
2768 software, as the nxt-firmware package contain the source and firmware
2769 binaries for the NXT brick.&lt;/p&gt;
2770
2771 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
2772 activities, please send Bitcoin donations to my address
2773 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
2774 </description>
2775 </item>
2776
2777 <item>
2778 <title>Isenkram updated with a lot more hardware-package mappings</title>
2779 <link>https://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html</link>
2780 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html</guid>
2781 <pubDate>Tue, 20 Dec 2016 11:55:00 +0100</pubDate>
2782 <description>&lt;p&gt;&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;The Isenkram
2783 system&lt;/a&gt; I wrote two years ago to make it easier in Debian to find
2784 and install packages to get your hardware dongles to work, is still
2785 going strong. It is a system to look up the hardware present on or
2786 connected to the current system, and map the hardware to Debian
2787 packages. It can either be done using the tools in isenkram-cli or
2788 using the user space daemon in the isenkram package. The latter will
2789 notify you, when inserting new hardware, about what packages to
2790 install to get the dongle working. It will even provide a button to
2791 click on to ask packagekit to install the packages.&lt;/p&gt;
2792
2793 &lt;p&gt;Here is an command line example from my Thinkpad laptop:&lt;/p&gt;
2794
2795 &lt;p&gt;&lt;pre&gt;
2796 % isenkram-lookup
2797 bluez
2798 cheese
2799 ethtool
2800 fprintd
2801 fprintd-demo
2802 gkrellm-thinkbat
2803 hdapsd
2804 libpam-fprintd
2805 pidgin-blinklight
2806 thinkfan
2807 tlp
2808 tp-smapi-dkms
2809 tp-smapi-source
2810 tpb
2811 %
2812 &lt;/pre&gt;&lt;/p&gt;
2813
2814 &lt;p&gt;It can also list the firware package providing firmware requested
2815 by the load kernel modules, which in my case is an empty list because
2816 I have all the firmware my machine need:
2817
2818 &lt;p&gt;&lt;pre&gt;
2819 % /usr/sbin/isenkram-autoinstall-firmware -l
2820 info: did not find any firmware files requested by loaded kernel modules. exiting
2821 %
2822 &lt;/pre&gt;&lt;/p&gt;
2823
2824 &lt;p&gt;The last few days I had a look at several of the around 250
2825 packages in Debian with udev rules. These seem like good candidates
2826 to install when a given hardware dongle is inserted, and I found
2827 several that should be proposed by isenkram. I have not had time to
2828 check all of them, but am happy to report that now there are 97
2829 packages packages mapped to hardware by Isenkram. 11 of these
2830 packages provide hardware mapping using AppStream, while the rest are
2831 listed in the modaliases file provided in isenkram.&lt;/p&gt;
2832
2833 &lt;p&gt;These are the packages with hardware mappings at the moment. The
2834 &lt;strong&gt;marked packages&lt;/strong&gt; are also announcing their hardware
2835 support using AppStream, for everyone to use:&lt;/p&gt;
2836
2837 &lt;p&gt;air-quality-sensor, alsa-firmware-loaders, argyll,
2838 &lt;strong&gt;array-info&lt;/strong&gt;, avarice, avrdude, b43-fwcutter,
2839 bit-babbler, bluez, bluez-firmware, &lt;strong&gt;brltty&lt;/strong&gt;,
2840 &lt;strong&gt;broadcom-sta-dkms&lt;/strong&gt;, calibre, cgminer, cheese, colord,
2841 &lt;strong&gt;colorhug-client&lt;/strong&gt;, dahdi-firmware-nonfree, dahdi-linux,
2842 dfu-util, dolphin-emu, ekeyd, ethtool, firmware-ipw2x00, fprintd,
2843 fprintd-demo, &lt;strong&gt;galileo&lt;/strong&gt;, gkrellm-thinkbat, gphoto2,
2844 gpsbabel, gpsbabel-gui, gpsman, gpstrans, gqrx-sdr, gr-fcdproplus,
2845 gr-osmosdr, gtkpod, hackrf, hdapsd, hdmi2usb-udev, hpijs-ppds, hplip,
2846 ipw3945-source, ipw3945d, kde-config-tablet, kinect-audio-setup,
2847 &lt;strong&gt;libnxt&lt;/strong&gt;, libpam-fprintd, &lt;strong&gt;lomoco&lt;/strong&gt;,
2848 madwimax, minidisc-utils, mkgmap, msi-keyboard, mtkbabel,
2849 &lt;strong&gt;nbc&lt;/strong&gt;, &lt;strong&gt;nqc&lt;/strong&gt;, nut-hal-drivers, ola,
2850 open-vm-toolbox, open-vm-tools, openambit, pcgminer, pcmciautils,
2851 pcscd, pidgin-blinklight, printer-driver-splix,
2852 &lt;strong&gt;pymissile&lt;/strong&gt;, python-nxt, qlandkartegt,
2853 qlandkartegt-garmin, rosegarden, rt2x00-source, sispmctl,
2854 soapysdr-module-hackrf, solaar, squeak-plugins-scratch, sunxi-tools,
2855 &lt;strong&gt;t2n&lt;/strong&gt;, thinkfan, thinkfinger-tools, tlp, tp-smapi-dkms,
2856 tp-smapi-source, tpb, tucnak, uhd-host, usbmuxd, viking,
2857 virtualbox-ose-guest-x11, w1retap, xawtv, xserver-xorg-input-vmmouse,
2858 xserver-xorg-input-wacom, xserver-xorg-video-qxl,
2859 xserver-xorg-video-vmware, yubikey-personalization and
2860 zd1211-firmware&lt;/p&gt;
2861
2862 &lt;p&gt;If you know of other packages, please let me know with a wishlist
2863 bug report against the isenkram-cli package, and ask the package
2864 maintainer to
2865 &lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;add AppStream
2866 metadata according to the guidelines&lt;/a&gt; to provide the information
2867 for everyone. In time, I hope to get rid of the isenkram specific
2868 hardware mapping and depend exclusively on AppStream.&lt;/p&gt;
2869
2870 &lt;p&gt;Note, the AppStream metadata for broadcom-sta-dkms is matching too
2871 much hardware, and suggest that the package with with any ethernet
2872 card. See &lt;a href=&quot;http://bugs.debian.org/838735&quot;&gt;bug #838735&lt;/a&gt; for
2873 the details. I hope the maintainer find time to address it soon. In
2874 the mean time I provide an override in isenkram.&lt;/p&gt;
2875 </description>
2876 </item>
2877
2878 <item>
2879 <title>Oolite, a life in space as vagabond and mercenary - nice free software</title>
2880 <link>https://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html</link>
2881 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html</guid>
2882 <pubDate>Sun, 11 Dec 2016 11:40:00 +0100</pubDate>
2883 <description>&lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png&quot;/&gt;&lt;/p&gt;
2884
2885 &lt;p&gt;In my early years, I played
2886 &lt;a href=&quot;http://wiki.alioth.net/index.php/Classic_Elite&quot;&gt;the epic game
2887 Elite&lt;/a&gt; on my PC. I spent many months trading and fighting in
2888 space, and reached the &#39;elite&#39; fighting status before I moved on. The
2889 original Elite game was available on Commodore 64 and the IBM PC
2890 edition I played had a 64 KB executable. I am still impressed today
2891 that the authors managed to squeeze both a 3D engine and details about
2892 more than 2000 planet systems across 7 galaxies into a binary so
2893 small.&lt;/p&gt;
2894
2895 &lt;p&gt;I have known about &lt;a href=&quot;http://www.oolite.org/&quot;&gt;the free
2896 software game Oolite inspired by Elite&lt;/a&gt; for a while, but did not
2897 really have time to test it properly until a few days ago. It was
2898 great to discover that my old knowledge about trading routes were
2899 still valid. But my fighting and flying abilities were gone, so I had
2900 to retrain to be able to dock on a space station. And I am still not
2901 able to make much resistance when I am attacked by pirates, so I
2902 bougth and mounted the most powerful laser in the rear to be able to
2903 put up at least some resistance while fleeing for my life. :)&lt;/p&gt;
2904
2905 &lt;p&gt;When playing Elite in the late eighties, I had to discover
2906 everything on my own, and I had long lists of prices seen on different
2907 planets to be able to decide where to trade what. This time I had the
2908 advantages of the
2909 &lt;a href=&quot;http://wiki.alioth.net/index.php/Main_Page&quot;&gt;Elite wiki&lt;/a&gt;,
2910 where information about each planet is easily available with common
2911 price ranges and suggested trading routes. This improved my ability
2912 to earn money and I have been able to earn enough to buy a lot of
2913 useful equipent in a few days. I believe I originally played for
2914 months before I could get a docking computer, while now I could get it
2915 after less then a week.&lt;/p&gt;
2916
2917 &lt;p&gt;If you like science fiction and dreamed of a life as a vagabond in
2918 space, you should try out Oolite. It is available for Linux, MacOSX
2919 and Windows, and is included in Debian and derivatives since 2011.&lt;/p&gt;
2920
2921 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
2922 activities, please send Bitcoin donations to my address
2923 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
2924 </description>
2925 </item>
2926
2927 <item>
2928 <title>Quicker Debian installations using eatmydata</title>
2929 <link>https://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html</link>
2930 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html</guid>
2931 <pubDate>Fri, 25 Nov 2016 14:50:00 +0100</pubDate>
2932 <description>&lt;p&gt;Two years ago, I did some experiments with eatmydata and the Debian
2933 installation system, observing how using
2934 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html&quot;&gt;eatmydata
2935 could speed up the installation&lt;/a&gt; quite a bit. My testing measured
2936 speedup around 20-40 percent for Debian Edu, where we install around
2937 1000 packages from within the installer. The eatmydata package
2938 provide a way to disable/delay file system flushing. This is a bit
2939 risky in the general case, as files that should be stored on disk will
2940 stay only in memory a bit longer than expected, causing problems if a
2941 machine crashes at an inconvenient time. But for an installation, if
2942 the machine crashes during installation the process is normally
2943 restarted, and avoiding disk operations as much as possible to speed
2944 up the process make perfect sense.
2945
2946 &lt;p&gt;I added code in the Debian Edu specific installation code to enable
2947 &lt;a href=&quot;https://tracker.debian.org/pkg/libeatmydata&quot;&gt;eatmydata&lt;/a&gt;,
2948 but did not have time to push it any further. But a few months ago I
2949 picked it up again and worked with the libeatmydata package maintainer
2950 Mattia Rizzolo to make it easier for everyone to get this installation
2951 speedup in Debian. Thanks to our cooperation There is now an
2952 eatmydata-udeb package in Debian testing and unstable, and simply
2953 enabling/installing it in debian-installer (d-i) is enough to get the
2954 quicker installations. It can be enabled using preseeding. The
2955 following untested kernel argument should do the trick:&lt;/p&gt;
2956
2957 &lt;blockquote&gt;&lt;pre&gt;
2958 preseed/early_command=&quot;anna-install eatmydata-udeb&quot;
2959 &lt;/pre&gt;&lt;/blockquote&gt;
2960
2961 &lt;p&gt;This should ask d-i to install the package inside the d-i
2962 environment early in the installation sequence. Having it installed
2963 in d-i in turn will make sure the relevant scripts are called just
2964 after debootstrap filled /target/ with the freshly installed Debian
2965 system to configure apt to run dpkg with eatmydata. This is enough to
2966 speed up the installation process. There is a proposal to
2967 &lt;a href=&quot;https://bugs.debian.org/841153&quot;&gt;extend the idea a bit further
2968 by using /etc/ld.so.preload instead of apt.conf&lt;/a&gt;, but I have not
2969 tested its impact.&lt;/p&gt;
2970
2971 </description>
2972 </item>
2973
2974 <item>
2975 <title>Oversette bokmål til nynorsk, enklere enn du tror takket være Apertium</title>
2976 <link>https://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html</link>
2977 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html</guid>
2978 <pubDate>Thu, 24 Nov 2016 10:50:00 +0100</pubDate>
2979 <description>&lt;p&gt;I Norge er det mange som trenger å skrive både bokmål og nynorsk.
2980 Eksamensoppgaver, offentlige brev og nyheter er eksempler på tekster
2981 der det er krav om skriftspråk. I tillegg til alle skoleoppgavene som
2982 elever over det ganske land skal levere inn hvert år. Det mange ikke
2983 vet er at selv om de kommersielle alternativene
2984 &lt;a href=&quot;https://translate.google.com/&quot;&gt;Google Translate&lt;/a&gt; og
2985 &lt;a href=&quot;https://www.bing.com/translator/&quot;&gt;Bing Translator&lt;/a&gt; ikke kan
2986 bidra med å oversette mellom bokmål og nynorsk, så finnes det et
2987 utmerket fri programvarealternativ som kan. Oversetterverktøyet
2988 Apertium har støtte for en rekke språkkombinasjoner, og takket være
2989 den utrettelige innsatsen til blant annet Kevin Brubeck Unhammer, kan
2990 en bruke webtjenesten til å fylle inn en tekst på bokmål eller
2991 nynorsk, og få den automatoversatt til det andre skriftspråket.
2992 Resultatet er ikke perfekt, men et svært godt utgangspunkt. Av og til
2993 er resultatet så bra at det kan benyttes uten endringer. Jeg vet
2994 f.eks. at store deler av Joomla ble oversatt til nynorsk ved hjelp
2995 Apertium. Høres det ut som noe du kan ha bruk for? Besøk i så fall
2996 &lt;a href=&quot;https://www.apertium.org/&quot;&gt;Apertium.org&lt;/a&gt; og fyll inn
2997 teksten din i webskjemaet der.
2998
2999 &lt;p&gt;Hvis du trenger maskinell tilgang til den bakenforliggende
3000 teknologien kan du enten installere pakken
3001 &lt;a href=&quot;https://tracker.debian.org/apertium-nno-nob&quot;&gt;apertium-nno-nob&lt;/a&gt;
3002 på en Debian-maskin eller bruke web-API-et tilgjengelig fra
3003 api.apertium.org. Se
3004 &lt;a href=&quot;http://wiki.apertium.org/wiki/Apertium-apy&quot;&gt;API-dokumentasjonen&lt;/a&gt;
3005 for detaljer om web-API-et. Her kan du se hvordan resultatet blir for
3006 denne teksten som ble skrevet på bokmål over maskinoversatt til
3007 nynorsk.&lt;/p&gt;
3008
3009 &lt;hr/&gt;
3010
3011 &lt;p&gt;I Noreg er det mange som treng å skriva både bokmål og nynorsk.
3012 Eksamensoppgåver, offentlege brev og nyhende er døme på tekster der
3013 det er krav om skriftspråk. I tillegg til alle skuleoppgåvene som
3014 elevar over det ganske land skal levera inn kvart år. Det mange ikkje
3015 veit er at sjølv om dei kommersielle alternativa
3016 &lt;a href=&quot;https://translate.google.com/&quot;&gt;Google *Translate&lt;/a&gt; og
3017 &lt;a href=&quot;https://www.bing.com/translator/&quot;&gt;Bing *Translator&lt;/a&gt; ikkje
3018 kan bidra med å omsetja mellom bokmål og nynorsk, så finst det eit
3019 utmerka fri programvarealternativ som kan. Omsetjarverktøyet
3020 *Apertium har støtte for ei rekkje språkkombinasjonar, og takka vera
3021 den utrøyttelege innsatsen til blant anna Kevin Brubeck Unhammer, kan
3022 ein bruka *webtjenesten til å fylla inn ei tekst på bokmål eller
3023 nynorsk, og få den *automatoversatt til det andre skriftspråket.
3024 Resultatet er ikkje perfekt, men eit svært godt utgangspunkt. Av og
3025 til er resultatet så bra at det kan nyttast utan endringar. Eg veit
3026 t.d. at store delar av *Joomla vart omsett til nynorsk ved hjelp
3027 *Apertium. Høyrast det ut som noko du kan ha bruk for? Besøk i så
3028 fall &lt;a href=&quot;https://www.apertium.org/&quot;&gt;*Apertium.org&lt;/a&gt; og fyll inn
3029 teksta di i *webskjemaet der.
3030
3031 &lt;p&gt;Viss du treng *maskinell tilgjenge til den *bakenforliggende
3032 teknologien kan du anten installera pakken
3033 &lt;a href=&quot;https://tracker.debian.org/apertium-nno-nob&quot;&gt;*apertium-*nno-*nob&lt;/a&gt;
3034 på ein *Debian-maskin eller bruka *web-*API-eit tilgjengeleg frå
3035 *api.*apertium.org. Sjå
3036 &lt;a href=&quot;http://wiki.apertium.org/wiki/Apertium-apy&quot;&gt;*API-dokumentasjonen&lt;/a&gt;
3037 for detaljar om *web-*API-eit. Her kan du sjå korleis resultatet vert
3038 for denne teksta som vart skreva på bokmål over *maskinoversatt til
3039 nynorsk.&lt;/p&gt;
3040 </description>
3041 </item>
3042
3043 <item>
3044 <title>Coz profiler for multi-threaded software is now in Debian</title>
3045 <link>https://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html</link>
3046 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html</guid>
3047 <pubDate>Sun, 13 Nov 2016 12:30:00 +0100</pubDate>
3048 <description>&lt;p&gt;&lt;a href=&quot;http://coz-profiler.org/&quot;&gt;The Coz profiler&lt;/a&gt;, a nice
3049 profiler able to run benchmarking experiments on the instrumented
3050 multi-threaded program, finally
3051 &lt;a href=&quot;https://tracker.debian.org/pkg/coz-profiler&quot;&gt;made it into
3052 Debian unstable yesterday&lt;/A&gt;. Lluís Vilanova and I have spent many
3053 months since
3054 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html&quot;&gt;I
3055 blogged about the coz tool&lt;/a&gt; in August working with upstream to make
3056 it suitable for Debian. There are still issues with clang
3057 compatibility, inline assembly only working x86 and minimized
3058 JavaScript libraries.&lt;/p&gt;
3059
3060 &lt;p&gt;To test it, install &#39;coz-profiler&#39; using apt and run it like this:&lt;/p&gt;
3061
3062 &lt;p&gt;&lt;blockquote&gt;
3063 &lt;tt&gt;coz run --- /path/to/binary-with-debug-info&lt;/tt&gt;
3064 &lt;/blockquote&gt;&lt;/p&gt;
3065
3066 &lt;p&gt;This will produce a profile.coz file in the current working
3067 directory with the profiling information. This is then given to a
3068 JavaScript application provided in the package and available from
3069 &lt;a href=&quot;http://plasma-umass.github.io/coz/&quot;&gt;a project web page&lt;/a&gt;.
3070 To start the local copy, invoke it in a browser like this:&lt;/p&gt;
3071
3072 &lt;p&gt;&lt;blockquote&gt;
3073 &lt;tt&gt;sensible-browser /usr/share/coz-profiler/viewer/index.htm&lt;/tt&gt;
3074 &lt;/blockquote&gt;&lt;/p&gt;
3075
3076 &lt;p&gt;See the project home page and the
3077 &lt;a href=&quot;https://www.usenix.org/publications/login/summer2016/curtsinger&quot;&gt;USENIX
3078 ;login: article on Coz&lt;/a&gt; for more information on how it is
3079 working.&lt;/p&gt;
3080 </description>
3081 </item>
3082
3083 <item>
3084 <title>My own self balancing Lego Segway</title>
3085 <link>https://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html</link>
3086 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html</guid>
3087 <pubDate>Fri, 4 Nov 2016 10:15:00 +0100</pubDate>
3088 <description>&lt;p&gt;A while back I received a Gyro sensor for the NXT
3089 &lt;a href=&quot;mindstorms.lego.com&quot;&gt;Mindstorms&lt;/a&gt; controller as a birthday
3090 present. It had been on my wishlist for a while, because I wanted to
3091 build a Segway like balancing lego robot. I had already built
3092 &lt;a href=&quot;http://www.nxtprograms.com/NXT2/segway/&quot;&gt;a simple balancing
3093 robot&lt;/a&gt; with the kids, using the light/color sensor included in the
3094 NXT kit as the balance sensor, but it was not working very well. It
3095 could balance for a while, but was very sensitive to the light
3096 condition in the room and the reflective properties of the surface and
3097 would fall over after a short while. I wanted something more robust,
3098 and had
3099 &lt;a href=&quot;https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&amp;key=NGY1044&quot;&gt;the
3100 gyro sensor from HiTechnic&lt;/a&gt; I believed would solve it on my
3101 wishlist for some years before it suddenly showed up as a gift from my
3102 loved ones. :)&lt;/p&gt;
3103
3104 &lt;p&gt;Unfortunately I have not had time to sit down and play with it
3105 since then. But that changed some days ago, when I was searching for
3106 lego segway information and came across a recipe from HiTechnic for
3107 building
3108 &lt;a href=&quot;http://www.hitechnic.com/blog/gyro-sensor/htway/&quot;&gt;the
3109 HTWay&lt;/a&gt;, a segway like balancing robot. Build instructions and
3110 &lt;a href=&quot;https://www.hitechnic.com/upload/786-HTWayC.nxc&quot;&gt;source
3111 code&lt;/a&gt; was included, so it was just a question of putting it all
3112 together. And thanks to the great work of many Debian developers, the
3113 compiler needed to build the source for the NXT is already included in
3114 Debian, so I was read to go in less than an hour. The resulting robot
3115 do not look very impressive in its simplicity:&lt;/p&gt;
3116
3117 &lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg&quot;&gt;&lt;/p&gt;
3118
3119 &lt;p&gt;Because I lack the infrared sensor used to control the robot in the
3120 design from HiTechnic, I had to comment out the last task
3121 (taskControl). I simply placed /* and */ around it get the program
3122 working without that sensor present. Now it balances just fine until
3123 the battery status run low:&lt;/p&gt;
3124
3125 &lt;p align=&quot;center&quot;&gt;&lt;video width=&quot;70%&quot; controls=&quot;true&quot;&gt;
3126 &lt;source src=&quot;http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-balancing.ogv&quot; type=&quot;video/ogg&quot;&gt;
3127 &lt;/video&gt;&lt;/p&gt;
3128
3129 &lt;p&gt;Now we would like to teach it how to follow a line and take remote
3130 control instructions using the included Bluetooth receiver in the NXT.&lt;/p&gt;
3131
3132 &lt;p&gt;If you, like me, love LEGO and want to make sure we find the tools
3133 they need to work with LEGO in Debian and all our derivative
3134 distributions like Ubuntu, check out
3135 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;the LEGO designers
3136 project page&lt;/a&gt; and join the Debian LEGO team. Personally I own a
3137 RCX and NXT controller (no EV3), and would like to make sure the
3138 Debian tools needed to program the systems I own work as they
3139 should.&lt;/p&gt;
3140 </description>
3141 </item>
3142
3143 <item>
3144 <title>Experience and updated recipe for using the Signal app without a mobile phone</title>
3145 <link>https://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html</link>
3146 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html</guid>
3147 <pubDate>Mon, 10 Oct 2016 11:30:00 +0200</pubDate>
3148 <description>&lt;p&gt;In July
3149 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html&quot;&gt;I
3150 wrote how to get the Signal Chrome/Chromium app working&lt;/a&gt; without
3151 the ability to receive SMS messages (aka without a cell phone). It is
3152 time to share some experiences and provide an updated setup.&lt;/p&gt;
3153
3154 &lt;p&gt;The Signal app have worked fine for several months now, and I use
3155 it regularly to chat with my loved ones. I had a major snag at the
3156 end of my summer vacation, when the the app completely forgot my
3157 setup, identity and keys. The reason behind this major mess was
3158 running out of disk space. To avoid that ever happening again I have
3159 started storing everything in &lt;tt&gt;userdata/&lt;/tt&gt; in git, to be able to
3160 roll back to an earlier version if the files are wiped by mistake. I
3161 had to use it once after introducing the git backup. When rolling
3162 back to an earlier version, one need to use the &#39;reset session&#39; option
3163 in Signal to get going, and notify the people you talk with about the
3164 problem. I assume there is some sequence number tracking in the
3165 protocol to detect rollback attacks. The git repository is rather big
3166 (674 MiB so far), but I have not tried to figure out if some of the
3167 content can be added to a .gitignore file due to lack of spare
3168 time.&lt;/p&gt;
3169
3170 &lt;p&gt;I&#39;ve also hit the 90 days timeout blocking, and noticed that this
3171 make it impossible to send messages using Signal. I could still
3172 receive them, but had to patch the code with a new timestamp to send.
3173 I believe the timeout is added by the developers to force people to
3174 upgrade to the latest version of the app, even when there is no
3175 protocol changes, to reduce the version skew among the user base and
3176 thus try to keep the number of support requests down.&lt;/p&gt;
3177
3178 &lt;p&gt;Since my original recipe, the Signal source code changed slightly,
3179 making the old patch fail to apply cleanly. Below is an updated
3180 patch, including the shell wrapper I use to start Signal. The
3181 original version required a new user to locate the JavaScript console
3182 and call a function from there. I got help from a friend with more
3183 JavaScript knowledge than me to modify the code to provide a GUI
3184 button instead. This mean that to get started you just need to run
3185 the wrapper and click the &#39;Register without mobile phone&#39; to get going
3186 now. I&#39;ve also modified the timeout code to always set it to 90 days
3187 in the future, to avoid having to patch the code regularly.&lt;/p&gt;
3188
3189 &lt;p&gt;So, the updated recipe for Debian Jessie:&lt;/p&gt;
3190
3191 &lt;ol&gt;
3192
3193 &lt;li&gt;First, install required packages to get the source code and the
3194 browser you need. Signal only work with Chrome/Chromium, as far as I
3195 know, so you need to install it.
3196
3197 &lt;pre&gt;
3198 apt install git tor chromium
3199 git clone https://github.com/WhisperSystems/Signal-Desktop.git
3200 &lt;/pre&gt;&lt;/li&gt;
3201
3202 &lt;li&gt;Modify the source code using command listed in the the patch
3203 block below.&lt;/li&gt;
3204
3205 &lt;li&gt;Start Signal using the run-signal-app wrapper (for example using
3206 &lt;tt&gt;`pwd`/run-signal-app&lt;/tt&gt;).
3207
3208 &lt;li&gt;Click on the &#39;Register without mobile phone&#39;, will in a phone
3209 number you can receive calls to the next minute, receive the
3210 verification code and enter it into the form field and press
3211 &#39;Register&#39;. Note, the phone number you use will be user Signal
3212 username, ie the way others can find you on Signal.&lt;/li&gt;
3213
3214 &lt;li&gt;You can now use Signal to contact others. Note, new contacts do
3215 not show up in the contact list until you restart Signal, and there is
3216 no way to assign names to Contacts. There is also no way to create or
3217 update chat groups. I suspect this is because the web app do not have
3218 a associated contact database.&lt;/li&gt;
3219
3220 &lt;/ol&gt;
3221
3222 &lt;p&gt;I am still a bit uneasy about using Signal, because of the way its
3223 main author moxie0 reject federation and accept dependencies to major
3224 corporations like Google (part of the code is fetched from Google) and
3225 Amazon (the central coordination point is owned by Amazon). See for
3226 example
3227 &lt;a href=&quot;https://github.com/LibreSignal/LibreSignal/issues/37&quot;&gt;the
3228 LibreSignal issue tracker&lt;/a&gt; for a thread documenting the authors
3229 view on these issues. But the network effect is strong in this case,
3230 and several of the people I want to communicate with already use
3231 Signal. Perhaps we can all move to &lt;a href=&quot;https://ring.cx/&quot;&gt;Ring&lt;/a&gt;
3232 once it &lt;a href=&quot;https://bugs.debian.org/830265&quot;&gt;work on my
3233 laptop&lt;/a&gt;? It already work on Windows and Android, and is included
3234 in &lt;a href=&quot;https://tracker.debian.org/pkg/ring&quot;&gt;Debian&lt;/a&gt; and
3235 &lt;a href=&quot;https://launchpad.net/ubuntu/+source/ring&quot;&gt;Ubuntu&lt;/a&gt;, but not
3236 working on Debian Stable.&lt;/p&gt;
3237
3238 &lt;p&gt;Anyway, this is the patch I apply to the Signal code to get it
3239 working. It switch to the production servers, disable to timeout,
3240 make registration easier and add the shell wrapper:&lt;/p&gt;
3241
3242 &lt;pre&gt;
3243 cd Signal-Desktop; cat &amp;lt;&amp;lt;EOF | patch -p1
3244 diff --git a/js/background.js b/js/background.js
3245 index 24b4c1d..579345f 100644
3246 --- a/js/background.js
3247 +++ b/js/background.js
3248 @@ -33,9 +33,9 @@
3249 });
3250 });
3251
3252 - var SERVER_URL = &#39;https://textsecure-service-staging.whispersystems.org&#39;;
3253 + var SERVER_URL = &#39;https://textsecure-service-ca.whispersystems.org&#39;;
3254 var SERVER_PORTS = [80, 4433, 8443];
3255 - var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com&#39;;
3256 + var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments.s3.amazonaws.com&#39;;
3257 var messageReceiver;
3258 window.getSocketStatus = function() {
3259 if (messageReceiver) {
3260 diff --git a/js/expire.js b/js/expire.js
3261 index 639aeae..beb91c3 100644
3262 --- a/js/expire.js
3263 +++ b/js/expire.js
3264 @@ -1,6 +1,6 @@
3265 ;(function() {
3266 &#39;use strict&#39;;
3267 - var BUILD_EXPIRATION = 0;
3268 + var BUILD_EXPIRATION = Date.now() + (90 * 24 * 60 * 60 * 1000);
3269
3270 window.extension = window.extension || {};
3271
3272 diff --git a/js/views/install_view.js b/js/views/install_view.js
3273 index 7816f4f..1d6233b 100644
3274 --- a/js/views/install_view.js
3275 +++ b/js/views/install_view.js
3276 @@ -38,7 +38,8 @@
3277 return {
3278 &#39;click .step1&#39;: this.selectStep.bind(this, 1),
3279 &#39;click .step2&#39;: this.selectStep.bind(this, 2),
3280 - &#39;click .step3&#39;: this.selectStep.bind(this, 3)
3281 + &#39;click .step3&#39;: this.selectStep.bind(this, 3),
3282 + &#39;click .callreg&#39;: function() { extension.install(&#39;standalone&#39;) },
3283 };
3284 },
3285 clearQR: function() {
3286 diff --git a/options.html b/options.html
3287 index dc0f28e..8d709f6 100644
3288 --- a/options.html
3289 +++ b/options.html
3290 @@ -14,7 +14,10 @@
3291 &amp;lt;div class=&#39;nav&#39;&gt;
3292 &amp;lt;h1&gt;{{ installWelcome }}&amp;lt;/h1&gt;
3293 &amp;lt;p&gt;{{ installTagline }}&amp;lt;/p&gt;
3294 - &amp;lt;div&gt; &amp;lt;a class=&#39;button step2&#39;&gt;{{ installGetStartedButton }}&amp;lt;/a&gt; &amp;lt;/div&gt;
3295 + &amp;lt;div&gt; &amp;lt;a class=&#39;button step2&#39;&gt;{{ installGetStartedButton }}&amp;lt;/a&gt;
3296 + &amp;lt;br&gt; &amp;lt;a class=&quot;button callreg&quot;&gt;Register without mobile phone&amp;lt;/a&gt;
3297 +
3298 + &amp;lt;/div&gt;
3299 &amp;lt;span class=&#39;dot step1 selected&#39;&gt;&amp;lt;/span&gt;
3300 &amp;lt;span class=&#39;dot step2&#39;&gt;&amp;lt;/span&gt;
3301 &amp;lt;span class=&#39;dot step3&#39;&gt;&amp;lt;/span&gt;
3302 --- /dev/null 2016-10-07 09:55:13.730181472 +0200
3303 +++ b/run-signal-app 2016-10-10 08:54:09.434172391 +0200
3304 @@ -0,0 +1,12 @@
3305 +#!/bin/sh
3306 +set -e
3307 +cd $(dirname $0)
3308 +mkdir -p userdata
3309 +userdata=&quot;`pwd`/userdata&quot;
3310 +if [ -d &quot;$userdata&quot; ] &amp;&amp; [ ! -d &quot;$userdata/.git&quot; ] ; then
3311 + (cd $userdata &amp;&amp; git init)
3312 +fi
3313 +(cd $userdata &amp;&amp; git add . &amp;&amp; git commit -m &quot;Current status.&quot; || true)
3314 +exec chromium \
3315 + --proxy-server=&quot;socks://localhost:9050&quot; \
3316 + --user-data-dir=$userdata --load-and-launch-app=`pwd`
3317 EOF
3318 chmod a+rx run-signal-app
3319 &lt;/pre&gt;
3320
3321 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
3322 activities, please send Bitcoin donations to my address
3323 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
3324 </description>
3325 </item>
3326
3327 <item>
3328 <title>Isenkram, Appstream and udev make life as a LEGO builder easier</title>
3329 <link>https://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</link>
3330 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</guid>
3331 <pubDate>Fri, 7 Oct 2016 09:50:00 +0200</pubDate>
3332 <description>&lt;p&gt;&lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;The Isenkram
3333 system&lt;/a&gt; provide a practical and easy way to figure out which
3334 packages support the hardware in a given machine. The command line
3335 tool &lt;tt&gt;isenkram-lookup&lt;/tt&gt; and the tasksel options provide a
3336 convenient way to list and install packages relevant for the current
3337 hardware during system installation, both user space packages and
3338 firmware packages. The GUI background daemon on the other hand provide
3339 a pop-up proposing to install packages when a new dongle is inserted
3340 while using the computer. For example, if you plug in a smart card
3341 reader, the system will ask if you want to install &lt;tt&gt;pcscd&lt;/tt&gt; if
3342 that package isn&#39;t already installed, and if you plug in a USB video
3343 camera the system will ask if you want to install &lt;tt&gt;cheese&lt;/tt&gt; if
3344 cheese is currently missing. This already work just fine.&lt;/p&gt;
3345
3346 &lt;p&gt;But Isenkram depend on a database mapping from hardware IDs to
3347 package names. When I started no such database existed in Debian, so
3348 I made my own data set and included it with the isenkram package and
3349 made isenkram fetch the latest version of this database from git using
3350 http. This way the isenkram users would get updated package proposals
3351 as soon as I learned more about hardware related packages.&lt;/p&gt;
3352
3353 &lt;p&gt;The hardware is identified using modalias strings. The modalias
3354 design is from the Linux kernel where most hardware descriptors are
3355 made available as a strings that can be matched using filename style
3356 globbing. It handle USB, PCI, DMI and a lot of other hardware related
3357 identifiers.&lt;/p&gt;
3358
3359 &lt;p&gt;The downside to the Isenkram specific database is that there is no
3360 information about relevant distribution / Debian version, making
3361 isenkram propose obsolete packages too. But along came AppStream, a
3362 cross distribution mechanism to store and collect metadata about
3363 software packages. When I heard about the proposal, I contacted the
3364 people involved and suggested to add a hardware matching rule using
3365 modalias strings in the specification, to be able to use AppStream for
3366 mapping hardware to packages. This idea was accepted and AppStream is
3367 now a great way for a package to announce the hardware it support in a
3368 distribution neutral way. I wrote
3369 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html&quot;&gt;a
3370 recipe on how to add such meta-information&lt;/a&gt; in a blog post last
3371 December. If you have a hardware related package in Debian, please
3372 announce the relevant hardware IDs using AppStream.&lt;/p&gt;
3373
3374 &lt;p&gt;In Debian, almost all packages that can talk to a LEGO Mindestorms
3375 RCX or NXT unit, announce this support using AppStream. The effect is
3376 that when you insert such LEGO robot controller into your Debian
3377 machine, Isenkram will propose to install the packages needed to get
3378 it working. The intention is that this should allow the local user to
3379 start programming his robot controller right away without having to
3380 guess what packages to use or which permissions to fix.&lt;/p&gt;
3381
3382 &lt;p&gt;But when I sat down with my son the other day to program our NXT
3383 unit using his Debian Stretch computer, I discovered something
3384 annoying. The local console user (ie my son) did not get access to
3385 the USB device for programming the unit. This used to work, but no
3386 longer in Jessie and Stretch. After some investigation and asking
3387 around on #debian-devel, I discovered that this was because udev had
3388 changed the mechanism used to grant access to local devices. The
3389 ConsoleKit mechanism from &lt;tt&gt;/lib/udev/rules.d/70-udev-acl.rules&lt;/tt&gt;
3390 no longer applied, because LDAP users no longer was added to the
3391 plugdev group during login. Michael Biebl told me that this method
3392 was obsolete and the new method used ACLs instead. This was good
3393 news, as the plugdev mechanism is a mess when using a remote user
3394 directory like LDAP. Using ACLs would make sure a user lost device
3395 access when she logged out, even if the user left behind a background
3396 process which would retain the plugdev membership with the ConsoleKit
3397 setup. Armed with this knowledge I moved on to fix the access problem
3398 for the LEGO Mindstorms related packages.&lt;/p&gt;
3399
3400 &lt;p&gt;The new system uses a udev tag, &#39;uaccess&#39;. It can either be
3401 applied directly for a device, or is applied in
3402 /lib/udev/rules.d/70-uaccess.rules for classes of devices. As the
3403 LEGO Mindstorms udev rules did not have a class, I decided to add the
3404 tag directly in the udev rules files included in the packages. Here
3405 is one example. For the nqc C compiler for the RCX, the
3406 &lt;tt&gt;/lib/udev/rules.d/60-nqc.rules&lt;/tt&gt; file now look like this:
3407
3408 &lt;p&gt;&lt;pre&gt;
3409 SUBSYSTEM==&quot;usb&quot;, ACTION==&quot;add&quot;, ATTR{idVendor}==&quot;0694&quot;, ATTR{idProduct}==&quot;0001&quot;, \
3410 SYMLINK+=&quot;rcx-%k&quot;, TAG+=&quot;uaccess&quot;
3411 &lt;/pre&gt;&lt;/p&gt;
3412
3413 &lt;p&gt;The key part is the &#39;TAG+=&quot;uaccess&quot;&#39; at the end. I suspect all
3414 packages using plugdev in their /lib/udev/rules.d/ files should be
3415 changed to use this tag (either directly or indirectly via
3416 &lt;tt&gt;70-uaccess.rules&lt;/tt&gt;). Perhaps a lintian check should be created
3417 to detect this?&lt;/p&gt;
3418
3419 &lt;p&gt;I&#39;ve been unable to find good documentation on the uaccess feature.
3420 It is unclear to me if the uaccess tag is an internal implementation
3421 detail like the udev-acl tag used by
3422 &lt;tt&gt;/lib/udev/rules.d/70-udev-acl.rules&lt;/tt&gt;. If it is, I guess the
3423 indirect method is the preferred way. Michael
3424 &lt;a href=&quot;https://github.com/systemd/systemd/issues/4288&quot;&gt;asked for more
3425 documentation from the systemd project&lt;/a&gt; and I hope it will make
3426 this clearer. For now I use the generic classes when they exist and
3427 is already handled by &lt;tt&gt;70-uaccess.rules&lt;/tt&gt;, and add the tag
3428 directly if no such class exist.&lt;/p&gt;
3429
3430 &lt;p&gt;To learn more about the isenkram system, please check out
3431 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;my
3432 blog posts tagged isenkram&lt;/a&gt;.&lt;/p&gt;
3433
3434 &lt;p&gt;To help out making life for LEGO constructors in Debian easier,
3435 please join us on our IRC channel
3436 &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;#debian-lego&lt;/a&gt; and join
3437 the &lt;a href=&quot;https://alioth.debian.org/projects/debian-lego/&quot;&gt;Debian
3438 LEGO team&lt;/a&gt; in the Alioth project we created yesterday. A mailing
3439 list is not yet created, but we are working on it. :)&lt;/p&gt;
3440
3441 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
3442 activities, please send Bitcoin donations to my address
3443 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
3444 </description>
3445 </item>
3446
3447 <item>
3448 <title>First draft Norwegian Bokmål edition of The Debian Administrator&#39;s Handbook now public</title>
3449 <link>https://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html</link>
3450 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html</guid>
3451 <pubDate>Tue, 30 Aug 2016 10:10:00 +0200</pubDate>
3452 <description>&lt;p&gt;In April we
3453 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html&quot;&gt;started
3454 to work&lt;/a&gt; on a Norwegian Bokmål edition of the &quot;open access&quot; book on
3455 how to set up and administrate a Debian system. Today I am happy to
3456 report that the first draft is now publicly available. You can find
3457 it on &lt;a href=&quot;https://debian-handbook.info/get/&quot;&gt;get the Debian
3458 Administrator&#39;s Handbook page&lt;/a&gt; (under Other languages). The first
3459 eight chapters have a first draft translation, and we are working on
3460 proofreading the content. If you want to help out, please start
3461 contributing using
3462 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
3463 hosted weblate project page&lt;/a&gt;, and get in touch using
3464 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
3465 translators mailing list&lt;/a&gt;. Please also check out
3466 &lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
3467 contributors&lt;/a&gt;. A good way to contribute is to proofread the text
3468 and update weblate if you find errors.&lt;/p&gt;
3469
3470 &lt;p&gt;Our goal is still to make the Norwegian book available on paper as well as
3471 electronic form.&lt;/p&gt;
3472 </description>
3473 </item>
3474
3475 <item>
3476 <title>Coz can help you find bottlenecks in multi-threaded software - nice free software</title>
3477 <link>https://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html</link>
3478 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html</guid>
3479 <pubDate>Thu, 11 Aug 2016 12:00:00 +0200</pubDate>
3480 <description>&lt;p&gt;This summer, I read a great article
3481 &quot;&lt;a href=&quot;https://www.usenix.org/publications/login/summer2016/curtsinger&quot;&gt;coz:
3482 This Is the Profiler You&#39;re Looking For&lt;/a&gt;&quot; in USENIX ;login: about
3483 how to profile multi-threaded programs. It presented a system for
3484 profiling software by running experiences in the running program,
3485 testing how run time performance is affected by &quot;speeding up&quot; parts of
3486 the code to various degrees compared to a normal run. It does this by
3487 slowing down parallel threads while the &quot;faster up&quot; code is running
3488 and measure how this affect processing time. The processing time is
3489 measured using probes inserted into the code, either using progress
3490 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
3491 can also measure unmodified code by measuring complete the program
3492 runtime and running the program several times instead.&lt;/p&gt;
3493
3494 &lt;p&gt;The project and presentation was so inspiring that I would like to
3495 get the system into Debian. I
3496 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830708&quot;&gt;created
3497 a WNPP request for it&lt;/a&gt; and contacted upstream to try to make the
3498 system ready for Debian by sending patches. The build process need to
3499 be changed a bit to avoid running &#39;git clone&#39; to get dependencies, and
3500 to include the JavaScript web page used to visualize the collected
3501 profiling information included in the source package.
3502 But I expect that should work out fairly soon.&lt;/p&gt;
3503
3504 &lt;p&gt;The way the system work is fairly simple. To run an coz experiment
3505 on a binary with debug symbols available, start the program like this:
3506
3507 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
3508 coz run --- program-to-run
3509 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
3510
3511 &lt;p&gt;This will create a text file profile.coz with the instrumentation
3512 information. To show what part of the code affect the performance
3513 most, use a web browser and either point it to
3514 &lt;a href=&quot;http://plasma-umass.github.io/coz/&quot;&gt;http://plasma-umass.github.io/coz/&lt;/a&gt;
3515 or use the copy from git (in the gh-pages branch). Check out this web
3516 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
3517 profiling more useful you include &amp;lt;coz.h&amp;gt; and insert the
3518 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
3519 code, rebuild and run the profiler. This allow coz to do more
3520 targeted experiments.&lt;/p&gt;
3521
3522 &lt;p&gt;A video published by ACM
3523 &lt;a href=&quot;https://www.youtube.com/watch?v=jE0V-p1odPg&quot;&gt;presenting the
3524 Coz profiler&lt;/a&gt; is available from Youtube. There is also a paper
3525 from the 25th Symposium on Operating Systems Principles available
3526 titled
3527 &lt;a href=&quot;https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger&quot;&gt;Coz:
3528 finding code that counts with causal profiling&lt;/a&gt;.&lt;/p&gt;
3529
3530 &lt;p&gt;&lt;a href=&quot;https://github.com/plasma-umass/coz&quot;&gt;The source code&lt;/a&gt;
3531 for Coz is available from github. It will only build with clang
3532 because it uses a
3533 &lt;a href=&quot;https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55606&quot;&gt;C++
3534 feature missing in GCC&lt;/a&gt;, but I&#39;ve submitted
3535 &lt;a href=&quot;https://github.com/plasma-umass/coz/pull/67&quot;&gt;a patch to solve
3536 it&lt;/a&gt; and hope it will be included in the upstream source soon.&lt;/p&gt;
3537
3538 &lt;p&gt;Please get in touch if you, like me, would like to see this piece
3539 of software in Debian. I would very much like some help with the
3540 packaging effort, as I lack the in depth knowledge on how to package
3541 C++ libraries.&lt;/p&gt;
3542 </description>
3543 </item>
3544
3545 <item>
3546 <title>Unlocking HTC Desire HD on Linux using unruu and fastboot</title>
3547 <link>https://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html</link>
3548 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html</guid>
3549 <pubDate>Thu, 7 Jul 2016 11:30:00 +0200</pubDate>
3550 <description>&lt;p&gt;Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
3551 to be a slight challenge. Here is the recipe if I ever need to do it
3552 again. It all started by me wanting to try the recipe to set up
3553 &lt;a href=&quot;https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy&quot;&gt;an
3554 hardened Android installation&lt;/a&gt; from the Tor project blog on a
3555 device I had access to. It is a old mobile phone with a broken
3556 microphone The initial idea had been to just
3557 &lt;a href=&quot;http://wiki.cyanogenmod.org/w/Install_CM_for_ace&quot;&gt;install
3558 CyanogenMod on it&lt;/a&gt;, but did not quite find time to start on it
3559 until a few days ago.&lt;/p&gt;
3560
3561 &lt;p&gt;The unlock process is supposed to be simple: (1) Boot into the boot
3562 loader (press volume down and power at the same time), (2) select
3563 &#39;fastboot&#39; before (3) connecting the device via USB to a Linux
3564 machine, (4) request the device identifier token by running &#39;fastboot
3565 oem get_identifier_token&#39;, (5) request the device unlocking key using
3566 the &lt;a href=&quot;http://www.htcdev.com/bootloader/&quot;&gt;HTC developer web
3567 site&lt;/a&gt; and unlock the phone using the key file emailed to you.&lt;/p&gt;
3568
3569 &lt;p&gt;Unfortunately, this only work fi you have hboot version 2.00.0029
3570 or newer, and the device I was working on had 2.00.0027. This
3571 apparently can be easily fixed by downloading a Windows program and
3572 running it on your Windows machine, if you accept the terms Microsoft
3573 require you to accept to use Windows - which I do not. So I had to
3574 come up with a different approach. I got a lot of help from AndyCap
3575 on #nuug, and would not have been able to get this working without
3576 him.&lt;/p&gt;
3577
3578 &lt;p&gt;First I needed to extract the hboot firmware from
3579 &lt;a href=&quot;http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00.0029.exe&quot;&gt;the
3580 windows binary for HTC Desire HD&lt;/a&gt; downloaded as &#39;the RUU&#39; from HTC.
3581 For this there is is &lt;a href=&quot;https://github.com/kmdm/unruu/&quot;&gt;a github
3582 project named unruu&lt;/a&gt; using libunshield. The unshield tool did not
3583 recognise the file format, but unruu worked and extracted rom.zip,
3584 containing the new hboot firmware and a text file describing which
3585 devices it would work for.&lt;/p&gt;
3586
3587 &lt;p&gt;Next, I needed to get the new firmware into the device. For this I
3588 followed some instructions
3589 &lt;a href=&quot;http://www.htc1guru.com/2013/09/new-ruu-zips-posted/&quot;&gt;available
3590 from HTC1Guru.com&lt;/a&gt;, and ran these commands as root on a Linux
3591 machine with Debian testing:&lt;/p&gt;
3592
3593 &lt;p&gt;&lt;pre&gt;
3594 adb reboot-bootloader
3595 fastboot oem rebootRUU
3596 fastboot flash zip rom.zip
3597 fastboot flash zip rom.zip
3598 fastboot reboot
3599 &lt;/pre&gt;&lt;/p&gt;
3600
3601 &lt;p&gt;The flash command apparently need to be done twice to take effect,
3602 as the first is just preparations and the second one do the flashing.
3603 The adb command is just to get to the boot loader menu, so turning the
3604 device on while holding volume down and the power button should work
3605 too.&lt;/p&gt;
3606
3607 &lt;p&gt;With the new hboot version in place I could start following the
3608 instructions on the HTC developer web site. I got the device token
3609 like this:&lt;/p&gt;
3610
3611 &lt;p&gt;&lt;pre&gt;
3612 fastboot oem get_identifier_token 2&gt;&amp;1 | sed &#39;s/(bootloader) //&#39;
3613 &lt;/pre&gt;
3614
3615 &lt;p&gt;And once I got the unlock code via email, I could use it like
3616 this:&lt;/p&gt;
3617
3618 &lt;p&gt;&lt;pre&gt;
3619 fastboot flash unlocktoken Unlock_code.bin
3620 &lt;/pre&gt;&lt;/p&gt;
3621
3622 &lt;p&gt;And with that final step in place, the phone was unlocked and I
3623 could start stuffing the software of my own choosing into the device.
3624 So far I only inserted a replacement recovery image to wipe the phone
3625 before I start. We will see what happen next. Perhaps I should
3626 install &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt; on it. :)&lt;/p&gt;
3627 </description>
3628 </item>
3629
3630 <item>
3631 <title>How to use the Signal app if you only have a land line (ie no mobile phone)</title>
3632 <link>https://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html</link>
3633 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html</guid>
3634 <pubDate>Sun, 3 Jul 2016 14:20:00 +0200</pubDate>
3635 <description>&lt;p&gt;For a while now, I have wanted to test
3636 &lt;a href=&quot;https://whispersystems.org/&quot;&gt;the Signal app&lt;/a&gt;, as it is
3637 said to provide end to end encrypted communication and several of my
3638 friends and family are already using it. As I by choice do not own a
3639 mobile phone, this proved to be harder than expected. And I wanted to
3640 have the source of the client and know that it was the code used on my
3641 machine. But yesterday I managed to get it working. I used the
3642 Github source, compared it to the source in
3643 &lt;a href=&quot;https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk?hl=en-US&quot;&gt;the
3644 Signal Chrome app&lt;/a&gt; available from the Chrome web store, applied
3645 patches to use the production Signal servers, started the app and
3646 asked for the hidden &quot;register without a smart phone&quot; form. Here is
3647 the recipe how I did it.&lt;/p&gt;
3648
3649 &lt;p&gt;First, I fetched the Signal desktop source from Github, using
3650
3651 &lt;pre&gt;
3652 git clone https://github.com/WhisperSystems/Signal-Desktop.git
3653 &lt;/pre&gt;
3654
3655 &lt;p&gt;Next, I patched the source to use the production servers, to be
3656 able to talk to other Signal users:&lt;/p&gt;
3657
3658 &lt;pre&gt;
3659 cat &amp;lt;&amp;lt;EOF | patch -p0
3660 diff -ur ./js/background.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/background.js
3661 --- ./js/background.js 2016-06-29 13:43:15.630344628 +0200
3662 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/background.js 2016-06-29 14:06:29.530300934 +0200
3663 @@ -47,8 +47,8 @@
3664 });
3665 });
3666
3667 - var SERVER_URL = &#39;https://textsecure-service-staging.whispersystems.org&#39;;
3668 - var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com&#39;;
3669 + var SERVER_URL = &#39;https://textsecure-service-ca.whispersystems.org:4433&#39;;
3670 + var ATTACHMENT_SERVER_URL = &#39;https://whispersystems-textsecure-attachments.s3.amazonaws.com&#39;;
3671 var messageReceiver;
3672 window.getSocketStatus = function() {
3673 if (messageReceiver) {
3674 diff -ur ./js/expire.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/expire.js
3675 --- ./js/expire.js 2016-06-29 13:43:15.630344628 +0200
3676 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/0.15.0_0/js/expire.js2016-06-29 14:06:29.530300934 +0200
3677 @@ -1,6 +1,6 @@
3678 ;(function() {
3679 &#39;use strict&#39;;
3680 - var BUILD_EXPIRATION = 0;
3681 + var BUILD_EXPIRATION = 1474492690000;
3682
3683 window.extension = window.extension || {};
3684
3685 EOF
3686 &lt;/pre&gt;
3687
3688 &lt;p&gt;The first part is changing the servers, and the second is updating
3689 an expiration timestamp. This timestamp need to be updated regularly.
3690 It is set 90 days in the future by the build process (Gruntfile.js).
3691 The value is seconds since 1970 times 1000, as far as I can tell.&lt;/p&gt;
3692
3693 &lt;p&gt;Based on a tip and good help from the #nuug IRC channel, I wrote a
3694 script to launch Signal in Chromium.&lt;/p&gt;
3695
3696 &lt;pre&gt;
3697 #!/bin/sh
3698 cd $(dirname $0)
3699 mkdir -p userdata
3700 exec chromium \
3701 --proxy-server=&quot;socks://localhost:9050&quot; \
3702 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
3703 &lt;/pre&gt;
3704
3705 &lt;p&gt; The script start the app and configure Chromium to use the Tor
3706 SOCKS5 proxy to make sure those controlling the Signal servers (today
3707 Amazon and Whisper Systems) as well as those listening on the lines
3708 will have a harder time location my laptop based on the Signal
3709 connections if they use source IP address.&lt;/p&gt;
3710
3711 &lt;p&gt;When the script starts, one need to follow the instructions under
3712 &quot;Standalone Registration&quot; in the CONTRIBUTING.md file in the git
3713 repository. I right clicked on the Signal window to get up the
3714 Chromium debugging tool, visited the &#39;Console&#39; tab and wrote
3715 &#39;extension.install(&quot;standalone&quot;)&#39; on the console prompt to get the
3716 registration form. Then I entered by land line phone number and
3717 pressed &#39;Call&#39;. 5 seconds later the phone rang and a robot voice
3718 repeated the verification code three times. After entering the number
3719 into the verification code field in the form, I could start using
3720 Signal from my laptop.
3721
3722 &lt;p&gt;As far as I can tell, The Signal app will leak who is talking to
3723 whom and thus who know who to those controlling the central server,
3724 but such leakage is hard to avoid with a centrally controlled server
3725 setup. It is something to keep in mind when using Signal - the
3726 content of your chats are harder to intercept, but the meta data
3727 exposing your contact network is available to people you do not know.
3728 So better than many options, but not great. And sadly the usage is
3729 connected to my land line, thus allowing those controlling the server
3730 to associate it to my home and person. I would prefer it if only
3731 those I knew could tell who I was on Signal. There are options
3732 avoiding such information leakage, but most of my friends are not
3733 using them, so I am stuck with Signal for now.&lt;/p&gt;
3734
3735 &lt;p&gt;&lt;strong&gt;Update 2017-01-10&lt;/strong&gt;: There is an updated blog post
3736 on this topic in
3737 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html&quot;&gt;Experience
3738 and updated recipe for using the Signal app without a mobile
3739 phone&lt;/a&gt;.&lt;/p&gt;
3740 </description>
3741 </item>
3742
3743 <item>
3744 <title>The new &quot;best&quot; multimedia player in Debian?</title>
3745 <link>https://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html</link>
3746 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html</guid>
3747 <pubDate>Mon, 6 Jun 2016 12:50:00 +0200</pubDate>
3748 <description>&lt;p&gt;When I set out a few weeks ago to figure out
3749 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html&quot;&gt;which
3750 multimedia player in Debian claimed to support most file formats /
3751 MIME types&lt;/a&gt;, I was a bit surprised how varied the sets of MIME types
3752 the various players claimed support for. The range was from 55 to 130
3753 MIME types. I suspect most media formats are supported by all
3754 players, but this is not really reflected in the MimeTypes values in
3755 their desktop files. There are probably also some bogus MIME types
3756 listed, but it is hard to identify which one this is.&lt;/p&gt;
3757
3758 &lt;p&gt;Anyway, in the mean time I got in touch with upstream for some of
3759 the players suggesting to add more MIME types to their desktop files,
3760 and decided to spend some time myself improving the situation for my
3761 favorite media player VLC. The fixes for VLC entered Debian unstable
3762 yesterday. The complete list of MIME types can be seen on the
3763 &lt;a href=&quot;https://wiki.debian.org/DebianMultimedia/PlayerSupport&quot;&gt;Multimedia
3764 player MIME type support status&lt;/a&gt; Debian wiki page.&lt;/p&gt;
3765
3766 &lt;p&gt;The new &quot;best&quot; multimedia player in Debian? It is VLC, followed by
3767 totem, parole, kplayer, gnome-mpv, mpv, smplayer, mplayer-gui and
3768 kmplayer. I am sure some of the other players desktop files support
3769 several of the formats currently listed as working only with vlc,
3770 toten and parole.&lt;/p&gt;
3771
3772 &lt;p&gt;A sad observation is that only 14 MIME types are listed as
3773 supported by all the tested multimedia players in Debian in their
3774 desktop files: audio/mpeg, audio/vnd.rn-realaudio, audio/x-mpegurl,
3775 audio/x-ms-wma, audio/x-scpls, audio/x-wav, video/mp4, video/mpeg,
3776 video/quicktime, video/vnd.rn-realvideo, video/x-matroska,
3777 video/x-ms-asf, video/x-ms-wmv and video/x-msvideo. Personally I find
3778 it sad that video/ogg and video/webm is not supported by all the media
3779 players in Debian. As far as I can tell, all of them can handle both
3780 formats.&lt;/p&gt;
3781 </description>
3782 </item>
3783
3784 <item>
3785 <title>A program should be able to open its own files on Linux</title>
3786 <link>https://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</link>
3787 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</guid>
3788 <pubDate>Sun, 5 Jun 2016 08:30:00 +0200</pubDate>
3789 <description>&lt;p&gt;Many years ago, when koffice was fresh and with few users, I
3790 decided to test its presentation tool when making the slides for a
3791 talk I was giving for NUUG on Japhar, a free Java virtual machine. I
3792 wrote the first draft of the slides, saved the result and went to bed
3793 the day before I would give the talk. The next day I took a plane to
3794 the location where the meeting should take place, and on the plane I
3795 started up koffice again to polish the talk a bit, only to discover
3796 that kpresenter refused to load its own data file. I cursed a bit and
3797 started making the slides again from memory, to have something to
3798 present when I arrived. I tested that the saved files could be
3799 loaded, and the day seemed to be rescued. I continued to polish the
3800 slides until I suddenly discovered that the saved file could no longer
3801 be loaded into kpresenter. In the end I had to rewrite the slides
3802 three times, condensing the content until the talk became shorter and
3803 shorter. After the talk I was able to pinpoint the problem &amp;ndash;
3804 kpresenter wrote inline images in a way itself could not understand.
3805 Eventually that bug was fixed and kpresenter ended up being a great
3806 program to make slides. The point I&#39;m trying to make is that we
3807 expect a program to be able to load its own data files, and it is
3808 embarrassing to its developers if it can&#39;t.&lt;/p&gt;
3809
3810 &lt;p&gt;Did you ever experience a program failing to load its own data
3811 files from the desktop file browser? It is not a uncommon problem. A
3812 while back I discovered that the screencast recorder
3813 gtk-recordmydesktop would save an Ogg Theora video file the KDE file
3814 browser would refuse to open. No video player claimed to understand
3815 such file. I tracked down the cause being &lt;tt&gt;file --mime-type&lt;/tt&gt;
3816 returning the application/ogg MIME type, which no video player I had
3817 installed listed as a MIME type they would understand. I asked for
3818 &lt;a href=&quot;http://bugs.gw.com/view.php?id=382&quot;&gt;file to change its
3819 behavour&lt;/a&gt; and use the MIME type video/ogg instead. I also asked
3820 several video players to add video/ogg to their desktop files, to give
3821 the file browser an idea what to do about Ogg Theora files. After a
3822 while, the desktop file browsers in Debian started to handle the
3823 output from gtk-recordmydesktop properly.&lt;/p&gt;
3824
3825 &lt;p&gt;But history repeats itself. A few days ago I tested the music
3826 system Rosegarden again, and I discovered that the KDE and xfce file
3827 browsers did not know what to do with the Rosegarden project files
3828 (*.rg). I&#39;ve reported &lt;a href=&quot;http://bugs.debian.org/825993&quot;&gt;the
3829 rosegarden problem to BTS&lt;/a&gt; and a fix is commited to git and will be
3830 included in the next upload. To increase the chance of me remembering
3831 how to fix the problem next time some program fail to load its files
3832 from the file browser, here are some notes on how to fix it.&lt;/p&gt;
3833
3834 &lt;p&gt;The file browsers in Debian in general operates on MIME types.
3835 There are two sources for the MIME type of a given file. The output from
3836 &lt;tt&gt;file --mime-type&lt;/tt&gt; mentioned above, and the content of the
3837 shared MIME type registry (under /usr/share/mime/). The file MIME
3838 type is mapped to programs supporting the MIME type, and this
3839 information is collected from
3840 &lt;a href=&quot;https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/&quot;&gt;the
3841 desktop files&lt;/a&gt; available in /usr/share/applications/. If there is
3842 one desktop file claiming support for the MIME type of the file, it is
3843 activated when asking to open a given file. If there are more, one
3844 can normally select which one to use by right-clicking on the file and
3845 selecting the wanted one using &#39;Open with&#39; or similar. In general
3846 this work well. But it depend on each program picking a good MIME
3847 type (preferably
3848 &lt;a href=&quot;http://www.iana.org/assignments/media-types/media-types.xhtml&quot;&gt;a
3849 MIME type registered with IANA&lt;/a&gt;), file and/or the shared MIME
3850 registry recognizing the file and the desktop file to list the MIME
3851 type in its list of supported MIME types.&lt;/p&gt;
3852
3853 &lt;p&gt;The &lt;tt&gt;/usr/share/mime/packages/rosegarden.xml&lt;/tt&gt; entry for
3854 &lt;a href=&quot;http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec&quot;&gt;the
3855 Shared MIME database&lt;/a&gt; look like this:&lt;/p&gt;
3856
3857 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
3858 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
3859 &amp;lt;mime-info xmlns=&quot;http://www.freedesktop.org/standards/shared-mime-info&quot;&amp;gt;
3860 &amp;lt;mime-type type=&quot;audio/x-rosegarden&quot;&amp;gt;
3861 &amp;lt;sub-class-of type=&quot;application/x-gzip&quot;/&amp;gt;
3862 &amp;lt;comment&amp;gt;Rosegarden project file&amp;lt;/comment&amp;gt;
3863 &amp;lt;glob pattern=&quot;*.rg&quot;/&amp;gt;
3864 &amp;lt;/mime-type&amp;gt;
3865 &amp;lt;/mime-info&amp;gt;
3866 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
3867
3868 &lt;p&gt;This states that audio/x-rosegarden is a kind of application/x-gzip
3869 (it is a gzipped XML file). Note, it is much better to use an
3870 official MIME type registered with IANA than it is to make up ones own
3871 unofficial ones like the x-rosegarden type used by rosegarden.&lt;/p&gt;
3872
3873 &lt;p&gt;The desktop file of the rosegarden program failed to list
3874 audio/x-rosegarden in its list of supported MIME types, causing the
3875 file browsers to have no idea what to do with *.rg files:&lt;/p&gt;
3876
3877 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
3878 % grep Mime /usr/share/applications/rosegarden.desktop
3879 MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
3880 X-KDE-NativeMimeType=audio/x-rosegarden-composition
3881 %
3882 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
3883
3884 &lt;p&gt;The fix was to add &quot;audio/x-rosegarden;&quot; at the end of the
3885 MimeType= line.&lt;/p&gt;
3886
3887 &lt;p&gt;If you run into a file which fail to open the correct program when
3888 selected from the file browser, please check out the output from
3889 &lt;tt&gt;file --mime-type&lt;/tt&gt; for the file, ensure the file ending and
3890 MIME type is registered somewhere under /usr/share/mime/ and check
3891 that some desktop file under /usr/share/applications/ is claiming
3892 support for this MIME type. If not, please report a bug to have it
3893 fixed. :)&lt;/p&gt;
3894 </description>
3895 </item>
3896
3897 <item>
3898 <title>Isenkram with PackageKit support - new version 0.23 available in Debian unstable</title>
3899 <link>https://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</link>
3900 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</guid>
3901 <pubDate>Wed, 25 May 2016 10:20:00 +0200</pubDate>
3902 <description>&lt;p&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/isenkram&quot;&gt;The isenkram
3903 system&lt;/a&gt; is a user-focused solution in Debian for handling hardware
3904 related packages. The idea is to have a database of mappings between
3905 hardware and packages, and pop up a dialog suggesting for the user to
3906 install the packages to use a given hardware dongle. Some use cases
3907 are when you insert a Yubikey, it proposes to install the software
3908 needed to control it; when you insert a braille reader list it
3909 proposes to install the packages needed to send text to the reader;
3910 and when you insert a ColorHug screen calibrator it suggests to
3911 install the driver for it. The system work well, and even have a few
3912 command line tools to install firmware packages and packages for the
3913 hardware already in the machine (as opposed to hotpluggable hardware).&lt;/p&gt;
3914
3915 &lt;p&gt;The system was initially written using aptdaemon, because I found
3916 good documentation and example code on how to use it. But aptdaemon
3917 is going away and is generally being replaced by
3918 &lt;a href=&quot;http://www.freedesktop.org/software/PackageKit/&quot;&gt;PackageKit&lt;/a&gt;,
3919 so Isenkram needed a rewrite. And today, thanks to the great patch
3920 from my college Sunil Mohan Adapa in the FreedomBox project, the
3921 rewrite finally took place. I&#39;ve just uploaded a new version of
3922 Isenkram into Debian Unstable with the patch included, and the default
3923 for the background daemon is now to use PackageKit. To check it out,
3924 install the &lt;tt&gt;isenkram&lt;/tt&gt; package and insert some hardware dongle
3925 and see if it is recognised.&lt;/p&gt;
3926
3927 &lt;p&gt;If you want to know what kind of packages isenkram would propose for
3928 the machine it is running on, you can check out the isenkram-lookup
3929 program. This is what it look like on a Thinkpad X230:&lt;/p&gt;
3930
3931 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
3932 % isenkram-lookup
3933 bluez
3934 cheese
3935 fprintd
3936 fprintd-demo
3937 gkrellm-thinkbat
3938 hdapsd
3939 libpam-fprintd
3940 pidgin-blinklight
3941 thinkfan
3942 tleds
3943 tp-smapi-dkms
3944 tp-smapi-source
3945 tpb
3946 %p
3947 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
3948
3949 &lt;p&gt;The hardware mappings come from several places. The preferred way
3950 is for packages to announce their hardware support using
3951 &lt;a href=&quot;https://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
3952 cross distribution appstream system&lt;/a&gt;.
3953 See
3954 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;previous
3955 blog posts about isenkram&lt;/a&gt; to learn how to do that.&lt;/p&gt;
3956 </description>
3957 </item>
3958
3959 <item>
3960 <title>Discharge rate estimate in new battery statistics collector for Debian</title>
3961 <link>https://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</link>
3962 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</guid>
3963 <pubDate>Mon, 23 May 2016 09:35:00 +0200</pubDate>
3964 <description>&lt;p&gt;Yesterday I updated the
3965 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats
3966 package in Debian&lt;/a&gt; with a few patches sent to me by skilled and
3967 enterprising users. There were some nice user and visible changes.
3968 First of all, both desktop menu entries now work. A design flaw in
3969 one of the script made the history graph fail to show up (its PNG was
3970 dumped in ~/.xsession-errors) if no controlling TTY was available.
3971 The script worked when called from the command line, but not when
3972 called from the desktop menu. I changed this to look for a DISPLAY
3973 variable or a TTY before deciding where to draw the graph, and now the
3974 graph window pop up as expected.&lt;/p&gt;
3975
3976 &lt;p&gt;The next new feature is a discharge rate estimator in one of the
3977 graphs (the one showing the last few hours). New is also the user of
3978 colours showing charging in blue and discharge in red. The percentages
3979 of this graph is relative to last full charge, not battery design
3980 capacity.&lt;/p&gt;
3981
3982 &lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-rate.png&quot;/&gt;&lt;/p&gt;
3983
3984 &lt;p&gt;The other graph show the entire history of the collected battery
3985 statistics, comparing it to the design capacity of the battery to
3986 visualise how the battery life time get shorter over time. The red
3987 line in this graph is what the previous graph considers 100 percent:
3988
3989 &lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-history.png&quot;/&gt;&lt;/p&gt;
3990
3991 &lt;p&gt;In this graph you can see that I only charge the battery to 80
3992 percent of last full capacity, and how the capacity of the battery is
3993 shrinking. :(&lt;/p&gt;
3994
3995 &lt;p&gt;The last new feature is in the collector, which now will handle
3996 more hardware models. On some hardware, Linux power supply
3997 information is stored in /sys/class/power_supply/ACAD/, while the
3998 collector previously only looked in /sys/class/power_supply/AC/. Now
3999 both are checked to figure if there is power connected to the
4000 machine.&lt;/p&gt;
4001
4002 &lt;p&gt;If you are interested in how your laptop battery is doing, please
4003 check out the
4004 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
4005 in Debian unstable, or rebuild it on Jessie to get it working on
4006 Debian stable. :) The upstream source is available from &lt;a
4007 href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
4008 Patches are very welcome.&lt;/p&gt;
4009
4010 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
4011 activities, please send Bitcoin donations to my address
4012 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
4013 </description>
4014 </item>
4015
4016 <item>
4017 <title>Debian now with ZFS on Linux included</title>
4018 <link>https://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</link>
4019 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</guid>
4020 <pubDate>Thu, 12 May 2016 07:30:00 +0200</pubDate>
4021 <description>&lt;p&gt;Today, after many years of hard work from many people,
4022 &lt;a href=&quot;http://zfsonlinux.org/&quot;&gt;ZFS for Linux&lt;/a&gt; finally entered
4023 Debian. The package status can be seen on
4024 &lt;a href=&quot;https://tracker.debian.org/pkg/zfs-linux&quot;&gt;the package tracker
4025 for zfs-linux&lt;/a&gt;. and
4026 &lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
4027 team status page&lt;/a&gt;. If you want to help out, please join us.
4028 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;The
4029 source code&lt;/a&gt; is available via git on Alioth. It would also be
4030 great if you could help out with
4031 &lt;a href=&quot;https://tracker.debian.org/pkg/dkms&quot;&gt;the dkms package&lt;/a&gt;, as
4032 it is an important piece of the puzzle to get ZFS working.&lt;/p&gt;
4033 </description>
4034 </item>
4035
4036 <item>
4037 <title>What is the best multimedia player in Debian?</title>
4038 <link>https://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</link>
4039 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</guid>
4040 <pubDate>Sun, 8 May 2016 09:40:00 +0200</pubDate>
4041 <description>&lt;p&gt;&lt;strong&gt;Where I set out to figure out which multimedia player in
4042 Debian claim support for most file formats.&lt;/strong&gt;&lt;/p&gt;
4043
4044 &lt;p&gt;A few years ago, I had a look at the media support for Browser
4045 plugins in Debian, to get an idea which plugins to include in Debian
4046 Edu. I created a script to extract the set of supported MIME types
4047 for each plugin, and used this to find out which multimedia browser
4048 plugin supported most file formats / media types.
4049 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;The
4050 result&lt;/a&gt; can still be seen on the Debian wiki, even though it have
4051 not been updated for a while. But browser plugins are less relevant
4052 these days, so I thought it was time to look at standalone
4053 players.&lt;/p&gt;
4054
4055 &lt;p&gt;A few days ago I was tired of VLC not being listed as a viable
4056 player when I wanted to play videos from the Norwegian National
4057 Broadcasting Company, and decided to investigate why. The cause is a
4058 &lt;a href=&quot;https://bugs.debian.org/822245&quot;&gt;missing MIME type in the VLC
4059 desktop file&lt;/a&gt;. In the process I wrote a script to compare the set
4060 of MIME types announced in the desktop file and the browser plugin,
4061 only to discover that there is quite a large difference between the
4062 two for VLC. This discovery made me dig up the script I used to
4063 compare browser plugins, and adjust it to compare desktop files
4064 instead, to try to figure out which multimedia player in Debian
4065 support most file formats.&lt;/p&gt;
4066
4067 &lt;p&gt;The result can be seen on the Debian Wiki, as
4068 &lt;a href=&quot;https://wiki.debian.org/DebianMultimedia/PlayerSupport&quot;&gt;a
4069 table listing all MIME types supported by one of the packages included
4070 in the table&lt;/a&gt;, with the package supporting most MIME types being
4071 listed first in the table.&lt;/p&gt;
4072
4073 &lt;/p&gt;The best multimedia player in Debian? It is totem, followed by
4074 parole, kplayer, mpv, vlc, smplayer mplayer-gui gnome-mpv and
4075 kmplayer. Time for the other players to update their announced MIME
4076 support?&lt;/p&gt;
4077 </description>
4078 </item>
4079
4080 <item>
4081 <title>The Pyra - handheld computer with Debian preinstalled</title>
4082 <link>https://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</link>
4083 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</guid>
4084 <pubDate>Wed, 4 May 2016 10:00:00 +0200</pubDate>
4085 <description>A friend of mine made me aware of
4086 &lt;a href=&quot;https://pyra-handheld.com/boards/pages/pyra/&quot;&gt;The Pyra&lt;/a&gt;, a
4087 handheld computer which will be delivered with Debian preinstalled. I
4088 would love to get one of those for my birthday. :)&lt;/p&gt;
4089
4090 &lt;p&gt;The machine is a complete ARM-based PC with micro HDMI, SATA, USB
4091 plugs and many others connectors, and include a full keyboard and a 5&quot;
4092 LCD touch screen. The 6000mAh battery is claimed to provide a whole
4093 day of battery life time, but I have not seen any independent tests
4094 confirming this. The vendor is still collecting preorders, and the
4095 last I heard last night was that 22 more orders were needed before
4096 production started.&lt;/p&gt;
4097
4098 &lt;p&gt;As far as I know, this is the first handheld preinstalled with
4099 Debian. Please let me know if you know of any others. Is it the
4100 first computer being sold with Debian preinstalled?&lt;/p&gt;
4101 </description>
4102 </item>
4103
4104 <item>
4105 <title>Lets make a Norwegian Bokmål edition of The Debian Administrator&#39;s Handbook</title>
4106 <link>https://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</link>
4107 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</guid>
4108 <pubDate>Sun, 10 Apr 2016 23:20:00 +0200</pubDate>
4109 <description>&lt;p&gt;During this weekends
4110 &lt;a href=&quot;http://www.nuug.no/news/Oslo__Takk_for_feilfiksingsfesten.shtml&quot;&gt;bug
4111 squashing party and developer gathering&lt;/a&gt;, we decided to do our part
4112 to make sure there are good books about Debian available in Norwegian
4113 Bokmål, and got in touch with the people behind the
4114 &lt;a href=&quot;http://debian-handbook.info/&quot;&gt;Debian Administrator&#39;s Handbook
4115 project&lt;/a&gt; to get started. If you want to help out, please start
4116 contributing using
4117 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
4118 hosted weblate project page&lt;/a&gt;, and get in touch using
4119 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
4120 translators mailing list&lt;/a&gt;. Please also check out
4121 &lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
4122 contributors&lt;/a&gt;.&lt;/p&gt;
4123
4124 &lt;p&gt;The book is already available on paper in English, French and
4125 Japanese, and our goal is to get it available on paper in Norwegian
4126 Bokmål too. In addition to the paper edition, there are also EPUB and
4127 Mobi versions available. And there are incomplete translations
4128 available for many more languages.&lt;/p&gt;
4129 </description>
4130 </item>
4131
4132 <item>
4133 <title>One in two hundred Debian users using ZFS on Linux?</title>
4134 <link>https://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</link>
4135 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</guid>
4136 <pubDate>Thu, 7 Apr 2016 22:30:00 +0200</pubDate>
4137 <description>&lt;p&gt;Just for fun I had a look at the popcon number of ZFS related
4138 packages in Debian, and was quite surprised with what I found. I use
4139 ZFS myself at home, but did not really expect many others to do so.
4140 But I might be wrong.&lt;/p&gt;
4141
4142 &lt;p&gt;According to
4143 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=spl-linux&quot;&gt;the popcon
4144 results for spl-linux&lt;/a&gt;, there are 1019 Debian installations, or
4145 0.53% of the population, with the package installed. As far as I know
4146 the only use of the spl-linux package is as a support library for ZFS
4147 on Linux, so I use it here as proxy for measuring the number of ZFS
4148 installation on Linux in Debian. In the kFreeBSD variant of Debian
4149 the ZFS feature is already available, and there
4150 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=zfsutils&quot;&gt;the popcon
4151 results for zfsutils&lt;/a&gt; show 1625 Debian installations or 0.84% of
4152 the population. So I guess I am not alone in using ZFS on Debian.&lt;/p&gt;
4153
4154 &lt;p&gt;But even though the Debian project leader Lucas Nussbaum
4155 &lt;a href=&quot;https://lists.debian.org/debian-devel-announce/2015/04/msg00006.html&quot;&gt;announced
4156 in April 2015&lt;/a&gt; that the legal obstacles blocking ZFS on Debian were
4157 cleared, the package is still not in Debian. The package is again in
4158 the NEW queue. Several uploads have been rejected so far because the
4159 debian/copyright file was incomplete or wrong, but there is no reason
4160 to give up. The current status can be seen on
4161 &lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
4162 team status page&lt;/a&gt;, and
4163 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;the
4164 source code&lt;/a&gt; is available on Alioth.&lt;/p&gt;
4165
4166 &lt;p&gt;As I want ZFS to be included in next version of Debian to make sure
4167 my home server can function in the future using only official Debian
4168 packages, and the current blocker is to get the debian/copyright file
4169 accepted by the FTP masters in Debian, I decided a while back to try
4170 to help out the team. This was the background for my blog post about
4171 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html&quot;&gt;creating,
4172 updating and checking debian/copyright semi-automatically&lt;/a&gt;, and I
4173 used the techniques I explored there to try to find any errors in the
4174 copyright file. It is not very easy to check every one of the around
4175 2000 files in the source package, but I hope we this time got it
4176 right. If you want to help out, check out the git source and try to
4177 find missing entries in the debian/copyright file.&lt;/p&gt;
4178 </description>
4179 </item>
4180
4181 <item>
4182 <title>Full battery stats collector is now available in Debian</title>
4183 <link>https://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</link>
4184 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</guid>
4185 <pubDate>Wed, 23 Mar 2016 22:10:00 +0100</pubDate>
4186 <description>&lt;p&gt;Since this morning, the battery-stats package in Debian include an
4187 extended collector that will collect the complete battery history for
4188 later processing and graphing. The original collector store the
4189 battery level as percentage of last full level, while the new
4190 collector also record battery vendor, model, serial number, design
4191 full level, last full level and current battery level. This make it
4192 possible to predict the lifetime of the battery as well as visualise
4193 the energy flow when the battery is charging or discharging.&lt;/p&gt;
4194
4195 &lt;p&gt;The new tools are available in &lt;tt&gt;/usr/share/battery-stats/&lt;/tt&gt;
4196 in the version 0.5.1 package in unstable. Get the new battery level graph
4197 and lifetime prediction by running:
4198
4199 &lt;p&gt;&lt;pre&gt;
4200 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
4201 &lt;/pre&gt;&lt;/p&gt;
4202
4203 &lt;p&gt;Or select the &#39;Battery Level Graph&#39; from your application menu.&lt;/p&gt;
4204
4205 &lt;p&gt;The flow in/out of the battery can be seen by running (no menu
4206 entry yet):&lt;/p&gt;
4207
4208 &lt;p&gt;&lt;pre&gt;
4209 /usr/share/battery-stats/battery-stats-graph-flow
4210 &lt;/pre&gt;&lt;/p&gt;
4211
4212 &lt;p&gt;I&#39;m not quite happy with the way the data is visualised, at least
4213 when there are few data points. The graphs look a bit better with a
4214 few years of data.&lt;/p&gt;
4215
4216 &lt;p&gt;A while back one important feature I use in the battery stats
4217 collector broke in Debian. The scripts in
4218 &lt;tt&gt;/usr/lib/pm-utils/power.d/&lt;/tt&gt; were no longer executed. I
4219 suspect it happened when Jessie started using systemd, but I do not
4220 know. The issue is reported as
4221 &lt;a href=&quot;https://bugs.debian.org/818649&quot;&gt;bug #818649&lt;/a&gt; against
4222 pm-utils. I managed to work around it by adding an udev rule to call
4223 the collector script every time the power connector is connected and
4224 disconnected. With this fix in place it was finally time to make a
4225 new release of the package, and get it into Debian.&lt;/p&gt;
4226
4227 &lt;p&gt;If you are interested in how your laptop battery is doing, please
4228 check out the
4229 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
4230 in Debian unstable, or rebuild it on Jessie to get it working on
4231 Debian stable. :) The upstream source is available from
4232 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
4233 As always, patches are very welcome.&lt;/p&gt;
4234 </description>
4235 </item>
4236
4237 <item>
4238 <title>Making battery measurements a little easier in Debian</title>
4239 <link>https://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</link>
4240 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</guid>
4241 <pubDate>Tue, 15 Mar 2016 15:00:00 +0100</pubDate>
4242 <description>&lt;p&gt;Back in September, I blogged about
4243 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html&quot;&gt;the
4244 system I wrote to collect statistics about my laptop battery&lt;/a&gt;, and
4245 how it showed the decay and death of this battery (now replaced). I
4246 created a simple deb package to handle the collection and graphing,
4247 but did not want to upload it to Debian as there were already
4248 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;a battery-stats
4249 package in Debian&lt;/a&gt; that should do the same thing, and I did not see
4250 a point of uploading a competing package when battery-stats could be
4251 fixed instead. I reported a few bugs about its non-function, and
4252 hoped someone would step in and fix it. But no-one did.&lt;/p&gt;
4253
4254 &lt;p&gt;I got tired of waiting a few days ago, and took matters in my own
4255 hands. The end result is that I am now the new upstream developer of
4256 battery stats (&lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;available from github&lt;/a&gt;) and part of the team maintaining
4257 battery-stats in Debian, and the package in Debian unstable is finally
4258 able to collect battery status using the &lt;tt&gt;/sys/class/power_supply/&lt;/tt&gt;
4259 information provided by the Linux kernel. If you install the
4260 battery-stats package from unstable now, you will be able to get a
4261 graph of the current battery fill level, to get some idea about the
4262 status of the battery. The source package build and work just fine in
4263 Debian testing and stable (and probably oldstable too, but I have not
4264 tested). The default graph you get for that system look like this:&lt;/p&gt;
4265
4266 &lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2016-03-15-battery-stats-graph-example.png&quot; width=&quot;70%&quot; align=&quot;center&quot;&gt;&lt;/p&gt;
4267
4268 &lt;p&gt;My plans for the future is to merge my old scripts into the
4269 battery-stats package, as my old scripts collected a lot more details
4270 about the battery. The scripts are merged into the upstream
4271 battery-stats git repository already, but I am not convinced they work
4272 yet, as I changed a lot of paths along the way. Will have to test a
4273 bit more before I make a new release.&lt;/p&gt;
4274
4275 &lt;p&gt;I will also consider changing the file format slightly, as I
4276 suspect the way I combine several values into one field might make it
4277 impossible to know the type of the value when using it for processing
4278 and graphing.&lt;/p&gt;
4279
4280 &lt;p&gt;If you would like I would like to keep an close eye on your laptop
4281 battery, check out the battery-stats package in
4282 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;Debian&lt;/a&gt; and
4283 on
4284 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
4285 I would love some help to improve the system further.&lt;/p&gt;
4286 </description>
4287 </item>
4288
4289 <item>
4290 <title>Creating, updating and checking debian/copyright semi-automatically</title>
4291 <link>https://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</link>
4292 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</guid>
4293 <pubDate>Fri, 19 Feb 2016 15:00:00 +0100</pubDate>
4294 <description>&lt;p&gt;Making packages for Debian requires quite a lot of attention to
4295 details. And one of the details is the content of the
4296 debian/copyright file, which should list all relevant licenses used by
4297 the code in the package in question, preferably in
4298 &lt;a href=&quot;https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&quot;&gt;machine
4299 readable DEP5 format&lt;/a&gt;.&lt;/p&gt;
4300
4301 &lt;p&gt;For large packages with lots of contributors it is hard to write
4302 and update this file manually, and if you get some detail wrong, the
4303 package is normally rejected by the ftpmasters. So getting it right
4304 the first time around get the package into Debian faster, and save
4305 both you and the ftpmasters some work.. Today, while trying to figure
4306 out what was wrong with
4307 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447&quot;&gt;the
4308 zfsonlinux copyright file&lt;/a&gt;, I decided to spend some time on
4309 figuring out the options for doing this job automatically, or at least
4310 semi-automatically.&lt;/p&gt;
4311
4312 &lt;p&gt;Lucikly, there are at least two tools available for generating the
4313 file based on the code in the source package,
4314 &lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/debmake&quot;&gt;debmake&lt;/a&gt;&lt;/tt&gt;
4315 and &lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/cme&quot;&gt;cme&lt;/a&gt;&lt;/tt&gt;. I&#39;m
4316 not sure which one of them came first, but both seem to be able to
4317 create a sensible draft file. As far as I can tell, none of them can
4318 be trusted to get the result just right, so the content need to be
4319 polished a bit before the file is OK to upload. I found the debmake
4320 option in
4321 &lt;a href=&quot;http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html&quot;&gt;a
4322 blog posts from 2014&lt;/a&gt;.
4323
4324 &lt;p&gt;To generate using debmake, use the -cc option:
4325
4326 &lt;p&gt;&lt;pre&gt;
4327 debmake -cc &gt; debian/copyright
4328 &lt;/pre&gt;&lt;/p&gt;
4329
4330 &lt;p&gt;Note there are some problems with python and non-ASCII names, so
4331 this might not be the best option.&lt;/p&gt;
4332
4333 &lt;p&gt;The cme option is based on a config parsing library, and I found
4334 this approach in
4335 &lt;a href=&quot;https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/&quot;&gt;a
4336 blog post from 2015&lt;/a&gt;. To generate using cme, use the &#39;update
4337 dpkg-copyright&#39; option:
4338
4339 &lt;p&gt;&lt;pre&gt;
4340 cme update dpkg-copyright
4341 &lt;/pre&gt;&lt;/p&gt;
4342
4343 &lt;p&gt;This will create or update debian/copyright. The cme tool seem to
4344 handle UTF-8 names better than debmake.&lt;/p&gt;
4345
4346 &lt;p&gt;When the copyright file is created, I would also like some help to
4347 check if the file is correct. For this I found two good options,
4348 &lt;tt&gt;debmake -k&lt;/tt&gt; and &lt;tt&gt;license-reconcile&lt;/tt&gt;. The former seem
4349 to focus on license types and file matching, and is able to detect
4350 ineffective blocks in the copyright file. The latter reports missing
4351 copyright holders and years, but was confused by inconsistent license
4352 names (like CDDL vs. CDDL-1.0). I suspect it is good to use both and
4353 fix all issues reported by them before uploading. But I do not know
4354 if the tools and the ftpmasters agree on what is important to fix in a
4355 copyright file, so the package might still be rejected.&lt;/p&gt;
4356
4357 &lt;p&gt;The devscripts tool &lt;tt&gt;licensecheck&lt;/tt&gt; deserve mentioning. It
4358 will read through the source and try to find all copyright statements.
4359 It is not comparing the result to the content of debian/copyright, but
4360 can be useful when verifying the content of the copyright file.&lt;/p&gt;
4361
4362 &lt;p&gt;Are you aware of better tools in Debian to create and update
4363 debian/copyright file. Please let me know, or blog about it on
4364 planet.debian.org.&lt;/p&gt;
4365
4366 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
4367 activities, please send Bitcoin donations to my address
4368 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
4369
4370 &lt;p&gt;&lt;strong&gt;Update 2016-02-20&lt;/strong&gt;: I got a tip from Mike Gabriel
4371 on how to use licensecheck and cdbs to create a draft copyright file
4372
4373 &lt;p&gt;&lt;pre&gt;
4374 licensecheck --copyright -r `find * -type f` | \
4375 /usr/lib/cdbs/licensecheck2dep5 &gt; debian/copyright.auto
4376 &lt;/pre&gt;&lt;/p&gt;
4377
4378 &lt;p&gt;He mentioned that he normally check the generated file into the
4379 version control system to make it easier to discover license and
4380 copyright changes in the upstream source. I will try to do the same
4381 with my packages in the future.&lt;/p&gt;
4382
4383 &lt;p&gt;&lt;strong&gt;Update 2016-02-21&lt;/strong&gt;: The cme author recommended
4384 against using -quiet for new users, so I removed it from the proposed
4385 command line.&lt;/p&gt;
4386 </description>
4387 </item>
4388
4389 <item>
4390 <title>Using appstream in Debian to locate packages with firmware and mime type support</title>
4391 <link>https://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</link>
4392 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</guid>
4393 <pubDate>Thu, 4 Feb 2016 16:40:00 +0100</pubDate>
4394 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;appstream system&lt;/a&gt;
4395 is taking shape in Debian, and one provided feature is a very
4396 convenient way to tell you which package to install to make a given
4397 firmware file available when the kernel is looking for it. This can
4398 be done using apt-file too, but that is for someone else to blog
4399 about. :)&lt;/p&gt;
4400
4401 &lt;p&gt;Here is a small recipe to find the package with a given firmware
4402 file, in this example I am looking for ctfw-3.2.3.0.bin, randomly
4403 picked from the set of firmware announced using appstream in Debian
4404 unstable. In general you would be looking for the firmware requested
4405 by the kernel during kernel module loading. To find the package
4406 providing the example file, do like this:&lt;/p&gt;
4407
4408 &lt;blockquote&gt;&lt;pre&gt;
4409 % apt install appstream
4410 [...]
4411 % apt update
4412 [...]
4413 % appstreamcli what-provides firmware:runtime ctfw-3.2.3.0.bin | \
4414 awk &#39;/Package:/ {print $2}&#39;
4415 firmware-qlogic
4416 %
4417 &lt;/pre&gt;&lt;/blockquote&gt;
4418
4419 &lt;p&gt;See &lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;the
4420 appstream wiki&lt;/a&gt; page to learn how to embed the package metadata in
4421 a way appstream can use.&lt;/p&gt;
4422
4423 &lt;p&gt;This same approach can be used to find any package supporting a
4424 given MIME type. This is very useful when you get a file you do not
4425 know how to handle. First find the mime type using &lt;tt&gt;file
4426 --mime-type&lt;/tt&gt;, and next look up the package providing support for
4427 it. Lets say you got an SVG file. Its MIME type is image/svg+xml,
4428 and you can find all packages handling this type like this:&lt;/p&gt;
4429
4430 &lt;blockquote&gt;&lt;pre&gt;
4431 % apt install appstream
4432 [...]
4433 % apt update
4434 [...]
4435 % appstreamcli what-provides mimetype image/svg+xml | \
4436 awk &#39;/Package:/ {print $2}&#39;
4437 bkchem
4438 phototonic
4439 inkscape
4440 shutter
4441 tetzle
4442 geeqie
4443 xia
4444 pinta
4445 gthumb
4446 karbon
4447 comix
4448 mirage
4449 viewnior
4450 postr
4451 ristretto
4452 kolourpaint4
4453 eog
4454 eom
4455 gimagereader
4456 midori
4457 %
4458 &lt;/pre&gt;&lt;/blockquote&gt;
4459
4460 &lt;p&gt;I believe the MIME types are fetched from the desktop file for
4461 packages providing appstream metadata.&lt;/p&gt;
4462 </description>
4463 </item>
4464
4465 <item>
4466 <title>Creepy, visualise geotagged social media information - nice free software</title>
4467 <link>https://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</link>
4468 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</guid>
4469 <pubDate>Sun, 24 Jan 2016 10:50:00 +0100</pubDate>
4470 <description>&lt;p&gt;Most people seem not to realise that every time they walk around
4471 with the computerised radio beacon known as a mobile phone their
4472 position is tracked by the phone company and often stored for a long
4473 time (like every time a SMS is received or sent). And if their
4474 computerised radio beacon is capable of running programs (often called
4475 mobile apps) downloaded from the Internet, these programs are often
4476 also capable of tracking their location (if the app requested access
4477 during installation). And when these programs send out information to
4478 central collection points, the location is often included, unless
4479 extra care is taken to not send the location. The provided
4480 information is used by several entities, for good and bad (what is
4481 good and bad, depend on your point of view). What is certain, is that
4482 the private sphere and the right to free movement is challenged and
4483 perhaps even eradicated for those announcing their location this way,
4484 when they share their whereabouts with private and public
4485 entities.&lt;/p&gt;
4486
4487 &lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png&quot;&gt;&lt;/p&gt;
4488
4489 &lt;p&gt;The phone company logs provide a register of locations to check out
4490 when one want to figure out what the tracked person was doing. It is
4491 unavailable for most of us, but provided to selected government
4492 officials, company staff, those illegally buying information from
4493 unfaithful servants and crackers stealing the information. But the
4494 public information can be collected and analysed, and a free software
4495 tool to do so is called
4496 &lt;a href=&quot;http://www.geocreepy.com/&quot;&gt;Creepy or Cree.py&lt;/a&gt;. I
4497 discovered it when I read
4498 &lt;a href=&quot;http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html&quot;&gt;an
4499 article about Creepy&lt;/a&gt; in the Norwegian newspaper Aftenposten i
4500 November 2014, and decided to check if it was available in Debian.
4501 The python program was in Debian, but
4502 &lt;a href=&quot;https://tracker.debian.org/pkg/creepy&quot;&gt;the version in
4503 Debian&lt;/a&gt; was completely broken and practically unmaintained. I
4504 uploaded a new version which did not work quite right, but did not
4505 have time to fix it then. This Christmas I decided to finally try to
4506 get Creepy operational in Debian. Now a fixed version is available in
4507 Debian unstable and testing, and almost all Debian specific patches
4508 are now included
4509 &lt;a href=&quot;https://github.com/jkakavas/creepy&quot;&gt;upstream&lt;/a&gt;.&lt;/p&gt;
4510
4511 &lt;p&gt;The Creepy program visualises geolocation information fetched from
4512 Twitter, Instagram, Flickr and Google+, and allow one to get a
4513 complete picture of every social media message posted recently in a
4514 given area, or track the movement of a given individual across all
4515 these services. Earlier it was possible to use the search API of at
4516 least some of these services without identifying oneself, but these
4517 days it is impossible. This mean that to use Creepy, you need to
4518 configure it to log in as yourself on these services, and provide
4519 information to them about your search interests. This should be taken
4520 into account when using Creepy, as it will also share information
4521 about yourself with the services.&lt;/p&gt;
4522
4523 &lt;p&gt;The picture above show the twitter messages sent from (or at least
4524 geotagged with a position from) the city centre of Oslo, the capital
4525 of Norway. One useful way to use Creepy is to first look at
4526 information tagged with an area of interest, and next look at all the
4527 information provided by one or more individuals who was in the area.
4528 I tested it by checking out which celebrity provide their location in
4529 twitter messages by checkout out who sent twitter messages near a
4530 Norwegian TV station, and next could track their position over time,
4531 making it possible to locate their home and work place, among other
4532 things. A similar technique have been
4533 &lt;a href=&quot;http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl&quot;&gt;used
4534 to locate Russian soldiers in Ukraine&lt;/a&gt;, and it is both a powerful
4535 tool to discover lying governments, and a useful tool to help people
4536 understand the value of the private information they provide to the
4537 public.&lt;/p&gt;
4538
4539 &lt;p&gt;The package is not trivial to backport to Debian Stable/Jessie, as
4540 it depend on several python modules currently missing in Jessie (at
4541 least python-instagram, python-flickrapi and
4542 python-requests-toolbelt).&lt;/p&gt;
4543
4544 &lt;p&gt;(I have uploaded
4545 &lt;a href=&quot;https://screenshots.debian.net/package/creepy&quot;&gt;the image to
4546 screenshots.debian.net&lt;/a&gt; and licensed it under the same terms as the
4547 Creepy program in Debian.)&lt;/p&gt;
4548 </description>
4549 </item>
4550
4551 <item>
4552 <title>Always download Debian packages using Tor - the simple recipe</title>
4553 <link>https://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</link>
4554 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</guid>
4555 <pubDate>Fri, 15 Jan 2016 00:30:00 +0100</pubDate>
4556 <description>&lt;p&gt;During his DebConf15 keynote, Jacob Appelbaum
4557 &lt;a href=&quot;https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/&quot;&gt;observed
4558 that those listening on the Internet lines would have good reason to
4559 believe a computer have a given security hole&lt;/a&gt; if it download a
4560 security fix from a Debian mirror. This is a good reason to always
4561 use encrypted connections to the Debian mirror, to make sure those
4562 listening do not know which IP address to attack. In August, Richard
4563 Hartmann observed that encryption was not enough, when it was possible
4564 to interfere download size to security patches or the fact that
4565 download took place shortly after a security fix was released, and
4566 &lt;a href=&quot;http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/&quot;&gt;proposed
4567 to always use Tor to download packages from the Debian mirror&lt;/a&gt;. He
4568 was not the first to propose this, as the
4569 &lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/apt-transport-tor&quot;&gt;apt-transport-tor&lt;/a&gt;&lt;/tt&gt;
4570 package by Tim Retout already existed to make it easy to convince apt
4571 to use &lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor&lt;/a&gt;, but I was not
4572 aware of that package when I read the blog post from Richard.&lt;/p&gt;
4573
4574 &lt;p&gt;Richard discussed the idea with Peter Palfrader, one of the Debian
4575 sysadmins, and he set up a Tor hidden service on one of the central
4576 Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
4577 it possible to download packages directly between two tor nodes,
4578 making sure the network traffic always were encrypted.&lt;/p&gt;
4579
4580 &lt;p&gt;Here is a short recipe for enabling this on your machine, by
4581 installing &lt;tt&gt;apt-transport-tor&lt;/tt&gt; and replacing http and https
4582 urls with tor+http and tor+https, and using the hidden service instead
4583 of the official Debian mirror site. I recommend installing
4584 &lt;tt&gt;etckeeper&lt;/tt&gt; before you start to have a history of the changes
4585 done in /etc/.&lt;/p&gt;
4586
4587 &lt;blockquote&gt;&lt;pre&gt;
4588 apt install apt-transport-tor
4589 sed -i &#39;s% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%&#39; /etc/apt/sources.list
4590 sed -i &#39;s% http% tor+http%&#39; /etc/apt/sources.list
4591 &lt;/pre&gt;&lt;/blockquote&gt;
4592
4593 &lt;p&gt;If you have more sources listed in /etc/apt/sources.list.d/, run
4594 the sed commands for these too. The sed command is assuming your are
4595 using the ftp.debian.org Debian mirror. Adjust the command (or just
4596 edit the file manually) to match your mirror.&lt;/p&gt;
4597
4598 &lt;p&gt;This work in Debian Jessie and later. Note that tools like
4599 &lt;tt&gt;apt-file&lt;/tt&gt; only recently started using the apt transport
4600 system, and do not work with these tor+http URLs. For
4601 &lt;tt&gt;apt-file&lt;/tt&gt; you need the version currently in experimental,
4602 which need a recent apt version currently only in unstable. So if you
4603 need a working &lt;tt&gt;apt-file&lt;/tt&gt;, this is not for you.&lt;/p&gt;
4604
4605 &lt;p&gt;Another advantage from this change is that your machine will start
4606 using Tor regularly and at fairly random intervals (every time you
4607 update the package lists or upgrade or install a new package), thus
4608 masking other Tor traffic done from the same machine. Using Tor will
4609 become normal for the machine in question.&lt;/p&gt;
4610
4611 &lt;p&gt;On &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox&lt;/a&gt;, APT
4612 is set up by default to use &lt;tt&gt;apt-transport-tor&lt;/tt&gt; when Tor is
4613 enabled. It would be great if it was the default on any Debian
4614 system.&lt;/p&gt;
4615 </description>
4616 </item>
4617
4618 <item>
4619 <title>OpenALPR, find car license plates in video streams - nice free software</title>
4620 <link>https://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</link>
4621 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</guid>
4622 <pubDate>Wed, 23 Dec 2015 01:00:00 +0100</pubDate>
4623 <description>&lt;p&gt;When I was a kid, we used to collect &quot;car numbers&quot;, as we used to
4624 call the car license plate numbers in those days. I would write the
4625 numbers down in my little book and compare notes with the other kids
4626 to see how many region codes we had seen and if we had seen some
4627 exotic or special region codes and numbers. It was a fun game to pass
4628 time, as we kids have plenty of it.&lt;/p&gt;
4629
4630 &lt;p&gt;A few days I came across
4631 &lt;a href=&quot;https://github.com/openalpr/openalpr&quot;&gt;the OpenALPR
4632 project&lt;/a&gt;, a free software project to automatically discover and
4633 report license plates in images and video streams, and provide the
4634 &quot;car numbers&quot; in a machine readable format. I&#39;ve been looking for
4635 such system for a while now, because I believe it is a bad idea that the
4636 &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_number_plate_recognition&quot;&gt;automatic
4637 number plate recognition&lt;/a&gt; tool only is available in the hands of
4638 the powerful, and want it to be available also for the powerless to
4639 even the score when it comes to surveillance and sousveillance. I
4640 discovered the developer
4641 &lt;a href=&quot;https://bugs.debian.org/747509&quot;&gt;wanted to get the tool into
4642 Debian&lt;/a&gt;, and as I too wanted it to be in Debian, I volunteered to
4643 help him get it into shape to get the package uploaded into the Debian
4644 archive.&lt;/p&gt;
4645
4646 &lt;p&gt;Today we finally managed to get the package into shape and uploaded
4647 it into Debian, where it currently
4648 &lt;a href=&quot;https://ftp-master.debian.org//new/openalpr_2.2.1-1.html&quot;&gt;waits
4649 in the NEW queue&lt;/a&gt; for review by the Debian ftpmasters.&lt;/p&gt;
4650
4651 &lt;p&gt;I guess you are wondering why on earth such tool would be useful
4652 for the common folks, ie those not running a large government
4653 surveillance system? Well, I plan to put it in a computer on my bike
4654 and in my car, tracking the cars nearby and allowing me to be notified
4655 when number plates on my watch list are discovered. Another use case
4656 was suggested by a friend of mine, who wanted to set it up at his home
4657 to open the car port automatically when it discovered the plate on his
4658 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
4659 capable of placing his license plate number of a piece of cardboard to
4660 open his car port, men replied that it was always unlocked anyway. I
4661 guess for such use case it make sense. I am sure there are other use
4662 cases too, for those with imagination and a vision.&lt;/p&gt;
4663
4664 &lt;p&gt;If you want to build your own version of the Debian package, check
4665 out the upstream git source and symlink ./distros/debian to ./debian/
4666 before running &quot;debuild&quot; to build the source. Or wait a bit until the
4667 package show up in unstable.&lt;/p&gt;
4668 </description>
4669 </item>
4670
4671 <item>
4672 <title>Using appstream with isenkram to install hardware related packages in Debian</title>
4673 <link>https://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</link>
4674 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</guid>
4675 <pubDate>Sun, 20 Dec 2015 12:20:00 +0100</pubDate>
4676 <description>&lt;p&gt;Around three years ago, I created
4677 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;the isenkram
4678 system&lt;/a&gt; to get a more practical solution in Debian for handing
4679 hardware related packages. A GUI system in the isenkram package will
4680 present a pop-up dialog when some hardware dongle supported by
4681 relevant packages in Debian is inserted into the machine. The same
4682 lookup mechanism to detect packages is available as command line
4683 tools in the isenkram-cli package. In addition to mapping hardware,
4684 it will also map kernel firmware files to packages and make it easy to
4685 install needed firmware packages automatically. The key for this
4686 system to work is a good way to map hardware to packages, in other
4687 words, allow packages to announce what hardware they will work
4688 with.&lt;/p&gt;
4689
4690 &lt;p&gt;I started by providing data files in the isenkram source, and
4691 adding code to download the latest version of these data files at run
4692 time, to ensure every user had the most up to date mapping available.
4693 I also added support for storing the mapping in the Packages file in
4694 the apt repositories, but did not push this approach because while I
4695 was trying to figure out how to best store hardware/package mappings,
4696 &lt;a href=&quot;http://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
4697 appstream system&lt;/a&gt; was announced. I got in touch and suggested to
4698 add the hardware mapping into that data set to be able to use
4699 appstream as a data source, and this was accepted at least for the
4700 Debian version of appstream.&lt;/p&gt;
4701
4702 &lt;p&gt;A few days ago using appstream in Debian for this became possible,
4703 and today I uploaded a new version 0.20 of isenkram adding support for
4704 appstream as a data source for mapping hardware to packages. The only
4705 package so far using appstream to announce its hardware support is my
4706 pymissile package. I got help from Matthias Klumpp with figuring out
4707 how do add the required
4708 &lt;a href=&quot;https://appstream.debian.org/html/sid/main/metainfo/pymissile.html&quot;&gt;metadata
4709 in pymissile&lt;/a&gt;. I added a file debian/pymissile.metainfo.xml with
4710 this content:&lt;/p&gt;
4711
4712 &lt;blockquote&gt;&lt;pre&gt;
4713 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
4714 &amp;lt;component&amp;gt;
4715 &amp;lt;id&amp;gt;pymissile&amp;lt;/id&amp;gt;
4716 &amp;lt;metadata_license&amp;gt;MIT&amp;lt;/metadata_license&amp;gt;
4717 &amp;lt;name&amp;gt;pymissile&amp;lt;/name&amp;gt;
4718 &amp;lt;summary&amp;gt;Control original Striker USB Missile Launcher&amp;lt;/summary&amp;gt;
4719 &amp;lt;description&amp;gt;
4720 &amp;lt;p&amp;gt;
4721 Pymissile provides a curses interface to control an original
4722 Marks and Spencer / Striker USB Missile Launcher, as well as a
4723 motion control script to allow a webcamera to control the
4724 launcher.
4725 &amp;lt;/p&amp;gt;
4726 &amp;lt;/description&amp;gt;
4727 &amp;lt;provides&amp;gt;
4728 &amp;lt;modalias&amp;gt;usb:v1130p0202d*&amp;lt;/modalias&amp;gt;
4729 &amp;lt;/provides&amp;gt;
4730 &amp;lt;/component&amp;gt;
4731 &lt;/pre&gt;&lt;/blockquote&gt;
4732
4733 &lt;p&gt;The key for isenkram is the component/provides/modalias value,
4734 which is a glob style match rule for hardware specific strings
4735 (modalias strings) provided by the Linux kernel. In this case, it
4736 will map to all USB devices with vendor code 1130 and product code
4737 0202.&lt;/p&gt;
4738
4739 &lt;p&gt;Note, it is important that the license of all the metadata files
4740 are compatible to have permissions to aggregate them into archive wide
4741 appstream files. Matthias suggested to use MIT or BSD licenses for
4742 these files. A challenge is figuring out a good id for the data, as
4743 it is supposed to be globally unique and shared across distributions
4744 (in other words, best to coordinate with upstream what to use). But
4745 it can be changed later or, so we went with the package name as
4746 upstream for this project is dormant.&lt;/p&gt;
4747
4748 &lt;p&gt;To get the metadata file installed in the correct location for the
4749 mirror update scripts to pick it up and include its content the
4750 appstream data source, the file must be installed in the binary
4751 package under /usr/share/appdata/. I did this by adding the following
4752 line to debian/pymissile.install:&lt;/p&gt;
4753
4754 &lt;blockquote&gt;&lt;pre&gt;
4755 debian/pymissile.metainfo.xml usr/share/appdata
4756 &lt;/pre&gt;&lt;/blockquote&gt;
4757
4758 &lt;p&gt;With that in place, the command line tool isenkram-lookup will list
4759 all packages useful on the current computer automatically, and the GUI
4760 pop-up handler will propose to install the package not already
4761 installed if a hardware dongle is inserted into the machine in
4762 question.&lt;/p&gt;
4763
4764 &lt;p&gt;Details of the modalias field in appstream is available from the
4765 &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;DEP-11&lt;/a&gt; proposal.&lt;/p&gt;
4766
4767 &lt;p&gt;To locate the modalias values of all hardware present in a machine,
4768 try running this command on the command line:&lt;/p&gt;
4769
4770 &lt;blockquote&gt;&lt;pre&gt;
4771 cat $(find /sys/devices/|grep modalias)
4772 &lt;/pre&gt;&lt;/blockquote&gt;
4773
4774 &lt;p&gt;To learn more about the isenkram system, please check out
4775 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;my
4776 blog posts tagged isenkram&lt;/a&gt;.&lt;/p&gt;
4777 </description>
4778 </item>
4779
4780 <item>
4781 <title>The GNU General Public License is not magic pixie dust</title>
4782 <link>https://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</link>
4783 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</guid>
4784 <pubDate>Mon, 30 Nov 2015 09:55:00 +0100</pubDate>
4785 <description>&lt;p&gt;A blog post from my fellow Debian developer Paul Wise titled
4786 &quot;&lt;a href=&quot;http://bonedaddy.net/pabs3/log/2015/11/27/sfc-supporter/&quot;&gt;The
4787 GPL is not magic pixie dust&lt;/a&gt;&quot; explain the importance of making sure
4788 the &lt;a href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;GPL&lt;/a&gt; is enforced.
4789 I quote the blog post from Paul in full here with his permission:&lt;p&gt;
4790
4791 &lt;blockquote&gt;
4792
4793 &lt;p&gt;&lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;&lt;img src=&quot;https://sfconservancy.org/img/supporter-badge.png&quot; width=&quot;194&quot; height=&quot;90&quot; alt=&quot;Become a Software Freedom Conservancy Supporter!&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
4794
4795 &lt;blockquote&gt;
4796 The GPL is not magic pixie dust. It does not work by itself.&lt;br/&gt;
4797
4798 The first step is to choose a
4799 &lt;a href=&quot;https://copyleft.org/&quot;&gt;copyleft&lt;/a&gt; license for your
4800 code.&lt;br/&gt;
4801
4802 The next step is, when someone fails to follow that copyleft license,
4803 &lt;b&gt;it must be enforced&lt;/b&gt;&lt;br/&gt;
4804
4805 and its a simple fact of our modern society that such type of
4806 work&lt;br/&gt;
4807
4808 is incredibly expensive to do and incredibly difficult to do.
4809 &lt;/blockquote&gt;
4810
4811 &lt;p&gt;&lt;small&gt;-- &lt;a href=&quot;http://ebb.org/bkuhn/&quot;&gt;Bradley Kuhn&lt;/a&gt;, in
4812 &lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in Freedom&quot;&gt;FaiF&lt;/a&gt;
4813 &lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode
4814 0x57&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
4815
4816 &lt;p&gt;As the Debian Website
4817 &lt;a href=&quot;https://bugs.debian.org/794116&quot;&gt;used&lt;/a&gt;
4818 &lt;a href=&quot;https://anonscm.debian.org/viewvc/webwml/webwml/english/intro/free.wml?r1=1.24&amp;amp;r2=1.25&quot;&gt;to&lt;/a&gt;
4819 imply, public domain and permissively licensed software can lead to
4820 the production of more proprietary software as people discover useful
4821 software, extend it and or incorporate it into their hardware or
4822 software products. Copyleft licenses such as the GNU GPL were created
4823 to close off this avenue to the production of proprietary software but
4824 such licenses are not enough. With the ongoing adoption of Free
4825 Software by individuals and groups, inevitably the community&#39;s
4826 expectations of license compliance are violated, usually out of
4827 ignorance of the way Free Software works, but not always. As Karen
4828 and Bradley explained in &lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in
4829 Freedom&quot;&gt;FaiF&lt;/a&gt;
4830 &lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode 0x57&lt;/a&gt;,
4831 copyleft is nothing if no-one is willing and able to stand up in court
4832 to protect it. The reality of today&#39;s world is that legal
4833 representation is expensive, difficult and time consuming. With
4834 &lt;a href=&quot;http://gpl-violations.org/&quot;&gt;gpl-violations.org&lt;/a&gt; in hiatus
4835 &lt;a href=&quot;http://gpl-violations.org/news/20151027-homepage-recovers/&quot;&gt;until&lt;/a&gt;
4836 some time in 2016, the &lt;a href=&quot;https://sfconservancy.org/&quot;&gt;Software
4837 Freedom Conservancy&lt;/a&gt; (a tax-exempt charity) is the major defender
4838 of the Linux project, Debian and other groups against GPL violations.
4839 In March the SFC supported a
4840 &lt;a href=&quot;https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit/&quot;&gt;lawsuit
4841 by Christoph Hellwig&lt;/a&gt; against VMware for refusing to
4842 &lt;a href=&quot;https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html&quot;&gt;comply
4843 with the GPL&lt;/a&gt; in relation to their use of parts of the Linux
4844 kernel. Since then two of their sponsors pulled corporate funding and
4845 conferences
4846 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;blocked
4847 or cancelled their talks&lt;/a&gt;. As a result they have decided to rely
4848 less on corporate funding and more on the broad community of
4849 individuals who support Free Software and copyleft. So the SFC has
4850 &lt;a href=&quot;https://sfconservancy.org/news/2015/nov/23/2015fundraiser/&quot;&gt;launched&lt;/a&gt;
4851 a &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;campaign&lt;/a&gt; to create
4852 a community of folks who stand up for copyleft and the GPL by
4853 supporting their work on promoting and supporting copyleft and Free
4854 Software.&lt;/p&gt;
4855
4856 &lt;p&gt;If you support Free Software,
4857 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/26/like-what-I-do/&quot;&gt;like&lt;/a&gt;
4858 what the SFC do, agree with their
4859 &lt;a href=&quot;https://sfconservancy.org/linux-compliance/principles.html&quot;&gt;compliance
4860 principles&lt;/a&gt;, are happy about their
4861 &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;successes&lt;/a&gt; in 2015,
4862 work on a project that is an SFC
4863 &lt;a href=&quot;https://sfconservancy.org/members/current/&quot;&gt;member&lt;/a&gt; and or
4864 just want to stand up for copyleft, please join
4865 &lt;a href=&quot;https://identi.ca/cwebber/image/JQGPA4qbTyyp3-MY8QpvuA&quot;&gt;Christopher
4866 Allan Webber&lt;/a&gt;,
4867 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;Carol
4868 Smith&lt;/a&gt;,
4869 &lt;a href=&quot;http://www.jonobacon.org/2015/11/25/supporting-software-freedom-conservancy/&quot;&gt;Jono
4870 Bacon&lt;/a&gt;, myself and
4871 &lt;a href=&quot;https://sfconservancy.org/sponsors/#supporters&quot;&gt;others&lt;/a&gt; in
4872 becoming a
4873 &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;supporter&lt;/a&gt;. For the
4874 next week your donation will be
4875 &lt;a href=&quot;https://sfconservancy.org/news/2015/nov/27/black-friday/&quot;&gt;matched&lt;/a&gt;
4876 by an anonymous donor. Please also consider asking your employer to
4877 match your donation or become a sponsor of SFC. Don&#39;t forget to
4878 spread the word about your support for SFC via email, your blog and or
4879 social media accounts.&lt;/p&gt;
4880
4881 &lt;/blockquote&gt;
4882
4883 &lt;p&gt;I agree with Paul on this topic and just signed up as a Supporter
4884 of Software Freedom Conservancy myself. Perhaps you should be a
4885 supporter too?&lt;/p&gt;
4886 </description>
4887 </item>
4888
4889 <item>
4890 <title>PGP key transition statement for key EE4E02F9</title>
4891 <link>https://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</link>
4892 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</guid>
4893 <pubDate>Tue, 17 Nov 2015 10:50:00 +0100</pubDate>
4894 <description>&lt;p&gt;I&#39;ve needed a new OpenPGP key for a while, but have not had time to
4895 set it up properly. I wanted to generate it offline and have it
4896 available on &lt;a href=&quot;http://shop.kernelconcepts.de/#openpgp&quot;&gt;a OpenPGP
4897 smart card&lt;/a&gt; for daily use, and learning how to do it and finding
4898 time to sit down with an offline machine almost took forever. But
4899 finally I&#39;ve been able to complete the process, and have now moved
4900 from my old GPG key to a new GPG key. See
4901 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2015-11-17-new-gpg-key-transition.txt&quot;&gt;the
4902 full transition statement, signed with both my old and new key&lt;/a&gt; for
4903 the details. This is my new key:&lt;/p&gt;
4904
4905 &lt;pre&gt;
4906 pub 3936R/&lt;a href=&quot;http://pgp.cs.uu.nl/stats/111D6B29EE4E02F9.html&quot;&gt;111D6B29EE4E02F9&lt;/a&gt; 2015-11-03 [expires: 2019-11-14]
4907 Key fingerprint = 3AC7 B2E3 ACA5 DF87 78F1 D827 111D 6B29 EE4E 02F9
4908 uid Petter Reinholdtsen &amp;lt;pere@hungry.com&amp;gt;
4909 uid Petter Reinholdtsen &amp;lt;pere@debian.org&amp;gt;
4910 sub 4096R/87BAFB0E 2015-11-03 [expires: 2019-11-02]
4911 sub 4096R/F91E6DE9 2015-11-03 [expires: 2019-11-02]
4912 sub 4096R/A0439BAB 2015-11-03 [expires: 2019-11-02]
4913 &lt;/pre&gt;
4914
4915 &lt;p&gt;The key can be downloaded from the OpenPGP key servers, signed by
4916 my old key.&lt;/p&gt;
4917
4918 &lt;p&gt;If you signed my old key
4919 (&lt;a href=&quot;http://pgp.cs.uu.nl/stats/DB4CCC4B2A30D729.html&quot;&gt;DB4CCC4B2A30D729&lt;/a&gt;),
4920 I&#39;d very much appreciate a signature on my new key, details and
4921 instructions in the transition statement. I m happy to reciprocate if
4922 you have a similarly signed transition statement to present.&lt;/p&gt;
4923 </description>
4924 </item>
4925
4926 <item>
4927 <title>The life and death of a laptop battery</title>
4928 <link>https://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</link>
4929 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</guid>
4930 <pubDate>Thu, 24 Sep 2015 16:00:00 +0200</pubDate>
4931 <description>&lt;p&gt;When I get a new laptop, the battery life time at the start is OK.
4932 But this do not last. The last few laptops gave me a feeling that
4933 within a year, the life time is just a fraction of what it used to be,
4934 and it slowly become painful to use the laptop without power connected
4935 all the time. Because of this, when I got a new Thinkpad X230 laptop
4936 about two years ago, I decided to monitor its battery state to have
4937 more hard facts when the battery started to fail.&lt;/p&gt;
4938
4939 &lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2015-09-24-laptop-battery-graph.png&quot;/&gt;
4940
4941 &lt;p&gt;First I tried to find a sensible Debian package to record the
4942 battery status, assuming that this must be a problem already handled
4943 by someone else. I found
4944 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;,
4945 which collects statistics from the battery, but it was completely
4946 broken. I sent a few suggestions to the maintainer, but decided to
4947 write my own collector as a shell script while I waited for feedback
4948 from him. Via
4949 &lt;a href=&quot;http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html&quot;&gt;a
4950 blog post about the battery development on a MacBook Air&lt;/a&gt; I also
4951 discovered
4952 &lt;a href=&quot;https://github.com/jradavenport/batlog.git&quot;&gt;batlog&lt;/a&gt;, not
4953 available in Debian.&lt;/p&gt;
4954
4955 &lt;p&gt;I started my collector 2013-07-15, and it has been collecting
4956 battery stats ever since. Now my
4957 /var/log/hjemmenett-battery-status.log file contain around 115,000
4958 measurements, from the time the battery was working great until now,
4959 when it is unable to charge above 7% of original capacity. My
4960 collector shell script is quite simple and look like this:&lt;/p&gt;
4961
4962 &lt;pre&gt;
4963 #!/bin/sh
4964 # Inspired by
4965 # http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
4966 # See also
4967 # http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
4968 logfile=/var/log/hjemmenett-battery-status.log
4969
4970 files=&quot;manufacturer model_name technology serial_number \
4971 energy_full energy_full_design energy_now cycle_count status&quot;
4972
4973 if [ ! -e &quot;$logfile&quot; ] ; then
4974 (
4975 printf &quot;timestamp,&quot;
4976 for f in $files; do
4977 printf &quot;%s,&quot; $f
4978 done
4979 echo
4980 ) &gt; &quot;$logfile&quot;
4981 fi
4982
4983 log_battery() {
4984 # Print complete message in one echo call, to avoid race condition
4985 # when several log processes run in parallel.
4986 msg=$(printf &quot;%s,&quot; $(date +%s); \
4987 for f in $files; do \
4988 printf &quot;%s,&quot; $(cat $f); \
4989 done)
4990 echo &quot;$msg&quot;
4991 }
4992
4993 cd /sys/class/power_supply
4994
4995 for bat in BAT*; do
4996 (cd $bat &amp;&amp; log_battery &gt;&gt; &quot;$logfile&quot;)
4997 done
4998 &lt;/pre&gt;
4999
5000 &lt;p&gt;The script is called when the power management system detect a
5001 change in the power status (power plug in or out), and when going into
5002 and out of hibernation and suspend. In addition, it collect a value
5003 every 10 minutes. This make it possible for me know when the battery
5004 is discharging, charging and how the maximum charge change over time.
5005 The code for the Debian package
5006 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-status&quot;&gt;is now
5007 available on github&lt;/a&gt;.&lt;/p&gt;
5008
5009 &lt;p&gt;The collected log file look like this:&lt;/p&gt;
5010
5011 &lt;pre&gt;
5012 timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status,
5013 1376591133,LGC,45N1025,Li-ion,974,62800000,62160000,39050000,0,Discharging,
5014 [...]
5015 1443090528,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
5016 1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
5017 &lt;/pre&gt;
5018
5019 &lt;p&gt;I wrote a small script to create a graph of the charge development
5020 over time. This graph depicted above show the slow death of my laptop
5021 battery.&lt;/p&gt;
5022
5023 &lt;p&gt;But why is this happening? Why are my laptop batteries always
5024 dying in a year or two, while the batteries of space probes and
5025 satellites keep working year after year. If we are to believe
5026 &lt;a href=&quot;http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries&quot;&gt;Battery
5027 University&lt;/a&gt;, the cause is me charging the battery whenever I have a
5028 chance, and the fix is to not charge the Lithium-ion batteries to 100%
5029 all the time, but to stay below 90% of full charge most of the time.
5030 I&#39;ve been told that the Tesla electric cars
5031 &lt;a href=&quot;http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit&quot;&gt;limit
5032 the charge of their batteries to 80%&lt;/a&gt;, with the option to charge to
5033 100% when preparing for a longer trip (not that I would want a car
5034 like Tesla where rights to privacy is abandoned, but that is another
5035 story), which I guess is the option we should have for laptops on
5036 Linux too.&lt;/p&gt;
5037
5038 &lt;p&gt;Is there a good and generic way with Linux to tell the battery to
5039 stop charging at 80%, unless requested to charge to 100% once in
5040 preparation for a longer trip? I found
5041 &lt;a href=&quot;http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity&quot;&gt;one
5042 recipe on askubuntu for Ubuntu to limit charging on Thinkpad to
5043 80%&lt;/a&gt;, but could not get it to work (kernel module refused to
5044 load).&lt;/p&gt;
5045
5046 &lt;p&gt;I wonder why the battery capacity was reported to be more than 100%
5047 at the start. I also wonder why the &quot;full capacity&quot; increases some
5048 times, and if it is possible to repeat the process to get the battery
5049 back to design capacity. And I wonder if the discharge and charge
5050 speed change over time, or if this stay the same. I did not yet try
5051 to write a tool to calculate the derivative values of the battery
5052 level, but suspect some interesting insights might be learned from
5053 those.&lt;/p&gt;
5054
5055 &lt;p&gt;Update 2015-09-24: I got a tip to install the packages
5056 acpi-call-dkms and tlp (unfortunately missing in Debian stable)
5057 packages instead of the tp-smapi-dkms package I had tried to use
5058 initially, and use &#39;tlp setcharge 40 80&#39; to change when charging start
5059 and stop. I&#39;ve done so now, but expect my existing battery is toast
5060 and need to be replaced. The proposal is unfortunately Thinkpad
5061 specific.&lt;/p&gt;
5062 </description>
5063 </item>
5064
5065 <item>
5066 <title>New laptop - some more clues and ideas based on feedback</title>
5067 <link>https://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</link>
5068 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</guid>
5069 <pubDate>Sun, 5 Jul 2015 21:40:00 +0200</pubDate>
5070 <description>&lt;p&gt;Several people contacted me after my previous blog post about my
5071 need for a new laptop, and provided very useful feedback. I wish to
5072 thank every one of these. Several pointed me to the possibility of
5073 fixing my X230, and I am already in the process of getting Lenovo to
5074 do so thanks to the on site, next day support contract covering the
5075 machine. But the battery is almost useless (I expect to replace it
5076 with a non-official battery) and I do not expect the machine to live
5077 for many more years, so it is time to plan its replacement. If I did
5078 not have a support contract, it was suggested to find replacement parts
5079 using &lt;a href=&quot;http://www.francecrans.com/&quot;&gt;FrancEcrans&lt;/a&gt;, but it
5080 might present a language barrier as I do not understand French.&lt;/p&gt;
5081
5082 &lt;p&gt;One tip I got was to use the
5083 &lt;a href=&quot;https://skinflint.co.uk/?cat=nb&quot;&gt;Skinflint&lt;/a&gt; web service to
5084 compare laptop models. It seem to have more models available than
5085 prisjakt.no. Another tip I got from someone I know have similar
5086 keyboard preferences was that the HP EliteBook 840 keyboard is not
5087 very good, and this matches my experience with earlier EliteBook
5088 keyboards I tested. Because of this, I will not consider it any further.
5089
5090 &lt;p&gt;When I wrote my blog post, I was not aware of Thinkpad X250, the
5091 newest Thinkpad X model. The keyboard reintroduces mouse buttons
5092 (which is missing from the X240), and is working fairly well with
5093 Debian Sid/Unstable according to
5094 &lt;a href=&quot;http://www.corsac.net/X250/&quot;&gt;Corsac.net&lt;/a&gt;. The reports I
5095 got on the keyboard quality are not consistent. Some say the keyboard
5096 is good, others say it is ok, while others say it is not very good.
5097 Those with experience from X41 and and X60 agree that the X250
5098 keyboard is not as good as those trusty old laptops, and suggest I
5099 keep and fix my X230 instead of upgrading, or get a used X230 to
5100 replace it. I&#39;m also told that the X250 lack leds for caps lock, disk
5101 activity and battery status, which is very convenient on my X230. I&#39;m
5102 also told that the CPU fan is running very often, making it a bit
5103 noisy. In any case, the X250 do not work out of the box with Debian
5104 Stable/Jessie, one of my requirements.&lt;/p&gt;
5105
5106 &lt;p&gt;I have also gotten a few vendor proposals, one was
5107 &lt;a href=&quot;http://pro-star.com&quot;&gt;Pro-Star&lt;/a&gt;, another was
5108 &lt;a href=&quot;http://shop.gluglug.org.uk/product/libreboot-x200/&quot;&gt;Libreboot&lt;/a&gt;.
5109 The latter look very attractive to me.&lt;/p&gt;
5110
5111 &lt;p&gt;Again, thank you all for the very useful feedback. It help a lot
5112 as I keep looking for a replacement.&lt;/p&gt;
5113
5114 &lt;p&gt;Update 2015-07-06: I was recommended to check out the
5115 &lt;a href=&quot;&quot;&gt;lapstore.de&lt;/a&gt; web shop for used laptops. They got several
5116 different
5117 &lt;a href=&quot;http://www.lapstore.de/f.php/shop/lapstore/f/411/lang/x/kw/Lenovo_ThinkPad_X_Serie/&quot;&gt;old
5118 thinkpad X models&lt;/a&gt;, and provide one year warranty.&lt;/p&gt;
5119 </description>
5120 </item>
5121
5122 <item>
5123 <title>Time to find a new laptop, as the old one is broken after only two years</title>
5124 <link>https://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</link>
5125 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</guid>
5126 <pubDate>Fri, 3 Jul 2015 07:10:00 +0200</pubDate>
5127 <description>&lt;p&gt;My primary work horse laptop is failing, and will need a
5128 replacement soon. The left 5 cm of the screen on my Thinkpad X230
5129 started flickering yesterday, and I suspect the cause is a broken
5130 cable, as changing the angle of the screen some times get rid of the
5131 flickering.&lt;/p&gt;
5132
5133 &lt;p&gt;My requirements have not really changed since I bought it, and is
5134 still as
5135 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html&quot;&gt;I
5136 described them in 2013&lt;/a&gt;. The last time I bought a laptop, I had
5137 good help from
5138 &lt;a href=&quot;http://www.prisjakt.no/category.php?k=353&quot;&gt;prisjakt.no&lt;/a&gt;
5139 where I could select at least a few of the requirements (mouse pin,
5140 wifi, weight) and go through the rest manually. Three button mouse
5141 and a good keyboard is not available as an option, and all the three
5142 laptop models proposed today (Thinkpad X240, HP EliteBook 820 G1 and
5143 G2) lack three mouse buttons). It is also unclear to me how good the
5144 keyboard on the HP EliteBooks are. I hope Lenovo have not messed up
5145 the keyboard, even if the quality and robustness in the X series have
5146 deteriorated since X41.&lt;/p&gt;
5147
5148 &lt;p&gt;I wonder how I can find a sensible laptop when none of the options
5149 seem sensible to me? Are there better services around to search the
5150 set of available laptops for features? Please send me an email if you
5151 have suggestions.&lt;/p&gt;
5152
5153 &lt;p&gt;Update 2015-07-23: I got a suggestion to check out the FSF
5154 &lt;a href=&quot;http://www.fsf.org/resources/hw/endorsement/respects-your-freedom&quot;&gt;list
5155 of endorsed hardware&lt;/a&gt;, which is useful background information.&lt;/p&gt;
5156 </description>
5157 </item>
5158
5159 <item>
5160 <title>How to stay with sysvinit in Debian Jessie</title>
5161 <link>https://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</link>
5162 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</guid>
5163 <pubDate>Sat, 22 Nov 2014 01:00:00 +0100</pubDate>
5164 <description>&lt;p&gt;By now, it is well known that Debian Jessie will not be using
5165 sysvinit as its boot system by default. But how can one keep using
5166 sysvinit in Jessie? It is fairly easy, and here are a few recipes,
5167 courtesy of
5168 &lt;a href=&quot;http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html&quot;&gt;Erich
5169 Schubert&lt;/a&gt; and
5170 &lt;a href=&quot;http://smcv.pseudorandom.co.uk/2014/still_universal/&quot;&gt;Simon
5171 McVittie&lt;/a&gt;.
5172
5173 &lt;p&gt;If you already are using Wheezy and want to upgrade to Jessie and
5174 keep sysvinit as your boot system, create a file
5175 &lt;tt&gt;/etc/apt/preferences.d/use-sysvinit&lt;/tt&gt; with this content before
5176 you upgrade:&lt;/p&gt;
5177
5178 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5179 Package: systemd-sysv
5180 Pin: release o=Debian
5181 Pin-Priority: -1
5182 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
5183
5184 &lt;p&gt;This file content will tell apt and aptitude to not consider
5185 installing systemd-sysv as part of any installation and upgrade
5186 solution when resolving dependencies, and thus tell it to avoid
5187 systemd as a default boot system. The end result should be that the
5188 upgraded system keep using sysvinit.&lt;/p&gt;
5189
5190 &lt;p&gt;If you are installing Jessie for the first time, there is no way to
5191 get sysvinit installed by default (debootstrap used by
5192 debian-installer have no option for this), but one can tell the
5193 installer to switch to sysvinit before the first boot. Either by
5194 using a kernel argument to the installer, or by adding a line to the
5195 preseed file used. First, the kernel command line argument:
5196
5197 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5198 preseed/late_command=&quot;in-target apt-get install --purge -y sysvinit-core&quot;
5199 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
5200
5201 &lt;p&gt;Next, the line to use in a preseed file:&lt;/p&gt;
5202
5203 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5204 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
5205 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
5206
5207 &lt;p&gt;One can of course also do this after the first boot by installing
5208 the sysvinit-core package.&lt;/p&gt;
5209
5210 &lt;p&gt;I recommend only using sysvinit if you really need it, as the
5211 sysvinit boot sequence in Debian have several hardware specific bugs
5212 on Linux caused by the fact that it is unpredictable when hardware
5213 devices show up during boot. But on the other hand, the new default
5214 boot system still have a few rough edges I hope will be fixed before
5215 Jessie is released.&lt;/p&gt;
5216
5217 &lt;p&gt;Update 2014-11-26: Inspired by
5218 &lt;ahref=&quot;https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg&quot;&gt;a
5219 blog post by Torsten Glaser&lt;/a&gt;, added --purge to the preseed
5220 line.&lt;/p&gt;
5221 </description>
5222 </item>
5223
5224 <item>
5225 <title>A Debian package for SMTP via Tor (aka SMTorP) using exim4</title>
5226 <link>https://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</link>
5227 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</guid>
5228 <pubDate>Mon, 10 Nov 2014 13:40:00 +0100</pubDate>
5229 <description>&lt;p&gt;The right to communicate with your friends and family in private,
5230 without anyone snooping, is a right every citicen have in a liberal
5231 democracy. But this right is under serious attack these days.&lt;/p&gt;
5232
5233 &lt;p&gt;A while back it occurred to me that one way to make the dragnet
5234 surveillance conducted by NSA, GCHQ, FRA and others (and confirmed by
5235 the whisleblower Snowden) more expensive for Internet email,
5236 is to deliver all email using SMTP via Tor. Such SMTP option would be
5237 a nice addition to the FreedomBox project if we could send email
5238 between FreedomBox machines without leaking metadata about the emails
5239 to the people peeking on the wire. I
5240 &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/freedombox-discuss/2014-October/006493.html&quot;&gt;proposed
5241 this on the FreedomBox project mailing list in October&lt;/a&gt; and got a
5242 lot of useful feedback and suggestions. It also became obvious to me
5243 that this was not a novel idea, as the same idea was tested and
5244 documented by Johannes Berg as early as 2006, and both
5245 &lt;a href=&quot;https://github.com/pagekite/Mailpile/wiki/SMTorP&quot;&gt;the
5246 Mailpile&lt;/a&gt; and &lt;a href=&quot;http://dee.su/cables&quot;&gt;the Cables&lt;/a&gt; systems
5247 propose a similar method / protocol to pass emails between users.&lt;/p&gt;
5248
5249 &lt;p&gt;To implement such system one need to set up a Tor hidden service
5250 providing the SMTP protocol on port 25, and use email addresses
5251 looking like username@hidden-service-name.onion. With such addresses
5252 the connections to port 25 on hidden-service-name.onion using Tor will
5253 go to the correct SMTP server. To do this, one need to configure the
5254 Tor daemon to provide the hidden service and the mail server to accept
5255 emails for this .onion domain. To learn more about Exim configuration
5256 in Debian and test the design provided by Johannes Berg in his FAQ, I
5257 set out yesterday to create a Debian package for making it trivial to
5258 set up such SMTP over Tor service based on Debian. Getting it to work
5259 were fairly easy, and
5260 &lt;a href=&quot;https://github.com/petterreinholdtsen/exim4-smtorp&quot;&gt;the
5261 source code for the Debian package&lt;/a&gt; is available from github. I
5262 plan to move it into Debian if further testing prove this to be a
5263 useful approach.&lt;/p&gt;
5264
5265 &lt;p&gt;If you want to test this, set up a blank Debian machine without any
5266 mail system installed (or run &lt;tt&gt;apt-get purge exim4-config&lt;/tt&gt; to
5267 get rid of exim4). Install tor, clone the git repository mentioned
5268 above, build the deb and install it on the machine. Next, run
5269 &lt;tt&gt;/usr/lib/exim4-smtorp/setup-exim-hidden-service&lt;/tt&gt; and follow
5270 the instructions to get the service up and running. Restart tor and
5271 exim when it is done, and test mail delivery using swaks like
5272 this:&lt;/p&gt;
5273
5274 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5275 torsocks swaks --server dutlqrrmjhtfa3vp.onion \
5276 --to fbx@dutlqrrmjhtfa3vp.onion
5277 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5278
5279 &lt;p&gt;This will test the SMTP delivery using tor. Replace the email
5280 address with your own address to test your server. :)&lt;/p&gt;
5281
5282 &lt;p&gt;The setup procedure is still to complex, and I hope it can be made
5283 easier and more automatic. Especially the tor setup need more work.
5284 Also, the package include a tor-smtp tool written in C, but its task
5285 should probably be rewritten in some script language to make the deb
5286 architecture independent. It would probably also make the code easier
5287 to review. The tor-smtp tool currently need to listen on a socket for
5288 exim to talk to it and is started using xinetd. It would be better if
5289 no daemon and no socket is needed. I suspect it is possible to get
5290 exim to run a command line tool for delivery instead of talking to a
5291 socket, and hope to figure out how in a future version of this
5292 system.&lt;/p&gt;
5293
5294 &lt;p&gt;Until I wipe my test machine, I can be reached using the
5295 &lt;tt&gt;fbx@dutlqrrmjhtfa3vp.onion&lt;/tt&gt; mail address, deliverable over
5296 SMTorP. :)&lt;/p&gt;
5297 </description>
5298 </item>
5299
5300 <item>
5301 <title>listadmin, the quick way to moderate mailman lists - nice free software</title>
5302 <link>https://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</link>
5303 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</guid>
5304 <pubDate>Wed, 22 Oct 2014 20:00:00 +0200</pubDate>
5305 <description>&lt;p&gt;If you ever had to moderate a mailman list, like the ones on
5306 alioth.debian.org, you know the web interface is fairly slow to
5307 operate. First you visit one web page, enter the moderation password
5308 and get a new page shown with a list of all the messages to moderate
5309 and various options for each email address. This take a while for
5310 every list you moderate, and you need to do it regularly to do a good
5311 job as a list moderator. But there is a quick alternative,
5312 &lt;a href=&quot;http://heim.ifi.uio.no/kjetilho/hacks/#listadmin&quot;&gt;the
5313 listadmin program&lt;/a&gt;. It allow you to check lists for new messages
5314 to moderate in a fraction of a second. Here is a test run on two
5315 lists I recently took over:&lt;/p&gt;
5316
5317 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5318 % time listadmin xiph
5319 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
5320 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
5321
5322 real 0m1.709s
5323 user 0m0.232s
5324 sys 0m0.012s
5325 %
5326 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5327
5328 &lt;p&gt;In 1.7 seconds I had checked two mailing lists and confirmed that
5329 there are no message in the moderation queue. Every morning I
5330 currently moderate 68 mailman lists, and it normally take around two
5331 minutes. When I took over the two pkg-xiph lists above a few days
5332 ago, there were 400 emails waiting in the moderator queue. It took me
5333 less than 15 minutes to process them all using the listadmin
5334 program.&lt;/p&gt;
5335
5336 &lt;p&gt;If you install
5337 &lt;a href=&quot;https://tracker.debian.org/pkg/listadmin&quot;&gt;the listadmin
5338 package&lt;/a&gt; from Debian and create a file &lt;tt&gt;~/.listadmin.ini&lt;/tt&gt;
5339 with content like this, the moderation task is a breeze:&lt;/p&gt;
5340
5341 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5342 username username@example.org
5343 spamlevel 23
5344 default discard
5345 discard_if_reason &quot;Posting restricted to members only. Remove us from your mail list.&quot;
5346
5347 password secret
5348 adminurl https://{domain}/mailman/admindb/{list}
5349 mailman-list@lists.example.com
5350
5351 password hidden
5352 other-list@otherserver.example.org
5353 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5354
5355 &lt;p&gt;There are other options to set as well. Check the manual page to
5356 learn the details.&lt;/p&gt;
5357
5358 &lt;p&gt;If you are forced to moderate lists on a mailman installation where
5359 the SSL certificate is self signed or not properly signed by a
5360 generally accepted signing authority, you can set a environment
5361 variable when calling listadmin to disable SSL verification:&lt;/p&gt;
5362
5363 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5364 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
5365 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5366
5367 &lt;p&gt;If you want to moderate a subset of the lists you take care of, you
5368 can provide an argument to the listadmin script like I do in the
5369 initial screen dump (the xiph argument). Using an argument, only
5370 lists matching the argument string will be processed. This make it
5371 quick to accept messages if you notice the moderation request in your
5372 email.&lt;/p&gt;
5373
5374 &lt;p&gt;Without the listadmin program, I would never be the moderator of 68
5375 mailing lists, as I simply do not have time to spend on that if the
5376 process was any slower. The listadmin program have saved me hours of
5377 time I could spend elsewhere over the years. It truly is nice free
5378 software.&lt;/p&gt;
5379
5380 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
5381 activities, please send Bitcoin donations to my address
5382 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
5383
5384 &lt;p&gt;Update 2014-10-27: Added missing &#39;username&#39; statement in
5385 configuration example. Also, I&#39;ve been told that the
5386 PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not
5387 sure why.&lt;/p&gt;
5388 </description>
5389 </item>
5390
5391 <item>
5392 <title>Debian Jessie, PXE and automatic firmware installation</title>
5393 <link>https://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</link>
5394 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</guid>
5395 <pubDate>Fri, 17 Oct 2014 14:10:00 +0200</pubDate>
5396 <description>&lt;p&gt;When PXE installing laptops with Debian, I often run into the
5397 problem that the WiFi card require some firmware to work properly.
5398 And it has been a pain to fix this using preseeding in Debian.
5399 Normally something more is needed. But thanks to
5400 &lt;a href=&quot;https://packages.qa.debian.org/i/isenkram.html&quot;&gt;my isenkram
5401 package&lt;/a&gt; and its recent tasksel extension, it has now become easy
5402 to do this using simple preseeding.&lt;/p&gt;
5403
5404 &lt;p&gt;The isenkram-cli package provide tasksel tasks which will install
5405 firmware for the hardware found in the machine (actually, requested by
5406 the kernel modules for the hardware). (It can also install user space
5407 programs supporting the hardware detected, but that is not the focus
5408 of this story.)&lt;/p&gt;
5409
5410 &lt;p&gt;To get this working in the default installation, two preeseding
5411 values are needed. First, the isenkram-cli package must be installed
5412 into the target chroot (aka the hard drive) before tasksel is executed
5413 in the pkgsel step of the debian-installer system. This is done by
5414 preseeding the base-installer/includes debconf value to include the
5415 isenkram-cli package. The package name is next passed to debootstrap
5416 for installation. With the isenkram-cli package in place, tasksel
5417 will automatically use the isenkram tasks to detect hardware specific
5418 packages for the machine being installed and install them, because
5419 isenkram-cli contain tasksel tasks.&lt;/p&gt;
5420
5421 &lt;p&gt;Second, one need to enable the non-free APT repository, because
5422 most firmware unfortunately is non-free. This is done by preseeding
5423 the apt-mirror-setup step. This is unfortunate, but for a lot of
5424 hardware it is the only option in Debian.&lt;/p&gt;
5425
5426 &lt;p&gt;The end result is two lines needed in your preseeding file to get
5427 firmware installed automatically by the installer:&lt;/p&gt;
5428
5429 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5430 base-installer base-installer/includes string isenkram-cli
5431 apt-mirror-setup apt-setup/non-free boolean true
5432 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5433
5434 &lt;p&gt;The current version of isenkram-cli in testing/jessie will install
5435 both firmware and user space packages when using this method. It also
5436 do not work well, so use version 0.15 or later. Installing both
5437 firmware and user space packages might give you a bit more than you
5438 want, so I decided to split the tasksel task in two, one for firmware
5439 and one for user space programs. The firmware task is enabled by
5440 default, while the one for user space programs is not. This split is
5441 implemented in the package currently in unstable.&lt;/p&gt;
5442
5443 &lt;p&gt;If you decide to give this a go, please let me know (via email) how
5444 this recipe work for you. :)&lt;/p&gt;
5445
5446 &lt;p&gt;So, I bet you are wondering, how can this work. First and
5447 foremost, it work because tasksel is modular, and driven by whatever
5448 files it find in /usr/lib/tasksel/ and /usr/share/tasksel/. So the
5449 isenkram-cli package place two files for tasksel to find. First there
5450 is the task description file (/usr/share/tasksel/descs/isenkram.desc):&lt;/p&gt;
5451
5452 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5453 Task: isenkram-packages
5454 Section: hardware
5455 Description: Hardware specific packages (autodetected by isenkram)
5456 Based on the detected hardware various hardware specific packages are
5457 proposed.
5458 Test-new-install: show show
5459 Relevance: 8
5460 Packages: for-current-hardware
5461
5462 Task: isenkram-firmware
5463 Section: hardware
5464 Description: Hardware specific firmware packages (autodetected by isenkram)
5465 Based on the detected hardware various hardware specific firmware
5466 packages are proposed.
5467 Test-new-install: mark show
5468 Relevance: 8
5469 Packages: for-current-hardware-firmware
5470 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5471
5472 &lt;p&gt;The key parts are Test-new-install which indicate how the task
5473 should be handled and the Packages line referencing to a script in
5474 /usr/lib/tasksel/packages/. The scripts use other scripts to get a
5475 list of packages to install. The for-current-hardware-firmware script
5476 look like this to list relevant firmware for the machine:
5477
5478 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5479 #!/bin/sh
5480 #
5481 PATH=/usr/sbin:$PATH
5482 export PATH
5483 isenkram-autoinstall-firmware -l
5484 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5485
5486 &lt;p&gt;With those two pieces in place, the firmware is installed by
5487 tasksel during the normal d-i run. :)&lt;/p&gt;
5488
5489 &lt;p&gt;If you want to test what tasksel will install when isenkram-cli is
5490 installed, run &lt;tt&gt;DEBIAN_PRIORITY=critical tasksel --test
5491 --new-install&lt;/tt&gt; to get the list of packages that tasksel would
5492 install.&lt;/p&gt;
5493
5494 &lt;p&gt;&lt;a href=&quot;https://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; will be
5495 pilots in testing this feature, as isenkram is used there now to
5496 install firmware, replacing the earlier scripts.&lt;/p&gt;
5497 </description>
5498 </item>
5499
5500 <item>
5501 <title>Ubuntu used to show the bread prizes at ICA Storo</title>
5502 <link>https://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html</link>
5503 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html</guid>
5504 <pubDate>Sat, 4 Oct 2014 15:20:00 +0200</pubDate>
5505 <description>&lt;p&gt;Today I came across an unexpected Ubuntu boot screen. Above the
5506 bread shelf on the ICA shop at Storo in Oslo, the grub menu of Ubuntu
5507 with Linux kernel 3.2.0-23 (ie probably version 12.04 LTS) was stuck
5508 on a screen normally showing the bread types and prizes:&lt;/p&gt;
5509
5510 &lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;70%&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2014-10-04-ubuntu-ica-storo-crop.jpeg&quot;&gt;&lt;/p&gt;
5511
5512 &lt;p&gt;If it had booted as it was supposed to, I would never had known
5513 about this hidden Linux installation. It is interesting what
5514 &lt;a href=&quot;http://revealingerrors.com/&quot;&gt;errors can reveal&lt;/a&gt;.&lt;/p&gt;
5515 </description>
5516 </item>
5517
5518 <item>
5519 <title>New lsdvd release version 0.17 is ready</title>
5520 <link>https://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html</link>
5521 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html</guid>
5522 <pubDate>Sat, 4 Oct 2014 08:40:00 +0200</pubDate>
5523 <description>&lt;p&gt;The &lt;a href=&quot;https://sourceforge.net/p/lsdvd/&quot;&gt;lsdvd project&lt;/a&gt;
5524 got a new set of developers a few weeks ago, after the original
5525 developer decided to step down and pass the project to fresh blood.
5526 This project is now maintained by Petter Reinholdtsen and Steve
5527 Dibb.&lt;/p&gt;
5528
5529 &lt;p&gt;I just wrapped up
5530 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/mailman/message/32896061/&quot;&gt;a
5531 new lsdvd release&lt;/a&gt;, available in git or from
5532 &lt;a href=&quot;https://sourceforge.net/projects/lsdvd/files/lsdvd/&quot;&gt;the
5533 download page&lt;/a&gt;. This is the changelog dated 2014-10-03 for version
5534 0.17.&lt;/p&gt;
5535
5536 &lt;ul&gt;
5537
5538 &lt;li&gt;Ignore &#39;phantom&#39; audio, subtitle tracks&lt;/li&gt;
5539 &lt;li&gt;Check for garbage in the program chains, which indicate that a track is
5540 non-existant, to work around additional copy protection&lt;/li&gt;
5541 &lt;li&gt;Fix displaying content type for audio tracks, subtitles&lt;/li&gt;
5542 &lt;li&gt;Fix pallete display of first entry&lt;/li&gt;
5543 &lt;li&gt;Fix include orders&lt;/li&gt;
5544 &lt;li&gt;Ignore read errors in titles that would not be displayed anyway&lt;/li&gt;
5545 &lt;li&gt;Fix the chapter count&lt;/li&gt;
5546 &lt;li&gt;Make sure the array size and the array limit used when initialising
5547 the palette size is the same.&lt;/li&gt;
5548 &lt;li&gt;Fix array printing.&lt;/li&gt;
5549 &lt;li&gt;Correct subsecond calculations.&lt;/li&gt;
5550 &lt;li&gt;Add sector information to the output format.&lt;/li&gt;
5551 &lt;li&gt;Clean up code to be closer to ANSI C and compile without warnings
5552 with more GCC compiler warnings.&lt;/li&gt;
5553
5554 &lt;/ul&gt;
5555
5556 &lt;p&gt;This change bring together patches for lsdvd in use in various
5557 Linux and Unix distributions, as well as patches submitted to the
5558 project the last nine years. Please check it out. :)&lt;/p&gt;
5559 </description>
5560 </item>
5561
5562 <item>
5563 <title>How to test Debian Edu Jessie despite some fatal problems with the installer</title>
5564 <link>https://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html</link>
5565 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html</guid>
5566 <pubDate>Fri, 26 Sep 2014 12:20:00 +0200</pubDate>
5567 <description>&lt;p&gt;The &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux
5568 project&lt;/a&gt; provide a Linux solution for schools, including a
5569 powerful desktop with education software, a central server providing
5570 web pages, user database, user home directories, central login and PXE
5571 boot of both clients without disk and the installation to install Debian
5572 Edu on machines with disk (and a few other services perhaps to small
5573 to mention here). We in the Debian Edu team are currently working on
5574 the Jessie based version, trying to get everything in shape before the
5575 freeze, to avoid having to maintain our own package repository in the
5576 future. The
5577 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Status/Jessie&quot;&gt;current
5578 status&lt;/a&gt; can be seen on the Debian wiki, and there is still heaps of
5579 work left. Some fatal problems block testing, breaking the installer,
5580 but it is possible to work around these to get anyway. Here is a
5581 recipe on how to get the installation limping along.&lt;/p&gt;
5582
5583 &lt;p&gt;First, download the test ISO via
5584 &lt;a href=&quot;ftp://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso&quot;&gt;ftp&lt;/a&gt;,
5585 &lt;a href=&quot;http://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso&quot;&gt;http&lt;/a&gt;
5586 or rsync (use
5587 ftp.skolelinux.org::cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso).
5588 The ISO build was broken on Tuesday, so we do not get a new ISO every
5589 12 hours or so, but thankfully the ISO we already got we are able to
5590 install with some tweaking.&lt;/p&gt;
5591
5592 &lt;p&gt;When you get to the Debian Edu profile question, go to tty2
5593 (use Alt-Ctrl-F2), run&lt;/p&gt;
5594
5595 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5596 nano /usr/bin/edu-eatmydata-install
5597 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5598
5599 &lt;p&gt;and add &#39;exit 0&#39; as the second line, disabling the eatmydata
5600 optimization. Return to the installation, select the profile you want
5601 and continue. Without this change, exim4-config will fail to install
5602 due to a known bug in eatmydata.&lt;/p&gt;
5603
5604 &lt;p&gt;When you get the grub question at the end, answer /dev/sda (or if
5605 this do not work, figure out what your correct value would be. All my
5606 test machines need /dev/sda, so I have no advice if it do not fit
5607 your need.&lt;/p&gt;
5608
5609 &lt;p&gt;If you installed a profile including a graphical desktop, log in as
5610 root after the initial boot from hard drive, and install the
5611 education-desktop-XXX metapackage. XXX can be kde, gnome, lxde, xfce
5612 or mate. If you want several desktop options, install more than one
5613 metapackage. Once this is done, reboot and you should have a working
5614 graphical login screen. This workaround should no longer be needed
5615 once the education-tasks package version 1.801 enter testing in two
5616 days.&lt;/p&gt;
5617
5618 &lt;p&gt;I believe the ISO build will start working on two days when the new
5619 tasksel package enter testing and Steve McIntyre get a chance to
5620 update the debian-cd git repository. The eatmydata, grub and desktop
5621 issues are already fixed in unstable and testing, and should show up
5622 on the ISO as soon as the ISO build start working again. Well the
5623 eatmydata optimization is really just disabled. The proper fix
5624 require an upload by the eatmydata maintainer applying the patch
5625 provided in bug &lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;#702711&lt;/a&gt;.
5626 The rest have proper fixes in unstable.&lt;/p&gt;
5627
5628 &lt;p&gt;I hope this get you going with the installation testing, as we are
5629 quickly running out of time trying to get our Jessie based
5630 installation ready before the distribution freeze in a month.&lt;/p&gt;
5631 </description>
5632 </item>
5633
5634 <item>
5635 <title>Suddenly I am the new upstream of the lsdvd command line tool</title>
5636 <link>https://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html</link>
5637 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html</guid>
5638 <pubDate>Thu, 25 Sep 2014 11:20:00 +0200</pubDate>
5639 <description>&lt;p&gt;I use the &lt;a href=&quot;https://sourceforge.net/p/lsdvd/&quot;&gt;lsdvd tool&lt;/a&gt;
5640 to handle my fairly large DVD collection. It is a nice command line
5641 tool to get details about a DVD, like title, tracks, track length,
5642 etc, in XML, Perl or human readable format. But lsdvd have not seen
5643 any new development since 2006 and had a few irritating bugs affecting
5644 its use with some DVDs. Upstream seemed to be dead, and in January I
5645 sent a small probe asking for a version control repository for the
5646 project, without any reply. But I use it regularly and would like to
5647 get &lt;a href=&quot;https://packages.qa.debian.org/lsdvd&quot;&gt;an updated version
5648 into Debian&lt;/a&gt;. So two weeks ago I tried harder to get in touch with
5649 the project admin, and after getting a reply from him explaining that
5650 he was no longer interested in the project, I asked if I could take
5651 over. And yesterday, I became project admin.&lt;/p&gt;
5652
5653 &lt;p&gt;I&#39;ve been in touch with a Gentoo developer and the Debian
5654 maintainer interested in joining forces to maintain the upstream
5655 project, and I hope we can get a new release out fairly quickly,
5656 collecting the patches spread around on the internet into on place.
5657 I&#39;ve added the relevant Debian patches to the freshly created git
5658 repository, and expect the Gentoo patches to make it too. If you got
5659 a DVD collection and care about command line tools, check out
5660 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/git/ci/master/tree/&quot;&gt;the git source&lt;/a&gt; and join
5661 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/mailman/&quot;&gt;the project mailing
5662 list&lt;/a&gt;. :)&lt;/p&gt;
5663 </description>
5664 </item>
5665
5666 <item>
5667 <title>Speeding up the Debian installer using eatmydata and dpkg-divert</title>
5668 <link>https://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html</link>
5669 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html</guid>
5670 <pubDate>Tue, 16 Sep 2014 14:00:00 +0200</pubDate>
5671 <description>&lt;p&gt;The &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt; installer could be
5672 a lot quicker. When we install more than 2000 packages in
5673 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux / Debian Edu&lt;/a&gt; using
5674 tasksel in the installer, unpacking the binary packages take forever.
5675 A part of the slow I/O issue was discussed in
5676 &lt;a href=&quot;https://bugs.debian.org/613428&quot;&gt;bug #613428&lt;/a&gt; about too
5677 much file system sync-ing done by dpkg, which is the package
5678 responsible for unpacking the binary packages. Other parts (like code
5679 executed by postinst scripts) might also sync to disk during
5680 installation. All this sync-ing to disk do not really make sense to
5681 me. If the machine crash half-way through, I start over, I do not try
5682 to salvage the half installed system. So the failure sync-ing is
5683 supposed to protect against, hardware or system crash, is not really
5684 relevant while the installer is running.&lt;/p&gt;
5685
5686 &lt;p&gt;A few days ago, I thought of a way to get rid of all the file
5687 system sync()-ing in a fairly non-intrusive way, without the need to
5688 change the code in several packages. The idea is not new, but I have
5689 not heard anyone propose the approach using dpkg-divert before. It
5690 depend on the small and clever package
5691 &lt;a href=&quot;https://packages.qa.debian.org/eatmydata&quot;&gt;eatmydata&lt;/a&gt;, which
5692 uses LD_PRELOAD to replace the system functions for syncing data to
5693 disk with functions doing nothing, thus allowing programs to live
5694 dangerous while speeding up disk I/O significantly. Instead of
5695 modifying the implementation of dpkg, apt and tasksel (which are the
5696 packages responsible for selecting, fetching and installing packages),
5697 it occurred to me that we could just divert the programs away, replace
5698 them with a simple shell wrapper calling
5699 &quot;eatmydata&amp;nbsp;$program&amp;nbsp;$@&quot;, to get the same effect.
5700 Two days ago I decided to test the idea, and wrapped up a simple
5701 implementation for the Debian Edu udeb.&lt;/p&gt;
5702
5703 &lt;p&gt;The effect was stunning. In my first test it reduced the running
5704 time of the pkgsel step (installing tasks) from 64 to less than 44
5705 minutes (20 minutes shaved off the installation) on an old Dell
5706 Latitude D505 machine. I am not quite sure what the optimised time
5707 would have been, as I messed up the testing a bit, causing the debconf
5708 priority to get low enough for two questions to pop up during
5709 installation. As soon as I saw the questions I moved the installation
5710 along, but do not know how long the question were holding up the
5711 installation. I did some more measurements using Debian Edu Jessie,
5712 and got these results. The time measured is the time stamp in
5713 /var/log/syslog between the &quot;pkgsel: starting tasksel&quot; and the
5714 &quot;pkgsel: finishing up&quot; lines, if you want to do the same measurement
5715 yourself. In Debian Edu, the tasksel dialog do not show up, and the
5716 timing thus do not depend on how quickly the user handle the tasksel
5717 dialog.&lt;/p&gt;
5718
5719 &lt;p&gt;&lt;table&gt;
5720
5721 &lt;tr&gt;
5722 &lt;th&gt;Machine/setup&lt;/th&gt;
5723 &lt;th&gt;Original tasksel&lt;/th&gt;
5724 &lt;th&gt;Optimised tasksel&lt;/th&gt;
5725 &lt;th&gt;Reduction&lt;/th&gt;
5726 &lt;/tr&gt;
5727
5728 &lt;tr&gt;
5729 &lt;td&gt;Latitude D505 Main+LTSP LXDE&lt;/td&gt;
5730 &lt;td&gt;64 min (07:46-08:50)&lt;/td&gt;
5731 &lt;td&gt;&lt;44 min (11:27-12:11)&lt;/td&gt;
5732 &lt;td&gt;&gt;20 min 18%&lt;/td&gt;
5733 &lt;/tr&gt;
5734
5735 &lt;tr&gt;
5736 &lt;td&gt;Latitude D505 Roaming LXDE&lt;/td&gt;
5737 &lt;td&gt;57 min (08:48-09:45)&lt;/td&gt;
5738 &lt;td&gt;34 min (07:43-08:17)&lt;/td&gt;
5739 &lt;td&gt;23 min 40%&lt;/td&gt;
5740 &lt;/tr&gt;
5741
5742 &lt;tr&gt;
5743 &lt;td&gt;Latitude D505 Minimal&lt;/td&gt;
5744 &lt;td&gt;22 min (10:37-10:59)&lt;/td&gt;
5745 &lt;td&gt;11 min (11:16-11:27)&lt;/td&gt;
5746 &lt;td&gt;11 min 50%&lt;/td&gt;
5747 &lt;/tr&gt;
5748
5749 &lt;tr&gt;
5750 &lt;td&gt;Thinkpad X200 Minimal&lt;/td&gt;
5751 &lt;td&gt;6 min (08:19-08:25)&lt;/td&gt;
5752 &lt;td&gt;4 min (08:04-08:08)&lt;/td&gt;
5753 &lt;td&gt;2 min 33%&lt;/td&gt;
5754 &lt;/tr&gt;
5755
5756 &lt;tr&gt;
5757 &lt;td&gt;Thinkpad X200 Roaming KDE&lt;/td&gt;
5758 &lt;td&gt;19 min (09:21-09:40)&lt;/td&gt;
5759 &lt;td&gt;15 min (10:25-10:40)&lt;/td&gt;
5760 &lt;td&gt;4 min 21%&lt;/td&gt;
5761 &lt;/tr&gt;
5762
5763 &lt;/table&gt;&lt;/p&gt;
5764
5765 &lt;p&gt;The test is done using a netinst ISO on a USB stick, so some of the
5766 time is spent downloading packages. The connection to the Internet
5767 was 100Mbit/s during testing, so downloading should not be a
5768 significant factor in the measurement. Download typically took a few
5769 seconds to a few minutes, depending on the amount of packages being
5770 installed.&lt;/p&gt;
5771
5772 &lt;p&gt;The speedup is implemented by using two hooks in
5773 &lt;a href=&quot;https://www.debian.org/devel/debian-installer/&quot;&gt;Debian
5774 Installer&lt;/a&gt;, the pre-pkgsel.d hook to set up the diverts, and the
5775 finish-install.d hook to remove the divert at the end of the
5776 installation. I picked the pre-pkgsel.d hook instead of the
5777 post-base-installer.d hook because I test using an ISO without the
5778 eatmydata package included, and the post-base-installer.d hook in
5779 Debian Edu can only operate on packages included in the ISO. The
5780 negative effect of this is that I am unable to activate this
5781 optimization for the kernel installation step in d-i. If the code is
5782 moved to the post-base-installer.d hook, the speedup would be larger
5783 for the entire installation.&lt;/p&gt;
5784
5785 &lt;p&gt;I&#39;ve implemented this in the
5786 &lt;a href=&quot;https://packages.qa.debian.org/debian-edu-install&quot;&gt;debian-edu-install&lt;/a&gt;
5787 git repository, and plan to provide the optimization as part of the
5788 Debian Edu installation. If you want to test this yourself, you can
5789 create two files in the installer (or in an udeb). One shell script
5790 need do go into /usr/lib/pre-pkgsel.d/, with content like this:&lt;/p&gt;
5791
5792 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5793 #!/bin/sh
5794 set -e
5795 . /usr/share/debconf/confmodule
5796 info() {
5797 logger -t my-pkgsel &quot;info: $*&quot;
5798 }
5799 error() {
5800 logger -t my-pkgsel &quot;error: $*&quot;
5801 }
5802 override_install() {
5803 apt-install eatmydata || true
5804 if [ -x /target/usr/bin/eatmydata ] ; then
5805 for bin in dpkg apt-get aptitude tasksel ; do
5806 file=/usr/bin/$bin
5807 # Test that the file exist and have not been diverted already.
5808 if [ -f /target$file ] ; then
5809 info &quot;diverting $file using eatmydata&quot;
5810 printf &quot;#!/bin/sh\neatmydata $bin.distrib \&quot;\$@\&quot;\n&quot; \
5811 &gt; /target$file.edu
5812 chmod 755 /target$file.edu
5813 in-target dpkg-divert --package debian-edu-config \
5814 --rename --quiet --add $file
5815 ln -sf ./$bin.edu /target$file
5816 else
5817 error &quot;unable to divert $file, as it is missing.&quot;
5818 fi
5819 done
5820 else
5821 error &quot;unable to find /usr/bin/eatmydata after installing the eatmydata pacage&quot;
5822 fi
5823 }
5824
5825 override_install
5826 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5827
5828 &lt;p&gt;To clean up, another shell script should go into
5829 /usr/lib/finish-install.d/ with code like this:
5830
5831 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5832 #! /bin/sh -e
5833 . /usr/share/debconf/confmodule
5834 error() {
5835 logger -t my-finish-install &quot;error: $@&quot;
5836 }
5837 remove_install_override() {
5838 for bin in dpkg apt-get aptitude tasksel ; do
5839 file=/usr/bin/$bin
5840 if [ -x /target$file.edu ] ; then
5841 rm /target$file
5842 in-target dpkg-divert --package debian-edu-config \
5843 --rename --quiet --remove $file
5844 rm /target$file.edu
5845 else
5846 error &quot;Missing divert for $file.&quot;
5847 fi
5848 done
5849 sync # Flush file buffers before continuing
5850 }
5851
5852 remove_install_override
5853 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5854
5855 &lt;p&gt;In Debian Edu, I placed both code fragments in a separate script
5856 edu-eatmydata-install and call it from the pre-pkgsel.d and
5857 finish-install.d scripts.&lt;/p&gt;
5858
5859 &lt;p&gt;By now you might ask if this change should get into the normal
5860 Debian installer too? I suspect it should, but am not sure the
5861 current debian-installer coordinators find it useful enough. It also
5862 depend on the side effects of the change. I&#39;m not aware of any, but I
5863 guess we will see if the change is safe after some more testing.
5864 Perhaps there is some package in Debian depending on sync() and
5865 fsync() having effect? Perhaps it should go into its own udeb, to
5866 allow those of us wanting to enable it to do so without affecting
5867 everyone.&lt;/p&gt;
5868
5869 &lt;p&gt;Update 2014-09-24: Since a few days ago, enabling this optimization
5870 will break installation of all programs using gnutls because of
5871 &lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;bug #702711&lt;/a&gt;. An updated
5872 eatmydata package in Debian will solve it.&lt;/p&gt;
5873
5874 &lt;p&gt;Update 2014-10-17: The bug mentioned above is fixed in testing and
5875 the optimization work again. And I have discovered that the
5876 dpkg-divert trick is not really needed and implemented a slightly
5877 simpler approach as part of the debian-edu-install package. See
5878 tools/edu-eatmydata-install in the source package.&lt;/p&gt;
5879
5880 &lt;p&gt;Update 2014-11-11: Unfortunately, a new
5881 &lt;a href=&quot;http://bugs.debian.org/765738&quot;&gt;bug #765738&lt;/a&gt; in eatmydata only
5882 triggering on i386 made it into testing, and broke this installation
5883 optimization again. If &lt;a href=&quot;http://bugs.debian.org/768893&quot;&gt;unblock
5884 request 768893&lt;/a&gt; is accepted, it should be working again.&lt;/p&gt;
5885 </description>
5886 </item>
5887
5888 <item>
5889 <title>Good bye subkeys.pgp.net, welcome pool.sks-keyservers.net</title>
5890 <link>https://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html</link>
5891 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html</guid>
5892 <pubDate>Wed, 10 Sep 2014 13:10:00 +0200</pubDate>
5893 <description>&lt;p&gt;Yesterday, I had the pleasure of attending a talk with the
5894 &lt;a href=&quot;http://www.nuug.no/&quot;&gt;Norwegian Unix User Group&lt;/a&gt; about
5895 &lt;a href=&quot;http://www.nuug.no/aktiviteter/20140909-sks-keyservers/&quot;&gt;the
5896 OpenPGP keyserver pool sks-keyservers.net&lt;/a&gt;, and was very happy to
5897 learn that there is a large set of publicly available key servers to
5898 use when looking for peoples public key. So far I have used
5899 subkeys.pgp.net, and some times wwwkeys.nl.pgp.net when the former
5900 were misbehaving, but those days are ended. The servers I have used
5901 up until yesterday have been slow and some times unavailable. I hope
5902 those problems are gone now.&lt;/p&gt;
5903
5904 &lt;p&gt;Behind the round robin DNS entry of the
5905 &lt;a href=&quot;https://sks-keyservers.net/&quot;&gt;sks-keyservers.net&lt;/a&gt; service
5906 there is a pool of more than 100 keyservers which are checked every
5907 day to ensure they are well connected and up to date. It must be
5908 better than what I have used so far. :)&lt;/p&gt;
5909
5910 &lt;p&gt;Yesterdays speaker told me that the service is the default
5911 keyserver provided by the default configuration in GnuPG, but this do
5912 not seem to be used in Debian. Perhaps it should?&lt;/p&gt;
5913
5914 &lt;p&gt;Anyway, I&#39;ve updated my ~/.gnupg/options file to now include this
5915 line:&lt;/p&gt;
5916
5917 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5918 keyserver pool.sks-keyservers.net
5919 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5920
5921 &lt;p&gt;With GnuPG version 2 one can also locate the keyserver using SRV
5922 entries in DNS. Just for fun, I did just that at work, so now every
5923 user of GnuPG at the University of Oslo should find a OpenGPG
5924 keyserver automatically should their need it:&lt;/p&gt;
5925
5926 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
5927 % host -t srv _pgpkey-http._tcp.uio.no
5928 _pgpkey-http._tcp.uio.no has SRV record 0 100 11371 pool.sks-keyservers.net.
5929 %
5930 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
5931
5932 &lt;p&gt;Now if only
5933 &lt;a href=&quot;http://ietfreport.isoc.org/idref/draft-shaw-openpgp-hkp/&quot;&gt;the
5934 HKP lookup protocol&lt;/a&gt; supported finding signature paths, I would be
5935 very happy. It can look up a given key or search for a user ID, but I
5936 normally do not want that, but to find a trust path from my key to
5937 another key. Given a user ID or key ID, I would like to find (and
5938 download) the keys representing a signature path from my key to the
5939 key in question, to be able to get a trust path between the two keys.
5940 This is as far as I can tell not possible today. Perhaps something
5941 for a future version of the protocol?&lt;/p&gt;
5942 </description>
5943 </item>
5944
5945 <item>
5946 <title>From English wiki to translated PDF and epub via Docbook</title>
5947 <link>https://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html</link>
5948 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html</guid>
5949 <pubDate>Tue, 17 Jun 2014 11:30:00 +0200</pubDate>
5950 <description>&lt;p&gt;The &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux
5951 project&lt;/a&gt; provide an instruction manual for teachers, system
5952 administrators and other users that contain useful tips for setting up
5953 and maintaining a Debian Edu installation. This text is about how the
5954 text processing of this manual is handled in the project.&lt;/p&gt;
5955
5956 &lt;p&gt;One goal of the project is to provide information in the native
5957 language of its users, and for this we need to handle translations.
5958 But we also want to make sure each language contain the same
5959 information, so for this we need a good way to keep the translations
5960 in sync. And we want it to be easy for our users to improve the
5961 documentation, avoiding the need to learn special formats or tools to
5962 contribute, and the obvious way to do this is to make it possible to
5963 edit the documentation using a web browser. We also want it to be
5964 easy for translators to keep the translation up to date, and give them
5965 help in figuring out what need to be translated. Here is the list of
5966 tools and the process we have found trying to reach all these
5967 goals.&lt;/p&gt;
5968
5969 &lt;p&gt;We maintain the authoritative source of our manual in the
5970 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/&quot;&gt;Debian
5971 wiki&lt;/a&gt;, as several wiki pages written in English. It consist of one
5972 front page with references to the different chapters, several pages
5973 for each chapter, and finally one &quot;collection page&quot; gluing all the
5974 chapters together into one large web page (aka
5975 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/AllInOne&quot;&gt;the
5976 AllInOne page&lt;/a&gt;). The AllInOne page is the one used for further
5977 processing and translations. Thanks to the fact that the
5978 &lt;a href=&quot;http://moinmo.in/&quot;&gt;MoinMoin&lt;/a&gt; installation on
5979 wiki.debian.org support exporting pages in
5980 &lt;a href=&quot;http://www.docbook.org/&quot;&gt;the Docbook format&lt;/a&gt;, we can fetch
5981 the list of pages to export using the raw version of the AllInOne
5982 page, loop over each of them to generate a Docbook XML version of the
5983 manual. This process also download images and transform image
5984 references to use the locally downloaded images. The generated
5985 Docbook XML files are slightly broken, so some post-processing is done
5986 using the &lt;tt&gt;documentation/scripts/get_manual&lt;/tt&gt; program, and the
5987 result is a nice Docbook XML file (debian-edu-wheezy-manual.xml) and
5988 a handfull of images. The XML file can now be used to generate PDF, HTML
5989 and epub versions of the English manual. This is the basic step of
5990 our process, making PDF (using dblatex), HTML (using xsltproc) and
5991 epub (using dbtoepub) version from Docbook XML, and the resulting files
5992 are placed in the debian-edu-doc-en binary package.&lt;/p&gt;
5993
5994 &lt;p&gt;But English documentation is not enough for us. We want translated
5995 documentation too, and we want to make it easy for translators to
5996 track the English original. For this we use the
5997 &lt;a href=&quot;http://packages.qa.debian.org/p/poxml.html&quot;&gt;poxml&lt;/a&gt; package,
5998 which allow us to transform the English Docbook XML file into a
5999 translation file (a .pot file), usable with the normal gettext based
6000 translation tools used by those translating free software. The pot
6001 file is used to create and maintain translation files (several .po
6002 files), which the translations update with the native language
6003 translations of all titles, paragraphs and blocks of text in the
6004 original. The next step is combining the original English Docbook XML
6005 and the translation file (say debian-edu-wheezy-manual.nb.po), to
6006 create a translated Docbook XML file (in this case
6007 debian-edu-wheezy-manual.nb.xml). This translated (or partly
6008 translated, if the translation is not complete) Docbook XML file can
6009 then be used like the original to create a PDF, HTML and epub version
6010 of the documentation.&lt;/p&gt;
6011
6012 &lt;p&gt;The translators use different tools to edit the .po files. We
6013 recommend using
6014 &lt;a href=&quot;http://www.kde.org/applications/development/lokalize/&quot;&gt;lokalize&lt;/a&gt;,
6015 while some use emacs and vi, others can use web based editors like
6016 &lt;a href=&quot;http://pootle.translatehouse.org/&quot;&gt;Poodle&lt;/a&gt; or
6017 &lt;a href=&quot;https://www.transifex.com/&quot;&gt;Transifex&lt;/a&gt;. All we care about
6018 is where the .po file end up, in our git repository. Updated
6019 translations can either be committed directly to git, or submitted as
6020 &lt;a href=&quot;https://bugs.debian.org/src:debian-edu-doc&quot;&gt;bug reports
6021 against the debian-edu-doc package&lt;/a&gt;.&lt;/p&gt;
6022
6023 &lt;p&gt;One challenge is images, which both might need to be translated (if
6024 they show translated user applications), and are needed in different
6025 formats when creating PDF and HTML versions (epub is a HTML version in
6026 this regard). For this we transform the original PNG images to the
6027 needed density and format during build, and have a way to provide
6028 translated images by storing translated versions in
6029 images/$LANGUAGECODE/. I am a bit unsure about the details here. The
6030 package maintainers know more.&lt;/p&gt;
6031
6032 &lt;p&gt;If you wonder what the result look like, we provide
6033 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/&quot;&gt;the content
6034 of the documentation packages on the web&lt;/a&gt;. See for example the
6035 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/it/debian-edu-wheezy-manual.pdf&quot;&gt;Italian
6036 PDF version&lt;/a&gt; or the
6037 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/de/debian-edu-wheezy-manual.html&quot;&gt;German
6038 HTML version&lt;/a&gt;. We do not yet build the epub version by default,
6039 but perhaps it will be done in the future.&lt;/p&gt;
6040
6041 &lt;p&gt;To learn more, check out
6042 &lt;a href=&quot;http://packages.qa.debian.org/d/debian-edu-doc.html&quot;&gt;the
6043 debian-edu-doc package&lt;/a&gt;,
6044 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/&quot;&gt;the
6045 manual on the wiki&lt;/a&gt; and
6046 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Translations&quot;&gt;the
6047 translation instructions&lt;/a&gt; in the manual.&lt;/p&gt;
6048 </description>
6049 </item>
6050
6051 <item>
6052 <title>Install hardware dependent packages using tasksel (Isenkram 0.7)</title>
6053 <link>https://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html</link>
6054 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html</guid>
6055 <pubDate>Wed, 23 Apr 2014 14:50:00 +0200</pubDate>
6056 <description>&lt;p&gt;It would be nice if it was easier in Debian to get all the hardware
6057 related packages relevant for the computer installed automatically.
6058 So I implemented one, using
6059 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;my Isenkram
6060 package&lt;/a&gt;. To use it, install the tasksel and isenkram packages and
6061 run tasksel as user root. You should be presented with a new option,
6062 &quot;Hardware specific packages (autodetected by isenkram)&quot;. When you
6063 select it, tasksel will install the packages isenkram claim is fit for
6064 the current hardware, hot pluggable or not.&lt;p&gt;
6065
6066 &lt;p&gt;The implementation is in two files, one is the tasksel menu entry
6067 description, and the other is the script used to extract the list of
6068 packages to install. The first part is in
6069 &lt;tt&gt;/usr/share/tasksel/descs/isenkram.desc&lt;/tt&gt; and look like
6070 this:&lt;/p&gt;
6071
6072 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6073 Task: isenkram
6074 Section: hardware
6075 Description: Hardware specific packages (autodetected by isenkram)
6076 Based on the detected hardware various hardware specific packages are
6077 proposed.
6078 Test-new-install: mark show
6079 Relevance: 8
6080 Packages: for-current-hardware
6081 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6082
6083 &lt;p&gt;The second part is in
6084 &lt;tt&gt;/usr/lib/tasksel/packages/for-current-hardware&lt;/tt&gt; and look like
6085 this:&lt;/p&gt;
6086
6087 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6088 #!/bin/sh
6089 #
6090 (
6091 isenkram-lookup
6092 isenkram-autoinstall-firmware -l
6093 ) | sort -u
6094 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6095
6096 &lt;p&gt;All in all, a very short and simple implementation making it
6097 trivial to install the hardware dependent package we all may want to
6098 have installed on our machines. I&#39;ve not been able to find a way to
6099 get tasksel to tell you exactly which packages it plan to install
6100 before doing the installation. So if you are curious or careful,
6101 check the output from the isenkram-* command line tools first.&lt;/p&gt;
6102
6103 &lt;p&gt;The information about which packages are handling which hardware is
6104 fetched either from the isenkram package itself in
6105 /usr/share/isenkram/, from git.debian.org or from the APT package
6106 database (using the Modaliases header). The APT package database
6107 parsing have caused a nasty resource leak in the isenkram daemon (bugs
6108 &lt;a href=&quot;http://bugs.debian.org/719837&quot;&gt;#719837&lt;/a&gt; and
6109 &lt;a href=&quot;http://bugs.debian.org/730704&quot;&gt;#730704&lt;/a&gt;). The cause is in
6110 the python-apt code (bug
6111 &lt;a href=&quot;http://bugs.debian.org/745487&quot;&gt;#745487&lt;/a&gt;), but using a
6112 workaround I was able to get rid of the file descriptor leak and
6113 reduce the memory leak from ~30 MiB per hardware detection down to
6114 around 2 MiB per hardware detection. It should make the desktop
6115 daemon a lot more useful. The fix is in version 0.7 uploaded to
6116 unstable today.&lt;/p&gt;
6117
6118 &lt;p&gt;I believe the current way of mapping hardware to packages in
6119 Isenkram is is a good draft, but in the future I expect isenkram to
6120 use the AppStream data source for this. A proposal for getting proper
6121 AppStream support into Debian is floating around as
6122 &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;DEP-11&lt;/a&gt;, and
6123 &lt;a href=&quot;https://wiki.debian.org/SummerOfCode2014/Projects#SummerOfCode2014.2FProjects.2FAppStreamDEP11Implementation.AppStream.2FDEP-11_for_the_Debian_Archive&quot;&gt;GSoC
6124 project&lt;/a&gt; will take place this summer to improve the situation. I
6125 look forward to seeing the result, and welcome patches for isenkram to
6126 start using the information when it is ready.&lt;/p&gt;
6127
6128 &lt;p&gt;If you want your package to map to some specific hardware, either
6129 add a &quot;Xb-Modaliases&quot; header to your control file like I did in
6130 &lt;a href=&quot;http://packages.qa.debian.org/pymissile&quot;&gt;the pymissile
6131 package&lt;/a&gt; or submit a bug report with the details to the isenkram
6132 package. See also
6133 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;all my
6134 blog posts tagged isenkram&lt;/a&gt; for details on the notation. I expect
6135 the information will be migrated to AppStream eventually, but for the
6136 moment I got no better place to store it.&lt;/p&gt;
6137 </description>
6138 </item>
6139
6140 <item>
6141 <title>FreedomBox milestone - all packages now in Debian Sid</title>
6142 <link>https://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html</link>
6143 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html</guid>
6144 <pubDate>Tue, 15 Apr 2014 22:10:00 +0200</pubDate>
6145 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox
6146 project&lt;/a&gt; is working on providing the software and hardware to make
6147 it easy for non-technical people to host their data and communication
6148 at home, and being able to communicate with their friends and family
6149 encrypted and away from prying eyes. It is still going strong, and
6150 today a major mile stone was reached.&lt;/p&gt;
6151
6152 &lt;p&gt;Today, the last of the packages currently used by the project to
6153 created the system images were accepted into Debian Unstable. It was
6154 the freedombox-setup package, which is used to configure the images
6155 during build and on the first boot. Now all one need to get going is
6156 the build code from the freedom-maker git repository and packages from
6157 Debian. And once the freedombox-setup package enter testing, we can
6158 build everything directly from Debian. :)&lt;/p&gt;
6159
6160 &lt;p&gt;Some key packages used by Freedombox are
6161 &lt;a href=&quot;http://packages.qa.debian.org/freedombox-setup&quot;&gt;freedombox-setup&lt;/a&gt;,
6162 &lt;a href=&quot;http://packages.qa.debian.org/plinth&quot;&gt;plinth&lt;/a&gt;,
6163 &lt;a href=&quot;http://packages.qa.debian.org/pagekite&quot;&gt;pagekite&lt;/a&gt;,
6164 &lt;a href=&quot;http://packages.qa.debian.org/tor&quot;&gt;tor&lt;/a&gt;,
6165 &lt;a href=&quot;http://packages.qa.debian.org/privoxy&quot;&gt;privoxy&lt;/a&gt;,
6166 &lt;a href=&quot;http://packages.qa.debian.org/owncloud&quot;&gt;owncloud&lt;/a&gt; and
6167 &lt;a href=&quot;http://packages.qa.debian.org/dnsmasq&quot;&gt;dnsmasq&lt;/a&gt;. There
6168 are plans to integrate more packages into the setup. User
6169 documentation is maintained on the Debian wiki. Please
6170 &lt;a href=&quot;https://wiki.debian.org/FreedomBox/Manual/Jessie&quot;&gt;check out
6171 the manual&lt;/a&gt; and help us improve it.&lt;/p&gt;
6172
6173 &lt;p&gt;To test for yourself and create boot images with the FreedomBox
6174 setup, run this on a Debian machine using a user with sudo rights to
6175 become root:&lt;/p&gt;
6176
6177 &lt;p&gt;&lt;pre&gt;
6178 sudo apt-get install git vmdebootstrap mercurial python-docutils \
6179 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
6180 u-boot-tools
6181 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
6182 freedom-maker
6183 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
6184 &lt;/pre&gt;&lt;/p&gt;
6185
6186 &lt;p&gt;Root access is needed to run debootstrap and mount loopback
6187 devices. See the README in the freedom-maker git repo for more
6188 details on the build. If you do not want all three images, trim the
6189 make line. Note that the virtualbox-image target is not really
6190 virtualbox specific. It create a x86 image usable in kvm, qemu,
6191 vmware and any other x86 virtual machine environment. You might need
6192 the version of vmdebootstrap in Jessie to get the build working, as it
6193 include fixes for a race condition with kpartx.&lt;/p&gt;
6194
6195 &lt;p&gt;If you instead want to install using a Debian CD and the preseed
6196 method, boot a Debian Wheezy ISO and use this boot argument to load
6197 the preseed values:&lt;/p&gt;
6198
6199 &lt;p&gt;&lt;pre&gt;
6200 url=&lt;a href=&quot;http://www.reinholdtsen.name/freedombox/preseed-jessie.dat&quot;&gt;http://www.reinholdtsen.name/freedombox/preseed-jessie.dat&lt;/a&gt;
6201 &lt;/pre&gt;&lt;/p&gt;
6202
6203 &lt;p&gt;I have not tested it myself the last few weeks, so I do not know if
6204 it still work.&lt;/p&gt;
6205
6206 &lt;p&gt;If you wonder how to help, one task you could look at is using
6207 systemd as the boot system. It will become the default for Linux in
6208 Jessie, so we need to make sure it is usable on the Freedombox. I did
6209 a simple test a few weeks ago, and noticed dnsmasq failed to start
6210 during boot when using systemd. I suspect there are other problems
6211 too. :) To detect problems, there is a test suite included, which can
6212 be run from the plinth web interface.&lt;/p&gt;
6213
6214 &lt;p&gt;Give it a go and let us know how it goes on the mailing list, and help
6215 us get the new release published. :) Please join us on
6216 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC (#freedombox on
6217 irc.debian.org)&lt;/a&gt; and
6218 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
6219 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
6220 </description>
6221 </item>
6222
6223 <item>
6224 <title>S3QL, a locally mounted cloud file system - nice free software</title>
6225 <link>https://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</link>
6226 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</guid>
6227 <pubDate>Wed, 9 Apr 2014 11:30:00 +0200</pubDate>
6228 <description>&lt;p&gt;For a while now, I have been looking for a sensible offsite backup
6229 solution for use at home. My requirements are simple, it must be
6230 cheap and locally encrypted (in other words, I keep the encryption
6231 keys, the storage provider do not have access to my private files).
6232 One idea me and my friends had many years ago, before the cloud
6233 storage providers showed up, was to use Google mail as storage,
6234 writing a Linux block device storing blocks as emails in the mail
6235 service provided by Google, and thus get heaps of free space. On top
6236 of this one can add encryption, RAID and volume management to have
6237 lots of (fairly slow, I admit that) cheap and encrypted storage. But
6238 I never found time to implement such system. But the last few weeks I
6239 have looked at a system called
6240 &lt;a href=&quot;https://bitbucket.org/nikratio/s3ql/&quot;&gt;S3QL&lt;/a&gt;, a locally
6241 mounted network backed file system with the features I need.&lt;/p&gt;
6242
6243 &lt;p&gt;S3QL is a fuse file system with a local cache and cloud storage,
6244 handling several different storage providers, any with Amazon S3,
6245 Google Drive or OpenStack API. There are heaps of such storage
6246 providers. S3QL can also use a local directory as storage, which
6247 combined with sshfs allow for file storage on any ssh server. S3QL
6248 include support for encryption, compression, de-duplication, snapshots
6249 and immutable file systems, allowing me to mount the remote storage as
6250 a local mount point, look at and use the files as if they were local,
6251 while the content is stored in the cloud as well. This allow me to
6252 have a backup that should survive fire. The file system can not be
6253 shared between several machines at the same time, as only one can
6254 mount it at the time, but any machine with the encryption key and
6255 access to the storage service can mount it if it is unmounted.&lt;/p&gt;
6256
6257 &lt;p&gt;It is simple to use. I&#39;m using it on Debian Wheezy, where the
6258 package is included already. So to get started, run &lt;tt&gt;apt-get
6259 install s3ql&lt;/tt&gt;. Next, pick a storage provider. I ended up picking
6260 Greenqloud, after reading their nice recipe on
6261 &lt;a href=&quot;https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy&quot;&gt;how
6262 to use S3QL with their Amazon S3 service&lt;/a&gt;, because I trust the laws
6263 in Iceland more than those in USA when it come to keeping my personal
6264 data safe and private, and thus would rather spend money on a company
6265 in Iceland. Another nice recipe is available from the article
6266 &lt;a href=&quot;http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage&quot;&gt;S3QL
6267 Filesystem for HPC Storage&lt;/a&gt; by Jeff Layton in the HPC section of
6268 Admin magazine. When the provider is picked, figure out how to get
6269 the API key needed to connect to the storage API. With Greencloud,
6270 the key did not show up until I had added payment details to my
6271 account.&lt;/p&gt;
6272
6273 &lt;p&gt;Armed with the API access details, it is time to create the file
6274 system. First, create a new bucket in the cloud. This bucket is the
6275 file system storage area. I picked a bucket name reflecting the
6276 machine that was going to store data there, but any name will do.
6277 I&#39;ll refer to it as &lt;tt&gt;bucket-name&lt;/tt&gt; below. In addition, one need
6278 the API login and password, and a locally created password. Store it
6279 all in ~root/.s3ql/authinfo2 like this:
6280
6281 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6282 [s3c]
6283 storage-url: s3c://s.greenqloud.com:443/bucket-name
6284 backend-login: API-login
6285 backend-password: API-password
6286 fs-passphrase: local-password
6287 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6288
6289 &lt;p&gt;I create my local passphrase using &lt;tt&gt;pwget 50&lt;/tt&gt; or similar,
6290 but any sensible way to create a fairly random password should do it.
6291 Armed with these details, it is now time to run mkfs, entering the API
6292 details and password to create it:&lt;/p&gt;
6293
6294 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6295 # mkdir -m 700 /var/lib/s3ql-cache
6296 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6297 --ssl s3c://s.greenqloud.com:443/bucket-name
6298 Enter backend login:
6299 Enter backend password:
6300 Before using S3QL, make sure to read the user&#39;s guide, especially
6301 the &#39;Important Rules to Avoid Loosing Data&#39; section.
6302 Enter encryption password:
6303 Confirm encryption password:
6304 Generating random encryption key...
6305 Creating metadata tables...
6306 Dumping metadata...
6307 ..objects..
6308 ..blocks..
6309 ..inodes..
6310 ..inode_blocks..
6311 ..symlink_targets..
6312 ..names..
6313 ..contents..
6314 ..ext_attributes..
6315 Compressing and uploading metadata...
6316 Wrote 0.00 MB of compressed metadata.
6317 # &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6318
6319 &lt;p&gt;The next step is mounting the file system to make the storage available.
6320
6321 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6322 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6323 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
6324 Using 4 upload threads.
6325 Downloading and decompressing metadata...
6326 Reading metadata...
6327 ..objects..
6328 ..blocks..
6329 ..inodes..
6330 ..inode_blocks..
6331 ..symlink_targets..
6332 ..names..
6333 ..contents..
6334 ..ext_attributes..
6335 Mounting filesystem...
6336 # df -h /s3ql
6337 Filesystem Size Used Avail Use% Mounted on
6338 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
6339 #
6340 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6341
6342 &lt;p&gt;The file system is now ready for use. I use rsync to store my
6343 backups in it, and as the metadata used by rsync is downloaded at
6344 mount time, no network traffic (and storage cost) is triggered by
6345 running rsync. To unmount, one should not use the normal umount
6346 command, as this will not flush the cache to the cloud storage, but
6347 instead running the umount.s3ql command like this:
6348
6349 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6350 # umount.s3ql /s3ql
6351 #
6352 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6353
6354 &lt;p&gt;There is a fsck command available to check the file system and
6355 correct any problems detected. This can be used if the local server
6356 crashes while the file system is mounted, to reset the &quot;already
6357 mounted&quot; flag. This is what it look like when processing a working
6358 file system:&lt;/p&gt;
6359
6360 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6361 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
6362 Using cached metadata.
6363 File system seems clean, checking anyway.
6364 Checking DB integrity...
6365 Creating temporary extra indices...
6366 Checking lost+found...
6367 Checking cached objects...
6368 Checking names (refcounts)...
6369 Checking contents (names)...
6370 Checking contents (inodes)...
6371 Checking contents (parent inodes)...
6372 Checking objects (reference counts)...
6373 Checking objects (backend)...
6374 ..processed 5000 objects so far..
6375 ..processed 10000 objects so far..
6376 ..processed 15000 objects so far..
6377 Checking objects (sizes)...
6378 Checking blocks (referenced objects)...
6379 Checking blocks (refcounts)...
6380 Checking inode-block mapping (blocks)...
6381 Checking inode-block mapping (inodes)...
6382 Checking inodes (refcounts)...
6383 Checking inodes (sizes)...
6384 Checking extended attributes (names)...
6385 Checking extended attributes (inodes)...
6386 Checking symlinks (inodes)...
6387 Checking directory reachability...
6388 Checking unix conventions...
6389 Checking referential integrity...
6390 Dropping temporary indices...
6391 Backing up old metadata...
6392 Dumping metadata...
6393 ..objects..
6394 ..blocks..
6395 ..inodes..
6396 ..inode_blocks..
6397 ..symlink_targets..
6398 ..names..
6399 ..contents..
6400 ..ext_attributes..
6401 Compressing and uploading metadata...
6402 Wrote 0.89 MB of compressed metadata.
6403 #
6404 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6405
6406 &lt;p&gt;Thanks to the cache, working on files that fit in the cache is very
6407 quick, about the same speed as local file access. Uploading large
6408 amount of data is to me limited by the bandwidth out of and into my
6409 house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
6410 which is very close to my upload speed, and downloading the same
6411 Debian installation ISO gave me 610 kiB/s, close to my download speed.
6412 Both were measured using &lt;tt&gt;dd&lt;/tt&gt;. So for me, the bottleneck is my
6413 network, not the file system code. I do not know what a good cache
6414 size would be, but suspect that the cache should e larger than your
6415 working set.&lt;/p&gt;
6416
6417 &lt;p&gt;I mentioned that only one machine can mount the file system at the
6418 time. If another machine try, it is told that the file system is
6419 busy:&lt;/p&gt;
6420
6421 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6422 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6423 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
6424 Using 8 upload threads.
6425 Backend reports that fs is still mounted elsewhere, aborting.
6426 #
6427 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6428
6429 &lt;p&gt;The file content is uploaded when the cache is full, while the
6430 metadata is uploaded once every 24 hour by default. To ensure the
6431 file system content is flushed to the cloud, one can either umount the
6432 file system, or ask S3QL to flush the cache and metadata using
6433 s3qlctrl:
6434
6435 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6436 # s3qlctrl upload-meta /s3ql
6437 # s3qlctrl flushcache /s3ql
6438 #
6439 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6440
6441 &lt;p&gt;If you are curious about how much space your data uses in the
6442 cloud, and how much compression and deduplication cut down on the
6443 storage usage, you can use s3qlstat on the mounted file system to get
6444 a report:&lt;/p&gt;
6445
6446 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6447 # s3qlstat /s3ql
6448 Directory entries: 9141
6449 Inodes: 9143
6450 Data blocks: 8851
6451 Total data size: 22049.38 MB
6452 After de-duplication: 21955.46 MB (99.57% of total)
6453 After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated)
6454 Database size: 2.39 MB (uncompressed)
6455 (some values do not take into account not-yet-uploaded dirty blocks in cache)
6456 #
6457 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6458
6459 &lt;p&gt;I mentioned earlier that there are several possible suppliers of
6460 storage. I did not try to locate them all, but am aware of at least
6461 &lt;a href=&quot;https://www.greenqloud.com/&quot;&gt;Greenqloud&lt;/a&gt;,
6462 &lt;a href=&quot;http://drive.google.com/&quot;&gt;Google Drive&lt;/a&gt;,
6463 &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;Amazon S3 web serivces&lt;/a&gt;,
6464 &lt;a href=&quot;http://www.rackspace.com/&quot;&gt;Rackspace&lt;/a&gt; and
6465 &lt;a href=&quot;http://crowncloud.net/&quot;&gt;Crowncloud&lt;/A&gt;. The latter even
6466 accept payment in Bitcoin. Pick one that suit your need. Some of
6467 them provide several GiB of free storage, but the prize models are
6468 quite different and you will have to figure out what suits you
6469 best.&lt;/p&gt;
6470
6471 &lt;p&gt;While researching this blog post, I had a look at research papers
6472 and posters discussing the S3QL file system. There are several, which
6473 told me that the file system is getting a critical check by the
6474 science community and increased my confidence in using it. One nice
6475 poster is titled
6476 &quot;&lt;a href=&quot;http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf&quot;&gt;An
6477 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
6478 Store and Transformative Parallel I/O Approach&lt;/a&gt;&quot; by Hsing-Bung
6479 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
6480 and Pamela Smith. Please have a look.&lt;/p&gt;
6481
6482 &lt;p&gt;Given my problems with different file systems earlier, I decided to
6483 check out the mounted S3QL file system to see if it would be usable as
6484 a home directory (in other word, that it provided POSIX semantics when
6485 it come to locking and umask handling etc). Running
6486 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html&quot;&gt;my
6487 test code to check file system semantics&lt;/a&gt;, I was happy to discover that
6488 no error was found. So the file system can be used for home
6489 directories, if one chooses to do so.&lt;/p&gt;
6490
6491 &lt;p&gt;If you do not want a locally file system, and want something that
6492 work without the Linux fuse file system, I would like to mention the
6493 &lt;a href=&quot;http://www.tarsnap.com/&quot;&gt;Tarsnap service&lt;/a&gt;, which also
6494 provide locally encrypted backup using a command line client. It have
6495 a nicer access control system, where one can split out read and write
6496 access, allowing some systems to write to the backup and others to
6497 only read from it.&lt;/p&gt;
6498
6499 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
6500 activities, please send Bitcoin donations to my address
6501 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
6502 </description>
6503 </item>
6504
6505 <item>
6506 <title>Freedombox on Dreamplug, Raspberry Pi and virtual x86 machine</title>
6507 <link>https://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html</link>
6508 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html</guid>
6509 <pubDate>Fri, 14 Mar 2014 11:00:00 +0100</pubDate>
6510 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox
6511 project&lt;/a&gt; is working on providing the software and hardware for
6512 making it easy for non-technical people to host their data and
6513 communication at home, and being able to communicate with their
6514 friends and family encrypted and away from prying eyes. It has been
6515 going on for a while, and is slowly progressing towards a new test
6516 release (0.2).&lt;/p&gt;
6517
6518 &lt;p&gt;And what day could be better than the Pi day to announce that the
6519 new version will provide &quot;hard drive&quot; / SD card / USB stick images for
6520 Dreamplug, Raspberry Pi and VirtualBox (or any other virtualization
6521 system), and can also be installed using a Debian installer preseed
6522 file. The Debian based Freedombox is now based on Debian Jessie,
6523 where most of the needed packages used are already present. Only one,
6524 the freedombox-setup package, is missing. To try to build your own
6525 boot image to test the current status, fetch the freedom-maker scripts
6526 and build using
6527 &lt;a href=&quot;http://packages.qa.debian.org/vmdebootstrap&quot;&gt;vmdebootstrap&lt;/a&gt;
6528 with a user with sudo access to become root:
6529
6530 &lt;pre&gt;
6531 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
6532 freedom-maker
6533 sudo apt-get install git vmdebootstrap mercurial python-docutils \
6534 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
6535 u-boot-tools
6536 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
6537 &lt;/pre&gt;
6538
6539 &lt;p&gt;Root access is needed to run debootstrap and mount loopback
6540 devices. See the README for more details on the build. If you do not
6541 want all three images, trim the make line. But note that thanks to &lt;a
6542 href=&quot;https://bugs.debian.org/741407&quot;&gt;a race condition in
6543 vmdebootstrap&lt;/a&gt;, the build might fail without the patch to the
6544 kpartx call.&lt;/p&gt;
6545
6546 &lt;p&gt;If you instead want to install using a Debian CD and the preseed
6547 method, boot a Debian Wheezy ISO and use this boot argument to load
6548 the preseed values:&lt;/p&gt;
6549
6550 &lt;pre&gt;
6551 url=&lt;a href=&quot;http://www.reinholdtsen.name/freedombox/preseed-jessie.dat&quot;&gt;http://www.reinholdtsen.name/freedombox/preseed-jessie.dat&lt;/a&gt;
6552 &lt;/pre&gt;
6553
6554 &lt;p&gt;But note that due to &lt;a href=&quot;https://bugs.debian.org/740673&quot;&gt;a
6555 recently introduced bug in apt in Jessie&lt;/a&gt;, the installer will
6556 currently hang while setting up APT sources. Killing the
6557 &#39;&lt;tt&gt;apt-cdrom ident&lt;/tt&gt;&#39; process when it hang a few times during the
6558 installation will get the installation going. This affect all
6559 installations in Jessie, and I expect it will be fixed soon.&lt;/p&gt;
6560
6561 &lt;p&gt;Give it a go and let us know how it goes on the mailing list, and help
6562 us get the new release published. :) Please join us on
6563 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC (#freedombox on
6564 irc.debian.org)&lt;/a&gt; and
6565 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
6566 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
6567 </description>
6568 </item>
6569
6570 <item>
6571 <title>New home and release 1.0 for netgroup and innetgr (aka ng-utils)</title>
6572 <link>https://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html</link>
6573 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html</guid>
6574 <pubDate>Sat, 22 Feb 2014 21:45:00 +0100</pubDate>
6575 <description>&lt;p&gt;Many years ago, I wrote a GPL licensed version of the netgroup and
6576 innetgr tools, because I needed them in
6577 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt;. I called the project
6578 ng-utils, and it has served me well. I placed the project under the
6579 &lt;a href=&quot;http://www.hungry.com/&quot;&gt;Hungry Programmer&lt;/a&gt; umbrella, and it was maintained in our CVS
6580 repository. But many years ago, the CVS repository was dropped (lost,
6581 not migrated to new hardware, not sure), and the project have lacked a
6582 proper home since then.&lt;/p&gt;
6583
6584 &lt;p&gt;Last summer, I had a look at the package and made a new release
6585 fixing a irritating crash bug, but was unable to store the changes in
6586 a proper source control system. I applied for a project on
6587 &lt;a href=&quot;https://alioth.debian.org/&quot;&gt;Alioth&lt;/a&gt;, but did not have time
6588 to follow up on it. Until today. :)&lt;/p&gt;
6589
6590 &lt;p&gt;After many hours of cleaning and migration, the ng-utils project
6591 now have a new home, and a git repository with the highlight of the
6592 history of the project. I published all release tarballs and imported
6593 them into the git repository. As the project is really stable and not
6594 expected to gain new features any time soon, I decided to make a new
6595 release and call it 1.0. Visit the new project home on
6596 &lt;a href=&quot;https://alioth.debian.org/projects/ng-utils/&quot;&gt;https://alioth.debian.org/projects/ng-utils/&lt;/a&gt;
6597 if you want to check it out. The new version is also uploaded into
6598 &lt;a href=&quot;http://packages.qa.debian.org/n/ng-utils.html&quot;&gt;Debian Unstable&lt;/a&gt;.&lt;/p&gt;
6599 </description>
6600 </item>
6601
6602 <item>
6603 <title>Testing sysvinit from experimental in Debian Hurd</title>
6604 <link>https://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html</link>
6605 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html</guid>
6606 <pubDate>Mon, 3 Feb 2014 13:40:00 +0100</pubDate>
6607 <description>&lt;p&gt;A few days ago I decided to try to help the Hurd people to get
6608 their changes into sysvinit, to allow them to use the normal sysvinit
6609 boot system instead of their old one. This follow up on the
6610 &lt;a href=&quot;https://teythoon.cryptobitch.de//categories/gsoc.html&quot;&gt;great
6611 Google Summer of Code work&lt;/a&gt; done last summer by Justus Winter to
6612 get Debian on Hurd working more like Debian on Linux. To get started,
6613 I downloaded a prebuilt hard disk image from
6614 &lt;a href=&quot;http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz&quot;&gt;http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz&lt;/a&gt;,
6615 and started it using virt-manager.&lt;/p&gt;
6616
6617 &lt;p&gt;The first think I had to do after logging in (root without any
6618 password) was to get the network operational. I followed
6619 &lt;a href=&quot;https://www.debian.org/ports/hurd/hurd-install&quot;&gt;the
6620 instructions on the Debian GNU/Hurd ports page&lt;/a&gt; and ran these
6621 commands as root to get the machine to accept a IP address from the
6622 kvm internal DHCP server:&lt;/p&gt;
6623
6624 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6625 settrans -fgap /dev/netdde /hurd/netdde
6626 kill $(ps -ef|awk &#39;/[p]finet/ { print $2}&#39;)
6627 kill $(ps -ef|awk &#39;/[d]evnode/ { print $2}&#39;)
6628 dhclient /dev/eth0
6629 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6630
6631 &lt;p&gt;After this, the machine had internet connectivity, and I could
6632 upgrade it and install the sysvinit packages from experimental and
6633 enable it as the default boot system in Hurd.&lt;/p&gt;
6634
6635 &lt;p&gt;But before I did that, I set a password on the root user, as ssh is
6636 running on the machine it for ssh login to work a password need to be
6637 set. Also, note that a bug somewhere in openssh on Hurd block
6638 compression from working. Remember to turn that off on the client
6639 side.&lt;/p&gt;
6640
6641 &lt;p&gt;Run these commands as root to upgrade and test the new sysvinit
6642 stuff:&lt;/p&gt;
6643
6644 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6645 cat &gt; /etc/apt/sources.list.d/experimental.list &amp;lt;&amp;lt;EOF
6646 deb http://http.debian.net/debian/ experimental main
6647 EOF
6648 apt-get update
6649 apt-get dist-upgrade
6650 apt-get install -t experimental initscripts sysv-rc sysvinit \
6651 sysvinit-core sysvinit-utils
6652 update-alternatives --config runsystem
6653 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6654
6655 &lt;p&gt;To reboot after switching boot system, you have to use
6656 &lt;tt&gt;reboot-hurd&lt;/tt&gt; instead of just &lt;tt&gt;reboot&lt;/tt&gt;, as there is not
6657 yet a sysvinit process able to receive the signals from the normal
6658 &#39;reboot&#39; command. After switching to sysvinit as the boot system,
6659 upgrading every package and rebooting, the network come up with DHCP
6660 after boot as it should, and the settrans/pkill hack mentioned at the
6661 start is no longer needed. But for some strange reason, there are no
6662 longer any login prompt in the virtual console, so I logged in using
6663 ssh instead.
6664
6665 &lt;p&gt;Note that there are some race conditions in Hurd making the boot
6666 fail some times. No idea what the cause is, but hope the Hurd porters
6667 figure it out. At least Justus said on IRC (#debian-hurd on
6668 irc.debian.org) that they are aware of the problem. A way to reduce
6669 the impact is to upgrade to the Hurd packages built by Justus by
6670 adding this repository to the machine:&lt;/p&gt;
6671
6672 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6673 cat &gt; /etc/apt/sources.list.d/hurd-ci.list &amp;lt;&amp;lt;EOF
6674 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
6675 EOF
6676 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6677
6678 &lt;p&gt;At the moment the prebuilt virtual machine get some packages from
6679 http://ftp.debian-ports.org/debian, because some of the packages in
6680 unstable do not yet include the required patches that are lingering in
6681 BTS. This is the completely list of &quot;unofficial&quot; packages installed:&lt;/p&gt;
6682
6683 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
6684 # aptitude search &#39;?narrow(?version(CURRENT),?origin(Debian Ports))&#39;
6685 i emacs - GNU Emacs editor (metapackage)
6686 i gdb - GNU Debugger
6687 i hurd-recommended - Miscellaneous translators
6688 i isc-dhcp-client - ISC DHCP client
6689 i isc-dhcp-common - common files used by all the isc-dhcp* packages
6690 i libc-bin - Embedded GNU C Library: Binaries
6691 i libc-dev-bin - Embedded GNU C Library: Development binaries
6692 i libc0.3 - Embedded GNU C Library: Shared libraries
6693 i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
6694 i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
6695 i multiarch-support - Transitional package to ensure multiarch compatibilit
6696 i A x11-common - X Window System (X.Org) infrastructure
6697 i xorg - X.Org X Window System
6698 i A xserver-xorg - X.Org X server
6699 i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
6700 #
6701 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
6702
6703 &lt;p&gt;All in all, testing hurd has been an interesting experience. :)
6704 X.org did not work out of the box and I never took the time to follow
6705 the porters instructions to fix it. This time I was interested in the
6706 command line stuff.&lt;p&gt;
6707 </description>
6708 </item>
6709
6710 <item>
6711 <title>New chrpath release 0.16</title>
6712 <link>https://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html</link>
6713 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html</guid>
6714 <pubDate>Tue, 14 Jan 2014 11:00:00 +0100</pubDate>
6715 <description>&lt;p&gt;&lt;a href=&quot;http://www.coverity.com/&quot;&gt;Coverity&lt;/a&gt; is a nice tool to
6716 find problems in C, C++ and Java code using static source code
6717 analysis. It can detect a lot of different problems, and is very
6718 useful to find memory and locking bugs in the error handling part of
6719 the source. The company behind it provide
6720 &lt;a href=&quot;https://scan.coverity.com/&quot;&gt;check of free software projects as
6721 a community service&lt;/a&gt;, and many hundred free software projects are
6722 already checked. A few days ago I decided to have a closer look at
6723 the Coverity system, and discovered that the
6724 &lt;a href=&quot;http://www.gnu.org/software/gnash/&quot;&gt;gnash&lt;/a&gt; and
6725 &lt;a href=&quot;http://sourceforge.net/projects/ipmitool/&quot;&gt;ipmitool&lt;/a&gt;
6726 projects I am involved with was already registered. But these are
6727 fairly big, and I would also like to have a small and easy project to
6728 check, and decided to &lt;a href=&quot;http://scan.coverity.com/projects/1179&quot;&gt;request
6729 checking of the chrpath project&lt;/a&gt;. It was
6730 added to the checker and discovered seven potential defects. Six of
6731 these were real, mostly resource &quot;leak&quot; when the program detected an
6732 error. Nothing serious, as the resources would be released a fraction
6733 of a second later when the program exited because of the error, but it
6734 is nice to do it right in case the source of the program some time in
6735 the future end up in a library. Having fixed all defects and added
6736 &lt;a href=&quot;https://lists.alioth.debian.org/mailman/listinfo/chrpath-devel&quot;&gt;a
6737 mailing list for the chrpath developers&lt;/a&gt;, I decided it was time to
6738 publish a new release. These are the release notes:&lt;/p&gt;
6739
6740 &lt;p&gt;New in 0.16 released 2014-01-14:&lt;/p&gt;
6741
6742 &lt;ul&gt;
6743
6744 &lt;li&gt;Fixed all minor bugs discovered by Coverity.&lt;/li&gt;
6745 &lt;li&gt;Updated config.sub and config.guess from the GNU project.&lt;/li&gt;
6746 &lt;li&gt;Mention new project mailing list in the documentation.&lt;/li&gt;
6747
6748 &lt;/ul&gt;
6749
6750 &lt;p&gt;You can
6751 &lt;a href=&quot;https://alioth.debian.org/frs/?group_id=31052&quot;&gt;download the
6752 new version 0.16 from alioth&lt;/a&gt;. Please let us know via the Alioth
6753 project if something is wrong with the new release. The test suite
6754 did not discover any old errors, so if you find a new one, please also
6755 include a test suite check.&lt;/p&gt;
6756 </description>
6757 </item>
6758
6759 <item>
6760 <title>New chrpath release 0.15</title>
6761 <link>https://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html</link>
6762 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html</guid>
6763 <pubDate>Sun, 24 Nov 2013 09:30:00 +0100</pubDate>
6764 <description>&lt;p&gt;After many years break from the package and a vain hope that
6765 development would be continued by someone else, I finally pulled my
6766 acts together this morning and wrapped up a new release of chrpath,
6767 the command line tool to modify the rpath and runpath of already
6768 compiled ELF programs. The update was triggered by the persistence of
6769 Isha Vishnoi at IBM, which needed a new config.guess file to get
6770 support for the ppc64le architecture (powerpc 64-bit Little Endian) he
6771 is working on. I checked the
6772 &lt;a href=&quot;http://packages.qa.debian.org/chrpath&quot;&gt;Debian&lt;/a&gt;,
6773 &lt;a href=&quot;https://launchpad.net/ubuntu/+source/chrpath&quot;&gt;Ubuntu&lt;/a&gt; and
6774 &lt;a href=&quot;https://admin.fedoraproject.org/pkgdb/acls/name/chrpath&quot;&gt;Fedora&lt;/a&gt;
6775 packages for interesting patches (failed to find the source from
6776 OpenSUSE and Mandriva packages), and found quite a few nice fixes.
6777 These are the release notes:&lt;/p&gt;
6778
6779 &lt;p&gt;New in 0.15 released 2013-11-24:&lt;/p&gt;
6780
6781 &lt;ul&gt;
6782
6783 &lt;li&gt;Updated config.sub and config.guess from the GNU project to work
6784 with newer architectures. Thanks to isha vishnoi for the heads
6785 up.&lt;/li&gt;
6786
6787 &lt;li&gt;Updated README with current URLs.&lt;/li&gt;
6788
6789 &lt;li&gt;Added byteswap fix found in Ubuntu, credited Jeremy Kerr and
6790 Matthias Klose.&lt;/li&gt;
6791
6792 &lt;li&gt;Added missing help for -k|--keepgoing option, using patch by
6793 Petr Machata found in Fedora.&lt;/li&gt;
6794
6795 &lt;li&gt;Rewrite removal of RPATH/RUNPATH to make sure the entry in
6796 .dynamic is a NULL terminated string. Based on patch found in
6797 Fedora credited Axel Thimm and Christian Krause.&lt;/li&gt;
6798
6799 &lt;/ul&gt;
6800
6801 &lt;p&gt;You can
6802 &lt;a href=&quot;https://alioth.debian.org/frs/?group_id=31052&quot;&gt;download the
6803 new version 0.15 from alioth&lt;/a&gt;. Please let us know via the Alioth
6804 project if something is wrong with the new release. The test suite
6805 did not discover any old errors, so if you find a new one, please also
6806 include a testsuite check.&lt;/p&gt;
6807 </description>
6808 </item>
6809
6810 <item>
6811 <title>Debian init.d boot script example for rsyslog</title>
6812 <link>https://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</link>
6813 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</guid>
6814 <pubDate>Sat, 2 Nov 2013 22:40:00 +0100</pubDate>
6815 <description>&lt;p&gt;If one of the points of switching to a new init system in Debian is
6816 &lt;a href=&quot;http://thomas.goirand.fr/blog/?p=147&quot;&gt;to get rid of huge
6817 init.d scripts&lt;/a&gt;, I doubt we need to switch away from sysvinit and
6818 init.d scripts at all. Here is an example init.d script, ie a rewrite
6819 of /etc/init.d/rsyslog:&lt;/p&gt;
6820
6821 &lt;p&gt;&lt;pre&gt;
6822 #!/lib/init/init-d-script
6823 ### BEGIN INIT INFO
6824 # Provides: rsyslog
6825 # Required-Start: $remote_fs $time
6826 # Required-Stop: umountnfs $time
6827 # X-Stop-After: sendsigs
6828 # Default-Start: 2 3 4 5
6829 # Default-Stop: 0 1 6
6830 # Short-Description: enhanced syslogd
6831 # Description: Rsyslog is an enhanced multi-threaded syslogd.
6832 # It is quite compatible to stock sysklogd and can be
6833 # used as a drop-in replacement.
6834 ### END INIT INFO
6835 DESC=&quot;enhanced syslogd&quot;
6836 DAEMON=/usr/sbin/rsyslogd
6837 &lt;/pre&gt;&lt;/p&gt;
6838
6839 &lt;p&gt;Pretty minimalistic to me... For the record, the original sysv-rc
6840 script was 137 lines, and the above is just 15 lines, most of it meta
6841 info/comments.&lt;/p&gt;
6842
6843 &lt;p&gt;How to do this, you ask? Well, one create a new script
6844 /lib/init/init-d-script looking something like this:
6845
6846 &lt;p&gt;&lt;pre&gt;
6847 #!/bin/sh
6848
6849 # Define LSB log_* functions.
6850 # Depend on lsb-base (&gt;= 3.2-14) to ensure that this file is present
6851 # and status_of_proc is working.
6852 . /lib/lsb/init-functions
6853
6854 #
6855 # Function that starts the daemon/service
6856
6857 #
6858 do_start()
6859 {
6860 # Return
6861 # 0 if daemon has been started
6862 # 1 if daemon was already running
6863 # 2 if daemon could not be started
6864 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test &gt; /dev/null \
6865 || return 1
6866 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
6867 $DAEMON_ARGS \
6868 || return 2
6869 # Add code here, if necessary, that waits for the process to be ready
6870 # to handle requests from services started subsequently which depend
6871 # on this one. As a last resort, sleep for some time.
6872 }
6873
6874 #
6875 # Function that stops the daemon/service
6876 #
6877 do_stop()
6878 {
6879 # Return
6880 # 0 if daemon has been stopped
6881 # 1 if daemon was already stopped
6882 # 2 if daemon could not be stopped
6883 # other if a failure occurred
6884 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
6885 RETVAL=&quot;$?&quot;
6886 [ &quot;$RETVAL&quot; = 2 ] &amp;&amp; return 2
6887 # Wait for children to finish too if this is a daemon that forks
6888 # and if the daemon is only ever run from this initscript.
6889 # If the above conditions are not satisfied then add some other code
6890 # that waits for the process to drop all resources that could be
6891 # needed by services started subsequently. A last resort is to
6892 # sleep for some time.
6893 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
6894 [ &quot;$?&quot; = 2 ] &amp;&amp; return 2
6895 # Many daemons don&#39;t delete their pidfiles when they exit.
6896 rm -f $PIDFILE
6897 return &quot;$RETVAL&quot;
6898 }
6899
6900 #
6901 # Function that sends a SIGHUP to the daemon/service
6902 #
6903 do_reload() {
6904 #
6905 # If the daemon can reload its configuration without
6906 # restarting (for example, when it is sent a SIGHUP),
6907 # then implement that here.
6908 #
6909 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
6910 return 0
6911 }
6912
6913 SCRIPTNAME=$1
6914 scriptbasename=&quot;$(basename $1)&quot;
6915 echo &quot;SN: $scriptbasename&quot;
6916 if [ &quot;$scriptbasename&quot; != &quot;init-d-library&quot; ] ; then
6917 script=&quot;$1&quot;
6918 shift
6919 . $script
6920 else
6921 exit 0
6922 fi
6923
6924 NAME=$(basename $DAEMON)
6925 PIDFILE=/var/run/$NAME.pid
6926
6927 # Exit if the package is not installed
6928 #[ -x &quot;$DAEMON&quot; ] || exit 0
6929
6930 # Read configuration variable file if it is present
6931 [ -r /etc/default/$NAME ] &amp;&amp; . /etc/default/$NAME
6932
6933 # Load the VERBOSE setting and other rcS variables
6934 . /lib/init/vars.sh
6935
6936 case &quot;$1&quot; in
6937 start)
6938 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Starting $DESC&quot; &quot;$NAME&quot;
6939 do_start
6940 case &quot;$?&quot; in
6941 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
6942 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
6943 esac
6944 ;;
6945 stop)
6946 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Stopping $DESC&quot; &quot;$NAME&quot;
6947 do_stop
6948 case &quot;$?&quot; in
6949 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
6950 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
6951 esac
6952 ;;
6953 status)
6954 status_of_proc &quot;$DAEMON&quot; &quot;$NAME&quot; &amp;&amp; exit 0 || exit $?
6955 ;;
6956 #reload|force-reload)
6957 #
6958 # If do_reload() is not implemented then leave this commented out
6959 # and leave &#39;force-reload&#39; as an alias for &#39;restart&#39;.
6960 #
6961 #log_daemon_msg &quot;Reloading $DESC&quot; &quot;$NAME&quot;
6962 #do_reload
6963 #log_end_msg $?
6964 #;;
6965 restart|force-reload)
6966 #
6967 # If the &quot;reload&quot; option is implemented then remove the
6968 # &#39;force-reload&#39; alias
6969 #
6970 log_daemon_msg &quot;Restarting $DESC&quot; &quot;$NAME&quot;
6971 do_stop
6972 case &quot;$?&quot; in
6973 0|1)
6974 do_start
6975 case &quot;$?&quot; in
6976 0) log_end_msg 0 ;;
6977 1) log_end_msg 1 ;; # Old process is still running
6978 *) log_end_msg 1 ;; # Failed to start
6979 esac
6980 ;;
6981 *)
6982 # Failed to stop
6983 log_end_msg 1
6984 ;;
6985 esac
6986 ;;
6987 *)
6988 echo &quot;Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}&quot; &gt;&amp;2
6989 exit 3
6990 ;;
6991 esac
6992
6993 :
6994 &lt;/pre&gt;&lt;/p&gt;
6995
6996 &lt;p&gt;It is based on /etc/init.d/skeleton, and could be improved quite a
6997 lot. I did not really polish the approach, so it might not always
6998 work out of the box, but you get the idea. I did not try very hard to
6999 optimize it nor make it more robust either.&lt;/p&gt;
7000
7001 &lt;p&gt;A better argument for switching init system in Debian than reducing
7002 the size of init scripts (which is a good thing to do anyway), is to
7003 get boot system that is able to handle the kernel events sensibly and
7004 robustly, and do not depend on the boot to run sequentially. The boot
7005 and the kernel have not behaved sequentially in years.&lt;/p&gt;
7006 </description>
7007 </item>
7008
7009 <item>
7010 <title>Browser plugin for SPICE (spice-xpi) uploaded to Debian</title>
7011 <link>https://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</link>
7012 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</guid>
7013 <pubDate>Fri, 1 Nov 2013 11:00:00 +0100</pubDate>
7014 <description>&lt;p&gt;&lt;a href=&quot;http://www.spice-space.org/&quot;&gt;The SPICE protocol&lt;/a&gt; for
7015 remote display access is the preferred solution with oVirt and RedHat
7016 Enterprise Virtualization, and I was sad to discover the other day
7017 that the browser plugin needed to use these systems seamlessly was
7018 missing in Debian. The &lt;a href=&quot;http://bugs.debian.org/668284&quot;&gt;request
7019 for a package&lt;/a&gt; was from 2012-04-10 with no progress since
7020 2013-04-01, so I decided to wrap up a package based on the great work
7021 from Cajus Pollmeier and put it in a collab-maint maintained git
7022 repository to get a package I could use. I would very much like
7023 others to help me maintain the package (or just take over, I do not
7024 mind), but as no-one had volunteered so far, I just uploaded it to
7025 NEW. I hope it will be available in Debian in a few days.&lt;/p&gt;
7026
7027 &lt;p&gt;The source is now available from
7028 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary&quot;&gt;http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary&lt;/a&gt;.&lt;/p&gt;
7029 </description>
7030 </item>
7031
7032 <item>
7033 <title>Teaching vmdebootstrap to create Raspberry Pi SD card images</title>
7034 <link>https://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</link>
7035 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</guid>
7036 <pubDate>Sun, 27 Oct 2013 17:00:00 +0100</pubDate>
7037 <description>&lt;p&gt;The
7038 &lt;a href=&quot;http://packages.qa.debian.org/v/vmdebootstrap.html&quot;&gt;vmdebootstrap&lt;/a&gt;
7039 program is a a very nice system to create virtual machine images. It
7040 create a image file, add a partition table, mount it and run
7041 debootstrap in the mounted directory to create a Debian system on a
7042 stick. Yesterday, I decided to try to teach it how to make images for
7043 &lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi&lt;/a&gt;, as part
7044 of a plan to simplify the build system for
7045 &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the FreedomBox
7046 project&lt;/a&gt;. The FreedomBox project already uses vmdebootstrap for
7047 the virtualbox images, but its current build system made multistrap
7048 based system for Dreamplug images, and it is lacking support for
7049 Raspberry Pi.&lt;/p&gt;
7050
7051 &lt;p&gt;Armed with the knowledge on how to build &quot;foreign&quot; (aka non-native
7052 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
7053 code and adjusted it to be able to build armel images on my amd64
7054 Debian laptop. I ended up giving vmdebootstrap five new options,
7055 allowing me to replicate the image creation process I use to make
7056 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html&quot;&gt;Debian
7057 Jessie based mesh node images for the Raspberry Pi&lt;/a&gt;. First, the
7058 &lt;tt&gt;--foreign /path/to/binfm_handler&lt;/tt&gt; option tell vmdebootstrap to
7059 call debootstrap with --foreign and to copy the handler into the
7060 generated chroot before running the second stage. This allow
7061 vmdebootstrap to create armel images on an amd64 host. Next I added
7062 two new options &lt;tt&gt;--bootsize size&lt;/tt&gt; and &lt;tt&gt;--boottype
7063 fstype&lt;/tt&gt; to teach it to create a separate /boot/ partition with the
7064 given file system type, allowing me to create an image with a vfat
7065 partition for the /boot/ stuff. I also added a &lt;tt&gt;--variant
7066 variant&lt;/tt&gt; option to allow me to create smaller images without the
7067 Debian base system packages installed. Finally, I added an option
7068 &lt;tt&gt;--no-extlinux&lt;/tt&gt; to tell vmdebootstrap to not install extlinux
7069 as a boot loader. It is not needed on the Raspberry Pi and probably
7070 most other non-x86 architectures. The changes were accepted by the
7071 upstream author of vmdebootstrap yesterday and today, and is now
7072 available from
7073 &lt;a href=&quot;http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/&quot;&gt;the
7074 upstream project page&lt;/a&gt;.&lt;/p&gt;
7075
7076 &lt;p&gt;To use it to build a Raspberry Pi image using Debian Jessie, first
7077 create a small script (the customize script) to add the non-free
7078 binary blob needed to boot the Raspberry Pi and the APT source
7079 list:&lt;/p&gt;
7080
7081 &lt;p&gt;&lt;pre&gt;
7082 #!/bin/sh
7083 set -e # Exit on first error
7084 rootdir=&quot;$1&quot;
7085 cd &quot;$rootdir&quot;
7086 cat &amp;lt;&amp;lt;EOF &gt; etc/apt/sources.list
7087 deb http://http.debian.net/debian/ jessie main contrib non-free
7088 EOF
7089 # Install non-free binary blob needed to boot Raspberry Pi. This
7090 # install a kernel somewhere too.
7091 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
7092 -O $rootdir/usr/bin/rpi-update
7093 chmod a+x $rootdir/usr/bin/rpi-update
7094 mkdir -p $rootdir/lib/modules
7095 touch $rootdir/boot/start.elf
7096 chroot $rootdir rpi-update
7097 &lt;/pre&gt;&lt;/p&gt;
7098
7099 &lt;p&gt;Next, fetch the latest vmdebootstrap script and call it like this
7100 to build the image:&lt;/p&gt;
7101
7102 &lt;pre&gt;
7103 sudo ./vmdebootstrap \
7104 --variant minbase \
7105 --arch armel \
7106 --distribution jessie \
7107 --mirror http://http.debian.net/debian \
7108 --image test.img \
7109 --size 600M \
7110 --bootsize 64M \
7111 --boottype vfat \
7112 --log-level debug \
7113 --verbose \
7114 --no-kernel \
7115 --no-extlinux \
7116 --root-password raspberry \
7117 --hostname raspberrypi \
7118 --foreign /usr/bin/qemu-arm-static \
7119 --customize `pwd`/customize \
7120 --package netbase \
7121 --package git-core \
7122 --package binutils \
7123 --package ca-certificates \
7124 --package wget \
7125 --package kmod
7126 &lt;/pre&gt;&lt;/p&gt;
7127
7128 &lt;p&gt;The list of packages being installed are the ones needed by
7129 rpi-update to make the image bootable on the Raspberry Pi, with the
7130 exception of netbase, which is needed by debootstrap to find
7131 /etc/hosts with the minbase variant. I really wish there was a way to
7132 set up an Raspberry Pi using only packages in the Debian archive, but
7133 that is not possible as far as I know, because it boots from the GPU
7134 using a non-free binary blob.&lt;/p&gt;
7135
7136 &lt;p&gt;The build host need debootstrap, kpartx and qemu-user-static and
7137 probably a few others installed. I have not checked the complete
7138 build dependency list.&lt;/p&gt;
7139
7140 &lt;p&gt;The resulting image will not use the hardware floating point unit
7141 on the Raspberry PI, because the armel architecture in Debian is not
7142 optimized for that use. So the images created will be a bit slower
7143 than &lt;a href=&quot;http://www.raspbian.org/&quot;&gt;Raspbian&lt;/a&gt; based images.&lt;/p&gt;
7144 </description>
7145 </item>
7146
7147 <item>
7148 <title>Good causes: Debian Outreach Program for Women, EFF documenting the spying and Open access in Norway</title>
7149 <link>https://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</link>
7150 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</guid>
7151 <pubDate>Tue, 15 Oct 2013 21:30:00 +0200</pubDate>
7152 <description>&lt;p&gt;The last few days I came across a few good causes that should get
7153 wider attention. I recommend signing and donating to each one of
7154 these. :)&lt;/p&gt;
7155
7156 &lt;p&gt;Via &lt;a href=&quot;http://www.debian.org/News/weekly/2013/18/&quot;&gt;Debian
7157 Project News for 2013-10-14&lt;/a&gt; I came across the Outreach Program for
7158 Women program which is a Google Summer of Code like initiative to get
7159 more women involved in free software. One debian sponsor has offered
7160 to match &lt;a href=&quot;http://debian.ch/opw2013&quot;&gt;any donation done to Debian
7161 earmarked&lt;/a&gt; for this initiative. I donated a few minutes ago, and
7162 hope you will to. :)&lt;/p&gt;
7163
7164 &lt;p&gt;And the Electronic Frontier Foundation just announced plans to
7165 create &lt;a href=&quot;https://supporters.eff.org/donate/nsa-videos&quot;&gt;video
7166 documentaries about the excessive spying&lt;/a&gt; on every Internet user that
7167 take place these days, and their need to fund the work. I&#39;ve already
7168 donated. Are you next?&lt;/p&gt;
7169
7170 &lt;p&gt;For my Norwegian audience, the organisation Studentenes og
7171 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
7172 statement under the heading
7173 &lt;a href=&quot;http://saih.no/Bloggers_United/&quot;&gt;Bloggers United for Open
7174 Access&lt;/a&gt; for those of us asking for more focus on open access in the
7175 Norwegian government. So far 499 signatures. I hope you will sign it
7176 too.&lt;/p&gt;
7177 </description>
7178 </item>
7179
7180 <item>
7181 <title>Videos about the Freedombox project - for inspiration and learning</title>
7182 <link>https://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</link>
7183 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</guid>
7184 <pubDate>Fri, 27 Sep 2013 14:10:00 +0200</pubDate>
7185 <description>&lt;p&gt;The &lt;a href=&quot;http://www.freedomboxfoundation.org/&quot;&gt;Freedombox
7186 project&lt;/a&gt; have been going on for a while, and have presented the
7187 vision, ideas and solution several places. Here is a little
7188 collection of videos of talks and presentation of the project.&lt;/p&gt;
7189
7190 &lt;ul&gt;
7191
7192 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ukvUz5taxvA&quot;&gt;FreedomBox -
7193 2,5 minute marketing film&lt;/a&gt; (Youtube)&lt;/li&gt;
7194
7195 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=SzW25QTVWsE&quot;&gt;Eben Moglen
7196 discusses the Freedombox on CBS news 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
7197
7198 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=Ae8SZbxfE0g&quot;&gt;Eben Moglen -
7199 Freedom in the Cloud - Software Freedom, Privacy and and Security for
7200 Web 2.0 and Cloud computing at ISOC-NY Public Meeting 2010&lt;/a&gt;
7201 (Youtube)&lt;/li&gt;
7202
7203 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=vNaIji_3xBE&quot;&gt;Fosdem 2011
7204 Keynote by Eben Moglen presenting the Freedombox&lt;/a&gt; (Youtube)&lt;/li&gt;
7205
7206 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=9bDDUyJSQ9s&quot;&gt;Presentation of
7207 the Freedombox by James Vasile at Elevate in Gratz 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
7208
7209 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=zQTmnk27g9s&quot;&gt; Freedombox -
7210 Discovery, Identity, and Trust by Nick Daly at Freedombox Hackfest New
7211 York City in 2012&lt;/a&gt; (Youtube)&lt;/li&gt;
7212
7213 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=tkbSB4Ba7Ck&quot;&gt;Introduction
7214 to the Freedombox at Freedombox Hackfest New York City in 2012&lt;/a&gt;
7215 (Youtube)&lt;/li&gt;
7216
7217 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=z-P2Jaeg0aQ&quot;&gt;Freedom, Out
7218 of the Box! by Bdale Garbee at linux.conf.au Ballarat, 2012&lt;/a&gt; (Youtube) &lt;/li&gt;
7219
7220 &lt;li&gt;&lt;a href=&quot;https://archive.fosdem.org/2013/schedule/event/freedombox/&quot;&gt;Freedombox
7221 1.0 by Eben Moglen and Bdale Garbee at Fosdem 2013&lt;/a&gt; (FOSDEM) &lt;/li&gt;
7222
7223 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=e1LpYX2zVYg&quot;&gt;What is the
7224 FreedomBox today by Bdale Garbee at Debconf13 in Vaumarcus
7225 2013&lt;/a&gt; (Youtube)&lt;/li&gt;
7226
7227 &lt;/ul&gt;
7228
7229 &lt;p&gt;A larger list is available from
7230 &lt;a href=&quot;https://wiki.debian.org/FreedomBox/TalksAndPresentations&quot;&gt;the
7231 Freedombox Wiki&lt;/a&gt;.&lt;/p&gt;
7232
7233 &lt;p&gt;On other news, I am happy to report that Freedombox based on Debian
7234 Jessie is coming along quite well, and soon both Owncloud and using
7235 Tor should be available for testers of the Freedombox solution. :) In
7236 a few weeks I hope everything needed to test it is included in Debian.
7237 The withsqlite package is already in Debian, and the plinth package is
7238 pending in NEW. The third and vital part of that puzzle is the
7239 metapackage/setup framework, which is still pending an upload. Join
7240 us on &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC
7241 (#freedombox on irc.debian.org)&lt;/a&gt; and
7242 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
7243 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
7244 </description>
7245 </item>
7246
7247 <item>
7248 <title>Recipe to test the Freedombox project on amd64 or Raspberry Pi</title>
7249 <link>https://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html</link>
7250 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html</guid>
7251 <pubDate>Tue, 10 Sep 2013 14:20:00 +0200</pubDate>
7252 <description>&lt;p&gt;I was introduced to the
7253 &lt;a href=&quot;http://www.freedomboxfoundation.org/&quot;&gt;Freedombox project&lt;/a&gt;
7254 in 2010, when Eben Moglen presented his vision about serving the need
7255 of non-technical people to keep their personal information private and
7256 within the legal protection of their own homes. The idea is to give
7257 people back the power over their network and machines, and return
7258 Internet back to its intended peer-to-peer architecture. Instead of
7259 depending on a central service, the Freedombox will give everyone
7260 control over their own basic infrastructure.&lt;/p&gt;
7261
7262 &lt;p&gt;I&#39;ve intended to join the effort since then, but other tasks have
7263 taken priority. But this summers nasty news about the misuse of trust
7264 and privilege exercised by the &quot;western&quot; intelligence gathering
7265 communities increased my eagerness to contribute to a point where I
7266 actually started working on the project a while back.&lt;/p&gt;
7267
7268 &lt;p&gt;The &lt;a href=&quot;https://alioth.debian.org/projects/freedombox/&quot;&gt;initial
7269 Debian initiative&lt;/a&gt; based on the vision from Eben Moglen, is to
7270 create a simple and cheap Debian based appliance that anyone can hook
7271 up in their home and get access to secure and private services and
7272 communication. The initial deployment platform have been the
7273 &lt;a href=&quot;http://www.globalscaletechnologies.com/t-dreamplugdetails.aspx&quot;&gt;Dreamplug&lt;/a&gt;,
7274 which is a piece of hardware I do not own. So to be able to test what
7275 the current Freedombox setup look like, I had to come up with a way to install
7276 it on some hardware I do have access to. I have rewritten the
7277 &lt;a href=&quot;https://github.com/NickDaly/freedom-maker&quot;&gt;freedom-maker&lt;/a&gt;
7278 image build framework to use .deb packages instead of only copying
7279 setup into the boot images, and thanks to this rewrite I am able to
7280 set up any machine supported by Debian Wheezy as a Freedombox, using
7281 the previously mentioned deb (and a few support debs for packages
7282 missing in Debian).&lt;/p&gt;
7283
7284 &lt;p&gt;The current Freedombox setup consist of a set of bootstrapping
7285 scripts
7286 (&lt;a href=&quot;https://github.com/petterreinholdtsen/freedombox-setup&quot;&gt;freedombox-setup&lt;/a&gt;),
7287 and a administrative web interface
7288 (&lt;a href=&quot;https://github.com/NickDaly/Plinth&quot;&gt;plinth&lt;/a&gt; + exmachina +
7289 withsqlite), as well as a privacy enhancing proxy based on
7290 &lt;a href=&quot;http://packages.qa.debian.org/privoxy&quot;&gt;privoxy&lt;/a&gt;
7291 (freedombox-privoxy). There is also a web/javascript based XMPP
7292 client (&lt;a href=&quot;http://packages.qa.debian.org/jwchat&quot;&gt;jwchat&lt;/a&gt;)
7293 trying (unsuccessfully so far) to talk to the XMPP server
7294 (&lt;a href=&quot;http://packages.qa.debian.org/ejabberd&quot;&gt;ejabberd&lt;/a&gt;). The
7295 web interface is pluggable, and the goal is to use it to enable OpenID
7296 services, mesh network connectivity, use of TOR, etc, etc. Not much of
7297 this is really working yet, see
7298 &lt;a href=&quot;https://github.com/NickDaly/freedombox-todos/blob/master/TODO&quot;&gt;the
7299 project TODO&lt;/a&gt; for links to GIT repositories. Most of the code is
7300 on github at the moment. The HTTP proxy is operational out of the
7301 box, and the admin web interface can be used to add/remove plinth
7302 users. I&#39;ve not been able to do anything else with it so far, but
7303 know there are several branches spread around github and other places
7304 with lots of half baked features.&lt;/p&gt;
7305
7306 &lt;p&gt;Anyway, if you want to have a look at the current state, the
7307 following recipes should work to give you a test machine to poke
7308 at.&lt;/p&gt;
7309
7310 &lt;p&gt;&lt;strong&gt;Debian Wheezy amd64&lt;/strong&gt;&lt;/p&gt;
7311
7312 &lt;ol&gt;
7313
7314 &lt;li&gt;Fetch normal Debian Wheezy installation ISO.&lt;/li&gt;
7315 &lt;li&gt;Boot from it, either as CD or USB stick.&lt;/li&gt;
7316 &lt;li&gt;&lt;p&gt;Press [tab] on the boot prompt and add this as a boot argument
7317 to the Debian installer:&lt;p&gt;
7318 &lt;pre&gt;url=&lt;a href=&quot;http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat&quot;&gt;http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat&lt;/a&gt;&lt;/pre&gt;&lt;/li&gt;
7319
7320 &lt;li&gt;Answer the few language/region/password questions and pick disk to
7321 install on.&lt;/li&gt;
7322
7323 &lt;li&gt;When the installation is finished and the machine have rebooted a
7324 few times, your Freedombox is ready for testing.&lt;/li&gt;
7325
7326 &lt;/ol&gt;
7327
7328 &lt;p&gt;&lt;strong&gt;Raspberry Pi Raspbian&lt;/strong&gt;&lt;/p&gt;
7329
7330 &lt;ol&gt;
7331
7332 &lt;li&gt;Fetch a Raspbian SD card image, create SD card.&lt;/li&gt;
7333 &lt;li&gt;Boot from SD card, extend file system to fill the card completely.&lt;/li&gt;
7334 &lt;li&gt;&lt;p&gt;Log in and add this to /etc/sources.list:&lt;/p&gt;
7335 &lt;pre&gt;
7336 deb &lt;a href=&quot;http://www.reinholdtsen.name/freedombox/&quot;&gt;http://www.reinholdtsen.name/freedombox&lt;/a&gt; wheezy main
7337 &lt;/pre&gt;&lt;/li&gt;
7338 &lt;li&gt;&lt;p&gt;Run this as root:&lt;/p&gt;
7339 &lt;pre&gt;
7340 wget -O - http://www.reinholdtsen.name/freedombox/BE1A583D.asc | \
7341 apt-key add -
7342 apt-get update
7343 apt-get install freedombox-setup
7344 /usr/lib/freedombox/setup
7345 &lt;/pre&gt;&lt;/li&gt;
7346 &lt;li&gt;Reboot into your freshly created Freedombox.&lt;/li&gt;
7347
7348 &lt;/ol&gt;
7349
7350 &lt;p&gt;You can test it on other architectures too, but because the
7351 freedombox-privoxy package is binary, it will only work as intended on
7352 the architectures where I have had time to build the binary and put it
7353 in my APT repository. But do not let this stop you. It is only a
7354 short &quot;&lt;tt&gt;apt-get source -b freedombox-privoxy&lt;/tt&gt;&quot; away. :)&lt;/p&gt;
7355
7356 &lt;p&gt;Note that by default Freedombox is a DHCP server on the
7357 192.168.1.0/24 subnet, so if this is your subnet be careful and turn
7358 off the DHCP server by running &quot;&lt;tt&gt;update-rc.d isc-dhcp-server
7359 disable&lt;/tt&gt;&quot; as root.&lt;/p&gt;
7360
7361 &lt;p&gt;Please let me know if this works for you, or if you have any
7362 problems. We gather on the IRC channel
7363 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;#freedombox&lt;/a&gt; on
7364 irc.debian.org and the
7365 &lt;a href=&quot;http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/freedombox-discuss&quot;&gt;project
7366 mailing list&lt;/a&gt;.&lt;/p&gt;
7367
7368 &lt;p&gt;Once you get your freedombox operational, you can visit
7369 &lt;tt&gt;http://your-host-name:8001/&lt;/tt&gt; to see the state of the plint
7370 welcome screen (dead end - do not be surprised if you are unable to
7371 get past it), and next visit &lt;tt&gt;http://your-host-name:8001/help/&lt;/tt&gt;
7372 to look at the rest of plinth. The default user is &#39;admin&#39; and the
7373 default password is &#39;secret&#39;.&lt;/p&gt;
7374 </description>
7375 </item>
7376
7377 <item>
7378 <title>Intel 180 SSD disk with Lenovo firmware can not use Intel firmware</title>
7379 <link>https://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html</link>
7380 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html</guid>
7381 <pubDate>Sun, 18 Aug 2013 14:00:00 +0200</pubDate>
7382 <description>&lt;p&gt;Earlier, I reported about
7383 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html&quot;&gt;my
7384 problems using an Intel SSD 520 Series 180 GB disk&lt;/a&gt;. Friday I was
7385 told by IBM that the original disk should be thrown away. And as
7386 there no longer was a problem if I bricked the firmware, I decided
7387 today to try to install Intel firmware to replace the Lenovo firmware
7388 currently on the disk.&lt;/p&gt;
7389
7390 &lt;p&gt;I searched the Intel site for firmware, and found
7391 &lt;a href=&quot;https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&amp;ProdId=3472&amp;DwnldID=18363&amp;ProductFamily=Solid-State+Drives+and+Caching&amp;ProductLine=Intel%c2%ae+High+Performance+Solid-State+Drive&amp;ProductProduct=Intel%c2%ae+SSD+520+Series+(180GB%2c+2.5in+SATA+6Gb%2fs%2c+25nm%2c+MLC)&amp;lang=eng&quot;&gt;issdfut_2.0.4.iso&lt;/a&gt;
7392 (aka Intel SATA Solid-State Drive Firmware Update Tool) which
7393 according to the site should contain the latest firmware for SSD
7394 disks. I inserted the broken disk in one of my spare laptops and
7395 booted the ISO from a USB stick. The disk was recognized, but the
7396 program claimed the newest firmware already were installed and refused
7397 to insert any Intel firmware. So no change, and the disk is still
7398 unable to handle write load. :( I guess the only way to get them
7399 working would be if Lenovo releases new firmware. No idea how likely
7400 that is. Anyway, just blogging about this test for completeness. I
7401 got a working Samsung disk, and see no point in spending more time on
7402 the broken disks.&lt;/p&gt;
7403 </description>
7404 </item>
7405
7406 <item>
7407 <title>How to fix a Thinkpad X230 with a broken 180 GB SSD disk</title>
7408 <link>https://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html</link>
7409 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html</guid>
7410 <pubDate>Wed, 17 Jul 2013 23:50:00 +0200</pubDate>
7411 <description>&lt;p&gt;Today I switched to
7412 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html&quot;&gt;my
7413 new laptop&lt;/a&gt;. I&#39;ve previously written about the problems I had with
7414 my new Thinkpad X230, which was delivered with an
7415 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html&quot;&gt;180
7416 GB Intel SSD disk with Lenovo firmware&lt;/a&gt; that did not handle
7417 sustained writes. My hardware supplier have been very forthcoming in
7418 trying to find a solution, and after first trying with another
7419 identical 180 GB disks they decided to send me a 256 GB Samsung SSD
7420 disk instead to fix it once and for all. The Samsung disk survived
7421 the installation of Debian with encrypted disks (filling the disk with
7422 random data during installation killed the first two), and I thus
7423 decided to trust it with my data. I have installed it as a Debian Edu
7424 Wheezy roaming workstation hooked up with my Debian Edu Squeeze main
7425 server at home using Kerberos and LDAP, and will use it as my work
7426 station from now on.&lt;/p&gt;
7427
7428 &lt;p&gt;As this is a solid state disk with no moving parts, I believe the
7429 Debian Wheezy default installation need to be tuned a bit to increase
7430 performance and increase life time of the disk. The Linux kernel and
7431 user space applications do not yet adjust automatically to such
7432 environment. To make it easier for my self, I created a draft Debian
7433 package &lt;tt&gt;ssd-setup&lt;/tt&gt; to handle this tuning. The
7434 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/ssd-setup.git&quot;&gt;source
7435 for the ssd-setup package&lt;/a&gt; is available from collab-maint, and it
7436 is set up to adjust the setup of the machine by just installing the
7437 package. If there is any non-SSD disk in the machine, the package
7438 will refuse to install, as I did not try to write any logic to sort
7439 file systems in SSD and non-SSD file systems.&lt;/p&gt;
7440
7441 &lt;p&gt;I consider the package a draft, as I am a bit unsure how to best
7442 set up Debian Wheezy with an SSD. It is adjusted to my use case,
7443 where I set up the machine with one large encrypted partition (in
7444 addition to /boot), put LVM on top of this and set up partitions on
7445 top of this again. See the README file in the package source for the
7446 references I used to pick the settings. At the moment these
7447 parameters are tuned:&lt;/p&gt;
7448
7449 &lt;ul&gt;
7450
7451 &lt;li&gt;Set up cryptsetup to pass TRIM commands to the physical disk
7452 (adding discard to /etc/crypttab)&lt;/li&gt;
7453
7454 &lt;li&gt;Set up LVM to pass on TRIM commands to the underlying device (in
7455 this case a cryptsetup partition) by changing issue_discards from
7456 0 to 1 in /etc/lvm/lvm.conf.&lt;/li&gt;
7457
7458 &lt;li&gt;Set relatime as a file system option for ext3 and ext4 file
7459 systems.&lt;/li&gt;
7460
7461 &lt;li&gt;Tell swap to use TRIM commands by adding &#39;discard&#39; to
7462 /etc/fstab.&lt;/li&gt;
7463
7464 &lt;li&gt;Change I/O scheduler from cfq to deadline using a udev rule.&lt;/li&gt;
7465
7466 &lt;li&gt;Run fstrim on every ext3 and ext4 file system every night (from
7467 cron.daily).&lt;/li&gt;
7468
7469 &lt;li&gt;Adjust sysctl values vm.swappiness to 1 and vm.vfs_cache_pressure
7470 to 50 to reduce the kernel eagerness to swap out processes.&lt;/li&gt;
7471
7472 &lt;/ul&gt;
7473
7474 &lt;p&gt;During installation, I cancelled the part where the installer fill
7475 the disk with random data, as this would kill the SSD performance for
7476 little gain. My goal with the encrypted file system is to ensure
7477 those stealing my laptop end up with a brick and not a working
7478 computer. I have no hope in keeping the really resourceful people
7479 from getting the data on the disk (see
7480 &lt;a href=&quot;http://xkcd.com/538/&quot;&gt;XKCD #538&lt;/a&gt; for an explanation why).
7481 Thus I concluded that adding the discard option to crypttab is the
7482 right thing to do.&lt;/p&gt;
7483
7484 &lt;p&gt;I considered using the noop I/O scheduler, as several recommended
7485 it for SSD, but others recommended deadline and a benchmark I found
7486 indicated that deadline might be better for interactive use.&lt;/p&gt;
7487
7488 &lt;p&gt;I also considered using the &#39;discard&#39; file system option for ext3
7489 and ext4, but read that it would give a performance hit ever time a
7490 file is removed, and thought it best to that that slowdown once a day
7491 instead of during my work.&lt;/p&gt;
7492
7493 &lt;p&gt;My package do not set up tmpfs on /var/run, /var/lock and /tmp, as
7494 this is already done by Debian Edu.&lt;/p&gt;
7495
7496 &lt;p&gt;I have not yet started on the user space tuning. I expect
7497 iceweasel need some tuning, and perhaps other applications too, but
7498 have not yet had time to investigate those parts.&lt;/p&gt;
7499
7500 &lt;p&gt;The package should work on Ubuntu too, but I have not yet tested it
7501 there.&lt;/p&gt;
7502
7503 &lt;p&gt;As for the answer to the question in the title of this blog post,
7504 as far as I know, the only solution I know about is to replace the
7505 disk. It might be possible to flash it with Intel firmware instead of
7506 the Lenovo firmware. But I have not tried and did not want to do so
7507 without approval from Lenovo as I wanted to keep the warranty on the
7508 disk until a solution was found and they wanted the broken disks
7509 back.&lt;/p&gt;
7510 </description>
7511 </item>
7512
7513 <item>
7514 <title>Intel SSD 520 Series 180 GB with Lenovo firmware still lock up from sustained writes</title>
7515 <link>https://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html</link>
7516 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html</guid>
7517 <pubDate>Wed, 10 Jul 2013 13:30:00 +0200</pubDate>
7518 <description>&lt;p&gt;A few days ago, I wrote about
7519 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html&quot;&gt;the
7520 problems I experienced with my new X230 and its SSD disk&lt;/a&gt;, which
7521 was dying during installation because it is unable to cope with
7522 sustained write. My supplier is in contact with
7523 &lt;a href=&quot;http://www.lenovo.com/&quot;&gt;Lenovo&lt;/a&gt;, and they wanted to send a
7524 replacement disk to try to fix the problem. They decided to send an
7525 identical model, so my hopes for a permanent fix was slim.&lt;/p&gt;
7526
7527 &lt;p&gt;Anyway, today I got the replacement disk and tried to install
7528 Debian Edu Wheezy with encrypted disk on it. The new disk have the
7529 same firmware version as the original. This time my hope raised
7530 slightly as the installation progressed, as the original disk used to
7531 die after 4-7% of the disk was written to, while this time it kept
7532 going past 10%, 20%, 40% and even past 50%. But around 60%, the disk
7533 died again and I was back on square one. I still do not have a new
7534 laptop with a disk I can trust. I can not live with a disk that might
7535 lock up when I download a new
7536 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux&lt;/a&gt; ISO or
7537 other large files. I look forward to hearing from my supplier with
7538 the next proposal from Lenovo.&lt;/p&gt;
7539
7540 &lt;p&gt;The original disk is marked Intel SSD 520 Series 180 GB,
7541 11S0C38722Z1ZNME35X1TR, ISN: CVCV321407HB180EGN, SA: G57560302, FW:
7542 LF1i, 29MAY2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
7543 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40002756C4, Model:
7544 SSDSC2BW180A3L 2.5&quot; 6Gb/s SATA SSD 180G 5V 1A, ASM P/N 0C38732, FRU
7545 P/N 45N8295, P0C38732.&lt;/p&gt;
7546
7547 &lt;p&gt;The replacement disk is marked Intel SSD 520 Series 180 GB,
7548 11S0C38722Z1ZNDE34N0L0, ISN: CVCV315306RK180EGN, SA: G57560-302, FW:
7549 LF1i, 22APR2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
7550 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40000AB69E, Model:
7551 SSDSC2BW180A3L 2.5&quot; 6Gb/s SATA SSD 180G 5V 1A, ASM P/N 0C38732, FRU
7552 P/N 45N8295, P0C38732.&lt;/p&gt;
7553
7554 &lt;p&gt;The only difference is in the first number (serial number?), ISN,
7555 SA, date and WNPP values. Mentioning all the details here in case
7556 someone is able to use the information to find a way to identify the
7557 failing disk among working ones (if any such working disk actually
7558 exist).&lt;/p&gt;
7559 </description>
7560 </item>
7561
7562 <item>
7563 <title>July 13th: Debian/Ubuntu BSP and Skolelinux/Debian Edu developer gathering in Oslo</title>
7564 <link>https://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html</link>
7565 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html</guid>
7566 <pubDate>Tue, 9 Jul 2013 10:40:00 +0200</pubDate>
7567 <description>&lt;p&gt;The upcoming Saturday, 2013-07-13, we are organising a combined
7568 Debian Edu developer gathering and Debian and Ubuntu bug squashing
7569 party in Oslo. It is organised by &lt;a href=&quot;http://www.nuug.no/&quot;&gt;the
7570 member assosiation NUUG&lt;/a&gt; and
7571 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;the Debian Edu / Skolelinux
7572 project&lt;/a&gt; together with &lt;a href=&quot;http://bitraf.no/&quot;&gt;the hack space
7573 Bitraf&lt;/a&gt;.&lt;/p&gt;
7574
7575 &lt;p&gt;It starts 10:00 and continue until late evening. Everyone is
7576 welcome, and there is no fee to participate. There is on the other
7577 hand limited space, and only room for 30 people. Please put your name
7578 on &lt;a href=&quot;http://wiki.debian.org/BSP/2013/07/13/no/Oslo&quot;&gt;the event
7579 wiki page&lt;/a&gt; if you plan to join us.&lt;/p&gt;
7580 </description>
7581 </item>
7582
7583 <item>
7584 <title>The Thinkpad is dead, long live the Thinkpad X230?</title>
7585 <link>https://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html</link>
7586 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html</guid>
7587 <pubDate>Fri, 5 Jul 2013 08:30:00 +0200</pubDate>
7588 <description>&lt;p&gt;Half a year ago, I reported that I had to find a
7589 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html&quot;&gt;replacement
7590 for my trusty old Thinkpad X41&lt;/a&gt;. Unfortunately I did not have much
7591 time to spend on it, and it took a while to find a model I believe
7592 will do the job, but two days ago the replacement finally arrived. I
7593 ended up picking a
7594 &lt;a href=&quot;http://www.linlap.com/lenovo_thinkpad_x230&quot;&gt;Thinkpad X230&lt;/a&gt;
7595 with SSD disk (NZDAJMN). I first test installed Debian Edu Wheezy as
7596 a roaming workstation, and it seemed to work flawlessly. But my
7597 second installation with encrypted disk was not as successful. More
7598 on that below.&lt;/p&gt;
7599
7600 &lt;p&gt;I had a hard time trying to track down a good laptop, as my most
7601 important requirements (robust and with a good keyboard) are never
7602 listed in the feature list. But I did get good help from the search
7603 feature at &lt;a href=&quot;http://www.prisjakt.no/&quot;&gt;Prisjakt&lt;/a&gt;, which
7604 allowed me to limit the list of interesting laptops based on my other
7605 requirements. A bit surprising that SSD disk are not disks according
7606 to that search interface, so I had to drop specifying the number of
7607 disks from my search parameters. I also asked around among friends to
7608 get their impression on keyboards and robustness.&lt;/p&gt;
7609
7610 &lt;p&gt;So the new laptop arrived, and it is quite a lot wider than the
7611 X41. I am not quite convinced about the keyboard, as it is
7612 significantly wider than my old keyboard, and I have to stretch my
7613 hand a lot more to reach the edges. But the key response is fairly
7614 good and the individual key shape is fairly easy to handle, so I hope
7615 I will get used to it. My old X40 was starting to fail, and I really
7616 needed a new laptop now. :)&lt;/p&gt;
7617
7618 &lt;p&gt;Turning off the touch pad was simple. All it took was a quick
7619 visit to the BIOS during boot it disable it.&lt;/p&gt;
7620
7621 &lt;p&gt;But there is a fatal problem with the laptop. The 180 GB SSD disk
7622 lock up during load. And this happen when installing Debian Wheezy
7623 with encrypted disk, while the disk is being filled with random data.
7624 I also tested to install Ubuntu Raring, and it happen there too if I
7625 reenable the code to fill the disk with random data (it is disabled by
7626 default in Ubuntu). And the bug with is already known. It was
7627 reported to Debian as &lt;a href=&quot;http://bugs.debian.org/691427&quot;&gt;BTS
7628 report #691427 2012-10-25&lt;/a&gt; (journal commit I/O error on brand-new
7629 Thinkpad T430s ext4 on lvm on SSD). It is also reported to the Linux
7630 kernel developers as
7631 &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=51861&quot;&gt;Kernel bugzilla
7632 report #51861 2012-12-20&lt;/a&gt; (Intel SSD 520 stops working under load
7633 (SSDSC2BW180A3L in Lenovo ThinkPad T430s)). It is also reported on the
7634 Lenovo forums, both for
7635 &lt;a href=&quot;http://forums.lenovo.com/t5/T400-T500-and-newer-T-series/T430s-Intel-SSD-520-180GB-issue/m-p/1070549&quot;&gt;T430
7636 2012-11-10&lt;/a&gt; and for
7637 &lt;a href=&quot;http://forums.lenovo.com/t5/X-Series-ThinkPad-Laptops/x230-SATA-errors-with-180GB-Intel-520-SSD-under-heavy-write-load/m-p/1068147&quot;&gt;X230
7638 03-20-2013&lt;/a&gt;. The problem do not only affect installation. The
7639 reports state that the disk lock up during use if many writes are done
7640 on the disk, so it is much no use to work around the installation
7641 problem and end up with a computer that can lock up at any moment.
7642 There is even a
7643 &lt;a href=&quot;https://git.efficios.com/?p=test-ssd.git&quot;&gt;small C program
7644 available&lt;/a&gt; that will lock up the hard drive after running a few
7645 minutes by writing to a file.&lt;/p&gt;
7646
7647 &lt;p&gt;I&#39;ve contacted my supplier and asked how to handle this, and after
7648 contacting PCHELP Norway (request 01D1FDP) which handle support
7649 requests for Lenovo, his first suggestion was to upgrade the disk
7650 firmware. Unfortunately there is no newer firmware available from
7651 Lenovo, as my disk already have the most recent one (version LF1i). I
7652 hope to hear more from him today and hope the problem can be
7653 fixed. :)&lt;/p&gt;
7654 </description>
7655 </item>
7656
7657 <item>
7658 <title>The Thinkpad is dead, long live the Thinkpad X230</title>
7659 <link>https://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html</link>
7660 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html</guid>
7661 <pubDate>Thu, 4 Jul 2013 09:20:00 +0200</pubDate>
7662 <description>&lt;p&gt;Half a year ago, I reported that I had to find a replacement for my
7663 trusty old Thinkpad X41. Unfortunately I did not have much time to
7664 spend on it, but today the replacement finally arrived. I ended up
7665 picking a &lt;a href=&quot;http://www.linlap.com/lenovo_thinkpad_x230&quot;&gt;Thinkpad
7666 X230&lt;/a&gt; with SSD disk (NZDAJMN). I first test installed Debian Edu
7667 Wheezy as a roaming workstation, and it worked flawlessly. As I write
7668 this, it is installing what I hope will be a more final installation,
7669 with a encrypted hard drive to ensure any dope head stealing it end up
7670 with an expencive door stop.&lt;/p&gt;
7671
7672 &lt;p&gt;I had a hard time trying to track down a good laptop, as my most
7673 important requirements (robust and with a good keyboard) are never
7674 listed in the feature list. But I did get good help from the search
7675 feature at &lt;ahref=&quot;http://www.prisjakt.no/&quot;&gt;Prisjakt&lt;/a&gt;, which
7676 allowed me to limit the list of interesting laptops based on my other
7677 requirements. A bit surprising that SSD disk are not disks, so I had
7678 to drop number of disks from my search parameters.&lt;/p&gt;
7679
7680 &lt;p&gt;I am not quite convinced about the keyboard, as it is significantly
7681 wider than my old keyboard, and I have to stretch my hand a lot more
7682 to reach the edges. But the key response is fairly good and the
7683 individual key shape is fairly easy to handle, so I hope I will get
7684 used to it. My old X40 was starting to fail, and I really needed a
7685 new laptop now. :)&lt;/p&gt;
7686
7687 &lt;p&gt;I look forward to figuring out how to turn off the touch pad.&lt;/p&gt;
7688 </description>
7689 </item>
7690
7691 <item>
7692 <title>Automatically locate and install required firmware packages on Debian (Isenkram 0.4)</title>
7693 <link>https://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html</link>
7694 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html</guid>
7695 <pubDate>Tue, 25 Jun 2013 11:50:00 +0200</pubDate>
7696 <description>&lt;p&gt;It annoys me when the computer fail to do automatically what it is
7697 perfectly capable of, and I have to do it manually to get things
7698 working. One such task is to find out what firmware packages are
7699 needed to get the hardware on my computer working. Most often this
7700 affect the wifi card, but some times it even affect the RAID
7701 controller or the ethernet card. Today I pushed version 0.4 of the
7702 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;Isenkram package&lt;/a&gt;
7703 including a new script isenkram-autoinstall-firmware handling the
7704 process of asking all the loaded kernel modules what firmware files
7705 they want, find debian packages providing these files and install the
7706 debian packages. Here is a test run on my laptop:&lt;/p&gt;
7707
7708 &lt;p&gt;&lt;pre&gt;
7709 # isenkram-autoinstall-firmware
7710 info: kernel drivers requested extra firmware: ipw2200-bss.fw ipw2200-ibss.fw ipw2200-sniffer.fw
7711 info: fetching http://http.debian.net/debian/dists/squeeze/Contents-i386.gz
7712 info: locating packages with the requested firmware files
7713 info: Updating APT sources after adding non-free APT source
7714 info: trying to install firmware-ipw2x00
7715 firmware-ipw2x00
7716 firmware-ipw2x00
7717 Preconfiguring packages ...
7718 Selecting previously deselected package firmware-ipw2x00.
7719 (Reading database ... 259727 files and directories currently installed.)
7720 Unpacking firmware-ipw2x00 (from .../firmware-ipw2x00_0.28+squeeze1_all.deb) ...
7721 Setting up firmware-ipw2x00 (0.28+squeeze1) ...
7722 #
7723 &lt;/pre&gt;&lt;/p&gt;
7724
7725 &lt;p&gt;When all the requested firmware is present, a simple message is
7726 printed instead:&lt;/p&gt;
7727
7728 &lt;p&gt;&lt;pre&gt;
7729 # isenkram-autoinstall-firmware
7730 info: did not find any firmware files requested by loaded kernel modules. exiting
7731 #
7732 &lt;/pre&gt;&lt;/p&gt;
7733
7734 &lt;p&gt;It could use some polish, but it is already working well and saving
7735 me some time when setting up new machines. :)&lt;/p&gt;
7736
7737 &lt;p&gt;So, how does it work? It look at the set of currently loaded
7738 kernel modules, and look up each one of them using modinfo, to find
7739 the firmware files listed in the module meta-information. Next, it
7740 download the Contents file from a nearby APT mirror, and search for
7741 the firmware files in this file to locate the package with the
7742 requested firmware file. If the package is in the non-free section, a
7743 non-free APT source is added and the package is installed using
7744 &lt;tt&gt;apt-get install&lt;/tt&gt;. The end result is a slightly better working
7745 machine.&lt;/p&gt;
7746
7747 &lt;p&gt;I hope someone find time to implement a more polished version of
7748 this script as part of the hw-detect debian-installer module, to
7749 finally fix &lt;a href=&quot;http://bugs.debian.org/655507&quot;&gt;BTS report
7750 #655507&lt;/a&gt;. There really is no need to insert USB sticks with
7751 firmware during a PXE install when the packages already are available
7752 from the nearby Debian mirror.&lt;/p&gt;
7753 </description>
7754 </item>
7755
7756 <item>
7757 <title>Fixing the Linux black screen of death on machines with Intel HD video</title>
7758 <link>https://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html</link>
7759 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html</guid>
7760 <pubDate>Tue, 11 Jun 2013 11:00:00 +0200</pubDate>
7761 <description>&lt;p&gt;When installing RedHat, Fedora, Debian and Ubuntu on some machines,
7762 the screen just turn black when Linux boot, either during installation
7763 or on first boot from the hard disk. I&#39;ve seen it once in a while the
7764 last few years, but only recently understood the cause. I&#39;ve seen it
7765 on HP laptops, and on my latest acquaintance the Packard Bell laptop.
7766 The reason seem to be in the wiring of some laptops. The system to
7767 control the screen background light is inverted, so when Linux try to
7768 turn the brightness fully on, it end up turning it off instead. I do
7769 not know which Linux drivers are affected, but this post is about the
7770 i915 driver used by the
7771 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Packard Bell
7772 EasyNote LV&lt;/a&gt;, Thinkpad X40 and many other laptops.&lt;/p&gt;
7773
7774 &lt;p&gt;The problem can be worked around two ways. Either by adding
7775 i915.invert_brightness=1 as a kernel option, or by adding a file in
7776 /etc/modprobe.d/ to tell modprobe to add the invert_brightness=1
7777 option when it load the i915 kernel module. On Debian and Ubuntu, it
7778 can be done by running these commands as root:&lt;/p&gt;
7779
7780 &lt;pre&gt;
7781 echo options i915 invert_brightness=1 | tee /etc/modprobe.d/i915.conf
7782 update-initramfs -u -k all
7783 &lt;/pre&gt;
7784
7785 &lt;p&gt;Since March 2012 there is
7786 &lt;a href=&quot;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955&quot;&gt;a
7787 mechanism in the Linux kernel&lt;/a&gt; to tell the i915 driver which
7788 hardware have this problem, and get the driver to invert the
7789 brightness setting automatically. To use it, one need to add a row in
7790 &lt;a href=&quot;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/intel_display.c&quot;&gt;the
7791 intel_quirks array&lt;/a&gt; in the driver source
7792 &lt;tt&gt;drivers/gpu/drm/i915/intel_display.c&lt;/tt&gt; (look for &quot;&lt;tt&gt;static
7793 struct intel_quirk intel_quirks&lt;/tt&gt;&quot;), specifying the PCI device
7794 number (vendor number 8086 is assumed) and subdevice vendor and device
7795 number.&lt;/p&gt;
7796
7797 &lt;p&gt;My Packard Bell EasyNote LV got this output from &lt;tt&gt;lspci
7798 -vvnn&lt;/tt&gt; for the video card in question:&lt;/p&gt;
7799
7800 &lt;p&gt;&lt;pre&gt;
7801 00:02.0 VGA compatible controller [0300]: Intel Corporation \
7802 3rd Gen Core processor Graphics Controller [8086:0156] \
7803 (rev 09) (prog-if 00 [VGA controller])
7804 Subsystem: Acer Incorporated [ALI] Device [1025:0688]
7805 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- \
7806 ParErr- Stepping- SE RR- FastB2B- DisINTx+
7807 Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast &gt;TAbort- \
7808 &lt;TAbort- &lt;MAbort-&gt;SERR- &lt;PERR- INTx-
7809 Latency: 0
7810 Interrupt: pin A routed to IRQ 42
7811 Region 0: Memory at c2000000 (64-bit, non-prefetchable) [size=4M]
7812 Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
7813 Region 4: I/O ports at 4000 [size=64]
7814 Expansion ROM at &lt;unassigned&gt; [disabled]
7815 Capabilities: &lt;access denied&gt;
7816 Kernel driver in use: i915
7817 &lt;/pre&gt;&lt;/p&gt;
7818
7819 &lt;p&gt;The resulting intel_quirks entry would then look like this:&lt;/p&gt;
7820
7821 &lt;p&gt;&lt;pre&gt;
7822 struct intel_quirk intel_quirks[] = {
7823 ...
7824 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
7825 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
7826 ...
7827 }
7828 &lt;/pre&gt;&lt;/p&gt;
7829
7830 &lt;p&gt;According to the kernel module instructions (as seen using
7831 &lt;tt&gt;modinfo i915&lt;/tt&gt;), information about hardware needing the
7832 invert_brightness flag should be sent to the
7833 &lt;a href=&quot;http://lists.freedesktop.org/mailman/listinfo/dri-devel&quot;&gt;dri-devel
7834 (at) lists.freedesktop.org&lt;/a&gt; mailing list to reach the kernel
7835 developers. But my email about the laptop sent 2013-06-03 have not
7836 yet shown up in
7837 &lt;a href=&quot;http://lists.freedesktop.org/archives/dri-devel/2013-June/thread.html&quot;&gt;the
7838 web archive for the mailing list&lt;/a&gt;, so I suspect they do not accept
7839 emails from non-subscribers. Because of this, I sent my patch also to
7840 the Debian bug tracking system instead as
7841 &lt;a href=&quot;http://bugs.debian.org/710938&quot;&gt;BTS report #710938&lt;/a&gt;, to make
7842 sure the patch is not lost.&lt;/p&gt;
7843
7844 &lt;p&gt;Unfortunately, it is not enough to fix the kernel to get Laptops
7845 with this problem working properly with Linux. If you use Gnome, your
7846 worries should be over at this point. But if you use KDE, there is
7847 something in KDE ignoring the invert_brightness setting and turning on
7848 the screen during login. I&#39;ve reported it to Debian as
7849 &lt;a href=&quot;http://bugs.debian.org/711237&quot;&gt;BTS report #711237&lt;/a&gt;, and
7850 have no idea yet how to figure out exactly what subsystem is doing
7851 this. Perhaps you can help? Perhaps you know what the Gnome
7852 developers did to handle this, and this can give a clue to the KDE
7853 developers? Or you know where in KDE the screen brightness is changed
7854 during login? If so, please update the BTS report (or get in touch if
7855 you do not know how to update BTS).&lt;/p&gt;
7856
7857 &lt;p&gt;Update 2013-07-19: The correct fix for this machine seem to be
7858 acpi_backlight=vendor, to disable ACPI backlight support completely,
7859 as the ACPI information on the machine is trash and it is better to
7860 leave it to the intel video driver to control the screen
7861 backlight.&lt;/p&gt;
7862 </description>
7863 </item>
7864
7865 <item>
7866 <title>How to install Linux on a Packard Bell Easynote LV preinstalled with Windows 8</title>
7867 <link>https://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html</link>
7868 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html</guid>
7869 <pubDate>Mon, 27 May 2013 15:20:00 +0200</pubDate>
7870 <description>&lt;p&gt;Two days ago, I asked
7871 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html&quot;&gt;how
7872 I could install Linux on a Packard Bell EasyNote LV computer
7873 preinstalled with Windows 8&lt;/a&gt;. I found a solution, but am horrified
7874 with the obstacles put in the way of Linux users on a laptop with UEFI
7875 and Windows 8.&lt;/p&gt;
7876
7877 &lt;p&gt;I never found out if the cause of my problems were the use of UEFI
7878 secure booting or fast boot. I suspect fast boot was the problem,
7879 causing the firmware to boot directly from HD without considering any
7880 key presses and alternative devices, but do not know UEFI settings
7881 enough to tell.&lt;/p&gt;
7882
7883 &lt;p&gt;There is no way to install Linux on the machine in question without
7884 opening the box and disconnecting the hard drive! This is as far as I
7885 can tell, the only way to get access to the firmware setup menu
7886 without accepting the Windows 8 license agreement. I am told (and
7887 found description on how to) that it is possible to configure the
7888 firmware setup once booted into Windows 8. But as I believe the terms
7889 of that agreement are completely unacceptable, accepting the license
7890 was never an alternative. I do not enter agreements I do not intend
7891 to follow.&lt;/p&gt;
7892
7893 &lt;p&gt;I feared I had to return the laptops and ask for a refund, and
7894 waste many hours on this, but luckily there was a way to get it to
7895 work. But I would not recommend it to anyone planning to run Linux on
7896 it, and I have become sceptical to Windows 8 certified laptops. Is
7897 this the way Linux will be forced out of the market place, by making
7898 it close to impossible for &quot;normal&quot; users to install Linux without
7899 accepting the Microsoft Windows license terms? Or at least not
7900 without risking to loose the warranty?&lt;/p&gt;
7901
7902 &lt;p&gt;I&#39;ve updated the
7903 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Linux Laptop
7904 wiki page for Packard Bell EasyNote LV&lt;/a&gt;, to ensure the next person
7905 do not have to struggle as much as I did to get Linux into the
7906 machine.&lt;/p&gt;
7907
7908 &lt;p&gt;Thanks to Bob Rosbag, Florian Weimer, Philipp Kern, Ben Hutching,
7909 Michael Tokarev and others for feedback and ideas.&lt;/p&gt;
7910 </description>
7911 </item>
7912
7913 <item>
7914 <title>How can I install Linux on a Packard Bell Easynote LV preinstalled with Windows 8?</title>
7915 <link>https://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html</link>
7916 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html</guid>
7917 <pubDate>Sat, 25 May 2013 18:20:00 +0200</pubDate>
7918 <description>&lt;p&gt;I&#39;ve run into quite a problem the last few days. I bought three
7919 new laptops for my parents and a few others. I bought Packard Bell
7920 Easynote LV to run Kubuntu on and use as their home computer. But I
7921 am completely unable to figure out how to install Linux on it. The
7922 computer is preinstalled with Windows 8, and I suspect it uses UEFI
7923 instead of a BIOS to boot.&lt;/p&gt;
7924
7925 &lt;p&gt;The problem is that I am unable to get it to PXE boot, and unable
7926 to get it to boot the Linux installer from my USB stick. I have yet
7927 to try the DVD install, and still hope it will work. when I turn on
7928 the computer, there is no information on what buttons to press to get
7929 the normal boot menu. I expect to get some boot menu to select PXE or
7930 USB stick booting. When booting, it first ask for the language to
7931 use, then for some regional settings, and finally if I will accept the
7932 Windows 8 terms of use. As these terms are completely unacceptable to
7933 me, I have no other choice but to turn off the computer and try again
7934 to get it to boot the Linux installer.&lt;/p&gt;
7935
7936 &lt;p&gt;I have gathered my findings so far on a Linlap page about the
7937 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Packard Bell
7938 EasyNote LV&lt;/a&gt; model. If you have any idea how to get Linux
7939 installed on this machine, please get in touch or update that wiki
7940 page. If I can&#39;t find a way to install Linux, I will have to return
7941 the laptop to the seller and find another machine for my parents.&lt;/p&gt;
7942
7943 &lt;p&gt;I wonder, is this the way Linux will be forced out of the market
7944 using UEFI and &quot;secure boot&quot; by making it impossible to install Linux
7945 on new Laptops?&lt;/p&gt;
7946 </description>
7947 </item>
7948
7949 <item>
7950 <title>How to transform a Debian based system to a Debian Edu installation</title>
7951 <link>https://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html</link>
7952 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html</guid>
7953 <pubDate>Fri, 17 May 2013 11:50:00 +0200</pubDate>
7954 <description>&lt;p&gt;&lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux&lt;/a&gt; is
7955 an operating system based on Debian intended for use in schools. It
7956 contain a turn-key solution for the computer network provided to
7957 pupils in the primary schools. It provide both the central server,
7958 network boot servers and desktop environments with heaps of
7959 educational software. The project was founded almost 12 years ago,
7960 2001-07-02. If you want to support the project, which is in need for
7961 cash to fund developer gatherings and other project related activity,
7962 &lt;a href=&quot;http://www.linuxiskolen.no/slxdebianlabs/donations.html&quot;&gt;please
7963 donate some money&lt;/a&gt;.
7964
7965 &lt;p&gt;A topic that come up again and again on the Debian Edu mailing
7966 lists and elsewhere, is the question on how to transform a Debian or
7967 Ubuntu installation into a Debian Edu installation. It isn&#39;t very
7968 hard, and last week I wrote a script to replicate the steps done by
7969 the Debian Edu installer.&lt;/p&gt;
7970
7971 &lt;p&gt;The script,
7972 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/branches/wheezy/debian-edu-config/share/debian-edu-config/tools/debian-edu-bless?view=markup&quot;&gt;debian-edu-bless&lt;a/&gt;
7973 in the debian-edu-config package, will go through these six steps and
7974 transform an existing Debian Wheezy or Ubuntu (untested) installation
7975 into a Debian Edu Workstation:&lt;/p&gt;
7976
7977 &lt;ol&gt;
7978
7979 &lt;li&gt;Add skolelinux related APT sources.&lt;/li&gt;
7980 &lt;li&gt;Create /etc/debian-edu/config with the wanted configuration.&lt;/li&gt;
7981 &lt;li&gt;Install debian-edu-install to load preseeding values and pull in
7982 our configuration.&lt;/li&gt;
7983 &lt;li&gt;Preseed debconf database with profile setup in
7984 /etc/debian-edu/config, and run tasksel to install packages
7985 according to the profile specified in the config above,
7986 overriding some of the Debian automation machinery.&lt;/li&gt;
7987 &lt;li&gt;Run debian-edu-cfengine-D installation to configure everything
7988 that could not be done using preseeding.&lt;/li&gt;
7989 &lt;li&gt;Ask for a reboot to enable all the configuration changes.&lt;/li&gt;
7990
7991 &lt;/ol&gt;
7992
7993 &lt;p&gt;There are some steps in the Debian Edu installation that can not be
7994 replicated like this. Disk partitioning and LVM setup, for example.
7995 So this script just assume there is enough disk space to install all
7996 the needed packages.&lt;/p&gt;
7997
7998 &lt;p&gt;The script was created to help a Debian Edu student working on
7999 setting up &lt;a href=&quot;http://www.raspberrypi.org&quot;&gt;Raspberry Pi&lt;/a&gt; as a
8000 Debian Edu client, and using it he can take the existing
8001 &lt;a href=&quot;http://www.raspbian.org/FrontPage‎&quot;&gt;Raspbian&lt;/a&gt; installation and
8002 transform it into a fully functioning Debian Edu Workstation (or
8003 Roaming Workstation, or whatever :).&lt;/p&gt;
8004
8005 &lt;p&gt;The default setting in the script is to create a KDE Workstation.
8006 If a LXDE based Roaming workstation is wanted instead, modify the
8007 PROFILE and DESKTOP values at the top to look like this instead:&lt;/p&gt;
8008
8009 &lt;p&gt;&lt;pre&gt;
8010 PROFILE=&quot;Roaming-Workstation&quot;
8011 DESKTOP=&quot;lxde&quot;
8012 &lt;/pre&gt;&lt;/p&gt;
8013
8014 &lt;p&gt;The script could even become useful to set up Debian Edu servers in
8015 the cloud, by starting with a virtual Debian installation at some
8016 virtual hosting service and setting up all the services on first
8017 boot.&lt;/p&gt;
8018 </description>
8019 </item>
8020
8021 <item>
8022 <title>Debian, the Linux distribution of choice for LEGO designers?</title>
8023 <link>https://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html</link>
8024 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html</guid>
8025 <pubDate>Sat, 11 May 2013 20:30:00 +0200</pubDate>
8026 <description>&lt;P&gt;In January,
8027 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html&quot;&gt;I
8028 announced a&lt;/a&gt; new &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;IRC
8029 channel #debian-lego&lt;/a&gt;, for those of us in the Debian and Linux
8030 community interested in &lt;a href=&quot;http://www.lego.com/&quot;&gt;LEGO&lt;/a&gt;, the
8031 marvellous construction system from Denmark. We also created
8032 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;a wiki page&lt;/a&gt; to have
8033 a place to take notes and write down our plans and hopes. And several
8034 people showed up to help. I was very happy to see the effect of my
8035 call. Since the small start, we have a debtags tag
8036 &lt;a href=&quot;http://debtags.debian.net/search/bytag?wl=hardware::hobby:lego&quot;&gt;hardware::hobby:lego&lt;/a&gt;
8037 tag for LEGO related packages, and now count 10 packages related to
8038 LEGO and &lt;a href=&quot;http://mindstorms.lego.com/&quot;&gt;Mindstorms&lt;/a&gt;:&lt;/p&gt;
8039
8040 &lt;p&gt;&lt;table&gt;
8041 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/brickos&quot;&gt;brickos&lt;/a&gt;&lt;/td&gt;&lt;td&gt;alternative OS for LEGO Mindstorms RCX. Supports development in C/C++&lt;/td&gt;&lt;/tr&gt;
8042 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/leocad&quot;&gt;leocad&lt;/a&gt;&lt;/td&gt;&lt;td&gt;virtual brick CAD software&lt;/td&gt;&lt;/tr&gt;
8043 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/libnxt&quot;&gt;libnxt&lt;/a&gt;&lt;/td&gt;&lt;td&gt;utility library for talking to the LEGO Mindstorms NX&lt;/td&gt;&lt;/tr&gt;
8044 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/lnpd&quot;&gt;lnpd&lt;/a&gt;&lt;/td&gt;&lt;td&gt;daemon for LNP communication with BrickOS&lt;/td&gt;&lt;/tr&gt;
8045 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/nbc&quot;&gt;nbc&lt;/a&gt;&lt;/td&gt;&lt;td&gt;compiler for LEGO Mindstorms NXT bricks&lt;/td&gt;&lt;/tr&gt;
8046 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/nqc&quot;&gt;nqc&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Not Quite C compiler for LEGO Mindstorms RCX&lt;/td&gt;&lt;/tr&gt;
8047 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/python-nxt&quot;&gt;python-nxt&lt;/a&gt;&lt;/td&gt;&lt;td&gt;python driver/interface/wrapper for the Lego Mindstorms NXT robot&lt;/td&gt;&lt;/tr&gt;
8048 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/python-nxt-filer&quot;&gt;python-nxt-filer&lt;/a&gt;&lt;/td&gt;&lt;td&gt;simple GUI to manage files on a LEGO Mindstorms NXT&lt;/td&gt;&lt;/tr&gt;
8049 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/scratch&quot;&gt;scratch&lt;/a&gt;&lt;/td&gt;&lt;td&gt;easy to use programming environment for ages 8 and up&lt;/td&gt;&lt;/tr&gt;
8050 &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://packages.qa.debian.org/t2n&quot;&gt;t2n&lt;/a&gt;&lt;/td&gt;&lt;td&gt;simple command-line tool for Lego NXT&lt;/td&gt;&lt;/tr&gt;
8051 &lt;/table&gt;&lt;/p&gt;
8052
8053 &lt;p&gt;Some of these are available in Wheezy, and all but one are
8054 currently available in Jessie/testing. leocad is so far only
8055 available in experimental.&lt;/p&gt;
8056
8057 &lt;p&gt;If you care about LEGO in Debian, please join us on IRC and help
8058 adding the rest of the great free software tools available on Linux
8059 for LEGO designers.&lt;/p&gt;
8060 </description>
8061 </item>
8062
8063 <item>
8064 <title>Debian Wheezy is out - and Debian Edu / Skolelinux should soon follow! #newinwheezy</title>
8065 <link>https://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html</link>
8066 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html</guid>
8067 <pubDate>Sun, 5 May 2013 07:40:00 +0200</pubDate>
8068 <description>&lt;p&gt;When I woke up this morning, I was very happy to see that the
8069 &lt;a href=&quot;http://www.debian.org/News/2013/20130504&quot;&gt;release announcement
8070 for Debian Wheezy&lt;/a&gt; was waiting in my mail box. This is a great
8071 Debian release, and I expect to move my machines at home over to it fairly
8072 soon.&lt;/p&gt;
8073
8074 &lt;p&gt;The new debian release contain heaps of new stuff, and one program
8075 in particular make me very happy to see included. The
8076 &lt;a href=&quot;http://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt; program, made famous by
8077 the &lt;a href=&quot;http://www.code.org/&quot;&gt;Teach kids code&lt;/a&gt; movement, is
8078 included for the first time. Alongside similar programs like
8079 &lt;a href=&quot;http://edu.kde.org/kturtle/&quot;&gt;kturtle&lt;/a&gt; and
8080 &lt;a href=&quot;http://wiki.sugarlabs.org/go/Activities/Turtle_Art&quot;&gt;turtleart&lt;/a&gt;,
8081 it allow for visual programming where syntax errors can not happen,
8082 and a friendly programming environment for learning to control the
8083 computer. Scratch will also be included in the next release of Debian
8084 Edu.&lt;/a&gt;
8085
8086 &lt;p&gt;And now that Wheezy is wrapped up, we can wrap up the next Debian
8087 Edu/Skolelinux release too. The
8088 &lt;a href=&quot;http://lists.debian.org/debian-edu/2013/04/msg00132.html&quot;&gt;first
8089 alpha release&lt;/a&gt; went out last week, and the next should soon
8090 follow.&lt;p&gt;
8091 </description>
8092 </item>
8093
8094 <item>
8095 <title>Isenkram 0.2 finally in the Debian archive</title>
8096 <link>https://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html</link>
8097 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html</guid>
8098 <pubDate>Wed, 3 Apr 2013 23:40:00 +0200</pubDate>
8099 <description>&lt;p&gt;Today the &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;Isenkram
8100 package&lt;/a&gt; finally made it into the archive, after lingering in NEW
8101 for many months. I uploaded it to the Debian experimental suite
8102 2013-01-27, and today it was accepted into the archive.&lt;/p&gt;
8103
8104 &lt;p&gt;Isenkram is a system for suggesting to users what packages to
8105 install to work with a pluggable hardware device. The suggestion pop
8106 up when the device is plugged in. For example if a Lego Mindstorm NXT
8107 is inserted, it will suggest to install the program needed to program
8108 the NXT controller. Give it a go, and report bugs and suggestions to
8109 BTS. :)&lt;/p&gt;
8110 </description>
8111 </item>
8112
8113 <item>
8114 <title>Bitcoin GUI now available from Debian/unstable (and Ubuntu/raring)</title>
8115 <link>https://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html</link>
8116 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html</guid>
8117 <pubDate>Sat, 2 Feb 2013 09:00:00 +0100</pubDate>
8118 <description>&lt;p&gt;My
8119 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html&quot;&gt;last
8120 bitcoin related blog post&lt;/a&gt; mentioned that the new
8121 &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;bitcoin package&lt;/a&gt; for
8122 Debian was waiting in NEW. It was accepted by the Debian ftp-masters
8123 2013-01-19, and have been available in unstable since then. It was
8124 automatically copied to Ubuntu, and is available in their Raring
8125 version too.&lt;/p&gt;
8126
8127 &lt;p&gt;But there is a strange problem with the build that block this new
8128 version from being available on the i386 and kfreebsd-i386
8129 architectures. For some strange reason, the autobuilders in Debian
8130 for these architectures fail to run the test suite on these
8131 architectures (&lt;a href=&quot;http://bugs.debian.org/672524&quot;&gt;BTS #672524&lt;/a&gt;).
8132 We are so far unable to reproduce it when building it manually, and
8133 no-one have been able to propose a fix. If you got an idea what is
8134 failing, please let us know via the BTS.&lt;/p&gt;
8135
8136 &lt;p&gt;One feature that is annoying me with of the bitcoin client, because
8137 I often run low on disk space, is the fact that the client will exit
8138 if it run short on space (&lt;a href=&quot;http://bugs.debian.org/696715&quot;&gt;BTS
8139 #696715&lt;/a&gt;). So make sure you have enough disk space when you run
8140 it. :)&lt;/p&gt;
8141
8142 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
8143 activities, please send Bitcoin donations to my address
8144 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
8145 </description>
8146 </item>
8147
8148 <item>
8149 <title>Welcome to the world, Isenkram!</title>
8150 <link>https://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html</link>
8151 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html</guid>
8152 <pubDate>Tue, 22 Jan 2013 22:00:00 +0100</pubDate>
8153 <description>&lt;p&gt;Yesterday, I
8154 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html&quot;&gt;asked
8155 for testers&lt;/a&gt; for my prototype for making Debian better at handling
8156 pluggable hardware devices, which I
8157 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;set
8158 out to create&lt;/a&gt; earlier this month. Several valuable testers showed
8159 up, and caused me to really want to to open up the development to more
8160 people. But before I did this, I want to come up with a sensible name
8161 for this project. Today I finally decided on a new name, and I have
8162 renamed the project from hw-support-handler to this new name. In the
8163 process, I moved the source to git and made it available as a
8164 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git&quot;&gt;collab-maint&lt;/a&gt;
8165 repository in Debian. The new name? It is &lt;strong&gt;Isenkram&lt;/strong&gt;.
8166 To fetch and build the latest version of the source, use&lt;/p&gt;
8167
8168 &lt;pre&gt;
8169 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
8170 cd isenkram &amp;&amp; git-buildpackage -us -uc
8171 &lt;/pre&gt;
8172
8173 &lt;p&gt;I have not yet adjusted all files to use the new name yet. If you
8174 want to hack on the source or improve the package, please go ahead.
8175 But please talk to me first on IRC or via email before you do major
8176 changes, to make sure we do not step on each others toes. :)&lt;/p&gt;
8177
8178 &lt;p&gt;If you wonder what &#39;isenkram&#39; is, it is a Norwegian word for iron
8179 stuff, typically meaning tools, nails, screws, etc. Typical hardware
8180 stuff, in other words. I&#39;ve been told it is the Norwegian variant of
8181 the German word eisenkram, for those that are familiar with that
8182 word.&lt;/p&gt;
8183
8184 &lt;p&gt;&lt;strong&gt;Update 2013-01-26&lt;/strong&gt;: Added -us -us to build
8185 instructions, to avoid confusing people with an error from the signing
8186 process.&lt;/p&gt;
8187
8188 &lt;p&gt;&lt;strong&gt;Update 2013-01-27&lt;/strong&gt;: Switch to HTTP URL for the git
8189 clone argument to avoid the need for authentication.&lt;/p&gt;
8190 </description>
8191 </item>
8192
8193 <item>
8194 <title>First prototype ready making hardware easier to use in Debian</title>
8195 <link>https://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html</link>
8196 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html</guid>
8197 <pubDate>Mon, 21 Jan 2013 12:00:00 +0100</pubDate>
8198 <description>&lt;p&gt;Early this month I set out to try to
8199 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;improve
8200 the Debian support for pluggable hardware devices&lt;/a&gt;. Now my
8201 prototype is working, and it is ready for a larger audience. To test
8202 it, fetch the
8203 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;source
8204 from the Debian Edu subversion repository&lt;/a&gt;, build and install the
8205 package. You might have to log out and in again activate the
8206 autostart script.&lt;/p&gt;
8207
8208 &lt;p&gt;The design is simple:&lt;/p&gt;
8209
8210 &lt;ul&gt;
8211
8212 &lt;li&gt;Add desktop entry in /usr/share/autostart/ causing a program
8213 hw-support-handlerd to start when the user log in.&lt;/li&gt;
8214
8215 &lt;li&gt;This program listen for kernel events about new hardware (directly
8216 from the kernel like udev does), not using HAL dbus events as I
8217 initially did.&lt;/li&gt;
8218
8219 &lt;li&gt;When new hardware is inserted, look up the hardware modalias in
8220 the APT database, a database
8221 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup&quot;&gt;available
8222 via HTTP&lt;/a&gt; and a database available as part of the package.&lt;/li&gt;
8223
8224 &lt;li&gt;If a package is mapped to the hardware in question, the package
8225 isn&#39;t installed yet and this is the first time the hardware was
8226 plugged in, show a desktop notification suggesting to install the
8227 package or packages.&lt;/li&gt;
8228
8229 &lt;li&gt;If the user click on the &#39;install package now&#39; button, ask
8230 aptdaemon via the PackageKit API to install the requrired package.&lt;/li&gt;
8231
8232 &lt;li&gt;aptdaemon ask for root password or sudo password, and install the
8233 package while showing progress information in a window.&lt;/li&gt;
8234
8235 &lt;/ul&gt;
8236
8237 &lt;p&gt;I still need to come up with a better name for the system. Here
8238 are some screen shots showing the prototype in action. First the
8239 notification, then the password request, and finally the request to
8240 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.&lt;/p&gt;
8241
8242 &lt;p&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png&quot;&gt;
8243 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png&quot;&gt;
8244 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png&quot;&gt;
8245 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png&quot;&gt;
8246 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png&quot; width=&quot;70%&quot;&gt;&lt;/p&gt;
8247
8248 &lt;p&gt;The prototype still need to be improved with longer timeouts, but
8249 is already useful. The database of hardware to package mappings also
8250 need more work. It is currently compatible with the Ubuntu way of
8251 storing such information in the package control file, but could be
8252 changed to use other formats instead or in addition to the current
8253 method. I&#39;ve dropped the use of discover for this mapping, as the
8254 modalias approach is more flexible and easier to use on Linux as long
8255 as the Linux kernel expose its modalias strings directly.&lt;/p&gt;
8256
8257 &lt;p&gt;&lt;strong&gt;Update 2013-01-21 16:50&lt;/strong&gt;: Due to popular demand,
8258 here is the command required to check out and build the source: Use
8259 &#39;&lt;tt&gt;svn checkout
8260 svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
8261 hw-support-handler; debuild&lt;/tt&gt;&#39;. If you lack debuild, install the
8262 devscripts package.&lt;/p&gt;
8263
8264 &lt;p&gt;&lt;strong&gt;Update 2013-01-23 12:00&lt;/strong&gt;: The project is now
8265 renamed to Isenkram and the source moved from the Debian Edu
8266 subversion repository to a Debian collab-maint git repository. See
8267 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html&quot;&gt;build
8268 instructions&lt;/a&gt; for details.&lt;/p&gt;
8269 </description>
8270 </item>
8271
8272 <item>
8273 <title>Thank you Thinkpad X41, for your long and trustworthy service</title>
8274 <link>https://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html</link>
8275 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html</guid>
8276 <pubDate>Sat, 19 Jan 2013 09:20:00 +0100</pubDate>
8277 <description>&lt;p&gt;This Christmas my trusty old laptop died. It died quietly and
8278 suddenly in bed. With a quiet whimper, it went completely quiet and
8279 black. The power button was no longer able to turn it on. It was a
8280 IBM Thinkpad X41, and the best laptop I ever had. Better than both
8281 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
8282 Compaq I had before that. Now I need to find a replacement. To keep
8283 going during Christmas, I moved the one year old SSD disk to my old
8284 X40 where it fitted (only one I had left that could use it), but it is
8285 not a durable solution.
8286
8287 &lt;p&gt;My laptop needs are fairly modest. This is my wishlist from when I
8288 got a new one more than 10 years ago. It still holds true.:)&lt;/p&gt;
8289
8290 &lt;ul&gt;
8291
8292 &lt;li&gt;Lightweight (around 1 kg) and small volume (preferably smaller
8293 than A4).&lt;/li&gt;
8294 &lt;li&gt;Robust, it will be in my backpack every day.&lt;/li&gt;
8295 &lt;li&gt;Three button mouse and a mouse pin instead of touch pad.&lt;/li&gt;
8296 &lt;li&gt;Long battery life time. Preferable a week.&lt;/li&gt;
8297 &lt;li&gt;Internal WIFI network card.&lt;/li&gt;
8298 &lt;li&gt;Internal Twisted Pair network card.&lt;/li&gt;
8299 &lt;li&gt;Some USB slots (2-3 is plenty)&lt;/li&gt;
8300 &lt;li&gt;Good keyboard - similar to the Thinkpad.&lt;/li&gt;
8301 &lt;li&gt;Video resolution at least 1024x768, with size around 12&quot; (A4 paper
8302 size).&lt;/li&gt;
8303 &lt;li&gt;Hardware supported by Debian Stable, ie the default kernel and
8304 X.org packages.&lt;/li&gt;
8305 &lt;li&gt;Quiet, preferably fan free (or at least not using the fan most of
8306 the time).
8307
8308 &lt;/ul&gt;
8309
8310 &lt;p&gt;You will notice that there are no RAM and CPU requirements in the
8311 list. The reason is simply that the specifications on laptops the
8312 last 10-15 years have been sufficient for my needs, and I have to look
8313 at other features to choose my laptop. But are there still made as
8314 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
8315 robust, and Thinkpads seem to be heading in the wrong direction since
8316 Lenovo took over. But I&#39;ve been told that X220 and X1 Carbon might
8317 still be useful.&lt;/p&gt;
8318
8319 &lt;p&gt;Perhaps I should rethink my needs, and look for a pad with an
8320 external keyboard? I&#39;ll have to check the
8321 &lt;a href=&quot;http://www.linux-laptop.net/&quot;&gt;Linux Laptops site&lt;/a&gt; for
8322 well-supported laptops, or perhaps just buy one preinstalled from one
8323 of the vendors listed on the &lt;a href=&quot;http://linuxpreloaded.com/&quot;&gt;Linux
8324 Pre-loaded site&lt;/a&gt;.&lt;/p&gt;
8325 </description>
8326 </item>
8327
8328 <item>
8329 <title>How to find a browser plugin supporting a given MIME type</title>
8330 <link>https://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html</link>
8331 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html</guid>
8332 <pubDate>Fri, 18 Jan 2013 10:40:00 +0100</pubDate>
8333 <description>&lt;p&gt;Some times I try to figure out which Iceweasel browser plugin to
8334 install to get support for a given MIME type. Thanks to
8335 &lt;a href=&quot;https://wiki.ubuntu.com/MozillaTeam/Plugins&quot;&gt;specifications
8336 done by Ubuntu&lt;/a&gt; and Mozilla, it is possible to do this in Debian.
8337 Unfortunately, not very many packages provide the needed meta
8338 information, Anyway, here is a small script to look up all browser
8339 plugin packages announcing ther MIME support using this specification:&lt;/p&gt;
8340
8341 &lt;pre&gt;
8342 #!/usr/bin/python
8343 import sys
8344 import apt
8345 def pkgs_handling_mimetype(mimetype):
8346 cache = apt.Cache()
8347 cache.open(None)
8348 thepkgs = []
8349 for pkg in cache:
8350 version = pkg.candidate
8351 if version is None:
8352 version = pkg.installed
8353 if version is None:
8354 continue
8355 record = version.record
8356 if not record.has_key(&#39;Npp-MimeType&#39;):
8357 continue
8358 mime_types = record[&#39;Npp-MimeType&#39;].split(&#39;,&#39;)
8359 for t in mime_types:
8360 t = t.rstrip().strip()
8361 if t == mimetype:
8362 thepkgs.append(pkg.name)
8363 return thepkgs
8364 mimetype = &quot;audio/ogg&quot;
8365 if 1 &lt; len(sys.argv):
8366 mimetype = sys.argv[1]
8367 print &quot;Browser plugin packages supporting %s:&quot; % mimetype
8368 for pkg in pkgs_handling_mimetype(mimetype):
8369 print &quot; %s&quot; %pkg
8370 &lt;/pre&gt;
8371
8372 &lt;p&gt;It can be used like this to look up a given MIME type:&lt;/p&gt;
8373
8374 &lt;pre&gt;
8375 % ./apt-find-browserplug-for-mimetype
8376 Browser plugin packages supporting audio/ogg:
8377 gecko-mediaplayer
8378 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
8379 Browser plugin packages supporting application/x-shockwave-flash:
8380 browser-plugin-gnash
8381 %
8382 &lt;/pre&gt;
8383
8384 &lt;p&gt;In Ubuntu this mechanism is combined with support in the browser
8385 itself to query for plugins and propose to install the needed
8386 packages. It would be great if Debian supported such feature too. Is
8387 anyone working on adding it?&lt;/p&gt;
8388
8389 &lt;p&gt;&lt;strong&gt;Update 2013-01-18 14:20&lt;/strong&gt;: The Debian BTS
8390 request for icweasel support for this feature is
8391 &lt;a href=&quot;http://bugs.debian.org/484010&quot;&gt;#484010&lt;/a&gt; from 2008 (and
8392 &lt;a href=&quot;http://bugs.debian.org/698426&quot;&gt;#698426&lt;/a&gt; from today). Lack
8393 of manpower and wish for a different design is the reason thus feature
8394 is not yet in iceweasel from Debian.&lt;/p&gt;
8395 </description>
8396 </item>
8397
8398 <item>
8399 <title>What is the most supported MIME type in Debian?</title>
8400 <link>https://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html</link>
8401 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html</guid>
8402 <pubDate>Wed, 16 Jan 2013 10:10:00 +0100</pubDate>
8403 <description>&lt;p&gt;The &lt;a href=&quot;http://wiki.debian.org/AppStreamDebianProposal&quot;&gt;DEP-11
8404 proposal to add AppStream information to the Debian archive&lt;/a&gt;, is a
8405 proposal to make it possible for a Desktop application to propose to
8406 the user some package to install to gain support for a given MIME
8407 type, font, library etc. that is currently missing. With such
8408 mechanism in place, it would be possible for the desktop to
8409 automatically propose and install leocad if some LDraw file is
8410 downloaded by the browser.&lt;/p&gt;
8411
8412 &lt;p&gt;To get some idea about the current content of the archive, I decided
8413 to write a simple program to extract all .desktop files from the
8414 Debian archive and look up the claimed MIME support there. The result
8415 can be found on the
8416 &lt;a href=&quot;http://ftp.skolelinux.org/pub/AppStreamTest&quot;&gt;Skolelinux FTP
8417 site&lt;/a&gt;. Using the collected information, it become possible to
8418 answer the question in the title. Here are the 20 most supported MIME
8419 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
8420 The complete list is available from the link above.&lt;/p&gt;
8421
8422 &lt;p&gt;&lt;strong&gt;Debian Stable:&lt;/strong&gt;&lt;/p&gt;
8423
8424 &lt;pre&gt;
8425 count MIME type
8426 ----- -----------------------
8427 32 text/plain
8428 30 audio/mpeg
8429 29 image/png
8430 28 image/jpeg
8431 27 application/ogg
8432 26 audio/x-mp3
8433 25 image/tiff
8434 25 image/gif
8435 22 image/bmp
8436 22 audio/x-wav
8437 20 audio/x-flac
8438 19 audio/x-mpegurl
8439 18 video/x-ms-asf
8440 18 audio/x-musepack
8441 18 audio/x-mpeg
8442 18 application/x-ogg
8443 17 video/mpeg
8444 17 audio/x-scpls
8445 17 audio/ogg
8446 16 video/x-ms-wmv
8447 &lt;/pre&gt;
8448
8449 &lt;p&gt;&lt;strong&gt;Debian Testing:&lt;/strong&gt;&lt;/p&gt;
8450
8451 &lt;pre&gt;
8452 count MIME type
8453 ----- -----------------------
8454 33 text/plain
8455 32 image/png
8456 32 image/jpeg
8457 29 audio/mpeg
8458 27 image/gif
8459 26 image/tiff
8460 26 application/ogg
8461 25 audio/x-mp3
8462 22 image/bmp
8463 21 audio/x-wav
8464 19 audio/x-mpegurl
8465 19 audio/x-mpeg
8466 18 video/mpeg
8467 18 audio/x-scpls
8468 18 audio/x-flac
8469 18 application/x-ogg
8470 17 video/x-ms-asf
8471 17 text/html
8472 17 audio/x-musepack
8473 16 image/x-xbitmap
8474 &lt;/pre&gt;
8475
8476 &lt;p&gt;&lt;strong&gt;Debian Unstable:&lt;/strong&gt;&lt;/p&gt;
8477
8478 &lt;pre&gt;
8479 count MIME type
8480 ----- -----------------------
8481 31 text/plain
8482 31 image/png
8483 31 image/jpeg
8484 29 audio/mpeg
8485 28 application/ogg
8486 27 image/gif
8487 26 image/tiff
8488 26 audio/x-mp3
8489 23 audio/x-wav
8490 22 image/bmp
8491 21 audio/x-flac
8492 20 audio/x-mpegurl
8493 19 audio/x-mpeg
8494 18 video/x-ms-asf
8495 18 video/mpeg
8496 18 audio/x-scpls
8497 18 application/x-ogg
8498 17 audio/x-musepack
8499 16 video/x-ms-wmv
8500 16 video/x-msvideo
8501 &lt;/pre&gt;
8502
8503 &lt;p&gt;I am told that PackageKit can provide an API to access the kind of
8504 information mentioned in DEP-11. I have not yet had time to look at
8505 it, but hope the PackageKit people in Debian are on top of these
8506 issues.&lt;/p&gt;
8507
8508 &lt;p&gt;&lt;strong&gt;Update 2013-01-16 13:35&lt;/strong&gt;: Updated numbers after
8509 discovering a typo in my script.&lt;/p&gt;
8510 </description>
8511 </item>
8512
8513 <item>
8514 <title>Using modalias info to find packages handling my hardware</title>
8515 <link>https://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html</link>
8516 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html</guid>
8517 <pubDate>Tue, 15 Jan 2013 08:00:00 +0100</pubDate>
8518 <description>&lt;p&gt;Yesterday, I wrote about the
8519 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html&quot;&gt;modalias
8520 values provided by the Linux kernel&lt;/a&gt; following my hope for
8521 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;better
8522 dongle support in Debian&lt;/a&gt;. Using this knowledge, I have tested how
8523 modalias values attached to package names can be used to map packages
8524 to hardware. This allow the system to look up and suggest relevant
8525 packages when I plug in some new hardware into my machine, and replace
8526 discover and discover-data as the database used to map hardware to
8527 packages.&lt;/p&gt;
8528
8529 &lt;p&gt;I create a modaliases file with entries like the following,
8530 containing package name, kernel module name (if relevant, otherwise
8531 the package name) and globs matching the relevant hardware
8532 modalias.&lt;/p&gt;
8533
8534 &lt;p&gt;&lt;blockquote&gt;
8535 Package: package-name
8536 &lt;br&gt;Modaliases: module(modaliasglob, modaliasglob, modaliasglob)&lt;/p&gt;
8537 &lt;/blockquote&gt;&lt;/p&gt;
8538
8539 &lt;p&gt;It is fairly trivial to write code to find the relevant packages
8540 for a given modalias value using this file.&lt;/p&gt;
8541
8542 &lt;p&gt;An entry like this would suggest the video and picture application
8543 cheese for many USB web cameras (interface bus class 0E01):&lt;/p&gt;
8544
8545 &lt;p&gt;&lt;blockquote&gt;
8546 Package: cheese
8547 &lt;br&gt;Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)&lt;/p&gt;
8548 &lt;/blockquote&gt;&lt;/p&gt;
8549
8550 &lt;p&gt;An entry like this would suggest the pcmciautils package when a
8551 CardBus bridge (bus class 0607) PCI device is present:&lt;/p&gt;
8552
8553 &lt;p&gt;&lt;blockquote&gt;
8554 Package: pcmciautils
8555 &lt;br&gt;Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
8556 &lt;/blockquote&gt;&lt;/p&gt;
8557
8558 &lt;p&gt;An entry like this would suggest the package colorhug-client when
8559 plugging in a ColorHug with USB IDs 04D8:F8DA:&lt;/p&gt;
8560
8561 &lt;p&gt;&lt;blockquote&gt;
8562 Package: colorhug-client
8563 &lt;br&gt;Modaliases: colorhug-client(usb:v04D8pF8DAd*)&lt;/p&gt;
8564 &lt;/blockquote&gt;&lt;/p&gt;
8565
8566 &lt;p&gt;I believe the format is compatible with the format of the Packages
8567 file in the Debian archive. Ubuntu already uses their Packages file
8568 to store their mappings from packages to hardware.&lt;/p&gt;
8569
8570 &lt;p&gt;By adding a XB-Modaliases: header in debian/control, any .deb can
8571 announce the hardware it support in a way my prototype understand.
8572 This allow those publishing packages in an APT source outside the
8573 Debian archive as well as those backporting packages to make sure the
8574 hardware mapping are included in the package meta information. I&#39;ve
8575 tested such header in the pymissile package, and its modalias mapping
8576 is working as it should with my prototype. It even made it to Ubuntu
8577 Raring.&lt;/p&gt;
8578
8579 &lt;p&gt;To test if it was possible to look up supported hardware using only
8580 the shell tools available in the Debian installer, I wrote a shell
8581 implementation of the lookup code. The idea is to create files for
8582 each modalias and let the shell do the matching. Please check out and
8583 try the
8584 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co&quot;&gt;hw-support-lookup&lt;/a&gt;
8585 shell script. It run without any extra dependencies and fetch the
8586 hardware mappings from the Debian archive and the subversion
8587 repository where I currently work on my prototype.&lt;/p&gt;
8588
8589 &lt;p&gt;When I use it on a machine with a yubikey inserted, it suggest to
8590 install yubikey-personalization:&lt;/p&gt;
8591
8592 &lt;p&gt;&lt;blockquote&gt;
8593 % ./hw-support-lookup
8594 &lt;br&gt;yubikey-personalization
8595 &lt;br&gt;%
8596 &lt;/blockquote&gt;&lt;/p&gt;
8597
8598 &lt;p&gt;When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
8599 propose to install the pcmciautils package:&lt;/p&gt;
8600
8601 &lt;p&gt;&lt;blockquote&gt;
8602 % ./hw-support-lookup
8603 &lt;br&gt;pcmciautils
8604 &lt;br&gt;%
8605 &lt;/blockquote&gt;&lt;/p&gt;
8606
8607 &lt;p&gt;If you know of any hardware-package mapping that should be added to
8608 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co&quot;&gt;my
8609 database&lt;/a&gt;, please tell me about it.&lt;/p&gt;
8610
8611 &lt;p&gt;It could be possible to generate several of the mappings between
8612 packages and hardware. One source would be to look at packages with
8613 kernel modules, ie packages with *.ko files in /lib/modules/, and
8614 extract their modalias information. Another would be to look at
8615 packages with udev rules, ie packages with files in
8616 /lib/udev/rules.d/, and extract their vendor/model information to
8617 generate a modalias matching rule. I have not tested any of these to
8618 see if it work.&lt;/p&gt;
8619
8620 &lt;p&gt;If you want to help implementing a system to let us propose what
8621 packages to install when new hardware is plugged into a Debian
8622 machine, please send me an email or talk to me on
8623 &lt;a href=&quot;irc://irc.debian.org/%23debian-devel&quot;&gt;#debian-devel&lt;/a&gt;.&lt;/p&gt;
8624 </description>
8625 </item>
8626
8627 <item>
8628 <title>Modalias strings - a practical way to map &quot;stuff&quot; to hardware</title>
8629 <link>https://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html</link>
8630 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html</guid>
8631 <pubDate>Mon, 14 Jan 2013 11:20:00 +0100</pubDate>
8632 <description>&lt;p&gt;While looking into how to look up Debian packages based on hardware
8633 information, to find the packages that support a given piece of
8634 hardware, I refreshed my memory regarding modalias values, and decided
8635 to document the details. Here are my findings so far, also available
8636 in
8637 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;the
8638 Debian Edu subversion repository&lt;/a&gt;:
8639
8640 &lt;p&gt;&lt;strong&gt;Modalias decoded&lt;/strong&gt;&lt;/p&gt;
8641
8642 &lt;p&gt;This document try to explain what the different types of modalias
8643 values stands for. It is in part based on information from
8644 &amp;lt;URL: &lt;a href=&quot;https://wiki.archlinux.org/index.php/Modalias&quot;&gt;https://wiki.archlinux.org/index.php/Modalias&lt;/a&gt; &amp;gt;,
8645 &amp;lt;URL: &lt;a href=&quot;http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device&quot;&gt;http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device&lt;/a&gt; &amp;gt;,
8646 &amp;lt;URL: &lt;a href=&quot;http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c&quot;&gt;http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c&lt;/a&gt; &amp;gt; and
8647 &amp;lt;URL: &lt;a href=&quot;http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&amp;view=markup&quot;&gt;http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&amp;view=markup&lt;/a&gt; &amp;gt;.
8648
8649 &lt;p&gt;The modalias entries for a given Linux machine can be found using
8650 this shell script:&lt;/p&gt;
8651
8652 &lt;pre&gt;
8653 find /sys -name modalias -print0 | xargs -0 cat | sort -u
8654 &lt;/pre&gt;
8655
8656 &lt;p&gt;The supported modalias globs for a given kernel module can be found
8657 using modinfo:&lt;/p&gt;
8658
8659 &lt;pre&gt;
8660 % /sbin/modinfo psmouse | grep alias:
8661 alias: serio:ty05pr*id*ex*
8662 alias: serio:ty01pr*id*ex*
8663 %
8664 &lt;/pre&gt;
8665
8666 &lt;p&gt;&lt;strong&gt;PCI subtype&lt;/strong&gt;&lt;/p&gt;
8667
8668 &lt;p&gt;A typical PCI entry can look like this. This is an Intel Host
8669 Bridge memory controller:&lt;/p&gt;
8670
8671 &lt;p&gt;&lt;blockquote&gt;
8672 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
8673 &lt;/blockquote&gt;&lt;/p&gt;
8674
8675 &lt;p&gt;This represent these values:&lt;/p&gt;
8676
8677 &lt;pre&gt;
8678 v 00008086 (vendor)
8679 d 00002770 (device)
8680 sv 00001028 (subvendor)
8681 sd 000001AD (subdevice)
8682 bc 06 (bus class)
8683 sc 00 (bus subclass)
8684 i 00 (interface)
8685 &lt;/pre&gt;
8686
8687 &lt;p&gt;The vendor/device values are the same values outputted from &#39;lspci
8688 -n&#39; as 8086:2770. The bus class/subclass is also shown by lspci as
8689 0600. The 0600 class is a host bridge. Other useful bus values are
8690 0300 (VGA compatible card) and 0200 (Ethernet controller).&lt;/p&gt;
8691
8692 &lt;p&gt;Not sure how to figure out the interface value, nor what it
8693 means.&lt;/p&gt;
8694
8695 &lt;p&gt;&lt;strong&gt;USB subtype&lt;/strong&gt;&lt;/p&gt;
8696
8697 &lt;p&gt;Some typical USB entries can look like this. This is an internal
8698 USB hub in a laptop:&lt;/p&gt;
8699
8700 &lt;p&gt;&lt;blockquote&gt;
8701 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
8702 &lt;/blockquote&gt;&lt;/p&gt;
8703
8704 &lt;p&gt;Here is the values included in this alias:&lt;/p&gt;
8705
8706 &lt;pre&gt;
8707 v 1D6B (device vendor)
8708 p 0001 (device product)
8709 d 0206 (bcddevice)
8710 dc 09 (device class)
8711 dsc 00 (device subclass)
8712 dp 00 (device protocol)
8713 ic 09 (interface class)
8714 isc 00 (interface subclass)
8715 ip 00 (interface protocol)
8716 &lt;/pre&gt;
8717
8718 &lt;p&gt;The 0900 device class/subclass means hub. Some times the relevant
8719 class is in the interface class section. For a simple USB web camera,
8720 these alias entries show up:&lt;/p&gt;
8721
8722 &lt;p&gt;&lt;blockquote&gt;
8723 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
8724 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
8725 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
8726 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
8727 &lt;/blockquote&gt;&lt;/p&gt;
8728
8729 &lt;p&gt;Interface class 0E01 is video control, 0E02 is video streaming (aka
8730 camera), 0101 is audio control device and 0102 is audio streaming (aka
8731 microphone). Thus this is a camera with microphone included.&lt;/p&gt;
8732
8733 &lt;p&gt;&lt;strong&gt;ACPI subtype&lt;/strong&gt;&lt;/p&gt;
8734
8735 &lt;p&gt;The ACPI type is used for several non-PCI/USB stuff. This is an IR
8736 receiver in a Thinkpad X40:&lt;/p&gt;
8737
8738 &lt;p&gt;&lt;blockquote&gt;
8739 acpi:IBM0071:PNP0511:
8740 &lt;/blockquote&gt;&lt;/p&gt;
8741
8742 &lt;p&gt;The values between the colons are IDs.&lt;/p&gt;
8743
8744 &lt;p&gt;&lt;strong&gt;DMI subtype&lt;/strong&gt;&lt;/p&gt;
8745
8746 &lt;p&gt;The DMI table contain lots of information about the computer case
8747 and model. This is an entry for a IBM Thinkpad X40, fetched from
8748 /sys/devices/virtual/dmi/id/modalias:&lt;/p&gt;
8749
8750 &lt;p&gt;&lt;blockquote&gt;
8751 dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
8752 &lt;/blockquote&gt;&lt;/p&gt;
8753
8754 &lt;p&gt;The values present are&lt;/p&gt;
8755
8756 &lt;pre&gt;
8757 bvn IBM (BIOS vendor)
8758 bvr 1UETB6WW(1.66) (BIOS version)
8759 bd 06/15/2005 (BIOS date)
8760 svn IBM (system vendor)
8761 pn 2371H4G (product name)
8762 pvr ThinkPadX40 (product version)
8763 rvn IBM (board vendor)
8764 rn 2371H4G (board name)
8765 rvr NotAvailable (board version)
8766 cvn IBM (chassis vendor)
8767 ct 10 (chassis type)
8768 cvr NotAvailable (chassis version)
8769 &lt;/pre&gt;
8770
8771 &lt;p&gt;The chassis type 10 is Notebook. Other interesting values can be
8772 found in the dmidecode source:&lt;/p&gt;
8773
8774 &lt;pre&gt;
8775 3 Desktop
8776 4 Low Profile Desktop
8777 5 Pizza Box
8778 6 Mini Tower
8779 7 Tower
8780 8 Portable
8781 9 Laptop
8782 10 Notebook
8783 11 Hand Held
8784 12 Docking Station
8785 13 All In One
8786 14 Sub Notebook
8787 15 Space-saving
8788 16 Lunch Box
8789 17 Main Server Chassis
8790 18 Expansion Chassis
8791 19 Sub Chassis
8792 20 Bus Expansion Chassis
8793 21 Peripheral Chassis
8794 22 RAID Chassis
8795 23 Rack Mount Chassis
8796 24 Sealed-case PC
8797 25 Multi-system
8798 26 CompactPCI
8799 27 AdvancedTCA
8800 28 Blade
8801 29 Blade Enclosing
8802 &lt;/pre&gt;
8803
8804 &lt;p&gt;The chassis type values are not always accurately set in the DMI
8805 table. For example my home server is a tower, but the DMI modalias
8806 claim it is a desktop.&lt;/p&gt;
8807
8808 &lt;p&gt;&lt;strong&gt;SerIO subtype&lt;/strong&gt;&lt;/p&gt;
8809
8810 &lt;p&gt;This type is used for PS/2 mouse plugs. One example is from my
8811 test machine:&lt;/p&gt;
8812
8813 &lt;p&gt;&lt;blockquote&gt;
8814 serio:ty01pr00id00ex00
8815 &lt;/blockquote&gt;&lt;/p&gt;
8816
8817 &lt;p&gt;The values present are&lt;/p&gt;
8818
8819 &lt;pre&gt;
8820 ty 01 (type)
8821 pr 00 (prototype)
8822 id 00 (id)
8823 ex 00 (extra)
8824 &lt;/pre&gt;
8825
8826 &lt;p&gt;This type is supported by the psmouse driver. I am not sure what
8827 the valid values are.&lt;/p&gt;
8828
8829 &lt;p&gt;&lt;strong&gt;Other subtypes&lt;/strong&gt;&lt;/p&gt;
8830
8831 &lt;p&gt;There are heaps of other modalias subtypes according to
8832 file2alias.c. There is the rest of the list from that source: amba,
8833 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
8834 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
8835 vmbus, x86cpu and zorro. I did not spend time documenting all of
8836 these, as they do not seem relevant for my intended use with mapping
8837 hardware to packages when new stuff is inserted during run time.&lt;/p&gt;
8838
8839 &lt;p&gt;&lt;strong&gt;Looking up kernel modules using modalias values&lt;/strong&gt;&lt;/p&gt;
8840
8841 &lt;p&gt;To check which kernel modules provide support for a given modalias,
8842 one can use the following shell script:&lt;/p&gt;
8843
8844 &lt;pre&gt;
8845 for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
8846 echo &quot;$id&quot; ; \
8847 /sbin/modprobe --show-depends &quot;$id&quot;|sed &#39;s/^/ /&#39; ; \
8848 done
8849 &lt;/pre&gt;
8850
8851 &lt;p&gt;The output can look like this (only the first few entries as the
8852 list is very long on my test machine):&lt;/p&gt;
8853
8854 &lt;pre&gt;
8855 acpi:ACPI0003:
8856 insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko
8857 acpi:device:
8858 FATAL: Module acpi:device: not found.
8859 acpi:IBM0068:
8860 insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko
8861 insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko
8862 insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko
8863 insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko
8864 acpi:IBM0071:PNP0511:
8865 insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko
8866 insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko
8867 insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko
8868 [...]
8869 &lt;/pre&gt;
8870
8871 &lt;p&gt;If you want to help implementing a system to let us propose what
8872 packages to install when new hardware is plugged into a Debian
8873 machine, please send me an email or talk to me on
8874 &lt;a href=&quot;irc://irc.debian.org/%23debian-devel&quot;&gt;#debian-devel&lt;/a&gt;.&lt;/p&gt;
8875
8876 &lt;p&gt;&lt;strong&gt;Update 2013-01-15:&lt;/strong&gt; Rewrite &quot;cat $(find ...)&quot; to
8877 &quot;find ... -print0 | xargs -0 cat&quot; to make sure it handle directories
8878 in /sys/ with space in them.&lt;/p&gt;
8879 </description>
8880 </item>
8881
8882 <item>
8883 <title>Moved the pymissile Debian packaging to collab-maint</title>
8884 <link>https://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html</link>
8885 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html</guid>
8886 <pubDate>Thu, 10 Jan 2013 20:40:00 +0100</pubDate>
8887 <description>&lt;p&gt;As part of my investigation on how to improve the support in Debian
8888 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
8889 Launcher and updated the Debian package
8890 &lt;a href=&quot;http://packages.qa.debian.org/pymissile&quot;&gt;pymissile&lt;/a&gt; to make
8891 sure udev will fix the device permissions when it is plugged in. I
8892 also added a &quot;Modaliases&quot; header to test it in the Debian archive and
8893 hopefully make the package be proposed by jockey in Ubuntu when a user
8894 plug in his rocket launcher. In the process I moved the source to a
8895 git repository under collab-maint, to make it easier for any DD to
8896 contribute. &lt;a href=&quot;http://code.google.com/p/pymissile/&quot;&gt;Upstream&lt;/a&gt;
8897 is not very active, but the software still work for me even after five
8898 years of relative silence. The new git repository is not listed in
8899 the uploaded package yet, because I want to test the other changes a
8900 bit more before I upload the new version. If you want to check out
8901 the new version with a .desktop file included, visit the
8902 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git&quot;&gt;gitweb
8903 view&lt;/a&gt; or use &quot;&lt;tt&gt;git clone
8904 git://anonscm.debian.org/collab-maint/pymissile.git&lt;/tt&gt;&quot;.&lt;/p&gt;
8905 </description>
8906 </item>
8907
8908 <item>
8909 <title>Lets make hardware dongles easier to use in Debian</title>
8910 <link>https://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html</link>
8911 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html</guid>
8912 <pubDate>Wed, 9 Jan 2013 15:40:00 +0100</pubDate>
8913 <description>&lt;p&gt;One thing that annoys me with Debian and Linux distributions in
8914 general, is that there is a great package management system with the
8915 ability to automatically install software packages by downloading them
8916 from the distribution mirrors, but no way to get it to automatically
8917 install the packages I need to use the hardware I plug into my
8918 machine. Even if the package to use it is easily available from the
8919 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
8920 suggest to automatically install the python-nxt, nbc and t2n packages
8921 I need to talk to it. When I plug in a Yubikey, it could propose the
8922 yubikey-personalization package. The information required to do this
8923 is available, but no-one have pulled all the pieces together.&lt;/p&gt;
8924
8925 &lt;p&gt;Some years ago, I proposed to
8926 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg01206.html&quot;&gt;use
8927 the discover subsystem to implement this&lt;/a&gt;. The idea is fairly
8928 simple:
8929
8930 &lt;ul&gt;
8931
8932 &lt;li&gt;Add a desktop entry in /usr/share/autostart/ pointing to a program
8933 starting when a user log in.&lt;/li&gt;
8934
8935 &lt;li&gt;Set this program up to listen for kernel events emitted when new
8936 hardware is inserted into the computer.&lt;/li&gt;
8937
8938 &lt;li&gt;When new hardware is inserted, look up the hardware ID in a
8939 database mapping to packages, and take note of any non-installed
8940 packages.&lt;/li&gt;
8941
8942 &lt;li&gt;Show a message to the user proposing to install the discovered
8943 package, and make it easy to install it.&lt;/li&gt;
8944
8945 &lt;/ul&gt;
8946
8947 &lt;p&gt;I am not sure what the best way to implement this is, but my
8948 initial idea was to use dbus events to discover new hardware, the
8949 discover database to find packages and
8950 &lt;a href=&quot;http://www.packagekit.org/&quot;&gt;PackageKit&lt;/a&gt; to install
8951 packages.&lt;/p&gt;
8952
8953 &lt;p&gt;Yesterday, I found time to try to implement this idea, and the
8954 draft package is now checked into
8955 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;the
8956 Debian Edu subversion repository&lt;/a&gt;. In the process, I updated the
8957 &lt;a href=&quot;http://packages.qa.debian.org/d/discover-data.html&quot;&gt;discover-data&lt;/a&gt;
8958 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
8959 the relevant packages in Debian, and uploaded a new version
8960 2.2013.01.09 to unstable. I also discovered that the current
8961 &lt;a href=&quot;http://packages.qa.debian.org/d/discover.html&quot;&gt;discover&lt;/a&gt;
8962 package in Debian no longer discovered any USB devices, because
8963 /proc/bus/usb/devices is no longer present. I ported it to use
8964 libusb as a fall back option to get it working. The fixed package
8965 version 2.1.2-6 is now in experimental (didn&#39;t upload it to unstable
8966 because of the freeze).&lt;/p&gt;
8967
8968 &lt;p&gt;With this prototype in place, I can insert my Yubikey, and get this
8969 desktop notification to show up (only once, the first time it is
8970 inserted):&lt;/p&gt;
8971
8972 &lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-09-hw-autoinstall.png&quot;&gt;&lt;/p&gt;
8973
8974 &lt;p&gt;For this prototype to be really useful, some way to automatically
8975 install the proposed packages by pressing the &quot;Please install
8976 program(s)&quot; button should to be implemented.&lt;/p&gt;
8977
8978 &lt;p&gt;If this idea seem useful to you, and you want to help make it
8979 happen, please help me update the discover-data database with mappings
8980 from hardware to Debian packages. Check if &#39;discover-pkginstall -l&#39;
8981 list the package you would like to have installed when a given
8982 hardware device is inserted into your computer, and report bugs using
8983 reportbug if it isn&#39;t. Or, if you know of a better way to provide
8984 such mapping, please let me know.&lt;/p&gt;
8985
8986 &lt;p&gt;This prototype need more work, and there are several questions that
8987 should be considered before it is ready for production use. Is dbus
8988 the correct way to detect new hardware? At the moment I look for HAL
8989 dbus events on the system bus, because that is the events I could see
8990 on my Debian Squeeze KDE desktop. Are there better events to use?
8991 How should the user be notified? Is the desktop notification
8992 mechanism the best option, or should the background daemon raise a
8993 popup instead? How should packages be installed? When should they
8994 not be installed?&lt;/p&gt;
8995
8996 &lt;p&gt;If you want to help getting such feature implemented in Debian,
8997 please send me an email. :)&lt;/p&gt;
8998 </description>
8999 </item>
9000
9001 <item>
9002 <title>New IRC channel for LEGO designers using Debian</title>
9003 <link>https://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html</link>
9004 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html</guid>
9005 <pubDate>Wed, 2 Jan 2013 15:40:00 +0100</pubDate>
9006 <description>&lt;p&gt;During Christmas, I have worked a bit on the Debian support for
9007 &lt;a href=&quot;http://mindstorms.lego.com/en-us/Default.aspx&quot;&gt;LEGO Mindstorm
9008 NXT&lt;/a&gt;. My son and I have played a bit with my NXT set, and I
9009 discovered I had to build all the tools myself because none were
9010 already in Debian Squeeze. If Debian support for LEGO is something
9011 you care about, please join me on the IRC channel
9012 &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;#debian-lego&lt;/a&gt; (server
9013 irc.debian.org). There is a lot that could be done to improve the
9014 Debian support for LEGO designers. For example both CAD software
9015 and Mindstorm compilers are missing. :)&lt;/p&gt;
9016
9017 &lt;p&gt;Update 2012-01-03: A
9018 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;project page&lt;/a&gt;
9019 including links to Lego related packages is now available.&lt;/p&gt;
9020 </description>
9021 </item>
9022
9023 <item>
9024 <title>How to backport bitcoin-qt version 0.7.2-2 to Debian Squeeze</title>
9025 <link>https://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html</link>
9026 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html</guid>
9027 <pubDate>Tue, 25 Dec 2012 20:50:00 +0100</pubDate>
9028 <description>&lt;p&gt;Let me start by wishing you all marry Christmas and a happy new
9029 year! I hope next year will prove to be a good year.&lt;/p&gt;
9030
9031 &lt;p&gt;&lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;Bitcoin&lt;/a&gt;, the digital
9032 decentralised &quot;currency&quot; that allow people to transfer bitcoins
9033 between each other with minimal overhead, is a very interesting
9034 experiment. And as I wrote a few days ago, the bitcoin situation in
9035 &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt; is about to improve a bit.
9036 The &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;new debian source
9037 package&lt;/a&gt; (version 0.7.2-2) was uploaded yesterday, and is waiting
9038 in &lt;a href=&quot;http://ftp-master.debian.org/new.html&quot;&gt;the NEW queue&lt;/A&gt;
9039 for one of the ftpmasters to approve the new bitcoin-qt package
9040 name.&lt;/p&gt;
9041
9042 &lt;p&gt;And thanks to the great work of Jonas and the rest of the bitcoin
9043 team in Debian, you can easily test the package in Debian Squeeze
9044 using the following steps to get a set of working packages:&lt;/p&gt;
9045
9046 &lt;blockquote&gt;&lt;pre&gt;
9047 git clone git://git.debian.org/git/collab-maint/bitcoin
9048 cd bitcoin
9049 DEB_MAINTAINER_MODE=1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
9050 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
9051 &lt;/pre&gt;&lt;/blockquote&gt;
9052
9053 &lt;p&gt;You might have to install some build dependencies as well. The
9054 list of commands should give you two packages, bitcoind and
9055 bitcoin-qt, ready for use in a Squeeze environment. Note that the
9056 client will download the complete set of bitcoin &quot;blocks&quot;, which need
9057 around 5.6 GiB of data on my machine at the moment. Make sure your
9058 ~/.bitcoin/ directory have lots of spare room if you want to download
9059 all the blocks. The client will warn if the disk is getting full, so
9060 there is not really a problem if you got too little room, but you will
9061 not be able to get all the features out of the client.&lt;/p&gt;
9062
9063 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
9064 activities, please send Bitcoin donations to my address
9065 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
9066 </description>
9067 </item>
9068
9069 <item>
9070 <title>A word on bitcoin support in Debian</title>
9071 <link>https://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html</link>
9072 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html</guid>
9073 <pubDate>Fri, 21 Dec 2012 23:59:00 +0100</pubDate>
9074 <description>&lt;p&gt;It has been a while since I wrote about
9075 &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;bitcoin&lt;/a&gt;, the decentralised
9076 peer-to-peer based crypto-currency, and the reason is simply that I
9077 have been busy elsewhere. But two days ago, I started looking at the
9078 state of &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;bitcoin in
9079 Debian&lt;/a&gt; again to try to recover my old bitcoin wallet. The package
9080 is now maintained by a
9081 &lt;a href=&quot;https://alioth.debian.org/projects/pkg-bitcoin/&quot;&gt;team of
9082 people&lt;/a&gt;, and the grunt work had already been done by this team. We
9083 owe a huge thank you to all these team members. :)
9084 But I was sad to discover that the bitcoin client is missing in
9085 Wheezy. It is only available in Sid (and an outdated client from
9086 backports). The client had several RC bugs registered in BTS blocking
9087 it from entering testing. To try to help the team and improve the
9088 situation, I spent some time providing patches and triaging the bug
9089 reports. I also had a look at the bitcoin package available from Matt
9090 Corallo in a
9091 &lt;a href=&quot;https://launchpad.net/~bitcoin/+archive/bitcoin&quot;&gt;PPA for
9092 Ubuntu&lt;/a&gt;, and moved the useful pieces from that version into the
9093 Debian package.&lt;/p&gt;
9094
9095 &lt;p&gt;After checking with the main package maintainer Jonas Smedegaard on
9096 IRC, I pushed several patches into the collab-maint git repository to
9097 improve the package. It now contains fixes for the RC issues (not from
9098 me, but fixed by Scott Howard), build rules for a Qt GUI client
9099 package, konqueror support for the bitcoin: URI and bash completion
9100 setup. As I work on Debian Squeeze, I also created
9101 &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/pkg-bitcoin-devel/Week-of-Mon-20121217/000041.html&quot;&gt;a
9102 patch to backport&lt;/a&gt; the latest version. Jonas is going to look at
9103 it and try to integrate it into the git repository before uploading a
9104 new version to unstable.
9105
9106 &lt;p&gt;I would very much like bitcoin to succeed, to get rid of the
9107 centralized control currently exercised in the monetary system. I
9108 find it completely unacceptable that the USA government is collecting
9109 transaction data for almost all international money transfers (most are done in USD and transaction logs shipped to the spooks), and
9110 that the major credit card companies can block legal money
9111 transactions to Wikileaks. But for bitcoin to succeed, more people
9112 need to use bitcoins, and more people need to accept bitcoins when
9113 they sell products and services. Improving the bitcoin support in
9114 Debian is a small step in the right direction, but not enough.
9115 Unfortunately the user experience when browsing the web and wanting to
9116 pay with bitcoin is still not very good. The bitcoin: URI is a step
9117 in the right direction, but need to work in most or every browser in
9118 use. Also the bitcoin-qt client is too heavy to fire up to do a
9119 quick transaction. I believe there are other clients available, but
9120 have not tested them.&lt;/p&gt;
9121
9122 &lt;p&gt;My
9123 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html&quot;&gt;experiment
9124 with bitcoins&lt;/a&gt; showed that at least some of my readers use bitcoin.
9125 I received 20.15 BTC so far on the address I provided in my blog two
9126 years ago, as can be
9127 &lt;a href=&quot;http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;seen
9128 on the blockexplorer service&lt;/a&gt;. Thank you everyone for your
9129 donation. The blockexplorer service demonstrates quite well that
9130 bitcoin is not quite anonymous and untracked. :) I wonder if the
9131 number of users have gone up since then. If you use bitcoin and want
9132 to show your support of my activity, please send Bitcoin donations to
9133 the same address as last time,
9134 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
9135 </description>
9136 </item>
9137
9138 <item>
9139 <title>Git repository for song book for Computer Scientists</title>
9140 <link>https://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html</link>
9141 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html</guid>
9142 <pubDate>Fri, 7 Sep 2012 13:50:00 +0200</pubDate>
9143 <description>&lt;p&gt;As I
9144 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html&quot;&gt;mentioned
9145 this summer&lt;/a&gt;, I have created a Computer Science song book a few
9146 years ago, and today I finally found time to create a public
9147 &lt;a href=&quot;https://gitorious.org/pere-cs-songbook/pere-cs-songbook&quot;&gt;Gitorious
9148 repository for the project&lt;/a&gt;.&lt;/p&gt;
9149
9150 &lt;p&gt;If you want to help out, please clone the source and submit patches
9151 to the HTML version. To generate the PDF and PostScript version,
9152 please use prince XML, or let me know about a useful free software
9153 processor capable of creating a good looking PDF from the HTML.&lt;/p&gt;
9154
9155 &lt;p&gt;Want to sing? You can still find the song book in HTML, PDF and
9156 PostScript formats at
9157 &lt;a href=&quot;http://www.hungry.com/~pere/cs-songbook/&quot;&gt;Petter&#39;s Computer
9158 Science Songbook&lt;/a&gt;.&lt;/p&gt;
9159 </description>
9160 </item>
9161
9162 <item>
9163 <title>Gratulerer med 19-årsdagen, Debian!</title>
9164 <link>https://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html</link>
9165 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html</guid>
9166 <pubDate>Thu, 16 Aug 2012 11:20:00 +0200</pubDate>
9167 <description>&lt;p&gt;I dag fyller
9168 &lt;a href=&quot;http://www.debian.org/News/2012/20120813&quot;&gt;Debian-prosjektet 19
9169 år&lt;/a&gt;. Jeg har fulgt det de siste 12 årene, og er veldig glad for å kunne
9170 si gratulerer med dagen, Debian!&lt;/p&gt;
9171 </description>
9172 </item>
9173
9174 <item>
9175 <title>Song book for Computer Scientists</title>
9176 <link>https://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html</link>
9177 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html</guid>
9178 <pubDate>Sun, 24 Jun 2012 13:30:00 +0200</pubDate>
9179 <description>&lt;p&gt;Many years ago, while studying Computer Science at the
9180 &lt;a href=&quot;http://www.uit.no/&quot;&gt;University of Tromsø&lt;/a&gt;, I started
9181 collecting computer related songs for use at parties. The original
9182 version was written in LaTeX, but a few years ago I got help from
9183 Håkon W. Lie, one of the inventors of W3C CSS, to convert it to HTML
9184 while keeping the ability to create a nice book in PDF format. I have
9185 not had time to maintain the book for a while now, and guess I should
9186 put it up on some public version control repository where others can
9187 help me extend and update the book. If anyone is volunteering to help
9188 me with this, send me an email. Also let me know if there are songs
9189 missing in my book.&lt;/p&gt;
9190
9191 &lt;p&gt;I have not mentioned the book on my blog so far, and it occured to
9192 me today that I really should let all my readers share the joys of
9193 singing out load about programming, computers and computer networks.
9194 Especially now that &lt;a href=&quot;http://debconf12.debconf.org/&quot;&gt;Debconf
9195 12&lt;/a&gt; is about to start (and I am not going). Want to sing? Check
9196 out &lt;a href=&quot;http://www.hungry.com/~pere/cs-songbook/&quot;&gt;Petter&#39;s
9197 Computer Science Songbook&lt;/a&gt;.
9198 </description>
9199 </item>
9200
9201 <item>
9202 <title>Automatically upgrading server firmware on Dell PowerEdge</title>
9203 <link>https://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html</link>
9204 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html</guid>
9205 <pubDate>Mon, 21 Nov 2011 12:00:00 +0100</pubDate>
9206 <description>&lt;p&gt;At work we have heaps of servers. I believe the total count is
9207 around 1000 at the moment. To be able to get help from the vendors
9208 when something go wrong, we want to keep the firmware on the servers
9209 up to date. If the firmware isn&#39;t the latest and greatest, the
9210 vendors typically refuse to start debugging any problems until the
9211 firmware is upgraded. So before every reboot, we want to upgrade the
9212 firmware, and we would really like everyone handling servers at the
9213 university to do this themselves when they plan to reboot a machine.
9214 For that to happen we at the unix server admin group need to provide
9215 the tools to do so.&lt;/p&gt;
9216
9217 &lt;p&gt;To make firmware upgrading easier, I am working on a script to
9218 fetch and install the latest firmware for the servers we got. Most of
9219 our hardware are from Dell and HP, so I have focused on these servers
9220 so far. This blog post is about the Dell part.&lt;/P&gt;
9221
9222 &lt;p&gt;On the Dell FTP site I was lucky enough to find
9223 &lt;a href=&quot;ftp://ftp.us.dell.com/catalog/Catalog.xml.gz&quot;&gt;an XML file&lt;/a&gt;
9224 with firmware information for all 11th generation servers, listing
9225 which firmware should be used on a given model and where on the FTP
9226 site I can find it. Using a simple perl XML parser I can then
9227 download the shell scripts Dell provides to do firmware upgrades from
9228 within Linux and reboot when all the firmware is primed and ready to
9229 be activated on the first reboot.&lt;/p&gt;
9230
9231 &lt;p&gt;This is the Dell related fragment of the perl code I am working on.
9232 Are there anyone working on similar tools for firmware upgrading all
9233 servers at a site? Please get in touch and lets share resources.&lt;/p&gt;
9234
9235 &lt;p&gt;&lt;pre&gt;
9236 #!/usr/bin/perl
9237 use strict;
9238 use warnings;
9239 use File::Temp qw(tempdir);
9240 BEGIN {
9241 # Install needed RHEL packages if missing
9242 my %rhelmodules = (
9243 &#39;XML::Simple&#39; =&gt; &#39;perl-XML-Simple&#39;,
9244 );
9245 for my $module (keys %rhelmodules) {
9246 eval &quot;use $module;&quot;;
9247 if ($@) {
9248 my $pkg = $rhelmodules{$module};
9249 system(&quot;yum install -y $pkg&quot;);
9250 eval &quot;use $module;&quot;;
9251 }
9252 }
9253 }
9254 my $errorsto = &#39;pere@hungry.com&#39;;
9255
9256 upgrade_dell();
9257
9258 exit 0;
9259
9260 sub run_firmware_script {
9261 my ($opts, $script) = @_;
9262 unless ($script) {
9263 print STDERR &quot;fail: missing script name\n&quot;;
9264 exit 1
9265 }
9266 print STDERR &quot;Running $script\n\n&quot;;
9267
9268 if (0 == system(&quot;sh $script $opts&quot;)) { # FIXME correct exit code handling
9269 print STDERR &quot;success: firmware script ran succcessfully\n&quot;;
9270 } else {
9271 print STDERR &quot;fail: firmware script returned error\n&quot;;
9272 }
9273 }
9274
9275 sub run_firmware_scripts {
9276 my ($opts, @dirs) = @_;
9277 # Run firmware packages
9278 for my $dir (@dirs) {
9279 print STDERR &quot;info: Running scripts in $dir\n&quot;;
9280 opendir(my $dh, $dir) or die &quot;Unable to open directory $dir: $!&quot;;
9281 while (my $s = readdir $dh) {
9282 next if $s =~ m/^\.\.?/;
9283 run_firmware_script($opts, &quot;$dir/$s&quot;);
9284 }
9285 closedir $dh;
9286 }
9287 }
9288
9289 sub download {
9290 my $url = shift;
9291 print STDERR &quot;info: Downloading $url\n&quot;;
9292 system(&quot;wget --quiet \&quot;$url\&quot;&quot;);
9293 }
9294
9295 sub upgrade_dell {
9296 my @dirs;
9297 my $product = `dmidecode -s system-product-name`;
9298 chomp $product;
9299
9300 if ($product =~ m/PowerEdge/) {
9301
9302 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
9303 system(&#39;yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail&#39;);
9304
9305 my $tmpdir = tempdir(
9306 CLEANUP =&gt; 1
9307 );
9308 chdir($tmpdir);
9309 fetch_dell_fw(&#39;catalog/Catalog.xml.gz&#39;);
9310 system(&#39;gunzip Catalog.xml.gz&#39;);
9311 my @paths = fetch_dell_fw_list(&#39;Catalog.xml&#39;);
9312 # -q is quiet, disabling interactivity and reducing console output
9313 my $fwopts = &quot;-q&quot;;
9314 if (@paths) {
9315 for my $url (@paths) {
9316 fetch_dell_fw($url);
9317 }
9318 run_firmware_scripts($fwopts, $tmpdir);
9319 } else {
9320 print STDERR &quot;error: Unsupported Dell model &#39;$product&#39;.\n&quot;;
9321 print STDERR &quot;error: Please report to $errorsto.\n&quot;;
9322 }
9323 chdir(&#39;/&#39;);
9324 } else {
9325 print STDERR &quot;error: Unsupported Dell model &#39;$product&#39;.\n&quot;;
9326 print STDERR &quot;error: Please report to $errorsto.\n&quot;;
9327 }
9328 }
9329
9330 sub fetch_dell_fw {
9331 my $path = shift;
9332 my $url = &quot;ftp://ftp.us.dell.com/$path&quot;;
9333 download($url);
9334 }
9335
9336 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
9337 # firmware packages to download from Dell. Only work for Linux
9338 # machines and 11th generation Dell servers.
9339 sub fetch_dell_fw_list {
9340 my $filename = shift;
9341
9342 my $product = `dmidecode -s system-product-name`;
9343 chomp $product;
9344 my ($mybrand, $mymodel) = split(/\s+/, $product);
9345
9346 print STDERR &quot;Finding firmware bundles for $mybrand $mymodel\n&quot;;
9347
9348 my $xml = XMLin($filename);
9349 my @paths;
9350 for my $bundle (@{$xml-&gt;{SoftwareBundle}}) {
9351 my $brand = $bundle-&gt;{TargetSystems}-&gt;{Brand}-&gt;{Display}-&gt;{content};
9352 my $model = $bundle-&gt;{TargetSystems}-&gt;{Brand}-&gt;{Model}-&gt;{Display}-&gt;{content};
9353 my $oscode;
9354 if (&quot;ARRAY&quot; eq ref $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}) {
9355 $oscode = $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}[0]-&gt;{osCode};
9356 } else {
9357 $oscode = $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}-&gt;{osCode};
9358 }
9359 if ($mybrand eq $brand &amp;&amp; $mymodel eq $model &amp;&amp; &quot;LIN&quot; eq $oscode)
9360 {
9361 @paths = map { $_-&gt;{path} } @{$bundle-&gt;{Contents}-&gt;{Package}};
9362 }
9363 }
9364 for my $component (@{$xml-&gt;{SoftwareComponent}}) {
9365 my $componenttype = $component-&gt;{ComponentType}-&gt;{value};
9366
9367 # Drop application packages, only firmware and BIOS
9368 next if &#39;APAC&#39; eq $componenttype;
9369
9370 my $cpath = $component-&gt;{path};
9371 for my $path (@paths) {
9372 if ($cpath =~ m%/$path$%) {
9373 push(@paths, $cpath);
9374 }
9375 }
9376 }
9377 return @paths;
9378 }
9379 &lt;/pre&gt;
9380
9381 &lt;p&gt;The code is only tested on RedHat Enterprise Linux, but I suspect
9382 it could work on other platforms with some tweaking. Anyone know a
9383 index like Catalog.xml is available from HP for HP servers? At the
9384 moment I maintain a similar list manually and it is quickly getting
9385 outdated.&lt;/p&gt;
9386 </description>
9387 </item>
9388
9389 <item>
9390 <title>How is booting into runlevel 1 different from single user boots?</title>
9391 <link>https://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html</link>
9392 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html</guid>
9393 <pubDate>Thu, 4 Aug 2011 12:40:00 +0200</pubDate>
9394 <description>&lt;p&gt;Wouter Verhelst have some
9395 &lt;a href=&quot;http://grep.be/blog/en/retorts/pere_kubuntu_boot&quot;&gt;interesting
9396 comments and opinions&lt;/a&gt; on my blog post on
9397 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html&quot;&gt;the
9398 need to clean up /etc/rcS.d/ in Debian&lt;/a&gt; and my blog post about
9399 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html&quot;&gt;the
9400 default KDE desktop in Debian&lt;/a&gt;. I only have time to address one
9401 small piece of his comment now, and though it best to address the
9402 misunderstanding he bring forward:&lt;/p&gt;
9403
9404 &lt;p&gt;&lt;blockquote&gt;
9405 Currently, a system admin has four options: [...] boot to a
9406 single-user system (by adding &#39;single&#39; to the kernel command line;
9407 this runs rcS and rc1 scripts)
9408 &lt;/blockquote&gt;&lt;/p&gt;
9409
9410 &lt;p&gt;This make me believe Wouter believe booting into single user mode
9411 and booting into runlevel 1 is the same. I am not surprised he
9412 believe this, because it would make sense and is a quite sensible
9413 thing to believe. But because the boot in Debian is slightly broken,
9414 runlevel 1 do not work properly and it isn&#39;t the same as single user
9415 mode. I&#39;ll try to explain what is actually happing, but it is a bit
9416 hard to explain.&lt;/p&gt;
9417
9418 &lt;p&gt;Single user mode is defined like this in /etc/inittab:
9419 &quot;&lt;tt&gt;~~:S:wait:/sbin/sulogin&lt;/tt&gt;&quot;. This means the only thing that is
9420 executed in single user mode is sulogin. Single user mode is a boot
9421 state &quot;between&quot; the runlevels, and when booting into single user mode,
9422 only the scripts in /etc/rcS.d/ are executed before the init process
9423 enters the single user state. When switching to runlevel 1, the state
9424 is in fact not ending in runlevel 1, but it passes through runlevel 1
9425 and end up in the single user mode (see /etc/rc1.d/S03single, which
9426 runs &quot;init -t1 S&quot; to switch to single user mode at the end of runlevel
9427 1. It is confusing that the &#39;S&#39; (single user) init mode is not the
9428 mode enabled by /etc/rcS.d/ (which is more like the initial boot
9429 mode).&lt;/p&gt;
9430
9431 &lt;p&gt;This summary might make it clearer. When booting for the first
9432 time into single user mode, the following commands are executed:
9433 &quot;&lt;tt&gt;/etc/init.d/rc S; /sbin/sulogin&lt;/tt&gt;&quot;. When booting into
9434 runlevel 1, the following commands are executed: &quot;&lt;tt&gt;/etc/init.d/rc
9435 S; /etc/init.d/rc 1; /sbin/sulogin&lt;/tt&gt;&quot;. A problem show up when
9436 trying to continue after visiting single user mode. Not all services
9437 are started again as they should, causing the machine to end up in an
9438 unpredicatble state. This is why Debian admins recommend rebooting
9439 after visiting single user mode.&lt;/p&gt;
9440
9441 &lt;p&gt;A similar problem with runlevel 1 is caused by the amount of
9442 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
9443 to runlevel 1, the services started from /etc/rcS.d/ are not properly
9444 stopped when passing through the scripts in /etc/rc1.d/, and not
9445 started again when switching away from runlevel 1 to the runlevels
9446 2-5. I believe the problem is best fixed by moving all the scripts
9447 out of /etc/rcS.d/ that are not &lt;strong&gt;required&lt;/strong&gt; to get a
9448 functioning single user mode during boot.&lt;/p&gt;
9449
9450 &lt;p&gt;I have spent several years investigating the Debian boot system,
9451 and discovered this problem a few years ago. I suspect it originates
9452 from when sysvinit was introduced into Debian, a long time ago.&lt;/p&gt;
9453 </description>
9454 </item>
9455
9456 <item>
9457 <title>What should start from /etc/rcS.d/ in Debian? - almost nothing</title>
9458 <link>https://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html</link>
9459 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html</guid>
9460 <pubDate>Sat, 30 Jul 2011 14:00:00 +0200</pubDate>
9461 <description>&lt;p&gt;In the Debian boot system, several packages include scripts that
9462 are started from /etc/rcS.d/. In fact, there is a bite more of them
9463 than make sense, and this causes a few problems. What kind of
9464 problems, you might ask. There are at least two problems. The first
9465 is that it is not possible to recover a machine after switching to
9466 runlevel 1. One need to actually reboot to get the machine back to
9467 the expected state. The other is that single user boot will sometimes
9468 run into problems because some of the subsystems are activated before
9469 the root login is presented, causing problems when trying to recover a
9470 machine from a problem in that subsystem. A minor additional point is
9471 that moving more scripts out of rcS.d/ and into the other rc#.d/
9472 directories will increase the amount of scripts that can run in
9473 parallel during boot, and thus decrease the boot time.&lt;/p&gt;
9474
9475 &lt;p&gt;So, which scripts should start from rcS.d/. In short, only the
9476 scripts that _have_ to execute before the root login prompt is
9477 presented during a single user boot should go there. Everything else
9478 should go into the numeric runlevels. This means things like
9479 lm-sensors, fuse and x11-common should not run from rcS.d, but from
9480 the numeric runlevels. Today in Debian, there are around 115 init.d
9481 scripts that are started from rcS.d/, and most of them should be moved
9482 out. Do your package have one of them? Please help us make single
9483 user and runlevel 1 better by moving it.&lt;/p&gt;
9484
9485 &lt;p&gt;Scripts setting up the screen, keyboard, system partitions
9486 etc. should still be started from rcS.d/, but there is for example no
9487 need to have the network enabled before the single user login prompt
9488 is presented.&lt;/p&gt;
9489
9490 &lt;p&gt;As always, things are not so easy to fix as they sound. To keep
9491 Debian systems working while scripts migrate and during upgrades, the
9492 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
9493 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
9494 and the next ones can only be moved when their dependencies have been
9495 moved first. This migration must be done sequentially while we ensure
9496 that the package system upgrade packages in the right order to keep
9497 the system state correct. This will require some coordination when it
9498 comes to network related packages, but most of the packages with
9499 scripts that should migrate do not have anything in rcS.d/ depending
9500 on them. Some packages have already been updated, like the sudo
9501 package, while others are still left to do. I wish I had time to work
9502 on this myself, but real live constrains make it unlikely that I will
9503 find time to push this forward.&lt;/p&gt;
9504 </description>
9505 </item>
9506
9507 <item>
9508 <title>What is missing in the Debian desktop, or why my parents use Kubuntu</title>
9509 <link>https://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html</link>
9510 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html</guid>
9511 <pubDate>Fri, 29 Jul 2011 08:10:00 +0200</pubDate>
9512 <description>&lt;p&gt;While at Debconf11, I have several times during discussions
9513 mentioned the issues I believe should be improved in Debian for its
9514 desktop to be useful for more people. The use case for this is my
9515 parents, which are currently running Kubuntu which solve the
9516 issues.&lt;/p&gt;
9517
9518 &lt;p&gt;I suspect these four missing features are not very hard to
9519 implement. After all, they are present in Ubuntu, so if we wanted to
9520 do this in Debian we would have a source.&lt;/p&gt;
9521
9522 &lt;ol&gt;
9523
9524 &lt;li&gt;&lt;strong&gt;Simple GUI based upgrade of packages.&lt;/strong&gt; When there
9525 are new packages available for upgrades, a icon in the KDE status bar
9526 indicate this, and clicking on it will activate the simple upgrade
9527 tool to handle it. I have no problem guiding both of my parents
9528 through the process over the phone. If a kernel reboot is required,
9529 this too is indicated by the status bars and the upgrade tool. Last
9530 time I checked, nothing with the same features was working in KDE in
9531 Debian.&lt;/li&gt;
9532
9533 &lt;li&gt;&lt;strong&gt;Simple handling of missing Firefox browser
9534 plugins.&lt;/strong&gt; When the browser encounter a MIME type it do not
9535 currently have a handler for, it will ask the user if the system
9536 should search for a package that would add support for this MIME type,
9537 and if the user say yes, the APT sources will be searched for packages
9538 advertising the MIME type in their control file (visible in the
9539 Packages file in the APT archive). If one or more packages are found,
9540 it is a simple click of the mouse to add support for the missing mime
9541 type. If the package require the user to accept some non-free
9542 license, this is explained to the user. The entire process make it
9543 more clear to the user why something do not work in the browser, and
9544 make the chances higher for the user to blame the web page authors and
9545 not the browser for any missing features.&lt;/li&gt;
9546
9547 &lt;li&gt;&lt;strong&gt;Simple handling of missing multimedia codec/format
9548 handlers.&lt;/strong&gt; When the media players encounter a format or codec
9549 it is not supporting, a dialog pop up asking the user if the system
9550 should search for a package that would add support for it. This
9551 happen with things like MP3, Windows Media or H.264. The selection
9552 and installation procedure is very similar to the Firefox browser
9553 plugin handling. This is as far as I know implemented using a
9554 gstreamer hook. The end result is that the user easily get access to
9555 the codecs that are present from the APT archives available, while
9556 explaining more on why a given format is unsupported by Ubuntu.&lt;/li&gt;
9557
9558 &lt;li&gt;&lt;strong&gt;Better browser handling of some MIME types.&lt;/strong&gt; When
9559 displaying a text/plain file in my Debian browser, it will propose to
9560 start emacs to show it. If I remember correctly, when doing the same
9561 in Kunbutu it show the file as a text file in the browser. At least I
9562 know Opera will show text files within the browser. I much prefer the
9563 latter behaviour.&lt;/li&gt;
9564
9565 &lt;/ol&gt;
9566
9567 &lt;p&gt;There are other nice features as well, like the simplified suite
9568 upgrader, but given that I am the one mostly doing the dist-upgrade,
9569 it do not matter much.&lt;/p&gt;
9570
9571 &lt;p&gt;I really hope we could get these features in place for the next
9572 Debian release. It would require the coordinated effort of several
9573 maintainers, but would make the end user experience a lot better.&lt;/p&gt;
9574 </description>
9575 </item>
9576
9577 <item>
9578 <title>Perl modules used by FixMyStreet which are missing in Debian/Squeeze</title>
9579 <link>https://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html</link>
9580 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html</guid>
9581 <pubDate>Tue, 26 Jul 2011 12:25:00 +0200</pubDate>
9582 <description>&lt;p&gt;The Norwegian &lt;a href=&quot;http://www.fiksgatami.no/&quot;&gt;FiksGataMi&lt;/A&gt;
9583 site is build on Debian/Squeeze, and this platform was chosen because
9584 I am most familiar with Debian (being a Debian Developer for around 10
9585 years) because it is the latest stable Debian release which should get
9586 security support for a few years.&lt;/p&gt;
9587
9588 &lt;p&gt;The web service is written in Perl, and depend on some perl modules
9589 that are missing in Debian at the moment. It would be great if these
9590 modules were added to the Debian archive, allowing anyone to set up
9591 their own &lt;a href=&quot;http://www.fixmystreet.com&quot;&gt;FixMyStreet&lt;/a&gt; clone
9592 in their own country using only Debian packages. The list of modules
9593 missing in Debian/Squeeze isn&#39;t very long, and I hope the perl group
9594 will find time to package the 12 modules Catalyst::Plugin::SmartURI,
9595 Catalyst::Plugin::Unicode::Encoding, Catalyst::View::TT, Devel::Hide,
9596 Sort::Key, Statistics::Distributions, Template::Plugin::Comma,
9597 Template::Plugin::DateTime::Format, Term::Size::Any, Term::Size::Perl,
9598 URI::SmartURI and Web::Scraper to make the maintenance of FixMyStreet
9599 easier in the future.&lt;/p&gt;
9600
9601 &lt;p&gt;Thanks to the great tools in Debian, getting the missing modules
9602 installed on my server was a simple call to &#39;cpan2deb Module::Name&#39;
9603 and &#39;dpkg -i&#39; to install the resulting package. But this leave me
9604 with the responsibility of tracking security problems, which I really
9605 do not have time for.&lt;/p&gt;
9606 </description>
9607 </item>
9608
9609 <item>
9610 <title>A Norwegian FixMyStreet have kept me busy the last few weeks</title>
9611 <link>https://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html</link>
9612 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html</guid>
9613 <pubDate>Sun, 3 Apr 2011 22:50:00 +0200</pubDate>
9614 <description>&lt;p&gt;Here is a small update for my English readers. Most of my blog
9615 posts have been in Norwegian the last few weeks, so here is a short
9616 update in English.&lt;/p&gt;
9617
9618 &lt;p&gt;The kids still keep me too busy to get much free software work
9619 done, but I did manage to organise a project to get a Norwegian port
9620 of the British service
9621 &lt;a href=&quot;http://www.fixmystreet.com/&quot;&gt;FixMyStreet&lt;/a&gt; up and running,
9622 and it has been running for a month now. The entire project has been
9623 organised by me and two others. Around Christmas we gathered sponsors
9624 to fund the development work. In January I drafted a contract with
9625 &lt;a href=&quot;http://www.mysociety.org/&quot;&gt;mySociety&lt;/a&gt; on what to develop,
9626 and in February the development took place. Most of it involved
9627 converting the source to use GPS coordinates instead of British
9628 easting/northing, and the resulting code should be a lot easier to get
9629 running in any country by now. The Norwegian
9630 &lt;a href=&quot;http://www.fiksgatami.no/&quot;&gt;FiksGataMi&lt;/a&gt; is using
9631 &lt;a href=&quot;http://www.openstreetmap.org/&quot;&gt;OpenStreetmap&lt;/a&gt; as the map
9632 source and the source for administrative borders in Norway, and
9633 support for this had to be added/fixed.&lt;/p&gt;
9634
9635 &lt;p&gt;The Norwegian version went live March 3th, and we spent the weekend
9636 polishing the system before we announced it March 7th. The system is
9637 running on a KVM instance of Debian/Squeeze, and has seen almost 3000
9638 problem reports in a few weeks. Soon we hope to announce the Android
9639 and iPhone versions making it even easier to report problems with the
9640 public infrastructure.&lt;/p&gt;
9641
9642 &lt;p&gt;Perhaps something to consider for those of you in countries without
9643 such service?&lt;/p&gt;
9644 </description>
9645 </item>
9646
9647 <item>
9648 <title>Using NVD and CPE to track CVEs in locally maintained software</title>
9649 <link>https://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html</link>
9650 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html</guid>
9651 <pubDate>Fri, 28 Jan 2011 15:40:00 +0100</pubDate>
9652 <description>&lt;p&gt;The last few days I have looked at ways to track open security
9653 issues here at my work with the University of Oslo. My idea is that
9654 it should be possible to use the information about security issues
9655 available on the Internet, and check our locally
9656 maintained/distributed software against this information. It should
9657 allow us to verify that no known security issues are forgotten. The
9658 CVE database listing vulnerabilities seem like a great central point,
9659 and by using the package lists from Debian mapped to CVEs provided by
9660 the testing security team, I believed it should be possible to figure
9661 out which security holes were present in our free software
9662 collection.&lt;/p&gt;
9663
9664 &lt;p&gt;After reading up on the topic, it became obvious that the first
9665 building block is to be able to name software packages in a unique and
9666 consistent way across data sources. I considered several ways to do
9667 this, for example coming up with my own naming scheme like using URLs
9668 to project home pages or URLs to the Freshmeat entries, or using some
9669 existing naming scheme. And it seem like I am not the first one to
9670 come across this problem, as MITRE already proposed and implemented a
9671 solution. Enter the &lt;a href=&quot;http://cpe.mitre.org/index.html&quot;&gt;Common
9672 Platform Enumeration&lt;/a&gt; dictionary, a vocabulary for referring to
9673 software, hardware and other platform components. The CPE ids are
9674 mapped to CVEs in the &lt;a href=&quot;http://web.nvd.nist.gov/&quot;&gt;National
9675 Vulnerability Database&lt;/a&gt;, allowing me to look up know security
9676 issues for any CPE name. With this in place, all I need to do is to
9677 locate the CPE id for the software packages we use at the university.
9678 This is fairly trivial (I google for &#39;cve cpe $package&#39; and check the
9679 NVD entry if a CVE for the package exist).&lt;/p&gt;
9680
9681 &lt;p&gt;To give you an example. The GNU gzip source package have the CPE
9682 name cpe:/a:gnu:gzip. If the old version 1.3.3 was the package to
9683 check out, one could look up
9684 &lt;a href=&quot;http://web.nvd.nist.gov/view/vuln/search?cpe=cpe%3A%2Fa%3Agnu%3Agzip:1.3.3&quot;&gt;cpe:/a:gnu:gzip:1.3.3
9685 in NVD&lt;/a&gt; and get a list of 6 security holes with public CVE entries.
9686 The most recent one is
9687 &lt;a href=&quot;http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-0001&quot;&gt;CVE-2010-0001&lt;/a&gt;,
9688 and at the bottom of the NVD page for this vulnerability the complete
9689 list of affected versions is provided.&lt;/p&gt;
9690
9691 &lt;p&gt;The NVD database of CVEs is also available as a XML dump, allowing
9692 for offline processing of issues. Using this dump, I&#39;ve written a
9693 small script taking a list of CPEs as input and list all CVEs
9694 affecting the packages represented by these CPEs. One give it CPEs
9695 with version numbers as specified above and get a list of open
9696 security issues out.&lt;/p&gt;
9697
9698 &lt;p&gt;Of course for this approach to be useful, the quality of the NVD
9699 information need to be high. For that to happen, I believe as many as
9700 possible need to use and contribute to the NVD database. I notice
9701 RHEL is providing
9702 &lt;a href=&quot;https://www.redhat.com/security/data/metrics/rhsamapcpe.txt&quot;&gt;a
9703 map from CVE to CPE&lt;/a&gt;, indicating that they are using the CPE
9704 information. I&#39;m not aware of Debian and Ubuntu doing the same.&lt;/p&gt;
9705
9706 &lt;p&gt;To get an idea about the quality for free software, I spent some
9707 time making it possible to compare the CVE database from Debian with
9708 the CVE database in NVD. The result look fairly good, but there are
9709 some inconsistencies in NVD (same software package having several
9710 CPEs), and some inaccuracies (NVD not mentioning buggy packages that
9711 Debian believe are affected by a CVE). Hope to find time to improve
9712 the quality of NVD, but that require being able to get in touch with
9713 someone maintaining it. So far my three emails with questions and
9714 corrections have not seen any reply, but I hope contact can be
9715 established soon.&lt;/p&gt;
9716
9717 &lt;p&gt;An interesting application for CPEs is cross platform package
9718 mapping. It would be useful to know which packages in for example
9719 RHEL, OpenSuSe and Mandriva are missing from Debian and Ubuntu, and
9720 this would be trivial if all linux distributions provided CPE entries
9721 for their packages.&lt;/p&gt;
9722 </description>
9723 </item>
9724
9725 <item>
9726 <title>Which module is loaded for a given PCI and USB device?</title>
9727 <link>https://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html</link>
9728 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html</guid>
9729 <pubDate>Sun, 23 Jan 2011 00:20:00 +0100</pubDate>
9730 <description>&lt;p&gt;In the
9731 &lt;a href=&quot;http://packages.qa.debian.org/discover-data&quot;&gt;discover-data&lt;/a&gt;
9732 package in Debian, there is a script to report useful information
9733 about the running hardware for use when people report missing
9734 information. One part of this script that I find very useful when
9735 debugging hardware problems, is the part mapping loaded kernel module
9736 to the PCI device it claims. It allow me to quickly see if the kernel
9737 module I expect is driving the hardware I am struggling with. To see
9738 the output, make sure discover-data is installed and run
9739 &lt;tt&gt;/usr/share/bug/discover-data 3&gt;&amp;1&lt;/tt&gt;. The relevant output on
9740 one of my machines like this:&lt;/p&gt;
9741
9742 &lt;pre&gt;
9743 loaded modules:
9744 10de:03eb i2c_nforce2
9745 10de:03f1 ohci_hcd
9746 10de:03f2 ehci_hcd
9747 10de:03f0 snd_hda_intel
9748 10de:03ec pata_amd
9749 10de:03f6 sata_nv
9750 1022:1103 k8temp
9751 109e:036e bttv
9752 109e:0878 snd_bt87x
9753 11ab:4364 sky2
9754 &lt;/pre&gt;
9755
9756 &lt;p&gt;The code in question look like this, slightly modified for
9757 readability and to drop the output to file descriptor 3:&lt;/p&gt;
9758
9759 &lt;pre&gt;
9760 if [ -d /sys/bus/pci/devices/ ] ; then
9761 echo loaded pci modules:
9762 (
9763 cd /sys/bus/pci/devices/
9764 for address in * ; do
9765 if [ -d &quot;$address/driver/module&quot; ] ; then
9766 module=`cd $address/driver/module ; pwd -P | xargs basename`
9767 if grep -q &quot;^$module &quot; /proc/modules ; then
9768 address=$(echo $address |sed s/0000://)
9769 id=`lspci -n -s $address | tail -n 1 | awk &#39;{print $3}&#39;`
9770 echo &quot;$id $module&quot;
9771 fi
9772 fi
9773 done
9774 )
9775 echo
9776 fi
9777 &lt;/pre&gt;
9778
9779 &lt;p&gt;Similar code could be used to extract USB device module
9780 mappings:&lt;/p&gt;
9781
9782 &lt;pre&gt;
9783 if [ -d /sys/bus/usb/devices/ ] ; then
9784 echo loaded usb modules:
9785 (
9786 cd /sys/bus/usb/devices/
9787 for address in * ; do
9788 if [ -d &quot;$address/driver/module&quot; ] ; then
9789 module=`cd $address/driver/module ; pwd -P | xargs basename`
9790 if grep -q &quot;^$module &quot; /proc/modules ; then
9791 address=$(echo $address |sed s/0000://)
9792 id=$(lsusb -s $address | tail -n 1 | awk &#39;{print $6}&#39;)
9793 if [ &quot;$id&quot; ] ; then
9794 echo &quot;$id $module&quot;
9795 fi
9796 fi
9797 fi
9798 done
9799 )
9800 echo
9801 fi
9802 &lt;/pre&gt;
9803
9804 &lt;p&gt;This might perhaps be something to include in other tools as
9805 well.&lt;/p&gt;
9806 </description>
9807 </item>
9808
9809 <item>
9810 <title>How to test if a laptop is working with Linux</title>
9811 <link>https://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html</link>
9812 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html</guid>
9813 <pubDate>Wed, 22 Dec 2010 14:55:00 +0100</pubDate>
9814 <description>&lt;p&gt;The last few days I have spent at work here at the &lt;a
9815 href=&quot;http://www.uio.no/&quot;&gt;University of Oslo&lt;/a&gt; testing if the new
9816 batch of computers will work with Linux. Every year for the last few
9817 years the university have organised shared bid of a few thousand
9818 computers, and this year HP won the bid. Two different desktops and
9819 five different laptops are on the list this year. We in the UNIX
9820 group want to know which one of these computers work well with RHEL
9821 and Ubuntu, the two Linux distributions we currently handle at the
9822 university.&lt;/p&gt;
9823
9824 &lt;p&gt;My test method is simple, and I share it here to get feedback and
9825 perhaps inspire others to test hardware as well. To test, I PXE
9826 install the OS version of choice, and log in as my normal user and run
9827 a few applications and plug in selected pieces of hardware. When
9828 something fail, I make a note about this in the test matrix and move
9829 on. If I have some spare time I try to report the bug to the OS
9830 vendor, but as I only have the machines for a short time, I rarely
9831 have the time to do this for all the problems I find.&lt;/p&gt;
9832
9833 &lt;p&gt;Anyway, to get to the point of this post. Here is the simple tests
9834 I perform on a new model.&lt;/p&gt;
9835
9836 &lt;ul&gt;
9837
9838 &lt;li&gt;Is PXE installation working? I&#39;m testing with RHEL6, Ubuntu Lucid
9839 and Ubuntu Maverik at the moment. If I feel like it, I also test with
9840 RHEL5 and Debian Edu/Squeeze.&lt;/li&gt;
9841
9842 &lt;li&gt;Is X.org working? If the graphical login screen show up after
9843 installation, X.org is working.&lt;/li&gt;
9844
9845 &lt;li&gt;Is hardware accelerated OpenGL working? Running glxgears (in
9846 package mesa-utils on Ubuntu) and writing down the frames per second
9847 reported by the program.&lt;/li&gt;
9848
9849 &lt;li&gt;Is sound working? With Gnome and KDE, a sound is played when
9850 logging in, and if I can hear this the test is successful. If there
9851 are several audio exits on the machine, I try them all and check if
9852 the Gnome/KDE audio mixer can control where to send the sound. I
9853 normally test this by playing
9854 &lt;a href=&quot;http://www.nuug.no/aktiviteter/20101012-chef/ &quot;&gt;a HTML5
9855 video&lt;/a&gt; in Firefox/Iceweasel.&lt;/li&gt;
9856
9857 &lt;li&gt;Is the USB subsystem working? I test this by plugging in a USB
9858 memory stick and see if Gnome/KDE notices this.&lt;/li&gt;
9859
9860 &lt;li&gt;Is the CD/DVD player working? I test this by inserting any CD/DVD
9861 I have lying around, and see if Gnome/KDE notices this.&lt;/li&gt;
9862
9863 &lt;li&gt;Is any built in camera working? Test using cheese, and see if a
9864 picture from the v4l device show up.&lt;/li&gt;
9865
9866 &lt;li&gt;Is bluetooth working? Use the Gnome/KDE browsing tool to see if
9867 any bluetooth devices are discovered. In my office, I normally see a
9868 few.&lt;/li&gt;
9869
9870 &lt;li&gt;For laptops, is the SD or Compaq Flash reader working. I have
9871 memory modules lying around, and stick them in and see if Gnome/KDE
9872 notice this.&lt;/li&gt;
9873
9874 &lt;li&gt;For laptops, is suspend/hibernate working? I&#39;m testing if the
9875 special button work, and if the laptop continue to work after
9876 resume.&lt;/li&gt;
9877
9878 &lt;li&gt;For laptops, is the extra buttons working, like audio level,
9879 adjusting background light, switching on/off external video output,
9880 switching on/off wifi, bluetooth, etc? The set of buttons differ from
9881 laptop to laptop, so I just write down which are working and which are
9882 not.&lt;/li&gt;
9883
9884 &lt;li&gt;Some laptops have smart card readers, finger print readers,
9885 acceleration sensors etc. I rarely test these, as I do not know how
9886 to quickly test if they are working or not, so I only document their
9887 existence.&lt;/li&gt;
9888
9889 &lt;/ul&gt;
9890
9891 &lt;p&gt;By now I suspect you are really curious what the test results are
9892 for the HP machines I am testing. I&#39;m not done yet, so I will report
9893 the test results later. For now I can report that HP 8100 Elite work
9894 fine, and hibernation fail with HP EliteBook 8440p on Ubuntu Lucid,
9895 and audio fail on RHEL6. Ubuntu Maverik worked with 8440p. As you
9896 can see, I have most machines left to test. One interesting
9897 observation is that Ubuntu Lucid has almost twice the frame rate than
9898 RHEL6 with glxgears. No idea why.&lt;/p&gt;
9899 </description>
9900 </item>
9901
9902 <item>
9903 <title>Some thoughts on BitCoins</title>
9904 <link>https://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html</link>
9905 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html</guid>
9906 <pubDate>Sat, 11 Dec 2010 15:10:00 +0100</pubDate>
9907 <description>&lt;p&gt;As I continue to explore
9908 &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;BitCoin&lt;/a&gt;, I&#39;ve starting to wonder
9909 what properties the system have, and how it will be affected by laws
9910 and regulations here in Norway. Here are some random notes.&lt;/p&gt;
9911
9912 &lt;p&gt;One interesting thing to note is that since the transactions are
9913 verified using a peer to peer network, all details about a transaction
9914 is known to everyone. This means that if a BitCoin address has been
9915 published like I did with mine in my initial post about BitCoin, it is
9916 possible for everyone to see how many BitCoins have been transfered to
9917 that address. There is even a web service to look at the details for
9918 all transactions. There I can see that my address
9919 &lt;a href=&quot;http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;
9920 have received 16.06 Bitcoin, the
9921 &lt;a href=&quot;http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3&quot;&gt;1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3&lt;/a&gt;
9922 address of Simon Phipps have received 181.97 BitCoin and the address
9923 &lt;a href=&quot;http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt&quot;&gt;1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt&lt;/A&gt;
9924 of EFF have received 2447.38 BitCoins so far. Thank you to each and
9925 every one of you that donated bitcoins to support my activity. The
9926 fact that anyone can see how much money was transfered to a given
9927 address make it more obvious why the BitCoin community recommend to
9928 generate and hand out a new address for each transaction. I&#39;m told
9929 there is no way to track which addresses belong to a given person or
9930 organisation without the person or organisation revealing it
9931 themselves, as Simon, EFF and I have done.&lt;/p&gt;
9932
9933 &lt;p&gt;In Norway, and in most other countries, there are laws and
9934 regulations limiting how much money one can transfer across the border
9935 without declaring it. There are money laundering, tax and accounting
9936 laws and regulations I would expect to apply to the use of BitCoin.
9937 If the Skolelinux foundation
9938 (&lt;a href=&quot;http://linuxiskolen.no/slxdebianlabs/donations.html&quot;&gt;SLX
9939 Debian Labs&lt;/a&gt;) were to accept donations in BitCoin in addition to
9940 normal bank transfers like EFF is doing, how should this be accounted?
9941 Given that it is impossible to know if money can cross the border or
9942 not, should everything or nothing be declared? What exchange rate
9943 should be used when calculating taxes? Would receivers have to pay
9944 income tax if the foundation were to pay Skolelinux contributors in
9945 BitCoin? I have no idea, but it would be interesting to know.&lt;/p&gt;
9946
9947 &lt;p&gt;For a currency to be useful and successful, it must be trusted and
9948 accepted by a lot of users. It must be possible to get easy access to
9949 the currency (as a wage or using currency exchanges), and it must be
9950 easy to spend it. At the moment BitCoin seem fairly easy to get
9951 access to, but there are very few places to spend it. I am not really
9952 a regular user of any of the vendor types currently accepting BitCoin,
9953 so I wonder when my kind of shop would start accepting BitCoins. I
9954 would like to buy electronics, travels and subway tickets, not herbs
9955 and books. :) The currency is young, and this will improve over time
9956 if it become popular, but I suspect regular banks will start to lobby
9957 to get BitCoin declared illegal if it become popular. I&#39;m sure they
9958 will claim it is helping fund terrorism and money laundering (which
9959 probably would be true, as is any currency in existence), but I
9960 believe the problems should be solved elsewhere and not by blaming
9961 currencies.&lt;/p&gt;
9962
9963 &lt;p&gt;The process of creating new BitCoins is called mining, and it is
9964 CPU intensive process that depend on a bit of luck as well (as one is
9965 competing against all the other miners currently spending CPU cycles
9966 to see which one get the next lump of cash). The &quot;winner&quot; get 50
9967 BitCoin when this happen. Yesterday I came across the obvious way to
9968 join forces to increase ones changes of getting at least some coins,
9969 by coordinating the work on mining BitCoins across several machines
9970 and people, and sharing the result if one is lucky and get the 50
9971 BitCoins. Check out
9972 &lt;a href=&quot;http://www.bluishcoder.co.nz/bitcoin-pool/&quot;&gt;BitCoin Pool&lt;/a&gt;
9973 if this sounds interesting. I have not had time to try to set up a
9974 machine to participate there yet, but have seen that running on ones
9975 own for a few days have not yield any BitCoins througth mining
9976 yet.&lt;/p&gt;
9977
9978 &lt;p&gt;Update 2010-12-15: Found an &lt;a
9979 href=&quot;http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi&quot;&gt;interesting
9980 criticism&lt;/a&gt; of bitcoin. Not quite sure how valid it is, but thought
9981 it was interesting to read. The arguments presented seem to be
9982 equally valid for gold, which was used as a currency for many years.&lt;/p&gt;
9983 </description>
9984 </item>
9985
9986 <item>
9987 <title>Now accepting bitcoins - anonymous and distributed p2p crypto-money</title>
9988 <link>https://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html</link>
9989 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html</guid>
9990 <pubDate>Fri, 10 Dec 2010 08:20:00 +0100</pubDate>
9991 <description>&lt;p&gt;With this weeks lawless
9992 &lt;a href=&quot;http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html&quot;&gt;governmental
9993 attacks&lt;/a&gt; on Wikileak and
9994 &lt;a href=&quot;http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech&quot;&gt;free
9995 speech&lt;/a&gt;, it has become obvious that PayPal, visa and mastercard can
9996 not be trusted to handle money transactions.
9997 A blog post from
9998 &lt;a href=&quot;http://webmink.com/2010/12/06/now-accepting-bitcoin/&quot;&gt;Simon
9999 Phipps on bitcoin&lt;/a&gt; reminded me about a project that a friend of
10000 mine mentioned earlier. I decided to follow Simon&#39;s example, and get
10001 involved with &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;BitCoin&lt;/a&gt;. I got
10002 some help from my friend to get it all running, and he even handed me
10003 some bitcoins to get started. I even donated a few bitcoins to Simon
10004 for helping me remember BitCoin.&lt;/p&gt;
10005
10006 &lt;p&gt;So, what is bitcoins, you probably wonder? It is a digital
10007 crypto-currency, decentralised and handled using peer-to-peer
10008 networks. It allows anonymous transactions and prohibits central
10009 control over the transactions, making it impossible for governments
10010 and companies alike to block donations and other transactions. The
10011 source is free software, and while the key dependency wxWidgets 2.9
10012 for the graphical user interface is missing in Debian, the command
10013 line client builds just fine. Hopefully Jonas
10014 &lt;a href=&quot;http://bugs.debian.org/578157&quot;&gt;will get the package into
10015 Debian&lt;/a&gt; soon.&lt;/p&gt;
10016
10017 &lt;p&gt;Bitcoins can be converted to other currencies, like USD and EUR.
10018 There are &lt;a href=&quot;http://www.bitcoin.org/trade&quot;&gt;companies accepting
10019 bitcoins&lt;/a&gt; when selling services and goods, and there are even
10020 currency &quot;stock&quot; markets where the exchange rate is decided. There
10021 are not many users so far, but the concept seems promising. If you
10022 want to get started and lack a friend with any bitcoins to spare,
10023 you can even get
10024 &lt;a href=&quot;https://freebitcoins.appspot.com/&quot;&gt;some for free&lt;/a&gt; (0.05
10025 bitcoin at the time of writing). Use
10026 &lt;a href=&quot;http://www.bitcoinwatch.com/&quot;&gt;BitcoinWatch&lt;/a&gt; to keep an eye
10027 on the current exchange rates.&lt;/p&gt;
10028
10029 &lt;p&gt;As an experiment, I have decided to set up bitcoind on one of my
10030 machines. If you want to support my activity, please send Bitcoin
10031 donations to the address
10032 &lt;b&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/b&gt;. Thank you!&lt;/p&gt;
10033 </description>
10034 </item>
10035
10036 <item>
10037 <title>Why isn&#39;t Debian Edu using VLC?</title>
10038 <link>https://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html</link>
10039 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html</guid>
10040 <pubDate>Sat, 27 Nov 2010 11:30:00 +0100</pubDate>
10041 <description>&lt;p&gt;In the latest issue of Linux Journal, the readers choices were
10042 presented, and the winner among the multimedia player were VLC.
10043 Personally, I like VLC, and it is my player of choice when I first try
10044 to play a video file or stream. Only if VLC fail will I drag out
10045 gmplayer to see if it can do better. The reason is mostly the failure
10046 model and trust. When VLC fail, it normally pop up a error message
10047 reporting the problem. When mplayer fail, it normally segfault or
10048 just hangs. The latter failure mode drain my trust in the program.&lt;p&gt;
10049
10050 &lt;p&gt;But even if VLC is my player of choice, we have choosen to use
10051 mplayer in &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian
10052 Edu/Skolelinux&lt;/a&gt;. The reason is simple. We need a good browser
10053 plugin to play web videos seamlessly, and the VLC browser plugin is
10054 not very good. For example, it lack in-line control buttons, so there
10055 is no way for the user to pause the video. Also, when I
10056 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;last
10057 tested the browser plugins&lt;/a&gt; available in Debian, the VLC plugin
10058 failed on several video pages where mplayer based plugins worked. If
10059 the browser plugin for VLC was as good as the gecko-mediaplayer
10060 package (which uses mplayer), we would switch.&lt;/P&gt;
10061
10062 &lt;p&gt;While VLC is a good player, its user interface is slightly
10063 annoying. The most annoying feature is its inconsistent use of
10064 keyboard shortcuts. When the player is in full screen mode, its
10065 shortcuts are different from when it is playing the video in a window.
10066 For example, space only work as pause when in full screen mode. I
10067 wish it had consisten shortcuts and that space also would work when in
10068 window mode. Another nice shortcut in gmplayer is [enter] to restart
10069 the current video. It is very nice when playing short videos from the
10070 web and want to restart it when new people arrive to have a look at
10071 what is going on.&lt;/p&gt;
10072 </description>
10073 </item>
10074
10075 <item>
10076 <title>Lenny-&gt;Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove</title>
10077 <link>https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html</link>
10078 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html</guid>
10079 <pubDate>Mon, 22 Nov 2010 14:15:00 +0100</pubDate>
10080 <description>&lt;p&gt;Michael Biebl suggested to me on IRC, that I changed my automated
10081 upgrade testing of the
10082 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;Lenny
10083 Gnome and KDE Desktop&lt;/a&gt; to do &lt;tt&gt;apt-get autoremove&lt;/tt&gt; when using apt-get.
10084 This seem like a very good idea, so I adjusted by test scripts and
10085 can now present the updated result from today:&lt;/p&gt;
10086
10087 &lt;p&gt;This is for Gnome:&lt;/p&gt;
10088
10089 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
10090
10091 &lt;blockquote&gt;&lt;p&gt;
10092 apache2.2-bin
10093 aptdaemon
10094 baobab
10095 binfmt-support
10096 browser-plugin-gnash
10097 cheese-common
10098 cli-common
10099 cups-pk-helper
10100 dmz-cursor-theme
10101 empathy
10102 empathy-common
10103 freedesktop-sound-theme
10104 freeglut3
10105 gconf-defaults-service
10106 gdm-themes
10107 gedit-plugins
10108 geoclue
10109 geoclue-hostip
10110 geoclue-localnet
10111 geoclue-manual
10112 geoclue-yahoo
10113 gnash
10114 gnash-common
10115 gnome
10116 gnome-backgrounds
10117 gnome-cards-data
10118 gnome-codec-install
10119 gnome-core
10120 gnome-desktop-environment
10121 gnome-disk-utility
10122 gnome-screenshot
10123 gnome-search-tool
10124 gnome-session-canberra
10125 gnome-system-log
10126 gnome-themes-extras
10127 gnome-themes-more
10128 gnome-user-share
10129 gstreamer0.10-fluendo-mp3
10130 gstreamer0.10-tools
10131 gtk2-engines
10132 gtk2-engines-pixbuf
10133 gtk2-engines-smooth
10134 hamster-applet
10135 libapache2-mod-dnssd
10136 libapr1
10137 libaprutil1
10138 libaprutil1-dbd-sqlite3
10139 libaprutil1-ldap
10140 libart2.0-cil
10141 libboost-date-time1.42.0
10142 libboost-python1.42.0
10143 libboost-thread1.42.0
10144 libchamplain-0.4-0
10145 libchamplain-gtk-0.4-0
10146 libcheese-gtk18
10147 libclutter-gtk-0.10-0
10148 libcryptui0
10149 libdiscid0
10150 libelf1
10151 libepc-1.0-2
10152 libepc-common
10153 libepc-ui-1.0-2
10154 libfreerdp-plugins-standard
10155 libfreerdp0
10156 libgconf2.0-cil
10157 libgdata-common
10158 libgdata7
10159 libgdu-gtk0
10160 libgee2
10161 libgeoclue0
10162 libgexiv2-0
10163 libgif4
10164 libglade2.0-cil
10165 libglib2.0-cil
10166 libgmime2.4-cil
10167 libgnome-vfs2.0-cil
10168 libgnome2.24-cil
10169 libgnomepanel2.24-cil
10170 libgpod-common
10171 libgpod4
10172 libgtk2.0-cil
10173 libgtkglext1
10174 libgtksourceview2.0-common
10175 libmono-addins-gui0.2-cil
10176 libmono-addins0.2-cil
10177 libmono-cairo2.0-cil
10178 libmono-corlib2.0-cil
10179 libmono-i18n-west2.0-cil
10180 libmono-posix2.0-cil
10181 libmono-security2.0-cil
10182 libmono-sharpzip2.84-cil
10183 libmono-system2.0-cil
10184 libmtp8
10185 libmusicbrainz3-6
10186 libndesk-dbus-glib1.0-cil
10187 libndesk-dbus1.0-cil
10188 libopal3.6.8
10189 libpolkit-gtk-1-0
10190 libpt2.6.7
10191 libpython2.6
10192 librpm1
10193 librpmio1
10194 libsdl1.2debian
10195 libsrtp0
10196 libssh-4
10197 libtelepathy-farsight0
10198 libtelepathy-glib0
10199 libtidy-0.99-0
10200 media-player-info
10201 mesa-utils
10202 mono-2.0-gac
10203 mono-gac
10204 mono-runtime
10205 nautilus-sendto
10206 nautilus-sendto-empathy
10207 p7zip-full
10208 pkg-config
10209 python-aptdaemon
10210 python-aptdaemon-gtk
10211 python-axiom
10212 python-beautifulsoup
10213 python-bugbuddy
10214 python-clientform
10215 python-coherence
10216 python-configobj
10217 python-crypto
10218 python-cupshelpers
10219 python-elementtree
10220 python-epsilon
10221 python-evolution
10222 python-feedparser
10223 python-gdata
10224 python-gdbm
10225 python-gst0.10
10226 python-gtkglext1
10227 python-gtksourceview2
10228 python-httplib2
10229 python-louie
10230 python-mako
10231 python-markupsafe
10232 python-mechanize
10233 python-nevow
10234 python-notify
10235 python-opengl
10236 python-openssl
10237 python-pam
10238 python-pkg-resources
10239 python-pyasn1
10240 python-pysqlite2
10241 python-rdflib
10242 python-serial
10243 python-tagpy
10244 python-twisted-bin
10245 python-twisted-conch
10246 python-twisted-core
10247 python-twisted-web
10248 python-utidylib
10249 python-webkit
10250 python-xdg
10251 python-zope.interface
10252 remmina
10253 remmina-plugin-data
10254 remmina-plugin-rdp
10255 remmina-plugin-vnc
10256 rhythmbox-plugin-cdrecorder
10257 rhythmbox-plugins
10258 rpm-common
10259 rpm2cpio
10260 seahorse-plugins
10261 shotwell
10262 software-center
10263 system-config-printer-udev
10264 telepathy-gabble
10265 telepathy-mission-control-5
10266 telepathy-salut
10267 tomboy
10268 totem
10269 totem-coherence
10270 totem-mozilla
10271 totem-plugins
10272 transmission-common
10273 xdg-user-dirs
10274 xdg-user-dirs-gtk
10275 xserver-xephyr
10276 &lt;/p&gt;&lt;/blockquote&gt;
10277
10278 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
10279
10280 &lt;blockquote&gt;&lt;p&gt;
10281 cheese
10282 ekiga
10283 eog
10284 epiphany-extensions
10285 evolution-exchange
10286 fast-user-switch-applet
10287 file-roller
10288 gcalctool
10289 gconf-editor
10290 gdm
10291 gedit
10292 gedit-common
10293 gnome-games
10294 gnome-games-data
10295 gnome-nettool
10296 gnome-system-tools
10297 gnome-themes
10298 gnuchess
10299 gucharmap
10300 guile-1.8-libs
10301 libavahi-ui0
10302 libdmx1
10303 libgalago3
10304 libgtk-vnc-1.0-0
10305 libgtksourceview2.0-0
10306 liblircclient0
10307 libsdl1.2debian-alsa
10308 libspeexdsp1
10309 libsvga1
10310 rhythmbox
10311 seahorse
10312 sound-juicer
10313 system-config-printer
10314 totem-common
10315 transmission-gtk
10316 vinagre
10317 vino
10318 &lt;/p&gt;&lt;/blockquote&gt;
10319
10320 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
10321
10322 &lt;blockquote&gt;&lt;p&gt;
10323 gstreamer0.10-gnomevfs
10324 &lt;/p&gt;&lt;/blockquote&gt;
10325
10326 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
10327
10328 &lt;blockquote&gt;&lt;p&gt;
10329 [nothing]
10330 &lt;/p&gt;&lt;/blockquote&gt;
10331
10332 &lt;p&gt;This is for KDE:&lt;/p&gt;
10333
10334 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
10335
10336 &lt;blockquote&gt;&lt;p&gt;
10337 ksmserver
10338 &lt;/p&gt;&lt;/blockquote&gt;
10339
10340 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
10341
10342 &lt;blockquote&gt;&lt;p&gt;
10343 kwin
10344 network-manager-kde
10345 &lt;/p&gt;&lt;/blockquote&gt;
10346
10347 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
10348
10349 &lt;blockquote&gt;&lt;p&gt;
10350 arts
10351 dolphin
10352 freespacenotifier
10353 google-gadgets-gst
10354 google-gadgets-xul
10355 kappfinder
10356 kcalc
10357 kcharselect
10358 kde-core
10359 kde-plasma-desktop
10360 kde-standard
10361 kde-window-manager
10362 kdeartwork
10363 kdeartwork-emoticons
10364 kdeartwork-style
10365 kdeartwork-theme-icon
10366 kdebase
10367 kdebase-apps
10368 kdebase-workspace
10369 kdebase-workspace-bin
10370 kdebase-workspace-data
10371 kdeeject
10372 kdelibs
10373 kdeplasma-addons
10374 kdeutils
10375 kdewallpapers
10376 kdf
10377 kfloppy
10378 kgpg
10379 khelpcenter4
10380 kinfocenter
10381 konq-plugins-l10n
10382 konqueror-nsplugins
10383 kscreensaver
10384 kscreensaver-xsavers
10385 ktimer
10386 kwrite
10387 libgle3
10388 libkde4-ruby1.8
10389 libkonq5
10390 libkonq5-templates
10391 libnetpbm10
10392 libplasma-ruby
10393 libplasma-ruby1.8
10394 libqt4-ruby1.8
10395 marble-data
10396 marble-plugins
10397 netpbm
10398 nuvola-icon-theme
10399 plasma-dataengines-workspace
10400 plasma-desktop
10401 plasma-desktopthemes-artwork
10402 plasma-runners-addons
10403 plasma-scriptengine-googlegadgets
10404 plasma-scriptengine-python
10405 plasma-scriptengine-qedje
10406 plasma-scriptengine-ruby
10407 plasma-scriptengine-webkit
10408 plasma-scriptengines
10409 plasma-wallpapers-addons
10410 plasma-widget-folderview
10411 plasma-widget-networkmanagement
10412 ruby
10413 sweeper
10414 update-notifier-kde
10415 xscreensaver-data-extra
10416 xscreensaver-gl
10417 xscreensaver-gl-extra
10418 xscreensaver-screensaver-bsod
10419 &lt;/p&gt;&lt;/blockquote&gt;
10420
10421 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
10422
10423 &lt;blockquote&gt;&lt;p&gt;
10424 ark
10425 google-gadgets-common
10426 google-gadgets-qt
10427 htdig
10428 kate
10429 kdebase-bin
10430 kdebase-data
10431 kdepasswd
10432 kfind
10433 klipper
10434 konq-plugins
10435 konqueror
10436 ksysguard
10437 ksysguardd
10438 libarchive1
10439 libcln6
10440 libeet1
10441 libeina-svn-06
10442 libggadget-1.0-0b
10443 libggadget-qt-1.0-0b
10444 libgps19
10445 libkdecorations4
10446 libkephal4
10447 libkonq4
10448 libkonqsidebarplugin4a
10449 libkscreensaver5
10450 libksgrd4
10451 libksignalplotter4
10452 libkunitconversion4
10453 libkwineffects1a
10454 libmarblewidget4
10455 libntrack-qt4-1
10456 libntrack0
10457 libplasma-geolocation-interface4
10458 libplasmaclock4a
10459 libplasmagenericshell4
10460 libprocesscore4a
10461 libprocessui4a
10462 libqalculate5
10463 libqedje0a
10464 libqtruby4shared2
10465 libqzion0a
10466 libruby1.8
10467 libscim8c2a
10468 libsmokekdecore4-3
10469 libsmokekdeui4-3
10470 libsmokekfile3
10471 libsmokekhtml3
10472 libsmokekio3
10473 libsmokeknewstuff2-3
10474 libsmokeknewstuff3-3
10475 libsmokekparts3
10476 libsmokektexteditor3
10477 libsmokekutils3
10478 libsmokenepomuk3
10479 libsmokephonon3
10480 libsmokeplasma3
10481 libsmokeqtcore4-3
10482 libsmokeqtdbus4-3
10483 libsmokeqtgui4-3
10484 libsmokeqtnetwork4-3
10485 libsmokeqtopengl4-3
10486 libsmokeqtscript4-3
10487 libsmokeqtsql4-3
10488 libsmokeqtsvg4-3
10489 libsmokeqttest4-3
10490 libsmokeqtuitools4-3
10491 libsmokeqtwebkit4-3
10492 libsmokeqtxml4-3
10493 libsmokesolid3
10494 libsmokesoprano3
10495 libtaskmanager4a
10496 libtidy-0.99-0
10497 libweather-ion4a
10498 libxklavier16
10499 libxxf86misc1
10500 okteta
10501 oxygencursors
10502 plasma-dataengines-addons
10503 plasma-scriptengine-superkaramba
10504 plasma-widget-lancelot
10505 plasma-widgets-addons
10506 plasma-widgets-workspace
10507 polkit-kde-1
10508 ruby1.8
10509 systemsettings
10510 update-notifier-common
10511 &lt;/p&gt;&lt;/blockquote&gt;
10512
10513 &lt;p&gt;Running apt-get autoremove made the results using apt-get and
10514 aptitude a bit more similar, but there are still quite a lott of
10515 differences. I have no idea what packages should be installed after
10516 the upgrade, but hope those that do can have a look.&lt;/p&gt;
10517 </description>
10518 </item>
10519
10520 <item>
10521 <title>Migrating Xen virtual machines using LVM to KVM using disk images</title>
10522 <link>https://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html</link>
10523 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html</guid>
10524 <pubDate>Mon, 22 Nov 2010 11:20:00 +0100</pubDate>
10525 <description>&lt;p&gt;Most of the computers in use by the
10526 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu/Skolelinux project&lt;/a&gt;
10527 are virtual machines. And they have been Xen machines running on a
10528 fairly old IBM eserver xseries 345 machine, and we wanted to migrate
10529 them to KVM on a newer Dell PowerEdge 2950 host machine. This was a
10530 bit harder that it could have been, because we set up the Xen virtual
10531 machines to get the virtual partitions from LVM, which as far as I
10532 know is not supported by KVM. So to migrate, we had to convert
10533 several LVM logical volumes to partitions on a virtual disk file.&lt;/p&gt;
10534
10535 &lt;p&gt;I found
10536 &lt;a href=&quot;http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM&quot;&gt;a
10537 nice recipe&lt;/a&gt; to do this, and wrote the following script to do the
10538 migration. It uses qemu-img from the qemu package to make the disk
10539 image, parted to partition it, losetup and kpartx to present the disk
10540 image partions as devices, and dd to copy the data. I NFS mounted the
10541 new servers storage area on the old server to do the migration.&lt;/p&gt;
10542
10543 &lt;pre&gt;
10544 #!/bin/sh
10545
10546 # Based on
10547 # http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
10548
10549 set -e
10550 set -x
10551
10552 if [ -z &quot;$1&quot; ] ; then
10553 echo &quot;Usage: $0 &amp;lt;hostname&amp;gt;&quot;
10554 exit 1
10555 else
10556 host=&quot;$1&quot;
10557 fi
10558
10559 if [ ! -e /dev/vg_data/$host-disk ] ; then
10560 echo &quot;error: unable to find LVM volume for $host&quot;
10561 exit 1
10562 fi
10563
10564 # Partitions need to be a bit bigger than the LVM LVs. not sure why.
10565 disksize=$( lvs --units m | grep $host-disk | awk &#39;{sum = sum + $4} END { print int(sum * 1.05) }&#39;)
10566 swapsize=$( lvs --units m | grep $host-swap | awk &#39;{sum = sum + $4} END { print int(sum * 1.05) }&#39;)
10567 totalsize=$(( ( $disksize + $swapsize ) ))
10568
10569 img=$host.img
10570 #dd if=/dev/zero of=$img bs=1M count=$(( $disksize + $swapsize ))
10571 qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
10572
10573 parted $img mklabel msdos
10574 parted $img mkpart primary linux-swap 0 $disksize
10575 parted $img mkpart primary ext2 $disksize $totalsize
10576 parted $img set 1 boot on
10577
10578 modprobe dm-mod
10579 losetup /dev/loop0 $img
10580 kpartx -a /dev/loop0
10581
10582 dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=1M
10583 fsck.ext3 -f /dev/mapper/loop0p1 || true
10584 mkswap /dev/mapper/loop0p2
10585
10586 kpartx -d /dev/loop0
10587 losetup -d /dev/loop0
10588 &lt;/pre&gt;
10589
10590 &lt;p&gt;The script is perhaps so simple that it is not copyrightable, but
10591 if it is, it is licenced using GPL v2 or later at your discretion.&lt;/p&gt;
10592
10593 &lt;p&gt;After doing this, I booted a Debian CD in rescue mode in KVM with
10594 the new disk image attached, installed grub-pc and linux-image-686 and
10595 set up grub to boot from the disk image. After this, the KVM machines
10596 seem to work just fine.&lt;/p&gt;
10597 </description>
10598 </item>
10599
10600 <item>
10601 <title>Lenny-&gt;Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop</title>
10602 <link>https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html</link>
10603 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html</guid>
10604 <pubDate>Sat, 20 Nov 2010 22:50:00 +0100</pubDate>
10605 <description>&lt;p&gt;I&#39;m still running upgrade testing of the
10606 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;Lenny
10607 Gnome and KDE Desktop&lt;/a&gt;, but have not had time to spend on reporting the
10608 status. Here is a short update based on a test I ran 20101118.&lt;/p&gt;
10609
10610 &lt;p&gt;I still do not know what a correct migration should look like, so I
10611 report any differences between apt and aptitude and hope someone else
10612 can see if anything should be changed.&lt;/p&gt;
10613
10614 &lt;p&gt;This is for Gnome:&lt;/p&gt;
10615
10616 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
10617
10618 &lt;blockquote&gt;&lt;p&gt;
10619 apache2.2-bin aptdaemon at-spi baobab binfmt-support
10620 browser-plugin-gnash cheese-common cli-common cpp-4.3 cups-pk-helper
10621 dmz-cursor-theme empathy empathy-common finger
10622 freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
10623 gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
10624 geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
10625 gnome-cards-data gnome-codec-install gnome-core
10626 gnome-desktop-environment gnome-disk-utility gnome-screenshot
10627 gnome-search-tool gnome-session-canberra gnome-spell
10628 gnome-system-log gnome-themes-extras gnome-themes-more
10629 gnome-user-share gs-common gstreamer0.10-fluendo-mp3
10630 gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
10631 gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
10632 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
10633 libart2.0-cil libatspi1.0-0 libboost-date-time1.42.0
10634 libboost-python1.42.0 libboost-thread1.42.0 libchamplain-0.4-0
10635 libchamplain-gtk-0.4-0 libcheese-gtk18 libclutter-gtk-0.10-0
10636 libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-1.0-2
10637 libepc-common libepc-ui-1.0-2 libfreerdp-plugins-standard
10638 libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
10639 libgdl-1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-0 libgif4
10640 libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
10641 libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
10642 libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
10643 libgtk2.0-cil libgtkglext1 libgtksourceview-common
10644 libgtksourceview2.0-common libmono-addins-gui0.2-cil
10645 libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
10646 libmono-i18n-west2.0-cil libmono-posix2.0-cil
10647 libmono-security2.0-cil libmono-sharpzip2.84-cil
10648 libmono-system2.0-cil libmtp8 libmusicbrainz3-6
10649 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6.8
10650 libpolkit-gtk-1-0 libpt-1.10.10-plugins-alsa
10651 libpt-1.10.10-plugins-v4l libpt2.6.7 libpython2.6 librpm1 librpmio1
10652 libsdl1.2debian libservlet2.4-java libsrtp0 libssh-4
10653 libtelepathy-farsight0 libtelepathy-glib0 libtidy-0.99-0
10654 libxalan2-java libxerces2-java media-player-info mesa-utils
10655 mono-2.0-gac mono-gac mono-runtime nautilus-sendto
10656 nautilus-sendto-empathy openoffice.org-writer2latex
10657 openssl-blacklist p7zip p7zip-full pkg-config python-4suite-xml
10658 python-aptdaemon python-aptdaemon-gtk python-axiom
10659 python-beautifulsoup python-bugbuddy python-clientform
10660 python-coherence python-configobj python-crypto python-cupshelpers
10661 python-cupsutils python-eggtrayicon python-elementtree
10662 python-epsilon python-evolution python-feedparser python-gdata
10663 python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
10664 python-gtksourceview2 python-httplib2 python-louie python-mako
10665 python-markupsafe python-mechanize python-nevow python-notify
10666 python-opengl python-openssl python-pam python-pkg-resources
10667 python-pyasn1 python-pysqlite2 python-rdflib python-serial
10668 python-tagpy python-twisted-bin python-twisted-conch
10669 python-twisted-core python-twisted-web python-utidylib python-webkit
10670 python-xdg python-zope.interface remmina remmina-plugin-data
10671 remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
10672 rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
10673 software-center svgalibg1 system-config-printer-udev
10674 telepathy-gabble telepathy-mission-control-5 telepathy-salut tomboy
10675 totem totem-coherence totem-mozilla totem-plugins
10676 transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
10677 zip
10678 &lt;/p&gt;&lt;/blockquote&gt;
10679
10680 Installed using apt-get, removed with aptitude
10681
10682 &lt;blockquote&gt;&lt;p&gt;
10683 arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
10684 epiphany-extensions epiphany-gecko evolution-exchange
10685 fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
10686 gedit-common gnome-app-install gnome-games gnome-games-data
10687 gnome-nettool gnome-system-tools gnome-themes gnome-utils
10688 gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
10689 guile-1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
10690 libavahi-ui0 libbind9-50 libbluetooth2 libcamel1.2-11 libcdio7
10691 libcucul0 libcurl3 libdirectfb-1.0-0 libdmx1 libdvdread3
10692 libedata-cal1.2-6 libedataserver1.2-9 libeel2-2.20 libepc-1.0-1
10693 libepc-ui-1.0-1 libexchange-storage1.2-3 libfaad0 libgadu3
10694 libgalago3 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
10695 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
10696 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
10697 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtk-vnc-1.0-0
10698 libgtkhtml2-0 libgtksourceview1.0-0 libgtksourceview2.0-0
10699 libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
10700 libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
10701 libmagick++10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
10702 libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
10703 libnm-util0 libopal-2.2 libosp5 libparted1.8-10 libpisock9
10704 libpisync1 libpoppler-glib3 libpoppler3 libpt-1.10.10 libraw1394-8
10705 libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-8
10706 libspeexdsp1 libssh2-1 libsuitesparse-3.1.0 libsvga1
10707 libswfdec-0.6-90 libtalloc1 libtotem-plparser10 libtrackerclient0
10708 libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
10709 libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
10710 sound-juicer swfdec-gnome system-config-printer totem-common
10711 totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
10712 &lt;/p&gt;&lt;/blockquote&gt;
10713
10714 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
10715
10716 &lt;blockquote&gt;&lt;p&gt;
10717 gstreamer0.10-gnomevfs
10718 &lt;/p&gt;&lt;/blockquote&gt;
10719
10720 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
10721
10722 &lt;blockquote&gt;&lt;p&gt;
10723 [nothing]
10724 &lt;/p&gt;&lt;/blockquote&gt;
10725
10726 &lt;p&gt;This is for KDE:&lt;/p&gt;
10727
10728 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
10729
10730 &lt;blockquote&gt;&lt;p&gt;
10731 autopoint bomber bovo cantor cantor-backend-kalgebra cpp-4.3 dcoprss
10732 edict espeak espeak-data eyesapplet fifteenapplet finger gettext
10733 ghostscript-x git gnome-audio gnugo granatier gs-common
10734 gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
10735 kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
10736 kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
10737 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
10738 kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
10739 kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
10740 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
10741 kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
10742 kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
10743 killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
10744 kollision kpf krosspython ksirk ksmserver ksquares kstars-data
10745 ksudoku kubrick kweather libasound2-plugins libboost-python1.42.0
10746 libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
10747 libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
10748 libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
10749 libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
10750 libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
10751 libkrossui4 libmailtools-perl libmime-tools-perl
10752 libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
10753 libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
10754 libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
10755 lirc luatex marble networkstatus noatun-plugins
10756 openoffice.org-writer2latex palapeli palapeli-data parley
10757 parley-data poster psutils pulseaudio pulseaudio-esound-compat
10758 pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
10759 speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
10760 ttf-sazanami-gothic
10761 &lt;/p&gt;&lt;/blockquote&gt;
10762
10763 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
10764
10765 &lt;blockquote&gt;&lt;p&gt;
10766 amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
10767 dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
10768 kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
10769 kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
10770 keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
10771 kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
10772 kitchensync kiten kjumpingcube klatin klettres klickety klines
10773 klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
10774 kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
10775 kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
10776 kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
10777 ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
10778 ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
10779 kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
10780 kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
10781 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
10782 libavahi-core5 libavc1394-0 libbind9-50 libbluetooth2
10783 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0
10784 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
10785 libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0 libicu38
10786 libiec61883-0 libindex0 libisccc50 libisccfg50 libiw29
10787 libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
10788 libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
10789 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
10790 libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
10791 libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
10792 libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
10793 libpoppler-qt2 libpoppler3 libraw1394-8 librss1 libsensors3
10794 libsmbios2 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90
10795 libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
10796 mpeglib network-manager-kde noatun pmount tex-common texlive-base
10797 texlive-common texlive-doc-base texlive-fonts-recommended tidy
10798 ttf-dustin ttf-kochi-gothic ttf-sjfonts
10799 &lt;/p&gt;&lt;/blockquote&gt;
10800
10801 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
10802
10803 &lt;blockquote&gt;&lt;p&gt;
10804 dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
10805 kdeartwork kdebase kdebase-apps kdebase-workspace
10806 kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
10807 kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
10808 netpbm plasma-widget-folderview plasma-widget-networkmanagement
10809 xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
10810 xscreensaver-screensaver-bsod
10811 &lt;/p&gt;&lt;/blockquote&gt;
10812
10813 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
10814
10815 &lt;blockquote&gt;&lt;p&gt;
10816 kdebase-bin konq-plugins konqueror
10817 &lt;/p&gt;&lt;/blockquote&gt;
10818 </description>
10819 </item>
10820
10821 <item>
10822 <title>Gnash buildbot slave and Debian kfreebsd</title>
10823 <link>https://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html</link>
10824 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html</guid>
10825 <pubDate>Sat, 20 Nov 2010 07:20:00 +0100</pubDate>
10826 <description>&lt;p&gt;Answering
10827 &lt;a href=&quot;http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html&quot;&gt;the
10828 call from the Gnash project&lt;/a&gt; for
10829 &lt;a href=&quot;http://www.gnashdev.org:8010&quot;&gt;buildbot&lt;/a&gt; slaves to test the
10830 current source, I have set up a virtual KVM machine on the Debian
10831 Edu/Skolelinux virtualization host to test the git source on
10832 Debian/Squeeze. I hope this can help the developers in getting new
10833 releases out more often.&lt;/p&gt;
10834
10835 &lt;p&gt;As the developers want less main-stream build platforms tested to,
10836 I have considered setting up a &lt;a
10837 href=&quot;http://www.debian.org/ports/kfreebsd-gnu/&quot;&gt;Debian/kfreebsd&lt;/a&gt;
10838 machine as well. I have also considered using the kfreebsd
10839 architecture in Debian as a file server in NUUG to get access to the 5
10840 TB zfs volume we currently use to store DV video. Because of this, I
10841 finally got around to do a test installation of Debian/Squeeze with
10842 kfreebsd. Installation went fairly smooth, thought I noticed some
10843 visual glitches in the cdebconf dialogs (black cursor left on the
10844 screen at random locations). Have not gotten very far with the
10845 testing. Noticed cfdisk did not work, but fdisk did so it was not a
10846 fatal problem. Have to spend some more time on it to see if it is
10847 useful as a file server for NUUG. Will try to find time to set up a
10848 gnash buildbot slave on the Debian Edu/Skolelinux this weekend.&lt;/p&gt;
10849 </description>
10850 </item>
10851
10852 <item>
10853 <title>Debian in 3D</title>
10854 <link>https://people.skolelinux.org/pere/blog/Debian_in_3D.html</link>
10855 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_in_3D.html</guid>
10856 <pubDate>Tue, 9 Nov 2010 16:10:00 +0100</pubDate>
10857 <description>&lt;p&gt;&lt;img src=&quot;http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg&quot;&gt;&lt;/p&gt;
10858
10859 &lt;p&gt;3D printing is just great. I just came across this Debian logo in
10860 3D linked in from
10861 &lt;a href=&quot;http://blog.thingiverse.com/2010/11/09/participatory-branding/&quot;&gt;the
10862 thingiverse blog&lt;/a&gt;.&lt;/p&gt;
10863 </description>
10864 </item>
10865
10866 <item>
10867 <title>Software updates 2010-10-24</title>
10868 <link>https://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html</link>
10869 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html</guid>
10870 <pubDate>Sun, 24 Oct 2010 22:45:00 +0200</pubDate>
10871 <description>&lt;p&gt;Some updates.&lt;/p&gt;
10872
10873 &lt;p&gt;My &lt;a href=&quot;http://pledgebank.com/gnash-avm2&quot;&gt;gnash pledge&lt;/a&gt; to
10874 raise money for the project is going well. The lower limit of 10
10875 signers was reached in 24 hours, and so far 13 people have signed it.
10876 More signers and more funding is most welcome, and I am really curious
10877 how far we can get before the time limit of December 24 is reached.
10878 :)&lt;/p&gt;
10879
10880 &lt;p&gt;On the #gnash IRC channel on irc.freenode.net, I was just tipped
10881 about what appear to be a great code coverage tool capable of
10882 generating code coverage stats without any changes to the source code.
10883 It is called
10884 &lt;a href=&quot;http://simonkagstrom.github.com/kcov/index.html&quot;&gt;kcov&lt;/a&gt;,
10885 and can be used using &lt;tt&gt;kcov &amp;lt;directory&amp;gt; &amp;lt;binary&amp;gt;&lt;/tt&gt;.
10886 It is missing in Debian, but the git source built just fine in Squeeze
10887 after I installed libelf-dev, libdwarf-dev, pkg-config and
10888 libglib2.0-dev. Failed to build in Lenny, but suspect that is
10889 solvable. I hope kcov make it into Debian soon.&lt;/p&gt;
10890
10891 &lt;p&gt;Finally found time to wrap up the release notes for &lt;a
10892 href=&quot;http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html&quot;&gt;a
10893 new alpha release of Debian Edu&lt;/a&gt;, and just published the second
10894 alpha test release of the Squeeze based Debian Edu /
10895 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt;
10896 release. Give it a try if you need a complete linux solution for your
10897 school, including central infrastructure server, workstations, thin
10898 client servers and diskless workstations. A nice touch added
10899 yesterday is RDP support on the thin client servers, for windows
10900 clients to get a Linux desktop on request.&lt;/p&gt;
10901 </description>
10902 </item>
10903
10904 <item>
10905 <title>Some notes on Flash in Debian and Debian Edu</title>
10906 <link>https://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html</link>
10907 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html</guid>
10908 <pubDate>Sat, 4 Sep 2010 10:10:00 +0200</pubDate>
10909 <description>&lt;p&gt;In the &lt;a href=&quot;http://popcon.debian.org/unknown/by_vote&quot;&gt;Debian
10910 popularity-contest numbers&lt;/a&gt;, the adobe-flashplugin package the
10911 second most popular used package that is missing in Debian. The sixth
10912 most popular is flashplayer-mozilla. This is a clear indication that
10913 working flash is important for Debian users. Around 10 percent of the
10914 users submitting data to popcon.debian.org have this package
10915 installed.&lt;/p&gt;
10916
10917 &lt;p&gt;In the report written by Lars Risan in August 2008
10918&lt;a href=&quot;http://wiki.skolelinux.no/Dokumentasjon/Rapporter?action=AttachFile&amp;do=view&amp;target=Skolelinux_i_bruk_rapport_1.0.pdf&quot;&gt;Skolelinux
10919 i bruk – Rapport for Hurum kommune, Universitetet i Agder og
10920 stiftelsen SLX Debian Labs&lt;/a&gt;»), one of the most important problems
10921 schools experienced with &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian
10922 Edu/Skolelinux&lt;/a&gt; was the lack of working Flash. A lot of educational
10923 web sites require Flash to work, and lacking working Flash support in
10924 the web browser and the problems with installing it was perceived as a
10925 good reason to stay with Windows.&lt;/p&gt;
10926
10927 &lt;p&gt;I once saw a funny and sad comment in a web forum, where Linux was
10928 said to be the retarded cousin that did not really understand
10929 everything you told him but could work fairly well. This was a
10930 comment regarding the problems Linux have with proprietary formats and
10931 non-standard web pages, and is sad because it exposes a fairly common
10932 understanding of whose fault it is if web pages that only work in for
10933 example Internet Explorer 6 fail to work on Firefox, and funny because
10934 it explain very well how annoying it is for users when Linux
10935 distributions do not work with the documents they receive or the web
10936 pages they want to visit.&lt;/p&gt;
10937
10938 &lt;p&gt;This is part of the reason why I believe it is important for Debian
10939 and Debian Edu to have a well working Flash implementation in the
10940 distribution, to get at least popular sites as Youtube and Google
10941 Video to working out of the box. For Squeeze, Debian have the chance
10942 to include the latest version of Gnash that will make this happen, as
10943 the new release 0.8.8 was published a few weeks ago and is resting in
10944 unstable. The new version work with more sites that version 0.8.7.
10945 The Gnash maintainers have asked for a freeze exception, but the
10946 release team have not had time to reply to it yet. I hope they agree
10947 with me that Flash is important for the Debian desktop users, and thus
10948 accept the new package into Squeeze.&lt;/p&gt;
10949 </description>
10950 </item>
10951
10952 <item>
10953 <title>Circular package dependencies harms apt recovery</title>
10954 <link>https://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html</link>
10955 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html</guid>
10956 <pubDate>Tue, 27 Jul 2010 23:50:00 +0200</pubDate>
10957 <description>&lt;p&gt;I discovered this while doing
10958 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html&quot;&gt;automated
10959 testing of upgrades from Debian Lenny to Squeeze&lt;/a&gt;. A few packages
10960 in Debian still got circular dependencies, and it is often claimed
10961 that apt and aptitude should be able to handle this just fine, but
10962 some times these dependency loops causes apt to fail.&lt;/p&gt;
10963
10964 &lt;p&gt;An example is from todays
10965 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt&quot;&gt;upgrade
10966 of KDE using aptitude&lt;/a&gt;. In it, a bug in kdebase-workspace-data
10967 causes perl-modules to fail to upgrade. The cause is simple. If a
10968 package fail to unpack, then only part of packages with the circular
10969 dependency might end up being unpacked when unpacking aborts, and the
10970 ones already unpacked will fail to configure in the recovery phase
10971 because its dependencies are unavailable.&lt;/p&gt;
10972
10973 &lt;p&gt;In this log, the problem manifest itself with this error:&lt;/p&gt;
10974
10975 &lt;blockquote&gt;&lt;pre&gt;
10976 dpkg: dependency problems prevent configuration of perl-modules:
10977 perl-modules depends on perl (&gt;= 5.10.1-1); however:
10978 Version of perl on system is 5.10.0-19lenny2.
10979 dpkg: error processing perl-modules (--configure):
10980 dependency problems - leaving unconfigured
10981 &lt;/pre&gt;&lt;/blockquote&gt;
10982
10983 &lt;p&gt;The perl/perl-modules circular dependency is already
10984 &lt;a href=&quot;http://bugs.debian.org/527917&quot;&gt;reported as a bug&lt;/a&gt;, and will
10985 hopefully be solved as soon as possible, but it is not the only one,
10986 and each one of these loops in the dependency tree can cause similar
10987 failures. Of course, they only occur when there are bugs in other
10988 packages causing the unpacking to fail, but it is rather nasty when
10989 the failure of one package causes the problem to become worse because
10990 of dependency loops.&lt;/p&gt;
10991
10992 &lt;p&gt;Thanks to
10993 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/06/msg00116.html&quot;&gt;the
10994 tireless effort by Bill Allombert&lt;/a&gt;, the number of circular
10995 dependencies
10996 &lt;a href=&quot;http://debian.semistable.com/debgraph.out.html&quot;&gt;left in Debian
10997 is dropping&lt;/a&gt;, and perhaps it will reach zero one day. :)&lt;/p&gt;
10998
10999 &lt;p&gt;Todays testing also exposed a bug in
11000 &lt;a href=&quot;http://bugs.debian.org/590605&quot;&gt;update-notifier&lt;/a&gt; and
11001 &lt;a href=&quot;http://bugs.debian.org/590604&quot;&gt;different behaviour&lt;/a&gt; between
11002 apt-get and aptitude, the latter possibly caused by some circular
11003 dependency. Reported both to BTS to try to get someone to look at
11004 it.&lt;/p&gt;
11005 </description>
11006 </item>
11007
11008 <item>
11009 <title>What are they searching for - PowerDNS and ISC DHCP in LDAP</title>
11010 <link>https://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html</link>
11011 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html</guid>
11012 <pubDate>Sat, 17 Jul 2010 21:00:00 +0200</pubDate>
11013 <description>&lt;p&gt;This is a
11014 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html&quot;&gt;followup&lt;/a&gt;
11015 on my
11016 &lt;a href=&quot;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&quot;&gt;previous
11017 work&lt;/a&gt; on
11018 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html&quot;&gt;merging
11019 all&lt;/a&gt; the computer related LDAP objects in Debian Edu.&lt;/p&gt;
11020
11021 &lt;p&gt;As a step to try to see if it possible to merge the DNS and DHCP
11022 LDAP objects, I have had a look at how the packages pdns-backend-ldap
11023 and dhcp3-server-ldap in Debian use the LDAP server. The two
11024 implementations are quite different in how they use LDAP.&lt;/p&gt;
11025
11026 To get this information, I started slapd with debugging enabled and
11027 dumped the debug output to a file to get the LDAP searches performed
11028 on a Debian Edu main-server. Here is a summary.
11029
11030 &lt;p&gt;&lt;strong&gt;powerdns&lt;/strong&gt;&lt;/p&gt;
11031
11032 &lt;a href=&quot;http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend&quot;&gt;Clues
11033 on how to&lt;/a&gt; set up PowerDNS to use a LDAP backend is available on
11034 the web.
11035
11036 &lt;p&gt;PowerDNS have two modes of operation using LDAP as its backend.
11037 One &quot;strict&quot; mode where the forward and reverse DNS lookups are done
11038 using the same LDAP objects, and a &quot;tree&quot; mode where the forward and
11039 reverse entries are in two different subtrees in LDAP with a structure
11040 based on the DNS names, as in tjener.intern and
11041 2.2.0.10.in-addr.arpa.&lt;/p&gt;
11042
11043 &lt;p&gt;In tree mode, the server is set up to use a LDAP subtree as its
11044 base, and uses a &quot;base&quot; scoped search for the DNS name by adding
11045 &quot;dc=tjener,dc=intern,&quot; to the base with a filter for
11046 &quot;(associateddomain=tjener.intern)&quot; for the forward entry and
11047 &quot;dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,&quot; with a filter for
11048 &quot;(associateddomain=2.2.0.10.in-addr.arpa)&quot; for the reverse entry. For
11049 forward entries, it is looking for attributes named dnsttl, arecord,
11050 nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
11051 txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
11052 srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
11053 ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
11054 spfrecord and modifytimestamp. For reverse entries it is looking for
11055 the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
11056 ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
11057 locrecord, srvrecord, naptrrecord and modifytimestamp. The equivalent
11058 ldapsearch commands could look like this:&lt;/p&gt;
11059
11060 &lt;blockquote&gt;&lt;pre&gt;
11061 ldapsearch -h ldap \
11062 -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
11063 -s base -x &#39;(associateddomain=tjener.intern)&#39; dNSTTL aRecord nSRecord \
11064 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
11065 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
11066 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
11067 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
11068
11069 ldapsearch -h ldap \
11070 -b dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
11071 -s base -x &#39;(associateddomain=2.2.0.10.in-addr.arpa)&#39;
11072 dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
11073 hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
11074 srvrecord naptrrecord modifytimestamp
11075 &lt;/pre&gt;&lt;/blockquote&gt;
11076
11077 &lt;p&gt;In Debian Edu/Lenny, the PowerDNS tree mode is used with
11078 ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
11079 example LDAP objects used there. In addition to these objects, the
11080 parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
11081 also exist.&lt;/p&gt;
11082
11083 &lt;blockquote&gt;&lt;pre&gt;
11084 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
11085 objectclass: top
11086 objectclass: dnsdomain
11087 objectclass: domainrelatedobject
11088 dc: tjener
11089 arecord: 10.0.2.2
11090 associateddomain: tjener.intern
11091
11092 dn: dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
11093 objectclass: top
11094 objectclass: dnsdomain2
11095 objectclass: domainrelatedobject
11096 dc: 2
11097 ptrrecord: tjener.intern
11098 associateddomain: 2.2.0.10.in-addr.arpa
11099 &lt;/pre&gt;&lt;/blockquote&gt;
11100
11101 &lt;p&gt;In strict mode, the server behaves differently. When looking for
11102 forward DNS entries, it is doing a &quot;subtree&quot; scoped search with the
11103 same base as in the tree mode for a object with filter
11104 &quot;(associateddomain=tjener.intern)&quot; and requests the attributes dnsttl,
11105 arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
11106 mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
11107 naptrrecord and modifytimestamp. For reverse entires it also do a
11108 subtree scoped search but this time the filter is &quot;(arecord=10.0.2.2)&quot;
11109 and the requested attributes are associateddomain, dnsttl and
11110 modifytimestamp. In short, in strict mode the objects with ptrrecord
11111 go away, and the arecord attribute in the forward object is used
11112 instead.&lt;/p&gt;
11113
11114 &lt;p&gt;The forward and reverse searches can be simulated using ldapsearch
11115 like this:&lt;/p&gt;
11116
11117 &lt;blockquote&gt;&lt;pre&gt;
11118 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
11119 &#39;(associateddomain=tjener.intern)&#39; dNSTTL aRecord nSRecord \
11120 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
11121 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
11122 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
11123 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
11124
11125 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
11126 &#39;(arecord=10.0.2.2)&#39; associateddomain dnsttl modifytimestamp
11127 &lt;/pre&gt;&lt;/blockquote&gt;
11128
11129 &lt;p&gt;In addition to the forward and reverse searches , there is also a
11130 search for SOA records, which behave similar to the forward and
11131 reverse lookups.&lt;/p&gt;
11132
11133 &lt;p&gt;A thing to note with the PowerDNS behaviour is that it do not
11134 specify any objectclass names, and instead look for the attributes it
11135 need to generate a DNS reply. This make it able to work with any
11136 objectclass that provide the needed attributes.&lt;/p&gt;
11137
11138 &lt;p&gt;The attributes are normally provided in the cosine (RFC 1274) and
11139 dnsdomain2 schemas. The latter is used for reverse entries like
11140 ptrrecord and recent DNS additions like aaaarecord and srvrecord.&lt;/p&gt;
11141
11142 &lt;p&gt;In Debian Edu, we have created DNS objects using the object classes
11143 dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
11144 attributes) and domainrelatedobject (for associatedDomain). The use
11145 of structural object classes make it impossible to combine these
11146 classes with the object classes used by DHCP.&lt;/p&gt;
11147
11148 &lt;p&gt;There are other schemas that could be used too, for example the
11149 dnszone structural object class used by Gosa and bind-sdb for the DNS
11150 attributes combined with the domainrelatedobject object class, but in
11151 this case some unused attributes would have to be included as well
11152 (zonename and relativedomainname).&lt;/p&gt;
11153
11154 &lt;p&gt;My proposal for Debian Edu would be to switch PowerDNS to strict
11155 mode and not use any of the existing objectclasses (dnsdomain,
11156 dnsdomain2 and dnszone) when one want to combine the DNS information
11157 with DHCP information, and instead create a auxiliary object class
11158 defined something like this (using the attributes defined for
11159 dnsdomain and dnsdomain2 or dnszone):&lt;/p&gt;
11160
11161 &lt;blockquote&gt;&lt;pre&gt;
11162 objectclass ( some-oid NAME &#39;dnsDomainAux&#39;
11163 SUP top
11164 AUXILIARY
11165 MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
11166 DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
11167 TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
11168 NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
11169 A6Record $ DNAMERecord
11170 ))
11171 &lt;/pre&gt;&lt;/blockquote&gt;
11172
11173 &lt;p&gt;This will allow any object to become a DNS entry when combined with
11174 the domainrelatedobject object class, and allow any entity to include
11175 all the attributes PowerDNS wants. I&#39;ve sent an email to the PowerDNS
11176 developers asking for their view on this schema and if they are
11177 interested in providing such schema with PowerDNS, and I hope my
11178 message will be accepted into their mailing list soon.&lt;/p&gt;
11179
11180 &lt;p&gt;&lt;strong&gt;ISC dhcp&lt;/strong&gt;&lt;/p&gt;
11181
11182 &lt;p&gt;The DHCP server searches for specific objectclass and requests all
11183 the object attributes, and then uses the attributes it want. This
11184 make it harder to figure out exactly what attributes are used, but
11185 thanks to the working example in Debian Edu I can at least get an idea
11186 what is needed without having to read the source code.&lt;/p&gt;
11187
11188 &lt;p&gt;In the DHCP server configuration, the LDAP base to use and the
11189 search filter to use to locate the correct dhcpServer entity is
11190 stored. These are the relevant entries from
11191 /etc/dhcp3/dhcpd.conf:&lt;/p&gt;
11192
11193 &lt;blockquote&gt;&lt;pre&gt;
11194 ldap-base-dn &quot;dc=skole,dc=skolelinux,dc=no&quot;;
11195 ldap-dhcp-server-cn &quot;dhcp&quot;;
11196 &lt;/pre&gt;&lt;/blockquote&gt;
11197
11198 &lt;p&gt;The DHCP server uses this information to nest all the DHCP
11199 configuration it need. The cn &quot;dhcp&quot; is located using the given LDAP
11200 base and the filter &quot;(&amp;(objectClass=dhcpServer)(cn=dhcp))&quot;. The
11201 search result is this entry:&lt;/p&gt;
11202
11203 &lt;blockquote&gt;&lt;pre&gt;
11204 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
11205 cn: dhcp
11206 objectClass: top
11207 objectClass: dhcpServer
11208 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
11209 &lt;/pre&gt;&lt;/blockquote&gt;
11210
11211 &lt;p&gt;The content of the dhcpServiceDN attribute is next used to locate the
11212 subtree with DHCP configuration. The DHCP configuration subtree base
11213 is located using a base scope search with base &quot;cn=DHCP
11214 Config,dc=skole,dc=skolelinux,dc=no&quot; and filter
11215 &quot;(&amp;(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))&quot;.
11216 The search result is this entry:&lt;/p&gt;
11217
11218 &lt;blockquote&gt;&lt;pre&gt;
11219 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
11220 cn: DHCP Config
11221 objectClass: top
11222 objectClass: dhcpService
11223 objectClass: dhcpOptions
11224 dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
11225 dhcpStatements: ddns-update-style none
11226 dhcpStatements: authoritative
11227 dhcpOption: smtp-server code 69 = array of ip-address
11228 dhcpOption: www-server code 72 = array of ip-address
11229 dhcpOption: wpad-url code 252 = text
11230 &lt;/pre&gt;&lt;/blockquote&gt;
11231
11232 &lt;p&gt;Next, the entire subtree is processed, one level at the time. When
11233 all the DHCP configuration is loaded, it is ready to receive requests.
11234 The subtree in Debian Edu contain objects with object classes
11235 top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
11236 top/dhcpSubnet, top/dhcpGroup and top/dhcpHost. These provide options
11237 and information about netmasks, dynamic range etc. Leaving out the
11238 details here because it is not relevant for the focus of my
11239 investigation, which is to see if it is possible to merge dns and dhcp
11240 related computer objects.&lt;/p&gt;
11241
11242 &lt;p&gt;When a DHCP request come in, LDAP is searched for the MAC address
11243 of the client (00:00:00:00:00:00 in this example), using a subtree
11244 scoped search with &quot;cn=DHCP Config,dc=skole,dc=skolelinux,dc=no&quot; as
11245 the base and &quot;(&amp;(objectClass=dhcpHost)(dhcpHWAddress=ethernet
11246 00:00:00:00:00:00))&quot; as the filter. This is what a host object look
11247 like:&lt;/p&gt;
11248
11249 &lt;blockquote&gt;&lt;pre&gt;
11250 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
11251 cn: hostname
11252 objectClass: top
11253 objectClass: dhcpHost
11254 dhcpHWAddress: ethernet 00:00:00:00:00:00
11255 dhcpStatements: fixed-address hostname
11256 &lt;/pre&gt;&lt;/blockquote&gt;
11257
11258 &lt;p&gt;There is less flexiblity in the way LDAP searches are done here.
11259 The object classes need to have fixed names, and the configuration
11260 need to be stored in a fairly specific LDAP structure. On the
11261 positive side, the invidiual dhcpHost entires can be anywhere without
11262 the DN pointed to by the dhcpServer entries. The latter should make
11263 it possible to group all host entries in a subtree next to the
11264 configuration entries, and this subtree can also be shared with the
11265 DNS server if the schema proposed above is combined with the dhcpHost
11266 structural object class.
11267
11268 &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
11269
11270 &lt;p&gt;The PowerDNS implementation seem to be very flexible when it come
11271 to which LDAP schemas to use. While its &quot;tree&quot; mode is rigid when it
11272 come to the the LDAP structure, the &quot;strict&quot; mode is very flexible,
11273 allowing DNS objects to be stored anywhere under the base cn specified
11274 in the configuration.&lt;/p&gt;
11275
11276 &lt;p&gt;The DHCP implementation on the other hand is very inflexible, both
11277 regarding which LDAP schemas to use and which LDAP structure to use.
11278 I guess one could implement ones own schema, as long as the
11279 objectclasses and attributes have the names used, but this do not
11280 really help when the DHCP subtree need to have a fairly fixed
11281 structure.&lt;/p&gt;
11282
11283 &lt;p&gt;Based on the observed behaviour, I suspect a LDAP structure like
11284 this might work for Debian Edu:&lt;/p&gt;
11285
11286 &lt;blockquote&gt;&lt;pre&gt;
11287 ou=services
11288 cn=machine-info (dhcpService) - dhcpServiceDN points here
11289 cn=dhcp (dhcpServer)
11290 cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
11291 cn=10.0.2.0 (dhcpSubnet)
11292 cn=group1 (dhcpGroup/dhcpOptions)
11293 cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
11294 cn=192.168.0.0 (dhcpSubnet)
11295 cn=group1 (dhcpGroup/dhcpOptions)
11296 ou=machines - PowerDNS base points here
11297 cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
11298 &lt;/pre&gt;&lt;/blockquote&gt;
11299
11300 &lt;P&gt;This is not tested yet. If the DHCP server require the dhcpHost
11301 entries to be in the dhcpGroup subtrees, the entries can be stored
11302 there instead of a common machines subtree, and the PowerDNS base
11303 would have to be moved one level up to the machine-info subtree.&lt;/p&gt;
11304
11305 &lt;p&gt;The combined object under the machines subtree would look something
11306 like this:&lt;/p&gt;
11307
11308 &lt;blockquote&gt;&lt;pre&gt;
11309 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
11310 dc: hostname
11311 objectClass: top
11312 objectClass: dhcpHost
11313 objectclass: domainrelatedobject
11314 objectclass: dnsDomainAux
11315 associateddomain: hostname.intern
11316 arecord: 10.11.12.13
11317 dhcpHWAddress: ethernet 00:00:00:00:00:00
11318 dhcpStatements: fixed-address hostname.intern
11319 &lt;/pre&gt;&lt;/blockquote&gt;
11320
11321 &lt;/p&gt;One could even add the LTSP configuration associated with a given
11322 machine, as long as the required attributes are available in a
11323 auxiliary object class.&lt;/p&gt;
11324 </description>
11325 </item>
11326
11327 <item>
11328 <title>Combining PowerDNS and ISC DHCP LDAP objects</title>
11329 <link>https://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html</link>
11330 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html</guid>
11331 <pubDate>Wed, 14 Jul 2010 23:45:00 +0200</pubDate>
11332 <description>&lt;p&gt;For a while now, I have wanted to find a way to change the DNS and
11333 DHCP services in Debian Edu to use the same LDAP objects for a given
11334 computer, to avoid the possibility of having a inconsistent state for
11335 a computer in LDAP (as in DHCP but no DNS entry or the other way
11336 around) and make it easier to add computers to LDAP.&lt;/p&gt;
11337
11338 &lt;p&gt;I&#39;ve looked at how powerdns and dhcpd is using LDAP, and using this
11339 information finally found a solution that seem to work.&lt;/p&gt;
11340
11341 &lt;p&gt;The old setup required three LDAP objects for a given computer.
11342 One forward DNS entry, one reverse DNS entry and one DHCP entry. If
11343 we switch powerdns to use its strict LDAP method (ldap-method=strict
11344 in pdns-debian-edu.conf), the forward and reverse DNS entries are
11345 merged into one while making it impossible to transfer the reverse map
11346 to a slave DNS server.&lt;/p&gt;
11347
11348 &lt;p&gt;If we also replace the object class used to get the DNS related
11349 attributes to one allowing these attributes to be combined with the
11350 dhcphost object class, we can merge the DNS and DHCP entries into one.
11351 I&#39;ve written such object class in the dnsdomainaux.schema file (need
11352 proper OIDs, but that is a minor issue), and tested the setup. It
11353 seem to work.&lt;/p&gt;
11354
11355 &lt;p&gt;With this test setup in place, we can get away with one LDAP object
11356 for both DNS and DHCP, and even the LTSP configuration I suggested in
11357 an earlier email. The combined LDAP object will look something like
11358 this:&lt;/p&gt;
11359
11360 &lt;blockquote&gt;&lt;pre&gt;
11361 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
11362 cn: hostname
11363 objectClass: dhcphost
11364 objectclass: domainrelatedobject
11365 objectclass: dnsdomainaux
11366 associateddomain: hostname.intern
11367 arecord: 10.11.12.13
11368 dhcphwaddress: ethernet 00:00:00:00:00:00
11369 dhcpstatements: fixed-address hostname
11370 ldapconfigsound: Y
11371 &lt;/pre&gt;&lt;/blockquote&gt;
11372
11373 &lt;p&gt;The DNS server uses the associateddomain and arecord entries, while
11374 the DHCP server uses the dhcphwaddress and dhcpstatements entries
11375 before asking DNS to resolve the fixed-adddress. LTSP will use
11376 dhcphwaddress or associateddomain and the ldapconfig* attributes.&lt;/p&gt;
11377
11378 &lt;p&gt;I am not yet sure if I can get the DHCP server to look for its
11379 dhcphost in a different location, to allow us to put the objects
11380 outside the &quot;DHCP Config&quot; subtree, but hope to figure out a way to do
11381 that. If I can&#39;t figure out a way to do that, we can still get rid of
11382 the hosts subtree and move all its content into the DHCP Config tree
11383 (which probably should be renamed to be more related to the new
11384 content. I suspect cn=dnsdhcp,ou=services or something like that
11385 might be a good place to put it.&lt;/p&gt;
11386
11387 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
11388 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
11389 </description>
11390 </item>
11391
11392 <item>
11393 <title>Idea for storing LTSP configuration in LDAP</title>
11394 <link>https://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html</link>
11395 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html</guid>
11396 <pubDate>Sun, 11 Jul 2010 22:00:00 +0200</pubDate>
11397 <description>&lt;p&gt;Vagrant mentioned on IRC today that ltsp_config now support
11398 sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
11399 clients, and that this can be used to fetch configuration from LDAP if
11400 Debian Edu choose to store configuration there.&lt;/p&gt;
11401
11402 &lt;p&gt;Armed with this information, I got inspired and wrote a test module
11403 to get configuration from LDAP. The idea is to look up the MAC
11404 address of the client in LDAP, and look for attributes on the form
11405 ltspconfigsetting=value, and use this to export SETTING=value to the
11406 LTSP clients.&lt;/p&gt;
11407
11408 &lt;p&gt;The goal is to be able to store the LTSP configuration attributes
11409 in a &quot;computer&quot; LDAP object used by both DNS and DHCP, and thus
11410 allowing us to store all information about a computer in one place.&lt;/p&gt;
11411
11412 &lt;p&gt;This is a untested draft implementation, and I welcome feedback on
11413 this approach. A real LDAP schema for the ltspClientAux objectclass
11414 need to be written. Comments, suggestions, etc?&lt;/p&gt;
11415
11416 &lt;blockquote&gt;&lt;pre&gt;
11417 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
11418 #
11419 # Fetch LTSP client settings from LDAP based on MAC address
11420 #
11421 # Uses ethernet address as stored in the dhcpHost objectclass using
11422 # the dhcpHWAddress attribute or ethernet address stored in the
11423 # ieee802Device objectclass with the macAddress attribute.
11424 #
11425 # This module is written to be schema agnostic, and only depend on the
11426 # existence of attribute names.
11427 #
11428 # The LTSP configuration variables are saved directly using a
11429 # ltspConfig prefix and uppercasing the rest of the attribute name.
11430 # To set the SERVER variable, set the ltspConfigServer attribute.
11431 #
11432 # Some LDAP schema should be created with all the relevant
11433 # configuration settings. Something like this should work:
11434 #
11435 # objectclass ( 1.1.2.2 NAME &#39;ltspClientAux&#39;
11436 # SUP top
11437 # AUXILIARY
11438 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
11439
11440 LDAPSERVER=$(debian-edu-ldapserver)
11441 if [ &quot;$LDAPSERVER&quot; ] ; then
11442 LDAPBASE=$(debian-edu-ldapserver -b)
11443 for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk &#39;{print $5}&#39;|sort -u) ; do
11444 filter=&quot;(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))&quot;
11445 ldapsearch -h &quot;$LDAPSERVER&quot; -b &quot;$LDAPBASE&quot; -v -x &quot;$filter&quot; | \
11446 grep &#39;^ltspConfig&#39; | while read attr value ; do
11447 # Remove prefix and convert to upper case
11448 attr=$(echo $attr | sed &#39;s/^ltspConfig//i&#39; | tr a-z A-Z)
11449 # bass value on to clients
11450 eval &quot;$attr=$value; export $attr&quot;
11451 done
11452 done
11453 fi
11454 &lt;/pre&gt;&lt;/blockquote&gt;
11455
11456 &lt;p&gt;I&#39;m not sure this shell construction will work, because I suspect
11457 the while block might end up in a subshell causing the variables set
11458 there to not show up in ltsp-config, but if that is the case I am sure
11459 the code can be restructured to make sure the variables are passed on.
11460 I expect that can be solved with some testing. :)&lt;/p&gt;
11461
11462 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
11463 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
11464
11465 &lt;p&gt;Update 2010-07-17: I am aware of another effort to store LTSP
11466 configuration in LDAP that was created around year 2000 by
11467 &lt;a href=&quot;http://www.pcxperience.com/thinclient/documentation/ldap.html&quot;&gt;PC
11468 Xperience, Inc., 2000&lt;/a&gt;. I found its
11469 &lt;a href=&quot;http://people.redhat.com/alikins/ltsp/ldap/&quot;&gt;files&lt;/a&gt; on a
11470 personal home page over at redhat.com.&lt;/p&gt;
11471 </description>
11472 </item>
11473
11474 <item>
11475 <title>jXplorer, a very nice LDAP GUI</title>
11476 <link>https://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html</link>
11477 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html</guid>
11478 <pubDate>Fri, 9 Jul 2010 12:55:00 +0200</pubDate>
11479 <description>&lt;p&gt;Since
11480 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html&quot;&gt;my
11481 last post&lt;/a&gt; about available LDAP tools in Debian, I was told about a
11482 LDAP GUI that is even better than luma. The java application
11483 &lt;a href=&quot;http://jxplorer.org/&quot;&gt;jXplorer&lt;/a&gt; is claimed to be capable of
11484 moving LDAP objects and subtrees using drag-and-drop, and can
11485 authenticate using Kerberos. I have only tested the Kerberos
11486 authentication, but do not have a LDAP setup allowing me to rewrite
11487 LDAP with my test user yet. It is
11488 &lt;a href=&quot;http://packages.qa.debian.org/j/jxplorer.html&quot;&gt;available in
11489 Debian&lt;/a&gt; testing and unstable at the moment. The only problem I
11490 have with it is how it handle errors. If something go wrong, its
11491 non-intuitive behaviour require me to go through some query work list
11492 and remove the failing query. Nothing big, but very annoying.&lt;/p&gt;
11493 </description>
11494 </item>
11495
11496 <item>
11497 <title>Lenny-&gt;Squeeze upgrades, apt vs aptitude with the Gnome desktop</title>
11498 <link>https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html</link>
11499 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html</guid>
11500 <pubDate>Sat, 3 Jul 2010 23:55:00 +0200</pubDate>
11501 <description>&lt;p&gt;Here is a short update on my &lt;a
11502 href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;my
11503 Debian Lenny-&gt;Squeeze upgrade testing&lt;/a&gt;. Here is a summary of the
11504 difference for Gnome when it is upgraded by apt-get and aptitude. I&#39;m
11505 not reporting the status for KDE, because the upgrade crashes when
11506 aptitude try because of missing conflicts
11507 (&lt;a href=&quot;http://bugs.debian.org/584861&quot;&gt;#584861&lt;/a&gt; and
11508 &lt;a href=&quot;http://bugs.debian.org/585716&quot;&gt;#585716&lt;/a&gt;).&lt;/p&gt;
11509
11510 &lt;p&gt;At the end of the upgrade test script, dpkg -l is executed to get a
11511 complete list of the installed packages. Based on this I see these
11512 differences when I did a test run today. As usual, I do not really
11513 know what the correct set of packages would be, but thought it best to
11514 publish the difference.&lt;/p&gt;
11515
11516 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
11517
11518 &lt;blockquote&gt;&lt;p&gt;
11519 at-spi cpp-4.3 finger gnome-spell gstreamer0.10-gnomevfs
11520 libatspi1.0-0 libcupsys2 libeel2-data libgail-common libgdl-1-common
11521 libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
11522 libgtksourceview-common libpt-1.10.10-plugins-alsa
11523 libpt-1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
11524 libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
11525 python-4suite-xml python-eggtrayicon python-gtkhtml2
11526 python-gtkmozembed svgalibg1 xserver-xephyr zip
11527 &lt;/p&gt;&lt;/blockquote&gt;
11528
11529 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
11530
11531 &lt;blockquote&gt;&lt;p&gt;
11532 bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
11533 gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
11534 libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-50
11535 libbluetooth2 libcamel1.2-11 libcdio7 libcucul0 libcurl3
11536 libdirectfb-1.0-0 libdvdread3 libedata-cal1.2-6 libedataserver1.2-9
11537 libeel2-2.20 libepc-1.0-1 libepc-ui-1.0-1 libexchange-storage1.2-3
11538 libfaad0 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
11539 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
11540 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
11541 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtkhtml2-0
11542 libgtksourceview1.0-0 libgucharmap6 libhesiod0 libicu38 libisccc50
11543 libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++10
11544 libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
11545 libneon27 libnm-glib0 libnm-util0 libopal-2.2 libosp5
11546 libparted1.8-10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
11547 libpt-1.10.10 libraw1394-8 libsensors3 libsmbios2 libsoup2.2-8
11548 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1
11549 libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
11550 libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
11551 mysql-common swfdec-gnome totem-gstreamer wodim
11552 &lt;/p&gt;&lt;/blockquote&gt;
11553
11554 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
11555
11556 &lt;blockquote&gt;&lt;p&gt;
11557 gnome gnome-desktop-environment hamster-applet python-gnomeapplet
11558 python-gnomekeyring python-wnck rhythmbox-plugins xorg
11559 xserver-xorg-input-all xserver-xorg-input-evdev
11560 xserver-xorg-input-kbd xserver-xorg-input-mouse
11561 xserver-xorg-input-synaptics xserver-xorg-video-all
11562 xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
11563 xserver-xorg-video-chips xserver-xorg-video-cirrus
11564 xserver-xorg-video-dummy xserver-xorg-video-fbdev
11565 xserver-xorg-video-glint xserver-xorg-video-i128
11566 xserver-xorg-video-i740 xserver-xorg-video-mach64
11567 xserver-xorg-video-mga xserver-xorg-video-neomagic
11568 xserver-xorg-video-nouveau xserver-xorg-video-nv
11569 xserver-xorg-video-r128 xserver-xorg-video-radeon
11570 xserver-xorg-video-radeonhd xserver-xorg-video-rendition
11571 xserver-xorg-video-s3 xserver-xorg-video-s3virge
11572 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
11573 xserver-xorg-video-sis xserver-xorg-video-sisusb
11574 xserver-xorg-video-tdfx xserver-xorg-video-tga
11575 xserver-xorg-video-trident xserver-xorg-video-tseng
11576 xserver-xorg-video-vesa xserver-xorg-video-vmware
11577 xserver-xorg-video-voodoo
11578 &lt;/p&gt;&lt;/blockquote&gt;
11579
11580 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
11581
11582 &lt;blockquote&gt;&lt;p&gt;
11583 deskbar-applet xserver-xorg xserver-xorg-core
11584 xserver-xorg-input-wacom xserver-xorg-video-intel
11585 xserver-xorg-video-openchrome
11586 &lt;/p&gt;&lt;/blockquote&gt;
11587
11588 &lt;p&gt;I was told on IRC that the xorg-xserver package was
11589 &lt;a href=&quot;http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120&quot;&gt;changed
11590 in git&lt;/a&gt; today to try to get apt-get to not remove xorg completely.
11591 No idea when it hits Squeeze, but when it does I hope it will reduce
11592 the difference somewhat.
11593 </description>
11594 </item>
11595
11596 <item>
11597 <title>LUMA, a very nice LDAP GUI</title>
11598 <link>https://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html</link>
11599 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html</guid>
11600 <pubDate>Mon, 28 Jun 2010 00:30:00 +0200</pubDate>
11601 <description>&lt;p&gt;The last few days I have been looking into the status of the LDAP
11602 directory in Debian Edu, and in the process I started to miss a GUI
11603 tool to browse the LDAP tree. The only one I was able to find in
11604 Debian/Squeeze and Lenny is
11605 &lt;a href=&quot;http://luma.sourceforge.net/&quot;&gt;LUMA&lt;/a&gt;, which has proved to
11606 be a great tool to get a overview of the current LDAP directory
11607 populated by default in Skolelinux. Thanks to it, I have been able to
11608 find empty and obsolete subtrees, misplaced objects and duplicate
11609 objects. It will be installed by default in Debian/Squeeze. If you
11610 are working with LDAP, give it a go. :)&lt;/p&gt;
11611
11612 &lt;p&gt;I did notice one problem with it I have not had time to report to
11613 the BTS yet. There is no .desktop file in the package, so the tool do
11614 not show up in the Gnome and KDE menus, but only deep down in in the
11615 Debian submenu in KDE. I hope that can be fixed before Squeeze is
11616 released.&lt;/p&gt;
11617
11618 &lt;p&gt;I have not yet been able to get it to modify the tree yet. I would
11619 like to move objects and remove subtrees directly in the GUI, but have
11620 not found a way to do that with LUMA yet. So in the mean time, I use
11621 &lt;a href=&quot;http://www.lichteblau.com/ldapvi/&quot;&gt;ldapvi&lt;/a&gt; for that.&lt;/p&gt;
11622
11623 &lt;p&gt;If you have tips on other GUI tools for LDAP that might be useful
11624 in Debian Edu, please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
11625
11626 &lt;p&gt;Update 2010-06-29: Ross Reedstrom tipped us about the
11627 &lt;a href=&quot;http://packages.qa.debian.org/g/gq.html&quot;&gt;gq&lt;/a&gt; package as a
11628 useful GUI alternative. It seem like a good tool, but is unmaintained
11629 in Debian and got a RC bug keeping it out of Squeeze. Unless that
11630 changes, it will not be an option for Debian Edu based on Squeeze.&lt;/p&gt;
11631 </description>
11632 </item>
11633
11634 <item>
11635 <title>Idea for a change to LDAP schemas allowing DNS and DHCP info to be combined into one object</title>
11636 <link>https://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html</link>
11637 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html</guid>
11638 <pubDate>Thu, 24 Jun 2010 00:35:00 +0200</pubDate>
11639 <description>&lt;p&gt;A while back, I
11640 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html&quot;&gt;complained
11641 about the fact&lt;/a&gt; that it is not possible with the provided schemas
11642 for storing DNS and DHCP information in LDAP to combine the two sets
11643 of information into one LDAP object representing a computer.&lt;/p&gt;
11644
11645 &lt;p&gt;In the mean time, I discovered that a simple fix would be to make
11646 the dhcpHost object class auxiliary, to allow it to be combined with
11647 the dNSDomain object class, and thus forming one object for one
11648 computer when storing both DHCP and DNS information in LDAP.&lt;/p&gt;
11649
11650 &lt;p&gt;If I understand this correctly, it is not safe to do this change
11651 without also changing the assigned number for the object class, and I
11652 do not know enough about LDAP schema design to do that properly for
11653 Debian Edu.&lt;/p&gt;
11654
11655 &lt;p&gt;Anyway, for future reference, this is how I believe we could change
11656 the
11657 &lt;a href=&quot;http://tools.ietf.org/html/draft-ietf-dhc-ldap-schema-00&quot;&gt;DHCP
11658 schema&lt;/a&gt; to solve at least part of the problem with the LDAP schemas
11659 available today from IETF.&lt;/p&gt;
11660
11661 &lt;pre&gt;
11662 --- dhcp.schema (revision 65192)
11663 +++ dhcp.schema (working copy)
11664 @@ -376,7 +376,7 @@
11665 objectclass ( 2.16.840.1.113719.1.203.6.6
11666 NAME &#39;dhcpHost&#39;
11667 DESC &#39;This represents information about a particular client&#39;
11668 - SUP top
11669 + SUP top AUXILIARY
11670 MUST cn
11671 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
11672 X-NDS_CONTAINMENT (&#39;dhcpService&#39; &#39;dhcpSubnet&#39; &#39;dhcpGroup&#39;) )
11673 &lt;/pre&gt;
11674
11675 &lt;p&gt;I very much welcome clues on how to do this properly for Debian
11676 Edu/Squeeze. We provide the DHCP schema in our debian-edu-config
11677 package, and should thus be free to rewrite it as we see fit.&lt;/p&gt;
11678
11679 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
11680 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
11681 </description>
11682 </item>
11683
11684 <item>
11685 <title>Calling tasksel like the installer, while still getting useful output</title>
11686 <link>https://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html</link>
11687 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html</guid>
11688 <pubDate>Wed, 16 Jun 2010 14:55:00 +0200</pubDate>
11689 <description>&lt;p&gt;A few times I have had the need to simulate the way tasksel
11690 installs packages during the normal debian-installer run. Until now,
11691 I have ended up letting tasksel do the work, with the annoying problem
11692 of not getting any feedback at all when something fails (like a
11693 conffile question from dpkg or a download that fails), using code like
11694 this:
11695
11696 &lt;blockquote&gt;&lt;pre&gt;
11697 export DEBIAN_FRONTEND=noninteractive
11698 tasksel --new-install
11699 &lt;/pre&gt;&lt;/blockquote&gt;
11700
11701 This would invoke tasksel, let its automatic task selection pick the
11702 tasks to install, and continue to install the requested tasks without
11703 any output what so ever.
11704
11705 Recently I revisited this problem while working on the automatic
11706 package upgrade testing, because tasksel would some times hang without
11707 any useful feedback, and I want to see what is going on when it
11708 happen. Then it occured to me, I can parse the output from tasksel
11709 when asked to run in test mode, and use that aptitude command line
11710 printed by tasksel then to simulate the tasksel run. I ended up using
11711 code like this:
11712
11713 &lt;blockquote&gt;&lt;pre&gt;
11714 export DEBIAN_FRONTEND=noninteractive
11715 cmd=&quot;$(in_target tasksel -t --new-install | sed &#39;s/debconf-apt-progress -- //&#39;)&quot;
11716 $cmd
11717 &lt;/pre&gt;&lt;/blockquote&gt;
11718
11719 &lt;p&gt;The content of $cmd is typically something like &quot;&lt;tt&gt;aptitude -q
11720 --without-recommends -o APT::Install-Recommends=no -y install
11721 ~t^desktop$ ~t^gnome-desktop$ ~t^laptop$ ~pstandard ~prequired
11722 ~pimportant&lt;/tt&gt;&quot;, which will install the gnome desktop task, the
11723 laptop task and all packages with priority standard , required and
11724 important, just like tasksel would have done it during
11725 installation.&lt;/p&gt;
11726
11727 &lt;p&gt;A better approach is probably to extend tasksel to be able to
11728 install packages without using debconf-apt-progress, for use cases
11729 like this.&lt;/p&gt;
11730 </description>
11731 </item>
11732
11733 <item>
11734 <title>Lenny-&gt;Squeeze upgrades, removals by apt and aptitude</title>
11735 <link>https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html</link>
11736 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html</guid>
11737 <pubDate>Sun, 13 Jun 2010 09:05:00 +0200</pubDate>
11738 <description>&lt;p&gt;My
11739 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html&quot;&gt;testing
11740 of Debian upgrades&lt;/a&gt; from Lenny to Squeeze continues, and I&#39;ve
11741 finally made the upgrade logs available from
11742 &lt;a href=&quot;http://people.skolelinux.org/pere/debian-upgrade-testing/&quot;&gt;http://people.skolelinux.org/pere/debian-upgrade-testing/&lt;/a&gt;.
11743 I am now testing dist-upgrade of Gnome and KDE in a chroot using both
11744 apt and aptitude, and found their differences interesting. This time
11745 I will only focus on their removal plans.&lt;/p&gt;
11746
11747 &lt;p&gt;After installing a Gnome desktop and the laptop task, apt-get wants
11748 to remove 72 packages when dist-upgrading from Lenny to Squeeze. The
11749 surprising part is that it want to remove xorg and all
11750 xserver-xorg-video* drivers. Clearly not a good choice, but I am not
11751 sure why. When asking aptitude to do the same, it want to remove 129
11752 packages, but most of them are library packages I suspect are no
11753 longer needed. Both of them want to remove bluetooth packages, which
11754 I do not know. Perhaps these bluetooth packages are obsolete?&lt;/p&gt;
11755
11756 &lt;p&gt;For KDE, apt-get want to remove 82 packages, among them kdebase
11757 which seem like a bad idea and xorg the same way as with Gnome. Asking
11758 aptitude for the same, it wants to remove 192 packages, none which are
11759 too surprising.&lt;/p&gt;
11760
11761 &lt;p&gt;I guess the removal of xorg during upgrades should be investigated
11762 and avoided, and perhaps others as well. Here are the complete list
11763 of planned removals. The complete logs is available from the URL
11764 above. Note if you want to repeat these tests, that the upgrade test
11765 for kde+apt-get hung in the tasksel setup because of dpkg asking
11766 conffile questions. No idea why. I worked around it by using
11767 &#39;&lt;tt&gt;echo &gt;&gt; /proc/&lt;em&gt;pidofdpkg&lt;/em&gt;/fd/0&lt;/tt&gt;&#39; to tell dpkg to
11768 continue.&lt;/p&gt;
11769
11770 &lt;p&gt;&lt;b&gt;apt-get gnome 72&lt;/b&gt;
11771 &lt;br&gt;bluez-gnome cupsddk-drivers deskbar-applet gnome
11772 gnome-desktop-environment gnome-network-admin gtkhtml3.14
11773 iceweasel-gnome-support libavcodec51 libdatrie0 libgdl-1-0
11774 libgnomekbd2 libgnomekbdui2 libmetacity0 libslab0 libxcb-xlib0
11775 nautilus-cd-burner python-gnome2-desktop python-gnome2-extras
11776 serpentine swfdec-mozilla update-manager xorg xserver-xorg
11777 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
11778 xserver-xorg-input-kbd xserver-xorg-input-mouse
11779 xserver-xorg-input-synaptics xserver-xorg-input-wacom
11780 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
11781 xserver-xorg-video-ati xserver-xorg-video-chips
11782 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
11783 xserver-xorg-video-dummy xserver-xorg-video-fbdev
11784 xserver-xorg-video-glint xserver-xorg-video-i128
11785 xserver-xorg-video-i740 xserver-xorg-video-imstt
11786 xserver-xorg-video-intel xserver-xorg-video-mach64
11787 xserver-xorg-video-mga xserver-xorg-video-neomagic
11788 xserver-xorg-video-nsc xserver-xorg-video-nv
11789 xserver-xorg-video-openchrome xserver-xorg-video-r128
11790 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
11791 xserver-xorg-video-rendition xserver-xorg-video-s3
11792 xserver-xorg-video-s3virge xserver-xorg-video-savage
11793 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
11794 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
11795 xserver-xorg-video-tga xserver-xorg-video-trident
11796 xserver-xorg-video-tseng xserver-xorg-video-v4l
11797 xserver-xorg-video-vesa xserver-xorg-video-vga
11798 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9
11799 xulrunner-1.9-gnome-support&lt;/p&gt;
11800
11801 &lt;p&gt;&lt;b&gt;aptitude gnome 129&lt;/b&gt;
11802
11803 &lt;br&gt;bluez-gnome bluez-utils cpp-4.3 cupsddk-drivers dhcdbd
11804 djvulibre-desktop finger gnome-app-install gnome-mount
11805 gnome-network-admin gnome-spell gnome-vfs-obexftp
11806 gnome-volume-manager gstreamer0.10-gnomevfs gtkhtml3.14 libao2
11807 libavahi-compat-libdnssd1 libavahi-core5 libavcodec51 libbluetooth2
11808 libcamel1.2-11 libcdio7 libcucul0 libcupsys2 libcurl3 libdatrie0
11809 libdirectfb-1.0-0 libdvdread3 libedataserver1.2-9 libeel2-2.20
11810 libeel2-data libepc-1.0-1 libepc-ui-1.0-1 libfaad0 libgail-common
11811 libgd2-noxpm libgda3-3 libgda3-common libgdl-1-0 libgdl-1-common
11812 libggz2 libggzcore9 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0
11813 libgnomecups1.0-1 libgnomekbd2 libgnomekbdui2 libgnomeprint2.2-0
11814 libgnomeprint2.2-data libgnomeprintui2.2-0 libgnomeprintui2.2-common
11815 libgnomevfs2-bin libgpod3 libgraphviz4 libgtkhtml2-0
11816 libgtksourceview-common libgtksourceview1.0-0 libgucharmap6
11817 libhesiod0 libicu38 libiw29 libkpathsea4 libltdl3 libmagick++10
11818 libmagick10 libmalaga7 libmetacity0 libmtp7 libmysqlclient15off
11819 libnautilus-burn4 libneon27 libnm-glib0 libnm-util0 libopal-2.2
11820 libosp5 libparted1.8-10 libpoppler-glib3 libpoppler3 libpt-1.10.10
11821 libpt-1.10.10-plugins-alsa libpt-1.10.10-plugins-v4l libraw1394-8
11822 libsensors3 libslab0 libsmbios2 libsoup2.2-8 libssh2-1
11823 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1 libtotem-plparser10
11824 libtrackerclient0 libxalan2-java libxalan2-java-gcj libxcb-xlib0
11825 libxerces2-java libxerces2-java-gcj libxklavier12 libxtrap6
11826 libxxf86misc1 libzephyr3 mysql-common nautilus-cd-burner
11827 openoffice.org-writer2latex openssl-blacklist p7zip
11828 python-4suite-xml python-eggtrayicon python-gnome2-desktop
11829 python-gnome2-extras python-gtkhtml2 python-gtkmozembed
11830 python-numeric python-sexy serpentine svgalibg1 swfdec-gnome
11831 swfdec-mozilla totem-gstreamer update-manager wodim
11832 xserver-xorg-video-cyrix xserver-xorg-video-imstt
11833 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
11834 zip&lt;/p&gt;
11835
11836 &lt;p&gt;&lt;b&gt;apt-get kde 82&lt;/b&gt;
11837
11838 &lt;br&gt;cupsddk-drivers karm kaudiocreator kcoloredit kcontrol kde kde-core
11839 kdeaddons kdeartwork kdebase kdebase-bin kdebase-bin-kde3
11840 kdebase-kio-plugins kdesktop kdeutils khelpcenter kicker
11841 kicker-applets knewsticker kolourpaint konq-plugins konqueror korn
11842 kpersonalizer kscreensaver ksplash libavcodec51 libdatrie0 libkiten1
11843 libxcb-xlib0 quanta superkaramba texlive-base-bin xorg xserver-xorg
11844 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
11845 xserver-xorg-input-kbd xserver-xorg-input-mouse
11846 xserver-xorg-input-synaptics xserver-xorg-input-wacom
11847 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
11848 xserver-xorg-video-ati xserver-xorg-video-chips
11849 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
11850 xserver-xorg-video-dummy xserver-xorg-video-fbdev
11851 xserver-xorg-video-glint xserver-xorg-video-i128
11852 xserver-xorg-video-i740 xserver-xorg-video-imstt
11853 xserver-xorg-video-intel xserver-xorg-video-mach64
11854 xserver-xorg-video-mga xserver-xorg-video-neomagic
11855 xserver-xorg-video-nsc xserver-xorg-video-nv
11856 xserver-xorg-video-openchrome xserver-xorg-video-r128
11857 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
11858 xserver-xorg-video-rendition xserver-xorg-video-s3
11859 xserver-xorg-video-s3virge xserver-xorg-video-savage
11860 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
11861 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
11862 xserver-xorg-video-tga xserver-xorg-video-trident
11863 xserver-xorg-video-tseng xserver-xorg-video-v4l
11864 xserver-xorg-video-vesa xserver-xorg-video-vga
11865 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9&lt;/p&gt;
11866
11867 &lt;p&gt;&lt;b&gt;aptitude kde 192&lt;/b&gt;
11868 &lt;br&gt;bluez-utils cpp-4.3 cupsddk-drivers cvs dcoprss dhcdbd
11869 djvulibre-desktop dosfstools eyesapplet fifteenapplet finger gettext
11870 ghostscript-x imlib-base imlib11 indi kandy karm kasteroids
11871 kaudiocreator kbackgammon kbstate kcoloredit kcontrol kcron kdat
11872 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
11873 kdebase-bin-kde3 kdebase-kio-plugins kdeedu-data
11874 kdegraphics-kfile-plugins kdelirc kdemultimedia-kappfinder-data
11875 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
11876 kdepim-kfile-plugins kdepim-kio-plugins kdeprint kdesktop kdessh
11877 kdict kdnssd kdvi kedit keduca kenolaba kfax kfaxview kfouleggs
11878 kghostview khelpcenter khexedit kiconedit kitchensync klatin
11879 klickety kmailcvt kmenuedit kmid kmilo kmoon kmrml kodo kolourpaint
11880 kooka korn kpager kpdf kpercentage kpf kpilot kpoker kpovmodeler
11881 krec kregexpeditor ksayit ksim ksirc ksirtet ksmiletris ksmserver
11882 ksnake ksokoban ksplash ksvg ksysv ktip ktnef kuickshow kverbos
11883 kview kviewshell kvoctrain kwifimanager kwin kwin4 kworldclock
11884 kxsldbg libakode2 libao2 libarts1-akode libarts1-audiofile
11885 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
11886 libavahi-core5 libavc1394-0 libavcodec51 libbluetooth2
11887 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0 libdatrie0
11888 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
11889 libgail-common libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0
11890 libicu38 libiec61883-0 libindex0 libiw29 libk3b3 libkcal2b libkcddb1
11891 libkdeedu3 libkdepim1a libkgantt0 libkiten1 libkleopatra1 libkmime2
11892 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
11893 libksieve0 libktnef1 liblockdev1 libltdl3 libmagick10 libmimelib1c2a
11894 libmozjs1d libmpcdec3 libneon27 libnm-util0 libopensync0 libpisock9
11895 libpoppler-glib3 libpoppler-qt2 libpoppler3 libraw1394-8 libsmbios2
11896 libssh2-1 libsuitesparse-3.1.0 libtalloc1 libtiff-tools
11897 libxalan2-java libxalan2-java-gcj libxcb-xlib0 libxerces2-java
11898 libxerces2-java-gcj libxtrap6 mpeglib networkstatus
11899 openoffice.org-writer2latex pmount poster psutils quanta quanta-data
11900 superkaramba svgalibg1 tex-common texlive-base texlive-base-bin
11901 texlive-common texlive-doc-base texlive-fonts-recommended
11902 xserver-xorg-video-cyrix xserver-xorg-video-imstt
11903 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
11904 xulrunner-1.9&lt;/p&gt;
11905
11906 </description>
11907 </item>
11908
11909 <item>
11910 <title>Automatic upgrade testing from Lenny to Squeeze</title>
11911 <link>https://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html</link>
11912 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html</guid>
11913 <pubDate>Fri, 11 Jun 2010 22:50:00 +0200</pubDate>
11914 <description>&lt;p&gt;The last few days I have done some upgrade testing in Debian, to
11915 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
11916 have been discovered and reported in the process
11917 (&lt;a href=&quot;http://bugs.debian.org/585410&quot;&gt;#585410&lt;/a&gt; in nagios3-cgi,
11918 &lt;a href=&quot;http://bugs.debian.org/584879&quot;&gt;#584879&lt;/a&gt; already fixed in
11919 enscript and &lt;a href=&quot;http://bugs.debian.org/584861&quot;&gt;#584861&lt;/a&gt; in
11920 kdebase-workspace-data), and to get a more regular testing going on, I
11921 am working on a script to automate the test.&lt;/p&gt;
11922
11923 &lt;p&gt;The idea is to create a Lenny chroot and use tasksel to install a
11924 Gnome or KDE desktop installation inside the chroot before upgrading
11925 it. To ensure no services are started in the chroot, a policy-rc.d
11926 script is inserted. To make sure tasksel believe it is to install a
11927 desktop on a laptop, the tasksel tests are replaced in the chroot
11928 (only acceptable because this is a throw-away chroot).&lt;/p&gt;
11929
11930 &lt;p&gt;A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
11931 currently always fail because udev refuses to upgrade with the kernel
11932 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
11933 is created. The bug report
11934 &lt;a href=&quot;http://bugs.debian.org/566000&quot;&gt;#566000&lt;/a&gt; make me suspect
11935 this problem do not trigger in a chroot, but I touch the file anyway
11936 to make sure the upgrade go well. Testing on virtual and real
11937 hardware have failed me because of udev so far, and creating this file
11938 do the trick in such settings anyway. This is a
11939 &lt;a href=&quot;http://www.linuxquestions.org/questions/debian-26/failed-dist-upgrade-due-to-udev-config_sysfs_deprecated-nonsense-804130/&quot;&gt;known
11940 issue&lt;/a&gt; and the current udev behaviour is intended by the udev
11941 maintainer because he lack the resources to rewrite udev to keep
11942 working with old kernels or something like that. I really wish the
11943 udev upstream would keep udev backwards compatible, to avoid such
11944 upgrade problem, but given that they fail to do so, I guess
11945 documenting the way out of this mess is the best option we got for
11946 Debian Squeeze.&lt;/p&gt;
11947
11948 &lt;p&gt;Anyway, back to the task at hand, testing upgrades. This test
11949 script, which I call &lt;tt&gt;upgrade-test&lt;/tt&gt; for now, is doing the
11950 trick:&lt;/p&gt;
11951
11952 &lt;blockquote&gt;&lt;pre&gt;
11953 #!/bin/sh
11954 set -ex
11955
11956 if [ &quot;$1&quot; ] ; then
11957 desktop=$1
11958 else
11959 desktop=gnome
11960 fi
11961
11962 from=lenny
11963 to=squeeze
11964
11965 exec &amp;lt; /dev/null
11966 unset LANG
11967 mirror=http://ftp.skolelinux.org/debian
11968 tmpdir=chroot-$from-upgrade-$to-$desktop
11969 fuser -mv .
11970 debootstrap $from $tmpdir $mirror
11971 chroot $tmpdir aptitude update
11972 cat &gt; $tmpdir/usr/sbin/policy-rc.d &amp;lt;&amp;lt;EOF
11973 #!/bin/sh
11974 exit 101
11975 EOF
11976 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
11977 exit_cleanup() {
11978 umount $tmpdir/proc
11979 }
11980 mount -t proc proc $tmpdir/proc
11981 # Make sure proc is unmounted also on failure
11982 trap exit_cleanup EXIT INT
11983
11984 chroot $tmpdir aptitude -y install debconf-utils
11985
11986 # Make sure tasksel autoselection trigger. It need the test scripts
11987 # to return the correct answers.
11988 echo tasksel tasksel/desktop multiselect $desktop | \
11989 chroot $tmpdir debconf-set-selections
11990
11991 # Include the desktop and laptop task
11992 for test in desktop laptop ; do
11993 echo &gt; $tmpdir/usr/lib/tasksel/tests/$test &amp;lt;&amp;lt;EOF
11994 #!/bin/sh
11995 exit 2
11996 EOF
11997 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
11998 done
11999
12000 DEBIAN_FRONTEND=noninteractive
12001 DEBIAN_PRIORITY=critical
12002 export DEBIAN_FRONTEND DEBIAN_PRIORITY
12003 chroot $tmpdir tasksel --new-install
12004
12005 echo deb $mirror $to main &gt; $tmpdir/etc/apt/sources.list
12006 chroot $tmpdir aptitude update
12007 touch $tmpdir/etc/udev/kernel-upgrade
12008 chroot $tmpdir aptitude -y dist-upgrade
12009 fuser -mv
12010 &lt;/pre&gt;&lt;/blockquote&gt;
12011
12012 &lt;p&gt;I suspect it would be useful to test upgrades with both apt-get and
12013 with aptitude, but I have not had time to look at how they behave
12014 differently so far. I hope to get a cron job running to do the test
12015 regularly and post the result on the web. The Gnome upgrade currently
12016 work, while the KDE upgrade fail because of the bug in
12017 kdebase-workspace-data&lt;/p&gt;
12018
12019 &lt;p&gt;I am not quite sure what kind of extract from the huge upgrade logs
12020 (KDE 167 KiB, Gnome 516 KiB) it make sense to include in this blog
12021 post, so I will refrain from trying. I can report that for Gnome,
12022 aptitude report 760 packages upgraded, 448 newly installed, 129 to
12023 remove and 1 not upgraded and 1024MB need to be downloaded while for
12024 KDE the same numbers are 702 packages upgraded, 507 newly installed,
12025 193 to remove and 0 not upgraded and 1117MB need to be downloaded&lt;/p&gt;
12026
12027 &lt;p&gt;I am very happy to notice that the Gnome desktop + laptop upgrade
12028 is able to migrate to dependency based boot sequencing and parallel
12029 booting without a hitch. Was unsure if there were still bugs with
12030 packages failing to clean up their obsolete init.d script during
12031 upgrades, and no such problem seem to affect the Gnome desktop+laptop
12032 packages.&lt;/p&gt;
12033 </description>
12034 </item>
12035
12036 <item>
12037 <title>Upstart or sysvinit - as init.d scripts see it</title>
12038 <link>https://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html</link>
12039 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html</guid>
12040 <pubDate>Sun, 6 Jun 2010 23:55:00 +0200</pubDate>
12041 <description>&lt;p&gt;If Debian is to migrate to upstart on Linux, I expect some init.d
12042 scripts to migrate (some of) their operations to upstart job while
12043 keeping the init.d for hurd and kfreebsd. The packages with such
12044 needs will need a way to get their init.d scripts to behave
12045 differently when used with sysvinit and with upstart. Because of
12046 this, I had a look at the environment variables set when a init.d
12047 script is running under upstart, and when it is not.&lt;/p&gt;
12048
12049 &lt;p&gt;With upstart, I notice these environment variables are set when a
12050 script is started from rcS.d/ (ignoring some irrelevant ones like
12051 COLUMNS):&lt;/p&gt;
12052
12053 &lt;blockquote&gt;&lt;pre&gt;
12054 DEFAULT_RUNLEVEL=2
12055 previous=N
12056 PREVLEVEL=
12057 RUNLEVEL=
12058 runlevel=S
12059 UPSTART_EVENTS=startup
12060 UPSTART_INSTANCE=
12061 UPSTART_JOB=rc-sysinit
12062 &lt;/pre&gt;&lt;/blockquote&gt;
12063
12064 &lt;p&gt;With sysvinit, these environment variables are set for the same
12065 script.&lt;/p&gt;
12066
12067 &lt;blockquote&gt;&lt;pre&gt;
12068 INIT_VERSION=sysvinit-2.88
12069 previous=N
12070 PREVLEVEL=N
12071 RUNLEVEL=S
12072 runlevel=S
12073 &lt;/pre&gt;&lt;/blockquote&gt;
12074
12075 &lt;p&gt;The RUNLEVEL and PREVLEVEL environment variables passed on from
12076 sysvinit are not set by upstart. Not sure if it is intentional or not
12077 to not be compatible with sysvinit in this regard.&lt;/p&gt;
12078
12079 &lt;p&gt;For scripts needing to behave differently when upstart is used,
12080 looking for the UPSTART_JOB environment variable seem to be a good
12081 choice.&lt;/p&gt;
12082 </description>
12083 </item>
12084
12085 <item>
12086 <title>A manual for standards wars...</title>
12087 <link>https://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html</link>
12088 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html</guid>
12089 <pubDate>Sun, 6 Jun 2010 14:15:00 +0200</pubDate>
12090 <description>&lt;p&gt;Via the
12091 &lt;a href=&quot;http://feedproxy.google.com/~r/robweir/antic-atom/~3/QzU4RgoAGMg/weekly-links-10.html&quot;&gt;blog
12092 of Rob Weir&lt;/a&gt; I came across the very interesting essay named
12093 &lt;a href=&quot;http://faculty.haas.berkeley.edu/shapiro/wars.pdf&quot;&gt;The Art of
12094 Standards Wars&lt;/a&gt; (PDF 25 pages). I recommend it for everyone
12095 following the standards wars of today.&lt;/p&gt;
12096 </description>
12097 </item>
12098
12099 <item>
12100 <title>Sitesummary tip: Listing computer hardware models used at site</title>
12101 <link>https://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html</link>
12102 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html</guid>
12103 <pubDate>Thu, 3 Jun 2010 12:05:00 +0200</pubDate>
12104 <description>&lt;p&gt;When using sitesummary at a site to track machines, it is possible
12105 to get a list of the machine types in use thanks to the DMI
12106 information extracted from each machine. The script to do so is
12107 included in the sitesummary package, and here is example output from
12108 the Skolelinux build servers:&lt;/p&gt;
12109
12110 &lt;blockquote&gt;&lt;pre&gt;
12111 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
12112 vendor count
12113 Dell Computer Corporation 1
12114 PowerEdge 1750 1
12115 IBM 1
12116 eserver xSeries 345 -[8670M1X]- 1
12117 Intel 2
12118 [no-dmi-info] 3
12119 maintainer:~#
12120 &lt;/pre&gt;&lt;/blockquote&gt;
12121
12122 &lt;p&gt;The quality of the report depend on the quality of the DMI tables
12123 provided in each machine. Here there are Intel machines without model
12124 information listed with Intel as vendor and no model, and virtual Xen
12125 machines listed as [no-dmi-info]. One can add -l as a command line
12126 option to list the individual machines.&lt;/p&gt;
12127
12128 &lt;p&gt;A larger list is
12129 &lt;a href=&quot;http://narvikskolen.no/sitesummary/&quot;&gt;available from the the
12130 city of Narvik&lt;/a&gt;, which uses Skolelinux on all their shools and also
12131 provide the basic sitesummary report publicly. In their report there
12132 are ~1400 machines. I know they use both Ubuntu and Skolelinux on
12133 their machines, and as sitesummary is available in both distributions,
12134 it is trivial to get all of them to report to the same central
12135 collector.&lt;/p&gt;
12136 </description>
12137 </item>
12138
12139 <item>
12140 <title>KDM fail at boot with NVidia cards - and no one try to fix it?</title>
12141 <link>https://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html</link>
12142 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html</guid>
12143 <pubDate>Tue, 1 Jun 2010 17:05:00 +0200</pubDate>
12144 <description>&lt;p&gt;It is strange to watch how a bug in Debian causing KDM to fail to
12145 start at boot when an NVidia video card is used is handled. The
12146 problem seem to be that the nvidia X.org driver uses a long time to
12147 initialize, and this duration is longer than kdm is configured to
12148 wait.&lt;/p&gt;
12149
12150 &lt;p&gt;I came across two bugs related to this issue,
12151 &lt;a href=&quot;http://bugs.debian.org/583312&quot;&gt;#583312&lt;/a&gt; initially filed
12152 against initscripts and passed on to nvidia-glx when it became obvious
12153 that the nvidia drivers were involved, and
12154 &lt;a href=&quot;http://bugs.debian.org/524751&quot;&gt;#524751&lt;/a&gt; initially filed against
12155 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.&lt;/p&gt;
12156
12157 &lt;p&gt;To me, it seem that no-one is interested in actually solving the
12158 problem nvidia video card owners experience and make sure the Debian
12159 distribution work out of the box for these users. The nvidia driver
12160 maintainers expect kdm to be set up to wait longer, while kdm expect
12161 the nvidia driver maintainers to fix the driver to start faster, and
12162 while they wait for each other I guess the users end up switching to a
12163 distribution that work for them. I have no idea what the solution is,
12164 but I am pretty sure that waiting for each other is not it.&lt;/p&gt;
12165
12166 &lt;p&gt;I wonder why we end up handling bugs this way.&lt;/p&gt;
12167 </description>
12168 </item>
12169
12170 <item>
12171 <title>Parallellized boot seem to hold up well in Debian/testing</title>
12172 <link>https://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html</link>
12173 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html</guid>
12174 <pubDate>Thu, 27 May 2010 23:55:00 +0200</pubDate>
12175 <description>&lt;p&gt;A few days ago, parallel booting was enabled in Debian/testing.
12176 The feature seem to hold up pretty well, but three fairly serious
12177 issues are known and should be solved:
12178
12179 &lt;p&gt;&lt;ul&gt;
12180
12181 &lt;li&gt;The wicd package seen to
12182 &lt;a href=&quot;http://bugs.debian.org/508289&quot;&gt;break NFS mounting&lt;/a&gt; and
12183 &lt;a href=&quot;http://bugs.debian.org/581586&quot;&gt;network setup&lt;/a&gt; when
12184 parallel booting is enabled. No idea why, but the wicd maintainer
12185 seem to be on the case.&lt;/li&gt;
12186
12187 &lt;li&gt;The nvidia X driver seem to
12188 &lt;a href=&quot;http://bugs.debian.org/583312&quot;&gt;have a race condition&lt;/a&gt;
12189 triggered more easily when parallel booting is in effect. The
12190 maintainer is on the case.&lt;/li&gt;
12191
12192 &lt;li&gt;The sysv-rc package fail to properly enable dependency based boot
12193 sequencing (the shutdown is broken) when old file-rc users
12194 &lt;a href=&quot;http://bugs.debian.org/575080&quot;&gt;try to switch back&lt;/a&gt; to
12195 sysv-rc. One way to solve it would be for file-rc to create
12196 /etc/init.d/.legacy-bootordering, and another is to try to make
12197 sysv-rc more robust. Will investigate some more and probably upload a
12198 workaround in sysv-rc to help those trying to move from file-rc to
12199 sysv-rc get a working shutdown.&lt;/li&gt;
12200
12201 &lt;/ul&gt;&lt;/p&gt;
12202
12203 &lt;p&gt;All in all not many surprising issues, and all of them seem
12204 solvable before Squeeze is released. In addition to these there are
12205 some packages with bugs in their dependencies and run level settings,
12206 which I expect will be fixed in a reasonable time span.&lt;/p&gt;
12207
12208 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
12209 the BTS, please usertag the report to get it to show up at
12210 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
12211 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
12212
12213 &lt;p&gt;Update: Correct bug number to file-rc issue.&lt;/p&gt;
12214 </description>
12215 </item>
12216
12217 <item>
12218 <title>More flexible firmware handling in debian-installer</title>
12219 <link>https://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html</link>
12220 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html</guid>
12221 <pubDate>Sat, 22 May 2010 21:30:00 +0200</pubDate>
12222 <description>&lt;p&gt;After a long break from debian-installer development, I finally
12223 found time today to return to the project. Having to spend less time
12224 working dependency based boot in debian, as it is almost complete now,
12225 definitely helped freeing some time.&lt;/p&gt;
12226
12227 &lt;p&gt;A while back, I ran into a problem while working on Debian Edu. We
12228 include some firmware packages on the Debian Edu CDs, those needed to
12229 get disk and network controllers working. Without having these
12230 firmware packages available during installation, it is impossible to
12231 install Debian Edu on the given machine, and because our target group
12232 are non-technical people, asking them to provide firmware packages on
12233 an external medium is a support pain. Initially, I expected it to be
12234 enough to include the firmware packages on the CD to get
12235 debian-installer to find and use them. This proved to be wrong.
12236 Next, I hoped it was enough to symlink the relevant firmware packages
12237 to some useful location on the CD (tried /cdrom/ and
12238 /cdrom/firmware/). This also proved to not work, and at this point I
12239 found time to look at the debian-installer code to figure out what was
12240 going to work.&lt;/p&gt;
12241
12242 &lt;p&gt;The firmware loading code is in the hw-detect package, and a closer
12243 look revealed that it would only look for firmware packages outside
12244 the installation media, so the CD was never checked for firmware
12245 packages. It would only check USB sticks, floppies and other
12246 &quot;external&quot; media devices. Today I changed it to also look in the
12247 /cdrom/firmware/ directory on the mounted CD or DVD, which should
12248 solve the problem I ran into with Debian edu. I also changed it to
12249 look in /firmware/, to make sure the installer also find firmware
12250 provided in the initrd when booting the installer via PXE, to allow us
12251 to provide the same feature in the PXE setup included in Debian
12252 Edu.&lt;/p&gt;
12253
12254 &lt;p&gt;To make sure firmware deb packages with a license questions are not
12255 activated without asking if the license is accepted, I extended
12256 hw-detect to look for preinst scripts in the firmware packages, and
12257 run these before activating the firmware during installation. The
12258 license question is asked using debconf in the preinst, so this should
12259 solve the issue for the firmware packages I have looked at so far.&lt;/p&gt;
12260
12261 &lt;p&gt;If you want to discuss the details of these features, please
12262 contact us on debian-boot@lists.debian.org.&lt;/p&gt;
12263 </description>
12264 </item>
12265
12266 <item>
12267 <title>Parallellized boot is now the default in Debian/unstable</title>
12268 <link>https://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html</link>
12269 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html</guid>
12270 <pubDate>Fri, 14 May 2010 22:40:00 +0200</pubDate>
12271 <description>&lt;p&gt;Since this evening, parallel booting is the default in
12272 Debian/unstable for machines using dependency based boot sequencing.
12273 Apparently the testing of concurrent booting has been wider than
12274 expected, if I am to believe the
12275 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg00122.html&quot;&gt;input
12276 on debian-devel@&lt;/a&gt;, and I concluded a few days ago to move forward
12277 with the feature this weekend, to give us some time to detect any
12278 remaining problems before Squeeze is frozen. If serious problems are
12279 detected, it is simple to change the default back to sequential boot.
12280 The upload of the new sysvinit package also activate a new upstream
12281 version.&lt;/p&gt;
12282
12283 More information about
12284 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
12285 based boot sequencing&lt;/a&gt; is available from the Debian wiki. It is
12286 currently possible to disable parallel booting when one run into
12287 problems caused by it, by adding this line to /etc/default/rcS:&lt;/p&gt;
12288
12289 &lt;blockquote&gt;&lt;pre&gt;
12290 CONCURRENCY=none
12291 &lt;/pre&gt;&lt;/blockquote&gt;
12292
12293 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
12294 the BTS, please usertag the report to get it to show up at
12295 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
12296 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
12297 </description>
12298 </item>
12299
12300 <item>
12301 <title>Sitesummary tip: Listing MAC address of all clients</title>
12302 <link>https://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html</link>
12303 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html</guid>
12304 <pubDate>Fri, 14 May 2010 21:10:00 +0200</pubDate>
12305 <description>&lt;p&gt;In the recent Debian Edu versions, the
12306 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/HowTo/SiteSummary&quot;&gt;sitesummary
12307 system&lt;/a&gt; is used to keep track of the machines in the school
12308 network. Each machine will automatically report its status to the
12309 central server after boot and once per night. The network setup is
12310 also reported, and using this information it is possible to get the
12311 MAC address of all network interfaces in the machines. This is useful
12312 to update the DHCP configuration.&lt;/p&gt;
12313
12314 &lt;p&gt;To give some idea how to use sitesummary, here is a one-liner to
12315 ist all MAC addresses of all machines reporting to sitesummary. Run
12316 this on the collector host:&lt;/p&gt;
12317
12318 &lt;blockquote&gt;&lt;pre&gt;
12319 perl -MSiteSummary -e &#39;for_all_hosts(sub { print join(&quot; &quot;, get_macaddresses(shift)), &quot;\n&quot;; });&#39;
12320 &lt;/pre&gt;&lt;/blockquote&gt;
12321
12322 &lt;p&gt;This will list all MAC addresses assosiated with all machine, one
12323 line per machine and with space between the MAC addresses.&lt;/p&gt;
12324
12325 &lt;p&gt;To allow system administrators easier job at adding static DHCP
12326 addresses for hosts, it would be possible to extend this to fetch
12327 machine information from sitesummary and update the DHCP and DNS
12328 tables in LDAP using this information. Such tool is unfortunately not
12329 written yet.&lt;/p&gt;
12330 </description>
12331 </item>
12332
12333 <item>
12334 <title>systemd, an interesting alternative to upstart</title>
12335 <link>https://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html</link>
12336 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html</guid>
12337 <pubDate>Thu, 13 May 2010 22:20:00 +0200</pubDate>
12338 <description>&lt;p&gt;The last few days a new boot system called
12339 &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd&quot;&gt;systemd&lt;/a&gt;
12340 has been
12341 &lt;a href=&quot;http://0pointer.de/blog/projects/systemd.html&quot;&gt;introduced&lt;/a&gt;
12342
12343 to the free software world. I have not yet had time to play around
12344 with it, but it seem to be a very interesting alternative to
12345 &lt;a href=&quot;http://upstart.ubuntu.com/&quot;&gt;upstart&lt;/a&gt;, and might prove to be
12346 a good alternative for Debian when we are able to switch to an event
12347 based boot system. Tollef is
12348 &lt;a href=&quot;http://bugs.debian.org/580814&quot;&gt;in the process&lt;/a&gt; of getting
12349 systemd into Debian, and I look forward to seeing how well it work. I
12350 like the fact that systemd handles init.d scripts with dependency
12351 information natively, allowing them to run in parallel where upstart
12352 at the moment do not.&lt;/p&gt;
12353
12354 &lt;p&gt;Unfortunately do systemd have the same problem as upstart regarding
12355 platform support. It only work on recent Linux kernels, and also need
12356 some new kernel features enabled to function properly. This means
12357 kFreeBSD and Hurd ports of Debian will need a port or a different boot
12358 system. Not sure how that will be handled if systemd proves to be the
12359 way forward.&lt;/p&gt;
12360
12361 &lt;p&gt;In the mean time, based on the
12362 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg00122.html&quot;&gt;input
12363 on debian-devel@&lt;/a&gt; regarding parallel booting in Debian, I have
12364 decided to enable full parallel booting as the default in Debian as
12365 soon as possible (probably this weekend or early next week), to see if
12366 there are any remaining serious bugs in the init.d dependencies. A
12367 new version of the sysvinit package implementing this change is
12368 already in experimental. If all go well, Squeeze will be released
12369 with parallel booting enabled by default.&lt;/p&gt;
12370 </description>
12371 </item>
12372
12373 <item>
12374 <title>Parallellizing the boot in Debian Squeeze - ready for wider testing</title>
12375 <link>https://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html</link>
12376 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html</guid>
12377 <pubDate>Thu, 6 May 2010 23:25:00 +0200</pubDate>
12378 <description>&lt;p&gt;These days, the init.d script dependencies in Squeeze are quite
12379 complete, so complete that it is actually possible to run all the
12380 init.d scripts in parallell based on these dependencies. If you want
12381 to test your Squeeze system, make sure
12382 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
12383 based boot sequencing&lt;/a&gt; is enabled, and add this line to
12384 /etc/default/rcS:&lt;/p&gt;
12385
12386 &lt;blockquote&gt;&lt;pre&gt;
12387 CONCURRENCY=makefile
12388 &lt;/pre&gt;&lt;/blockquote&gt;
12389
12390 &lt;p&gt;That is it. It will cause sysv-rc to use the startpar tool to run
12391 scripts in parallel using the dependency information stored in
12392 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
12393 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
12394 to try to start the kdm and gdm scripts as early as possible, and will
12395 start the facilities required by kdm or gdm as early as possible to
12396 make this happen.&lt;/p&gt;
12397
12398 &lt;p&gt;Give it a try, and see if you like the result. If some services
12399 fail to start properly, it is most likely because they have incomplete
12400 init.d script dependencies in their startup script (or some of their
12401 dependent scripts have incomplete dependencies). Report bugs and get
12402 the package maintainers to fix it. :)&lt;/p&gt;
12403
12404 &lt;p&gt;Running scripts in parallel could be the default in Debian when we
12405 manage to get the init.d script dependencies complete and correct. I
12406 expect we will get there in Squeeze+1, if we get manage to test and
12407 fix the remaining issues.&lt;/p&gt;
12408
12409 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
12410 the BTS, please usertag the report to get it to show up at
12411 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
12412 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
12413 </description>
12414 </item>
12415
12416 <item>
12417 <title>Debian has switched to dependency based boot sequencing</title>
12418 <link>https://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html</link>
12419 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html</guid>
12420 <pubDate>Mon, 27 Jul 2009 23:50:00 +0200</pubDate>
12421 <description>&lt;p&gt;Since this evening, with the upload of sysvinit version 2.87dsf-2,
12422 and the upload of insserv version 1.12.0-10 yesterday, Debian unstable
12423 have been migrated to using dependency based boot sequencing. This
12424 conclude work me and others have been doing for the last three days.
12425 It feels great to see this finally part of the default Debian
12426 installation. Now we just need to weed out the last few problems that
12427 are bound to show up, to get everything ready for Squeeze.&lt;/p&gt;
12428
12429 &lt;p&gt;The next step is migrating /sbin/init from sysvinit to upstart, and
12430 fixing the more fundamental problem of handing the event based
12431 non-predictable kernel in the early boot.&lt;/p&gt;
12432 </description>
12433 </item>
12434
12435 <item>
12436 <title>Taking over sysvinit development</title>
12437 <link>https://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html</link>
12438 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html</guid>
12439 <pubDate>Wed, 22 Jul 2009 23:00:00 +0200</pubDate>
12440 <description>&lt;p&gt;After several years of frustration with the lack of activity from
12441 the existing sysvinit upstream developer, I decided a few weeks ago to
12442 take over the package and become the new upstream. The number of
12443 patches to track for the Debian package was becoming a burden, and the
12444 lack of synchronization between the distribution made it hard to keep
12445 the package up to date.&lt;/p&gt;
12446
12447 &lt;p&gt;On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
12448 and my Debian co-maintainer Kel Modderman. About 10 days ago, I made
12449 a new upstream tarball with version number 2.87dsf (for Debian, SuSe
12450 and Fedora), based on the patches currently in use in these
12451 distributions. We Debian maintainers plan to move to this tarball as
12452 the new upstream as soon as we find time to do the merge. Since the
12453 new tarball was created, we agreed with Werner at SuSe to make a new
12454 upstream project at &lt;a href=&quot;http://savannah.nongnu.org/&quot;&gt;Savannah&lt;/a&gt;, and continue
12455 development there. The project is registered and currently waiting
12456 for approval by the Savannah administrators, and as soon as it is
12457 approved, we will import the old versions from svn and continue
12458 working on the future release.&lt;/p&gt;
12459
12460 &lt;p&gt;It is a bit ironic that this is done now, when some of the involved
12461 distributions are moving to upstart as a syvinit replacement.&lt;/p&gt;
12462 </description>
12463 </item>
12464
12465 <item>
12466 <title>Debian boots quicker and quicker</title>
12467 <link>https://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html</link>
12468 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html</guid>
12469 <pubDate>Wed, 24 Jun 2009 21:40:00 +0200</pubDate>
12470 <description>&lt;p&gt;I spent Monday and tuesday this week in London with a lot of the
12471 people involved in the boot system on Debian and Ubuntu, to see if we
12472 could find more ways to speed up the boot system. This was an Ubuntu
12473 funded
12474 &lt;a href=&quot;https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint&quot;&gt;developer
12475 gathering&lt;/a&gt;. It was quite productive. We also discussed the future
12476 of boot systems, and ways to handle the increasing number of boot
12477 issues introduced by the Linux kernel becoming more and more
12478 asynchronous and event base. The Ubuntu approach using udev and
12479 upstart might be a good way forward. Time will show.&lt;/p&gt;
12480
12481 &lt;p&gt;Anyway, there are a few ways at the moment to speed up the boot
12482 process in Debian. All of these should be applied to get a quick
12483 boot:&lt;/p&gt;
12484
12485 &lt;ul&gt;
12486
12487 &lt;li&gt;Use dash as /bin/sh.&lt;/li&gt;
12488
12489 &lt;li&gt;Disable the init.d/hwclock*.sh scripts and make sure the hardware
12490 clock is in UTC.&lt;/li&gt;
12491
12492 &lt;li&gt;Install and activate the insserv package to enable
12493 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
12494 based boot sequencing&lt;/a&gt;, and enable concurrent booting.&lt;/li&gt;
12495
12496 &lt;/ul&gt;
12497
12498 These points are based on the Google summer of code work done by
12499 &lt;a href=&quot;http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/&quot;&gt;Carlos
12500 Villegas&lt;/a&gt;.
12501
12502 &lt;p&gt;Support for makefile-style concurrency during boot was uploaded to
12503 unstable yesterday. When we tested it, we were able to cut 6 seconds
12504 from the boot sequence. It depend on very correct dependency
12505 declaration in all init.d scripts, so I expect us to find edge cases
12506 where the dependences in some scripts are slightly wrong when we start
12507 using this.&lt;/p&gt;
12508
12509 &lt;p&gt;On our IRC channel for this effort, #pkg-sysvinit, a new idea was
12510 introduced by Raphael Geissert today, one that could affect the
12511 startup speed as well. Instead of starting some scripts concurrently
12512 from rcS.d/ and another set of scripts from rc2.d/, it would be
12513 possible to run a of them in the same process. A quick way to test
12514 this would be to enable insserv and run &#39;mv /etc/rc2.d/S* /etc/rcS.d/;
12515 insserv&#39;. Will need to test if that work. :)&lt;/p&gt;
12516 </description>
12517 </item>
12518
12519 <item>
12520 <title>BSAs påstander om piratkopiering møter motstand</title>
12521 <link>https://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html</link>
12522 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html</guid>
12523 <pubDate>Sun, 17 May 2009 23:05:00 +0200</pubDate>
12524 <description>&lt;p&gt;Hvert år de siste årene har BSA, lobbyfronten til de store
12525 programvareselskapene som Microsoft og Apple, publisert en rapport der
12526 de gjetter på hvor mye piratkopiering påfører i tapte inntekter i
12527 ulike land rundt om i verden. Resultatene er tendensiøse. For noen
12528 dager siden kom
12529 &lt;a href=&quot;http://global.bsa.org/globalpiracy2008/studies/globalpiracy2008.pdf&quot;&gt;siste
12530 rapport&lt;/a&gt;, og det er flere kritiske kommentarer publisert de siste
12531 dagene. Et spesielt interessant kommentar fra Sverige,
12532 &lt;a href=&quot;http://www.idg.se/2.1085/1.229795/bsa-hoftade-sverigesiffror&quot;&gt;BSA
12533 höftade Sverigesiffror&lt;/a&gt;, oppsummeres slik:&lt;/p&gt;
12534
12535 &lt;blockquote&gt;
12536 I sin senaste rapport slår BSA fast att 25 procent av all mjukvara i
12537 Sverige är piratkopierad. Det utan att ha pratat med ett enda svenskt
12538 företag. &quot;Man bör nog kanske inte se de här siffrorna som helt
12539 exakta&quot;, säger BSAs Sverigechef John Hugosson.
12540 &lt;/blockquote&gt;
12541
12542 &lt;p&gt;Mon tro om de er like metodiske når de gjetter på andelen piratkopiering i Norge? To andre kommentarer er &lt;a
12543 href=&quot;http://www.vnunet.com/vnunet/comment/2242134/bsa-piracy-figures-shot-reality&quot;&gt;BSA
12544 piracy figures need a shot of reality&lt;/a&gt; og &lt;a
12545 href=&quot;http://www.michaelgeist.ca/content/view/3958/125/&quot;&gt;Does The WIPO
12546 Copyright Treaty Work?&lt;/a&gt;&lt;/p&gt;
12547
12548 &lt;p&gt;Fant lenkene via &lt;a
12549 href=&quot;http://tech.slashdot.org/article.pl?sid=09/05/17/1632242&quot;&gt;oppslag
12550 på Slashdot&lt;/a&gt;.&lt;/p&gt;
12551 </description>
12552 </item>
12553
12554 <item>
12555 <title>IDG mener linux i servermarkedet vil vokse med 21% i 2009</title>
12556 <link>https://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html</link>
12557 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html</guid>
12558 <pubDate>Thu, 7 May 2009 22:30:00 +0200</pubDate>
12559 <description>&lt;p&gt;Kom over
12560 &lt;a href=&quot;http://news.cnet.com/8301-13505_3-10216873-16.html&quot;&gt;interessante
12561 tall&lt;/a&gt; fra IDG om utviklingen av linuxservermarkedet. Fikk meg til
12562 å tenke på antall tjenermaskiner ved Universitetet i Oslo der jeg
12563 jobber til daglig. En rask opptelling forteller meg at vi har 490
12564 (61%) fysiske unix-tjener (mest linux men også noen solaris) og 196
12565 (25%) windowstjenere, samt 112 (14%) virtuelle unix-tjenere. Med den
12566 bakgrunnskunnskapen kan jeg godt tro at IDG er inne på noe.&lt;/p&gt;
12567 </description>
12568 </item>
12569
12570 <item>
12571 <title>Kryptert harddisk - naturligvis</title>
12572 <link>https://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html</link>
12573 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html</guid>
12574 <pubDate>Sat, 2 May 2009 15:30:00 +0200</pubDate>
12575 <description>&lt;p&gt;&lt;a href=&quot;http://www.dagensit.no/trender/article1658676.ece&quot;&gt;Dagens
12576 IT melder&lt;/a&gt; at Intel hevder at det er dyrt å miste en datamaskin,
12577 når en tar tap av arbeidstid, fortrolige dokumenter,
12578 personopplysninger og alt annet det innebærer. Det er ingen tvil om
12579 at det er en kostbar affære å miste sin datamaskin, og det er årsaken
12580 til at jeg har kryptert harddisken på både kontormaskinen og min
12581 bærbare. Begge inneholder personopplysninger jeg ikke ønsker skal
12582 komme på avveie, den første informasjon relatert til jobben min ved
12583 Universitetet i Oslo, og den andre relatert til blant annet
12584 foreningsarbeide. Kryptering av diskene gjør at det er lite
12585 sannsynlig at dophoder som kan finne på å rappe maskinene får noe ut
12586 av dem. Maskinene låses automatisk etter noen minutter uten bruk,
12587 og en reboot vil gjøre at de ber om passord før de vil starte opp.
12588 Jeg bruker Debian på begge maskinene, og installasjonssystemet der
12589 gjør det trivielt å sette opp krypterte disker. Jeg har LVM på toppen
12590 av krypterte partisjoner, slik at alt av datapartisjoner er kryptert.
12591 Jeg anbefaler alle å kryptere diskene på sine bærbare. Kostnaden når
12592 det er gjort slik jeg gjør det er minimale, og gevinstene er
12593 betydelige. En bør dog passe på passordet. Hvis det går tapt, må
12594 maskinen reinstalleres og alt er tapt.&lt;/p&gt;
12595
12596 &lt;p&gt;Krypteringen vil ikke stoppe kompetente angripere som f.eks. kjøler
12597 ned minnebrikkene før maskinen rebootes med programvare for å hente ut
12598 krypteringsnøklene. Kostnaden med å forsvare seg mot slike angripere
12599 er for min del høyere enn gevinsten. Jeg tror oddsene for at
12600 f.eks. etteretningsorganisasjoner har glede av å titte på mine
12601 maskiner er minimale, og ulempene jeg ville oppnå ved å forsøke å
12602 gjøre det vanskeligere for angripere med kompetanse og ressurser er
12603 betydelige.&lt;/p&gt;
12604 </description>
12605 </item>
12606
12607 <item>
12608 <title>Two projects that have improved the quality of free software a lot</title>
12609 <link>https://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html</link>
12610 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html</guid>
12611 <pubDate>Sat, 2 May 2009 15:00:00 +0200</pubDate>
12612 <description>&lt;p&gt;There are two software projects that have had huge influence on the
12613 quality of free software, and I wanted to mention both in case someone
12614 do not yet know them.&lt;/p&gt;
12615
12616 &lt;p&gt;The first one is &lt;a href=&quot;http://valgrind.org/&quot;&gt;valgrind&lt;/a&gt;, a
12617 tool to detect and expose errors in the memory handling of programs.
12618 It is easy to use, all one need to do is to run &#39;valgrind program&#39;,
12619 and it will report any problems on stdout. It is even better if the
12620 program include debug information. With debug information, it is able
12621 to report the source file name and line number where the problem
12622 occurs. It can report things like &#39;reading past memory block in file
12623 X line N, the memory block was allocated in file Y, line M&#39;, and
12624 &#39;using uninitialised value in control logic&#39;. This tool has made it
12625 trivial to investigate reproducible crash bugs in programs, and have
12626 reduced the number of this kind of bugs in free software a lot.
12627
12628 &lt;p&gt;The second one is
12629 &lt;a href=&quot;http://en.wikipedia.org/wiki/Coverity&quot;&gt;Coverity&lt;/a&gt; which is
12630 a source code checker. It is able to process the source of a program
12631 and find problems in the logic without running the program. It
12632 started out as the Stanford Checker and became well known when it was
12633 used to find bugs in the Linux kernel. It is now a commercial tool
12634 and the company behind it is running
12635 &lt;a href=&quot;http://www.scan.coverity.com/&quot;&gt;a community service&lt;/a&gt; for the
12636 free software community, where a lot of free software projects get
12637 their source checked for free. Several thousand defects have been
12638 found and fixed so far. It can find errors like &#39;lock L taken in file
12639 X line N is never released if exiting in line M&#39;, or &#39;the code in file
12640 Y lines O to P can never be executed&#39;. The projects included in the
12641 community service project have managed to get rid of a lot of
12642 reliability problems thanks to Coverity.&lt;/p&gt;
12643
12644 &lt;p&gt;I believe tools like this, that are able to automatically find
12645 errors in the source, are vital to improve the quality of software and
12646 make sure we can get rid of the crashing and failing software we are
12647 surrounded by today.&lt;/p&gt;
12648 </description>
12649 </item>
12650
12651 <item>
12652 <title>No patch is not better than a useless patch</title>
12653 <link>https://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html</link>
12654 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html</guid>
12655 <pubDate>Tue, 28 Apr 2009 09:30:00 +0200</pubDate>
12656 <description>&lt;p&gt;Julien Blache
12657 &lt;a href=&quot;http://blog.technologeek.org/2009/04/12/214&quot;&gt;claim that no
12658 patch is better than a useless patch&lt;/a&gt;. I completely disagree, as a
12659 patch allow one to discuss a concrete and proposed solution, and also
12660 prove that the issue at hand is important enough for someone to spent
12661 time on fixing it. No patch do not provide any of these positive
12662 properties.&lt;/p&gt;
12663 </description>
12664 </item>
12665
12666 <item>
12667 <title>Standardize on protocols and formats, not vendors and applications</title>
12668 <link>https://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html</link>
12669 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html</guid>
12670 <pubDate>Mon, 30 Mar 2009 11:50:00 +0200</pubDate>
12671 <description>&lt;p&gt;Where I work at the University of Oslo, one decision stand out as a
12672 very good one to form a long lived computer infrastructure. It is the
12673 simple one, lost by many in todays computer industry: Standardize on
12674 open network protocols and open exchange/storage formats, not applications.
12675 Applications come and go, while protocols and files tend to stay, and
12676 thus one want to make it easy to change application and vendor, while
12677 avoiding conversion costs and locking users to a specific platform or
12678 application.&lt;/p&gt;
12679
12680 &lt;p&gt;This approach make it possible to replace the client applications
12681 independently of the server applications. One can even allow users to
12682 use several different applications as long as they handle the selected
12683 protocol and format. In the normal case, only one client application
12684 is recommended and users only get help if they choose to use this
12685 application, but those that want to deviate from the easy path are not
12686 blocked from doing so.&lt;/p&gt;
12687
12688 &lt;p&gt;It also allow us to replace the server side without forcing the
12689 users to replace their applications, and thus allow us to select the
12690 best server implementation at any moment, when scale and resouce
12691 requirements change.&lt;/p&gt;
12692
12693 &lt;p&gt;I strongly recommend standardizing - on open network protocols and
12694 open formats, but I would never recommend standardizing on a single
12695 application that do not use open network protocol or open formats.&lt;/p&gt;
12696 </description>
12697 </item>
12698
12699 <item>
12700 <title>Returning from Skolelinux developer gathering</title>
12701 <link>https://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html</link>
12702 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html</guid>
12703 <pubDate>Sun, 29 Mar 2009 21:00:00 +0200</pubDate>
12704 <description>&lt;p&gt;I&#39;m sitting on the train going home from this weekends Debian
12705 Edu/Skolelinux development gathering. I got a bit done tuning the
12706 desktop, and looked into the dynamic service location protocol
12707 implementation avahi. It look like it could be useful for us. Almost
12708 30 people participated, and I believe it was a great environment to
12709 get to know the Skolelinux system. Walter Bender, involved in the
12710 development of the Sugar educational platform, presented his stuff and
12711 also helped me improve my OLPC installation. He also showed me that
12712 his Turtle Art application can be used in standalone mode, and we
12713 agreed that I would help getting it packaged for Debian. As a
12714 standalone application it would be great for Debian Edu. We also
12715 tried to get the video conferencing working with two OLPCs, but that
12716 proved to be too hard for us. The application seem to need more work
12717 before it is ready for me. I look forward to getting home and relax
12718 now. :)&lt;/p&gt;
12719 </description>
12720 </item>
12721
12722 <item>
12723 <title>Time for new LDAP schemas replacing RFC 2307?</title>
12724 <link>https://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</link>
12725 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</guid>
12726 <pubDate>Sun, 29 Mar 2009 20:30:00 +0200</pubDate>
12727 <description>&lt;p&gt;The state of standardized LDAP schemas on Linux is far from
12728 optimal. There is RFC 2307 documenting one way to store NIS maps in
12729 LDAP, and a modified version of this normally called RFC 2307bis, with
12730 some modifications to be compatible with Active Directory. The RFC
12731 specification handle the content of a lot of system databases, but do
12732 not handle DNS zones and DHCP configuration.&lt;/p&gt;
12733
12734 &lt;p&gt;In &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu/Skolelinux&lt;/a&gt;,
12735 we would like to store information about users, SMB clients/hosts,
12736 filegroups, netgroups (users and hosts), DHCP and DNS configuration,
12737 and LTSP configuration in LDAP. These objects have a lot in common,
12738 but with the current LDAP schemas it is not possible to have one
12739 object per entity. For example, one need to have at least three LDAP
12740 objects for a given computer, one with the SMB related stuff, one with
12741 DNS information and another with DHCP information. The schemas
12742 provided for DNS and DHCP are impossible to combine into one LDAP
12743 object. In addition, it is impossible to implement quick queries for
12744 netgroup membership, because of the way NIS triples are implemented.
12745 It just do not scale. I believe it is time for a few RFC
12746 specifications to cleam up this mess.&lt;/p&gt;
12747
12748 &lt;p&gt;I would like to have one LDAP object representing each computer in
12749 the network, and this object can then keep the SMB (ie host key), DHCP
12750 (mac address/name) and DNS (name/IP address) settings in one place.
12751 It need to be efficently stored to make sure it scale well.&lt;/p&gt;
12752
12753 &lt;p&gt;I would also like to have a quick way to map from a user or
12754 computer and to the net group this user or computer is a member.&lt;/p&gt;
12755
12756 &lt;p&gt;Active Directory have done a better job than unix heads like myself
12757 in this regard, and the unix side need to catch up. Time to start a
12758 new IETF work group?&lt;/p&gt;
12759 </description>
12760 </item>
12761
12762 <item>
12763 <title>Endelig er Debian Lenny gitt ut</title>
12764 <link>https://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html</link>
12765 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html</guid>
12766 <pubDate>Sun, 15 Feb 2009 11:50:00 +0100</pubDate>
12767 <description>&lt;p&gt;Endelig er &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;
12768 &lt;a href=&quot;http://www.debian.org/News/2009/20090214&quot;&gt;Lenny&lt;/a&gt; gitt ut.
12769 Et langt steg videre for Debian-prosjektet, og en rekke nye
12770 programpakker blir nå tilgjengelig for de av oss som bruker den
12771 stabile utgaven av Debian. Neste steg er nå å få
12772 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt; /
12773 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; ferdig
12774 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
12775 slippes løs på skolene. Takk til alle debian-utviklerne som har
12776 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
12777 bootsekvens tilgjengelig i stabil utgave, vha pakken
12778 &lt;tt&gt;insserv&lt;/tt&gt;.&lt;/p&gt;
12779 </description>
12780 </item>
12781
12782 <item>
12783 <title>Devcamp brought us closer to the Lenny based Debian Edu release</title>
12784 <link>https://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html</link>
12785 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html</guid>
12786 <pubDate>Sun, 7 Dec 2008 12:00:00 +0100</pubDate>
12787 <description>&lt;p&gt;This weekend we had a small developer gathering for Debian Edu in
12788 Oslo. Most of Saturday was used for the general assemly for the
12789 member organization, but the rest of the weekend I used to tune the
12790 LTSP installation. LTSP now work out of the box on the 10-network.
12791 Acer Aspire One proved to be a very nice thin client, with both
12792 screen, mouse and keybard in a small box. Was working on getting the
12793 diskless workstation setup configured out of the box, but did not
12794 finish it before the weekend was up.&lt;/p&gt;
12795
12796 &lt;p&gt;Did not find time to look at the 4 VGA cards in one box we got from
12797 the Brazilian group, so that will have to wait for the next
12798 development gathering. Would love to have the Debian Edu installer
12799 automatically detect and configure a multiseat setup when it find one
12800 of these cards.&lt;/p&gt;
12801 </description>
12802 </item>
12803
12804 <item>
12805 <title>The sorry state of multimedia browser plugins in Debian</title>
12806 <link>https://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html</link>
12807 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html</guid>
12808 <pubDate>Tue, 25 Nov 2008 00:10:00 +0100</pubDate>
12809 <description>&lt;p&gt;Recently I have spent some time evaluating the multimedia browser
12810 plugins available in Debian Lenny, to see which one we should use by
12811 default in Debian Edu. We need an embedded video playing plugin with
12812 control buttons to pause or stop the video, and capable of streaming
12813 all the multimedia content available on the web. The test results and
12814 notes are available on
12815 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;the
12816 Debian wiki&lt;/a&gt;. I was surprised how few of the plugins are able to
12817 fill this need. My personal video player favorite, VLC, has a really
12818 bad plugin which fail on a lot of the test pages. A lot of the MIME
12819 types I would expect to work with any free software player (like
12820 video/ogg), just do not work. And simple formats like the
12821 audio/x-mplegurl format (m3u playlists), just isn&#39;t supported by the
12822 totem and vlc plugins. I hope the situation will improve soon. No
12823 wonder sites use the proprietary Adobe flash to play video.&lt;/p&gt;
12824
12825 &lt;p&gt;For Lenny, we seem to end up with the mplayer plugin. It seem to
12826 be the only one fitting our needs. :/&lt;/p&gt;
12827 </description>
12828 </item>
12829
12830 </channel>
12831 </rss>