]> pere.pagekite.me Git - homepage.git/blob - blog/tags/debian/debian.rss
725816903692f0c358028c489ff9dcee8b1028e7
[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>http://people.skolelinux.org/pere/blog/</link>
7
8
9 <item>
10 <title>A program should be able to open its own files on Linux</title>
11 <link>http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</link>
12 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html</guid>
13 <pubDate>Sun, 5 Jun 2016 08:30:00 +0200</pubDate>
14 <description>&lt;p&gt;Many years ago, when koffice was fresh and with few users, I
15 decided to test its presentation tool when making the slides for a
16 talk I was giving for NUUG on Japhar, a free Java virtual machine. I
17 wrote the first draft of the slides, saved the result and went to bed
18 the day before I would give the talk. The next day I took a plane to
19 the location where the meeting should take place, and on the plane I
20 started up koffice again to polish the talk a bit, only to discover
21 that kpresenter refused to load its own data file. I cursed a bit and
22 started making the slides again from memory, to have something to
23 present when I arrived. I tested that the saved files could be
24 loaded, and the day seemed to be rescued. I continued to polish the
25 slides until I suddenly discovered that the saved file could no longer
26 be loaded into kpresenter. In the end I had to rewrite the slides
27 three times, condensing the content until the talk became shorter and
28 shorter. After the talk I was able to pinpoint the problem &amp;ndash;
29 kpresenter wrote inline images in a way itself could not understand.
30 Eventually that bug was fixed and kpresenter ended up being a great
31 program to make slides. The point I&#39;m trying to make is that we
32 expect a program to be able to load its own data files, and it is
33 embarrassing to its developers if it can&#39;t.&lt;/p&gt;
34
35 &lt;p&gt;Did you ever experience a program failing to load its own data
36 files from the desktop file browser? It is not a uncommon problem. A
37 while back I discovered that the screencast recorder
38 gtk-recordmydesktop would save an Ogg Theora video file the KDE file
39 browser would refuse to open. No video player claimed to understand
40 such file. I tracked down the cause being &lt;tt&gt;file --mime-type&lt;/tt&gt;
41 returning the application/ogg mime type, which no video player I had
42 installed listed as a MIME type they would understand. I asked for
43 &lt;a href=&quot;http://bugs.gw.com/view.php?id=382&quot;&gt;file to change its
44 behavour&lt;/a&gt; and use the MIME type video/ogg instead. I also asked
45 several video players to add video/ogg to their desktop files, to give
46 the file browser an idea what to do about Ogg Theora files. After a
47 while, the desktop file browsers in Debian started to handle the
48 output from gtk-recordmydesktop properly.&lt;/p&gt;
49
50 &lt;p&gt;But history repeats itself. A few days ago I tested the music
51 system Rosegarden again, and I discovered that the KDE and xfce file
52 browsers did not know what to do with the Rosegarden project files
53 (*.rg). I&#39;ve reported &lt;a href=&quot;http://bugs.debian.org/825993&quot;&gt;the
54 rosegarden problem to BTS&lt;/a&gt; and a fix is commited to git and will be
55 included in the next upload. To increase the chance of me remembering
56 how to fix the problem next time some program fail to load its files
57 from the file browser, here are some notes on how to fix it.&lt;/p&gt;
58
59 &lt;p&gt;The file browsers in Debian in general operates on MIME types.
60 There are two sources for a given files MIME type. The output from
61 &lt;tt&gt;file --mime-type&lt;/tt&gt; mentioned above, and the content of the
62 shared MIME type registry (under /usr/share/mime/). The file mime
63 type is mapped to programs supporting the mime type, and this
64 information is collected from
65 &lt;a href=&quot;https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/&quot;&gt;the
66 desktop files&lt;/a&gt; available in /usr/share/applications/. If there is
67 one desktop file claiming support for the MIME type of the file, it is
68 activated when asking to open a given file. If there are more, one
69 can normally select which one to use by right-clicking on the file and
70 selecting the wanted one using &#39;Open with&#39; or similar. In general
71 this work well. But it depend on each program picking a good mime
72 type (preferably
73 &lt;a href=&quot;http://www.iana.org/assignments/media-types/media-types.xhtml&quot;&gt;a
74 MIME type registered with IANA&lt;/a&gt;), file and/or the shared mime
75 registry recognizing the file and the desktop file to list the MIME
76 type in its list of supported MIME types.&lt;/p&gt;
77
78 &lt;p&gt;The &lt;tt&gt;/usr/share/mime/packages/rosegarden.xml&lt;/tt&gt; entry for
79 &lt;a href=&quot;http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec&quot;&gt;the
80 Shared MIME database&lt;/a&gt; look like this:&lt;/p&gt;
81
82 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
83 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
84 &amp;lt;mime-info xmlns=&quot;http://www.freedesktop.org/standards/shared-mime-info&quot;&amp;gt;
85 &amp;lt;mime-type type=&quot;audio/x-rosegarden&quot;&amp;gt;
86 &amp;lt;sub-class-of type=&quot;application/x-gzip&quot;/&amp;gt;
87 &amp;lt;comment&amp;gt;Rosegarden project file&amp;lt;/comment&amp;gt;
88 &amp;lt;glob pattern=&quot;*.rg&quot;/&amp;gt;
89 &amp;lt;/mime-type&amp;gt;
90 &amp;lt;/mime-info&amp;gt;
91 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
92
93 &lt;p&gt;This states that audio/x-rosegarden is a kind of application/x-gzip
94 (it is a gzipped XML file). Note, it is much better to use an
95 official MIME type registered with IANA than it is to make up ones own
96 unofficial ones like the x-rosegarden type used by rosegarden.&lt;/p&gt;
97
98 &lt;p&gt;The desktop file of the rosegarden program failed to list
99 audio/x-rosegarden in its list of supported MIME types, causing the
100 file browsers to have no idea what to do with *.rg files:&lt;/p&gt;
101
102 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
103 % grep Mime /usr/share/applications/rosegarden.desktop
104 MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
105 X-KDE-NativeMimeType=audio/x-rosegarden-composition
106 %
107 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
108
109 &lt;p&gt;The fix was to add &quot;audio/x-rosegarden;&quot; at the end of the
110 MimeType= line.&lt;/p&gt;
111
112 &lt;p&gt;If you run into a file which fail to open the correct program when
113 selected from the file browser, please check out the output from
114 &lt;tt&gt;file --mime-type&lt;/tt&gt; for the file, ensure the file ending and
115 MIME type is registered somewhere under /usr/share/mime/ and check
116 that some desktop file under /usr/share/applications/ is claiming
117 support for this MIME type. If not, please report a bug to have it
118 fixed. :)&lt;/p&gt;
119 </description>
120 </item>
121
122 <item>
123 <title>Isenkram with PackageKit support - new version 0.23 available in Debian unstable</title>
124 <link>http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</link>
125 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html</guid>
126 <pubDate>Wed, 25 May 2016 10:20:00 +0200</pubDate>
127 <description>&lt;p&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/isenkram&quot;&gt;The isenkram
128 system&lt;/a&gt; is a user-focused solution in Debian for handling hardware
129 related packages. The idea is to have a database of mappings between
130 hardware and packages, and pop up a dialog suggesting for the user to
131 install the packages to use a given hardware dongle. Some use cases
132 are when you insert a Yubikey, it proposes to install the software
133 needed to control it; when you insert a braille reader list it
134 proposes to install the packages needed to send text to the reader;
135 and when you insert a ColorHug screen calibrator it suggests to
136 install the driver for it. The system work well, and even have a few
137 command line tools to install firmware packages and packages for the
138 hardware already in the machine (as opposed to hotpluggable hardware).&lt;/p&gt;
139
140 &lt;p&gt;The system was initially written using aptdaemon, because I found
141 good documentation and example code on how to use it. But aptdaemon
142 is going away and is generally being replaced by
143 &lt;a href=&quot;http://www.freedesktop.org/software/PackageKit/&quot;&gt;PackageKit&lt;/a&gt;,
144 so Isenkram needed a rewrite. And today, thanks to the great patch
145 from my college Sunil Mohan Adapa in the FreedomBox project, the
146 rewrite finally took place. I&#39;ve just uploaded a new version of
147 Isenkram into Debian Unstable with the patch included, and the default
148 for the background daemon is now to use PackageKit. To check it out,
149 install the &lt;tt&gt;isenkram&lt;/tt&gt; package and insert some hardware dongle
150 and see if it is recognised.&lt;/p&gt;
151
152 &lt;p&gt;If you want to know what kind of packages isenkram would propose for
153 the machine it is running on, you can check out the isenkram-lookup
154 program. This is what it look like on a Thinkpad X230:&lt;/p&gt;
155
156 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
157 % isenkram-lookup
158 bluez
159 cheese
160 fprintd
161 fprintd-demo
162 gkrellm-thinkbat
163 hdapsd
164 libpam-fprintd
165 pidgin-blinklight
166 thinkfan
167 tleds
168 tp-smapi-dkms
169 tp-smapi-source
170 tpb
171 %p
172 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
173
174 &lt;p&gt;The hardware mappings come from several places. The preferred way
175 is for packages to announce their hardware support using
176 &lt;a href=&quot;https://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
177 cross distribution appstream system&lt;/a&gt;.
178 See
179 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;previous
180 blog posts about isenkram&lt;/a&gt; to learn how to do that.&lt;/p&gt;
181 </description>
182 </item>
183
184 <item>
185 <title>Discharge rate estimate in new battery statistics collector for Debian</title>
186 <link>http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</link>
187 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html</guid>
188 <pubDate>Mon, 23 May 2016 09:35:00 +0200</pubDate>
189 <description>&lt;p&gt;Yesterday I updated the
190 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats
191 package in Debian&lt;/a&gt; with a few patches sent to me by skilled and
192 enterprising users. There were some nice user and visible changes.
193 First of all, both desktop menu entries now work. A design flaw in
194 one of the script made the history graph fail to show up (its PNG was
195 dumped in ~/.xsession-errors) if no controlling TTY was available.
196 The script worked when called from the command line, but not when
197 called from the desktop menu. I changed this to look for a DISPLAY
198 variable or a TTY before deciding where to draw the graph, and now the
199 graph window pop up as expected.&lt;/p&gt;
200
201 &lt;p&gt;The next new feature is a discharge rate estimator in one of the
202 graphs (the one showing the last few hours). New is also the user of
203 colours showing charging in blue and discharge in red. The percentages
204 of this graph is relative to last full charge, not battery design
205 capacity.&lt;/p&gt;
206
207 &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;
208
209 &lt;p&gt;The other graph show the entire history of the collected battery
210 statistics, comparing it to the design capacity of the battery to
211 visualise how the battery life time get shorter over time. The red
212 line in this graph is what the previous graph considers 100 percent:
213
214 &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;
215
216 &lt;p&gt;In this graph you can see that I only charge the battery to 80
217 percent of last full capacity, and how the capacity of the battery is
218 shrinking. :(&lt;/p&gt;
219
220 &lt;p&gt;The last new feature is in the collector, which now will handle
221 more hardware models. On some hardware, Linux power supply
222 information is stored in /sys/class/power_supply/ACAD/, while the
223 collector previously only looked in /sys/class/power_supply/AC/. Now
224 both are checked to figure if there is power connected to the
225 machine.&lt;/p&gt;
226
227 &lt;p&gt;If you are interested in how your laptop battery is doing, please
228 check out the
229 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
230 in Debian unstable, or rebuild it on Jessie to get it working on
231 Debian stable. :) The upstream source is available from &lt;a
232 href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
233 Patches are very welcome.&lt;/p&gt;
234
235 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
236 activities, please send Bitcoin donations to my address
237 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
238 </description>
239 </item>
240
241 <item>
242 <title>Debian now with ZFS on Linux included</title>
243 <link>http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</link>
244 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html</guid>
245 <pubDate>Thu, 12 May 2016 07:30:00 +0200</pubDate>
246 <description>&lt;p&gt;Today, after many years of hard work from many people,
247 &lt;a href=&quot;http://zfsonlinux.org/&quot;&gt;ZFS for Linux&lt;/a&gt; finally entered
248 Debian. The package status can be seen on
249 &lt;a href=&quot;https://tracker.debian.org/pkg/zfs-linux&quot;&gt;the package tracker
250 for zfs-linux&lt;/a&gt;. and
251 &lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
252 team status page&lt;/a&gt;. If you want to help out, please join us.
253 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;The
254 source code&lt;/a&gt; is available via git on Alioth. It would also be
255 great if you could help out with
256 &lt;a href=&quot;https://tracker.debian.org/pkg/dkms&quot;&gt;the dkms package&lt;/a&gt;, as
257 it is an important piece of the puzzle to get ZFS working.&lt;/p&gt;
258 </description>
259 </item>
260
261 <item>
262 <title>What is the best multimedia player in Debian?</title>
263 <link>http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</link>
264 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html</guid>
265 <pubDate>Sun, 8 May 2016 09:40:00 +0200</pubDate>
266 <description>&lt;p&gt;&lt;strong&gt;Where I set out to figure out which multimedia player in
267 Debian claim support for most file formats.&lt;/strong&gt;&lt;/p&gt;
268
269 &lt;p&gt;A few years ago, I had a look at the media support for Browser
270 plugins in Debian, to get an idea which plugins to include in Debian
271 Edu. I created a script to extract the set of supported MIME types
272 for each plugin, and used this to find out which multimedia browser
273 plugin supported most file formats / media types.
274 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;The
275 result&lt;/a&gt; can still be seen on the Debian wiki, even though it have
276 not been updated for a while. But browser plugins are less relevant
277 these days, so I thought it was time to look at standalone
278 players.&lt;/p&gt;
279
280 &lt;p&gt;A few days ago I was tired of VLC not being listed as a viable
281 player when I wanted to play videos from the Norwegian National
282 Broadcasting Company, and decided to investigate why. The cause is a
283 &lt;a href=&quot;https://bugs.debian.org/822245&quot;&gt;missing MIME type in the VLC
284 desktop file&lt;/a&gt;. In the process I wrote a script to compare the set
285 of MIME types announced in the desktop file and the browser plugin,
286 only to discover that there is quite a large difference between the
287 two for VLC. This discovery made me dig up the script I used to
288 compare browser plugins, and adjust it to compare desktop files
289 instead, to try to figure out which multimedia player in Debian
290 support most file formats.&lt;/p&gt;
291
292 &lt;p&gt;The result can be seen on the Debian Wiki, as
293 &lt;a href=&quot;https://wiki.debian.org/DebianMultimedia/PlayerSupport&quot;&gt;a
294 table listing all MIME types supported by one of the packages included
295 in the table&lt;/a&gt;, with the package supporting most MIME types being
296 listed first in the table.&lt;/p&gt;
297
298 &lt;/p&gt;The best multimedia player in Debian? It is totem, followed by
299 parole, kplayer, mpv, vlc, smplayer mplayer-gui gnome-mpv and
300 kmplayer. Time for the other players to update their announced MIME
301 support?&lt;/p&gt;
302 </description>
303 </item>
304
305 <item>
306 <title>The Pyra - handheld computer with Debian preinstalled</title>
307 <link>http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</link>
308 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html</guid>
309 <pubDate>Wed, 4 May 2016 10:00:00 +0200</pubDate>
310 <description>A friend of mine made me aware of
311 &lt;a href=&quot;https://pyra-handheld.com/boards/pages/pyra/&quot;&gt;The Pyra&lt;/a&gt;, a
312 handheld computer which will be delivered with Debian preinstalled. I
313 would love to get one of those for my birthday. :)&lt;/p&gt;
314
315 &lt;p&gt;The machine is a complete ARM-based PC with micro HDMI, SATA, USB
316 plugs and many others connectors, and include a full keyboard and a 5&quot;
317 LCD touch screen. The 6000mAh battery is claimed to provide a whole
318 day of battery life time, but I have not seen any independent tests
319 confirming this. The vendor is still collecting preorders, and the
320 last I heard last night was that 22 more orders were needed before
321 production started.&lt;/p&gt;
322
323 &lt;p&gt;As far as I know, this is the first handheld preinstalled with
324 Debian. Please let me know if you know of any others. Is it the
325 first computer being sold with Debian preinstalled?&lt;/p&gt;
326 </description>
327 </item>
328
329 <item>
330 <title>Lets make a Norwegian Bokmål edition of The Debian Administrator&#39;s Handbook</title>
331 <link>http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</link>
332 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html</guid>
333 <pubDate>Sun, 10 Apr 2016 23:20:00 +0200</pubDate>
334 <description>&lt;p&gt;During this weekends
335 &lt;a href=&quot;http://www.nuug.no/news/Oslo__Takk_for_feilfiksingsfesten.shtml&quot;&gt;bug
336 squashing party and developer gathering&lt;/a&gt;, we decided to do our part
337 to make sure there are good books about Debian available in Norwegian
338 Bokmål, and got in touch with the people behind the
339 &lt;a href=&quot;http://debian-handbook.info/&quot;&gt;Debian Administrator&#39;s Handbook
340 project&lt;/a&gt; to get started. If you want to help out, please start
341 contributing using
342 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
343 hosted weblate project page&lt;/a&gt;, and get in touch using
344 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
345 translators mailing list&lt;/a&gt;. Please also check out
346 &lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
347 contributors&lt;/a&gt;.&lt;/p&gt;
348
349 &lt;p&gt;The book is already available on paper in English, French and
350 Japanese, and our goal is to get it available on paper in Norwegian
351 Bokmål too. In addition to the paper edition, there are also EPUB and
352 Mobi versions available. And there are incomplete translations
353 available for many more languages.&lt;/p&gt;
354 </description>
355 </item>
356
357 <item>
358 <title>One in two hundred Debian users using ZFS on Linux?</title>
359 <link>http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</link>
360 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html</guid>
361 <pubDate>Thu, 7 Apr 2016 22:30:00 +0200</pubDate>
362 <description>&lt;p&gt;Just for fun I had a look at the popcon number of ZFS related
363 packages in Debian, and was quite surprised with what I found. I use
364 ZFS myself at home, but did not really expect many others to do so.
365 But I might be wrong.&lt;/p&gt;
366
367 &lt;p&gt;According to
368 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=spl-linux&quot;&gt;the popcon
369 results for spl-linux&lt;/a&gt;, there are 1019 Debian installations, or
370 0.53% of the population, with the package installed. As far as I know
371 the only use of the spl-linux package is as a support library for ZFS
372 on Linux, so I use it here as proxy for measuring the number of ZFS
373 installation on Linux in Debian. In the kFreeBSD variant of Debian
374 the ZFS feature is already available, and there
375 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=zfsutils&quot;&gt;the popcon
376 results for zfsutils&lt;/a&gt; show 1625 Debian installations or 0.84% of
377 the population. So I guess I am not alone in using ZFS on Debian.&lt;/p&gt;
378
379 &lt;p&gt;But even though the Debian project leader Lucas Nussbaum
380 &lt;a href=&quot;https://lists.debian.org/debian-devel-announce/2015/04/msg00006.html&quot;&gt;announced
381 in April 2015&lt;/a&gt; that the legal obstacles blocking ZFS on Debian were
382 cleared, the package is still not in Debian. The package is again in
383 the NEW queue. Several uploads have been rejected so far because the
384 debian/copyright file was incomplete or wrong, but there is no reason
385 to give up. The current status can be seen on
386 &lt;a href=&quot;https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org&quot;&gt;the
387 team status page&lt;/a&gt;, and
388 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git&quot;&gt;the
389 source code&lt;/a&gt; is available on Alioth.&lt;/p&gt;
390
391 &lt;p&gt;As I want ZFS to be included in next version of Debian to make sure
392 my home server can function in the future using only official Debian
393 packages, and the current blocker is to get the debian/copyright file
394 accepted by the FTP masters in Debian, I decided a while back to try
395 to help out the team. This was the background for my blog post about
396 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html&quot;&gt;creating,
397 updating and checking debian/copyright semi-automatically&lt;/a&gt;, and I
398 used the techniques I explored there to try to find any errors in the
399 copyright file. It is not very easy to check every one of the around
400 2000 files in the source package, but I hope we this time got it
401 right. If you want to help out, check out the git source and try to
402 find missing entries in the debian/copyright file.&lt;/p&gt;
403 </description>
404 </item>
405
406 <item>
407 <title>Full battery stats collector is now available in Debian</title>
408 <link>http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</link>
409 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html</guid>
410 <pubDate>Wed, 23 Mar 2016 22:10:00 +0100</pubDate>
411 <description>&lt;p&gt;Since this morning, the battery-stats package in Debian include an
412 extended collector that will collect the complete battery history for
413 later processing and graphing. The original collector store the
414 battery level as percentage of last full level, while the new
415 collector also record battery vendor, model, serial number, design
416 full level, last full level and current battery level. This make it
417 possible to predict the lifetime of the battery as well as visualise
418 the energy flow when the battery is charging or discharging.&lt;/p&gt;
419
420 &lt;p&gt;The new tools are available in &lt;tt&gt;/usr/share/battery-stats/&lt;/tt&gt;
421 in the version 0.5.1 package in unstable. Get the new battery level graph
422 and lifetime prediction by running:
423
424 &lt;p&gt;&lt;pre&gt;
425 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
426 &lt;/pre&gt;&lt;/p&gt;
427
428 &lt;p&gt;Or select the &#39;Battery Level Graph&#39; from your application menu.&lt;/p&gt;
429
430 &lt;p&gt;The flow in/out of the battery can be seen by running (no menu
431 entry yet):&lt;/p&gt;
432
433 &lt;p&gt;&lt;pre&gt;
434 /usr/share/battery-stats/battery-stats-graph-flow
435 &lt;/pre&gt;&lt;/p&gt;
436
437 &lt;p&gt;I&#39;m not quite happy with the way the data is visualised, at least
438 when there are few data points. The graphs look a bit better with a
439 few years of data.&lt;/p&gt;
440
441 &lt;p&gt;A while back one important feature I use in the battery stats
442 collector broke in Debian. The scripts in
443 &lt;tt&gt;/usr/lib/pm-utils/power.d/&lt;/tt&gt; were no longer executed. I
444 suspect it happened when Jessie started using systemd, but I do not
445 know. The issue is reported as
446 &lt;a href=&quot;https://bugs.debian.org/818649&quot;&gt;bug #818649&lt;/a&gt; against
447 pm-utils. I managed to work around it by adding an udev rule to call
448 the collector script every time the power connector is connected and
449 disconnected. With this fix in place it was finally time to make a
450 new release of the package, and get it into Debian.&lt;/p&gt;
451
452 &lt;p&gt;If you are interested in how your laptop battery is doing, please
453 check out the
454 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;
455 in Debian unstable, or rebuild it on Jessie to get it working on
456 Debian stable. :) The upstream source is available from
457 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
458 As always, patches are very welcome.&lt;/p&gt;
459 </description>
460 </item>
461
462 <item>
463 <title>Making battery measurements a little easier in Debian</title>
464 <link>http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</link>
465 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html</guid>
466 <pubDate>Tue, 15 Mar 2016 15:00:00 +0100</pubDate>
467 <description>&lt;p&gt;Back in September, I blogged about
468 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html&quot;&gt;the
469 system I wrote to collect statistics about my laptop battery&lt;/a&gt;, and
470 how it showed the decay and death of this battery (now replaced). I
471 created a simple deb package to handle the collection and graphing,
472 but did not want to upload it to Debian as there were already
473 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;a battery-stats
474 package in Debian&lt;/a&gt; that should do the same thing, and I did not see
475 a point of uploading a competing package when battery-stats could be
476 fixed instead. I reported a few bugs about its non-function, and
477 hoped someone would step in and fix it. But no-one did.&lt;/p&gt;
478
479 &lt;p&gt;I got tired of waiting a few days ago, and took matters in my own
480 hands. The end result is that I am now the new upstream developer of
481 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
482 battery-stats in Debian, and the package in Debian unstable is finally
483 able to collect battery status using the &lt;tt&gt;/sys/class/power_supply/&lt;/tt&gt;
484 information provided by the Linux kernel. If you install the
485 battery-stats package from unstable now, you will be able to get a
486 graph of the current battery fill level, to get some idea about the
487 status of the battery. The source package build and work just fine in
488 Debian testing and stable (and probably oldstable too, but I have not
489 tested). The default graph you get for that system look like this:&lt;/p&gt;
490
491 &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;
492
493 &lt;p&gt;My plans for the future is to merge my old scripts into the
494 battery-stats package, as my old scripts collected a lot more details
495 about the battery. The scripts are merged into the upstream
496 battery-stats git repository already, but I am not convinced they work
497 yet, as I changed a lot of paths along the way. Will have to test a
498 bit more before I make a new release.&lt;/p&gt;
499
500 &lt;p&gt;I will also consider changing the file format slightly, as I
501 suspect the way I combine several values into one field might make it
502 impossible to know the type of the value when using it for processing
503 and graphing.&lt;/p&gt;
504
505 &lt;p&gt;If you would like I would like to keep an close eye on your laptop
506 battery, check out the battery-stats package in
507 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;Debian&lt;/a&gt; and
508 on
509 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-stats&quot;&gt;github&lt;/a&gt;.
510 I would love some help to improve the system further.&lt;/p&gt;
511 </description>
512 </item>
513
514 <item>
515 <title>Creating, updating and checking debian/copyright semi-automatically</title>
516 <link>http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</link>
517 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html</guid>
518 <pubDate>Fri, 19 Feb 2016 15:00:00 +0100</pubDate>
519 <description>&lt;p&gt;Making packages for Debian requires quite a lot of attention to
520 details. And one of the details is the content of the
521 debian/copyright file, which should list all relevant licenses used by
522 the code in the package in question, preferably in
523 &lt;a href=&quot;https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&quot;&gt;machine
524 readable DEP5 format&lt;/a&gt;.&lt;/p&gt;
525
526 &lt;p&gt;For large packages with lots of contributors it is hard to write
527 and update this file manually, and if you get some detail wrong, the
528 package is normally rejected by the ftpmasters. So getting it right
529 the first time around get the package into Debian faster, and save
530 both you and the ftpmasters some work.. Today, while trying to figure
531 out what was wrong with
532 &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447&quot;&gt;the
533 zfsonlinux copyright file&lt;/a&gt;, I decided to spend some time on
534 figuring out the options for doing this job automatically, or at least
535 semi-automatically.&lt;/p&gt;
536
537 &lt;p&gt;Lucikly, there are at least two tools available for generating the
538 file based on the code in the source package,
539 &lt;tt&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/debmake&quot;&gt;debmake&lt;/a&gt;&lt;/tt&gt;
540 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
541 not sure which one of them came first, but both seem to be able to
542 create a sensible draft file. As far as I can tell, none of them can
543 be trusted to get the result just right, so the content need to be
544 polished a bit before the file is OK to upload. I found the debmake
545 option in
546 &lt;a href=&quot;http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html&quot;&gt;a
547 blog posts from 2014&lt;/a&gt;.
548
549 &lt;p&gt;To generate using debmake, use the -cc option:
550
551 &lt;p&gt;&lt;pre&gt;
552 debmake -cc &gt; debian/copyright
553 &lt;/pre&gt;&lt;/p&gt;
554
555 &lt;p&gt;Note there are some problems with python and non-ASCII names, so
556 this might not be the best option.&lt;/p&gt;
557
558 &lt;p&gt;The cme option is based on a config parsing library, and I found
559 this approach in
560 &lt;a href=&quot;https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/&quot;&gt;a
561 blog post from 2015&lt;/a&gt;. To generate using cme, use the &#39;update
562 dpkg-copyright&#39; option:
563
564 &lt;p&gt;&lt;pre&gt;
565 cme update dpkg-copyright
566 &lt;/pre&gt;&lt;/p&gt;
567
568 &lt;p&gt;This will create or update debian/copyright. The cme tool seem to
569 handle UTF-8 names better than debmake.&lt;/p&gt;
570
571 &lt;p&gt;When the copyright file is created, I would also like some help to
572 check if the file is correct. For this I found two good options,
573 &lt;tt&gt;debmake -k&lt;/tt&gt; and &lt;tt&gt;license-reconcile&lt;/tt&gt;. The former seem
574 to focus on license types and file matching, and is able to detect
575 ineffective blocks in the copyright file. The latter reports missing
576 copyright holders and years, but was confused by inconsistent license
577 names (like CDDL vs. CDDL-1.0). I suspect it is good to use both and
578 fix all issues reported by them before uploading. But I do not know
579 if the tools and the ftpmasters agree on what is important to fix in a
580 copyright file, so the package might still be rejected.&lt;/p&gt;
581
582 &lt;p&gt;The devscripts tool &lt;tt&gt;licensecheck&lt;/tt&gt; deserve mentioning. It
583 will read through the source and try to find all copyright statements.
584 It is not comparing the result to the content of debian/copyright, but
585 can be useful when verifying the content of the copyright file.&lt;/p&gt;
586
587 &lt;p&gt;Are you aware of better tools in Debian to create and update
588 debian/copyright file. Please let me know, or blog about it on
589 planet.debian.org.&lt;/p&gt;
590
591 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
592 activities, please send Bitcoin donations to my address
593 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
594
595 &lt;p&gt;&lt;strong&gt;Update 2016-02-20&lt;/strong&gt;: I got a tip from Mike Gabriel
596 on how to use licensecheck and cdbs to create a draft copyright file
597
598 &lt;p&gt;&lt;pre&gt;
599 licensecheck --copyright -r `find * -type f` | \
600 /usr/lib/cdbs/licensecheck2dep5 &gt; debian/copyright.auto
601 &lt;/pre&gt;&lt;/p&gt;
602
603 &lt;p&gt;He mentioned that he normally check the generated file into the
604 version control system to make it easier to discover license and
605 copyright changes in the upstream source. I will try to do the same
606 with my packages in the future.&lt;/p&gt;
607
608 &lt;p&gt;&lt;strong&gt;Update 2016-02-21&lt;/strong&gt;: The cme author recommended
609 against using -quiet for new users, so I removed it from the proposed
610 command line.&lt;/p&gt;
611 </description>
612 </item>
613
614 <item>
615 <title>Using appstream in Debian to locate packages with firmware and mime type support</title>
616 <link>http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</link>
617 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html</guid>
618 <pubDate>Thu, 4 Feb 2016 16:40:00 +0100</pubDate>
619 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;appstream system&lt;/a&gt;
620 is taking shape in Debian, and one provided feature is a very
621 convenient way to tell you which package to install to make a given
622 firmware file available when the kernel is looking for it. This can
623 be done using apt-file too, but that is for someone else to blog
624 about. :)&lt;/p&gt;
625
626 &lt;p&gt;Here is a small recipe to find the package with a given firmware
627 file, in this example I am looking for ctfw-3.2.3.0.bin, randomly
628 picked from the set of firmware announced using appstream in Debian
629 unstable. In general you would be looking for the firmware requested
630 by the kernel during kernel module loading. To find the package
631 providing the example file, do like this:&lt;/p&gt;
632
633 &lt;blockquote&gt;&lt;pre&gt;
634 % apt install appstream
635 [...]
636 % apt update
637 [...]
638 % appstreamcli what-provides firmware:runtime ctfw-3.2.3.0.bin | \
639 awk &#39;/Package:/ {print $2}&#39;
640 firmware-qlogic
641 %
642 &lt;/pre&gt;&lt;/blockquote&gt;
643
644 &lt;p&gt;See &lt;a href=&quot;https://wiki.debian.org/AppStream/Guidelines&quot;&gt;the
645 appstream wiki&lt;/a&gt; page to learn how to embed the package metadata in
646 a way appstream can use.&lt;/p&gt;
647
648 &lt;p&gt;This same approach can be used to find any package supporting a
649 given MIME type. This is very useful when you get a file you do not
650 know how to handle. First find the mime type using &lt;tt&gt;file
651 --mime-type&lt;/tt&gt;, and next look up the package providing support for
652 it. Lets say you got an SVG file. Its MIME type is image/svg+xml,
653 and you can find all packages handling this type like this:&lt;/p&gt;
654
655 &lt;blockquote&gt;&lt;pre&gt;
656 % apt install appstream
657 [...]
658 % apt update
659 [...]
660 % appstreamcli what-provides mimetype image/svg+xml | \
661 awk &#39;/Package:/ {print $2}&#39;
662 bkchem
663 phototonic
664 inkscape
665 shutter
666 tetzle
667 geeqie
668 xia
669 pinta
670 gthumb
671 karbon
672 comix
673 mirage
674 viewnior
675 postr
676 ristretto
677 kolourpaint4
678 eog
679 eom
680 gimagereader
681 midori
682 %
683 &lt;/pre&gt;&lt;/blockquote&gt;
684
685 &lt;p&gt;I believe the MIME types are fetched from the desktop file for
686 packages providing appstream metadata.&lt;/p&gt;
687 </description>
688 </item>
689
690 <item>
691 <title>Creepy, visualise geotagged social media information - nice free software</title>
692 <link>http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</link>
693 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html</guid>
694 <pubDate>Sun, 24 Jan 2016 10:50:00 +0100</pubDate>
695 <description>&lt;p&gt;Most people seem not to realise that every time they walk around
696 with the computerised radio beacon known as a mobile phone their
697 position is tracked by the phone company and often stored for a long
698 time (like every time a SMS is received or sent). And if their
699 computerised radio beacon is capable of running programs (often called
700 mobile apps) downloaded from the Internet, these programs are often
701 also capable of tracking their location (if the app requested access
702 during installation). And when these programs send out information to
703 central collection points, the location is often included, unless
704 extra care is taken to not send the location. The provided
705 information is used by several entities, for good and bad (what is
706 good and bad, depend on your point of view). What is certain, is that
707 the private sphere and the right to free movement is challenged and
708 perhaps even eradicated for those announcing their location this way,
709 when they share their whereabouts with private and public
710 entities.&lt;/p&gt;
711
712 &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;
713
714 &lt;p&gt;The phone company logs provide a register of locations to check out
715 when one want to figure out what the tracked person was doing. It is
716 unavailable for most of us, but provided to selected government
717 officials, company staff, those illegally buying information from
718 unfaithful servants and crackers stealing the information. But the
719 public information can be collected and analysed, and a free software
720 tool to do so is called
721 &lt;a href=&quot;http://www.geocreepy.com/&quot;&gt;Creepy or Cree.py&lt;/a&gt;. I
722 discovered it when I read
723 &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
724 article about Creepy&lt;/a&gt; in the Norwegian newspaper Aftenposten i
725 November 2014, and decided to check if it was available in Debian.
726 The python program was in Debian, but
727 &lt;a href=&quot;https://tracker.debian.org/pkg/creepy&quot;&gt;the version in
728 Debian&lt;/a&gt; was completely broken and practically unmaintained. I
729 uploaded a new version which did not work quite right, but did not
730 have time to fix it then. This Christmas I decided to finally try to
731 get Creepy operational in Debian. Now a fixed version is available in
732 Debian unstable and testing, and almost all Debian specific patches
733 are now included
734 &lt;a href=&quot;https://github.com/jkakavas/creepy&quot;&gt;upstream&lt;/a&gt;.&lt;/p&gt;
735
736 &lt;p&gt;The Creepy program visualises geolocation information fetched from
737 Twitter, Instagram, Flickr and Google+, and allow one to get a
738 complete picture of every social media message posted recently in a
739 given area, or track the movement of a given individual across all
740 these services. Earlier it was possible to use the search API of at
741 least some of these services without identifying oneself, but these
742 days it is impossible. This mean that to use Creepy, you need to
743 configure it to log in as yourself on these services, and provide
744 information to them about your search interests. This should be taken
745 into account when using Creepy, as it will also share information
746 about yourself with the services.&lt;/p&gt;
747
748 &lt;p&gt;The picture above show the twitter messages sent from (or at least
749 geotagged with a position from) the city centre of Oslo, the capital
750 of Norway. One useful way to use Creepy is to first look at
751 information tagged with an area of interest, and next look at all the
752 information provided by one or more individuals who was in the area.
753 I tested it by checking out which celebrity provide their location in
754 twitter messages by checkout out who sent twitter messages near a
755 Norwegian TV station, and next could track their position over time,
756 making it possible to locate their home and work place, among other
757 things. A similar technique have been
758 &lt;a href=&quot;http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl&quot;&gt;used
759 to locate Russian soldiers in Ukraine&lt;/a&gt;, and it is both a powerful
760 tool to discover lying governments, and a useful tool to help people
761 understand the value of the private information they provide to the
762 public.&lt;/p&gt;
763
764 &lt;p&gt;The package is not trivial to backport to Debian Stable/Jessie, as
765 it depend on several python modules currently missing in Jessie (at
766 least python-instagram, python-flickrapi and
767 python-requests-toolbelt).&lt;/p&gt;
768
769 &lt;p&gt;(I have uploaded
770 &lt;a href=&quot;https://screenshots.debian.net/package/creepy&quot;&gt;the image to
771 screenshots.debian.net&lt;/a&gt; and licensed it under the same terms as the
772 Creepy program in Debian.)&lt;/p&gt;
773 </description>
774 </item>
775
776 <item>
777 <title>Always download Debian packages using Tor - the simple recipe</title>
778 <link>http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</link>
779 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html</guid>
780 <pubDate>Fri, 15 Jan 2016 00:30:00 +0100</pubDate>
781 <description>&lt;p&gt;During his DebConf15 keynote, Jacob Appelbaum
782 &lt;a href=&quot;https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/&quot;&gt;observed
783 that those listening on the Internet lines would have good reason to
784 believe a computer have a given security hole&lt;/a&gt; if it download a
785 security fix from a Debian mirror. This is a good reason to always
786 use encrypted connections to the Debian mirror, to make sure those
787 listening do not know which IP address to attack. In August, Richard
788 Hartmann observed that encryption was not enough, when it was possible
789 to interfere download size to security patches or the fact that
790 download took place shortly after a security fix was released, and
791 &lt;a href=&quot;http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/&quot;&gt;proposed
792 to always use Tor to download packages from the Debian mirror&lt;/a&gt;. He
793 was not the first to propose this, as the
794 &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;
795 package by Tim Retout already existed to make it easy to convince apt
796 to use &lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor&lt;/a&gt;, but I was not
797 aware of that package when I read the blog post from Richard.&lt;/p&gt;
798
799 &lt;p&gt;Richard discussed the idea with Peter Palfrader, one of the Debian
800 sysadmins, and he set up a Tor hidden service on one of the central
801 Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
802 it possible to download packages directly between two tor nodes,
803 making sure the network traffic always were encrypted.&lt;/p&gt;
804
805 &lt;p&gt;Here is a short recipe for enabling this on your machine, by
806 installing &lt;tt&gt;apt-transport-tor&lt;/tt&gt; and replacing http and https
807 urls with tor+http and tor+https, and using the hidden service instead
808 of the official Debian mirror site. I recommend installing
809 &lt;tt&gt;etckeeper&lt;/tt&gt; before you start to have a history of the changes
810 done in /etc/.&lt;/p&gt;
811
812 &lt;blockquote&gt;&lt;pre&gt;
813 apt install apt-transport-tor
814 sed -i &#39;s% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%&#39; /etc/apt/sources.list
815 sed -i &#39;s% http% tor+http%&#39; /etc/apt/sources.list
816 &lt;/pre&gt;&lt;/blockquote&gt;
817
818 &lt;p&gt;If you have more sources listed in /etc/apt/sources.list.d/, run
819 the sed commands for these too. The sed command is assuming your are
820 using the ftp.debian.org Debian mirror. Adjust the command (or just
821 edit the file manually) to match your mirror.&lt;/p&gt;
822
823 &lt;p&gt;This work in Debian Jessie and later. Note that tools like
824 &lt;tt&gt;apt-file&lt;/tt&gt; only recently started using the apt transport
825 system, and do not work with these tor+http URLs. For
826 &lt;tt&gt;apt-file&lt;/tt&gt; you need the version currently in experimental,
827 which need a recent apt version currently only in unstable. So if you
828 need a working &lt;tt&gt;apt-file&lt;/tt&gt;, this is not for you.&lt;/p&gt;
829
830 &lt;p&gt;Another advantage from this change is that your machine will start
831 using Tor regularly and at fairly random intervals (every time you
832 update the package lists or upgrade or install a new package), thus
833 masking other Tor traffic done from the same machine. Using Tor will
834 become normal for the machine in question.&lt;/p&gt;
835
836 &lt;p&gt;On &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox&lt;/a&gt;, APT
837 is set up by default to use &lt;tt&gt;apt-transport-tor&lt;/tt&gt; when Tor is
838 enabled. It would be great if it was the default on any Debian
839 system.&lt;/p&gt;
840 </description>
841 </item>
842
843 <item>
844 <title>OpenALPR, find car license plates in video streams - nice free software</title>
845 <link>http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</link>
846 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html</guid>
847 <pubDate>Wed, 23 Dec 2015 01:00:00 +0100</pubDate>
848 <description>&lt;p&gt;When I was a kid, we used to collect &quot;car numbers&quot;, as we used to
849 call the car license plate numbers in those days. I would write the
850 numbers down in my little book and compare notes with the other kids
851 to see how many region codes we had seen and if we had seen some
852 exotic or special region codes and numbers. It was a fun game to pass
853 time, as we kids have plenty of it.&lt;/p&gt;
854
855 &lt;p&gt;A few days I came across
856 &lt;a href=&quot;https://github.com/openalpr/openalpr&quot;&gt;the OpenALPR
857 project&lt;/a&gt;, a free software project to automatically discover and
858 report license plates in images and video streams, and provide the
859 &quot;car numbers&quot; in a machine readable format. I&#39;ve been looking for
860 such system for a while now, because I believe it is a bad idea that the
861 &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_number_plate_recognition&quot;&gt;automatic
862 number plate recognition&lt;/a&gt; tool only is available in the hands of
863 the powerful, and want it to be available also for the powerless to
864 even the score when it comes to surveillance and sousveillance. I
865 discovered the developer
866 &lt;a href=&quot;https://bugs.debian.org/747509&quot;&gt;wanted to get the tool into
867 Debian&lt;/a&gt;, and as I too wanted it to be in Debian, I volunteered to
868 help him get it into shape to get the package uploaded into the Debian
869 archive.&lt;/p&gt;
870
871 &lt;p&gt;Today we finally managed to get the package into shape and uploaded
872 it into Debian, where it currently
873 &lt;a href=&quot;https://ftp-master.debian.org//new/openalpr_2.2.1-1.html&quot;&gt;waits
874 in the NEW queue&lt;/a&gt; for review by the Debian ftpmasters.&lt;/p&gt;
875
876 &lt;p&gt;I guess you are wondering why on earth such tool would be useful
877 for the common folks, ie those not running a large government
878 surveillance system? Well, I plan to put it in a computer on my bike
879 and in my car, tracking the cars nearby and allowing me to be notified
880 when number plates on my watch list are discovered. Another use case
881 was suggested by a friend of mine, who wanted to set it up at his home
882 to open the car port automatically when it discovered the plate on his
883 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
884 capable of placing his license plate number of a piece of cardboard to
885 open his car port, men replied that it was always unlocked anyway. I
886 guess for such use case it make sense. I am sure there are other use
887 cases too, for those with imagination and a vision.&lt;/p&gt;
888
889 &lt;p&gt;If you want to build your own version of the Debian package, check
890 out the upstream git source and symlink ./distros/debian to ./debian/
891 before running &quot;debuild&quot; to build the source. Or wait a bit until the
892 package show up in unstable.&lt;/p&gt;
893 </description>
894 </item>
895
896 <item>
897 <title>Using appstream with isenkram to install hardware related packages in Debian</title>
898 <link>http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</link>
899 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html</guid>
900 <pubDate>Sun, 20 Dec 2015 12:20:00 +0100</pubDate>
901 <description>&lt;p&gt;Around three years ago, I created
902 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;the isenkram
903 system&lt;/a&gt; to get a more practical solution in Debian for handing
904 hardware related packages. A GUI system in the isenkram package will
905 present a pop-up dialog when some hardware dongle supported by
906 relevant packages in Debian is inserted into the machine. The same
907 lookup mechanism to detect packages is available as command line
908 tools in the isenkram-cli package. In addition to mapping hardware,
909 it will also map kernel firmware files to packages and make it easy to
910 install needed firmware packages automatically. The key for this
911 system to work is a good way to map hardware to packages, in other
912 words, allow packages to announce what hardware they will work
913 with.&lt;/p&gt;
914
915 &lt;p&gt;I started by providing data files in the isenkram source, and
916 adding code to download the latest version of these data files at run
917 time, to ensure every user had the most up to date mapping available.
918 I also added support for storing the mapping in the Packages file in
919 the apt repositories, but did not push this approach because while I
920 was trying to figure out how to best store hardware/package mappings,
921 &lt;a href=&quot;http://www.freedesktop.org/software/appstream/docs/&quot;&gt;the
922 appstream system&lt;/a&gt; was announced. I got in touch and suggested to
923 add the hardware mapping into that data set to be able to use
924 appstream as a data source, and this was accepted at least for the
925 Debian version of appstream.&lt;/p&gt;
926
927 &lt;p&gt;A few days ago using appstream in Debian for this became possible,
928 and today I uploaded a new version 0.20 of isenkram adding support for
929 appstream as a data source for mapping hardware to packages. The only
930 package so far using appstream to announce its hardware support is my
931 pymissile package. I got help from Matthias Klumpp with figuring out
932 how do add the required
933 &lt;a href=&quot;https://appstream.debian.org/html/sid/main/metainfo/pymissile.html&quot;&gt;metadata
934 in pymissile&lt;/a&gt;. I added a file debian/pymissile.metainfo.xml with
935 this content:&lt;/p&gt;
936
937 &lt;blockquote&gt;&lt;pre&gt;
938 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
939 &amp;lt;component&amp;gt;
940 &amp;lt;id&amp;gt;pymissile&amp;lt;/id&amp;gt;
941 &amp;lt;metadata_license&amp;gt;MIT&amp;lt;/metadata_license&amp;gt;
942 &amp;lt;name&amp;gt;pymissile&amp;lt;/name&amp;gt;
943 &amp;lt;summary&amp;gt;Control original Striker USB Missile Launcher&amp;lt;/summary&amp;gt;
944 &amp;lt;description&amp;gt;
945 &amp;lt;p&amp;gt;
946 Pymissile provides a curses interface to control an original
947 Marks and Spencer / Striker USB Missile Launcher, as well as a
948 motion control script to allow a webcamera to control the
949 launcher.
950 &amp;lt;/p&amp;gt;
951 &amp;lt;/description&amp;gt;
952 &amp;lt;provides&amp;gt;
953 &amp;lt;modalias&amp;gt;usb:v1130p0202d*&amp;lt;/modalias&amp;gt;
954 &amp;lt;/provides&amp;gt;
955 &amp;lt;/component&amp;gt;
956 &lt;/pre&gt;&lt;/blockquote&gt;
957
958 &lt;p&gt;The key for isenkram is the component/provides/modalias value,
959 which is a glob style match rule for hardware specific strings
960 (modalias strings) provided by the Linux kernel. In this case, it
961 will map to all USB devices with vendor code 1130 and product code
962 0202.&lt;/p&gt;
963
964 &lt;p&gt;Note, it is important that the license of all the metadata files
965 are compatible to have permissions to aggregate them into archive wide
966 appstream files. Matthias suggested to use MIT or BSD licenses for
967 these files. A challenge is figuring out a good id for the data, as
968 it is supposed to be globally unique and shared across distributions
969 (in other words, best to coordinate with upstream what to use). But
970 it can be changed later or, so we went with the package name as
971 upstream for this project is dormant.&lt;/p&gt;
972
973 &lt;p&gt;To get the metadata file installed in the correct location for the
974 mirror update scripts to pick it up and include its content the
975 appstream data source, the file must be installed in the binary
976 package under /usr/share/appdata/. I did this by adding the following
977 line to debian/pymissile.install:&lt;/p&gt;
978
979 &lt;blockquote&gt;&lt;pre&gt;
980 debian/pymissile.metainfo.xml usr/share/appdata
981 &lt;/pre&gt;&lt;/blockquote&gt;
982
983 &lt;p&gt;With that in place, the command line tool isenkram-lookup will list
984 all packages useful on the current computer automatically, and the GUI
985 pop-up handler will propose to install the package not already
986 installed if a hardware dongle is inserted into the machine in
987 question.&lt;/p&gt;
988
989 &lt;p&gt;Details of the modalias field in appstream is available from the
990 &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;DEP-11&lt;/a&gt; proposal.&lt;/p&gt;
991
992 &lt;p&gt;To locate the modalias values of all hardware present in a machine,
993 try running this command on the command line:&lt;/p&gt;
994
995 &lt;blockquote&gt;&lt;pre&gt;
996 cat $(find /sys/devices/|grep modalias)
997 &lt;/pre&gt;&lt;/blockquote&gt;
998
999 &lt;p&gt;To learn more about the isenkram system, please check out
1000 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;my
1001 blog posts tagged isenkram&lt;/a&gt;.&lt;/p&gt;
1002 </description>
1003 </item>
1004
1005 <item>
1006 <title>The GNU General Public License is not magic pixie dust</title>
1007 <link>http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</link>
1008 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html</guid>
1009 <pubDate>Mon, 30 Nov 2015 09:55:00 +0100</pubDate>
1010 <description>&lt;p&gt;A blog post from my fellow Debian developer Paul Wise titled
1011 &quot;&lt;a href=&quot;http://bonedaddy.net/pabs3/log/2015/11/27/sfc-supporter/&quot;&gt;The
1012 GPL is not magic pixie dust&lt;/a&gt;&quot; explain the importance of making sure
1013 the &lt;a href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;GPL&lt;/a&gt; is enforced.
1014 I quote the blog post from Paul in full here with his permission:&lt;p&gt;
1015
1016 &lt;blockquote&gt;
1017
1018 &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;
1019
1020 &lt;blockquote&gt;
1021 The GPL is not magic pixie dust. It does not work by itself.&lt;br/&gt;
1022
1023 The first step is to choose a
1024 &lt;a href=&quot;https://copyleft.org/&quot;&gt;copyleft&lt;/a&gt; license for your
1025 code.&lt;br/&gt;
1026
1027 The next step is, when someone fails to follow that copyleft license,
1028 &lt;b&gt;it must be enforced&lt;/b&gt;&lt;br/&gt;
1029
1030 and its a simple fact of our modern society that such type of
1031 work&lt;br/&gt;
1032
1033 is incredibly expensive to do and incredibly difficult to do.
1034 &lt;/blockquote&gt;
1035
1036 &lt;p&gt;&lt;small&gt;-- &lt;a href=&quot;http://ebb.org/bkuhn/&quot;&gt;Bradley Kuhn&lt;/a&gt;, in
1037 &lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in Freedom&quot;&gt;FaiF&lt;/a&gt;
1038 &lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode
1039 0x57&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
1040
1041 &lt;p&gt;As the Debian Website
1042 &lt;a href=&quot;https://bugs.debian.org/794116&quot;&gt;used&lt;/a&gt;
1043 &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;
1044 imply, public domain and permissively licensed software can lead to
1045 the production of more proprietary software as people discover useful
1046 software, extend it and or incorporate it into their hardware or
1047 software products. Copyleft licenses such as the GNU GPL were created
1048 to close off this avenue to the production of proprietary software but
1049 such licenses are not enough. With the ongoing adoption of Free
1050 Software by individuals and groups, inevitably the community&#39;s
1051 expectations of license compliance are violated, usually out of
1052 ignorance of the way Free Software works, but not always. As Karen
1053 and Bradley explained in &lt;a href=&quot;http://faif.us/&quot; title=&quot;Free as in
1054 Freedom&quot;&gt;FaiF&lt;/a&gt;
1055 &lt;a href=&quot;http://faif.us/cast/2015/nov/24/0x57/&quot;&gt;episode 0x57&lt;/a&gt;,
1056 copyleft is nothing if no-one is willing and able to stand up in court
1057 to protect it. The reality of today&#39;s world is that legal
1058 representation is expensive, difficult and time consuming. With
1059 &lt;a href=&quot;http://gpl-violations.org/&quot;&gt;gpl-violations.org&lt;/a&gt; in hiatus
1060 &lt;a href=&quot;http://gpl-violations.org/news/20151027-homepage-recovers/&quot;&gt;until&lt;/a&gt;
1061 some time in 2016, the &lt;a href=&quot;https://sfconservancy.org/&quot;&gt;Software
1062 Freedom Conservancy&lt;/a&gt; (a tax-exempt charity) is the major defender
1063 of the Linux project, Debian and other groups against GPL violations.
1064 In March the SFC supported a
1065 &lt;a href=&quot;https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit/&quot;&gt;lawsuit
1066 by Christoph Hellwig&lt;/a&gt; against VMware for refusing to
1067 &lt;a href=&quot;https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html&quot;&gt;comply
1068 with the GPL&lt;/a&gt; in relation to their use of parts of the Linux
1069 kernel. Since then two of their sponsors pulled corporate funding and
1070 conferences
1071 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;blocked
1072 or cancelled their talks&lt;/a&gt;. As a result they have decided to rely
1073 less on corporate funding and more on the broad community of
1074 individuals who support Free Software and copyleft. So the SFC has
1075 &lt;a href=&quot;https://sfconservancy.org/news/2015/nov/23/2015fundraiser/&quot;&gt;launched&lt;/a&gt;
1076 a &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;campaign&lt;/a&gt; to create
1077 a community of folks who stand up for copyleft and the GPL by
1078 supporting their work on promoting and supporting copyleft and Free
1079 Software.&lt;/p&gt;
1080
1081 &lt;p&gt;If you support Free Software,
1082 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/26/like-what-I-do/&quot;&gt;like&lt;/a&gt;
1083 what the SFC do, agree with their
1084 &lt;a href=&quot;https://sfconservancy.org/linux-compliance/principles.html&quot;&gt;compliance
1085 principles&lt;/a&gt;, are happy about their
1086 &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;successes&lt;/a&gt; in 2015,
1087 work on a project that is an SFC
1088 &lt;a href=&quot;https://sfconservancy.org/members/current/&quot;&gt;member&lt;/a&gt; and or
1089 just want to stand up for copyleft, please join
1090 &lt;a href=&quot;https://identi.ca/cwebber/image/JQGPA4qbTyyp3-MY8QpvuA&quot;&gt;Christopher
1091 Allan Webber&lt;/a&gt;,
1092 &lt;a href=&quot;https://sfconservancy.org/blog/2015/nov/24/faif-carols-fundraiser/&quot;&gt;Carol
1093 Smith&lt;/a&gt;,
1094 &lt;a href=&quot;http://www.jonobacon.org/2015/11/25/supporting-software-freedom-conservancy/&quot;&gt;Jono
1095 Bacon&lt;/a&gt;, myself and
1096 &lt;a href=&quot;https://sfconservancy.org/sponsors/#supporters&quot;&gt;others&lt;/a&gt; in
1097 becoming a
1098 &lt;a href=&quot;https://sfconservancy.org/supporter/&quot;&gt;supporter&lt;/a&gt;. For the
1099 next week your donation will be
1100 &lt;a href=&quot;https://sfconservancy.org/news/2015/nov/27/black-friday/&quot;&gt;matched&lt;/a&gt;
1101 by an anonymous donor. Please also consider asking your employer to
1102 match your donation or become a sponsor of SFC. Don&#39;t forget to
1103 spread the word about your support for SFC via email, your blog and or
1104 social media accounts.&lt;/p&gt;
1105
1106 &lt;/blockquote&gt;
1107
1108 &lt;p&gt;I agree with Paul on this topic and just signed up as a Supporter
1109 of Software Freedom Conservancy myself. Perhaps you should be a
1110 supporter too?&lt;/p&gt;
1111 </description>
1112 </item>
1113
1114 <item>
1115 <title>PGP key transition statement for key EE4E02F9</title>
1116 <link>http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</link>
1117 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html</guid>
1118 <pubDate>Tue, 17 Nov 2015 10:50:00 +0100</pubDate>
1119 <description>&lt;p&gt;I&#39;ve needed a new OpenPGP key for a while, but have not had time to
1120 set it up properly. I wanted to generate it offline and have it
1121 available on &lt;a href=&quot;http://shop.kernelconcepts.de/#openpgp&quot;&gt;a OpenPGP
1122 smart card&lt;/a&gt; for daily use, and learning how to do it and finding
1123 time to sit down with an offline machine almost took forever. But
1124 finally I&#39;ve been able to complete the process, and have now moved
1125 from my old GPG key to a new GPG key. See
1126 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/images/2015-11-17-new-gpg-key-transition.txt&quot;&gt;the
1127 full transition statement, signed with both my old and new key&lt;/a&gt; for
1128 the details. This is my new key:&lt;/p&gt;
1129
1130 &lt;pre&gt;
1131 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]
1132 Key fingerprint = 3AC7 B2E3 ACA5 DF87 78F1 D827 111D 6B29 EE4E 02F9
1133 uid Petter Reinholdtsen &amp;lt;pere@hungry.com&amp;gt;
1134 uid Petter Reinholdtsen &amp;lt;pere@debian.org&amp;gt;
1135 sub 4096R/87BAFB0E 2015-11-03 [expires: 2019-11-02]
1136 sub 4096R/F91E6DE9 2015-11-03 [expires: 2019-11-02]
1137 sub 4096R/A0439BAB 2015-11-03 [expires: 2019-11-02]
1138 &lt;/pre&gt;
1139
1140 &lt;p&gt;The key can be downloaded from the OpenPGP key servers, signed by
1141 my old key.&lt;/p&gt;
1142
1143 &lt;p&gt;If you signed my old key
1144 (&lt;a href=&quot;http://pgp.cs.uu.nl/stats/DB4CCC4B2A30D729.html&quot;&gt;DB4CCC4B2A30D729&lt;/a&gt;),
1145 I&#39;d very much appreciate a signature on my new key, details and
1146 instructions in the transition statement. I m happy to reciprocate if
1147 you have a similarly signed transition statement to present.&lt;/p&gt;
1148 </description>
1149 </item>
1150
1151 <item>
1152 <title>The life and death of a laptop battery</title>
1153 <link>http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</link>
1154 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html</guid>
1155 <pubDate>Thu, 24 Sep 2015 16:00:00 +0200</pubDate>
1156 <description>&lt;p&gt;When I get a new laptop, the battery life time at the start is OK.
1157 But this do not last. The last few laptops gave me a feeling that
1158 within a year, the life time is just a fraction of what it used to be,
1159 and it slowly become painful to use the laptop without power connected
1160 all the time. Because of this, when I got a new Thinkpad X230 laptop
1161 about two years ago, I decided to monitor its battery state to have
1162 more hard facts when the battery started to fail.&lt;/p&gt;
1163
1164 &lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2015-09-24-laptop-battery-graph.png&quot;/&gt;
1165
1166 &lt;p&gt;First I tried to find a sensible Debian package to record the
1167 battery status, assuming that this must be a problem already handled
1168 by someone else. I found
1169 &lt;a href=&quot;https://tracker.debian.org/pkg/battery-stats&quot;&gt;battery-stats&lt;/a&gt;,
1170 which collects statistics from the battery, but it was completely
1171 broken. I sent a few suggestions to the maintainer, but decided to
1172 write my own collector as a shell script while I waited for feedback
1173 from him. Via
1174 &lt;a href=&quot;http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html&quot;&gt;a
1175 blog post about the battery development on a MacBook Air&lt;/a&gt; I also
1176 discovered
1177 &lt;a href=&quot;https://github.com/jradavenport/batlog.git&quot;&gt;batlog&lt;/a&gt;, not
1178 available in Debian.&lt;/p&gt;
1179
1180 &lt;p&gt;I started my collector 2013-07-15, and it has been collecting
1181 battery stats ever since. Now my
1182 /var/log/hjemmenett-battery-status.log file contain around 115,000
1183 measurements, from the time the battery was working great until now,
1184 when it is unable to charge above 7% of original capacity. My
1185 collector shell script is quite simple and look like this:&lt;/p&gt;
1186
1187 &lt;pre&gt;
1188 #!/bin/sh
1189 # Inspired by
1190 # http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
1191 # See also
1192 # http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
1193 logfile=/var/log/hjemmenett-battery-status.log
1194
1195 files=&quot;manufacturer model_name technology serial_number \
1196 energy_full energy_full_design energy_now cycle_count status&quot;
1197
1198 if [ ! -e &quot;$logfile&quot; ] ; then
1199 (
1200 printf &quot;timestamp,&quot;
1201 for f in $files; do
1202 printf &quot;%s,&quot; $f
1203 done
1204 echo
1205 ) &gt; &quot;$logfile&quot;
1206 fi
1207
1208 log_battery() {
1209 # Print complete message in one echo call, to avoid race condition
1210 # when several log processes run in parallel.
1211 msg=$(printf &quot;%s,&quot; $(date +%s); \
1212 for f in $files; do \
1213 printf &quot;%s,&quot; $(cat $f); \
1214 done)
1215 echo &quot;$msg&quot;
1216 }
1217
1218 cd /sys/class/power_supply
1219
1220 for bat in BAT*; do
1221 (cd $bat &amp;&amp; log_battery &gt;&gt; &quot;$logfile&quot;)
1222 done
1223 &lt;/pre&gt;
1224
1225 &lt;p&gt;The script is called when the power management system detect a
1226 change in the power status (power plug in or out), and when going into
1227 and out of hibernation and suspend. In addition, it collect a value
1228 every 10 minutes. This make it possible for me know when the battery
1229 is discharging, charging and how the maximum charge change over time.
1230 The code for the Debian package
1231 &lt;a href=&quot;https://github.com/petterreinholdtsen/battery-status&quot;&gt;is now
1232 available on github&lt;/a&gt;.&lt;/p&gt;
1233
1234 &lt;p&gt;The collected log file look like this:&lt;/p&gt;
1235
1236 &lt;pre&gt;
1237 timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status,
1238 1376591133,LGC,45N1025,Li-ion,974,62800000,62160000,39050000,0,Discharging,
1239 [...]
1240 1443090528,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
1241 1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
1242 &lt;/pre&gt;
1243
1244 &lt;p&gt;I wrote a small script to create a graph of the charge development
1245 over time. This graph depicted above show the slow death of my laptop
1246 battery.&lt;/p&gt;
1247
1248 &lt;p&gt;But why is this happening? Why are my laptop batteries always
1249 dying in a year or two, while the batteries of space probes and
1250 satellites keep working year after year. If we are to believe
1251 &lt;a href=&quot;http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries&quot;&gt;Battery
1252 University&lt;/a&gt;, the cause is me charging the battery whenever I have a
1253 chance, and the fix is to not charge the Lithium-ion batteries to 100%
1254 all the time, but to stay below 90% of full charge most of the time.
1255 I&#39;ve been told that the Tesla electric cars
1256 &lt;a href=&quot;http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit&quot;&gt;limit
1257 the charge of their batteries to 80%&lt;/a&gt;, with the option to charge to
1258 100% when preparing for a longer trip (not that I would want a car
1259 like Tesla where rights to privacy is abandoned, but that is another
1260 story), which I guess is the option we should have for laptops on
1261 Linux too.&lt;/p&gt;
1262
1263 &lt;p&gt;Is there a good and generic way with Linux to tell the battery to
1264 stop charging at 80%, unless requested to charge to 100% once in
1265 preparation for a longer trip? I found
1266 &lt;a href=&quot;http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity&quot;&gt;one
1267 recipe on askubuntu for Ubuntu to limit charging on Thinkpad to
1268 80%&lt;/a&gt;, but could not get it to work (kernel module refused to
1269 load).&lt;/p&gt;
1270
1271 &lt;p&gt;I wonder why the battery capacity was reported to be more than 100%
1272 at the start. I also wonder why the &quot;full capacity&quot; increases some
1273 times, and if it is possible to repeat the process to get the battery
1274 back to design capacity. And I wonder if the discharge and charge
1275 speed change over time, or if this stay the same. I did not yet try
1276 to write a tool to calculate the derivative values of the battery
1277 level, but suspect some interesting insights might be learned from
1278 those.&lt;/p&gt;
1279
1280 &lt;p&gt;Update 2015-09-24: I got a tip to install the packages
1281 acpi-call-dkms and tlp (unfortunately missing in Debian stable)
1282 packages instead of the tp-smapi-dkms package I had tried to use
1283 initially, and use &#39;tlp setcharge 40 80&#39; to change when charging start
1284 and stop. I&#39;ve done so now, but expect my existing battery is toast
1285 and need to be replaced. The proposal is unfortunately Thinkpad
1286 specific.&lt;/p&gt;
1287 </description>
1288 </item>
1289
1290 <item>
1291 <title>New laptop - some more clues and ideas based on feedback</title>
1292 <link>http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</link>
1293 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html</guid>
1294 <pubDate>Sun, 5 Jul 2015 21:40:00 +0200</pubDate>
1295 <description>&lt;p&gt;Several people contacted me after my previous blog post about my
1296 need for a new laptop, and provided very useful feedback. I wish to
1297 thank every one of these. Several pointed me to the possibility of
1298 fixing my X230, and I am already in the process of getting Lenovo to
1299 do so thanks to the on site, next day support contract covering the
1300 machine. But the battery is almost useless (I expect to replace it
1301 with a non-official battery) and I do not expect the machine to live
1302 for many more years, so it is time to plan its replacement. If I did
1303 not have a support contract, it was suggested to find replacement parts
1304 using &lt;a href=&quot;http://www.francecrans.com/&quot;&gt;FrancEcrans&lt;/a&gt;, but it
1305 might present a language barrier as I do not understand French.&lt;/p&gt;
1306
1307 &lt;p&gt;One tip I got was to use the
1308 &lt;a href=&quot;https://skinflint.co.uk/?cat=nb&quot;&gt;Skinflint&lt;/a&gt; web service to
1309 compare laptop models. It seem to have more models available than
1310 prisjakt.no. Another tip I got from someone I know have similar
1311 keyboard preferences was that the HP EliteBook 840 keyboard is not
1312 very good, and this matches my experience with earlier EliteBook
1313 keyboards I tested. Because of this, I will not consider it any further.
1314
1315 &lt;p&gt;When I wrote my blog post, I was not aware of Thinkpad X250, the
1316 newest Thinkpad X model. The keyboard reintroduces mouse buttons
1317 (which is missing from the X240), and is working fairly well with
1318 Debian Sid/Unstable according to
1319 &lt;a href=&quot;http://www.corsac.net/X250/&quot;&gt;Corsac.net&lt;/a&gt;. The reports I
1320 got on the keyboard quality are not consistent. Some say the keyboard
1321 is good, others say it is ok, while others say it is not very good.
1322 Those with experience from X41 and and X60 agree that the X250
1323 keyboard is not as good as those trusty old laptops, and suggest I
1324 keep and fix my X230 instead of upgrading, or get a used X230 to
1325 replace it. I&#39;m also told that the X250 lack leds for caps lock, disk
1326 activity and battery status, which is very convenient on my X230. I&#39;m
1327 also told that the CPU fan is running very often, making it a bit
1328 noisy. In any case, the X250 do not work out of the box with Debian
1329 Stable/Jessie, one of my requirements.&lt;/p&gt;
1330
1331 &lt;p&gt;I have also gotten a few vendor proposals, one was
1332 &lt;a href=&quot;http://pro-star.com&quot;&gt;Pro-Star&lt;/a&gt;, another was
1333 &lt;a href=&quot;http://shop.gluglug.org.uk/product/libreboot-x200/&quot;&gt;Libreboot&lt;/a&gt;.
1334 The latter look very attractive to me.&lt;/p&gt;
1335
1336 &lt;p&gt;Again, thank you all for the very useful feedback. It help a lot
1337 as I keep looking for a replacement.&lt;/p&gt;
1338
1339 &lt;p&gt;Update 2015-07-06: I was recommended to check out the
1340 &lt;a href=&quot;&quot;&gt;lapstore.de&lt;/a&gt; web shop for used laptops. They got several
1341 different
1342 &lt;a href=&quot;http://www.lapstore.de/f.php/shop/lapstore/f/411/lang/x/kw/Lenovo_ThinkPad_X_Serie/&quot;&gt;old
1343 thinkpad X models&lt;/a&gt;, and provide one year warranty.&lt;/p&gt;
1344 </description>
1345 </item>
1346
1347 <item>
1348 <title>Time to find a new laptop, as the old one is broken after only two years</title>
1349 <link>http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</link>
1350 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html</guid>
1351 <pubDate>Fri, 3 Jul 2015 07:10:00 +0200</pubDate>
1352 <description>&lt;p&gt;My primary work horse laptop is failing, and will need a
1353 replacement soon. The left 5 cm of the screen on my Thinkpad X230
1354 started flickering yesterday, and I suspect the cause is a broken
1355 cable, as changing the angle of the screen some times get rid of the
1356 flickering.&lt;/p&gt;
1357
1358 &lt;p&gt;My requirements have not really changed since I bought it, and is
1359 still as
1360 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html&quot;&gt;I
1361 described them in 2013&lt;/a&gt;. The last time I bought a laptop, I had
1362 good help from
1363 &lt;a href=&quot;http://www.prisjakt.no/category.php?k=353&quot;&gt;prisjakt.no&lt;/a&gt;
1364 where I could select at least a few of the requirements (mouse pin,
1365 wifi, weight) and go through the rest manually. Three button mouse
1366 and a good keyboard is not available as an option, and all the three
1367 laptop models proposed today (Thinkpad X240, HP EliteBook 820 G1 and
1368 G2) lack three mouse buttons). It is also unclear to me how good the
1369 keyboard on the HP EliteBooks are. I hope Lenovo have not messed up
1370 the keyboard, even if the quality and robustness in the X series have
1371 deteriorated since X41.&lt;/p&gt;
1372
1373 &lt;p&gt;I wonder how I can find a sensible laptop when none of the options
1374 seem sensible to me? Are there better services around to search the
1375 set of available laptops for features? Please send me an email if you
1376 have suggestions.&lt;/p&gt;
1377
1378 &lt;p&gt;Update 2015-07-23: I got a suggestion to check out the FSF
1379 &lt;a href=&quot;http://www.fsf.org/resources/hw/endorsement/respects-your-freedom&quot;&gt;list
1380 of endorsed hardware&lt;/a&gt;, which is useful background information.&lt;/p&gt;
1381 </description>
1382 </item>
1383
1384 <item>
1385 <title>How to stay with sysvinit in Debian Jessie</title>
1386 <link>http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</link>
1387 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html</guid>
1388 <pubDate>Sat, 22 Nov 2014 01:00:00 +0100</pubDate>
1389 <description>&lt;p&gt;By now, it is well known that Debian Jessie will not be using
1390 sysvinit as its boot system by default. But how can one keep using
1391 sysvinit in Jessie? It is fairly easy, and here are a few recipes,
1392 courtesy of
1393 &lt;a href=&quot;http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html&quot;&gt;Erich
1394 Schubert&lt;/a&gt; and
1395 &lt;a href=&quot;http://smcv.pseudorandom.co.uk/2014/still_universal/&quot;&gt;Simon
1396 McVittie&lt;/a&gt;.
1397
1398 &lt;p&gt;If you already are using Wheezy and want to upgrade to Jessie and
1399 keep sysvinit as your boot system, create a file
1400 &lt;tt&gt;/etc/apt/preferences.d/use-sysvinit&lt;/tt&gt; with this content before
1401 you upgrade:&lt;/p&gt;
1402
1403 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1404 Package: systemd-sysv
1405 Pin: release o=Debian
1406 Pin-Priority: -1
1407 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
1408
1409 &lt;p&gt;This file content will tell apt and aptitude to not consider
1410 installing systemd-sysv as part of any installation and upgrade
1411 solution when resolving dependencies, and thus tell it to avoid
1412 systemd as a default boot system. The end result should be that the
1413 upgraded system keep using sysvinit.&lt;/p&gt;
1414
1415 &lt;p&gt;If you are installing Jessie for the first time, there is no way to
1416 get sysvinit installed by default (debootstrap used by
1417 debian-installer have no option for this), but one can tell the
1418 installer to switch to sysvinit before the first boot. Either by
1419 using a kernel argument to the installer, or by adding a line to the
1420 preseed file used. First, the kernel command line argument:
1421
1422 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1423 preseed/late_command=&quot;in-target apt-get install --purge -y sysvinit-core&quot;
1424 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
1425
1426 &lt;p&gt;Next, the line to use in a preseed file:&lt;/p&gt;
1427
1428 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1429 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
1430 &lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;
1431
1432 &lt;p&gt;One can of course also do this after the first boot by installing
1433 the sysvinit-core package.&lt;/p&gt;
1434
1435 &lt;p&gt;I recommend only using sysvinit if you really need it, as the
1436 sysvinit boot sequence in Debian have several hardware specific bugs
1437 on Linux caused by the fact that it is unpredictable when hardware
1438 devices show up during boot. But on the other hand, the new default
1439 boot system still have a few rough edges I hope will be fixed before
1440 Jessie is released.&lt;/p&gt;
1441
1442 &lt;p&gt;Update 2014-11-26: Inspired by
1443 &lt;ahref=&quot;https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg&quot;&gt;a
1444 blog post by Torsten Glaser&lt;/a&gt;, added --purge to the preseed
1445 line.&lt;/p&gt;
1446 </description>
1447 </item>
1448
1449 <item>
1450 <title>A Debian package for SMTP via Tor (aka SMTorP) using exim4</title>
1451 <link>http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</link>
1452 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html</guid>
1453 <pubDate>Mon, 10 Nov 2014 13:40:00 +0100</pubDate>
1454 <description>&lt;p&gt;The right to communicate with your friends and family in private,
1455 without anyone snooping, is a right every citicen have in a liberal
1456 democracy. But this right is under serious attack these days.&lt;/p&gt;
1457
1458 &lt;p&gt;A while back it occurred to me that one way to make the dragnet
1459 surveillance conducted by NSA, GCHQ, FRA and others (and confirmed by
1460 the whisleblower Snowden) more expensive for Internet email,
1461 is to deliver all email using SMTP via Tor. Such SMTP option would be
1462 a nice addition to the FreedomBox project if we could send email
1463 between FreedomBox machines without leaking metadata about the emails
1464 to the people peeking on the wire. I
1465 &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/freedombox-discuss/2014-October/006493.html&quot;&gt;proposed
1466 this on the FreedomBox project mailing list in October&lt;/a&gt; and got a
1467 lot of useful feedback and suggestions. It also became obvious to me
1468 that this was not a novel idea, as the same idea was tested and
1469 documented by Johannes Berg as early as 2006, and both
1470 &lt;a href=&quot;https://github.com/pagekite/Mailpile/wiki/SMTorP&quot;&gt;the
1471 Mailpile&lt;/a&gt; and &lt;a href=&quot;http://dee.su/cables&quot;&gt;the Cables&lt;/a&gt; systems
1472 propose a similar method / protocol to pass emails between users.&lt;/p&gt;
1473
1474 &lt;p&gt;To implement such system one need to set up a Tor hidden service
1475 providing the SMTP protocol on port 25, and use email addresses
1476 looking like username@hidden-service-name.onion. With such addresses
1477 the connections to port 25 on hidden-service-name.onion using Tor will
1478 go to the correct SMTP server. To do this, one need to configure the
1479 Tor daemon to provide the hidden service and the mail server to accept
1480 emails for this .onion domain. To learn more about Exim configuration
1481 in Debian and test the design provided by Johannes Berg in his FAQ, I
1482 set out yesterday to create a Debian package for making it trivial to
1483 set up such SMTP over Tor service based on Debian. Getting it to work
1484 were fairly easy, and
1485 &lt;a href=&quot;https://github.com/petterreinholdtsen/exim4-smtorp&quot;&gt;the
1486 source code for the Debian package&lt;/a&gt; is available from github. I
1487 plan to move it into Debian if further testing prove this to be a
1488 useful approach.&lt;/p&gt;
1489
1490 &lt;p&gt;If you want to test this, set up a blank Debian machine without any
1491 mail system installed (or run &lt;tt&gt;apt-get purge exim4-config&lt;/tt&gt; to
1492 get rid of exim4). Install tor, clone the git repository mentioned
1493 above, build the deb and install it on the machine. Next, run
1494 &lt;tt&gt;/usr/lib/exim4-smtorp/setup-exim-hidden-service&lt;/tt&gt; and follow
1495 the instructions to get the service up and running. Restart tor and
1496 exim when it is done, and test mail delivery using swaks like
1497 this:&lt;/p&gt;
1498
1499 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1500 torsocks swaks --server dutlqrrmjhtfa3vp.onion \
1501 --to fbx@dutlqrrmjhtfa3vp.onion
1502 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1503
1504 &lt;p&gt;This will test the SMTP delivery using tor. Replace the email
1505 address with your own address to test your server. :)&lt;/p&gt;
1506
1507 &lt;p&gt;The setup procedure is still to complex, and I hope it can be made
1508 easier and more automatic. Especially the tor setup need more work.
1509 Also, the package include a tor-smtp tool written in C, but its task
1510 should probably be rewritten in some script language to make the deb
1511 architecture independent. It would probably also make the code easier
1512 to review. The tor-smtp tool currently need to listen on a socket for
1513 exim to talk to it and is started using xinetd. It would be better if
1514 no daemon and no socket is needed. I suspect it is possible to get
1515 exim to run a command line tool for delivery instead of talking to a
1516 socket, and hope to figure out how in a future version of this
1517 system.&lt;/p&gt;
1518
1519 &lt;p&gt;Until I wipe my test machine, I can be reached using the
1520 &lt;tt&gt;fbx@dutlqrrmjhtfa3vp.onion&lt;/tt&gt; mail address, deliverable over
1521 SMTorP. :)&lt;/p&gt;
1522 </description>
1523 </item>
1524
1525 <item>
1526 <title>listadmin, the quick way to moderate mailman lists - nice free software</title>
1527 <link>http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</link>
1528 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html</guid>
1529 <pubDate>Wed, 22 Oct 2014 20:00:00 +0200</pubDate>
1530 <description>&lt;p&gt;If you ever had to moderate a mailman list, like the ones on
1531 alioth.debian.org, you know the web interface is fairly slow to
1532 operate. First you visit one web page, enter the moderation password
1533 and get a new page shown with a list of all the messages to moderate
1534 and various options for each email address. This take a while for
1535 every list you moderate, and you need to do it regularly to do a good
1536 job as a list moderator. But there is a quick alternative,
1537 &lt;a href=&quot;http://heim.ifi.uio.no/kjetilho/hacks/#listadmin&quot;&gt;the
1538 listadmin program&lt;/a&gt;. It allow you to check lists for new messages
1539 to moderate in a fraction of a second. Here is a test run on two
1540 lists I recently took over:&lt;/p&gt;
1541
1542 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1543 % time listadmin xiph
1544 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
1545 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
1546
1547 real 0m1.709s
1548 user 0m0.232s
1549 sys 0m0.012s
1550 %
1551 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1552
1553 &lt;p&gt;In 1.7 seconds I had checked two mailing lists and confirmed that
1554 there are no message in the moderation queue. Every morning I
1555 currently moderate 68 mailman lists, and it normally take around two
1556 minutes. When I took over the two pkg-xiph lists above a few days
1557 ago, there were 400 emails waiting in the moderator queue. It took me
1558 less than 15 minutes to process them all using the listadmin
1559 program.&lt;/p&gt;
1560
1561 &lt;p&gt;If you install
1562 &lt;a href=&quot;https://tracker.debian.org/pkg/listadmin&quot;&gt;the listadmin
1563 package&lt;/a&gt; from Debian and create a file &lt;tt&gt;~/.listadmin.ini&lt;/tt&gt;
1564 with content like this, the moderation task is a breeze:&lt;/p&gt;
1565
1566 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1567 username username@example.org
1568 spamlevel 23
1569 default discard
1570 discard_if_reason &quot;Posting restricted to members only. Remove us from your mail list.&quot;
1571
1572 password secret
1573 adminurl https://{domain}/mailman/admindb/{list}
1574 mailman-list@lists.example.com
1575
1576 password hidden
1577 other-list@otherserver.example.org
1578 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1579
1580 &lt;p&gt;There are other options to set as well. Check the manual page to
1581 learn the details.&lt;/p&gt;
1582
1583 &lt;p&gt;If you are forced to moderate lists on a mailman installation where
1584 the SSL certificate is self signed or not properly signed by a
1585 generally accepted signing authority, you can set a environment
1586 variable when calling listadmin to disable SSL verification:&lt;/p&gt;
1587
1588 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1589 PERL_LWP_SSL_VERIFY_HOSTNAME=0 listadmin
1590 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1591
1592 &lt;p&gt;If you want to moderate a subset of the lists you take care of, you
1593 can provide an argument to the listadmin script like I do in the
1594 initial screen dump (the xiph argument). Using an argument, only
1595 lists matching the argument string will be processed. This make it
1596 quick to accept messages if you notice the moderation request in your
1597 email.&lt;/p&gt;
1598
1599 &lt;p&gt;Without the listadmin program, I would never be the moderator of 68
1600 mailing lists, as I simply do not have time to spend on that if the
1601 process was any slower. The listadmin program have saved me hours of
1602 time I could spend elsewhere over the years. It truly is nice free
1603 software.&lt;/p&gt;
1604
1605 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
1606 activities, please send Bitcoin donations to my address
1607 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
1608
1609 &lt;p&gt;Update 2014-10-27: Added missing &#39;username&#39; statement in
1610 configuration example. Also, I&#39;ve been told that the
1611 PERL_LWP_SSL_VERIFY_HOSTNAME=0 setting do not work for everyone. Not
1612 sure why.&lt;/p&gt;
1613 </description>
1614 </item>
1615
1616 <item>
1617 <title>Debian Jessie, PXE and automatic firmware installation</title>
1618 <link>http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</link>
1619 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html</guid>
1620 <pubDate>Fri, 17 Oct 2014 14:10:00 +0200</pubDate>
1621 <description>&lt;p&gt;When PXE installing laptops with Debian, I often run into the
1622 problem that the WiFi card require some firmware to work properly.
1623 And it has been a pain to fix this using preseeding in Debian.
1624 Normally something more is needed. But thanks to
1625 &lt;a href=&quot;https://packages.qa.debian.org/i/isenkram.html&quot;&gt;my isenkram
1626 package&lt;/a&gt; and its recent tasksel extension, it has now become easy
1627 to do this using simple preseeding.&lt;/p&gt;
1628
1629 &lt;p&gt;The isenkram-cli package provide tasksel tasks which will install
1630 firmware for the hardware found in the machine (actually, requested by
1631 the kernel modules for the hardware). (It can also install user space
1632 programs supporting the hardware detected, but that is not the focus
1633 of this story.)&lt;/p&gt;
1634
1635 &lt;p&gt;To get this working in the default installation, two preeseding
1636 values are needed. First, the isenkram-cli package must be installed
1637 into the target chroot (aka the hard drive) before tasksel is executed
1638 in the pkgsel step of the debian-installer system. This is done by
1639 preseeding the base-installer/includes debconf value to include the
1640 isenkram-cli package. The package name is next passed to debootstrap
1641 for installation. With the isenkram-cli package in place, tasksel
1642 will automatically use the isenkram tasks to detect hardware specific
1643 packages for the machine being installed and install them, because
1644 isenkram-cli contain tasksel tasks.&lt;/p&gt;
1645
1646 &lt;p&gt;Second, one need to enable the non-free APT repository, because
1647 most firmware unfortunately is non-free. This is done by preseeding
1648 the apt-mirror-setup step. This is unfortunate, but for a lot of
1649 hardware it is the only option in Debian.&lt;/p&gt;
1650
1651 &lt;p&gt;The end result is two lines needed in your preseeding file to get
1652 firmware installed automatically by the installer:&lt;/p&gt;
1653
1654 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1655 base-installer base-installer/includes string isenkram-cli
1656 apt-mirror-setup apt-setup/non-free boolean true
1657 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1658
1659 &lt;p&gt;The current version of isenkram-cli in testing/jessie will install
1660 both firmware and user space packages when using this method. It also
1661 do not work well, so use version 0.15 or later. Installing both
1662 firmware and user space packages might give you a bit more than you
1663 want, so I decided to split the tasksel task in two, one for firmware
1664 and one for user space programs. The firmware task is enabled by
1665 default, while the one for user space programs is not. This split is
1666 implemented in the package currently in unstable.&lt;/p&gt;
1667
1668 &lt;p&gt;If you decide to give this a go, please let me know (via email) how
1669 this recipe work for you. :)&lt;/p&gt;
1670
1671 &lt;p&gt;So, I bet you are wondering, how can this work. First and
1672 foremost, it work because tasksel is modular, and driven by whatever
1673 files it find in /usr/lib/tasksel/ and /usr/share/tasksel/. So the
1674 isenkram-cli package place two files for tasksel to find. First there
1675 is the task description file (/usr/share/tasksel/descs/isenkram.desc):&lt;/p&gt;
1676
1677 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1678 Task: isenkram-packages
1679 Section: hardware
1680 Description: Hardware specific packages (autodetected by isenkram)
1681 Based on the detected hardware various hardware specific packages are
1682 proposed.
1683 Test-new-install: show show
1684 Relevance: 8
1685 Packages: for-current-hardware
1686
1687 Task: isenkram-firmware
1688 Section: hardware
1689 Description: Hardware specific firmware packages (autodetected by isenkram)
1690 Based on the detected hardware various hardware specific firmware
1691 packages are proposed.
1692 Test-new-install: mark show
1693 Relevance: 8
1694 Packages: for-current-hardware-firmware
1695 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1696
1697 &lt;p&gt;The key parts are Test-new-install which indicate how the task
1698 should be handled and the Packages line referencing to a script in
1699 /usr/lib/tasksel/packages/. The scripts use other scripts to get a
1700 list of packages to install. The for-current-hardware-firmware script
1701 look like this to list relevant firmware for the machine:
1702
1703 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1704 #!/bin/sh
1705 #
1706 PATH=/usr/sbin:$PATH
1707 export PATH
1708 isenkram-autoinstall-firmware -l
1709 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1710
1711 &lt;p&gt;With those two pieces in place, the firmware is installed by
1712 tasksel during the normal d-i run. :)&lt;/p&gt;
1713
1714 &lt;p&gt;If you want to test what tasksel will install when isenkram-cli is
1715 installed, run &lt;tt&gt;DEBIAN_PRIORITY=critical tasksel --test
1716 --new-install&lt;/tt&gt; to get the list of packages that tasksel would
1717 install.&lt;/p&gt;
1718
1719 &lt;p&gt;&lt;a href=&quot;https://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; will be
1720 pilots in testing this feature, as isenkram is used there now to
1721 install firmware, replacing the earlier scripts.&lt;/p&gt;
1722 </description>
1723 </item>
1724
1725 <item>
1726 <title>Ubuntu used to show the bread prizes at ICA Storo</title>
1727 <link>http://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html</link>
1728 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html</guid>
1729 <pubDate>Sat, 4 Oct 2014 15:20:00 +0200</pubDate>
1730 <description>&lt;p&gt;Today I came across an unexpected Ubuntu boot screen. Above the
1731 bread shelf on the ICA shop at Storo in Oslo, the grub menu of Ubuntu
1732 with Linux kernel 3.2.0-23 (ie probably version 12.04 LTS) was stuck
1733 on a screen normally showing the bread types and prizes:&lt;/p&gt;
1734
1735 &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;
1736
1737 &lt;p&gt;If it had booted as it was supposed to, I would never had known
1738 about this hidden Linux installation. It is interesting what
1739 &lt;a href=&quot;http://revealingerrors.com/&quot;&gt;errors can reveal&lt;/a&gt;.&lt;/p&gt;
1740 </description>
1741 </item>
1742
1743 <item>
1744 <title>New lsdvd release version 0.17 is ready</title>
1745 <link>http://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html</link>
1746 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html</guid>
1747 <pubDate>Sat, 4 Oct 2014 08:40:00 +0200</pubDate>
1748 <description>&lt;p&gt;The &lt;a href=&quot;https://sourceforge.net/p/lsdvd/&quot;&gt;lsdvd project&lt;/a&gt;
1749 got a new set of developers a few weeks ago, after the original
1750 developer decided to step down and pass the project to fresh blood.
1751 This project is now maintained by Petter Reinholdtsen and Steve
1752 Dibb.&lt;/p&gt;
1753
1754 &lt;p&gt;I just wrapped up
1755 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/mailman/message/32896061/&quot;&gt;a
1756 new lsdvd release&lt;/a&gt;, available in git or from
1757 &lt;a href=&quot;https://sourceforge.net/projects/lsdvd/files/lsdvd/&quot;&gt;the
1758 download page&lt;/a&gt;. This is the changelog dated 2014-10-03 for version
1759 0.17.&lt;/p&gt;
1760
1761 &lt;ul&gt;
1762
1763 &lt;li&gt;Ignore &#39;phantom&#39; audio, subtitle tracks&lt;/li&gt;
1764 &lt;li&gt;Check for garbage in the program chains, which indicate that a track is
1765 non-existant, to work around additional copy protection&lt;/li&gt;
1766 &lt;li&gt;Fix displaying content type for audio tracks, subtitles&lt;/li&gt;
1767 &lt;li&gt;Fix pallete display of first entry&lt;/li&gt;
1768 &lt;li&gt;Fix include orders&lt;/li&gt;
1769 &lt;li&gt;Ignore read errors in titles that would not be displayed anyway&lt;/li&gt;
1770 &lt;li&gt;Fix the chapter count&lt;/li&gt;
1771 &lt;li&gt;Make sure the array size and the array limit used when initialising
1772 the palette size is the same.&lt;/li&gt;
1773 &lt;li&gt;Fix array printing.&lt;/li&gt;
1774 &lt;li&gt;Correct subsecond calculations.&lt;/li&gt;
1775 &lt;li&gt;Add sector information to the output format.&lt;/li&gt;
1776 &lt;li&gt;Clean up code to be closer to ANSI C and compile without warnings
1777 with more GCC compiler warnings.&lt;/li&gt;
1778
1779 &lt;/ul&gt;
1780
1781 &lt;p&gt;This change bring together patches for lsdvd in use in various
1782 Linux and Unix distributions, as well as patches submitted to the
1783 project the last nine years. Please check it out. :)&lt;/p&gt;
1784 </description>
1785 </item>
1786
1787 <item>
1788 <title>How to test Debian Edu Jessie despite some fatal problems with the installer</title>
1789 <link>http://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html</link>
1790 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html</guid>
1791 <pubDate>Fri, 26 Sep 2014 12:20:00 +0200</pubDate>
1792 <description>&lt;p&gt;The &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux
1793 project&lt;/a&gt; provide a Linux solution for schools, including a
1794 powerful desktop with education software, a central server providing
1795 web pages, user database, user home directories, central login and PXE
1796 boot of both clients without disk and the installation to install Debian
1797 Edu on machines with disk (and a few other services perhaps to small
1798 to mention here). We in the Debian Edu team are currently working on
1799 the Jessie based version, trying to get everything in shape before the
1800 freeze, to avoid having to maintain our own package repository in the
1801 future. The
1802 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Status/Jessie&quot;&gt;current
1803 status&lt;/a&gt; can be seen on the Debian wiki, and there is still heaps of
1804 work left. Some fatal problems block testing, breaking the installer,
1805 but it is possible to work around these to get anyway. Here is a
1806 recipe on how to get the installation limping along.&lt;/p&gt;
1807
1808 &lt;p&gt;First, download the test ISO via
1809 &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;,
1810 &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;
1811 or rsync (use
1812 ftp.skolelinux.org::cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso).
1813 The ISO build was broken on Tuesday, so we do not get a new ISO every
1814 12 hours or so, but thankfully the ISO we already got we are able to
1815 install with some tweaking.&lt;/p&gt;
1816
1817 &lt;p&gt;When you get to the Debian Edu profile question, go to tty2
1818 (use Alt-Ctrl-F2), run&lt;/p&gt;
1819
1820 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
1821 nano /usr/bin/edu-eatmydata-install
1822 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
1823
1824 &lt;p&gt;and add &#39;exit 0&#39; as the second line, disabling the eatmydata
1825 optimization. Return to the installation, select the profile you want
1826 and continue. Without this change, exim4-config will fail to install
1827 due to a known bug in eatmydata.&lt;/p&gt;
1828
1829 &lt;p&gt;When you get the grub question at the end, answer /dev/sda (or if
1830 this do not work, figure out what your correct value would be. All my
1831 test machines need /dev/sda, so I have no advice if it do not fit
1832 your need.&lt;/p&gt;
1833
1834 &lt;p&gt;If you installed a profile including a graphical desktop, log in as
1835 root after the initial boot from hard drive, and install the
1836 education-desktop-XXX metapackage. XXX can be kde, gnome, lxde, xfce
1837 or mate. If you want several desktop options, install more than one
1838 metapackage. Once this is done, reboot and you should have a working
1839 graphical login screen. This workaround should no longer be needed
1840 once the education-tasks package version 1.801 enter testing in two
1841 days.&lt;/p&gt;
1842
1843 &lt;p&gt;I believe the ISO build will start working on two days when the new
1844 tasksel package enter testing and Steve McIntyre get a chance to
1845 update the debian-cd git repository. The eatmydata, grub and desktop
1846 issues are already fixed in unstable and testing, and should show up
1847 on the ISO as soon as the ISO build start working again. Well the
1848 eatmydata optimization is really just disabled. The proper fix
1849 require an upload by the eatmydata maintainer applying the patch
1850 provided in bug &lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;#702711&lt;/a&gt;.
1851 The rest have proper fixes in unstable.&lt;/p&gt;
1852
1853 &lt;p&gt;I hope this get you going with the installation testing, as we are
1854 quickly running out of time trying to get our Jessie based
1855 installation ready before the distribution freeze in a month.&lt;/p&gt;
1856 </description>
1857 </item>
1858
1859 <item>
1860 <title>Suddenly I am the new upstream of the lsdvd command line tool</title>
1861 <link>http://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html</link>
1862 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html</guid>
1863 <pubDate>Thu, 25 Sep 2014 11:20:00 +0200</pubDate>
1864 <description>&lt;p&gt;I use the &lt;a href=&quot;https://sourceforge.net/p/lsdvd/&quot;&gt;lsdvd tool&lt;/a&gt;
1865 to handle my fairly large DVD collection. It is a nice command line
1866 tool to get details about a DVD, like title, tracks, track length,
1867 etc, in XML, Perl or human readable format. But lsdvd have not seen
1868 any new development since 2006 and had a few irritating bugs affecting
1869 its use with some DVDs. Upstream seemed to be dead, and in January I
1870 sent a small probe asking for a version control repository for the
1871 project, without any reply. But I use it regularly and would like to
1872 get &lt;a href=&quot;https://packages.qa.debian.org/lsdvd&quot;&gt;an updated version
1873 into Debian&lt;/a&gt;. So two weeks ago I tried harder to get in touch with
1874 the project admin, and after getting a reply from him explaining that
1875 he was no longer interested in the project, I asked if I could take
1876 over. And yesterday, I became project admin.&lt;/p&gt;
1877
1878 &lt;p&gt;I&#39;ve been in touch with a Gentoo developer and the Debian
1879 maintainer interested in joining forces to maintain the upstream
1880 project, and I hope we can get a new release out fairly quickly,
1881 collecting the patches spread around on the internet into on place.
1882 I&#39;ve added the relevant Debian patches to the freshly created git
1883 repository, and expect the Gentoo patches to make it too. If you got
1884 a DVD collection and care about command line tools, check out
1885 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/git/ci/master/tree/&quot;&gt;the git source&lt;/a&gt; and join
1886 &lt;a href=&quot;https://sourceforge.net/p/lsdvd/mailman/&quot;&gt;the project mailing
1887 list&lt;/a&gt;. :)&lt;/p&gt;
1888 </description>
1889 </item>
1890
1891 <item>
1892 <title>Speeding up the Debian installer using eatmydata and dpkg-divert</title>
1893 <link>http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html</link>
1894 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html</guid>
1895 <pubDate>Tue, 16 Sep 2014 14:00:00 +0200</pubDate>
1896 <description>&lt;p&gt;The &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt; installer could be
1897 a lot quicker. When we install more than 2000 packages in
1898 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux / Debian Edu&lt;/a&gt; using
1899 tasksel in the installer, unpacking the binary packages take forever.
1900 A part of the slow I/O issue was discussed in
1901 &lt;a href=&quot;https://bugs.debian.org/613428&quot;&gt;bug #613428&lt;/a&gt; about too
1902 much file system sync-ing done by dpkg, which is the package
1903 responsible for unpacking the binary packages. Other parts (like code
1904 executed by postinst scripts) might also sync to disk during
1905 installation. All this sync-ing to disk do not really make sense to
1906 me. If the machine crash half-way through, I start over, I do not try
1907 to salvage the half installed system. So the failure sync-ing is
1908 supposed to protect against, hardware or system crash, is not really
1909 relevant while the installer is running.&lt;/p&gt;
1910
1911 &lt;p&gt;A few days ago, I thought of a way to get rid of all the file
1912 system sync()-ing in a fairly non-intrusive way, without the need to
1913 change the code in several packages. The idea is not new, but I have
1914 not heard anyone propose the approach using dpkg-divert before. It
1915 depend on the small and clever package
1916 &lt;a href=&quot;https://packages.qa.debian.org/eatmydata&quot;&gt;eatmydata&lt;/a&gt;, which
1917 uses LD_PRELOAD to replace the system functions for syncing data to
1918 disk with functions doing nothing, thus allowing programs to live
1919 dangerous while speeding up disk I/O significantly. Instead of
1920 modifying the implementation of dpkg, apt and tasksel (which are the
1921 packages responsible for selecting, fetching and installing packages),
1922 it occurred to me that we could just divert the programs away, replace
1923 them with a simple shell wrapper calling
1924 &quot;eatmydata&amp;nbsp;$program&amp;nbsp;$@&quot;, to get the same effect.
1925 Two days ago I decided to test the idea, and wrapped up a simple
1926 implementation for the Debian Edu udeb.&lt;/p&gt;
1927
1928 &lt;p&gt;The effect was stunning. In my first test it reduced the running
1929 time of the pkgsel step (installing tasks) from 64 to less than 44
1930 minutes (20 minutes shaved off the installation) on an old Dell
1931 Latitude D505 machine. I am not quite sure what the optimised time
1932 would have been, as I messed up the testing a bit, causing the debconf
1933 priority to get low enough for two questions to pop up during
1934 installation. As soon as I saw the questions I moved the installation
1935 along, but do not know how long the question were holding up the
1936 installation. I did some more measurements using Debian Edu Jessie,
1937 and got these results. The time measured is the time stamp in
1938 /var/log/syslog between the &quot;pkgsel: starting tasksel&quot; and the
1939 &quot;pkgsel: finishing up&quot; lines, if you want to do the same measurement
1940 yourself. In Debian Edu, the tasksel dialog do not show up, and the
1941 timing thus do not depend on how quickly the user handle the tasksel
1942 dialog.&lt;/p&gt;
1943
1944 &lt;p&gt;&lt;table&gt;
1945
1946 &lt;tr&gt;
1947 &lt;th&gt;Machine/setup&lt;/th&gt;
1948 &lt;th&gt;Original tasksel&lt;/th&gt;
1949 &lt;th&gt;Optimised tasksel&lt;/th&gt;
1950 &lt;th&gt;Reduction&lt;/th&gt;
1951 &lt;/tr&gt;
1952
1953 &lt;tr&gt;
1954 &lt;td&gt;Latitude D505 Main+LTSP LXDE&lt;/td&gt;
1955 &lt;td&gt;64 min (07:46-08:50)&lt;/td&gt;
1956 &lt;td&gt;&lt;44 min (11:27-12:11)&lt;/td&gt;
1957 &lt;td&gt;&gt;20 min 18%&lt;/td&gt;
1958 &lt;/tr&gt;
1959
1960 &lt;tr&gt;
1961 &lt;td&gt;Latitude D505 Roaming LXDE&lt;/td&gt;
1962 &lt;td&gt;57 min (08:48-09:45)&lt;/td&gt;
1963 &lt;td&gt;34 min (07:43-08:17)&lt;/td&gt;
1964 &lt;td&gt;23 min 40%&lt;/td&gt;
1965 &lt;/tr&gt;
1966
1967 &lt;tr&gt;
1968 &lt;td&gt;Latitude D505 Minimal&lt;/td&gt;
1969 &lt;td&gt;22 min (10:37-10:59)&lt;/td&gt;
1970 &lt;td&gt;11 min (11:16-11:27)&lt;/td&gt;
1971 &lt;td&gt;11 min 50%&lt;/td&gt;
1972 &lt;/tr&gt;
1973
1974 &lt;tr&gt;
1975 &lt;td&gt;Thinkpad X200 Minimal&lt;/td&gt;
1976 &lt;td&gt;6 min (08:19-08:25)&lt;/td&gt;
1977 &lt;td&gt;4 min (08:04-08:08)&lt;/td&gt;
1978 &lt;td&gt;2 min 33%&lt;/td&gt;
1979 &lt;/tr&gt;
1980
1981 &lt;tr&gt;
1982 &lt;td&gt;Thinkpad X200 Roaming KDE&lt;/td&gt;
1983 &lt;td&gt;19 min (09:21-09:40)&lt;/td&gt;
1984 &lt;td&gt;15 min (10:25-10:40)&lt;/td&gt;
1985 &lt;td&gt;4 min 21%&lt;/td&gt;
1986 &lt;/tr&gt;
1987
1988 &lt;/table&gt;&lt;/p&gt;
1989
1990 &lt;p&gt;The test is done using a netinst ISO on a USB stick, so some of the
1991 time is spent downloading packages. The connection to the Internet
1992 was 100Mbit/s during testing, so downloading should not be a
1993 significant factor in the measurement. Download typically took a few
1994 seconds to a few minutes, depending on the amount of packages being
1995 installed.&lt;/p&gt;
1996
1997 &lt;p&gt;The speedup is implemented by using two hooks in
1998 &lt;a href=&quot;https://www.debian.org/devel/debian-installer/&quot;&gt;Debian
1999 Installer&lt;/a&gt;, the pre-pkgsel.d hook to set up the diverts, and the
2000 finish-install.d hook to remove the divert at the end of the
2001 installation. I picked the pre-pkgsel.d hook instead of the
2002 post-base-installer.d hook because I test using an ISO without the
2003 eatmydata package included, and the post-base-installer.d hook in
2004 Debian Edu can only operate on packages included in the ISO. The
2005 negative effect of this is that I am unable to activate this
2006 optimization for the kernel installation step in d-i. If the code is
2007 moved to the post-base-installer.d hook, the speedup would be larger
2008 for the entire installation.&lt;/p&gt;
2009
2010 &lt;p&gt;I&#39;ve implemented this in the
2011 &lt;a href=&quot;https://packages.qa.debian.org/debian-edu-install&quot;&gt;debian-edu-install&lt;/a&gt;
2012 git repository, and plan to provide the optimization as part of the
2013 Debian Edu installation. If you want to test this yourself, you can
2014 create two files in the installer (or in an udeb). One shell script
2015 need do go into /usr/lib/pre-pkgsel.d/, with content like this:&lt;/p&gt;
2016
2017 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2018 #!/bin/sh
2019 set -e
2020 . /usr/share/debconf/confmodule
2021 info() {
2022 logger -t my-pkgsel &quot;info: $*&quot;
2023 }
2024 error() {
2025 logger -t my-pkgsel &quot;error: $*&quot;
2026 }
2027 override_install() {
2028 apt-install eatmydata || true
2029 if [ -x /target/usr/bin/eatmydata ] ; then
2030 for bin in dpkg apt-get aptitude tasksel ; do
2031 file=/usr/bin/$bin
2032 # Test that the file exist and have not been diverted already.
2033 if [ -f /target$file ] ; then
2034 info &quot;diverting $file using eatmydata&quot;
2035 printf &quot;#!/bin/sh\neatmydata $bin.distrib \&quot;\$@\&quot;\n&quot; \
2036 &gt; /target$file.edu
2037 chmod 755 /target$file.edu
2038 in-target dpkg-divert --package debian-edu-config \
2039 --rename --quiet --add $file
2040 ln -sf ./$bin.edu /target$file
2041 else
2042 error &quot;unable to divert $file, as it is missing.&quot;
2043 fi
2044 done
2045 else
2046 error &quot;unable to find /usr/bin/eatmydata after installing the eatmydata pacage&quot;
2047 fi
2048 }
2049
2050 override_install
2051 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2052
2053 &lt;p&gt;To clean up, another shell script should go into
2054 /usr/lib/finish-install.d/ with code like this:
2055
2056 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2057 #! /bin/sh -e
2058 . /usr/share/debconf/confmodule
2059 error() {
2060 logger -t my-finish-install &quot;error: $@&quot;
2061 }
2062 remove_install_override() {
2063 for bin in dpkg apt-get aptitude tasksel ; do
2064 file=/usr/bin/$bin
2065 if [ -x /target$file.edu ] ; then
2066 rm /target$file
2067 in-target dpkg-divert --package debian-edu-config \
2068 --rename --quiet --remove $file
2069 rm /target$file.edu
2070 else
2071 error &quot;Missing divert for $file.&quot;
2072 fi
2073 done
2074 sync # Flush file buffers before continuing
2075 }
2076
2077 remove_install_override
2078 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2079
2080 &lt;p&gt;In Debian Edu, I placed both code fragments in a separate script
2081 edu-eatmydata-install and call it from the pre-pkgsel.d and
2082 finish-install.d scripts.&lt;/p&gt;
2083
2084 &lt;p&gt;By now you might ask if this change should get into the normal
2085 Debian installer too? I suspect it should, but am not sure the
2086 current debian-installer coordinators find it useful enough. It also
2087 depend on the side effects of the change. I&#39;m not aware of any, but I
2088 guess we will see if the change is safe after some more testing.
2089 Perhaps there is some package in Debian depending on sync() and
2090 fsync() having effect? Perhaps it should go into its own udeb, to
2091 allow those of us wanting to enable it to do so without affecting
2092 everyone.&lt;/p&gt;
2093
2094 &lt;p&gt;Update 2014-09-24: Since a few days ago, enabling this optimization
2095 will break installation of all programs using gnutls because of
2096 &lt;a href=&quot;https://bugs.debian.org/702711&quot;&gt;bug #702711&lt;/a&gt;. An updated
2097 eatmydata package in Debian will solve it.&lt;/p&gt;
2098
2099 &lt;p&gt;Update 2014-10-17: The bug mentioned above is fixed in testing and
2100 the optimization work again. And I have discovered that the
2101 dpkg-divert trick is not really needed and implemented a slightly
2102 simpler approach as part of the debian-edu-install package. See
2103 tools/edu-eatmydata-install in the source package.&lt;/p&gt;
2104
2105 &lt;p&gt;Update 2014-11-11: Unfortunately, a new
2106 &lt;a href=&quot;http://bugs.debian.org/765738&quot;&gt;bug #765738&lt;/a&gt; in eatmydata only
2107 triggering on i386 made it into testing, and broke this installation
2108 optimization again. If &lt;a href=&quot;http://bugs.debian.org/768893&quot;&gt;unblock
2109 request 768893&lt;/a&gt; is accepted, it should be working again.&lt;/p&gt;
2110 </description>
2111 </item>
2112
2113 <item>
2114 <title>Good bye subkeys.pgp.net, welcome pool.sks-keyservers.net</title>
2115 <link>http://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html</link>
2116 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html</guid>
2117 <pubDate>Wed, 10 Sep 2014 13:10:00 +0200</pubDate>
2118 <description>&lt;p&gt;Yesterday, I had the pleasure of attending a talk with the
2119 &lt;a href=&quot;http://www.nuug.no/&quot;&gt;Norwegian Unix User Group&lt;/a&gt; about
2120 &lt;a href=&quot;http://www.nuug.no/aktiviteter/20140909-sks-keyservers/&quot;&gt;the
2121 OpenPGP keyserver pool sks-keyservers.net&lt;/a&gt;, and was very happy to
2122 learn that there is a large set of publicly available key servers to
2123 use when looking for peoples public key. So far I have used
2124 subkeys.pgp.net, and some times wwwkeys.nl.pgp.net when the former
2125 were misbehaving, but those days are ended. The servers I have used
2126 up until yesterday have been slow and some times unavailable. I hope
2127 those problems are gone now.&lt;/p&gt;
2128
2129 &lt;p&gt;Behind the round robin DNS entry of the
2130 &lt;a href=&quot;https://sks-keyservers.net/&quot;&gt;sks-keyservers.net&lt;/a&gt; service
2131 there is a pool of more than 100 keyservers which are checked every
2132 day to ensure they are well connected and up to date. It must be
2133 better than what I have used so far. :)&lt;/p&gt;
2134
2135 &lt;p&gt;Yesterdays speaker told me that the service is the default
2136 keyserver provided by the default configuration in GnuPG, but this do
2137 not seem to be used in Debian. Perhaps it should?&lt;/p&gt;
2138
2139 &lt;p&gt;Anyway, I&#39;ve updated my ~/.gnupg/options file to now include this
2140 line:&lt;/p&gt;
2141
2142 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2143 keyserver pool.sks-keyservers.net
2144 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2145
2146 &lt;p&gt;With GnuPG version 2 one can also locate the keyserver using SRV
2147 entries in DNS. Just for fun, I did just that at work, so now every
2148 user of GnuPG at the University of Oslo should find a OpenGPG
2149 keyserver automatically should their need it:&lt;/p&gt;
2150
2151 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2152 % host -t srv _pgpkey-http._tcp.uio.no
2153 _pgpkey-http._tcp.uio.no has SRV record 0 100 11371 pool.sks-keyservers.net.
2154 %
2155 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2156
2157 &lt;p&gt;Now if only
2158 &lt;a href=&quot;http://ietfreport.isoc.org/idref/draft-shaw-openpgp-hkp/&quot;&gt;the
2159 HKP lookup protocol&lt;/a&gt; supported finding signature paths, I would be
2160 very happy. It can look up a given key or search for a user ID, but I
2161 normally do not want that, but to find a trust path from my key to
2162 another key. Given a user ID or key ID, I would like to find (and
2163 download) the keys representing a signature path from my key to the
2164 key in question, to be able to get a trust path between the two keys.
2165 This is as far as I can tell not possible today. Perhaps something
2166 for a future version of the protocol?&lt;/p&gt;
2167 </description>
2168 </item>
2169
2170 <item>
2171 <title>From English wiki to translated PDF and epub via Docbook</title>
2172 <link>http://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html</link>
2173 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html</guid>
2174 <pubDate>Tue, 17 Jun 2014 11:30:00 +0200</pubDate>
2175 <description>&lt;p&gt;The &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux
2176 project&lt;/a&gt; provide an instruction manual for teachers, system
2177 administrators and other users that contain useful tips for setting up
2178 and maintaining a Debian Edu installation. This text is about how the
2179 text processing of this manual is handled in the project.&lt;/p&gt;
2180
2181 &lt;p&gt;One goal of the project is to provide information in the native
2182 language of its users, and for this we need to handle translations.
2183 But we also want to make sure each language contain the same
2184 information, so for this we need a good way to keep the translations
2185 in sync. And we want it to be easy for our users to improve the
2186 documentation, avoiding the need to learn special formats or tools to
2187 contribute, and the obvious way to do this is to make it possible to
2188 edit the documentation using a web browser. We also want it to be
2189 easy for translators to keep the translation up to date, and give them
2190 help in figuring out what need to be translated. Here is the list of
2191 tools and the process we have found trying to reach all these
2192 goals.&lt;/p&gt;
2193
2194 &lt;p&gt;We maintain the authoritative source of our manual in the
2195 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/&quot;&gt;Debian
2196 wiki&lt;/a&gt;, as several wiki pages written in English. It consist of one
2197 front page with references to the different chapters, several pages
2198 for each chapter, and finally one &quot;collection page&quot; gluing all the
2199 chapters together into one large web page (aka
2200 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/AllInOne&quot;&gt;the
2201 AllInOne page&lt;/a&gt;). The AllInOne page is the one used for further
2202 processing and translations. Thanks to the fact that the
2203 &lt;a href=&quot;http://moinmo.in/&quot;&gt;MoinMoin&lt;/a&gt; installation on
2204 wiki.debian.org support exporting pages in
2205 &lt;a href=&quot;http://www.docbook.org/&quot;&gt;the Docbook format&lt;/a&gt;, we can fetch
2206 the list of pages to export using the raw version of the AllInOne
2207 page, loop over each of them to generate a Docbook XML version of the
2208 manual. This process also download images and transform image
2209 references to use the locally downloaded images. The generated
2210 Docbook XML files are slightly broken, so some post-processing is done
2211 using the &lt;tt&gt;documentation/scripts/get_manual&lt;/tt&gt; program, and the
2212 result is a nice Docbook XML file (debian-edu-wheezy-manual.xml) and
2213 a handfull of images. The XML file can now be used to generate PDF, HTML
2214 and epub versions of the English manual. This is the basic step of
2215 our process, making PDF (using dblatex), HTML (using xsltproc) and
2216 epub (using dbtoepub) version from Docbook XML, and the resulting files
2217 are placed in the debian-edu-doc-en binary package.&lt;/p&gt;
2218
2219 &lt;p&gt;But English documentation is not enough for us. We want translated
2220 documentation too, and we want to make it easy for translators to
2221 track the English original. For this we use the
2222 &lt;a href=&quot;http://packages.qa.debian.org/p/poxml.html&quot;&gt;poxml&lt;/a&gt; package,
2223 which allow us to transform the English Docbook XML file into a
2224 translation file (a .pot file), usable with the normal gettext based
2225 translation tools used by those translating free software. The pot
2226 file is used to create and maintain translation files (several .po
2227 files), which the translations update with the native language
2228 translations of all titles, paragraphs and blocks of text in the
2229 original. The next step is combining the original English Docbook XML
2230 and the translation file (say debian-edu-wheezy-manual.nb.po), to
2231 create a translated Docbook XML file (in this case
2232 debian-edu-wheezy-manual.nb.xml). This translated (or partly
2233 translated, if the translation is not complete) Docbook XML file can
2234 then be used like the original to create a PDF, HTML and epub version
2235 of the documentation.&lt;/p&gt;
2236
2237 &lt;p&gt;The translators use different tools to edit the .po files. We
2238 recommend using
2239 &lt;a href=&quot;http://www.kde.org/applications/development/lokalize/&quot;&gt;lokalize&lt;/a&gt;,
2240 while some use emacs and vi, others can use web based editors like
2241 &lt;a href=&quot;http://pootle.translatehouse.org/&quot;&gt;Poodle&lt;/a&gt; or
2242 &lt;a href=&quot;https://www.transifex.com/&quot;&gt;Transifex&lt;/a&gt;. All we care about
2243 is where the .po file end up, in our git repository. Updated
2244 translations can either be committed directly to git, or submitted as
2245 &lt;a href=&quot;https://bugs.debian.org/src:debian-edu-doc&quot;&gt;bug reports
2246 against the debian-edu-doc package&lt;/a&gt;.&lt;/p&gt;
2247
2248 &lt;p&gt;One challenge is images, which both might need to be translated (if
2249 they show translated user applications), and are needed in different
2250 formats when creating PDF and HTML versions (epub is a HTML version in
2251 this regard). For this we transform the original PNG images to the
2252 needed density and format during build, and have a way to provide
2253 translated images by storing translated versions in
2254 images/$LANGUAGECODE/. I am a bit unsure about the details here. The
2255 package maintainers know more.&lt;/p&gt;
2256
2257 &lt;p&gt;If you wonder what the result look like, we provide
2258 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/&quot;&gt;the content
2259 of the documentation packages on the web&lt;/a&gt;. See for example the
2260 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/it/debian-edu-wheezy-manual.pdf&quot;&gt;Italian
2261 PDF version&lt;/a&gt; or the
2262 &lt;a href=&quot;http://maintainer.skolelinux.org/debian-edu-doc/de/debian-edu-wheezy-manual.html&quot;&gt;German
2263 HTML version&lt;/a&gt;. We do not yet build the epub version by default,
2264 but perhaps it will be done in the future.&lt;/p&gt;
2265
2266 &lt;p&gt;To learn more, check out
2267 &lt;a href=&quot;http://packages.qa.debian.org/d/debian-edu-doc.html&quot;&gt;the
2268 debian-edu-doc package&lt;/a&gt;,
2269 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/&quot;&gt;the
2270 manual on the wiki&lt;/a&gt; and
2271 &lt;a href=&quot;https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Translations&quot;&gt;the
2272 translation instructions&lt;/a&gt; in the manual.&lt;/p&gt;
2273 </description>
2274 </item>
2275
2276 <item>
2277 <title>Install hardware dependent packages using tasksel (Isenkram 0.7)</title>
2278 <link>http://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html</link>
2279 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html</guid>
2280 <pubDate>Wed, 23 Apr 2014 14:50:00 +0200</pubDate>
2281 <description>&lt;p&gt;It would be nice if it was easier in Debian to get all the hardware
2282 related packages relevant for the computer installed automatically.
2283 So I implemented one, using
2284 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;my Isenkram
2285 package&lt;/a&gt;. To use it, install the tasksel and isenkram packages and
2286 run tasksel as user root. You should be presented with a new option,
2287 &quot;Hardware specific packages (autodetected by isenkram)&quot;. When you
2288 select it, tasksel will install the packages isenkram claim is fit for
2289 the current hardware, hot pluggable or not.&lt;p&gt;
2290
2291 &lt;p&gt;The implementation is in two files, one is the tasksel menu entry
2292 description, and the other is the script used to extract the list of
2293 packages to install. The first part is in
2294 &lt;tt&gt;/usr/share/tasksel/descs/isenkram.desc&lt;/tt&gt; and look like
2295 this:&lt;/p&gt;
2296
2297 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2298 Task: isenkram
2299 Section: hardware
2300 Description: Hardware specific packages (autodetected by isenkram)
2301 Based on the detected hardware various hardware specific packages are
2302 proposed.
2303 Test-new-install: mark show
2304 Relevance: 8
2305 Packages: for-current-hardware
2306 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2307
2308 &lt;p&gt;The second part is in
2309 &lt;tt&gt;/usr/lib/tasksel/packages/for-current-hardware&lt;/tt&gt; and look like
2310 this:&lt;/p&gt;
2311
2312 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2313 #!/bin/sh
2314 #
2315 (
2316 isenkram-lookup
2317 isenkram-autoinstall-firmware -l
2318 ) | sort -u
2319 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2320
2321 &lt;p&gt;All in all, a very short and simple implementation making it
2322 trivial to install the hardware dependent package we all may want to
2323 have installed on our machines. I&#39;ve not been able to find a way to
2324 get tasksel to tell you exactly which packages it plan to install
2325 before doing the installation. So if you are curious or careful,
2326 check the output from the isenkram-* command line tools first.&lt;/p&gt;
2327
2328 &lt;p&gt;The information about which packages are handling which hardware is
2329 fetched either from the isenkram package itself in
2330 /usr/share/isenkram/, from git.debian.org or from the APT package
2331 database (using the Modaliases header). The APT package database
2332 parsing have caused a nasty resource leak in the isenkram daemon (bugs
2333 &lt;a href=&quot;http://bugs.debian.org/719837&quot;&gt;#719837&lt;/a&gt; and
2334 &lt;a href=&quot;http://bugs.debian.org/730704&quot;&gt;#730704&lt;/a&gt;). The cause is in
2335 the python-apt code (bug
2336 &lt;a href=&quot;http://bugs.debian.org/745487&quot;&gt;#745487&lt;/a&gt;), but using a
2337 workaround I was able to get rid of the file descriptor leak and
2338 reduce the memory leak from ~30 MiB per hardware detection down to
2339 around 2 MiB per hardware detection. It should make the desktop
2340 daemon a lot more useful. The fix is in version 0.7 uploaded to
2341 unstable today.&lt;/p&gt;
2342
2343 &lt;p&gt;I believe the current way of mapping hardware to packages in
2344 Isenkram is is a good draft, but in the future I expect isenkram to
2345 use the AppStream data source for this. A proposal for getting proper
2346 AppStream support into Debian is floating around as
2347 &lt;a href=&quot;https://wiki.debian.org/DEP-11&quot;&gt;DEP-11&lt;/a&gt;, and
2348 &lt;a href=&quot;https://wiki.debian.org/SummerOfCode2014/Projects#SummerOfCode2014.2FProjects.2FAppStreamDEP11Implementation.AppStream.2FDEP-11_for_the_Debian_Archive&quot;&gt;GSoC
2349 project&lt;/a&gt; will take place this summer to improve the situation. I
2350 look forward to seeing the result, and welcome patches for isenkram to
2351 start using the information when it is ready.&lt;/p&gt;
2352
2353 &lt;p&gt;If you want your package to map to some specific hardware, either
2354 add a &quot;Xb-Modaliases&quot; header to your control file like I did in
2355 &lt;a href=&quot;http://packages.qa.debian.org/pymissile&quot;&gt;the pymissile
2356 package&lt;/a&gt; or submit a bug report with the details to the isenkram
2357 package. See also
2358 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/tags/isenkram/&quot;&gt;all my
2359 blog posts tagged isenkram&lt;/a&gt; for details on the notation. I expect
2360 the information will be migrated to AppStream eventually, but for the
2361 moment I got no better place to store it.&lt;/p&gt;
2362 </description>
2363 </item>
2364
2365 <item>
2366 <title>FreedomBox milestone - all packages now in Debian Sid</title>
2367 <link>http://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html</link>
2368 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html</guid>
2369 <pubDate>Tue, 15 Apr 2014 22:10:00 +0200</pubDate>
2370 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox
2371 project&lt;/a&gt; is working on providing the software and hardware to make
2372 it easy for non-technical people to host their data and communication
2373 at home, and being able to communicate with their friends and family
2374 encrypted and away from prying eyes. It is still going strong, and
2375 today a major mile stone was reached.&lt;/p&gt;
2376
2377 &lt;p&gt;Today, the last of the packages currently used by the project to
2378 created the system images were accepted into Debian Unstable. It was
2379 the freedombox-setup package, which is used to configure the images
2380 during build and on the first boot. Now all one need to get going is
2381 the build code from the freedom-maker git repository and packages from
2382 Debian. And once the freedombox-setup package enter testing, we can
2383 build everything directly from Debian. :)&lt;/p&gt;
2384
2385 &lt;p&gt;Some key packages used by Freedombox are
2386 &lt;a href=&quot;http://packages.qa.debian.org/freedombox-setup&quot;&gt;freedombox-setup&lt;/a&gt;,
2387 &lt;a href=&quot;http://packages.qa.debian.org/plinth&quot;&gt;plinth&lt;/a&gt;,
2388 &lt;a href=&quot;http://packages.qa.debian.org/pagekite&quot;&gt;pagekite&lt;/a&gt;,
2389 &lt;a href=&quot;http://packages.qa.debian.org/tor&quot;&gt;tor&lt;/a&gt;,
2390 &lt;a href=&quot;http://packages.qa.debian.org/privoxy&quot;&gt;privoxy&lt;/a&gt;,
2391 &lt;a href=&quot;http://packages.qa.debian.org/owncloud&quot;&gt;owncloud&lt;/a&gt; and
2392 &lt;a href=&quot;http://packages.qa.debian.org/dnsmasq&quot;&gt;dnsmasq&lt;/a&gt;. There
2393 are plans to integrate more packages into the setup. User
2394 documentation is maintained on the Debian wiki. Please
2395 &lt;a href=&quot;https://wiki.debian.org/FreedomBox/Manual/Jessie&quot;&gt;check out
2396 the manual&lt;/a&gt; and help us improve it.&lt;/p&gt;
2397
2398 &lt;p&gt;To test for yourself and create boot images with the FreedomBox
2399 setup, run this on a Debian machine using a user with sudo rights to
2400 become root:&lt;/p&gt;
2401
2402 &lt;p&gt;&lt;pre&gt;
2403 sudo apt-get install git vmdebootstrap mercurial python-docutils \
2404 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
2405 u-boot-tools
2406 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
2407 freedom-maker
2408 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
2409 &lt;/pre&gt;&lt;/p&gt;
2410
2411 &lt;p&gt;Root access is needed to run debootstrap and mount loopback
2412 devices. See the README in the freedom-maker git repo for more
2413 details on the build. If you do not want all three images, trim the
2414 make line. Note that the virtualbox-image target is not really
2415 virtualbox specific. It create a x86 image usable in kvm, qemu,
2416 vmware and any other x86 virtual machine environment. You might need
2417 the version of vmdebootstrap in Jessie to get the build working, as it
2418 include fixes for a race condition with kpartx.&lt;/p&gt;
2419
2420 &lt;p&gt;If you instead want to install using a Debian CD and the preseed
2421 method, boot a Debian Wheezy ISO and use this boot argument to load
2422 the preseed values:&lt;/p&gt;
2423
2424 &lt;p&gt;&lt;pre&gt;
2425 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;
2426 &lt;/pre&gt;&lt;/p&gt;
2427
2428 &lt;p&gt;I have not tested it myself the last few weeks, so I do not know if
2429 it still work.&lt;/p&gt;
2430
2431 &lt;p&gt;If you wonder how to help, one task you could look at is using
2432 systemd as the boot system. It will become the default for Linux in
2433 Jessie, so we need to make sure it is usable on the Freedombox. I did
2434 a simple test a few weeks ago, and noticed dnsmasq failed to start
2435 during boot when using systemd. I suspect there are other problems
2436 too. :) To detect problems, there is a test suite included, which can
2437 be run from the plinth web interface.&lt;/p&gt;
2438
2439 &lt;p&gt;Give it a go and let us know how it goes on the mailing list, and help
2440 us get the new release published. :) Please join us on
2441 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC (#freedombox on
2442 irc.debian.org)&lt;/a&gt; and
2443 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
2444 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
2445 </description>
2446 </item>
2447
2448 <item>
2449 <title>S3QL, a locally mounted cloud file system - nice free software</title>
2450 <link>http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</link>
2451 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html</guid>
2452 <pubDate>Wed, 9 Apr 2014 11:30:00 +0200</pubDate>
2453 <description>&lt;p&gt;For a while now, I have been looking for a sensible offsite backup
2454 solution for use at home. My requirements are simple, it must be
2455 cheap and locally encrypted (in other words, I keep the encryption
2456 keys, the storage provider do not have access to my private files).
2457 One idea me and my friends had many years ago, before the cloud
2458 storage providers showed up, was to use Google mail as storage,
2459 writing a Linux block device storing blocks as emails in the mail
2460 service provided by Google, and thus get heaps of free space. On top
2461 of this one can add encryption, RAID and volume management to have
2462 lots of (fairly slow, I admit that) cheap and encrypted storage. But
2463 I never found time to implement such system. But the last few weeks I
2464 have looked at a system called
2465 &lt;a href=&quot;https://bitbucket.org/nikratio/s3ql/&quot;&gt;S3QL&lt;/a&gt;, a locally
2466 mounted network backed file system with the features I need.&lt;/p&gt;
2467
2468 &lt;p&gt;S3QL is a fuse file system with a local cache and cloud storage,
2469 handling several different storage providers, any with Amazon S3,
2470 Google Drive or OpenStack API. There are heaps of such storage
2471 providers. S3QL can also use a local directory as storage, which
2472 combined with sshfs allow for file storage on any ssh server. S3QL
2473 include support for encryption, compression, de-duplication, snapshots
2474 and immutable file systems, allowing me to mount the remote storage as
2475 a local mount point, look at and use the files as if they were local,
2476 while the content is stored in the cloud as well. This allow me to
2477 have a backup that should survive fire. The file system can not be
2478 shared between several machines at the same time, as only one can
2479 mount it at the time, but any machine with the encryption key and
2480 access to the storage service can mount it if it is unmounted.&lt;/p&gt;
2481
2482 &lt;p&gt;It is simple to use. I&#39;m using it on Debian Wheezy, where the
2483 package is included already. So to get started, run &lt;tt&gt;apt-get
2484 install s3ql&lt;/tt&gt;. Next, pick a storage provider. I ended up picking
2485 Greenqloud, after reading their nice recipe on
2486 &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
2487 to use S3QL with their Amazon S3 service&lt;/a&gt;, because I trust the laws
2488 in Iceland more than those in USA when it come to keeping my personal
2489 data safe and private, and thus would rather spend money on a company
2490 in Iceland. Another nice recipe is available from the article
2491 &lt;a href=&quot;http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage&quot;&gt;S3QL
2492 Filesystem for HPC Storage&lt;/a&gt; by Jeff Layton in the HPC section of
2493 Admin magazine. When the provider is picked, figure out how to get
2494 the API key needed to connect to the storage API. With Greencloud,
2495 the key did not show up until I had added payment details to my
2496 account.&lt;/p&gt;
2497
2498 &lt;p&gt;Armed with the API access details, it is time to create the file
2499 system. First, create a new bucket in the cloud. This bucket is the
2500 file system storage area. I picked a bucket name reflecting the
2501 machine that was going to store data there, but any name will do.
2502 I&#39;ll refer to it as &lt;tt&gt;bucket-name&lt;/tt&gt; below. In addition, one need
2503 the API login and password, and a locally created password. Store it
2504 all in ~root/.s3ql/authinfo2 like this:
2505
2506 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2507 [s3c]
2508 storage-url: s3c://s.greenqloud.com:443/bucket-name
2509 backend-login: API-login
2510 backend-password: API-password
2511 fs-passphrase: local-password
2512 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2513
2514 &lt;p&gt;I create my local passphrase using &lt;tt&gt;pwget 50&lt;/tt&gt; or similar,
2515 but any sensible way to create a fairly random password should do it.
2516 Armed with these details, it is now time to run mkfs, entering the API
2517 details and password to create it:&lt;/p&gt;
2518
2519 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2520 # mkdir -m 700 /var/lib/s3ql-cache
2521 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
2522 --ssl s3c://s.greenqloud.com:443/bucket-name
2523 Enter backend login:
2524 Enter backend password:
2525 Before using S3QL, make sure to read the user&#39;s guide, especially
2526 the &#39;Important Rules to Avoid Loosing Data&#39; section.
2527 Enter encryption password:
2528 Confirm encryption password:
2529 Generating random encryption key...
2530 Creating metadata tables...
2531 Dumping metadata...
2532 ..objects..
2533 ..blocks..
2534 ..inodes..
2535 ..inode_blocks..
2536 ..symlink_targets..
2537 ..names..
2538 ..contents..
2539 ..ext_attributes..
2540 Compressing and uploading metadata...
2541 Wrote 0.00 MB of compressed metadata.
2542 # &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2543
2544 &lt;p&gt;The next step is mounting the file system to make the storage available.
2545
2546 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2547 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
2548 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
2549 Using 4 upload threads.
2550 Downloading and decompressing metadata...
2551 Reading metadata...
2552 ..objects..
2553 ..blocks..
2554 ..inodes..
2555 ..inode_blocks..
2556 ..symlink_targets..
2557 ..names..
2558 ..contents..
2559 ..ext_attributes..
2560 Mounting filesystem...
2561 # df -h /s3ql
2562 Filesystem Size Used Avail Use% Mounted on
2563 s3c://s.greenqloud.com:443/bucket-name 1.0T 0 1.0T 0% /s3ql
2564 #
2565 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2566
2567 &lt;p&gt;The file system is now ready for use. I use rsync to store my
2568 backups in it, and as the metadata used by rsync is downloaded at
2569 mount time, no network traffic (and storage cost) is triggered by
2570 running rsync. To unmount, one should not use the normal umount
2571 command, as this will not flush the cache to the cloud storage, but
2572 instead running the umount.s3ql command like this:
2573
2574 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2575 # umount.s3ql /s3ql
2576 #
2577 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2578
2579 &lt;p&gt;There is a fsck command available to check the file system and
2580 correct any problems detected. This can be used if the local server
2581 crashes while the file system is mounted, to reset the &quot;already
2582 mounted&quot; flag. This is what it look like when processing a working
2583 file system:&lt;/p&gt;
2584
2585 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2586 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:443/bucket-name
2587 Using cached metadata.
2588 File system seems clean, checking anyway.
2589 Checking DB integrity...
2590 Creating temporary extra indices...
2591 Checking lost+found...
2592 Checking cached objects...
2593 Checking names (refcounts)...
2594 Checking contents (names)...
2595 Checking contents (inodes)...
2596 Checking contents (parent inodes)...
2597 Checking objects (reference counts)...
2598 Checking objects (backend)...
2599 ..processed 5000 objects so far..
2600 ..processed 10000 objects so far..
2601 ..processed 15000 objects so far..
2602 Checking objects (sizes)...
2603 Checking blocks (referenced objects)...
2604 Checking blocks (refcounts)...
2605 Checking inode-block mapping (blocks)...
2606 Checking inode-block mapping (inodes)...
2607 Checking inodes (refcounts)...
2608 Checking inodes (sizes)...
2609 Checking extended attributes (names)...
2610 Checking extended attributes (inodes)...
2611 Checking symlinks (inodes)...
2612 Checking directory reachability...
2613 Checking unix conventions...
2614 Checking referential integrity...
2615 Dropping temporary indices...
2616 Backing up old metadata...
2617 Dumping metadata...
2618 ..objects..
2619 ..blocks..
2620 ..inodes..
2621 ..inode_blocks..
2622 ..symlink_targets..
2623 ..names..
2624 ..contents..
2625 ..ext_attributes..
2626 Compressing and uploading metadata...
2627 Wrote 0.89 MB of compressed metadata.
2628 #
2629 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2630
2631 &lt;p&gt;Thanks to the cache, working on files that fit in the cache is very
2632 quick, about the same speed as local file access. Uploading large
2633 amount of data is to me limited by the bandwidth out of and into my
2634 house. Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
2635 which is very close to my upload speed, and downloading the same
2636 Debian installation ISO gave me 610 kiB/s, close to my download speed.
2637 Both were measured using &lt;tt&gt;dd&lt;/tt&gt;. So for me, the bottleneck is my
2638 network, not the file system code. I do not know what a good cache
2639 size would be, but suspect that the cache should e larger than your
2640 working set.&lt;/p&gt;
2641
2642 &lt;p&gt;I mentioned that only one machine can mount the file system at the
2643 time. If another machine try, it is told that the file system is
2644 busy:&lt;/p&gt;
2645
2646 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2647 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
2648 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
2649 Using 8 upload threads.
2650 Backend reports that fs is still mounted elsewhere, aborting.
2651 #
2652 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2653
2654 &lt;p&gt;The file content is uploaded when the cache is full, while the
2655 metadata is uploaded once every 24 hour by default. To ensure the
2656 file system content is flushed to the cloud, one can either umount the
2657 file system, or ask S3QL to flush the cache and metadata using
2658 s3qlctrl:
2659
2660 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2661 # s3qlctrl upload-meta /s3ql
2662 # s3qlctrl flushcache /s3ql
2663 #
2664 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2665
2666 &lt;p&gt;If you are curious about how much space your data uses in the
2667 cloud, and how much compression and deduplication cut down on the
2668 storage usage, you can use s3qlstat on the mounted file system to get
2669 a report:&lt;/p&gt;
2670
2671 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2672 # s3qlstat /s3ql
2673 Directory entries: 9141
2674 Inodes: 9143
2675 Data blocks: 8851
2676 Total data size: 22049.38 MB
2677 After de-duplication: 21955.46 MB (99.57% of total)
2678 After compression: 21877.28 MB (99.22% of total, 99.64% of de-duplicated)
2679 Database size: 2.39 MB (uncompressed)
2680 (some values do not take into account not-yet-uploaded dirty blocks in cache)
2681 #
2682 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2683
2684 &lt;p&gt;I mentioned earlier that there are several possible suppliers of
2685 storage. I did not try to locate them all, but am aware of at least
2686 &lt;a href=&quot;https://www.greenqloud.com/&quot;&gt;Greenqloud&lt;/a&gt;,
2687 &lt;a href=&quot;http://drive.google.com/&quot;&gt;Google Drive&lt;/a&gt;,
2688 &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;Amazon S3 web serivces&lt;/a&gt;,
2689 &lt;a href=&quot;http://www.rackspace.com/&quot;&gt;Rackspace&lt;/a&gt; and
2690 &lt;a href=&quot;http://crowncloud.net/&quot;&gt;Crowncloud&lt;/A&gt;. The latter even
2691 accept payment in Bitcoin. Pick one that suit your need. Some of
2692 them provide several GiB of free storage, but the prize models are
2693 quite different and you will have to figure out what suits you
2694 best.&lt;/p&gt;
2695
2696 &lt;p&gt;While researching this blog post, I had a look at research papers
2697 and posters discussing the S3QL file system. There are several, which
2698 told me that the file system is getting a critical check by the
2699 science community and increased my confidence in using it. One nice
2700 poster is titled
2701 &quot;&lt;a href=&quot;http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf&quot;&gt;An
2702 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
2703 Store and Transformative Parallel I/O Approach&lt;/a&gt;&quot; by Hsing-Bung
2704 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
2705 and Pamela Smith. Please have a look.&lt;/p&gt;
2706
2707 &lt;p&gt;Given my problems with different file systems earlier, I decided to
2708 check out the mounted S3QL file system to see if it would be usable as
2709 a home directory (in other word, that it provided POSIX semantics when
2710 it come to locking and umask handling etc). Running
2711 &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
2712 test code to check file system semantics&lt;/a&gt;, I was happy to discover that
2713 no error was found. So the file system can be used for home
2714 directories, if one chooses to do so.&lt;/p&gt;
2715
2716 &lt;p&gt;If you do not want a locally file system, and want something that
2717 work without the Linux fuse file system, I would like to mention the
2718 &lt;a href=&quot;http://www.tarsnap.com/&quot;&gt;Tarsnap service&lt;/a&gt;, which also
2719 provide locally encrypted backup using a command line client. It have
2720 a nicer access control system, where one can split out read and write
2721 access, allowing some systems to write to the backup and others to
2722 only read from it.&lt;/p&gt;
2723
2724 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
2725 activities, please send Bitcoin donations to my address
2726 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
2727 </description>
2728 </item>
2729
2730 <item>
2731 <title>Freedombox on Dreamplug, Raspberry Pi and virtual x86 machine</title>
2732 <link>http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html</link>
2733 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html</guid>
2734 <pubDate>Fri, 14 Mar 2014 11:00:00 +0100</pubDate>
2735 <description>&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;Freedombox
2736 project&lt;/a&gt; is working on providing the software and hardware for
2737 making it easy for non-technical people to host their data and
2738 communication at home, and being able to communicate with their
2739 friends and family encrypted and away from prying eyes. It has been
2740 going on for a while, and is slowly progressing towards a new test
2741 release (0.2).&lt;/p&gt;
2742
2743 &lt;p&gt;And what day could be better than the Pi day to announce that the
2744 new version will provide &quot;hard drive&quot; / SD card / USB stick images for
2745 Dreamplug, Raspberry Pi and VirtualBox (or any other virtualization
2746 system), and can also be installed using a Debian installer preseed
2747 file. The Debian based Freedombox is now based on Debian Jessie,
2748 where most of the needed packages used are already present. Only one,
2749 the freedombox-setup package, is missing. To try to build your own
2750 boot image to test the current status, fetch the freedom-maker scripts
2751 and build using
2752 &lt;a href=&quot;http://packages.qa.debian.org/vmdebootstrap&quot;&gt;vmdebootstrap&lt;/a&gt;
2753 with a user with sudo access to become root:
2754
2755 &lt;pre&gt;
2756 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
2757 freedom-maker
2758 sudo apt-get install git vmdebootstrap mercurial python-docutils \
2759 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
2760 u-boot-tools
2761 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
2762 &lt;/pre&gt;
2763
2764 &lt;p&gt;Root access is needed to run debootstrap and mount loopback
2765 devices. See the README for more details on the build. If you do not
2766 want all three images, trim the make line. But note that thanks to &lt;a
2767 href=&quot;https://bugs.debian.org/741407&quot;&gt;a race condition in
2768 vmdebootstrap&lt;/a&gt;, the build might fail without the patch to the
2769 kpartx call.&lt;/p&gt;
2770
2771 &lt;p&gt;If you instead want to install using a Debian CD and the preseed
2772 method, boot a Debian Wheezy ISO and use this boot argument to load
2773 the preseed values:&lt;/p&gt;
2774
2775 &lt;pre&gt;
2776 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;
2777 &lt;/pre&gt;
2778
2779 &lt;p&gt;But note that due to &lt;a href=&quot;https://bugs.debian.org/740673&quot;&gt;a
2780 recently introduced bug in apt in Jessie&lt;/a&gt;, the installer will
2781 currently hang while setting up APT sources. Killing the
2782 &#39;&lt;tt&gt;apt-cdrom ident&lt;/tt&gt;&#39; process when it hang a few times during the
2783 installation will get the installation going. This affect all
2784 installations in Jessie, and I expect it will be fixed soon.&lt;/p&gt;
2785
2786 &lt;p&gt;Give it a go and let us know how it goes on the mailing list, and help
2787 us get the new release published. :) Please join us on
2788 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC (#freedombox on
2789 irc.debian.org)&lt;/a&gt; and
2790 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
2791 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
2792 </description>
2793 </item>
2794
2795 <item>
2796 <title>New home and release 1.0 for netgroup and innetgr (aka ng-utils)</title>
2797 <link>http://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html</link>
2798 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html</guid>
2799 <pubDate>Sat, 22 Feb 2014 21:45:00 +0100</pubDate>
2800 <description>&lt;p&gt;Many years ago, I wrote a GPL licensed version of the netgroup and
2801 innetgr tools, because I needed them in
2802 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt;. I called the project
2803 ng-utils, and it has served me well. I placed the project under the
2804 &lt;a href=&quot;http://www.hungry.com/&quot;&gt;Hungry Programmer&lt;/a&gt; umbrella, and it was maintained in our CVS
2805 repository. But many years ago, the CVS repository was dropped (lost,
2806 not migrated to new hardware, not sure), and the project have lacked a
2807 proper home since then.&lt;/p&gt;
2808
2809 &lt;p&gt;Last summer, I had a look at the package and made a new release
2810 fixing a irritating crash bug, but was unable to store the changes in
2811 a proper source control system. I applied for a project on
2812 &lt;a href=&quot;https://alioth.debian.org/&quot;&gt;Alioth&lt;/a&gt;, but did not have time
2813 to follow up on it. Until today. :)&lt;/p&gt;
2814
2815 &lt;p&gt;After many hours of cleaning and migration, the ng-utils project
2816 now have a new home, and a git repository with the highlight of the
2817 history of the project. I published all release tarballs and imported
2818 them into the git repository. As the project is really stable and not
2819 expected to gain new features any time soon, I decided to make a new
2820 release and call it 1.0. Visit the new project home on
2821 &lt;a href=&quot;https://alioth.debian.org/projects/ng-utils/&quot;&gt;https://alioth.debian.org/projects/ng-utils/&lt;/a&gt;
2822 if you want to check it out. The new version is also uploaded into
2823 &lt;a href=&quot;http://packages.qa.debian.org/n/ng-utils.html&quot;&gt;Debian Unstable&lt;/a&gt;.&lt;/p&gt;
2824 </description>
2825 </item>
2826
2827 <item>
2828 <title>Testing sysvinit from experimental in Debian Hurd</title>
2829 <link>http://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html</link>
2830 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html</guid>
2831 <pubDate>Mon, 3 Feb 2014 13:40:00 +0100</pubDate>
2832 <description>&lt;p&gt;A few days ago I decided to try to help the Hurd people to get
2833 their changes into sysvinit, to allow them to use the normal sysvinit
2834 boot system instead of their old one. This follow up on the
2835 &lt;a href=&quot;https://teythoon.cryptobitch.de//categories/gsoc.html&quot;&gt;great
2836 Google Summer of Code work&lt;/a&gt; done last summer by Justus Winter to
2837 get Debian on Hurd working more like Debian on Linux. To get started,
2838 I downloaded a prebuilt hard disk image from
2839 &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;,
2840 and started it using virt-manager.&lt;/p&gt;
2841
2842 &lt;p&gt;The first think I had to do after logging in (root without any
2843 password) was to get the network operational. I followed
2844 &lt;a href=&quot;https://www.debian.org/ports/hurd/hurd-install&quot;&gt;the
2845 instructions on the Debian GNU/Hurd ports page&lt;/a&gt; and ran these
2846 commands as root to get the machine to accept a IP address from the
2847 kvm internal DHCP server:&lt;/p&gt;
2848
2849 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2850 settrans -fgap /dev/netdde /hurd/netdde
2851 kill $(ps -ef|awk &#39;/[p]finet/ { print $2}&#39;)
2852 kill $(ps -ef|awk &#39;/[d]evnode/ { print $2}&#39;)
2853 dhclient /dev/eth0
2854 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2855
2856 &lt;p&gt;After this, the machine had internet connectivity, and I could
2857 upgrade it and install the sysvinit packages from experimental and
2858 enable it as the default boot system in Hurd.&lt;/p&gt;
2859
2860 &lt;p&gt;But before I did that, I set a password on the root user, as ssh is
2861 running on the machine it for ssh login to work a password need to be
2862 set. Also, note that a bug somewhere in openssh on Hurd block
2863 compression from working. Remember to turn that off on the client
2864 side.&lt;/p&gt;
2865
2866 &lt;p&gt;Run these commands as root to upgrade and test the new sysvinit
2867 stuff:&lt;/p&gt;
2868
2869 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2870 cat &gt; /etc/apt/sources.list.d/experimental.list &amp;lt;&amp;lt;EOF
2871 deb http://http.debian.net/debian/ experimental main
2872 EOF
2873 apt-get update
2874 apt-get dist-upgrade
2875 apt-get install -t experimental initscripts sysv-rc sysvinit \
2876 sysvinit-core sysvinit-utils
2877 update-alternatives --config runsystem
2878 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2879
2880 &lt;p&gt;To reboot after switching boot system, you have to use
2881 &lt;tt&gt;reboot-hurd&lt;/tt&gt; instead of just &lt;tt&gt;reboot&lt;/tt&gt;, as there is not
2882 yet a sysvinit process able to receive the signals from the normal
2883 &#39;reboot&#39; command. After switching to sysvinit as the boot system,
2884 upgrading every package and rebooting, the network come up with DHCP
2885 after boot as it should, and the settrans/pkill hack mentioned at the
2886 start is no longer needed. But for some strange reason, there are no
2887 longer any login prompt in the virtual console, so I logged in using
2888 ssh instead.
2889
2890 &lt;p&gt;Note that there are some race conditions in Hurd making the boot
2891 fail some times. No idea what the cause is, but hope the Hurd porters
2892 figure it out. At least Justus said on IRC (#debian-hurd on
2893 irc.debian.org) that they are aware of the problem. A way to reduce
2894 the impact is to upgrade to the Hurd packages built by Justus by
2895 adding this repository to the machine:&lt;/p&gt;
2896
2897 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2898 cat &gt; /etc/apt/sources.list.d/hurd-ci.list &amp;lt;&amp;lt;EOF
2899 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
2900 EOF
2901 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2902
2903 &lt;p&gt;At the moment the prebuilt virtual machine get some packages from
2904 http://ftp.debian-ports.org/debian, because some of the packages in
2905 unstable do not yet include the required patches that are lingering in
2906 BTS. This is the completely list of &quot;unofficial&quot; packages installed:&lt;/p&gt;
2907
2908 &lt;p&gt;&lt;blockquote&gt;&lt;pre&gt;
2909 # aptitude search &#39;?narrow(?version(CURRENT),?origin(Debian Ports))&#39;
2910 i emacs - GNU Emacs editor (metapackage)
2911 i gdb - GNU Debugger
2912 i hurd-recommended - Miscellaneous translators
2913 i isc-dhcp-client - ISC DHCP client
2914 i isc-dhcp-common - common files used by all the isc-dhcp* packages
2915 i libc-bin - Embedded GNU C Library: Binaries
2916 i libc-dev-bin - Embedded GNU C Library: Development binaries
2917 i libc0.3 - Embedded GNU C Library: Shared libraries
2918 i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
2919 i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
2920 i multiarch-support - Transitional package to ensure multiarch compatibilit
2921 i A x11-common - X Window System (X.Org) infrastructure
2922 i xorg - X.Org X Window System
2923 i A xserver-xorg - X.Org X server
2924 i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
2925 #
2926 &lt;/pre&gt;&lt;/blockquote&gt;&lt;/p&gt;
2927
2928 &lt;p&gt;All in all, testing hurd has been an interesting experience. :)
2929 X.org did not work out of the box and I never took the time to follow
2930 the porters instructions to fix it. This time I was interested in the
2931 command line stuff.&lt;p&gt;
2932 </description>
2933 </item>
2934
2935 <item>
2936 <title>New chrpath release 0.16</title>
2937 <link>http://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html</link>
2938 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html</guid>
2939 <pubDate>Tue, 14 Jan 2014 11:00:00 +0100</pubDate>
2940 <description>&lt;p&gt;&lt;a href=&quot;http://www.coverity.com/&quot;&gt;Coverity&lt;/a&gt; is a nice tool to
2941 find problems in C, C++ and Java code using static source code
2942 analysis. It can detect a lot of different problems, and is very
2943 useful to find memory and locking bugs in the error handling part of
2944 the source. The company behind it provide
2945 &lt;a href=&quot;https://scan.coverity.com/&quot;&gt;check of free software projects as
2946 a community service&lt;/a&gt;, and many hundred free software projects are
2947 already checked. A few days ago I decided to have a closer look at
2948 the Coverity system, and discovered that the
2949 &lt;a href=&quot;http://www.gnu.org/software/gnash/&quot;&gt;gnash&lt;/a&gt; and
2950 &lt;a href=&quot;http://sourceforge.net/projects/ipmitool/&quot;&gt;ipmitool&lt;/a&gt;
2951 projects I am involved with was already registered. But these are
2952 fairly big, and I would also like to have a small and easy project to
2953 check, and decided to &lt;a href=&quot;http://scan.coverity.com/projects/1179&quot;&gt;request
2954 checking of the chrpath project&lt;/a&gt;. It was
2955 added to the checker and discovered seven potential defects. Six of
2956 these were real, mostly resource &quot;leak&quot; when the program detected an
2957 error. Nothing serious, as the resources would be released a fraction
2958 of a second later when the program exited because of the error, but it
2959 is nice to do it right in case the source of the program some time in
2960 the future end up in a library. Having fixed all defects and added
2961 &lt;a href=&quot;https://lists.alioth.debian.org/mailman/listinfo/chrpath-devel&quot;&gt;a
2962 mailing list for the chrpath developers&lt;/a&gt;, I decided it was time to
2963 publish a new release. These are the release notes:&lt;/p&gt;
2964
2965 &lt;p&gt;New in 0.16 released 2014-01-14:&lt;/p&gt;
2966
2967 &lt;ul&gt;
2968
2969 &lt;li&gt;Fixed all minor bugs discovered by Coverity.&lt;/li&gt;
2970 &lt;li&gt;Updated config.sub and config.guess from the GNU project.&lt;/li&gt;
2971 &lt;li&gt;Mention new project mailing list in the documentation.&lt;/li&gt;
2972
2973 &lt;/ul&gt;
2974
2975 &lt;p&gt;You can
2976 &lt;a href=&quot;https://alioth.debian.org/frs/?group_id=31052&quot;&gt;download the
2977 new version 0.16 from alioth&lt;/a&gt;. Please let us know via the Alioth
2978 project if something is wrong with the new release. The test suite
2979 did not discover any old errors, so if you find a new one, please also
2980 include a test suite check.&lt;/p&gt;
2981 </description>
2982 </item>
2983
2984 <item>
2985 <title>New chrpath release 0.15</title>
2986 <link>http://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html</link>
2987 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html</guid>
2988 <pubDate>Sun, 24 Nov 2013 09:30:00 +0100</pubDate>
2989 <description>&lt;p&gt;After many years break from the package and a vain hope that
2990 development would be continued by someone else, I finally pulled my
2991 acts together this morning and wrapped up a new release of chrpath,
2992 the command line tool to modify the rpath and runpath of already
2993 compiled ELF programs. The update was triggered by the persistence of
2994 Isha Vishnoi at IBM, which needed a new config.guess file to get
2995 support for the ppc64le architecture (powerpc 64-bit Little Endian) he
2996 is working on. I checked the
2997 &lt;a href=&quot;http://packages.qa.debian.org/chrpath&quot;&gt;Debian&lt;/a&gt;,
2998 &lt;a href=&quot;https://launchpad.net/ubuntu/+source/chrpath&quot;&gt;Ubuntu&lt;/a&gt; and
2999 &lt;a href=&quot;https://admin.fedoraproject.org/pkgdb/acls/name/chrpath&quot;&gt;Fedora&lt;/a&gt;
3000 packages for interesting patches (failed to find the source from
3001 OpenSUSE and Mandriva packages), and found quite a few nice fixes.
3002 These are the release notes:&lt;/p&gt;
3003
3004 &lt;p&gt;New in 0.15 released 2013-11-24:&lt;/p&gt;
3005
3006 &lt;ul&gt;
3007
3008 &lt;li&gt;Updated config.sub and config.guess from the GNU project to work
3009 with newer architectures. Thanks to isha vishnoi for the heads
3010 up.&lt;/li&gt;
3011
3012 &lt;li&gt;Updated README with current URLs.&lt;/li&gt;
3013
3014 &lt;li&gt;Added byteswap fix found in Ubuntu, credited Jeremy Kerr and
3015 Matthias Klose.&lt;/li&gt;
3016
3017 &lt;li&gt;Added missing help for -k|--keepgoing option, using patch by
3018 Petr Machata found in Fedora.&lt;/li&gt;
3019
3020 &lt;li&gt;Rewrite removal of RPATH/RUNPATH to make sure the entry in
3021 .dynamic is a NULL terminated string. Based on patch found in
3022 Fedora credited Axel Thimm and Christian Krause.&lt;/li&gt;
3023
3024 &lt;/ul&gt;
3025
3026 &lt;p&gt;You can
3027 &lt;a href=&quot;https://alioth.debian.org/frs/?group_id=31052&quot;&gt;download the
3028 new version 0.15 from alioth&lt;/a&gt;. Please let us know via the Alioth
3029 project if something is wrong with the new release. The test suite
3030 did not discover any old errors, so if you find a new one, please also
3031 include a testsuite check.&lt;/p&gt;
3032 </description>
3033 </item>
3034
3035 <item>
3036 <title>Debian init.d boot script example for rsyslog</title>
3037 <link>http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</link>
3038 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</guid>
3039 <pubDate>Sat, 2 Nov 2013 22:40:00 +0100</pubDate>
3040 <description>&lt;p&gt;If one of the points of switching to a new init system in Debian is
3041 &lt;a href=&quot;http://thomas.goirand.fr/blog/?p=147&quot;&gt;to get rid of huge
3042 init.d scripts&lt;/a&gt;, I doubt we need to switch away from sysvinit and
3043 init.d scripts at all. Here is an example init.d script, ie a rewrite
3044 of /etc/init.d/rsyslog:&lt;/p&gt;
3045
3046 &lt;p&gt;&lt;pre&gt;
3047 #!/lib/init/init-d-script
3048 ### BEGIN INIT INFO
3049 # Provides: rsyslog
3050 # Required-Start: $remote_fs $time
3051 # Required-Stop: umountnfs $time
3052 # X-Stop-After: sendsigs
3053 # Default-Start: 2 3 4 5
3054 # Default-Stop: 0 1 6
3055 # Short-Description: enhanced syslogd
3056 # Description: Rsyslog is an enhanced multi-threaded syslogd.
3057 # It is quite compatible to stock sysklogd and can be
3058 # used as a drop-in replacement.
3059 ### END INIT INFO
3060 DESC=&quot;enhanced syslogd&quot;
3061 DAEMON=/usr/sbin/rsyslogd
3062 &lt;/pre&gt;&lt;/p&gt;
3063
3064 &lt;p&gt;Pretty minimalistic to me... For the record, the original sysv-rc
3065 script was 137 lines, and the above is just 15 lines, most of it meta
3066 info/comments.&lt;/p&gt;
3067
3068 &lt;p&gt;How to do this, you ask? Well, one create a new script
3069 /lib/init/init-d-script looking something like this:
3070
3071 &lt;p&gt;&lt;pre&gt;
3072 #!/bin/sh
3073
3074 # Define LSB log_* functions.
3075 # Depend on lsb-base (&gt;= 3.2-14) to ensure that this file is present
3076 # and status_of_proc is working.
3077 . /lib/lsb/init-functions
3078
3079 #
3080 # Function that starts the daemon/service
3081
3082 #
3083 do_start()
3084 {
3085 # Return
3086 # 0 if daemon has been started
3087 # 1 if daemon was already running
3088 # 2 if daemon could not be started
3089 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test &gt; /dev/null \
3090 || return 1
3091 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
3092 $DAEMON_ARGS \
3093 || return 2
3094 # Add code here, if necessary, that waits for the process to be ready
3095 # to handle requests from services started subsequently which depend
3096 # on this one. As a last resort, sleep for some time.
3097 }
3098
3099 #
3100 # Function that stops the daemon/service
3101 #
3102 do_stop()
3103 {
3104 # Return
3105 # 0 if daemon has been stopped
3106 # 1 if daemon was already stopped
3107 # 2 if daemon could not be stopped
3108 # other if a failure occurred
3109 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
3110 RETVAL=&quot;$?&quot;
3111 [ &quot;$RETVAL&quot; = 2 ] &amp;&amp; return 2
3112 # Wait for children to finish too if this is a daemon that forks
3113 # and if the daemon is only ever run from this initscript.
3114 # If the above conditions are not satisfied then add some other code
3115 # that waits for the process to drop all resources that could be
3116 # needed by services started subsequently. A last resort is to
3117 # sleep for some time.
3118 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
3119 [ &quot;$?&quot; = 2 ] &amp;&amp; return 2
3120 # Many daemons don&#39;t delete their pidfiles when they exit.
3121 rm -f $PIDFILE
3122 return &quot;$RETVAL&quot;
3123 }
3124
3125 #
3126 # Function that sends a SIGHUP to the daemon/service
3127 #
3128 do_reload() {
3129 #
3130 # If the daemon can reload its configuration without
3131 # restarting (for example, when it is sent a SIGHUP),
3132 # then implement that here.
3133 #
3134 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
3135 return 0
3136 }
3137
3138 SCRIPTNAME=$1
3139 scriptbasename=&quot;$(basename $1)&quot;
3140 echo &quot;SN: $scriptbasename&quot;
3141 if [ &quot;$scriptbasename&quot; != &quot;init-d-library&quot; ] ; then
3142 script=&quot;$1&quot;
3143 shift
3144 . $script
3145 else
3146 exit 0
3147 fi
3148
3149 NAME=$(basename $DAEMON)
3150 PIDFILE=/var/run/$NAME.pid
3151
3152 # Exit if the package is not installed
3153 #[ -x &quot;$DAEMON&quot; ] || exit 0
3154
3155 # Read configuration variable file if it is present
3156 [ -r /etc/default/$NAME ] &amp;&amp; . /etc/default/$NAME
3157
3158 # Load the VERBOSE setting and other rcS variables
3159 . /lib/init/vars.sh
3160
3161 case &quot;$1&quot; in
3162 start)
3163 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Starting $DESC&quot; &quot;$NAME&quot;
3164 do_start
3165 case &quot;$?&quot; in
3166 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
3167 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
3168 esac
3169 ;;
3170 stop)
3171 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Stopping $DESC&quot; &quot;$NAME&quot;
3172 do_stop
3173 case &quot;$?&quot; in
3174 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
3175 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
3176 esac
3177 ;;
3178 status)
3179 status_of_proc &quot;$DAEMON&quot; &quot;$NAME&quot; &amp;&amp; exit 0 || exit $?
3180 ;;
3181 #reload|force-reload)
3182 #
3183 # If do_reload() is not implemented then leave this commented out
3184 # and leave &#39;force-reload&#39; as an alias for &#39;restart&#39;.
3185 #
3186 #log_daemon_msg &quot;Reloading $DESC&quot; &quot;$NAME&quot;
3187 #do_reload
3188 #log_end_msg $?
3189 #;;
3190 restart|force-reload)
3191 #
3192 # If the &quot;reload&quot; option is implemented then remove the
3193 # &#39;force-reload&#39; alias
3194 #
3195 log_daemon_msg &quot;Restarting $DESC&quot; &quot;$NAME&quot;
3196 do_stop
3197 case &quot;$?&quot; in
3198 0|1)
3199 do_start
3200 case &quot;$?&quot; in
3201 0) log_end_msg 0 ;;
3202 1) log_end_msg 1 ;; # Old process is still running
3203 *) log_end_msg 1 ;; # Failed to start
3204 esac
3205 ;;
3206 *)
3207 # Failed to stop
3208 log_end_msg 1
3209 ;;
3210 esac
3211 ;;
3212 *)
3213 echo &quot;Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}&quot; &gt;&amp;2
3214 exit 3
3215 ;;
3216 esac
3217
3218 :
3219 &lt;/pre&gt;&lt;/p&gt;
3220
3221 &lt;p&gt;It is based on /etc/init.d/skeleton, and could be improved quite a
3222 lot. I did not really polish the approach, so it might not always
3223 work out of the box, but you get the idea. I did not try very hard to
3224 optimize it nor make it more robust either.&lt;/p&gt;
3225
3226 &lt;p&gt;A better argument for switching init system in Debian than reducing
3227 the size of init scripts (which is a good thing to do anyway), is to
3228 get boot system that is able to handle the kernel events sensibly and
3229 robustly, and do not depend on the boot to run sequentially. The boot
3230 and the kernel have not behaved sequentially in years.&lt;/p&gt;
3231 </description>
3232 </item>
3233
3234 <item>
3235 <title>Browser plugin for SPICE (spice-xpi) uploaded to Debian</title>
3236 <link>http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</link>
3237 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</guid>
3238 <pubDate>Fri, 1 Nov 2013 11:00:00 +0100</pubDate>
3239 <description>&lt;p&gt;&lt;a href=&quot;http://www.spice-space.org/&quot;&gt;The SPICE protocol&lt;/a&gt; for
3240 remote display access is the preferred solution with oVirt and RedHat
3241 Enterprise Virtualization, and I was sad to discover the other day
3242 that the browser plugin needed to use these systems seamlessly was
3243 missing in Debian. The &lt;a href=&quot;http://bugs.debian.org/668284&quot;&gt;request
3244 for a package&lt;/a&gt; was from 2012-04-10 with no progress since
3245 2013-04-01, so I decided to wrap up a package based on the great work
3246 from Cajus Pollmeier and put it in a collab-maint maintained git
3247 repository to get a package I could use. I would very much like
3248 others to help me maintain the package (or just take over, I do not
3249 mind), but as no-one had volunteered so far, I just uploaded it to
3250 NEW. I hope it will be available in Debian in a few days.&lt;/p&gt;
3251
3252 &lt;p&gt;The source is now available from
3253 &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;
3254 </description>
3255 </item>
3256
3257 <item>
3258 <title>Teaching vmdebootstrap to create Raspberry Pi SD card images</title>
3259 <link>http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</link>
3260 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</guid>
3261 <pubDate>Sun, 27 Oct 2013 17:00:00 +0100</pubDate>
3262 <description>&lt;p&gt;The
3263 &lt;a href=&quot;http://packages.qa.debian.org/v/vmdebootstrap.html&quot;&gt;vmdebootstrap&lt;/a&gt;
3264 program is a a very nice system to create virtual machine images. It
3265 create a image file, add a partition table, mount it and run
3266 debootstrap in the mounted directory to create a Debian system on a
3267 stick. Yesterday, I decided to try to teach it how to make images for
3268 &lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi&lt;/a&gt;, as part
3269 of a plan to simplify the build system for
3270 &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the FreedomBox
3271 project&lt;/a&gt;. The FreedomBox project already uses vmdebootstrap for
3272 the virtualbox images, but its current build system made multistrap
3273 based system for Dreamplug images, and it is lacking support for
3274 Raspberry Pi.&lt;/p&gt;
3275
3276 &lt;p&gt;Armed with the knowledge on how to build &quot;foreign&quot; (aka non-native
3277 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
3278 code and adjusted it to be able to build armel images on my amd64
3279 Debian laptop. I ended up giving vmdebootstrap five new options,
3280 allowing me to replicate the image creation process I use to make
3281 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html&quot;&gt;Debian
3282 Jessie based mesh node images for the Raspberry Pi&lt;/a&gt;. First, the
3283 &lt;tt&gt;--foreign /path/to/binfm_handler&lt;/tt&gt; option tell vmdebootstrap to
3284 call debootstrap with --foreign and to copy the handler into the
3285 generated chroot before running the second stage. This allow
3286 vmdebootstrap to create armel images on an amd64 host. Next I added
3287 two new options &lt;tt&gt;--bootsize size&lt;/tt&gt; and &lt;tt&gt;--boottype
3288 fstype&lt;/tt&gt; to teach it to create a separate /boot/ partition with the
3289 given file system type, allowing me to create an image with a vfat
3290 partition for the /boot/ stuff. I also added a &lt;tt&gt;--variant
3291 variant&lt;/tt&gt; option to allow me to create smaller images without the
3292 Debian base system packages installed. Finally, I added an option
3293 &lt;tt&gt;--no-extlinux&lt;/tt&gt; to tell vmdebootstrap to not install extlinux
3294 as a boot loader. It is not needed on the Raspberry Pi and probably
3295 most other non-x86 architectures. The changes were accepted by the
3296 upstream author of vmdebootstrap yesterday and today, and is now
3297 available from
3298 &lt;a href=&quot;http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/&quot;&gt;the
3299 upstream project page&lt;/a&gt;.&lt;/p&gt;
3300
3301 &lt;p&gt;To use it to build a Raspberry Pi image using Debian Jessie, first
3302 create a small script (the customize script) to add the non-free
3303 binary blob needed to boot the Raspberry Pi and the APT source
3304 list:&lt;/p&gt;
3305
3306 &lt;p&gt;&lt;pre&gt;
3307 #!/bin/sh
3308 set -e # Exit on first error
3309 rootdir=&quot;$1&quot;
3310 cd &quot;$rootdir&quot;
3311 cat &amp;lt;&amp;lt;EOF &gt; etc/apt/sources.list
3312 deb http://http.debian.net/debian/ jessie main contrib non-free
3313 EOF
3314 # Install non-free binary blob needed to boot Raspberry Pi. This
3315 # install a kernel somewhere too.
3316 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
3317 -O $rootdir/usr/bin/rpi-update
3318 chmod a+x $rootdir/usr/bin/rpi-update
3319 mkdir -p $rootdir/lib/modules
3320 touch $rootdir/boot/start.elf
3321 chroot $rootdir rpi-update
3322 &lt;/pre&gt;&lt;/p&gt;
3323
3324 &lt;p&gt;Next, fetch the latest vmdebootstrap script and call it like this
3325 to build the image:&lt;/p&gt;
3326
3327 &lt;pre&gt;
3328 sudo ./vmdebootstrap \
3329 --variant minbase \
3330 --arch armel \
3331 --distribution jessie \
3332 --mirror http://http.debian.net/debian \
3333 --image test.img \
3334 --size 600M \
3335 --bootsize 64M \
3336 --boottype vfat \
3337 --log-level debug \
3338 --verbose \
3339 --no-kernel \
3340 --no-extlinux \
3341 --root-password raspberry \
3342 --hostname raspberrypi \
3343 --foreign /usr/bin/qemu-arm-static \
3344 --customize `pwd`/customize \
3345 --package netbase \
3346 --package git-core \
3347 --package binutils \
3348 --package ca-certificates \
3349 --package wget \
3350 --package kmod
3351 &lt;/pre&gt;&lt;/p&gt;
3352
3353 &lt;p&gt;The list of packages being installed are the ones needed by
3354 rpi-update to make the image bootable on the Raspberry Pi, with the
3355 exception of netbase, which is needed by debootstrap to find
3356 /etc/hosts with the minbase variant. I really wish there was a way to
3357 set up an Raspberry Pi using only packages in the Debian archive, but
3358 that is not possible as far as I know, because it boots from the GPU
3359 using a non-free binary blob.&lt;/p&gt;
3360
3361 &lt;p&gt;The build host need debootstrap, kpartx and qemu-user-static and
3362 probably a few others installed. I have not checked the complete
3363 build dependency list.&lt;/p&gt;
3364
3365 &lt;p&gt;The resulting image will not use the hardware floating point unit
3366 on the Raspberry PI, because the armel architecture in Debian is not
3367 optimized for that use. So the images created will be a bit slower
3368 than &lt;a href=&quot;http://www.raspbian.org/&quot;&gt;Raspbian&lt;/a&gt; based images.&lt;/p&gt;
3369 </description>
3370 </item>
3371
3372 <item>
3373 <title>Good causes: Debian Outreach Program for Women, EFF documenting the spying and Open access in Norway</title>
3374 <link>http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</link>
3375 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</guid>
3376 <pubDate>Tue, 15 Oct 2013 21:30:00 +0200</pubDate>
3377 <description>&lt;p&gt;The last few days I came across a few good causes that should get
3378 wider attention. I recommend signing and donating to each one of
3379 these. :)&lt;/p&gt;
3380
3381 &lt;p&gt;Via &lt;a href=&quot;http://www.debian.org/News/weekly/2013/18/&quot;&gt;Debian
3382 Project News for 2013-10-14&lt;/a&gt; I came across the Outreach Program for
3383 Women program which is a Google Summer of Code like initiative to get
3384 more women involved in free software. One debian sponsor has offered
3385 to match &lt;a href=&quot;http://debian.ch/opw2013&quot;&gt;any donation done to Debian
3386 earmarked&lt;/a&gt; for this initiative. I donated a few minutes ago, and
3387 hope you will to. :)&lt;/p&gt;
3388
3389 &lt;p&gt;And the Electronic Frontier Foundation just announced plans to
3390 create &lt;a href=&quot;https://supporters.eff.org/donate/nsa-videos&quot;&gt;video
3391 documentaries about the excessive spying&lt;/a&gt; on every Internet user that
3392 take place these days, and their need to fund the work. I&#39;ve already
3393 donated. Are you next?&lt;/p&gt;
3394
3395 &lt;p&gt;For my Norwegian audience, the organisation Studentenes og
3396 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
3397 statement under the heading
3398 &lt;a href=&quot;http://saih.no/Bloggers_United/&quot;&gt;Bloggers United for Open
3399 Access&lt;/a&gt; for those of us asking for more focus on open access in the
3400 Norwegian government. So far 499 signatures. I hope you will sign it
3401 too.&lt;/p&gt;
3402 </description>
3403 </item>
3404
3405 <item>
3406 <title>Videos about the Freedombox project - for inspiration and learning</title>
3407 <link>http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</link>
3408 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</guid>
3409 <pubDate>Fri, 27 Sep 2013 14:10:00 +0200</pubDate>
3410 <description>&lt;p&gt;The &lt;a href=&quot;http://www.freedomboxfoundation.org/&quot;&gt;Freedombox
3411 project&lt;/a&gt; have been going on for a while, and have presented the
3412 vision, ideas and solution several places. Here is a little
3413 collection of videos of talks and presentation of the project.&lt;/p&gt;
3414
3415 &lt;ul&gt;
3416
3417 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ukvUz5taxvA&quot;&gt;FreedomBox -
3418 2,5 minute marketing film&lt;/a&gt; (Youtube)&lt;/li&gt;
3419
3420 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=SzW25QTVWsE&quot;&gt;Eben Moglen
3421 discusses the Freedombox on CBS news 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
3422
3423 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=Ae8SZbxfE0g&quot;&gt;Eben Moglen -
3424 Freedom in the Cloud - Software Freedom, Privacy and and Security for
3425 Web 2.0 and Cloud computing at ISOC-NY Public Meeting 2010&lt;/a&gt;
3426 (Youtube)&lt;/li&gt;
3427
3428 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=vNaIji_3xBE&quot;&gt;Fosdem 2011
3429 Keynote by Eben Moglen presenting the Freedombox&lt;/a&gt; (Youtube)&lt;/li&gt;
3430
3431 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=9bDDUyJSQ9s&quot;&gt;Presentation of
3432 the Freedombox by James Vasile at Elevate in Gratz 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
3433
3434 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=zQTmnk27g9s&quot;&gt; Freedombox -
3435 Discovery, Identity, and Trust by Nick Daly at Freedombox Hackfest New
3436 York City in 2012&lt;/a&gt; (Youtube)&lt;/li&gt;
3437
3438 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=tkbSB4Ba7Ck&quot;&gt;Introduction
3439 to the Freedombox at Freedombox Hackfest New York City in 2012&lt;/a&gt;
3440 (Youtube)&lt;/li&gt;
3441
3442 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=z-P2Jaeg0aQ&quot;&gt;Freedom, Out
3443 of the Box! by Bdale Garbee at linux.conf.au Ballarat, 2012&lt;/a&gt; (Youtube) &lt;/li&gt;
3444
3445 &lt;li&gt;&lt;a href=&quot;https://archive.fosdem.org/2013/schedule/event/freedombox/&quot;&gt;Freedombox
3446 1.0 by Eben Moglen and Bdale Garbee at Fosdem 2013&lt;/a&gt; (FOSDEM) &lt;/li&gt;
3447
3448 &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=e1LpYX2zVYg&quot;&gt;What is the
3449 FreedomBox today by Bdale Garbee at Debconf13 in Vaumarcus
3450 2013&lt;/a&gt; (Youtube)&lt;/li&gt;
3451
3452 &lt;/ul&gt;
3453
3454 &lt;p&gt;A larger list is available from
3455 &lt;a href=&quot;https://wiki.debian.org/FreedomBox/TalksAndPresentations&quot;&gt;the
3456 Freedombox Wiki&lt;/a&gt;.&lt;/p&gt;
3457
3458 &lt;p&gt;On other news, I am happy to report that Freedombox based on Debian
3459 Jessie is coming along quite well, and soon both Owncloud and using
3460 Tor should be available for testers of the Freedombox solution. :) In
3461 a few weeks I hope everything needed to test it is included in Debian.
3462 The withsqlite package is already in Debian, and the plinth package is
3463 pending in NEW. The third and vital part of that puzzle is the
3464 metapackage/setup framework, which is still pending an upload. Join
3465 us on &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC
3466 (#freedombox on irc.debian.org)&lt;/a&gt; and
3467 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
3468 mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
3469 </description>
3470 </item>
3471
3472 <item>
3473 <title>Recipe to test the Freedombox project on amd64 or Raspberry Pi</title>
3474 <link>http://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html</link>
3475 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html</guid>
3476 <pubDate>Tue, 10 Sep 2013 14:20:00 +0200</pubDate>
3477 <description>&lt;p&gt;I was introduced to the
3478 &lt;a href=&quot;http://www.freedomboxfoundation.org/&quot;&gt;Freedombox project&lt;/a&gt;
3479 in 2010, when Eben Moglen presented his vision about serving the need
3480 of non-technical people to keep their personal information private and
3481 within the legal protection of their own homes. The idea is to give
3482 people back the power over their network and machines, and return
3483 Internet back to its intended peer-to-peer architecture. Instead of
3484 depending on a central service, the Freedombox will give everyone
3485 control over their own basic infrastructure.&lt;/p&gt;
3486
3487 &lt;p&gt;I&#39;ve intended to join the effort since then, but other tasks have
3488 taken priority. But this summers nasty news about the misuse of trust
3489 and privilege exercised by the &quot;western&quot; intelligence gathering
3490 communities increased my eagerness to contribute to a point where I
3491 actually started working on the project a while back.&lt;/p&gt;
3492
3493 &lt;p&gt;The &lt;a href=&quot;https://alioth.debian.org/projects/freedombox/&quot;&gt;initial
3494 Debian initiative&lt;/a&gt; based on the vision from Eben Moglen, is to
3495 create a simple and cheap Debian based appliance that anyone can hook
3496 up in their home and get access to secure and private services and
3497 communication. The initial deployment platform have been the
3498 &lt;a href=&quot;http://www.globalscaletechnologies.com/t-dreamplugdetails.aspx&quot;&gt;Dreamplug&lt;/a&gt;,
3499 which is a piece of hardware I do not own. So to be able to test what
3500 the current Freedombox setup look like, I had to come up with a way to install
3501 it on some hardware I do have access to. I have rewritten the
3502 &lt;a href=&quot;https://github.com/NickDaly/freedom-maker&quot;&gt;freedom-maker&lt;/a&gt;
3503 image build framework to use .deb packages instead of only copying
3504 setup into the boot images, and thanks to this rewrite I am able to
3505 set up any machine supported by Debian Wheezy as a Freedombox, using
3506 the previously mentioned deb (and a few support debs for packages
3507 missing in Debian).&lt;/p&gt;
3508
3509 &lt;p&gt;The current Freedombox setup consist of a set of bootstrapping
3510 scripts
3511 (&lt;a href=&quot;https://github.com/petterreinholdtsen/freedombox-setup&quot;&gt;freedombox-setup&lt;/a&gt;),
3512 and a administrative web interface
3513 (&lt;a href=&quot;https://github.com/NickDaly/Plinth&quot;&gt;plinth&lt;/a&gt; + exmachina +
3514 withsqlite), as well as a privacy enhancing proxy based on
3515 &lt;a href=&quot;http://packages.qa.debian.org/privoxy&quot;&gt;privoxy&lt;/a&gt;
3516 (freedombox-privoxy). There is also a web/javascript based XMPP
3517 client (&lt;a href=&quot;http://packages.qa.debian.org/jwchat&quot;&gt;jwchat&lt;/a&gt;)
3518 trying (unsuccessfully so far) to talk to the XMPP server
3519 (&lt;a href=&quot;http://packages.qa.debian.org/ejabberd&quot;&gt;ejabberd&lt;/a&gt;). The
3520 web interface is pluggable, and the goal is to use it to enable OpenID
3521 services, mesh network connectivity, use of TOR, etc, etc. Not much of
3522 this is really working yet, see
3523 &lt;a href=&quot;https://github.com/NickDaly/freedombox-todos/blob/master/TODO&quot;&gt;the
3524 project TODO&lt;/a&gt; for links to GIT repositories. Most of the code is
3525 on github at the moment. The HTTP proxy is operational out of the
3526 box, and the admin web interface can be used to add/remove plinth
3527 users. I&#39;ve not been able to do anything else with it so far, but
3528 know there are several branches spread around github and other places
3529 with lots of half baked features.&lt;/p&gt;
3530
3531 &lt;p&gt;Anyway, if you want to have a look at the current state, the
3532 following recipes should work to give you a test machine to poke
3533 at.&lt;/p&gt;
3534
3535 &lt;p&gt;&lt;strong&gt;Debian Wheezy amd64&lt;/strong&gt;&lt;/p&gt;
3536
3537 &lt;ol&gt;
3538
3539 &lt;li&gt;Fetch normal Debian Wheezy installation ISO.&lt;/li&gt;
3540 &lt;li&gt;Boot from it, either as CD or USB stick.&lt;/li&gt;
3541 &lt;li&gt;&lt;p&gt;Press [tab] on the boot prompt and add this as a boot argument
3542 to the Debian installer:&lt;p&gt;
3543 &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;
3544
3545 &lt;li&gt;Answer the few language/region/password questions and pick disk to
3546 install on.&lt;/li&gt;
3547
3548 &lt;li&gt;When the installation is finished and the machine have rebooted a
3549 few times, your Freedombox is ready for testing.&lt;/li&gt;
3550
3551 &lt;/ol&gt;
3552
3553 &lt;p&gt;&lt;strong&gt;Raspberry Pi Raspbian&lt;/strong&gt;&lt;/p&gt;
3554
3555 &lt;ol&gt;
3556
3557 &lt;li&gt;Fetch a Raspbian SD card image, create SD card.&lt;/li&gt;
3558 &lt;li&gt;Boot from SD card, extend file system to fill the card completely.&lt;/li&gt;
3559 &lt;li&gt;&lt;p&gt;Log in and add this to /etc/sources.list:&lt;/p&gt;
3560 &lt;pre&gt;
3561 deb &lt;a href=&quot;http://www.reinholdtsen.name/freedombox/&quot;&gt;http://www.reinholdtsen.name/freedombox&lt;/a&gt; wheezy main
3562 &lt;/pre&gt;&lt;/li&gt;
3563 &lt;li&gt;&lt;p&gt;Run this as root:&lt;/p&gt;
3564 &lt;pre&gt;
3565 wget -O - http://www.reinholdtsen.name/freedombox/BE1A583D.asc | \
3566 apt-key add -
3567 apt-get update
3568 apt-get install freedombox-setup
3569 /usr/lib/freedombox/setup
3570 &lt;/pre&gt;&lt;/li&gt;
3571 &lt;li&gt;Reboot into your freshly created Freedombox.&lt;/li&gt;
3572
3573 &lt;/ol&gt;
3574
3575 &lt;p&gt;You can test it on other architectures too, but because the
3576 freedombox-privoxy package is binary, it will only work as intended on
3577 the architectures where I have had time to build the binary and put it
3578 in my APT repository. But do not let this stop you. It is only a
3579 short &quot;&lt;tt&gt;apt-get source -b freedombox-privoxy&lt;/tt&gt;&quot; away. :)&lt;/p&gt;
3580
3581 &lt;p&gt;Note that by default Freedombox is a DHCP server on the
3582 192.168.1.0/24 subnet, so if this is your subnet be careful and turn
3583 off the DHCP server by running &quot;&lt;tt&gt;update-rc.d isc-dhcp-server
3584 disable&lt;/tt&gt;&quot; as root.&lt;/p&gt;
3585
3586 &lt;p&gt;Please let me know if this works for you, or if you have any
3587 problems. We gather on the IRC channel
3588 &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;#freedombox&lt;/a&gt; on
3589 irc.debian.org and the
3590 &lt;a href=&quot;http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/freedombox-discuss&quot;&gt;project
3591 mailing list&lt;/a&gt;.&lt;/p&gt;
3592
3593 &lt;p&gt;Once you get your freedombox operational, you can visit
3594 &lt;tt&gt;http://your-host-name:8001/&lt;/tt&gt; to see the state of the plint
3595 welcome screen (dead end - do not be surprised if you are unable to
3596 get past it), and next visit &lt;tt&gt;http://your-host-name:8001/help/&lt;/tt&gt;
3597 to look at the rest of plinth. The default user is &#39;admin&#39; and the
3598 default password is &#39;secret&#39;.&lt;/p&gt;
3599 </description>
3600 </item>
3601
3602 <item>
3603 <title>Intel 180 SSD disk with Lenovo firmware can not use Intel firmware</title>
3604 <link>http://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html</link>
3605 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html</guid>
3606 <pubDate>Sun, 18 Aug 2013 14:00:00 +0200</pubDate>
3607 <description>&lt;p&gt;Earlier, I reported about
3608 &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
3609 problems using an Intel SSD 520 Series 180 GB disk&lt;/a&gt;. Friday I was
3610 told by IBM that the original disk should be thrown away. And as
3611 there no longer was a problem if I bricked the firmware, I decided
3612 today to try to install Intel firmware to replace the Lenovo firmware
3613 currently on the disk.&lt;/p&gt;
3614
3615 &lt;p&gt;I searched the Intel site for firmware, and found
3616 &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;
3617 (aka Intel SATA Solid-State Drive Firmware Update Tool) which
3618 according to the site should contain the latest firmware for SSD
3619 disks. I inserted the broken disk in one of my spare laptops and
3620 booted the ISO from a USB stick. The disk was recognized, but the
3621 program claimed the newest firmware already were installed and refused
3622 to insert any Intel firmware. So no change, and the disk is still
3623 unable to handle write load. :( I guess the only way to get them
3624 working would be if Lenovo releases new firmware. No idea how likely
3625 that is. Anyway, just blogging about this test for completeness. I
3626 got a working Samsung disk, and see no point in spending more time on
3627 the broken disks.&lt;/p&gt;
3628 </description>
3629 </item>
3630
3631 <item>
3632 <title>How to fix a Thinkpad X230 with a broken 180 GB SSD disk</title>
3633 <link>http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html</link>
3634 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html</guid>
3635 <pubDate>Wed, 17 Jul 2013 23:50:00 +0200</pubDate>
3636 <description>&lt;p&gt;Today I switched to
3637 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html&quot;&gt;my
3638 new laptop&lt;/a&gt;. I&#39;ve previously written about the problems I had with
3639 my new Thinkpad X230, which was delivered with an
3640 &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
3641 GB Intel SSD disk with Lenovo firmware&lt;/a&gt; that did not handle
3642 sustained writes. My hardware supplier have been very forthcoming in
3643 trying to find a solution, and after first trying with another
3644 identical 180 GB disks they decided to send me a 256 GB Samsung SSD
3645 disk instead to fix it once and for all. The Samsung disk survived
3646 the installation of Debian with encrypted disks (filling the disk with
3647 random data during installation killed the first two), and I thus
3648 decided to trust it with my data. I have installed it as a Debian Edu
3649 Wheezy roaming workstation hooked up with my Debian Edu Squeeze main
3650 server at home using Kerberos and LDAP, and will use it as my work
3651 station from now on.&lt;/p&gt;
3652
3653 &lt;p&gt;As this is a solid state disk with no moving parts, I believe the
3654 Debian Wheezy default installation need to be tuned a bit to increase
3655 performance and increase life time of the disk. The Linux kernel and
3656 user space applications do not yet adjust automatically to such
3657 environment. To make it easier for my self, I created a draft Debian
3658 package &lt;tt&gt;ssd-setup&lt;/tt&gt; to handle this tuning. The
3659 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/ssd-setup.git&quot;&gt;source
3660 for the ssd-setup package&lt;/a&gt; is available from collab-maint, and it
3661 is set up to adjust the setup of the machine by just installing the
3662 package. If there is any non-SSD disk in the machine, the package
3663 will refuse to install, as I did not try to write any logic to sort
3664 file systems in SSD and non-SSD file systems.&lt;/p&gt;
3665
3666 &lt;p&gt;I consider the package a draft, as I am a bit unsure how to best
3667 set up Debian Wheezy with an SSD. It is adjusted to my use case,
3668 where I set up the machine with one large encrypted partition (in
3669 addition to /boot), put LVM on top of this and set up partitions on
3670 top of this again. See the README file in the package source for the
3671 references I used to pick the settings. At the moment these
3672 parameters are tuned:&lt;/p&gt;
3673
3674 &lt;ul&gt;
3675
3676 &lt;li&gt;Set up cryptsetup to pass TRIM commands to the physical disk
3677 (adding discard to /etc/crypttab)&lt;/li&gt;
3678
3679 &lt;li&gt;Set up LVM to pass on TRIM commands to the underlying device (in
3680 this case a cryptsetup partition) by changing issue_discards from
3681 0 to 1 in /etc/lvm/lvm.conf.&lt;/li&gt;
3682
3683 &lt;li&gt;Set relatime as a file system option for ext3 and ext4 file
3684 systems.&lt;/li&gt;
3685
3686 &lt;li&gt;Tell swap to use TRIM commands by adding &#39;discard&#39; to
3687 /etc/fstab.&lt;/li&gt;
3688
3689 &lt;li&gt;Change I/O scheduler from cfq to deadline using a udev rule.&lt;/li&gt;
3690
3691 &lt;li&gt;Run fstrim on every ext3 and ext4 file system every night (from
3692 cron.daily).&lt;/li&gt;
3693
3694 &lt;li&gt;Adjust sysctl values vm.swappiness to 1 and vm.vfs_cache_pressure
3695 to 50 to reduce the kernel eagerness to swap out processes.&lt;/li&gt;
3696
3697 &lt;/ul&gt;
3698
3699 &lt;p&gt;During installation, I cancelled the part where the installer fill
3700 the disk with random data, as this would kill the SSD performance for
3701 little gain. My goal with the encrypted file system is to ensure
3702 those stealing my laptop end up with a brick and not a working
3703 computer. I have no hope in keeping the really resourceful people
3704 from getting the data on the disk (see
3705 &lt;a href=&quot;http://xkcd.com/538/&quot;&gt;XKCD #538&lt;/a&gt; for an explanation why).
3706 Thus I concluded that adding the discard option to crypttab is the
3707 right thing to do.&lt;/p&gt;
3708
3709 &lt;p&gt;I considered using the noop I/O scheduler, as several recommended
3710 it for SSD, but others recommended deadline and a benchmark I found
3711 indicated that deadline might be better for interactive use.&lt;/p&gt;
3712
3713 &lt;p&gt;I also considered using the &#39;discard&#39; file system option for ext3
3714 and ext4, but read that it would give a performance hit ever time a
3715 file is removed, and thought it best to that that slowdown once a day
3716 instead of during my work.&lt;/p&gt;
3717
3718 &lt;p&gt;My package do not set up tmpfs on /var/run, /var/lock and /tmp, as
3719 this is already done by Debian Edu.&lt;/p&gt;
3720
3721 &lt;p&gt;I have not yet started on the user space tuning. I expect
3722 iceweasel need some tuning, and perhaps other applications too, but
3723 have not yet had time to investigate those parts.&lt;/p&gt;
3724
3725 &lt;p&gt;The package should work on Ubuntu too, but I have not yet tested it
3726 there.&lt;/p&gt;
3727
3728 &lt;p&gt;As for the answer to the question in the title of this blog post,
3729 as far as I know, the only solution I know about is to replace the
3730 disk. It might be possible to flash it with Intel firmware instead of
3731 the Lenovo firmware. But I have not tried and did not want to do so
3732 without approval from Lenovo as I wanted to keep the warranty on the
3733 disk until a solution was found and they wanted the broken disks
3734 back.&lt;/p&gt;
3735 </description>
3736 </item>
3737
3738 <item>
3739 <title>Intel SSD 520 Series 180 GB with Lenovo firmware still lock up from sustained writes</title>
3740 <link>http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html</link>
3741 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html</guid>
3742 <pubDate>Wed, 10 Jul 2013 13:30:00 +0200</pubDate>
3743 <description>&lt;p&gt;A few days ago, I wrote about
3744 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html&quot;&gt;the
3745 problems I experienced with my new X230 and its SSD disk&lt;/a&gt;, which
3746 was dying during installation because it is unable to cope with
3747 sustained write. My supplier is in contact with
3748 &lt;a href=&quot;http://www.lenovo.com/&quot;&gt;Lenovo&lt;/a&gt;, and they wanted to send a
3749 replacement disk to try to fix the problem. They decided to send an
3750 identical model, so my hopes for a permanent fix was slim.&lt;/p&gt;
3751
3752 &lt;p&gt;Anyway, today I got the replacement disk and tried to install
3753 Debian Edu Wheezy with encrypted disk on it. The new disk have the
3754 same firmware version as the original. This time my hope raised
3755 slightly as the installation progressed, as the original disk used to
3756 die after 4-7% of the disk was written to, while this time it kept
3757 going past 10%, 20%, 40% and even past 50%. But around 60%, the disk
3758 died again and I was back on square one. I still do not have a new
3759 laptop with a disk I can trust. I can not live with a disk that might
3760 lock up when I download a new
3761 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux&lt;/a&gt; ISO or
3762 other large files. I look forward to hearing from my supplier with
3763 the next proposal from Lenovo.&lt;/p&gt;
3764
3765 &lt;p&gt;The original disk is marked Intel SSD 520 Series 180 GB,
3766 11S0C38722Z1ZNME35X1TR, ISN: CVCV321407HB180EGN, SA: G57560302, FW:
3767 LF1i, 29MAY2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
3768 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40002756C4, Model:
3769 SSDSC2BW180A3L 2.5&quot; 6Gb/s SATA SSD 180G 5V 1A, ASM P/N 0C38732, FRU
3770 P/N 45N8295, P0C38732.&lt;/p&gt;
3771
3772 &lt;p&gt;The replacement disk is marked Intel SSD 520 Series 180 GB,
3773 11S0C38722Z1ZNDE34N0L0, ISN: CVCV315306RK180EGN, SA: G57560-302, FW:
3774 LF1i, 22APR2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
3775 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40000AB69E, Model:
3776 SSDSC2BW180A3L 2.5&quot; 6Gb/s SATA SSD 180G 5V 1A, ASM P/N 0C38732, FRU
3777 P/N 45N8295, P0C38732.&lt;/p&gt;
3778
3779 &lt;p&gt;The only difference is in the first number (serial number?), ISN,
3780 SA, date and WNPP values. Mentioning all the details here in case
3781 someone is able to use the information to find a way to identify the
3782 failing disk among working ones (if any such working disk actually
3783 exist).&lt;/p&gt;
3784 </description>
3785 </item>
3786
3787 <item>
3788 <title>July 13th: Debian/Ubuntu BSP and Skolelinux/Debian Edu developer gathering in Oslo</title>
3789 <link>http://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html</link>
3790 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html</guid>
3791 <pubDate>Tue, 9 Jul 2013 10:40:00 +0200</pubDate>
3792 <description>&lt;p&gt;The upcoming Saturday, 2013-07-13, we are organising a combined
3793 Debian Edu developer gathering and Debian and Ubuntu bug squashing
3794 party in Oslo. It is organised by &lt;a href=&quot;http://www.nuug.no/&quot;&gt;the
3795 member assosiation NUUG&lt;/a&gt; and
3796 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;the Debian Edu / Skolelinux
3797 project&lt;/a&gt; together with &lt;a href=&quot;http://bitraf.no/&quot;&gt;the hack space
3798 Bitraf&lt;/a&gt;.&lt;/p&gt;
3799
3800 &lt;p&gt;It starts 10:00 and continue until late evening. Everyone is
3801 welcome, and there is no fee to participate. There is on the other
3802 hand limited space, and only room for 30 people. Please put your name
3803 on &lt;a href=&quot;http://wiki.debian.org/BSP/2013/07/13/no/Oslo&quot;&gt;the event
3804 wiki page&lt;/a&gt; if you plan to join us.&lt;/p&gt;
3805 </description>
3806 </item>
3807
3808 <item>
3809 <title>The Thinkpad is dead, long live the Thinkpad X230?</title>
3810 <link>http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html</link>
3811 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html</guid>
3812 <pubDate>Fri, 5 Jul 2013 08:30:00 +0200</pubDate>
3813 <description>&lt;p&gt;Half a year ago, I reported that I had to find a
3814 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html&quot;&gt;replacement
3815 for my trusty old Thinkpad X41&lt;/a&gt;. Unfortunately I did not have much
3816 time to spend on it, and it took a while to find a model I believe
3817 will do the job, but two days ago the replacement finally arrived. I
3818 ended up picking a
3819 &lt;a href=&quot;http://www.linlap.com/lenovo_thinkpad_x230&quot;&gt;Thinkpad X230&lt;/a&gt;
3820 with SSD disk (NZDAJMN). I first test installed Debian Edu Wheezy as
3821 a roaming workstation, and it seemed to work flawlessly. But my
3822 second installation with encrypted disk was not as successful. More
3823 on that below.&lt;/p&gt;
3824
3825 &lt;p&gt;I had a hard time trying to track down a good laptop, as my most
3826 important requirements (robust and with a good keyboard) are never
3827 listed in the feature list. But I did get good help from the search
3828 feature at &lt;a href=&quot;http://www.prisjakt.no/&quot;&gt;Prisjakt&lt;/a&gt;, which
3829 allowed me to limit the list of interesting laptops based on my other
3830 requirements. A bit surprising that SSD disk are not disks according
3831 to that search interface, so I had to drop specifying the number of
3832 disks from my search parameters. I also asked around among friends to
3833 get their impression on keyboards and robustness.&lt;/p&gt;
3834
3835 &lt;p&gt;So the new laptop arrived, and it is quite a lot wider than the
3836 X41. I am not quite convinced about the keyboard, as it is
3837 significantly wider than my old keyboard, and I have to stretch my
3838 hand a lot more to reach the edges. But the key response is fairly
3839 good and the individual key shape is fairly easy to handle, so I hope
3840 I will get used to it. My old X40 was starting to fail, and I really
3841 needed a new laptop now. :)&lt;/p&gt;
3842
3843 &lt;p&gt;Turning off the touch pad was simple. All it took was a quick
3844 visit to the BIOS during boot it disable it.&lt;/p&gt;
3845
3846 &lt;p&gt;But there is a fatal problem with the laptop. The 180 GB SSD disk
3847 lock up during load. And this happen when installing Debian Wheezy
3848 with encrypted disk, while the disk is being filled with random data.
3849 I also tested to install Ubuntu Raring, and it happen there too if I
3850 reenable the code to fill the disk with random data (it is disabled by
3851 default in Ubuntu). And the bug with is already known. It was
3852 reported to Debian as &lt;a href=&quot;http://bugs.debian.org/691427&quot;&gt;BTS
3853 report #691427 2012-10-25&lt;/a&gt; (journal commit I/O error on brand-new
3854 Thinkpad T430s ext4 on lvm on SSD). It is also reported to the Linux
3855 kernel developers as
3856 &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=51861&quot;&gt;Kernel bugzilla
3857 report #51861 2012-12-20&lt;/a&gt; (Intel SSD 520 stops working under load
3858 (SSDSC2BW180A3L in Lenovo ThinkPad T430s)). It is also reported on the
3859 Lenovo forums, both for
3860 &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
3861 2012-11-10&lt;/a&gt; and for
3862 &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
3863 03-20-2013&lt;/a&gt;. The problem do not only affect installation. The
3864 reports state that the disk lock up during use if many writes are done
3865 on the disk, so it is much no use to work around the installation
3866 problem and end up with a computer that can lock up at any moment.
3867 There is even a
3868 &lt;a href=&quot;https://git.efficios.com/?p=test-ssd.git&quot;&gt;small C program
3869 available&lt;/a&gt; that will lock up the hard drive after running a few
3870 minutes by writing to a file.&lt;/p&gt;
3871
3872 &lt;p&gt;I&#39;ve contacted my supplier and asked how to handle this, and after
3873 contacting PCHELP Norway (request 01D1FDP) which handle support
3874 requests for Lenovo, his first suggestion was to upgrade the disk
3875 firmware. Unfortunately there is no newer firmware available from
3876 Lenovo, as my disk already have the most recent one (version LF1i). I
3877 hope to hear more from him today and hope the problem can be
3878 fixed. :)&lt;/p&gt;
3879 </description>
3880 </item>
3881
3882 <item>
3883 <title>The Thinkpad is dead, long live the Thinkpad X230</title>
3884 <link>http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html</link>
3885 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html</guid>
3886 <pubDate>Thu, 4 Jul 2013 09:20:00 +0200</pubDate>
3887 <description>&lt;p&gt;Half a year ago, I reported that I had to find a replacement for my
3888 trusty old Thinkpad X41. Unfortunately I did not have much time to
3889 spend on it, but today the replacement finally arrived. I ended up
3890 picking a &lt;a href=&quot;http://www.linlap.com/lenovo_thinkpad_x230&quot;&gt;Thinkpad
3891 X230&lt;/a&gt; with SSD disk (NZDAJMN). I first test installed Debian Edu
3892 Wheezy as a roaming workstation, and it worked flawlessly. As I write
3893 this, it is installing what I hope will be a more final installation,
3894 with a encrypted hard drive to ensure any dope head stealing it end up
3895 with an expencive door stop.&lt;/p&gt;
3896
3897 &lt;p&gt;I had a hard time trying to track down a good laptop, as my most
3898 important requirements (robust and with a good keyboard) are never
3899 listed in the feature list. But I did get good help from the search
3900 feature at &lt;ahref=&quot;http://www.prisjakt.no/&quot;&gt;Prisjakt&lt;/a&gt;, which
3901 allowed me to limit the list of interesting laptops based on my other
3902 requirements. A bit surprising that SSD disk are not disks, so I had
3903 to drop number of disks from my search parameters.&lt;/p&gt;
3904
3905 &lt;p&gt;I am not quite convinced about the keyboard, as it is significantly
3906 wider than my old keyboard, and I have to stretch my hand a lot more
3907 to reach the edges. But the key response is fairly good and the
3908 individual key shape is fairly easy to handle, so I hope I will get
3909 used to it. My old X40 was starting to fail, and I really needed a
3910 new laptop now. :)&lt;/p&gt;
3911
3912 &lt;p&gt;I look forward to figuring out how to turn off the touch pad.&lt;/p&gt;
3913 </description>
3914 </item>
3915
3916 <item>
3917 <title>Automatically locate and install required firmware packages on Debian (Isenkram 0.4)</title>
3918 <link>http://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html</link>
3919 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html</guid>
3920 <pubDate>Tue, 25 Jun 2013 11:50:00 +0200</pubDate>
3921 <description>&lt;p&gt;It annoys me when the computer fail to do automatically what it is
3922 perfectly capable of, and I have to do it manually to get things
3923 working. One such task is to find out what firmware packages are
3924 needed to get the hardware on my computer working. Most often this
3925 affect the wifi card, but some times it even affect the RAID
3926 controller or the ethernet card. Today I pushed version 0.4 of the
3927 &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;Isenkram package&lt;/a&gt;
3928 including a new script isenkram-autoinstall-firmware handling the
3929 process of asking all the loaded kernel modules what firmware files
3930 they want, find debian packages providing these files and install the
3931 debian packages. Here is a test run on my laptop:&lt;/p&gt;
3932
3933 &lt;p&gt;&lt;pre&gt;
3934 # isenkram-autoinstall-firmware
3935 info: kernel drivers requested extra firmware: ipw2200-bss.fw ipw2200-ibss.fw ipw2200-sniffer.fw
3936 info: fetching http://http.debian.net/debian/dists/squeeze/Contents-i386.gz
3937 info: locating packages with the requested firmware files
3938 info: Updating APT sources after adding non-free APT source
3939 info: trying to install firmware-ipw2x00
3940 firmware-ipw2x00
3941 firmware-ipw2x00
3942 Preconfiguring packages ...
3943 Selecting previously deselected package firmware-ipw2x00.
3944 (Reading database ... 259727 files and directories currently installed.)
3945 Unpacking firmware-ipw2x00 (from .../firmware-ipw2x00_0.28+squeeze1_all.deb) ...
3946 Setting up firmware-ipw2x00 (0.28+squeeze1) ...
3947 #
3948 &lt;/pre&gt;&lt;/p&gt;
3949
3950 &lt;p&gt;When all the requested firmware is present, a simple message is
3951 printed instead:&lt;/p&gt;
3952
3953 &lt;p&gt;&lt;pre&gt;
3954 # isenkram-autoinstall-firmware
3955 info: did not find any firmware files requested by loaded kernel modules. exiting
3956 #
3957 &lt;/pre&gt;&lt;/p&gt;
3958
3959 &lt;p&gt;It could use some polish, but it is already working well and saving
3960 me some time when setting up new machines. :)&lt;/p&gt;
3961
3962 &lt;p&gt;So, how does it work? It look at the set of currently loaded
3963 kernel modules, and look up each one of them using modinfo, to find
3964 the firmware files listed in the module meta-information. Next, it
3965 download the Contents file from a nearby APT mirror, and search for
3966 the firmware files in this file to locate the package with the
3967 requested firmware file. If the package is in the non-free section, a
3968 non-free APT source is added and the package is installed using
3969 &lt;tt&gt;apt-get install&lt;/tt&gt;. The end result is a slightly better working
3970 machine.&lt;/p&gt;
3971
3972 &lt;p&gt;I hope someone find time to implement a more polished version of
3973 this script as part of the hw-detect debian-installer module, to
3974 finally fix &lt;a href=&quot;http://bugs.debian.org/655507&quot;&gt;BTS report
3975 #655507&lt;/a&gt;. There really is no need to insert USB sticks with
3976 firmware during a PXE install when the packages already are available
3977 from the nearby Debian mirror.&lt;/p&gt;
3978 </description>
3979 </item>
3980
3981 <item>
3982 <title>Fixing the Linux black screen of death on machines with Intel HD video</title>
3983 <link>http://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html</link>
3984 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html</guid>
3985 <pubDate>Tue, 11 Jun 2013 11:00:00 +0200</pubDate>
3986 <description>&lt;p&gt;When installing RedHat, Fedora, Debian and Ubuntu on some machines,
3987 the screen just turn black when Linux boot, either during installation
3988 or on first boot from the hard disk. I&#39;ve seen it once in a while the
3989 last few years, but only recently understood the cause. I&#39;ve seen it
3990 on HP laptops, and on my latest acquaintance the Packard Bell laptop.
3991 The reason seem to be in the wiring of some laptops. The system to
3992 control the screen background light is inverted, so when Linux try to
3993 turn the brightness fully on, it end up turning it off instead. I do
3994 not know which Linux drivers are affected, but this post is about the
3995 i915 driver used by the
3996 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Packard Bell
3997 EasyNote LV&lt;/a&gt;, Thinkpad X40 and many other laptops.&lt;/p&gt;
3998
3999 &lt;p&gt;The problem can be worked around two ways. Either by adding
4000 i915.invert_brightness=1 as a kernel option, or by adding a file in
4001 /etc/modprobe.d/ to tell modprobe to add the invert_brightness=1
4002 option when it load the i915 kernel module. On Debian and Ubuntu, it
4003 can be done by running these commands as root:&lt;/p&gt;
4004
4005 &lt;pre&gt;
4006 echo options i915 invert_brightness=1 | tee /etc/modprobe.d/i915.conf
4007 update-initramfs -u -k all
4008 &lt;/pre&gt;
4009
4010 &lt;p&gt;Since March 2012 there is
4011 &lt;a href=&quot;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955&quot;&gt;a
4012 mechanism in the Linux kernel&lt;/a&gt; to tell the i915 driver which
4013 hardware have this problem, and get the driver to invert the
4014 brightness setting automatically. To use it, one need to add a row in
4015 &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
4016 intel_quirks array&lt;/a&gt; in the driver source
4017 &lt;tt&gt;drivers/gpu/drm/i915/intel_display.c&lt;/tt&gt; (look for &quot;&lt;tt&gt;static
4018 struct intel_quirk intel_quirks&lt;/tt&gt;&quot;), specifying the PCI device
4019 number (vendor number 8086 is assumed) and subdevice vendor and device
4020 number.&lt;/p&gt;
4021
4022 &lt;p&gt;My Packard Bell EasyNote LV got this output from &lt;tt&gt;lspci
4023 -vvnn&lt;/tt&gt; for the video card in question:&lt;/p&gt;
4024
4025 &lt;p&gt;&lt;pre&gt;
4026 00:02.0 VGA compatible controller [0300]: Intel Corporation \
4027 3rd Gen Core processor Graphics Controller [8086:0156] \
4028 (rev 09) (prog-if 00 [VGA controller])
4029 Subsystem: Acer Incorporated [ALI] Device [1025:0688]
4030 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- \
4031 ParErr- Stepping- SE RR- FastB2B- DisINTx+
4032 Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast &gt;TAbort- \
4033 &lt;TAbort- &lt;MAbort-&gt;SERR- &lt;PERR- INTx-
4034 Latency: 0
4035 Interrupt: pin A routed to IRQ 42
4036 Region 0: Memory at c2000000 (64-bit, non-prefetchable) [size=4M]
4037 Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
4038 Region 4: I/O ports at 4000 [size=64]
4039 Expansion ROM at &lt;unassigned&gt; [disabled]
4040 Capabilities: &lt;access denied&gt;
4041 Kernel driver in use: i915
4042 &lt;/pre&gt;&lt;/p&gt;
4043
4044 &lt;p&gt;The resulting intel_quirks entry would then look like this:&lt;/p&gt;
4045
4046 &lt;p&gt;&lt;pre&gt;
4047 struct intel_quirk intel_quirks[] = {
4048 ...
4049 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
4050 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
4051 ...
4052 }
4053 &lt;/pre&gt;&lt;/p&gt;
4054
4055 &lt;p&gt;According to the kernel module instructions (as seen using
4056 &lt;tt&gt;modinfo i915&lt;/tt&gt;), information about hardware needing the
4057 invert_brightness flag should be sent to the
4058 &lt;a href=&quot;http://lists.freedesktop.org/mailman/listinfo/dri-devel&quot;&gt;dri-devel
4059 (at) lists.freedesktop.org&lt;/a&gt; mailing list to reach the kernel
4060 developers. But my email about the laptop sent 2013-06-03 have not
4061 yet shown up in
4062 &lt;a href=&quot;http://lists.freedesktop.org/archives/dri-devel/2013-June/thread.html&quot;&gt;the
4063 web archive for the mailing list&lt;/a&gt;, so I suspect they do not accept
4064 emails from non-subscribers. Because of this, I sent my patch also to
4065 the Debian bug tracking system instead as
4066 &lt;a href=&quot;http://bugs.debian.org/710938&quot;&gt;BTS report #710938&lt;/a&gt;, to make
4067 sure the patch is not lost.&lt;/p&gt;
4068
4069 &lt;p&gt;Unfortunately, it is not enough to fix the kernel to get Laptops
4070 with this problem working properly with Linux. If you use Gnome, your
4071 worries should be over at this point. But if you use KDE, there is
4072 something in KDE ignoring the invert_brightness setting and turning on
4073 the screen during login. I&#39;ve reported it to Debian as
4074 &lt;a href=&quot;http://bugs.debian.org/711237&quot;&gt;BTS report #711237&lt;/a&gt;, and
4075 have no idea yet how to figure out exactly what subsystem is doing
4076 this. Perhaps you can help? Perhaps you know what the Gnome
4077 developers did to handle this, and this can give a clue to the KDE
4078 developers? Or you know where in KDE the screen brightness is changed
4079 during login? If so, please update the BTS report (or get in touch if
4080 you do not know how to update BTS).&lt;/p&gt;
4081
4082 &lt;p&gt;Update 2013-07-19: The correct fix for this machine seem to be
4083 acpi_backlight=vendor, to disable ACPI backlight support completely,
4084 as the ACPI information on the machine is trash and it is better to
4085 leave it to the intel video driver to control the screen
4086 backlight.&lt;/p&gt;
4087 </description>
4088 </item>
4089
4090 <item>
4091 <title>How to install Linux on a Packard Bell Easynote LV preinstalled with Windows 8</title>
4092 <link>http://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html</link>
4093 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html</guid>
4094 <pubDate>Mon, 27 May 2013 15:20:00 +0200</pubDate>
4095 <description>&lt;p&gt;Two days ago, I asked
4096 &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
4097 I could install Linux on a Packard Bell EasyNote LV computer
4098 preinstalled with Windows 8&lt;/a&gt;. I found a solution, but am horrified
4099 with the obstacles put in the way of Linux users on a laptop with UEFI
4100 and Windows 8.&lt;/p&gt;
4101
4102 &lt;p&gt;I never found out if the cause of my problems were the use of UEFI
4103 secure booting or fast boot. I suspect fast boot was the problem,
4104 causing the firmware to boot directly from HD without considering any
4105 key presses and alternative devices, but do not know UEFI settings
4106 enough to tell.&lt;/p&gt;
4107
4108 &lt;p&gt;There is no way to install Linux on the machine in question without
4109 opening the box and disconnecting the hard drive! This is as far as I
4110 can tell, the only way to get access to the firmware setup menu
4111 without accepting the Windows 8 license agreement. I am told (and
4112 found description on how to) that it is possible to configure the
4113 firmware setup once booted into Windows 8. But as I believe the terms
4114 of that agreement are completely unacceptable, accepting the license
4115 was never an alternative. I do not enter agreements I do not intend
4116 to follow.&lt;/p&gt;
4117
4118 &lt;p&gt;I feared I had to return the laptops and ask for a refund, and
4119 waste many hours on this, but luckily there was a way to get it to
4120 work. But I would not recommend it to anyone planning to run Linux on
4121 it, and I have become sceptical to Windows 8 certified laptops. Is
4122 this the way Linux will be forced out of the market place, by making
4123 it close to impossible for &quot;normal&quot; users to install Linux without
4124 accepting the Microsoft Windows license terms? Or at least not
4125 without risking to loose the warranty?&lt;/p&gt;
4126
4127 &lt;p&gt;I&#39;ve updated the
4128 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Linux Laptop
4129 wiki page for Packard Bell EasyNote LV&lt;/a&gt;, to ensure the next person
4130 do not have to struggle as much as I did to get Linux into the
4131 machine.&lt;/p&gt;
4132
4133 &lt;p&gt;Thanks to Bob Rosbag, Florian Weimer, Philipp Kern, Ben Hutching,
4134 Michael Tokarev and others for feedback and ideas.&lt;/p&gt;
4135 </description>
4136 </item>
4137
4138 <item>
4139 <title>How can I install Linux on a Packard Bell Easynote LV preinstalled with Windows 8?</title>
4140 <link>http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html</link>
4141 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html</guid>
4142 <pubDate>Sat, 25 May 2013 18:20:00 +0200</pubDate>
4143 <description>&lt;p&gt;I&#39;ve run into quite a problem the last few days. I bought three
4144 new laptops for my parents and a few others. I bought Packard Bell
4145 Easynote LV to run Kubuntu on and use as their home computer. But I
4146 am completely unable to figure out how to install Linux on it. The
4147 computer is preinstalled with Windows 8, and I suspect it uses UEFI
4148 instead of a BIOS to boot.&lt;/p&gt;
4149
4150 &lt;p&gt;The problem is that I am unable to get it to PXE boot, and unable
4151 to get it to boot the Linux installer from my USB stick. I have yet
4152 to try the DVD install, and still hope it will work. when I turn on
4153 the computer, there is no information on what buttons to press to get
4154 the normal boot menu. I expect to get some boot menu to select PXE or
4155 USB stick booting. When booting, it first ask for the language to
4156 use, then for some regional settings, and finally if I will accept the
4157 Windows 8 terms of use. As these terms are completely unacceptable to
4158 me, I have no other choice but to turn off the computer and try again
4159 to get it to boot the Linux installer.&lt;/p&gt;
4160
4161 &lt;p&gt;I have gathered my findings so far on a Linlap page about the
4162 &lt;a href=&quot;http://www.linlap.com/packard_bell_easynote_lv&quot;&gt;Packard Bell
4163 EasyNote LV&lt;/a&gt; model. If you have any idea how to get Linux
4164 installed on this machine, please get in touch or update that wiki
4165 page. If I can&#39;t find a way to install Linux, I will have to return
4166 the laptop to the seller and find another machine for my parents.&lt;/p&gt;
4167
4168 &lt;p&gt;I wonder, is this the way Linux will be forced out of the market
4169 using UEFI and &quot;secure boot&quot; by making it impossible to install Linux
4170 on new Laptops?&lt;/p&gt;
4171 </description>
4172 </item>
4173
4174 <item>
4175 <title>How to transform a Debian based system to a Debian Edu installation</title>
4176 <link>http://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html</link>
4177 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html</guid>
4178 <pubDate>Fri, 17 May 2013 11:50:00 +0200</pubDate>
4179 <description>&lt;p&gt;&lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu / Skolelinux&lt;/a&gt; is
4180 an operating system based on Debian intended for use in schools. It
4181 contain a turn-key solution for the computer network provided to
4182 pupils in the primary schools. It provide both the central server,
4183 network boot servers and desktop environments with heaps of
4184 educational software. The project was founded almost 12 years ago,
4185 2001-07-02. If you want to support the project, which is in need for
4186 cash to fund developer gatherings and other project related activity,
4187 &lt;a href=&quot;http://www.linuxiskolen.no/slxdebianlabs/donations.html&quot;&gt;please
4188 donate some money&lt;/a&gt;.
4189
4190 &lt;p&gt;A topic that come up again and again on the Debian Edu mailing
4191 lists and elsewhere, is the question on how to transform a Debian or
4192 Ubuntu installation into a Debian Edu installation. It isn&#39;t very
4193 hard, and last week I wrote a script to replicate the steps done by
4194 the Debian Edu installer.&lt;/p&gt;
4195
4196 &lt;p&gt;The script,
4197 &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;
4198 in the debian-edu-config package, will go through these six steps and
4199 transform an existing Debian Wheezy or Ubuntu (untested) installation
4200 into a Debian Edu Workstation:&lt;/p&gt;
4201
4202 &lt;ol&gt;
4203
4204 &lt;li&gt;Add skolelinux related APT sources.&lt;/li&gt;
4205 &lt;li&gt;Create /etc/debian-edu/config with the wanted configuration.&lt;/li&gt;
4206 &lt;li&gt;Install debian-edu-install to load preseeding values and pull in
4207 our configuration.&lt;/li&gt;
4208 &lt;li&gt;Preseed debconf database with profile setup in
4209 /etc/debian-edu/config, and run tasksel to install packages
4210 according to the profile specified in the config above,
4211 overriding some of the Debian automation machinery.&lt;/li&gt;
4212 &lt;li&gt;Run debian-edu-cfengine-D installation to configure everything
4213 that could not be done using preseeding.&lt;/li&gt;
4214 &lt;li&gt;Ask for a reboot to enable all the configuration changes.&lt;/li&gt;
4215
4216 &lt;/ol&gt;
4217
4218 &lt;p&gt;There are some steps in the Debian Edu installation that can not be
4219 replicated like this. Disk partitioning and LVM setup, for example.
4220 So this script just assume there is enough disk space to install all
4221 the needed packages.&lt;/p&gt;
4222
4223 &lt;p&gt;The script was created to help a Debian Edu student working on
4224 setting up &lt;a href=&quot;http://www.raspberrypi.org&quot;&gt;Raspberry Pi&lt;/a&gt; as a
4225 Debian Edu client, and using it he can take the existing
4226 &lt;a href=&quot;http://www.raspbian.org/FrontPage‎&quot;&gt;Raspbian&lt;/a&gt; installation and
4227 transform it into a fully functioning Debian Edu Workstation (or
4228 Roaming Workstation, or whatever :).&lt;/p&gt;
4229
4230 &lt;p&gt;The default setting in the script is to create a KDE Workstation.
4231 If a LXDE based Roaming workstation is wanted instead, modify the
4232 PROFILE and DESKTOP values at the top to look like this instead:&lt;/p&gt;
4233
4234 &lt;p&gt;&lt;pre&gt;
4235 PROFILE=&quot;Roaming-Workstation&quot;
4236 DESKTOP=&quot;lxde&quot;
4237 &lt;/pre&gt;&lt;/p&gt;
4238
4239 &lt;p&gt;The script could even become useful to set up Debian Edu servers in
4240 the cloud, by starting with a virtual Debian installation at some
4241 virtual hosting service and setting up all the services on first
4242 boot.&lt;/p&gt;
4243 </description>
4244 </item>
4245
4246 <item>
4247 <title>Debian, the Linux distribution of choice for LEGO designers?</title>
4248 <link>http://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html</link>
4249 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html</guid>
4250 <pubDate>Sat, 11 May 2013 20:30:00 +0200</pubDate>
4251 <description>&lt;P&gt;In January,
4252 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html&quot;&gt;I
4253 announced a&lt;/a&gt; new &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;IRC
4254 channel #debian-lego&lt;/a&gt;, for those of us in the Debian and Linux
4255 community interested in &lt;a href=&quot;http://www.lego.com/&quot;&gt;LEGO&lt;/a&gt;, the
4256 marvellous construction system from Denmark. We also created
4257 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;a wiki page&lt;/a&gt; to have
4258 a place to take notes and write down our plans and hopes. And several
4259 people showed up to help. I was very happy to see the effect of my
4260 call. Since the small start, we have a debtags tag
4261 &lt;a href=&quot;http://debtags.debian.net/search/bytag?wl=hardware::hobby:lego&quot;&gt;hardware::hobby:lego&lt;/a&gt;
4262 tag for LEGO related packages, and now count 10 packages related to
4263 LEGO and &lt;a href=&quot;http://mindstorms.lego.com/&quot;&gt;Mindstorms&lt;/a&gt;:&lt;/p&gt;
4264
4265 &lt;p&gt;&lt;table&gt;
4266 &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;
4267 &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;
4268 &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;
4269 &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;
4270 &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;
4271 &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;
4272 &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;
4273 &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;
4274 &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;
4275 &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;
4276 &lt;/table&gt;&lt;/p&gt;
4277
4278 &lt;p&gt;Some of these are available in Wheezy, and all but one are
4279 currently available in Jessie/testing. leocad is so far only
4280 available in experimental.&lt;/p&gt;
4281
4282 &lt;p&gt;If you care about LEGO in Debian, please join us on IRC and help
4283 adding the rest of the great free software tools available on Linux
4284 for LEGO designers.&lt;/p&gt;
4285 </description>
4286 </item>
4287
4288 <item>
4289 <title>Debian Wheezy is out - and Debian Edu / Skolelinux should soon follow! #newinwheezy</title>
4290 <link>http://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html</link>
4291 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html</guid>
4292 <pubDate>Sun, 5 May 2013 07:40:00 +0200</pubDate>
4293 <description>&lt;p&gt;When I woke up this morning, I was very happy to see that the
4294 &lt;a href=&quot;http://www.debian.org/News/2013/20130504&quot;&gt;release announcement
4295 for Debian Wheezy&lt;/a&gt; was waiting in my mail box. This is a great
4296 Debian release, and I expect to move my machines at home over to it fairly
4297 soon.&lt;/p&gt;
4298
4299 &lt;p&gt;The new debian release contain heaps of new stuff, and one program
4300 in particular make me very happy to see included. The
4301 &lt;a href=&quot;http://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt; program, made famous by
4302 the &lt;a href=&quot;http://www.code.org/&quot;&gt;Teach kids code&lt;/a&gt; movement, is
4303 included for the first time. Alongside similar programs like
4304 &lt;a href=&quot;http://edu.kde.org/kturtle/&quot;&gt;kturtle&lt;/a&gt; and
4305 &lt;a href=&quot;http://wiki.sugarlabs.org/go/Activities/Turtle_Art&quot;&gt;turtleart&lt;/a&gt;,
4306 it allow for visual programming where syntax errors can not happen,
4307 and a friendly programming environment for learning to control the
4308 computer. Scratch will also be included in the next release of Debian
4309 Edu.&lt;/a&gt;
4310
4311 &lt;p&gt;And now that Wheezy is wrapped up, we can wrap up the next Debian
4312 Edu/Skolelinux release too. The
4313 &lt;a href=&quot;http://lists.debian.org/debian-edu/2013/04/msg00132.html&quot;&gt;first
4314 alpha release&lt;/a&gt; went out last week, and the next should soon
4315 follow.&lt;p&gt;
4316 </description>
4317 </item>
4318
4319 <item>
4320 <title>Isenkram 0.2 finally in the Debian archive</title>
4321 <link>http://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html</link>
4322 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html</guid>
4323 <pubDate>Wed, 3 Apr 2013 23:40:00 +0200</pubDate>
4324 <description>&lt;p&gt;Today the &lt;a href=&quot;http://packages.qa.debian.org/isenkram&quot;&gt;Isenkram
4325 package&lt;/a&gt; finally made it into the archive, after lingering in NEW
4326 for many months. I uploaded it to the Debian experimental suite
4327 2013-01-27, and today it was accepted into the archive.&lt;/p&gt;
4328
4329 &lt;p&gt;Isenkram is a system for suggesting to users what packages to
4330 install to work with a pluggable hardware device. The suggestion pop
4331 up when the device is plugged in. For example if a Lego Mindstorm NXT
4332 is inserted, it will suggest to install the program needed to program
4333 the NXT controller. Give it a go, and report bugs and suggestions to
4334 BTS. :)&lt;/p&gt;
4335 </description>
4336 </item>
4337
4338 <item>
4339 <title>Bitcoin GUI now available from Debian/unstable (and Ubuntu/raring)</title>
4340 <link>http://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html</link>
4341 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html</guid>
4342 <pubDate>Sat, 2 Feb 2013 09:00:00 +0100</pubDate>
4343 <description>&lt;p&gt;My
4344 &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
4345 bitcoin related blog post&lt;/a&gt; mentioned that the new
4346 &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;bitcoin package&lt;/a&gt; for
4347 Debian was waiting in NEW. It was accepted by the Debian ftp-masters
4348 2013-01-19, and have been available in unstable since then. It was
4349 automatically copied to Ubuntu, and is available in their Raring
4350 version too.&lt;/p&gt;
4351
4352 &lt;p&gt;But there is a strange problem with the build that block this new
4353 version from being available on the i386 and kfreebsd-i386
4354 architectures. For some strange reason, the autobuilders in Debian
4355 for these architectures fail to run the test suite on these
4356 architectures (&lt;a href=&quot;http://bugs.debian.org/672524&quot;&gt;BTS #672524&lt;/a&gt;).
4357 We are so far unable to reproduce it when building it manually, and
4358 no-one have been able to propose a fix. If you got an idea what is
4359 failing, please let us know via the BTS.&lt;/p&gt;
4360
4361 &lt;p&gt;One feature that is annoying me with of the bitcoin client, because
4362 I often run low on disk space, is the fact that the client will exit
4363 if it run short on space (&lt;a href=&quot;http://bugs.debian.org/696715&quot;&gt;BTS
4364 #696715&lt;/a&gt;). So make sure you have enough disk space when you run
4365 it. :)&lt;/p&gt;
4366
4367 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
4368 activities, please send Bitcoin donations to my address
4369 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
4370 </description>
4371 </item>
4372
4373 <item>
4374 <title>Welcome to the world, Isenkram!</title>
4375 <link>http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html</link>
4376 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html</guid>
4377 <pubDate>Tue, 22 Jan 2013 22:00:00 +0100</pubDate>
4378 <description>&lt;p&gt;Yesterday, I
4379 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html&quot;&gt;asked
4380 for testers&lt;/a&gt; for my prototype for making Debian better at handling
4381 pluggable hardware devices, which I
4382 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;set
4383 out to create&lt;/a&gt; earlier this month. Several valuable testers showed
4384 up, and caused me to really want to to open up the development to more
4385 people. But before I did this, I want to come up with a sensible name
4386 for this project. Today I finally decided on a new name, and I have
4387 renamed the project from hw-support-handler to this new name. In the
4388 process, I moved the source to git and made it available as a
4389 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git&quot;&gt;collab-maint&lt;/a&gt;
4390 repository in Debian. The new name? It is &lt;strong&gt;Isenkram&lt;/strong&gt;.
4391 To fetch and build the latest version of the source, use&lt;/p&gt;
4392
4393 &lt;pre&gt;
4394 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
4395 cd isenkram &amp;&amp; git-buildpackage -us -uc
4396 &lt;/pre&gt;
4397
4398 &lt;p&gt;I have not yet adjusted all files to use the new name yet. If you
4399 want to hack on the source or improve the package, please go ahead.
4400 But please talk to me first on IRC or via email before you do major
4401 changes, to make sure we do not step on each others toes. :)&lt;/p&gt;
4402
4403 &lt;p&gt;If you wonder what &#39;isenkram&#39; is, it is a Norwegian word for iron
4404 stuff, typically meaning tools, nails, screws, etc. Typical hardware
4405 stuff, in other words. I&#39;ve been told it is the Norwegian variant of
4406 the German word eisenkram, for those that are familiar with that
4407 word.&lt;/p&gt;
4408
4409 &lt;p&gt;&lt;strong&gt;Update 2013-01-26&lt;/strong&gt;: Added -us -us to build
4410 instructions, to avoid confusing people with an error from the signing
4411 process.&lt;/p&gt;
4412
4413 &lt;p&gt;&lt;strong&gt;Update 2013-01-27&lt;/strong&gt;: Switch to HTTP URL for the git
4414 clone argument to avoid the need for authentication.&lt;/p&gt;
4415 </description>
4416 </item>
4417
4418 <item>
4419 <title>First prototype ready making hardware easier to use in Debian</title>
4420 <link>http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html</link>
4421 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html</guid>
4422 <pubDate>Mon, 21 Jan 2013 12:00:00 +0100</pubDate>
4423 <description>&lt;p&gt;Early this month I set out to try to
4424 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;improve
4425 the Debian support for pluggable hardware devices&lt;/a&gt;. Now my
4426 prototype is working, and it is ready for a larger audience. To test
4427 it, fetch the
4428 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;source
4429 from the Debian Edu subversion repository&lt;/a&gt;, build and install the
4430 package. You might have to log out and in again activate the
4431 autostart script.&lt;/p&gt;
4432
4433 &lt;p&gt;The design is simple:&lt;/p&gt;
4434
4435 &lt;ul&gt;
4436
4437 &lt;li&gt;Add desktop entry in /usr/share/autostart/ causing a program
4438 hw-support-handlerd to start when the user log in.&lt;/li&gt;
4439
4440 &lt;li&gt;This program listen for kernel events about new hardware (directly
4441 from the kernel like udev does), not using HAL dbus events as I
4442 initially did.&lt;/li&gt;
4443
4444 &lt;li&gt;When new hardware is inserted, look up the hardware modalias in
4445 the APT database, a database
4446 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup&quot;&gt;available
4447 via HTTP&lt;/a&gt; and a database available as part of the package.&lt;/li&gt;
4448
4449 &lt;li&gt;If a package is mapped to the hardware in question, the package
4450 isn&#39;t installed yet and this is the first time the hardware was
4451 plugged in, show a desktop notification suggesting to install the
4452 package or packages.&lt;/li&gt;
4453
4454 &lt;li&gt;If the user click on the &#39;install package now&#39; button, ask
4455 aptdaemon via the PackageKit API to install the requrired package.&lt;/li&gt;
4456
4457 &lt;li&gt;aptdaemon ask for root password or sudo password, and install the
4458 package while showing progress information in a window.&lt;/li&gt;
4459
4460 &lt;/ul&gt;
4461
4462 &lt;p&gt;I still need to come up with a better name for the system. Here
4463 are some screen shots showing the prototype in action. First the
4464 notification, then the password request, and finally the request to
4465 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.&lt;/p&gt;
4466
4467 &lt;p&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png&quot;&gt;
4468 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png&quot;&gt;
4469 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png&quot;&gt;
4470 &lt;br&gt;&lt;img src=&quot;http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png&quot;&gt;
4471 &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;
4472
4473 &lt;p&gt;The prototype still need to be improved with longer timeouts, but
4474 is already useful. The database of hardware to package mappings also
4475 need more work. It is currently compatible with the Ubuntu way of
4476 storing such information in the package control file, but could be
4477 changed to use other formats instead or in addition to the current
4478 method. I&#39;ve dropped the use of discover for this mapping, as the
4479 modalias approach is more flexible and easier to use on Linux as long
4480 as the Linux kernel expose its modalias strings directly.&lt;/p&gt;
4481
4482 &lt;p&gt;&lt;strong&gt;Update 2013-01-21 16:50&lt;/strong&gt;: Due to popular demand,
4483 here is the command required to check out and build the source: Use
4484 &#39;&lt;tt&gt;svn checkout
4485 svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
4486 hw-support-handler; debuild&lt;/tt&gt;&#39;. If you lack debuild, install the
4487 devscripts package.&lt;/p&gt;
4488
4489 &lt;p&gt;&lt;strong&gt;Update 2013-01-23 12:00&lt;/strong&gt;: The project is now
4490 renamed to Isenkram and the source moved from the Debian Edu
4491 subversion repository to a Debian collab-maint git repository. See
4492 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html&quot;&gt;build
4493 instructions&lt;/a&gt; for details.&lt;/p&gt;
4494 </description>
4495 </item>
4496
4497 <item>
4498 <title>Thank you Thinkpad X41, for your long and trustworthy service</title>
4499 <link>http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html</link>
4500 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html</guid>
4501 <pubDate>Sat, 19 Jan 2013 09:20:00 +0100</pubDate>
4502 <description>&lt;p&gt;This Christmas my trusty old laptop died. It died quietly and
4503 suddenly in bed. With a quiet whimper, it went completely quiet and
4504 black. The power button was no longer able to turn it on. It was a
4505 IBM Thinkpad X41, and the best laptop I ever had. Better than both
4506 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
4507 Compaq I had before that. Now I need to find a replacement. To keep
4508 going during Christmas, I moved the one year old SSD disk to my old
4509 X40 where it fitted (only one I had left that could use it), but it is
4510 not a durable solution.
4511
4512 &lt;p&gt;My laptop needs are fairly modest. This is my wishlist from when I
4513 got a new one more than 10 years ago. It still holds true.:)&lt;/p&gt;
4514
4515 &lt;ul&gt;
4516
4517 &lt;li&gt;Lightweight (around 1 kg) and small volume (preferably smaller
4518 than A4).&lt;/li&gt;
4519 &lt;li&gt;Robust, it will be in my backpack every day.&lt;/li&gt;
4520 &lt;li&gt;Three button mouse and a mouse pin instead of touch pad.&lt;/li&gt;
4521 &lt;li&gt;Long battery life time. Preferable a week.&lt;/li&gt;
4522 &lt;li&gt;Internal WIFI network card.&lt;/li&gt;
4523 &lt;li&gt;Internal Twisted Pair network card.&lt;/li&gt;
4524 &lt;li&gt;Some USB slots (2-3 is plenty)&lt;/li&gt;
4525 &lt;li&gt;Good keyboard - similar to the Thinkpad.&lt;/li&gt;
4526 &lt;li&gt;Video resolution at least 1024x768, with size around 12&quot; (A4 paper
4527 size).&lt;/li&gt;
4528 &lt;li&gt;Hardware supported by Debian Stable, ie the default kernel and
4529 X.org packages.&lt;/li&gt;
4530 &lt;li&gt;Quiet, preferably fan free (or at least not using the fan most of
4531 the time).
4532
4533 &lt;/ul&gt;
4534
4535 &lt;p&gt;You will notice that there are no RAM and CPU requirements in the
4536 list. The reason is simply that the specifications on laptops the
4537 last 10-15 years have been sufficient for my needs, and I have to look
4538 at other features to choose my laptop. But are there still made as
4539 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
4540 robust, and Thinkpads seem to be heading in the wrong direction since
4541 Lenovo took over. But I&#39;ve been told that X220 and X1 Carbon might
4542 still be useful.&lt;/p&gt;
4543
4544 &lt;p&gt;Perhaps I should rethink my needs, and look for a pad with an
4545 external keyboard? I&#39;ll have to check the
4546 &lt;a href=&quot;http://www.linux-laptop.net/&quot;&gt;Linux Laptops site&lt;/a&gt; for
4547 well-supported laptops, or perhaps just buy one preinstalled from one
4548 of the vendors listed on the &lt;a href=&quot;http://linuxpreloaded.com/&quot;&gt;Linux
4549 Pre-loaded site&lt;/a&gt;.&lt;/p&gt;
4550 </description>
4551 </item>
4552
4553 <item>
4554 <title>How to find a browser plugin supporting a given MIME type</title>
4555 <link>http://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html</link>
4556 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html</guid>
4557 <pubDate>Fri, 18 Jan 2013 10:40:00 +0100</pubDate>
4558 <description>&lt;p&gt;Some times I try to figure out which Iceweasel browser plugin to
4559 install to get support for a given MIME type. Thanks to
4560 &lt;a href=&quot;https://wiki.ubuntu.com/MozillaTeam/Plugins&quot;&gt;specifications
4561 done by Ubuntu&lt;/a&gt; and Mozilla, it is possible to do this in Debian.
4562 Unfortunately, not very many packages provide the needed meta
4563 information, Anyway, here is a small script to look up all browser
4564 plugin packages announcing ther MIME support using this specification:&lt;/p&gt;
4565
4566 &lt;pre&gt;
4567 #!/usr/bin/python
4568 import sys
4569 import apt
4570 def pkgs_handling_mimetype(mimetype):
4571 cache = apt.Cache()
4572 cache.open(None)
4573 thepkgs = []
4574 for pkg in cache:
4575 version = pkg.candidate
4576 if version is None:
4577 version = pkg.installed
4578 if version is None:
4579 continue
4580 record = version.record
4581 if not record.has_key(&#39;Npp-MimeType&#39;):
4582 continue
4583 mime_types = record[&#39;Npp-MimeType&#39;].split(&#39;,&#39;)
4584 for t in mime_types:
4585 t = t.rstrip().strip()
4586 if t == mimetype:
4587 thepkgs.append(pkg.name)
4588 return thepkgs
4589 mimetype = &quot;audio/ogg&quot;
4590 if 1 &lt; len(sys.argv):
4591 mimetype = sys.argv[1]
4592 print &quot;Browser plugin packages supporting %s:&quot; % mimetype
4593 for pkg in pkgs_handling_mimetype(mimetype):
4594 print &quot; %s&quot; %pkg
4595 &lt;/pre&gt;
4596
4597 &lt;p&gt;It can be used like this to look up a given MIME type:&lt;/p&gt;
4598
4599 &lt;pre&gt;
4600 % ./apt-find-browserplug-for-mimetype
4601 Browser plugin packages supporting audio/ogg:
4602 gecko-mediaplayer
4603 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
4604 Browser plugin packages supporting application/x-shockwave-flash:
4605 browser-plugin-gnash
4606 %
4607 &lt;/pre&gt;
4608
4609 &lt;p&gt;In Ubuntu this mechanism is combined with support in the browser
4610 itself to query for plugins and propose to install the needed
4611 packages. It would be great if Debian supported such feature too. Is
4612 anyone working on adding it?&lt;/p&gt;
4613
4614 &lt;p&gt;&lt;strong&gt;Update 2013-01-18 14:20&lt;/strong&gt;: The Debian BTS
4615 request for icweasel support for this feature is
4616 &lt;a href=&quot;http://bugs.debian.org/484010&quot;&gt;#484010&lt;/a&gt; from 2008 (and
4617 &lt;a href=&quot;http://bugs.debian.org/698426&quot;&gt;#698426&lt;/a&gt; from today). Lack
4618 of manpower and wish for a different design is the reason thus feature
4619 is not yet in iceweasel from Debian.&lt;/p&gt;
4620 </description>
4621 </item>
4622
4623 <item>
4624 <title>What is the most supported MIME type in Debian?</title>
4625 <link>http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html</link>
4626 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html</guid>
4627 <pubDate>Wed, 16 Jan 2013 10:10:00 +0100</pubDate>
4628 <description>&lt;p&gt;The &lt;a href=&quot;http://wiki.debian.org/AppStreamDebianProposal&quot;&gt;DEP-11
4629 proposal to add AppStream information to the Debian archive&lt;/a&gt;, is a
4630 proposal to make it possible for a Desktop application to propose to
4631 the user some package to install to gain support for a given MIME
4632 type, font, library etc. that is currently missing. With such
4633 mechanism in place, it would be possible for the desktop to
4634 automatically propose and install leocad if some LDraw file is
4635 downloaded by the browser.&lt;/p&gt;
4636
4637 &lt;p&gt;To get some idea about the current content of the archive, I decided
4638 to write a simple program to extract all .desktop files from the
4639 Debian archive and look up the claimed MIME support there. The result
4640 can be found on the
4641 &lt;a href=&quot;http://ftp.skolelinux.org/pub/AppStreamTest&quot;&gt;Skolelinux FTP
4642 site&lt;/a&gt;. Using the collected information, it become possible to
4643 answer the question in the title. Here are the 20 most supported MIME
4644 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
4645 The complete list is available from the link above.&lt;/p&gt;
4646
4647 &lt;p&gt;&lt;strong&gt;Debian Stable:&lt;/strong&gt;&lt;/p&gt;
4648
4649 &lt;pre&gt;
4650 count MIME type
4651 ----- -----------------------
4652 32 text/plain
4653 30 audio/mpeg
4654 29 image/png
4655 28 image/jpeg
4656 27 application/ogg
4657 26 audio/x-mp3
4658 25 image/tiff
4659 25 image/gif
4660 22 image/bmp
4661 22 audio/x-wav
4662 20 audio/x-flac
4663 19 audio/x-mpegurl
4664 18 video/x-ms-asf
4665 18 audio/x-musepack
4666 18 audio/x-mpeg
4667 18 application/x-ogg
4668 17 video/mpeg
4669 17 audio/x-scpls
4670 17 audio/ogg
4671 16 video/x-ms-wmv
4672 &lt;/pre&gt;
4673
4674 &lt;p&gt;&lt;strong&gt;Debian Testing:&lt;/strong&gt;&lt;/p&gt;
4675
4676 &lt;pre&gt;
4677 count MIME type
4678 ----- -----------------------
4679 33 text/plain
4680 32 image/png
4681 32 image/jpeg
4682 29 audio/mpeg
4683 27 image/gif
4684 26 image/tiff
4685 26 application/ogg
4686 25 audio/x-mp3
4687 22 image/bmp
4688 21 audio/x-wav
4689 19 audio/x-mpegurl
4690 19 audio/x-mpeg
4691 18 video/mpeg
4692 18 audio/x-scpls
4693 18 audio/x-flac
4694 18 application/x-ogg
4695 17 video/x-ms-asf
4696 17 text/html
4697 17 audio/x-musepack
4698 16 image/x-xbitmap
4699 &lt;/pre&gt;
4700
4701 &lt;p&gt;&lt;strong&gt;Debian Unstable:&lt;/strong&gt;&lt;/p&gt;
4702
4703 &lt;pre&gt;
4704 count MIME type
4705 ----- -----------------------
4706 31 text/plain
4707 31 image/png
4708 31 image/jpeg
4709 29 audio/mpeg
4710 28 application/ogg
4711 27 image/gif
4712 26 image/tiff
4713 26 audio/x-mp3
4714 23 audio/x-wav
4715 22 image/bmp
4716 21 audio/x-flac
4717 20 audio/x-mpegurl
4718 19 audio/x-mpeg
4719 18 video/x-ms-asf
4720 18 video/mpeg
4721 18 audio/x-scpls
4722 18 application/x-ogg
4723 17 audio/x-musepack
4724 16 video/x-ms-wmv
4725 16 video/x-msvideo
4726 &lt;/pre&gt;
4727
4728 &lt;p&gt;I am told that PackageKit can provide an API to access the kind of
4729 information mentioned in DEP-11. I have not yet had time to look at
4730 it, but hope the PackageKit people in Debian are on top of these
4731 issues.&lt;/p&gt;
4732
4733 &lt;p&gt;&lt;strong&gt;Update 2013-01-16 13:35&lt;/strong&gt;: Updated numbers after
4734 discovering a typo in my script.&lt;/p&gt;
4735 </description>
4736 </item>
4737
4738 <item>
4739 <title>Using modalias info to find packages handling my hardware</title>
4740 <link>http://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html</link>
4741 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html</guid>
4742 <pubDate>Tue, 15 Jan 2013 08:00:00 +0100</pubDate>
4743 <description>&lt;p&gt;Yesterday, I wrote about the
4744 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html&quot;&gt;modalias
4745 values provided by the Linux kernel&lt;/a&gt; following my hope for
4746 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html&quot;&gt;better
4747 dongle support in Debian&lt;/a&gt;. Using this knowledge, I have tested how
4748 modalias values attached to package names can be used to map packages
4749 to hardware. This allow the system to look up and suggest relevant
4750 packages when I plug in some new hardware into my machine, and replace
4751 discover and discover-data as the database used to map hardware to
4752 packages.&lt;/p&gt;
4753
4754 &lt;p&gt;I create a modaliases file with entries like the following,
4755 containing package name, kernel module name (if relevant, otherwise
4756 the package name) and globs matching the relevant hardware
4757 modalias.&lt;/p&gt;
4758
4759 &lt;p&gt;&lt;blockquote&gt;
4760 Package: package-name
4761 &lt;br&gt;Modaliases: module(modaliasglob, modaliasglob, modaliasglob)&lt;/p&gt;
4762 &lt;/blockquote&gt;&lt;/p&gt;
4763
4764 &lt;p&gt;It is fairly trivial to write code to find the relevant packages
4765 for a given modalias value using this file.&lt;/p&gt;
4766
4767 &lt;p&gt;An entry like this would suggest the video and picture application
4768 cheese for many USB web cameras (interface bus class 0E01):&lt;/p&gt;
4769
4770 &lt;p&gt;&lt;blockquote&gt;
4771 Package: cheese
4772 &lt;br&gt;Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)&lt;/p&gt;
4773 &lt;/blockquote&gt;&lt;/p&gt;
4774
4775 &lt;p&gt;An entry like this would suggest the pcmciautils package when a
4776 CardBus bridge (bus class 0607) PCI device is present:&lt;/p&gt;
4777
4778 &lt;p&gt;&lt;blockquote&gt;
4779 Package: pcmciautils
4780 &lt;br&gt;Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
4781 &lt;/blockquote&gt;&lt;/p&gt;
4782
4783 &lt;p&gt;An entry like this would suggest the package colorhug-client when
4784 plugging in a ColorHug with USB IDs 04D8:F8DA:&lt;/p&gt;
4785
4786 &lt;p&gt;&lt;blockquote&gt;
4787 Package: colorhug-client
4788 &lt;br&gt;Modaliases: colorhug-client(usb:v04D8pF8DAd*)&lt;/p&gt;
4789 &lt;/blockquote&gt;&lt;/p&gt;
4790
4791 &lt;p&gt;I believe the format is compatible with the format of the Packages
4792 file in the Debian archive. Ubuntu already uses their Packages file
4793 to store their mappings from packages to hardware.&lt;/p&gt;
4794
4795 &lt;p&gt;By adding a XB-Modaliases: header in debian/control, any .deb can
4796 announce the hardware it support in a way my prototype understand.
4797 This allow those publishing packages in an APT source outside the
4798 Debian archive as well as those backporting packages to make sure the
4799 hardware mapping are included in the package meta information. I&#39;ve
4800 tested such header in the pymissile package, and its modalias mapping
4801 is working as it should with my prototype. It even made it to Ubuntu
4802 Raring.&lt;/p&gt;
4803
4804 &lt;p&gt;To test if it was possible to look up supported hardware using only
4805 the shell tools available in the Debian installer, I wrote a shell
4806 implementation of the lookup code. The idea is to create files for
4807 each modalias and let the shell do the matching. Please check out and
4808 try the
4809 &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;
4810 shell script. It run without any extra dependencies and fetch the
4811 hardware mappings from the Debian archive and the subversion
4812 repository where I currently work on my prototype.&lt;/p&gt;
4813
4814 &lt;p&gt;When I use it on a machine with a yubikey inserted, it suggest to
4815 install yubikey-personalization:&lt;/p&gt;
4816
4817 &lt;p&gt;&lt;blockquote&gt;
4818 % ./hw-support-lookup
4819 &lt;br&gt;yubikey-personalization
4820 &lt;br&gt;%
4821 &lt;/blockquote&gt;&lt;/p&gt;
4822
4823 &lt;p&gt;When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
4824 propose to install the pcmciautils package:&lt;/p&gt;
4825
4826 &lt;p&gt;&lt;blockquote&gt;
4827 % ./hw-support-lookup
4828 &lt;br&gt;pcmciautils
4829 &lt;br&gt;%
4830 &lt;/blockquote&gt;&lt;/p&gt;
4831
4832 &lt;p&gt;If you know of any hardware-package mapping that should be added to
4833 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co&quot;&gt;my
4834 database&lt;/a&gt;, please tell me about it.&lt;/p&gt;
4835
4836 &lt;p&gt;It could be possible to generate several of the mappings between
4837 packages and hardware. One source would be to look at packages with
4838 kernel modules, ie packages with *.ko files in /lib/modules/, and
4839 extract their modalias information. Another would be to look at
4840 packages with udev rules, ie packages with files in
4841 /lib/udev/rules.d/, and extract their vendor/model information to
4842 generate a modalias matching rule. I have not tested any of these to
4843 see if it work.&lt;/p&gt;
4844
4845 &lt;p&gt;If you want to help implementing a system to let us propose what
4846 packages to install when new hardware is plugged into a Debian
4847 machine, please send me an email or talk to me on
4848 &lt;a href=&quot;irc://irc.debian.org/%23debian-devel&quot;&gt;#debian-devel&lt;/a&gt;.&lt;/p&gt;
4849 </description>
4850 </item>
4851
4852 <item>
4853 <title>Modalias strings - a practical way to map &quot;stuff&quot; to hardware</title>
4854 <link>http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html</link>
4855 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html</guid>
4856 <pubDate>Mon, 14 Jan 2013 11:20:00 +0100</pubDate>
4857 <description>&lt;p&gt;While looking into how to look up Debian packages based on hardware
4858 information, to find the packages that support a given piece of
4859 hardware, I refreshed my memory regarding modalias values, and decided
4860 to document the details. Here are my findings so far, also available
4861 in
4862 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;the
4863 Debian Edu subversion repository&lt;/a&gt;:
4864
4865 &lt;p&gt;&lt;strong&gt;Modalias decoded&lt;/strong&gt;&lt;/p&gt;
4866
4867 &lt;p&gt;This document try to explain what the different types of modalias
4868 values stands for. It is in part based on information from
4869 &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;,
4870 &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;,
4871 &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
4872 &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;.
4873
4874 &lt;p&gt;The modalias entries for a given Linux machine can be found using
4875 this shell script:&lt;/p&gt;
4876
4877 &lt;pre&gt;
4878 find /sys -name modalias -print0 | xargs -0 cat | sort -u
4879 &lt;/pre&gt;
4880
4881 &lt;p&gt;The supported modalias globs for a given kernel module can be found
4882 using modinfo:&lt;/p&gt;
4883
4884 &lt;pre&gt;
4885 % /sbin/modinfo psmouse | grep alias:
4886 alias: serio:ty05pr*id*ex*
4887 alias: serio:ty01pr*id*ex*
4888 %
4889 &lt;/pre&gt;
4890
4891 &lt;p&gt;&lt;strong&gt;PCI subtype&lt;/strong&gt;&lt;/p&gt;
4892
4893 &lt;p&gt;A typical PCI entry can look like this. This is an Intel Host
4894 Bridge memory controller:&lt;/p&gt;
4895
4896 &lt;p&gt;&lt;blockquote&gt;
4897 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
4898 &lt;/blockquote&gt;&lt;/p&gt;
4899
4900 &lt;p&gt;This represent these values:&lt;/p&gt;
4901
4902 &lt;pre&gt;
4903 v 00008086 (vendor)
4904 d 00002770 (device)
4905 sv 00001028 (subvendor)
4906 sd 000001AD (subdevice)
4907 bc 06 (bus class)
4908 sc 00 (bus subclass)
4909 i 00 (interface)
4910 &lt;/pre&gt;
4911
4912 &lt;p&gt;The vendor/device values are the same values outputted from &#39;lspci
4913 -n&#39; as 8086:2770. The bus class/subclass is also shown by lspci as
4914 0600. The 0600 class is a host bridge. Other useful bus values are
4915 0300 (VGA compatible card) and 0200 (Ethernet controller).&lt;/p&gt;
4916
4917 &lt;p&gt;Not sure how to figure out the interface value, nor what it
4918 means.&lt;/p&gt;
4919
4920 &lt;p&gt;&lt;strong&gt;USB subtype&lt;/strong&gt;&lt;/p&gt;
4921
4922 &lt;p&gt;Some typical USB entries can look like this. This is an internal
4923 USB hub in a laptop:&lt;/p&gt;
4924
4925 &lt;p&gt;&lt;blockquote&gt;
4926 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
4927 &lt;/blockquote&gt;&lt;/p&gt;
4928
4929 &lt;p&gt;Here is the values included in this alias:&lt;/p&gt;
4930
4931 &lt;pre&gt;
4932 v 1D6B (device vendor)
4933 p 0001 (device product)
4934 d 0206 (bcddevice)
4935 dc 09 (device class)
4936 dsc 00 (device subclass)
4937 dp 00 (device protocol)
4938 ic 09 (interface class)
4939 isc 00 (interface subclass)
4940 ip 00 (interface protocol)
4941 &lt;/pre&gt;
4942
4943 &lt;p&gt;The 0900 device class/subclass means hub. Some times the relevant
4944 class is in the interface class section. For a simple USB web camera,
4945 these alias entries show up:&lt;/p&gt;
4946
4947 &lt;p&gt;&lt;blockquote&gt;
4948 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
4949 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
4950 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
4951 &lt;br&gt;usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
4952 &lt;/blockquote&gt;&lt;/p&gt;
4953
4954 &lt;p&gt;Interface class 0E01 is video control, 0E02 is video streaming (aka
4955 camera), 0101 is audio control device and 0102 is audio streaming (aka
4956 microphone). Thus this is a camera with microphone included.&lt;/p&gt;
4957
4958 &lt;p&gt;&lt;strong&gt;ACPI subtype&lt;/strong&gt;&lt;/p&gt;
4959
4960 &lt;p&gt;The ACPI type is used for several non-PCI/USB stuff. This is an IR
4961 receiver in a Thinkpad X40:&lt;/p&gt;
4962
4963 &lt;p&gt;&lt;blockquote&gt;
4964 acpi:IBM0071:PNP0511:
4965 &lt;/blockquote&gt;&lt;/p&gt;
4966
4967 &lt;p&gt;The values between the colons are IDs.&lt;/p&gt;
4968
4969 &lt;p&gt;&lt;strong&gt;DMI subtype&lt;/strong&gt;&lt;/p&gt;
4970
4971 &lt;p&gt;The DMI table contain lots of information about the computer case
4972 and model. This is an entry for a IBM Thinkpad X40, fetched from
4973 /sys/devices/virtual/dmi/id/modalias:&lt;/p&gt;
4974
4975 &lt;p&gt;&lt;blockquote&gt;
4976 dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
4977 &lt;/blockquote&gt;&lt;/p&gt;
4978
4979 &lt;p&gt;The values present are&lt;/p&gt;
4980
4981 &lt;pre&gt;
4982 bvn IBM (BIOS vendor)
4983 bvr 1UETB6WW(1.66) (BIOS version)
4984 bd 06/15/2005 (BIOS date)
4985 svn IBM (system vendor)
4986 pn 2371H4G (product name)
4987 pvr ThinkPadX40 (product version)
4988 rvn IBM (board vendor)
4989 rn 2371H4G (board name)
4990 rvr NotAvailable (board version)
4991 cvn IBM (chassis vendor)
4992 ct 10 (chassis type)
4993 cvr NotAvailable (chassis version)
4994 &lt;/pre&gt;
4995
4996 &lt;p&gt;The chassis type 10 is Notebook. Other interesting values can be
4997 found in the dmidecode source:&lt;/p&gt;
4998
4999 &lt;pre&gt;
5000 3 Desktop
5001 4 Low Profile Desktop
5002 5 Pizza Box
5003 6 Mini Tower
5004 7 Tower
5005 8 Portable
5006 9 Laptop
5007 10 Notebook
5008 11 Hand Held
5009 12 Docking Station
5010 13 All In One
5011 14 Sub Notebook
5012 15 Space-saving
5013 16 Lunch Box
5014 17 Main Server Chassis
5015 18 Expansion Chassis
5016 19 Sub Chassis
5017 20 Bus Expansion Chassis
5018 21 Peripheral Chassis
5019 22 RAID Chassis
5020 23 Rack Mount Chassis
5021 24 Sealed-case PC
5022 25 Multi-system
5023 26 CompactPCI
5024 27 AdvancedTCA
5025 28 Blade
5026 29 Blade Enclosing
5027 &lt;/pre&gt;
5028
5029 &lt;p&gt;The chassis type values are not always accurately set in the DMI
5030 table. For example my home server is a tower, but the DMI modalias
5031 claim it is a desktop.&lt;/p&gt;
5032
5033 &lt;p&gt;&lt;strong&gt;SerIO subtype&lt;/strong&gt;&lt;/p&gt;
5034
5035 &lt;p&gt;This type is used for PS/2 mouse plugs. One example is from my
5036 test machine:&lt;/p&gt;
5037
5038 &lt;p&gt;&lt;blockquote&gt;
5039 serio:ty01pr00id00ex00
5040 &lt;/blockquote&gt;&lt;/p&gt;
5041
5042 &lt;p&gt;The values present are&lt;/p&gt;
5043
5044 &lt;pre&gt;
5045 ty 01 (type)
5046 pr 00 (prototype)
5047 id 00 (id)
5048 ex 00 (extra)
5049 &lt;/pre&gt;
5050
5051 &lt;p&gt;This type is supported by the psmouse driver. I am not sure what
5052 the valid values are.&lt;/p&gt;
5053
5054 &lt;p&gt;&lt;strong&gt;Other subtypes&lt;/strong&gt;&lt;/p&gt;
5055
5056 &lt;p&gt;There are heaps of other modalias subtypes according to
5057 file2alias.c. There is the rest of the list from that source: amba,
5058 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
5059 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
5060 vmbus, x86cpu and zorro. I did not spend time documenting all of
5061 these, as they do not seem relevant for my intended use with mapping
5062 hardware to packages when new stuff is inserted during run time.&lt;/p&gt;
5063
5064 &lt;p&gt;&lt;strong&gt;Looking up kernel modules using modalias values&lt;/strong&gt;&lt;/p&gt;
5065
5066 &lt;p&gt;To check which kernel modules provide support for a given modalias,
5067 one can use the following shell script:&lt;/p&gt;
5068
5069 &lt;pre&gt;
5070 for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
5071 echo &quot;$id&quot; ; \
5072 /sbin/modprobe --show-depends &quot;$id&quot;|sed &#39;s/^/ /&#39; ; \
5073 done
5074 &lt;/pre&gt;
5075
5076 &lt;p&gt;The output can look like this (only the first few entries as the
5077 list is very long on my test machine):&lt;/p&gt;
5078
5079 &lt;pre&gt;
5080 acpi:ACPI0003:
5081 insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko
5082 acpi:device:
5083 FATAL: Module acpi:device: not found.
5084 acpi:IBM0068:
5085 insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko
5086 insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko
5087 insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko
5088 insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko
5089 acpi:IBM0071:PNP0511:
5090 insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko
5091 insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko
5092 insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko
5093 [...]
5094 &lt;/pre&gt;
5095
5096 &lt;p&gt;If you want to help implementing a system to let us propose what
5097 packages to install when new hardware is plugged into a Debian
5098 machine, please send me an email or talk to me on
5099 &lt;a href=&quot;irc://irc.debian.org/%23debian-devel&quot;&gt;#debian-devel&lt;/a&gt;.&lt;/p&gt;
5100
5101 &lt;p&gt;&lt;strong&gt;Update 2013-01-15:&lt;/strong&gt; Rewrite &quot;cat $(find ...)&quot; to
5102 &quot;find ... -print0 | xargs -0 cat&quot; to make sure it handle directories
5103 in /sys/ with space in them.&lt;/p&gt;
5104 </description>
5105 </item>
5106
5107 <item>
5108 <title>Moved the pymissile Debian packaging to collab-maint</title>
5109 <link>http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html</link>
5110 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html</guid>
5111 <pubDate>Thu, 10 Jan 2013 20:40:00 +0100</pubDate>
5112 <description>&lt;p&gt;As part of my investigation on how to improve the support in Debian
5113 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
5114 Launcher and updated the Debian package
5115 &lt;a href=&quot;http://packages.qa.debian.org/pymissile&quot;&gt;pymissile&lt;/a&gt; to make
5116 sure udev will fix the device permissions when it is plugged in. I
5117 also added a &quot;Modaliases&quot; header to test it in the Debian archive and
5118 hopefully make the package be proposed by jockey in Ubuntu when a user
5119 plug in his rocket launcher. In the process I moved the source to a
5120 git repository under collab-maint, to make it easier for any DD to
5121 contribute. &lt;a href=&quot;http://code.google.com/p/pymissile/&quot;&gt;Upstream&lt;/a&gt;
5122 is not very active, but the software still work for me even after five
5123 years of relative silence. The new git repository is not listed in
5124 the uploaded package yet, because I want to test the other changes a
5125 bit more before I upload the new version. If you want to check out
5126 the new version with a .desktop file included, visit the
5127 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git&quot;&gt;gitweb
5128 view&lt;/a&gt; or use &quot;&lt;tt&gt;git clone
5129 git://anonscm.debian.org/collab-maint/pymissile.git&lt;/tt&gt;&quot;.&lt;/p&gt;
5130 </description>
5131 </item>
5132
5133 <item>
5134 <title>Lets make hardware dongles easier to use in Debian</title>
5135 <link>http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html</link>
5136 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html</guid>
5137 <pubDate>Wed, 9 Jan 2013 15:40:00 +0100</pubDate>
5138 <description>&lt;p&gt;One thing that annoys me with Debian and Linux distributions in
5139 general, is that there is a great package management system with the
5140 ability to automatically install software packages by downloading them
5141 from the distribution mirrors, but no way to get it to automatically
5142 install the packages I need to use the hardware I plug into my
5143 machine. Even if the package to use it is easily available from the
5144 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
5145 suggest to automatically install the python-nxt, nbc and t2n packages
5146 I need to talk to it. When I plug in a Yubikey, it could propose the
5147 yubikey-personalization package. The information required to do this
5148 is available, but no-one have pulled all the pieces together.&lt;/p&gt;
5149
5150 &lt;p&gt;Some years ago, I proposed to
5151 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg01206.html&quot;&gt;use
5152 the discover subsystem to implement this&lt;/a&gt;. The idea is fairly
5153 simple:
5154
5155 &lt;ul&gt;
5156
5157 &lt;li&gt;Add a desktop entry in /usr/share/autostart/ pointing to a program
5158 starting when a user log in.&lt;/li&gt;
5159
5160 &lt;li&gt;Set this program up to listen for kernel events emitted when new
5161 hardware is inserted into the computer.&lt;/li&gt;
5162
5163 &lt;li&gt;When new hardware is inserted, look up the hardware ID in a
5164 database mapping to packages, and take note of any non-installed
5165 packages.&lt;/li&gt;
5166
5167 &lt;li&gt;Show a message to the user proposing to install the discovered
5168 package, and make it easy to install it.&lt;/li&gt;
5169
5170 &lt;/ul&gt;
5171
5172 &lt;p&gt;I am not sure what the best way to implement this is, but my
5173 initial idea was to use dbus events to discover new hardware, the
5174 discover database to find packages and
5175 &lt;a href=&quot;http://www.packagekit.org/&quot;&gt;PackageKit&lt;/a&gt; to install
5176 packages.&lt;/p&gt;
5177
5178 &lt;p&gt;Yesterday, I found time to try to implement this idea, and the
5179 draft package is now checked into
5180 &lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/&quot;&gt;the
5181 Debian Edu subversion repository&lt;/a&gt;. In the process, I updated the
5182 &lt;a href=&quot;http://packages.qa.debian.org/d/discover-data.html&quot;&gt;discover-data&lt;/a&gt;
5183 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
5184 the relevant packages in Debian, and uploaded a new version
5185 2.2013.01.09 to unstable. I also discovered that the current
5186 &lt;a href=&quot;http://packages.qa.debian.org/d/discover.html&quot;&gt;discover&lt;/a&gt;
5187 package in Debian no longer discovered any USB devices, because
5188 /proc/bus/usb/devices is no longer present. I ported it to use
5189 libusb as a fall back option to get it working. The fixed package
5190 version 2.1.2-6 is now in experimental (didn&#39;t upload it to unstable
5191 because of the freeze).&lt;/p&gt;
5192
5193 &lt;p&gt;With this prototype in place, I can insert my Yubikey, and get this
5194 desktop notification to show up (only once, the first time it is
5195 inserted):&lt;/p&gt;
5196
5197 &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;
5198
5199 &lt;p&gt;For this prototype to be really useful, some way to automatically
5200 install the proposed packages by pressing the &quot;Please install
5201 program(s)&quot; button should to be implemented.&lt;/p&gt;
5202
5203 &lt;p&gt;If this idea seem useful to you, and you want to help make it
5204 happen, please help me update the discover-data database with mappings
5205 from hardware to Debian packages. Check if &#39;discover-pkginstall -l&#39;
5206 list the package you would like to have installed when a given
5207 hardware device is inserted into your computer, and report bugs using
5208 reportbug if it isn&#39;t. Or, if you know of a better way to provide
5209 such mapping, please let me know.&lt;/p&gt;
5210
5211 &lt;p&gt;This prototype need more work, and there are several questions that
5212 should be considered before it is ready for production use. Is dbus
5213 the correct way to detect new hardware? At the moment I look for HAL
5214 dbus events on the system bus, because that is the events I could see
5215 on my Debian Squeeze KDE desktop. Are there better events to use?
5216 How should the user be notified? Is the desktop notification
5217 mechanism the best option, or should the background daemon raise a
5218 popup instead? How should packages be installed? When should they
5219 not be installed?&lt;/p&gt;
5220
5221 &lt;p&gt;If you want to help getting such feature implemented in Debian,
5222 please send me an email. :)&lt;/p&gt;
5223 </description>
5224 </item>
5225
5226 <item>
5227 <title>New IRC channel for LEGO designers using Debian</title>
5228 <link>http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html</link>
5229 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html</guid>
5230 <pubDate>Wed, 2 Jan 2013 15:40:00 +0100</pubDate>
5231 <description>&lt;p&gt;During Christmas, I have worked a bit on the Debian support for
5232 &lt;a href=&quot;http://mindstorms.lego.com/en-us/Default.aspx&quot;&gt;LEGO Mindstorm
5233 NXT&lt;/a&gt;. My son and I have played a bit with my NXT set, and I
5234 discovered I had to build all the tools myself because none were
5235 already in Debian Squeeze. If Debian support for LEGO is something
5236 you care about, please join me on the IRC channel
5237 &lt;a href=&quot;irc://irc.debian.org/%23debian-lego&quot;&gt;#debian-lego&lt;/a&gt; (server
5238 irc.debian.org). There is a lot that could be done to improve the
5239 Debian support for LEGO designers. For example both CAD software
5240 and Mindstorm compilers are missing. :)&lt;/p&gt;
5241
5242 &lt;p&gt;Update 2012-01-03: A
5243 &lt;a href=&quot;http://wiki.debian.org/LegoDesigners&quot;&gt;project page&lt;/a&gt;
5244 including links to Lego related packages is now available.&lt;/p&gt;
5245 </description>
5246 </item>
5247
5248 <item>
5249 <title>How to backport bitcoin-qt version 0.7.2-2 to Debian Squeeze</title>
5250 <link>http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html</link>
5251 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html</guid>
5252 <pubDate>Tue, 25 Dec 2012 20:50:00 +0100</pubDate>
5253 <description>&lt;p&gt;Let me start by wishing you all marry Christmas and a happy new
5254 year! I hope next year will prove to be a good year.&lt;/p&gt;
5255
5256 &lt;p&gt;&lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;Bitcoin&lt;/a&gt;, the digital
5257 decentralised &quot;currency&quot; that allow people to transfer bitcoins
5258 between each other with minimal overhead, is a very interesting
5259 experiment. And as I wrote a few days ago, the bitcoin situation in
5260 &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt; is about to improve a bit.
5261 The &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;new debian source
5262 package&lt;/a&gt; (version 0.7.2-2) was uploaded yesterday, and is waiting
5263 in &lt;a href=&quot;http://ftp-master.debian.org/new.html&quot;&gt;the NEW queue&lt;/A&gt;
5264 for one of the ftpmasters to approve the new bitcoin-qt package
5265 name.&lt;/p&gt;
5266
5267 &lt;p&gt;And thanks to the great work of Jonas and the rest of the bitcoin
5268 team in Debian, you can easily test the package in Debian Squeeze
5269 using the following steps to get a set of working packages:&lt;/p&gt;
5270
5271 &lt;blockquote&gt;&lt;pre&gt;
5272 git clone git://git.debian.org/git/collab-maint/bitcoin
5273 cd bitcoin
5274 DEB_MAINTAINER_MODE=1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
5275 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
5276 &lt;/pre&gt;&lt;/blockquote&gt;
5277
5278 &lt;p&gt;You might have to install some build dependencies as well. The
5279 list of commands should give you two packages, bitcoind and
5280 bitcoin-qt, ready for use in a Squeeze environment. Note that the
5281 client will download the complete set of bitcoin &quot;blocks&quot;, which need
5282 around 5.6 GiB of data on my machine at the moment. Make sure your
5283 ~/.bitcoin/ directory have lots of spare room if you want to download
5284 all the blocks. The client will warn if the disk is getting full, so
5285 there is not really a problem if you got too little room, but you will
5286 not be able to get all the features out of the client.&lt;/p&gt;
5287
5288 &lt;p&gt;As usual, if you use bitcoin and want to show your support of my
5289 activities, please send Bitcoin donations to my address
5290 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
5291 </description>
5292 </item>
5293
5294 <item>
5295 <title>A word on bitcoin support in Debian</title>
5296 <link>http://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html</link>
5297 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html</guid>
5298 <pubDate>Fri, 21 Dec 2012 23:59:00 +0100</pubDate>
5299 <description>&lt;p&gt;It has been a while since I wrote about
5300 &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;bitcoin&lt;/a&gt;, the decentralised
5301 peer-to-peer based crypto-currency, and the reason is simply that I
5302 have been busy elsewhere. But two days ago, I started looking at the
5303 state of &lt;a href=&quot;http://packages.qa.debian.org/bitcoin&quot;&gt;bitcoin in
5304 Debian&lt;/a&gt; again to try to recover my old bitcoin wallet. The package
5305 is now maintained by a
5306 &lt;a href=&quot;https://alioth.debian.org/projects/pkg-bitcoin/&quot;&gt;team of
5307 people&lt;/a&gt;, and the grunt work had already been done by this team. We
5308 owe a huge thank you to all these team members. :)
5309 But I was sad to discover that the bitcoin client is missing in
5310 Wheezy. It is only available in Sid (and an outdated client from
5311 backports). The client had several RC bugs registered in BTS blocking
5312 it from entering testing. To try to help the team and improve the
5313 situation, I spent some time providing patches and triaging the bug
5314 reports. I also had a look at the bitcoin package available from Matt
5315 Corallo in a
5316 &lt;a href=&quot;https://launchpad.net/~bitcoin/+archive/bitcoin&quot;&gt;PPA for
5317 Ubuntu&lt;/a&gt;, and moved the useful pieces from that version into the
5318 Debian package.&lt;/p&gt;
5319
5320 &lt;p&gt;After checking with the main package maintainer Jonas Smedegaard on
5321 IRC, I pushed several patches into the collab-maint git repository to
5322 improve the package. It now contains fixes for the RC issues (not from
5323 me, but fixed by Scott Howard), build rules for a Qt GUI client
5324 package, konqueror support for the bitcoin: URI and bash completion
5325 setup. As I work on Debian Squeeze, I also created
5326 &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/pkg-bitcoin-devel/Week-of-Mon-20121217/000041.html&quot;&gt;a
5327 patch to backport&lt;/a&gt; the latest version. Jonas is going to look at
5328 it and try to integrate it into the git repository before uploading a
5329 new version to unstable.
5330
5331 &lt;p&gt;I would very much like bitcoin to succeed, to get rid of the
5332 centralized control currently exercised in the monetary system. I
5333 find it completely unacceptable that the USA government is collecting
5334 transaction data for almost all international money transfers (most are done in USD and transaction logs shipped to the spooks), and
5335 that the major credit card companies can block legal money
5336 transactions to Wikileaks. But for bitcoin to succeed, more people
5337 need to use bitcoins, and more people need to accept bitcoins when
5338 they sell products and services. Improving the bitcoin support in
5339 Debian is a small step in the right direction, but not enough.
5340 Unfortunately the user experience when browsing the web and wanting to
5341 pay with bitcoin is still not very good. The bitcoin: URI is a step
5342 in the right direction, but need to work in most or every browser in
5343 use. Also the bitcoin-qt client is too heavy to fire up to do a
5344 quick transaction. I believe there are other clients available, but
5345 have not tested them.&lt;/p&gt;
5346
5347 &lt;p&gt;My
5348 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html&quot;&gt;experiment
5349 with bitcoins&lt;/a&gt; showed that at least some of my readers use bitcoin.
5350 I received 20.15 BTC so far on the address I provided in my blog two
5351 years ago, as can be
5352 &lt;a href=&quot;http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;seen
5353 on the blockexplorer service&lt;/a&gt;. Thank you everyone for your
5354 donation. The blockexplorer service demonstrates quite well that
5355 bitcoin is not quite anonymous and untracked. :) I wonder if the
5356 number of users have gone up since then. If you use bitcoin and want
5357 to show your support of my activity, please send Bitcoin donations to
5358 the same address as last time,
5359 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&amp;label=PetterReinholdtsenBlog&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
5360 </description>
5361 </item>
5362
5363 <item>
5364 <title>Git repository for song book for Computer Scientists</title>
5365 <link>http://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html</link>
5366 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html</guid>
5367 <pubDate>Fri, 7 Sep 2012 13:50:00 +0200</pubDate>
5368 <description>&lt;p&gt;As I
5369 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html&quot;&gt;mentioned
5370 this summer&lt;/a&gt;, I have created a Computer Science song book a few
5371 years ago, and today I finally found time to create a public
5372 &lt;a href=&quot;https://gitorious.org/pere-cs-songbook/pere-cs-songbook&quot;&gt;Gitorious
5373 repository for the project&lt;/a&gt;.&lt;/p&gt;
5374
5375 &lt;p&gt;If you want to help out, please clone the source and submit patches
5376 to the HTML version. To generate the PDF and PostScript version,
5377 please use prince XML, or let me know about a useful free software
5378 processor capable of creating a good looking PDF from the HTML.&lt;/p&gt;
5379
5380 &lt;p&gt;Want to sing? You can still find the song book in HTML, PDF and
5381 PostScript formats at
5382 &lt;a href=&quot;http://www.hungry.com/~pere/cs-songbook/&quot;&gt;Petter&#39;s Computer
5383 Science Songbook&lt;/a&gt;.&lt;/p&gt;
5384 </description>
5385 </item>
5386
5387 <item>
5388 <title>Gratulerer med 19-årsdagen, Debian!</title>
5389 <link>http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html</link>
5390 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html</guid>
5391 <pubDate>Thu, 16 Aug 2012 11:20:00 +0200</pubDate>
5392 <description>&lt;p&gt;I dag fyller
5393 &lt;a href=&quot;http://www.debian.org/News/2012/20120813&quot;&gt;Debian-prosjektet 19
5394 år&lt;/a&gt;. Jeg har fulgt det de siste 12 årene, og er veldig glad for å kunne
5395 si gratulerer med dagen, Debian!&lt;/p&gt;
5396 </description>
5397 </item>
5398
5399 <item>
5400 <title>Song book for Computer Scientists</title>
5401 <link>http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html</link>
5402 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html</guid>
5403 <pubDate>Sun, 24 Jun 2012 13:30:00 +0200</pubDate>
5404 <description>&lt;p&gt;Many years ago, while studying Computer Science at the
5405 &lt;a href=&quot;http://www.uit.no/&quot;&gt;University of Tromsø&lt;/a&gt;, I started
5406 collecting computer related songs for use at parties. The original
5407 version was written in LaTeX, but a few years ago I got help from
5408 Håkon W. Lie, one of the inventors of W3C CSS, to convert it to HTML
5409 while keeping the ability to create a nice book in PDF format. I have
5410 not had time to maintain the book for a while now, and guess I should
5411 put it up on some public version control repository where others can
5412 help me extend and update the book. If anyone is volunteering to help
5413 me with this, send me an email. Also let me know if there are songs
5414 missing in my book.&lt;/p&gt;
5415
5416 &lt;p&gt;I have not mentioned the book on my blog so far, and it occured to
5417 me today that I really should let all my readers share the joys of
5418 singing out load about programming, computers and computer networks.
5419 Especially now that &lt;a href=&quot;http://debconf12.debconf.org/&quot;&gt;Debconf
5420 12&lt;/a&gt; is about to start (and I am not going). Want to sing? Check
5421 out &lt;a href=&quot;http://www.hungry.com/~pere/cs-songbook/&quot;&gt;Petter&#39;s
5422 Computer Science Songbook&lt;/a&gt;.
5423 </description>
5424 </item>
5425
5426 <item>
5427 <title>Automatically upgrading server firmware on Dell PowerEdge</title>
5428 <link>http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html</link>
5429 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html</guid>
5430 <pubDate>Mon, 21 Nov 2011 12:00:00 +0100</pubDate>
5431 <description>&lt;p&gt;At work we have heaps of servers. I believe the total count is
5432 around 1000 at the moment. To be able to get help from the vendors
5433 when something go wrong, we want to keep the firmware on the servers
5434 up to date. If the firmware isn&#39;t the latest and greatest, the
5435 vendors typically refuse to start debugging any problems until the
5436 firmware is upgraded. So before every reboot, we want to upgrade the
5437 firmware, and we would really like everyone handling servers at the
5438 university to do this themselves when they plan to reboot a machine.
5439 For that to happen we at the unix server admin group need to provide
5440 the tools to do so.&lt;/p&gt;
5441
5442 &lt;p&gt;To make firmware upgrading easier, I am working on a script to
5443 fetch and install the latest firmware for the servers we got. Most of
5444 our hardware are from Dell and HP, so I have focused on these servers
5445 so far. This blog post is about the Dell part.&lt;/P&gt;
5446
5447 &lt;p&gt;On the Dell FTP site I was lucky enough to find
5448 &lt;a href=&quot;ftp://ftp.us.dell.com/catalog/Catalog.xml.gz&quot;&gt;an XML file&lt;/a&gt;
5449 with firmware information for all 11th generation servers, listing
5450 which firmware should be used on a given model and where on the FTP
5451 site I can find it. Using a simple perl XML parser I can then
5452 download the shell scripts Dell provides to do firmware upgrades from
5453 within Linux and reboot when all the firmware is primed and ready to
5454 be activated on the first reboot.&lt;/p&gt;
5455
5456 &lt;p&gt;This is the Dell related fragment of the perl code I am working on.
5457 Are there anyone working on similar tools for firmware upgrading all
5458 servers at a site? Please get in touch and lets share resources.&lt;/p&gt;
5459
5460 &lt;p&gt;&lt;pre&gt;
5461 #!/usr/bin/perl
5462 use strict;
5463 use warnings;
5464 use File::Temp qw(tempdir);
5465 BEGIN {
5466 # Install needed RHEL packages if missing
5467 my %rhelmodules = (
5468 &#39;XML::Simple&#39; =&gt; &#39;perl-XML-Simple&#39;,
5469 );
5470 for my $module (keys %rhelmodules) {
5471 eval &quot;use $module;&quot;;
5472 if ($@) {
5473 my $pkg = $rhelmodules{$module};
5474 system(&quot;yum install -y $pkg&quot;);
5475 eval &quot;use $module;&quot;;
5476 }
5477 }
5478 }
5479 my $errorsto = &#39;pere@hungry.com&#39;;
5480
5481 upgrade_dell();
5482
5483 exit 0;
5484
5485 sub run_firmware_script {
5486 my ($opts, $script) = @_;
5487 unless ($script) {
5488 print STDERR &quot;fail: missing script name\n&quot;;
5489 exit 1
5490 }
5491 print STDERR &quot;Running $script\n\n&quot;;
5492
5493 if (0 == system(&quot;sh $script $opts&quot;)) { # FIXME correct exit code handling
5494 print STDERR &quot;success: firmware script ran succcessfully\n&quot;;
5495 } else {
5496 print STDERR &quot;fail: firmware script returned error\n&quot;;
5497 }
5498 }
5499
5500 sub run_firmware_scripts {
5501 my ($opts, @dirs) = @_;
5502 # Run firmware packages
5503 for my $dir (@dirs) {
5504 print STDERR &quot;info: Running scripts in $dir\n&quot;;
5505 opendir(my $dh, $dir) or die &quot;Unable to open directory $dir: $!&quot;;
5506 while (my $s = readdir $dh) {
5507 next if $s =~ m/^\.\.?/;
5508 run_firmware_script($opts, &quot;$dir/$s&quot;);
5509 }
5510 closedir $dh;
5511 }
5512 }
5513
5514 sub download {
5515 my $url = shift;
5516 print STDERR &quot;info: Downloading $url\n&quot;;
5517 system(&quot;wget --quiet \&quot;$url\&quot;&quot;);
5518 }
5519
5520 sub upgrade_dell {
5521 my @dirs;
5522 my $product = `dmidecode -s system-product-name`;
5523 chomp $product;
5524
5525 if ($product =~ m/PowerEdge/) {
5526
5527 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
5528 system(&#39;yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail&#39;);
5529
5530 my $tmpdir = tempdir(
5531 CLEANUP =&gt; 1
5532 );
5533 chdir($tmpdir);
5534 fetch_dell_fw(&#39;catalog/Catalog.xml.gz&#39;);
5535 system(&#39;gunzip Catalog.xml.gz&#39;);
5536 my @paths = fetch_dell_fw_list(&#39;Catalog.xml&#39;);
5537 # -q is quiet, disabling interactivity and reducing console output
5538 my $fwopts = &quot;-q&quot;;
5539 if (@paths) {
5540 for my $url (@paths) {
5541 fetch_dell_fw($url);
5542 }
5543 run_firmware_scripts($fwopts, $tmpdir);
5544 } else {
5545 print STDERR &quot;error: Unsupported Dell model &#39;$product&#39;.\n&quot;;
5546 print STDERR &quot;error: Please report to $errorsto.\n&quot;;
5547 }
5548 chdir(&#39;/&#39;);
5549 } else {
5550 print STDERR &quot;error: Unsupported Dell model &#39;$product&#39;.\n&quot;;
5551 print STDERR &quot;error: Please report to $errorsto.\n&quot;;
5552 }
5553 }
5554
5555 sub fetch_dell_fw {
5556 my $path = shift;
5557 my $url = &quot;ftp://ftp.us.dell.com/$path&quot;;
5558 download($url);
5559 }
5560
5561 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
5562 # firmware packages to download from Dell. Only work for Linux
5563 # machines and 11th generation Dell servers.
5564 sub fetch_dell_fw_list {
5565 my $filename = shift;
5566
5567 my $product = `dmidecode -s system-product-name`;
5568 chomp $product;
5569 my ($mybrand, $mymodel) = split(/\s+/, $product);
5570
5571 print STDERR &quot;Finding firmware bundles for $mybrand $mymodel\n&quot;;
5572
5573 my $xml = XMLin($filename);
5574 my @paths;
5575 for my $bundle (@{$xml-&gt;{SoftwareBundle}}) {
5576 my $brand = $bundle-&gt;{TargetSystems}-&gt;{Brand}-&gt;{Display}-&gt;{content};
5577 my $model = $bundle-&gt;{TargetSystems}-&gt;{Brand}-&gt;{Model}-&gt;{Display}-&gt;{content};
5578 my $oscode;
5579 if (&quot;ARRAY&quot; eq ref $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}) {
5580 $oscode = $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}[0]-&gt;{osCode};
5581 } else {
5582 $oscode = $bundle-&gt;{TargetOSes}-&gt;{OperatingSystem}-&gt;{osCode};
5583 }
5584 if ($mybrand eq $brand &amp;&amp; $mymodel eq $model &amp;&amp; &quot;LIN&quot; eq $oscode)
5585 {
5586 @paths = map { $_-&gt;{path} } @{$bundle-&gt;{Contents}-&gt;{Package}};
5587 }
5588 }
5589 for my $component (@{$xml-&gt;{SoftwareComponent}}) {
5590 my $componenttype = $component-&gt;{ComponentType}-&gt;{value};
5591
5592 # Drop application packages, only firmware and BIOS
5593 next if &#39;APAC&#39; eq $componenttype;
5594
5595 my $cpath = $component-&gt;{path};
5596 for my $path (@paths) {
5597 if ($cpath =~ m%/$path$%) {
5598 push(@paths, $cpath);
5599 }
5600 }
5601 }
5602 return @paths;
5603 }
5604 &lt;/pre&gt;
5605
5606 &lt;p&gt;The code is only tested on RedHat Enterprise Linux, but I suspect
5607 it could work on other platforms with some tweaking. Anyone know a
5608 index like Catalog.xml is available from HP for HP servers? At the
5609 moment I maintain a similar list manually and it is quickly getting
5610 outdated.&lt;/p&gt;
5611 </description>
5612 </item>
5613
5614 <item>
5615 <title>How is booting into runlevel 1 different from single user boots?</title>
5616 <link>http://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html</link>
5617 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html</guid>
5618 <pubDate>Thu, 4 Aug 2011 12:40:00 +0200</pubDate>
5619 <description>&lt;p&gt;Wouter Verhelst have some
5620 &lt;a href=&quot;http://grep.be/blog/en/retorts/pere_kubuntu_boot&quot;&gt;interesting
5621 comments and opinions&lt;/a&gt; on my blog post on
5622 &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
5623 need to clean up /etc/rcS.d/ in Debian&lt;/a&gt; and my blog post about
5624 &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
5625 default KDE desktop in Debian&lt;/a&gt;. I only have time to address one
5626 small piece of his comment now, and though it best to address the
5627 misunderstanding he bring forward:&lt;/p&gt;
5628
5629 &lt;p&gt;&lt;blockquote&gt;
5630 Currently, a system admin has four options: [...] boot to a
5631 single-user system (by adding &#39;single&#39; to the kernel command line;
5632 this runs rcS and rc1 scripts)
5633 &lt;/blockquote&gt;&lt;/p&gt;
5634
5635 &lt;p&gt;This make me believe Wouter believe booting into single user mode
5636 and booting into runlevel 1 is the same. I am not surprised he
5637 believe this, because it would make sense and is a quite sensible
5638 thing to believe. But because the boot in Debian is slightly broken,
5639 runlevel 1 do not work properly and it isn&#39;t the same as single user
5640 mode. I&#39;ll try to explain what is actually happing, but it is a bit
5641 hard to explain.&lt;/p&gt;
5642
5643 &lt;p&gt;Single user mode is defined like this in /etc/inittab:
5644 &quot;&lt;tt&gt;~~:S:wait:/sbin/sulogin&lt;/tt&gt;&quot;. This means the only thing that is
5645 executed in single user mode is sulogin. Single user mode is a boot
5646 state &quot;between&quot; the runlevels, and when booting into single user mode,
5647 only the scripts in /etc/rcS.d/ are executed before the init process
5648 enters the single user state. When switching to runlevel 1, the state
5649 is in fact not ending in runlevel 1, but it passes through runlevel 1
5650 and end up in the single user mode (see /etc/rc1.d/S03single, which
5651 runs &quot;init -t1 S&quot; to switch to single user mode at the end of runlevel
5652 1. It is confusing that the &#39;S&#39; (single user) init mode is not the
5653 mode enabled by /etc/rcS.d/ (which is more like the initial boot
5654 mode).&lt;/p&gt;
5655
5656 &lt;p&gt;This summary might make it clearer. When booting for the first
5657 time into single user mode, the following commands are executed:
5658 &quot;&lt;tt&gt;/etc/init.d/rc S; /sbin/sulogin&lt;/tt&gt;&quot;. When booting into
5659 runlevel 1, the following commands are executed: &quot;&lt;tt&gt;/etc/init.d/rc
5660 S; /etc/init.d/rc 1; /sbin/sulogin&lt;/tt&gt;&quot;. A problem show up when
5661 trying to continue after visiting single user mode. Not all services
5662 are started again as they should, causing the machine to end up in an
5663 unpredicatble state. This is why Debian admins recommend rebooting
5664 after visiting single user mode.&lt;/p&gt;
5665
5666 &lt;p&gt;A similar problem with runlevel 1 is caused by the amount of
5667 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
5668 to runlevel 1, the services started from /etc/rcS.d/ are not properly
5669 stopped when passing through the scripts in /etc/rc1.d/, and not
5670 started again when switching away from runlevel 1 to the runlevels
5671 2-5. I believe the problem is best fixed by moving all the scripts
5672 out of /etc/rcS.d/ that are not &lt;strong&gt;required&lt;/strong&gt; to get a
5673 functioning single user mode during boot.&lt;/p&gt;
5674
5675 &lt;p&gt;I have spent several years investigating the Debian boot system,
5676 and discovered this problem a few years ago. I suspect it originates
5677 from when sysvinit was introduced into Debian, a long time ago.&lt;/p&gt;
5678 </description>
5679 </item>
5680
5681 <item>
5682 <title>What should start from /etc/rcS.d/ in Debian? - almost nothing</title>
5683 <link>http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html</link>
5684 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html</guid>
5685 <pubDate>Sat, 30 Jul 2011 14:00:00 +0200</pubDate>
5686 <description>&lt;p&gt;In the Debian boot system, several packages include scripts that
5687 are started from /etc/rcS.d/. In fact, there is a bite more of them
5688 than make sense, and this causes a few problems. What kind of
5689 problems, you might ask. There are at least two problems. The first
5690 is that it is not possible to recover a machine after switching to
5691 runlevel 1. One need to actually reboot to get the machine back to
5692 the expected state. The other is that single user boot will sometimes
5693 run into problems because some of the subsystems are activated before
5694 the root login is presented, causing problems when trying to recover a
5695 machine from a problem in that subsystem. A minor additional point is
5696 that moving more scripts out of rcS.d/ and into the other rc#.d/
5697 directories will increase the amount of scripts that can run in
5698 parallel during boot, and thus decrease the boot time.&lt;/p&gt;
5699
5700 &lt;p&gt;So, which scripts should start from rcS.d/. In short, only the
5701 scripts that _have_ to execute before the root login prompt is
5702 presented during a single user boot should go there. Everything else
5703 should go into the numeric runlevels. This means things like
5704 lm-sensors, fuse and x11-common should not run from rcS.d, but from
5705 the numeric runlevels. Today in Debian, there are around 115 init.d
5706 scripts that are started from rcS.d/, and most of them should be moved
5707 out. Do your package have one of them? Please help us make single
5708 user and runlevel 1 better by moving it.&lt;/p&gt;
5709
5710 &lt;p&gt;Scripts setting up the screen, keyboard, system partitions
5711 etc. should still be started from rcS.d/, but there is for example no
5712 need to have the network enabled before the single user login prompt
5713 is presented.&lt;/p&gt;
5714
5715 &lt;p&gt;As always, things are not so easy to fix as they sound. To keep
5716 Debian systems working while scripts migrate and during upgrades, the
5717 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
5718 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
5719 and the next ones can only be moved when their dependencies have been
5720 moved first. This migration must be done sequentially while we ensure
5721 that the package system upgrade packages in the right order to keep
5722 the system state correct. This will require some coordination when it
5723 comes to network related packages, but most of the packages with
5724 scripts that should migrate do not have anything in rcS.d/ depending
5725 on them. Some packages have already been updated, like the sudo
5726 package, while others are still left to do. I wish I had time to work
5727 on this myself, but real live constrains make it unlikely that I will
5728 find time to push this forward.&lt;/p&gt;
5729 </description>
5730 </item>
5731
5732 <item>
5733 <title>What is missing in the Debian desktop, or why my parents use Kubuntu</title>
5734 <link>http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html</link>
5735 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html</guid>
5736 <pubDate>Fri, 29 Jul 2011 08:10:00 +0200</pubDate>
5737 <description>&lt;p&gt;While at Debconf11, I have several times during discussions
5738 mentioned the issues I believe should be improved in Debian for its
5739 desktop to be useful for more people. The use case for this is my
5740 parents, which are currently running Kubuntu which solve the
5741 issues.&lt;/p&gt;
5742
5743 &lt;p&gt;I suspect these four missing features are not very hard to
5744 implement. After all, they are present in Ubuntu, so if we wanted to
5745 do this in Debian we would have a source.&lt;/p&gt;
5746
5747 &lt;ol&gt;
5748
5749 &lt;li&gt;&lt;strong&gt;Simple GUI based upgrade of packages.&lt;/strong&gt; When there
5750 are new packages available for upgrades, a icon in the KDE status bar
5751 indicate this, and clicking on it will activate the simple upgrade
5752 tool to handle it. I have no problem guiding both of my parents
5753 through the process over the phone. If a kernel reboot is required,
5754 this too is indicated by the status bars and the upgrade tool. Last
5755 time I checked, nothing with the same features was working in KDE in
5756 Debian.&lt;/li&gt;
5757
5758 &lt;li&gt;&lt;strong&gt;Simple handling of missing Firefox browser
5759 plugins.&lt;/strong&gt; When the browser encounter a MIME type it do not
5760 currently have a handler for, it will ask the user if the system
5761 should search for a package that would add support for this MIME type,
5762 and if the user say yes, the APT sources will be searched for packages
5763 advertising the MIME type in their control file (visible in the
5764 Packages file in the APT archive). If one or more packages are found,
5765 it is a simple click of the mouse to add support for the missing mime
5766 type. If the package require the user to accept some non-free
5767 license, this is explained to the user. The entire process make it
5768 more clear to the user why something do not work in the browser, and
5769 make the chances higher for the user to blame the web page authors and
5770 not the browser for any missing features.&lt;/li&gt;
5771
5772 &lt;li&gt;&lt;strong&gt;Simple handling of missing multimedia codec/format
5773 handlers.&lt;/strong&gt; When the media players encounter a format or codec
5774 it is not supporting, a dialog pop up asking the user if the system
5775 should search for a package that would add support for it. This
5776 happen with things like MP3, Windows Media or H.264. The selection
5777 and installation procedure is very similar to the Firefox browser
5778 plugin handling. This is as far as I know implemented using a
5779 gstreamer hook. The end result is that the user easily get access to
5780 the codecs that are present from the APT archives available, while
5781 explaining more on why a given format is unsupported by Ubuntu.&lt;/li&gt;
5782
5783 &lt;li&gt;&lt;strong&gt;Better browser handling of some MIME types.&lt;/strong&gt; When
5784 displaying a text/plain file in my Debian browser, it will propose to
5785 start emacs to show it. If I remember correctly, when doing the same
5786 in Kunbutu it show the file as a text file in the browser. At least I
5787 know Opera will show text files within the browser. I much prefer the
5788 latter behaviour.&lt;/li&gt;
5789
5790 &lt;/ol&gt;
5791
5792 &lt;p&gt;There are other nice features as well, like the simplified suite
5793 upgrader, but given that I am the one mostly doing the dist-upgrade,
5794 it do not matter much.&lt;/p&gt;
5795
5796 &lt;p&gt;I really hope we could get these features in place for the next
5797 Debian release. It would require the coordinated effort of several
5798 maintainers, but would make the end user experience a lot better.&lt;/p&gt;
5799 </description>
5800 </item>
5801
5802 <item>
5803 <title>Perl modules used by FixMyStreet which are missing in Debian/Squeeze</title>
5804 <link>http://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html</link>
5805 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html</guid>
5806 <pubDate>Tue, 26 Jul 2011 12:25:00 +0200</pubDate>
5807 <description>&lt;p&gt;The Norwegian &lt;a href=&quot;http://www.fiksgatami.no/&quot;&gt;FiksGataMi&lt;/A&gt;
5808 site is build on Debian/Squeeze, and this platform was chosen because
5809 I am most familiar with Debian (being a Debian Developer for around 10
5810 years) because it is the latest stable Debian release which should get
5811 security support for a few years.&lt;/p&gt;
5812
5813 &lt;p&gt;The web service is written in Perl, and depend on some perl modules
5814 that are missing in Debian at the moment. It would be great if these
5815 modules were added to the Debian archive, allowing anyone to set up
5816 their own &lt;a href=&quot;http://www.fixmystreet.com&quot;&gt;FixMyStreet&lt;/a&gt; clone
5817 in their own country using only Debian packages. The list of modules
5818 missing in Debian/Squeeze isn&#39;t very long, and I hope the perl group
5819 will find time to package the 12 modules Catalyst::Plugin::SmartURI,
5820 Catalyst::Plugin::Unicode::Encoding, Catalyst::View::TT, Devel::Hide,
5821 Sort::Key, Statistics::Distributions, Template::Plugin::Comma,
5822 Template::Plugin::DateTime::Format, Term::Size::Any, Term::Size::Perl,
5823 URI::SmartURI and Web::Scraper to make the maintenance of FixMyStreet
5824 easier in the future.&lt;/p&gt;
5825
5826 &lt;p&gt;Thanks to the great tools in Debian, getting the missing modules
5827 installed on my server was a simple call to &#39;cpan2deb Module::Name&#39;
5828 and &#39;dpkg -i&#39; to install the resulting package. But this leave me
5829 with the responsibility of tracking security problems, which I really
5830 do not have time for.&lt;/p&gt;
5831 </description>
5832 </item>
5833
5834 <item>
5835 <title>A Norwegian FixMyStreet have kept me busy the last few weeks</title>
5836 <link>http://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html</link>
5837 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html</guid>
5838 <pubDate>Sun, 3 Apr 2011 22:50:00 +0200</pubDate>
5839 <description>&lt;p&gt;Here is a small update for my English readers. Most of my blog
5840 posts have been in Norwegian the last few weeks, so here is a short
5841 update in English.&lt;/p&gt;
5842
5843 &lt;p&gt;The kids still keep me too busy to get much free software work
5844 done, but I did manage to organise a project to get a Norwegian port
5845 of the British service
5846 &lt;a href=&quot;http://www.fixmystreet.com/&quot;&gt;FixMyStreet&lt;/a&gt; up and running,
5847 and it has been running for a month now. The entire project has been
5848 organised by me and two others. Around Christmas we gathered sponsors
5849 to fund the development work. In January I drafted a contract with
5850 &lt;a href=&quot;http://www.mysociety.org/&quot;&gt;mySociety&lt;/a&gt; on what to develop,
5851 and in February the development took place. Most of it involved
5852 converting the source to use GPS coordinates instead of British
5853 easting/northing, and the resulting code should be a lot easier to get
5854 running in any country by now. The Norwegian
5855 &lt;a href=&quot;http://www.fiksgatami.no/&quot;&gt;FiksGataMi&lt;/a&gt; is using
5856 &lt;a href=&quot;http://www.openstreetmap.org/&quot;&gt;OpenStreetmap&lt;/a&gt; as the map
5857 source and the source for administrative borders in Norway, and
5858 support for this had to be added/fixed.&lt;/p&gt;
5859
5860 &lt;p&gt;The Norwegian version went live March 3th, and we spent the weekend
5861 polishing the system before we announced it March 7th. The system is
5862 running on a KVM instance of Debian/Squeeze, and has seen almost 3000
5863 problem reports in a few weeks. Soon we hope to announce the Android
5864 and iPhone versions making it even easier to report problems with the
5865 public infrastructure.&lt;/p&gt;
5866
5867 &lt;p&gt;Perhaps something to consider for those of you in countries without
5868 such service?&lt;/p&gt;
5869 </description>
5870 </item>
5871
5872 <item>
5873 <title>Using NVD and CPE to track CVEs in locally maintained software</title>
5874 <link>http://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html</link>
5875 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html</guid>
5876 <pubDate>Fri, 28 Jan 2011 15:40:00 +0100</pubDate>
5877 <description>&lt;p&gt;The last few days I have looked at ways to track open security
5878 issues here at my work with the University of Oslo. My idea is that
5879 it should be possible to use the information about security issues
5880 available on the Internet, and check our locally
5881 maintained/distributed software against this information. It should
5882 allow us to verify that no known security issues are forgotten. The
5883 CVE database listing vulnerabilities seem like a great central point,
5884 and by using the package lists from Debian mapped to CVEs provided by
5885 the testing security team, I believed it should be possible to figure
5886 out which security holes were present in our free software
5887 collection.&lt;/p&gt;
5888
5889 &lt;p&gt;After reading up on the topic, it became obvious that the first
5890 building block is to be able to name software packages in a unique and
5891 consistent way across data sources. I considered several ways to do
5892 this, for example coming up with my own naming scheme like using URLs
5893 to project home pages or URLs to the Freshmeat entries, or using some
5894 existing naming scheme. And it seem like I am not the first one to
5895 come across this problem, as MITRE already proposed and implemented a
5896 solution. Enter the &lt;a href=&quot;http://cpe.mitre.org/index.html&quot;&gt;Common
5897 Platform Enumeration&lt;/a&gt; dictionary, a vocabulary for referring to
5898 software, hardware and other platform components. The CPE ids are
5899 mapped to CVEs in the &lt;a href=&quot;http://web.nvd.nist.gov/&quot;&gt;National
5900 Vulnerability Database&lt;/a&gt;, allowing me to look up know security
5901 issues for any CPE name. With this in place, all I need to do is to
5902 locate the CPE id for the software packages we use at the university.
5903 This is fairly trivial (I google for &#39;cve cpe $package&#39; and check the
5904 NVD entry if a CVE for the package exist).&lt;/p&gt;
5905
5906 &lt;p&gt;To give you an example. The GNU gzip source package have the CPE
5907 name cpe:/a:gnu:gzip. If the old version 1.3.3 was the package to
5908 check out, one could look up
5909 &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
5910 in NVD&lt;/a&gt; and get a list of 6 security holes with public CVE entries.
5911 The most recent one is
5912 &lt;a href=&quot;http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-0001&quot;&gt;CVE-2010-0001&lt;/a&gt;,
5913 and at the bottom of the NVD page for this vulnerability the complete
5914 list of affected versions is provided.&lt;/p&gt;
5915
5916 &lt;p&gt;The NVD database of CVEs is also available as a XML dump, allowing
5917 for offline processing of issues. Using this dump, I&#39;ve written a
5918 small script taking a list of CPEs as input and list all CVEs
5919 affecting the packages represented by these CPEs. One give it CPEs
5920 with version numbers as specified above and get a list of open
5921 security issues out.&lt;/p&gt;
5922
5923 &lt;p&gt;Of course for this approach to be useful, the quality of the NVD
5924 information need to be high. For that to happen, I believe as many as
5925 possible need to use and contribute to the NVD database. I notice
5926 RHEL is providing
5927 &lt;a href=&quot;https://www.redhat.com/security/data/metrics/rhsamapcpe.txt&quot;&gt;a
5928 map from CVE to CPE&lt;/a&gt;, indicating that they are using the CPE
5929 information. I&#39;m not aware of Debian and Ubuntu doing the same.&lt;/p&gt;
5930
5931 &lt;p&gt;To get an idea about the quality for free software, I spent some
5932 time making it possible to compare the CVE database from Debian with
5933 the CVE database in NVD. The result look fairly good, but there are
5934 some inconsistencies in NVD (same software package having several
5935 CPEs), and some inaccuracies (NVD not mentioning buggy packages that
5936 Debian believe are affected by a CVE). Hope to find time to improve
5937 the quality of NVD, but that require being able to get in touch with
5938 someone maintaining it. So far my three emails with questions and
5939 corrections have not seen any reply, but I hope contact can be
5940 established soon.&lt;/p&gt;
5941
5942 &lt;p&gt;An interesting application for CPEs is cross platform package
5943 mapping. It would be useful to know which packages in for example
5944 RHEL, OpenSuSe and Mandriva are missing from Debian and Ubuntu, and
5945 this would be trivial if all linux distributions provided CPE entries
5946 for their packages.&lt;/p&gt;
5947 </description>
5948 </item>
5949
5950 <item>
5951 <title>Which module is loaded for a given PCI and USB device?</title>
5952 <link>http://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html</link>
5953 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html</guid>
5954 <pubDate>Sun, 23 Jan 2011 00:20:00 +0100</pubDate>
5955 <description>&lt;p&gt;In the
5956 &lt;a href=&quot;http://packages.qa.debian.org/discover-data&quot;&gt;discover-data&lt;/a&gt;
5957 package in Debian, there is a script to report useful information
5958 about the running hardware for use when people report missing
5959 information. One part of this script that I find very useful when
5960 debugging hardware problems, is the part mapping loaded kernel module
5961 to the PCI device it claims. It allow me to quickly see if the kernel
5962 module I expect is driving the hardware I am struggling with. To see
5963 the output, make sure discover-data is installed and run
5964 &lt;tt&gt;/usr/share/bug/discover-data 3&gt;&amp;1&lt;/tt&gt;. The relevant output on
5965 one of my machines like this:&lt;/p&gt;
5966
5967 &lt;pre&gt;
5968 loaded modules:
5969 10de:03eb i2c_nforce2
5970 10de:03f1 ohci_hcd
5971 10de:03f2 ehci_hcd
5972 10de:03f0 snd_hda_intel
5973 10de:03ec pata_amd
5974 10de:03f6 sata_nv
5975 1022:1103 k8temp
5976 109e:036e bttv
5977 109e:0878 snd_bt87x
5978 11ab:4364 sky2
5979 &lt;/pre&gt;
5980
5981 &lt;p&gt;The code in question look like this, slightly modified for
5982 readability and to drop the output to file descriptor 3:&lt;/p&gt;
5983
5984 &lt;pre&gt;
5985 if [ -d /sys/bus/pci/devices/ ] ; then
5986 echo loaded pci modules:
5987 (
5988 cd /sys/bus/pci/devices/
5989 for address in * ; do
5990 if [ -d &quot;$address/driver/module&quot; ] ; then
5991 module=`cd $address/driver/module ; pwd -P | xargs basename`
5992 if grep -q &quot;^$module &quot; /proc/modules ; then
5993 address=$(echo $address |sed s/0000://)
5994 id=`lspci -n -s $address | tail -n 1 | awk &#39;{print $3}&#39;`
5995 echo &quot;$id $module&quot;
5996 fi
5997 fi
5998 done
5999 )
6000 echo
6001 fi
6002 &lt;/pre&gt;
6003
6004 &lt;p&gt;Similar code could be used to extract USB device module
6005 mappings:&lt;/p&gt;
6006
6007 &lt;pre&gt;
6008 if [ -d /sys/bus/usb/devices/ ] ; then
6009 echo loaded usb modules:
6010 (
6011 cd /sys/bus/usb/devices/
6012 for address in * ; do
6013 if [ -d &quot;$address/driver/module&quot; ] ; then
6014 module=`cd $address/driver/module ; pwd -P | xargs basename`
6015 if grep -q &quot;^$module &quot; /proc/modules ; then
6016 address=$(echo $address |sed s/0000://)
6017 id=$(lsusb -s $address | tail -n 1 | awk &#39;{print $6}&#39;)
6018 if [ &quot;$id&quot; ] ; then
6019 echo &quot;$id $module&quot;
6020 fi
6021 fi
6022 fi
6023 done
6024 )
6025 echo
6026 fi
6027 &lt;/pre&gt;
6028
6029 &lt;p&gt;This might perhaps be something to include in other tools as
6030 well.&lt;/p&gt;
6031 </description>
6032 </item>
6033
6034 <item>
6035 <title>How to test if a laptop is working with Linux</title>
6036 <link>http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html</link>
6037 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html</guid>
6038 <pubDate>Wed, 22 Dec 2010 14:55:00 +0100</pubDate>
6039 <description>&lt;p&gt;The last few days I have spent at work here at the &lt;a
6040 href=&quot;http://www.uio.no/&quot;&gt;University of Oslo&lt;/a&gt; testing if the new
6041 batch of computers will work with Linux. Every year for the last few
6042 years the university have organised shared bid of a few thousand
6043 computers, and this year HP won the bid. Two different desktops and
6044 five different laptops are on the list this year. We in the UNIX
6045 group want to know which one of these computers work well with RHEL
6046 and Ubuntu, the two Linux distributions we currently handle at the
6047 university.&lt;/p&gt;
6048
6049 &lt;p&gt;My test method is simple, and I share it here to get feedback and
6050 perhaps inspire others to test hardware as well. To test, I PXE
6051 install the OS version of choice, and log in as my normal user and run
6052 a few applications and plug in selected pieces of hardware. When
6053 something fail, I make a note about this in the test matrix and move
6054 on. If I have some spare time I try to report the bug to the OS
6055 vendor, but as I only have the machines for a short time, I rarely
6056 have the time to do this for all the problems I find.&lt;/p&gt;
6057
6058 &lt;p&gt;Anyway, to get to the point of this post. Here is the simple tests
6059 I perform on a new model.&lt;/p&gt;
6060
6061 &lt;ul&gt;
6062
6063 &lt;li&gt;Is PXE installation working? I&#39;m testing with RHEL6, Ubuntu Lucid
6064 and Ubuntu Maverik at the moment. If I feel like it, I also test with
6065 RHEL5 and Debian Edu/Squeeze.&lt;/li&gt;
6066
6067 &lt;li&gt;Is X.org working? If the graphical login screen show up after
6068 installation, X.org is working.&lt;/li&gt;
6069
6070 &lt;li&gt;Is hardware accelerated OpenGL working? Running glxgears (in
6071 package mesa-utils on Ubuntu) and writing down the frames per second
6072 reported by the program.&lt;/li&gt;
6073
6074 &lt;li&gt;Is sound working? With Gnome and KDE, a sound is played when
6075 logging in, and if I can hear this the test is successful. If there
6076 are several audio exits on the machine, I try them all and check if
6077 the Gnome/KDE audio mixer can control where to send the sound. I
6078 normally test this by playing
6079 &lt;a href=&quot;http://www.nuug.no/aktiviteter/20101012-chef/ &quot;&gt;a HTML5
6080 video&lt;/a&gt; in Firefox/Iceweasel.&lt;/li&gt;
6081
6082 &lt;li&gt;Is the USB subsystem working? I test this by plugging in a USB
6083 memory stick and see if Gnome/KDE notices this.&lt;/li&gt;
6084
6085 &lt;li&gt;Is the CD/DVD player working? I test this by inserting any CD/DVD
6086 I have lying around, and see if Gnome/KDE notices this.&lt;/li&gt;
6087
6088 &lt;li&gt;Is any built in camera working? Test using cheese, and see if a
6089 picture from the v4l device show up.&lt;/li&gt;
6090
6091 &lt;li&gt;Is bluetooth working? Use the Gnome/KDE browsing tool to see if
6092 any bluetooth devices are discovered. In my office, I normally see a
6093 few.&lt;/li&gt;
6094
6095 &lt;li&gt;For laptops, is the SD or Compaq Flash reader working. I have
6096 memory modules lying around, and stick them in and see if Gnome/KDE
6097 notice this.&lt;/li&gt;
6098
6099 &lt;li&gt;For laptops, is suspend/hibernate working? I&#39;m testing if the
6100 special button work, and if the laptop continue to work after
6101 resume.&lt;/li&gt;
6102
6103 &lt;li&gt;For laptops, is the extra buttons working, like audio level,
6104 adjusting background light, switching on/off external video output,
6105 switching on/off wifi, bluetooth, etc? The set of buttons differ from
6106 laptop to laptop, so I just write down which are working and which are
6107 not.&lt;/li&gt;
6108
6109 &lt;li&gt;Some laptops have smart card readers, finger print readers,
6110 acceleration sensors etc. I rarely test these, as I do not know how
6111 to quickly test if they are working or not, so I only document their
6112 existence.&lt;/li&gt;
6113
6114 &lt;/ul&gt;
6115
6116 &lt;p&gt;By now I suspect you are really curious what the test results are
6117 for the HP machines I am testing. I&#39;m not done yet, so I will report
6118 the test results later. For now I can report that HP 8100 Elite work
6119 fine, and hibernation fail with HP EliteBook 8440p on Ubuntu Lucid,
6120 and audio fail on RHEL6. Ubuntu Maverik worked with 8440p. As you
6121 can see, I have most machines left to test. One interesting
6122 observation is that Ubuntu Lucid has almost twice the frame rate than
6123 RHEL6 with glxgears. No idea why.&lt;/p&gt;
6124 </description>
6125 </item>
6126
6127 <item>
6128 <title>Some thoughts on BitCoins</title>
6129 <link>http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html</link>
6130 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html</guid>
6131 <pubDate>Sat, 11 Dec 2010 15:10:00 +0100</pubDate>
6132 <description>&lt;p&gt;As I continue to explore
6133 &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;BitCoin&lt;/a&gt;, I&#39;ve starting to wonder
6134 what properties the system have, and how it will be affected by laws
6135 and regulations here in Norway. Here are some random notes.&lt;/p&gt;
6136
6137 &lt;p&gt;One interesting thing to note is that since the transactions are
6138 verified using a peer to peer network, all details about a transaction
6139 is known to everyone. This means that if a BitCoin address has been
6140 published like I did with mine in my initial post about BitCoin, it is
6141 possible for everyone to see how many BitCoins have been transfered to
6142 that address. There is even a web service to look at the details for
6143 all transactions. There I can see that my address
6144 &lt;a href=&quot;http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;
6145 have received 16.06 Bitcoin, the
6146 &lt;a href=&quot;http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3&quot;&gt;1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3&lt;/a&gt;
6147 address of Simon Phipps have received 181.97 BitCoin and the address
6148 &lt;a href=&quot;http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt&quot;&gt;1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt&lt;/A&gt;
6149 of EFF have received 2447.38 BitCoins so far. Thank you to each and
6150 every one of you that donated bitcoins to support my activity. The
6151 fact that anyone can see how much money was transfered to a given
6152 address make it more obvious why the BitCoin community recommend to
6153 generate and hand out a new address for each transaction. I&#39;m told
6154 there is no way to track which addresses belong to a given person or
6155 organisation without the person or organisation revealing it
6156 themselves, as Simon, EFF and I have done.&lt;/p&gt;
6157
6158 &lt;p&gt;In Norway, and in most other countries, there are laws and
6159 regulations limiting how much money one can transfer across the border
6160 without declaring it. There are money laundering, tax and accounting
6161 laws and regulations I would expect to apply to the use of BitCoin.
6162 If the Skolelinux foundation
6163 (&lt;a href=&quot;http://linuxiskolen.no/slxdebianlabs/donations.html&quot;&gt;SLX
6164 Debian Labs&lt;/a&gt;) were to accept donations in BitCoin in addition to
6165 normal bank transfers like EFF is doing, how should this be accounted?
6166 Given that it is impossible to know if money can cross the border or
6167 not, should everything or nothing be declared? What exchange rate
6168 should be used when calculating taxes? Would receivers have to pay
6169 income tax if the foundation were to pay Skolelinux contributors in
6170 BitCoin? I have no idea, but it would be interesting to know.&lt;/p&gt;
6171
6172 &lt;p&gt;For a currency to be useful and successful, it must be trusted and
6173 accepted by a lot of users. It must be possible to get easy access to
6174 the currency (as a wage or using currency exchanges), and it must be
6175 easy to spend it. At the moment BitCoin seem fairly easy to get
6176 access to, but there are very few places to spend it. I am not really
6177 a regular user of any of the vendor types currently accepting BitCoin,
6178 so I wonder when my kind of shop would start accepting BitCoins. I
6179 would like to buy electronics, travels and subway tickets, not herbs
6180 and books. :) The currency is young, and this will improve over time
6181 if it become popular, but I suspect regular banks will start to lobby
6182 to get BitCoin declared illegal if it become popular. I&#39;m sure they
6183 will claim it is helping fund terrorism and money laundering (which
6184 probably would be true, as is any currency in existence), but I
6185 believe the problems should be solved elsewhere and not by blaming
6186 currencies.&lt;/p&gt;
6187
6188 &lt;p&gt;The process of creating new BitCoins is called mining, and it is
6189 CPU intensive process that depend on a bit of luck as well (as one is
6190 competing against all the other miners currently spending CPU cycles
6191 to see which one get the next lump of cash). The &quot;winner&quot; get 50
6192 BitCoin when this happen. Yesterday I came across the obvious way to
6193 join forces to increase ones changes of getting at least some coins,
6194 by coordinating the work on mining BitCoins across several machines
6195 and people, and sharing the result if one is lucky and get the 50
6196 BitCoins. Check out
6197 &lt;a href=&quot;http://www.bluishcoder.co.nz/bitcoin-pool/&quot;&gt;BitCoin Pool&lt;/a&gt;
6198 if this sounds interesting. I have not had time to try to set up a
6199 machine to participate there yet, but have seen that running on ones
6200 own for a few days have not yield any BitCoins througth mining
6201 yet.&lt;/p&gt;
6202
6203 &lt;p&gt;Update 2010-12-15: Found an &lt;a
6204 href=&quot;http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi&quot;&gt;interesting
6205 criticism&lt;/a&gt; of bitcoin. Not quite sure how valid it is, but thought
6206 it was interesting to read. The arguments presented seem to be
6207 equally valid for gold, which was used as a currency for many years.&lt;/p&gt;
6208 </description>
6209 </item>
6210
6211 <item>
6212 <title>Now accepting bitcoins - anonymous and distributed p2p crypto-money</title>
6213 <link>http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html</link>
6214 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html</guid>
6215 <pubDate>Fri, 10 Dec 2010 08:20:00 +0100</pubDate>
6216 <description>&lt;p&gt;With this weeks lawless
6217 &lt;a href=&quot;http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html&quot;&gt;governmental
6218 attacks&lt;/a&gt; on Wikileak and
6219 &lt;a href=&quot;http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech&quot;&gt;free
6220 speech&lt;/a&gt;, it has become obvious that PayPal, visa and mastercard can
6221 not be trusted to handle money transactions.
6222 A blog post from
6223 &lt;a href=&quot;http://webmink.com/2010/12/06/now-accepting-bitcoin/&quot;&gt;Simon
6224 Phipps on bitcoin&lt;/a&gt; reminded me about a project that a friend of
6225 mine mentioned earlier. I decided to follow Simon&#39;s example, and get
6226 involved with &lt;a href=&quot;http://www.bitcoin.org/&quot;&gt;BitCoin&lt;/a&gt;. I got
6227 some help from my friend to get it all running, and he even handed me
6228 some bitcoins to get started. I even donated a few bitcoins to Simon
6229 for helping me remember BitCoin.&lt;/p&gt;
6230
6231 &lt;p&gt;So, what is bitcoins, you probably wonder? It is a digital
6232 crypto-currency, decentralised and handled using peer-to-peer
6233 networks. It allows anonymous transactions and prohibits central
6234 control over the transactions, making it impossible for governments
6235 and companies alike to block donations and other transactions. The
6236 source is free software, and while the key dependency wxWidgets 2.9
6237 for the graphical user interface is missing in Debian, the command
6238 line client builds just fine. Hopefully Jonas
6239 &lt;a href=&quot;http://bugs.debian.org/578157&quot;&gt;will get the package into
6240 Debian&lt;/a&gt; soon.&lt;/p&gt;
6241
6242 &lt;p&gt;Bitcoins can be converted to other currencies, like USD and EUR.
6243 There are &lt;a href=&quot;http://www.bitcoin.org/trade&quot;&gt;companies accepting
6244 bitcoins&lt;/a&gt; when selling services and goods, and there are even
6245 currency &quot;stock&quot; markets where the exchange rate is decided. There
6246 are not many users so far, but the concept seems promising. If you
6247 want to get started and lack a friend with any bitcoins to spare,
6248 you can even get
6249 &lt;a href=&quot;https://freebitcoins.appspot.com/&quot;&gt;some for free&lt;/a&gt; (0.05
6250 bitcoin at the time of writing). Use
6251 &lt;a href=&quot;http://www.bitcoinwatch.com/&quot;&gt;BitcoinWatch&lt;/a&gt; to keep an eye
6252 on the current exchange rates.&lt;/p&gt;
6253
6254 &lt;p&gt;As an experiment, I have decided to set up bitcoind on one of my
6255 machines. If you want to support my activity, please send Bitcoin
6256 donations to the address
6257 &lt;b&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/b&gt;. Thank you!&lt;/p&gt;
6258 </description>
6259 </item>
6260
6261 <item>
6262 <title>Why isn&#39;t Debian Edu using VLC?</title>
6263 <link>http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html</link>
6264 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html</guid>
6265 <pubDate>Sat, 27 Nov 2010 11:30:00 +0100</pubDate>
6266 <description>&lt;p&gt;In the latest issue of Linux Journal, the readers choices were
6267 presented, and the winner among the multimedia player were VLC.
6268 Personally, I like VLC, and it is my player of choice when I first try
6269 to play a video file or stream. Only if VLC fail will I drag out
6270 gmplayer to see if it can do better. The reason is mostly the failure
6271 model and trust. When VLC fail, it normally pop up a error message
6272 reporting the problem. When mplayer fail, it normally segfault or
6273 just hangs. The latter failure mode drain my trust in the program.&lt;p&gt;
6274
6275 &lt;p&gt;But even if VLC is my player of choice, we have choosen to use
6276 mplayer in &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian
6277 Edu/Skolelinux&lt;/a&gt;. The reason is simple. We need a good browser
6278 plugin to play web videos seamlessly, and the VLC browser plugin is
6279 not very good. For example, it lack in-line control buttons, so there
6280 is no way for the user to pause the video. Also, when I
6281 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;last
6282 tested the browser plugins&lt;/a&gt; available in Debian, the VLC plugin
6283 failed on several video pages where mplayer based plugins worked. If
6284 the browser plugin for VLC was as good as the gecko-mediaplayer
6285 package (which uses mplayer), we would switch.&lt;/P&gt;
6286
6287 &lt;p&gt;While VLC is a good player, its user interface is slightly
6288 annoying. The most annoying feature is its inconsistent use of
6289 keyboard shortcuts. When the player is in full screen mode, its
6290 shortcuts are different from when it is playing the video in a window.
6291 For example, space only work as pause when in full screen mode. I
6292 wish it had consisten shortcuts and that space also would work when in
6293 window mode. Another nice shortcut in gmplayer is [enter] to restart
6294 the current video. It is very nice when playing short videos from the
6295 web and want to restart it when new people arrive to have a look at
6296 what is going on.&lt;/p&gt;
6297 </description>
6298 </item>
6299
6300 <item>
6301 <title>Lenny-&gt;Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove</title>
6302 <link>http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html</link>
6303 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html</guid>
6304 <pubDate>Mon, 22 Nov 2010 14:15:00 +0100</pubDate>
6305 <description>&lt;p&gt;Michael Biebl suggested to me on IRC, that I changed my automated
6306 upgrade testing of the
6307 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;Lenny
6308 Gnome and KDE Desktop&lt;/a&gt; to do &lt;tt&gt;apt-get autoremove&lt;/tt&gt; when using apt-get.
6309 This seem like a very good idea, so I adjusted by test scripts and
6310 can now present the updated result from today:&lt;/p&gt;
6311
6312 &lt;p&gt;This is for Gnome:&lt;/p&gt;
6313
6314 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
6315
6316 &lt;blockquote&gt;&lt;p&gt;
6317 apache2.2-bin
6318 aptdaemon
6319 baobab
6320 binfmt-support
6321 browser-plugin-gnash
6322 cheese-common
6323 cli-common
6324 cups-pk-helper
6325 dmz-cursor-theme
6326 empathy
6327 empathy-common
6328 freedesktop-sound-theme
6329 freeglut3
6330 gconf-defaults-service
6331 gdm-themes
6332 gedit-plugins
6333 geoclue
6334 geoclue-hostip
6335 geoclue-localnet
6336 geoclue-manual
6337 geoclue-yahoo
6338 gnash
6339 gnash-common
6340 gnome
6341 gnome-backgrounds
6342 gnome-cards-data
6343 gnome-codec-install
6344 gnome-core
6345 gnome-desktop-environment
6346 gnome-disk-utility
6347 gnome-screenshot
6348 gnome-search-tool
6349 gnome-session-canberra
6350 gnome-system-log
6351 gnome-themes-extras
6352 gnome-themes-more
6353 gnome-user-share
6354 gstreamer0.10-fluendo-mp3
6355 gstreamer0.10-tools
6356 gtk2-engines
6357 gtk2-engines-pixbuf
6358 gtk2-engines-smooth
6359 hamster-applet
6360 libapache2-mod-dnssd
6361 libapr1
6362 libaprutil1
6363 libaprutil1-dbd-sqlite3
6364 libaprutil1-ldap
6365 libart2.0-cil
6366 libboost-date-time1.42.0
6367 libboost-python1.42.0
6368 libboost-thread1.42.0
6369 libchamplain-0.4-0
6370 libchamplain-gtk-0.4-0
6371 libcheese-gtk18
6372 libclutter-gtk-0.10-0
6373 libcryptui0
6374 libdiscid0
6375 libelf1
6376 libepc-1.0-2
6377 libepc-common
6378 libepc-ui-1.0-2
6379 libfreerdp-plugins-standard
6380 libfreerdp0
6381 libgconf2.0-cil
6382 libgdata-common
6383 libgdata7
6384 libgdu-gtk0
6385 libgee2
6386 libgeoclue0
6387 libgexiv2-0
6388 libgif4
6389 libglade2.0-cil
6390 libglib2.0-cil
6391 libgmime2.4-cil
6392 libgnome-vfs2.0-cil
6393 libgnome2.24-cil
6394 libgnomepanel2.24-cil
6395 libgpod-common
6396 libgpod4
6397 libgtk2.0-cil
6398 libgtkglext1
6399 libgtksourceview2.0-common
6400 libmono-addins-gui0.2-cil
6401 libmono-addins0.2-cil
6402 libmono-cairo2.0-cil
6403 libmono-corlib2.0-cil
6404 libmono-i18n-west2.0-cil
6405 libmono-posix2.0-cil
6406 libmono-security2.0-cil
6407 libmono-sharpzip2.84-cil
6408 libmono-system2.0-cil
6409 libmtp8
6410 libmusicbrainz3-6
6411 libndesk-dbus-glib1.0-cil
6412 libndesk-dbus1.0-cil
6413 libopal3.6.8
6414 libpolkit-gtk-1-0
6415 libpt2.6.7
6416 libpython2.6
6417 librpm1
6418 librpmio1
6419 libsdl1.2debian
6420 libsrtp0
6421 libssh-4
6422 libtelepathy-farsight0
6423 libtelepathy-glib0
6424 libtidy-0.99-0
6425 media-player-info
6426 mesa-utils
6427 mono-2.0-gac
6428 mono-gac
6429 mono-runtime
6430 nautilus-sendto
6431 nautilus-sendto-empathy
6432 p7zip-full
6433 pkg-config
6434 python-aptdaemon
6435 python-aptdaemon-gtk
6436 python-axiom
6437 python-beautifulsoup
6438 python-bugbuddy
6439 python-clientform
6440 python-coherence
6441 python-configobj
6442 python-crypto
6443 python-cupshelpers
6444 python-elementtree
6445 python-epsilon
6446 python-evolution
6447 python-feedparser
6448 python-gdata
6449 python-gdbm
6450 python-gst0.10
6451 python-gtkglext1
6452 python-gtksourceview2
6453 python-httplib2
6454 python-louie
6455 python-mako
6456 python-markupsafe
6457 python-mechanize
6458 python-nevow
6459 python-notify
6460 python-opengl
6461 python-openssl
6462 python-pam
6463 python-pkg-resources
6464 python-pyasn1
6465 python-pysqlite2
6466 python-rdflib
6467 python-serial
6468 python-tagpy
6469 python-twisted-bin
6470 python-twisted-conch
6471 python-twisted-core
6472 python-twisted-web
6473 python-utidylib
6474 python-webkit
6475 python-xdg
6476 python-zope.interface
6477 remmina
6478 remmina-plugin-data
6479 remmina-plugin-rdp
6480 remmina-plugin-vnc
6481 rhythmbox-plugin-cdrecorder
6482 rhythmbox-plugins
6483 rpm-common
6484 rpm2cpio
6485 seahorse-plugins
6486 shotwell
6487 software-center
6488 system-config-printer-udev
6489 telepathy-gabble
6490 telepathy-mission-control-5
6491 telepathy-salut
6492 tomboy
6493 totem
6494 totem-coherence
6495 totem-mozilla
6496 totem-plugins
6497 transmission-common
6498 xdg-user-dirs
6499 xdg-user-dirs-gtk
6500 xserver-xephyr
6501 &lt;/p&gt;&lt;/blockquote&gt;
6502
6503 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
6504
6505 &lt;blockquote&gt;&lt;p&gt;
6506 cheese
6507 ekiga
6508 eog
6509 epiphany-extensions
6510 evolution-exchange
6511 fast-user-switch-applet
6512 file-roller
6513 gcalctool
6514 gconf-editor
6515 gdm
6516 gedit
6517 gedit-common
6518 gnome-games
6519 gnome-games-data
6520 gnome-nettool
6521 gnome-system-tools
6522 gnome-themes
6523 gnuchess
6524 gucharmap
6525 guile-1.8-libs
6526 libavahi-ui0
6527 libdmx1
6528 libgalago3
6529 libgtk-vnc-1.0-0
6530 libgtksourceview2.0-0
6531 liblircclient0
6532 libsdl1.2debian-alsa
6533 libspeexdsp1
6534 libsvga1
6535 rhythmbox
6536 seahorse
6537 sound-juicer
6538 system-config-printer
6539 totem-common
6540 transmission-gtk
6541 vinagre
6542 vino
6543 &lt;/p&gt;&lt;/blockquote&gt;
6544
6545 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
6546
6547 &lt;blockquote&gt;&lt;p&gt;
6548 gstreamer0.10-gnomevfs
6549 &lt;/p&gt;&lt;/blockquote&gt;
6550
6551 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
6552
6553 &lt;blockquote&gt;&lt;p&gt;
6554 [nothing]
6555 &lt;/p&gt;&lt;/blockquote&gt;
6556
6557 &lt;p&gt;This is for KDE:&lt;/p&gt;
6558
6559 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
6560
6561 &lt;blockquote&gt;&lt;p&gt;
6562 ksmserver
6563 &lt;/p&gt;&lt;/blockquote&gt;
6564
6565 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
6566
6567 &lt;blockquote&gt;&lt;p&gt;
6568 kwin
6569 network-manager-kde
6570 &lt;/p&gt;&lt;/blockquote&gt;
6571
6572 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
6573
6574 &lt;blockquote&gt;&lt;p&gt;
6575 arts
6576 dolphin
6577 freespacenotifier
6578 google-gadgets-gst
6579 google-gadgets-xul
6580 kappfinder
6581 kcalc
6582 kcharselect
6583 kde-core
6584 kde-plasma-desktop
6585 kde-standard
6586 kde-window-manager
6587 kdeartwork
6588 kdeartwork-emoticons
6589 kdeartwork-style
6590 kdeartwork-theme-icon
6591 kdebase
6592 kdebase-apps
6593 kdebase-workspace
6594 kdebase-workspace-bin
6595 kdebase-workspace-data
6596 kdeeject
6597 kdelibs
6598 kdeplasma-addons
6599 kdeutils
6600 kdewallpapers
6601 kdf
6602 kfloppy
6603 kgpg
6604 khelpcenter4
6605 kinfocenter
6606 konq-plugins-l10n
6607 konqueror-nsplugins
6608 kscreensaver
6609 kscreensaver-xsavers
6610 ktimer
6611 kwrite
6612 libgle3
6613 libkde4-ruby1.8
6614 libkonq5
6615 libkonq5-templates
6616 libnetpbm10
6617 libplasma-ruby
6618 libplasma-ruby1.8
6619 libqt4-ruby1.8
6620 marble-data
6621 marble-plugins
6622 netpbm
6623 nuvola-icon-theme
6624 plasma-dataengines-workspace
6625 plasma-desktop
6626 plasma-desktopthemes-artwork
6627 plasma-runners-addons
6628 plasma-scriptengine-googlegadgets
6629 plasma-scriptengine-python
6630 plasma-scriptengine-qedje
6631 plasma-scriptengine-ruby
6632 plasma-scriptengine-webkit
6633 plasma-scriptengines
6634 plasma-wallpapers-addons
6635 plasma-widget-folderview
6636 plasma-widget-networkmanagement
6637 ruby
6638 sweeper
6639 update-notifier-kde
6640 xscreensaver-data-extra
6641 xscreensaver-gl
6642 xscreensaver-gl-extra
6643 xscreensaver-screensaver-bsod
6644 &lt;/p&gt;&lt;/blockquote&gt;
6645
6646 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
6647
6648 &lt;blockquote&gt;&lt;p&gt;
6649 ark
6650 google-gadgets-common
6651 google-gadgets-qt
6652 htdig
6653 kate
6654 kdebase-bin
6655 kdebase-data
6656 kdepasswd
6657 kfind
6658 klipper
6659 konq-plugins
6660 konqueror
6661 ksysguard
6662 ksysguardd
6663 libarchive1
6664 libcln6
6665 libeet1
6666 libeina-svn-06
6667 libggadget-1.0-0b
6668 libggadget-qt-1.0-0b
6669 libgps19
6670 libkdecorations4
6671 libkephal4
6672 libkonq4
6673 libkonqsidebarplugin4a
6674 libkscreensaver5
6675 libksgrd4
6676 libksignalplotter4
6677 libkunitconversion4
6678 libkwineffects1a
6679 libmarblewidget4
6680 libntrack-qt4-1
6681 libntrack0
6682 libplasma-geolocation-interface4
6683 libplasmaclock4a
6684 libplasmagenericshell4
6685 libprocesscore4a
6686 libprocessui4a
6687 libqalculate5
6688 libqedje0a
6689 libqtruby4shared2
6690 libqzion0a
6691 libruby1.8
6692 libscim8c2a
6693 libsmokekdecore4-3
6694 libsmokekdeui4-3
6695 libsmokekfile3
6696 libsmokekhtml3
6697 libsmokekio3
6698 libsmokeknewstuff2-3
6699 libsmokeknewstuff3-3
6700 libsmokekparts3
6701 libsmokektexteditor3
6702 libsmokekutils3
6703 libsmokenepomuk3
6704 libsmokephonon3
6705 libsmokeplasma3
6706 libsmokeqtcore4-3
6707 libsmokeqtdbus4-3
6708 libsmokeqtgui4-3
6709 libsmokeqtnetwork4-3
6710 libsmokeqtopengl4-3
6711 libsmokeqtscript4-3
6712 libsmokeqtsql4-3
6713 libsmokeqtsvg4-3
6714 libsmokeqttest4-3
6715 libsmokeqtuitools4-3
6716 libsmokeqtwebkit4-3
6717 libsmokeqtxml4-3
6718 libsmokesolid3
6719 libsmokesoprano3
6720 libtaskmanager4a
6721 libtidy-0.99-0
6722 libweather-ion4a
6723 libxklavier16
6724 libxxf86misc1
6725 okteta
6726 oxygencursors
6727 plasma-dataengines-addons
6728 plasma-scriptengine-superkaramba
6729 plasma-widget-lancelot
6730 plasma-widgets-addons
6731 plasma-widgets-workspace
6732 polkit-kde-1
6733 ruby1.8
6734 systemsettings
6735 update-notifier-common
6736 &lt;/p&gt;&lt;/blockquote&gt;
6737
6738 &lt;p&gt;Running apt-get autoremove made the results using apt-get and
6739 aptitude a bit more similar, but there are still quite a lott of
6740 differences. I have no idea what packages should be installed after
6741 the upgrade, but hope those that do can have a look.&lt;/p&gt;
6742 </description>
6743 </item>
6744
6745 <item>
6746 <title>Migrating Xen virtual machines using LVM to KVM using disk images</title>
6747 <link>http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html</link>
6748 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html</guid>
6749 <pubDate>Mon, 22 Nov 2010 11:20:00 +0100</pubDate>
6750 <description>&lt;p&gt;Most of the computers in use by the
6751 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu/Skolelinux project&lt;/a&gt;
6752 are virtual machines. And they have been Xen machines running on a
6753 fairly old IBM eserver xseries 345 machine, and we wanted to migrate
6754 them to KVM on a newer Dell PowerEdge 2950 host machine. This was a
6755 bit harder that it could have been, because we set up the Xen virtual
6756 machines to get the virtual partitions from LVM, which as far as I
6757 know is not supported by KVM. So to migrate, we had to convert
6758 several LVM logical volumes to partitions on a virtual disk file.&lt;/p&gt;
6759
6760 &lt;p&gt;I found
6761 &lt;a href=&quot;http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM&quot;&gt;a
6762 nice recipe&lt;/a&gt; to do this, and wrote the following script to do the
6763 migration. It uses qemu-img from the qemu package to make the disk
6764 image, parted to partition it, losetup and kpartx to present the disk
6765 image partions as devices, and dd to copy the data. I NFS mounted the
6766 new servers storage area on the old server to do the migration.&lt;/p&gt;
6767
6768 &lt;pre&gt;
6769 #!/bin/sh
6770
6771 # Based on
6772 # http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
6773
6774 set -e
6775 set -x
6776
6777 if [ -z &quot;$1&quot; ] ; then
6778 echo &quot;Usage: $0 &amp;lt;hostname&amp;gt;&quot;
6779 exit 1
6780 else
6781 host=&quot;$1&quot;
6782 fi
6783
6784 if [ ! -e /dev/vg_data/$host-disk ] ; then
6785 echo &quot;error: unable to find LVM volume for $host&quot;
6786 exit 1
6787 fi
6788
6789 # Partitions need to be a bit bigger than the LVM LVs. not sure why.
6790 disksize=$( lvs --units m | grep $host-disk | awk &#39;{sum = sum + $4} END { print int(sum * 1.05) }&#39;)
6791 swapsize=$( lvs --units m | grep $host-swap | awk &#39;{sum = sum + $4} END { print int(sum * 1.05) }&#39;)
6792 totalsize=$(( ( $disksize + $swapsize ) ))
6793
6794 img=$host.img
6795 #dd if=/dev/zero of=$img bs=1M count=$(( $disksize + $swapsize ))
6796 qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
6797
6798 parted $img mklabel msdos
6799 parted $img mkpart primary linux-swap 0 $disksize
6800 parted $img mkpart primary ext2 $disksize $totalsize
6801 parted $img set 1 boot on
6802
6803 modprobe dm-mod
6804 losetup /dev/loop0 $img
6805 kpartx -a /dev/loop0
6806
6807 dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=1M
6808 fsck.ext3 -f /dev/mapper/loop0p1 || true
6809 mkswap /dev/mapper/loop0p2
6810
6811 kpartx -d /dev/loop0
6812 losetup -d /dev/loop0
6813 &lt;/pre&gt;
6814
6815 &lt;p&gt;The script is perhaps so simple that it is not copyrightable, but
6816 if it is, it is licenced using GPL v2 or later at your discretion.&lt;/p&gt;
6817
6818 &lt;p&gt;After doing this, I booted a Debian CD in rescue mode in KVM with
6819 the new disk image attached, installed grub-pc and linux-image-686 and
6820 set up grub to boot from the disk image. After this, the KVM machines
6821 seem to work just fine.&lt;/p&gt;
6822 </description>
6823 </item>
6824
6825 <item>
6826 <title>Lenny-&gt;Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop</title>
6827 <link>http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html</link>
6828 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html</guid>
6829 <pubDate>Sat, 20 Nov 2010 22:50:00 +0100</pubDate>
6830 <description>&lt;p&gt;I&#39;m still running upgrade testing of the
6831 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;Lenny
6832 Gnome and KDE Desktop&lt;/a&gt;, but have not had time to spend on reporting the
6833 status. Here is a short update based on a test I ran 20101118.&lt;/p&gt;
6834
6835 &lt;p&gt;I still do not know what a correct migration should look like, so I
6836 report any differences between apt and aptitude and hope someone else
6837 can see if anything should be changed.&lt;/p&gt;
6838
6839 &lt;p&gt;This is for Gnome:&lt;/p&gt;
6840
6841 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
6842
6843 &lt;blockquote&gt;&lt;p&gt;
6844 apache2.2-bin aptdaemon at-spi baobab binfmt-support
6845 browser-plugin-gnash cheese-common cli-common cpp-4.3 cups-pk-helper
6846 dmz-cursor-theme empathy empathy-common finger
6847 freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
6848 gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
6849 geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
6850 gnome-cards-data gnome-codec-install gnome-core
6851 gnome-desktop-environment gnome-disk-utility gnome-screenshot
6852 gnome-search-tool gnome-session-canberra gnome-spell
6853 gnome-system-log gnome-themes-extras gnome-themes-more
6854 gnome-user-share gs-common gstreamer0.10-fluendo-mp3
6855 gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
6856 gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
6857 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
6858 libart2.0-cil libatspi1.0-0 libboost-date-time1.42.0
6859 libboost-python1.42.0 libboost-thread1.42.0 libchamplain-0.4-0
6860 libchamplain-gtk-0.4-0 libcheese-gtk18 libclutter-gtk-0.10-0
6861 libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-1.0-2
6862 libepc-common libepc-ui-1.0-2 libfreerdp-plugins-standard
6863 libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
6864 libgdl-1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-0 libgif4
6865 libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
6866 libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
6867 libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
6868 libgtk2.0-cil libgtkglext1 libgtksourceview-common
6869 libgtksourceview2.0-common libmono-addins-gui0.2-cil
6870 libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
6871 libmono-i18n-west2.0-cil libmono-posix2.0-cil
6872 libmono-security2.0-cil libmono-sharpzip2.84-cil
6873 libmono-system2.0-cil libmtp8 libmusicbrainz3-6
6874 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6.8
6875 libpolkit-gtk-1-0 libpt-1.10.10-plugins-alsa
6876 libpt-1.10.10-plugins-v4l libpt2.6.7 libpython2.6 librpm1 librpmio1
6877 libsdl1.2debian libservlet2.4-java libsrtp0 libssh-4
6878 libtelepathy-farsight0 libtelepathy-glib0 libtidy-0.99-0
6879 libxalan2-java libxerces2-java media-player-info mesa-utils
6880 mono-2.0-gac mono-gac mono-runtime nautilus-sendto
6881 nautilus-sendto-empathy openoffice.org-writer2latex
6882 openssl-blacklist p7zip p7zip-full pkg-config python-4suite-xml
6883 python-aptdaemon python-aptdaemon-gtk python-axiom
6884 python-beautifulsoup python-bugbuddy python-clientform
6885 python-coherence python-configobj python-crypto python-cupshelpers
6886 python-cupsutils python-eggtrayicon python-elementtree
6887 python-epsilon python-evolution python-feedparser python-gdata
6888 python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
6889 python-gtksourceview2 python-httplib2 python-louie python-mako
6890 python-markupsafe python-mechanize python-nevow python-notify
6891 python-opengl python-openssl python-pam python-pkg-resources
6892 python-pyasn1 python-pysqlite2 python-rdflib python-serial
6893 python-tagpy python-twisted-bin python-twisted-conch
6894 python-twisted-core python-twisted-web python-utidylib python-webkit
6895 python-xdg python-zope.interface remmina remmina-plugin-data
6896 remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
6897 rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
6898 software-center svgalibg1 system-config-printer-udev
6899 telepathy-gabble telepathy-mission-control-5 telepathy-salut tomboy
6900 totem totem-coherence totem-mozilla totem-plugins
6901 transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
6902 zip
6903 &lt;/p&gt;&lt;/blockquote&gt;
6904
6905 Installed using apt-get, removed with aptitude
6906
6907 &lt;blockquote&gt;&lt;p&gt;
6908 arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
6909 epiphany-extensions epiphany-gecko evolution-exchange
6910 fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
6911 gedit-common gnome-app-install gnome-games gnome-games-data
6912 gnome-nettool gnome-system-tools gnome-themes gnome-utils
6913 gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
6914 guile-1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
6915 libavahi-ui0 libbind9-50 libbluetooth2 libcamel1.2-11 libcdio7
6916 libcucul0 libcurl3 libdirectfb-1.0-0 libdmx1 libdvdread3
6917 libedata-cal1.2-6 libedataserver1.2-9 libeel2-2.20 libepc-1.0-1
6918 libepc-ui-1.0-1 libexchange-storage1.2-3 libfaad0 libgadu3
6919 libgalago3 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
6920 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
6921 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
6922 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtk-vnc-1.0-0
6923 libgtkhtml2-0 libgtksourceview1.0-0 libgtksourceview2.0-0
6924 libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
6925 libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
6926 libmagick++10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
6927 libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
6928 libnm-util0 libopal-2.2 libosp5 libparted1.8-10 libpisock9
6929 libpisync1 libpoppler-glib3 libpoppler3 libpt-1.10.10 libraw1394-8
6930 libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-8
6931 libspeexdsp1 libssh2-1 libsuitesparse-3.1.0 libsvga1
6932 libswfdec-0.6-90 libtalloc1 libtotem-plparser10 libtrackerclient0
6933 libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
6934 libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
6935 sound-juicer swfdec-gnome system-config-printer totem-common
6936 totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
6937 &lt;/p&gt;&lt;/blockquote&gt;
6938
6939 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
6940
6941 &lt;blockquote&gt;&lt;p&gt;
6942 gstreamer0.10-gnomevfs
6943 &lt;/p&gt;&lt;/blockquote&gt;
6944
6945 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
6946
6947 &lt;blockquote&gt;&lt;p&gt;
6948 [nothing]
6949 &lt;/p&gt;&lt;/blockquote&gt;
6950
6951 &lt;p&gt;This is for KDE:&lt;/p&gt;
6952
6953 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
6954
6955 &lt;blockquote&gt;&lt;p&gt;
6956 autopoint bomber bovo cantor cantor-backend-kalgebra cpp-4.3 dcoprss
6957 edict espeak espeak-data eyesapplet fifteenapplet finger gettext
6958 ghostscript-x git gnome-audio gnugo granatier gs-common
6959 gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
6960 kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
6961 kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
6962 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
6963 kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
6964 kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
6965 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
6966 kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
6967 kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
6968 killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
6969 kollision kpf krosspython ksirk ksmserver ksquares kstars-data
6970 ksudoku kubrick kweather libasound2-plugins libboost-python1.42.0
6971 libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
6972 libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
6973 libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
6974 libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
6975 libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
6976 libkrossui4 libmailtools-perl libmime-tools-perl
6977 libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
6978 libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
6979 libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
6980 lirc luatex marble networkstatus noatun-plugins
6981 openoffice.org-writer2latex palapeli palapeli-data parley
6982 parley-data poster psutils pulseaudio pulseaudio-esound-compat
6983 pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
6984 speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
6985 ttf-sazanami-gothic
6986 &lt;/p&gt;&lt;/blockquote&gt;
6987
6988 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
6989
6990 &lt;blockquote&gt;&lt;p&gt;
6991 amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
6992 dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
6993 kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
6994 kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
6995 keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
6996 kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
6997 kitchensync kiten kjumpingcube klatin klettres klickety klines
6998 klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
6999 kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
7000 kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
7001 kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
7002 ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
7003 ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
7004 kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
7005 kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
7006 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
7007 libavahi-core5 libavc1394-0 libbind9-50 libbluetooth2
7008 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0
7009 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
7010 libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0 libicu38
7011 libiec61883-0 libindex0 libisccc50 libisccfg50 libiw29
7012 libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
7013 libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
7014 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
7015 libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
7016 libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
7017 libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
7018 libpoppler-qt2 libpoppler3 libraw1394-8 librss1 libsensors3
7019 libsmbios2 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90
7020 libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
7021 mpeglib network-manager-kde noatun pmount tex-common texlive-base
7022 texlive-common texlive-doc-base texlive-fonts-recommended tidy
7023 ttf-dustin ttf-kochi-gothic ttf-sjfonts
7024 &lt;/p&gt;&lt;/blockquote&gt;
7025
7026 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
7027
7028 &lt;blockquote&gt;&lt;p&gt;
7029 dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
7030 kdeartwork kdebase kdebase-apps kdebase-workspace
7031 kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
7032 kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
7033 netpbm plasma-widget-folderview plasma-widget-networkmanagement
7034 xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
7035 xscreensaver-screensaver-bsod
7036 &lt;/p&gt;&lt;/blockquote&gt;
7037
7038 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
7039
7040 &lt;blockquote&gt;&lt;p&gt;
7041 kdebase-bin konq-plugins konqueror
7042 &lt;/p&gt;&lt;/blockquote&gt;
7043 </description>
7044 </item>
7045
7046 <item>
7047 <title>Gnash buildbot slave and Debian kfreebsd</title>
7048 <link>http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html</link>
7049 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html</guid>
7050 <pubDate>Sat, 20 Nov 2010 07:20:00 +0100</pubDate>
7051 <description>&lt;p&gt;Answering
7052 &lt;a href=&quot;http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html&quot;&gt;the
7053 call from the Gnash project&lt;/a&gt; for
7054 &lt;a href=&quot;http://www.gnashdev.org:8010&quot;&gt;buildbot&lt;/a&gt; slaves to test the
7055 current source, I have set up a virtual KVM machine on the Debian
7056 Edu/Skolelinux virtualization host to test the git source on
7057 Debian/Squeeze. I hope this can help the developers in getting new
7058 releases out more often.&lt;/p&gt;
7059
7060 &lt;p&gt;As the developers want less main-stream build platforms tested to,
7061 I have considered setting up a &lt;a
7062 href=&quot;http://www.debian.org/ports/kfreebsd-gnu/&quot;&gt;Debian/kfreebsd&lt;/a&gt;
7063 machine as well. I have also considered using the kfreebsd
7064 architecture in Debian as a file server in NUUG to get access to the 5
7065 TB zfs volume we currently use to store DV video. Because of this, I
7066 finally got around to do a test installation of Debian/Squeeze with
7067 kfreebsd. Installation went fairly smooth, thought I noticed some
7068 visual glitches in the cdebconf dialogs (black cursor left on the
7069 screen at random locations). Have not gotten very far with the
7070 testing. Noticed cfdisk did not work, but fdisk did so it was not a
7071 fatal problem. Have to spend some more time on it to see if it is
7072 useful as a file server for NUUG. Will try to find time to set up a
7073 gnash buildbot slave on the Debian Edu/Skolelinux this weekend.&lt;/p&gt;
7074 </description>
7075 </item>
7076
7077 <item>
7078 <title>Debian in 3D</title>
7079 <link>http://people.skolelinux.org/pere/blog/Debian_in_3D.html</link>
7080 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_in_3D.html</guid>
7081 <pubDate>Tue, 9 Nov 2010 16:10:00 +0100</pubDate>
7082 <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;
7083
7084 &lt;p&gt;3D printing is just great. I just came across this Debian logo in
7085 3D linked in from
7086 &lt;a href=&quot;http://blog.thingiverse.com/2010/11/09/participatory-branding/&quot;&gt;the
7087 thingiverse blog&lt;/a&gt;.&lt;/p&gt;
7088 </description>
7089 </item>
7090
7091 <item>
7092 <title>Software updates 2010-10-24</title>
7093 <link>http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html</link>
7094 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html</guid>
7095 <pubDate>Sun, 24 Oct 2010 22:45:00 +0200</pubDate>
7096 <description>&lt;p&gt;Some updates.&lt;/p&gt;
7097
7098 &lt;p&gt;My &lt;a href=&quot;http://pledgebank.com/gnash-avm2&quot;&gt;gnash pledge&lt;/a&gt; to
7099 raise money for the project is going well. The lower limit of 10
7100 signers was reached in 24 hours, and so far 13 people have signed it.
7101 More signers and more funding is most welcome, and I am really curious
7102 how far we can get before the time limit of December 24 is reached.
7103 :)&lt;/p&gt;
7104
7105 &lt;p&gt;On the #gnash IRC channel on irc.freenode.net, I was just tipped
7106 about what appear to be a great code coverage tool capable of
7107 generating code coverage stats without any changes to the source code.
7108 It is called
7109 &lt;a href=&quot;http://simonkagstrom.github.com/kcov/index.html&quot;&gt;kcov&lt;/a&gt;,
7110 and can be used using &lt;tt&gt;kcov &amp;lt;directory&amp;gt; &amp;lt;binary&amp;gt;&lt;/tt&gt;.
7111 It is missing in Debian, but the git source built just fine in Squeeze
7112 after I installed libelf-dev, libdwarf-dev, pkg-config and
7113 libglib2.0-dev. Failed to build in Lenny, but suspect that is
7114 solvable. I hope kcov make it into Debian soon.&lt;/p&gt;
7115
7116 &lt;p&gt;Finally found time to wrap up the release notes for &lt;a
7117 href=&quot;http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html&quot;&gt;a
7118 new alpha release of Debian Edu&lt;/a&gt;, and just published the second
7119 alpha test release of the Squeeze based Debian Edu /
7120 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt;
7121 release. Give it a try if you need a complete linux solution for your
7122 school, including central infrastructure server, workstations, thin
7123 client servers and diskless workstations. A nice touch added
7124 yesterday is RDP support on the thin client servers, for windows
7125 clients to get a Linux desktop on request.&lt;/p&gt;
7126 </description>
7127 </item>
7128
7129 <item>
7130 <title>Some notes on Flash in Debian and Debian Edu</title>
7131 <link>http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html</link>
7132 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html</guid>
7133 <pubDate>Sat, 4 Sep 2010 10:10:00 +0200</pubDate>
7134 <description>&lt;p&gt;In the &lt;a href=&quot;http://popcon.debian.org/unknown/by_vote&quot;&gt;Debian
7135 popularity-contest numbers&lt;/a&gt;, the adobe-flashplugin package the
7136 second most popular used package that is missing in Debian. The sixth
7137 most popular is flashplayer-mozilla. This is a clear indication that
7138 working flash is important for Debian users. Around 10 percent of the
7139 users submitting data to popcon.debian.org have this package
7140 installed.&lt;/p&gt;
7141
7142 &lt;p&gt;In the report written by Lars Risan in August 2008
7143&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
7144 i bruk – Rapport for Hurum kommune, Universitetet i Agder og
7145 stiftelsen SLX Debian Labs&lt;/a&gt;»), one of the most important problems
7146 schools experienced with &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian
7147 Edu/Skolelinux&lt;/a&gt; was the lack of working Flash. A lot of educational
7148 web sites require Flash to work, and lacking working Flash support in
7149 the web browser and the problems with installing it was perceived as a
7150 good reason to stay with Windows.&lt;/p&gt;
7151
7152 &lt;p&gt;I once saw a funny and sad comment in a web forum, where Linux was
7153 said to be the retarded cousin that did not really understand
7154 everything you told him but could work fairly well. This was a
7155 comment regarding the problems Linux have with proprietary formats and
7156 non-standard web pages, and is sad because it exposes a fairly common
7157 understanding of whose fault it is if web pages that only work in for
7158 example Internet Explorer 6 fail to work on Firefox, and funny because
7159 it explain very well how annoying it is for users when Linux
7160 distributions do not work with the documents they receive or the web
7161 pages they want to visit.&lt;/p&gt;
7162
7163 &lt;p&gt;This is part of the reason why I believe it is important for Debian
7164 and Debian Edu to have a well working Flash implementation in the
7165 distribution, to get at least popular sites as Youtube and Google
7166 Video to working out of the box. For Squeeze, Debian have the chance
7167 to include the latest version of Gnash that will make this happen, as
7168 the new release 0.8.8 was published a few weeks ago and is resting in
7169 unstable. The new version work with more sites that version 0.8.7.
7170 The Gnash maintainers have asked for a freeze exception, but the
7171 release team have not had time to reply to it yet. I hope they agree
7172 with me that Flash is important for the Debian desktop users, and thus
7173 accept the new package into Squeeze.&lt;/p&gt;
7174 </description>
7175 </item>
7176
7177 <item>
7178 <title>Circular package dependencies harms apt recovery</title>
7179 <link>http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html</link>
7180 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html</guid>
7181 <pubDate>Tue, 27 Jul 2010 23:50:00 +0200</pubDate>
7182 <description>&lt;p&gt;I discovered this while doing
7183 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html&quot;&gt;automated
7184 testing of upgrades from Debian Lenny to Squeeze&lt;/a&gt;. A few packages
7185 in Debian still got circular dependencies, and it is often claimed
7186 that apt and aptitude should be able to handle this just fine, but
7187 some times these dependency loops causes apt to fail.&lt;/p&gt;
7188
7189 &lt;p&gt;An example is from todays
7190 &lt;a href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt&quot;&gt;upgrade
7191 of KDE using aptitude&lt;/a&gt;. In it, a bug in kdebase-workspace-data
7192 causes perl-modules to fail to upgrade. The cause is simple. If a
7193 package fail to unpack, then only part of packages with the circular
7194 dependency might end up being unpacked when unpacking aborts, and the
7195 ones already unpacked will fail to configure in the recovery phase
7196 because its dependencies are unavailable.&lt;/p&gt;
7197
7198 &lt;p&gt;In this log, the problem manifest itself with this error:&lt;/p&gt;
7199
7200 &lt;blockquote&gt;&lt;pre&gt;
7201 dpkg: dependency problems prevent configuration of perl-modules:
7202 perl-modules depends on perl (&gt;= 5.10.1-1); however:
7203 Version of perl on system is 5.10.0-19lenny2.
7204 dpkg: error processing perl-modules (--configure):
7205 dependency problems - leaving unconfigured
7206 &lt;/pre&gt;&lt;/blockquote&gt;
7207
7208 &lt;p&gt;The perl/perl-modules circular dependency is already
7209 &lt;a href=&quot;http://bugs.debian.org/527917&quot;&gt;reported as a bug&lt;/a&gt;, and will
7210 hopefully be solved as soon as possible, but it is not the only one,
7211 and each one of these loops in the dependency tree can cause similar
7212 failures. Of course, they only occur when there are bugs in other
7213 packages causing the unpacking to fail, but it is rather nasty when
7214 the failure of one package causes the problem to become worse because
7215 of dependency loops.&lt;/p&gt;
7216
7217 &lt;p&gt;Thanks to
7218 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/06/msg00116.html&quot;&gt;the
7219 tireless effort by Bill Allombert&lt;/a&gt;, the number of circular
7220 dependencies
7221 &lt;a href=&quot;http://debian.semistable.com/debgraph.out.html&quot;&gt;left in Debian
7222 is dropping&lt;/a&gt;, and perhaps it will reach zero one day. :)&lt;/p&gt;
7223
7224 &lt;p&gt;Todays testing also exposed a bug in
7225 &lt;a href=&quot;http://bugs.debian.org/590605&quot;&gt;update-notifier&lt;/a&gt; and
7226 &lt;a href=&quot;http://bugs.debian.org/590604&quot;&gt;different behaviour&lt;/a&gt; between
7227 apt-get and aptitude, the latter possibly caused by some circular
7228 dependency. Reported both to BTS to try to get someone to look at
7229 it.&lt;/p&gt;
7230 </description>
7231 </item>
7232
7233 <item>
7234 <title>What are they searching for - PowerDNS and ISC DHCP in LDAP</title>
7235 <link>http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html</link>
7236 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html</guid>
7237 <pubDate>Sat, 17 Jul 2010 21:00:00 +0200</pubDate>
7238 <description>&lt;p&gt;This is a
7239 &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;
7240 on my
7241 &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
7242 work&lt;/a&gt; on
7243 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html&quot;&gt;merging
7244 all&lt;/a&gt; the computer related LDAP objects in Debian Edu.&lt;/p&gt;
7245
7246 &lt;p&gt;As a step to try to see if it possible to merge the DNS and DHCP
7247 LDAP objects, I have had a look at how the packages pdns-backend-ldap
7248 and dhcp3-server-ldap in Debian use the LDAP server. The two
7249 implementations are quite different in how they use LDAP.&lt;/p&gt;
7250
7251 To get this information, I started slapd with debugging enabled and
7252 dumped the debug output to a file to get the LDAP searches performed
7253 on a Debian Edu main-server. Here is a summary.
7254
7255 &lt;p&gt;&lt;strong&gt;powerdns&lt;/strong&gt;&lt;/p&gt;
7256
7257 &lt;a href=&quot;http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend&quot;&gt;Clues
7258 on how to&lt;/a&gt; set up PowerDNS to use a LDAP backend is available on
7259 the web.
7260
7261 &lt;p&gt;PowerDNS have two modes of operation using LDAP as its backend.
7262 One &quot;strict&quot; mode where the forward and reverse DNS lookups are done
7263 using the same LDAP objects, and a &quot;tree&quot; mode where the forward and
7264 reverse entries are in two different subtrees in LDAP with a structure
7265 based on the DNS names, as in tjener.intern and
7266 2.2.0.10.in-addr.arpa.&lt;/p&gt;
7267
7268 &lt;p&gt;In tree mode, the server is set up to use a LDAP subtree as its
7269 base, and uses a &quot;base&quot; scoped search for the DNS name by adding
7270 &quot;dc=tjener,dc=intern,&quot; to the base with a filter for
7271 &quot;(associateddomain=tjener.intern)&quot; for the forward entry and
7272 &quot;dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,&quot; with a filter for
7273 &quot;(associateddomain=2.2.0.10.in-addr.arpa)&quot; for the reverse entry. For
7274 forward entries, it is looking for attributes named dnsttl, arecord,
7275 nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
7276 txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
7277 srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
7278 ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
7279 spfrecord and modifytimestamp. For reverse entries it is looking for
7280 the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
7281 ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
7282 locrecord, srvrecord, naptrrecord and modifytimestamp. The equivalent
7283 ldapsearch commands could look like this:&lt;/p&gt;
7284
7285 &lt;blockquote&gt;&lt;pre&gt;
7286 ldapsearch -h ldap \
7287 -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
7288 -s base -x &#39;(associateddomain=tjener.intern)&#39; dNSTTL aRecord nSRecord \
7289 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
7290 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
7291 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
7292 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
7293
7294 ldapsearch -h ldap \
7295 -b dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
7296 -s base -x &#39;(associateddomain=2.2.0.10.in-addr.arpa)&#39;
7297 dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
7298 hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
7299 srvrecord naptrrecord modifytimestamp
7300 &lt;/pre&gt;&lt;/blockquote&gt;
7301
7302 &lt;p&gt;In Debian Edu/Lenny, the PowerDNS tree mode is used with
7303 ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
7304 example LDAP objects used there. In addition to these objects, the
7305 parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
7306 also exist.&lt;/p&gt;
7307
7308 &lt;blockquote&gt;&lt;pre&gt;
7309 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
7310 objectclass: top
7311 objectclass: dnsdomain
7312 objectclass: domainrelatedobject
7313 dc: tjener
7314 arecord: 10.0.2.2
7315 associateddomain: tjener.intern
7316
7317 dn: dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
7318 objectclass: top
7319 objectclass: dnsdomain2
7320 objectclass: domainrelatedobject
7321 dc: 2
7322 ptrrecord: tjener.intern
7323 associateddomain: 2.2.0.10.in-addr.arpa
7324 &lt;/pre&gt;&lt;/blockquote&gt;
7325
7326 &lt;p&gt;In strict mode, the server behaves differently. When looking for
7327 forward DNS entries, it is doing a &quot;subtree&quot; scoped search with the
7328 same base as in the tree mode for a object with filter
7329 &quot;(associateddomain=tjener.intern)&quot; and requests the attributes dnsttl,
7330 arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
7331 mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
7332 naptrrecord and modifytimestamp. For reverse entires it also do a
7333 subtree scoped search but this time the filter is &quot;(arecord=10.0.2.2)&quot;
7334 and the requested attributes are associateddomain, dnsttl and
7335 modifytimestamp. In short, in strict mode the objects with ptrrecord
7336 go away, and the arecord attribute in the forward object is used
7337 instead.&lt;/p&gt;
7338
7339 &lt;p&gt;The forward and reverse searches can be simulated using ldapsearch
7340 like this:&lt;/p&gt;
7341
7342 &lt;blockquote&gt;&lt;pre&gt;
7343 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
7344 &#39;(associateddomain=tjener.intern)&#39; dNSTTL aRecord nSRecord \
7345 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
7346 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
7347 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
7348 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
7349
7350 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
7351 &#39;(arecord=10.0.2.2)&#39; associateddomain dnsttl modifytimestamp
7352 &lt;/pre&gt;&lt;/blockquote&gt;
7353
7354 &lt;p&gt;In addition to the forward and reverse searches , there is also a
7355 search for SOA records, which behave similar to the forward and
7356 reverse lookups.&lt;/p&gt;
7357
7358 &lt;p&gt;A thing to note with the PowerDNS behaviour is that it do not
7359 specify any objectclass names, and instead look for the attributes it
7360 need to generate a DNS reply. This make it able to work with any
7361 objectclass that provide the needed attributes.&lt;/p&gt;
7362
7363 &lt;p&gt;The attributes are normally provided in the cosine (RFC 1274) and
7364 dnsdomain2 schemas. The latter is used for reverse entries like
7365 ptrrecord and recent DNS additions like aaaarecord and srvrecord.&lt;/p&gt;
7366
7367 &lt;p&gt;In Debian Edu, we have created DNS objects using the object classes
7368 dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
7369 attributes) and domainrelatedobject (for associatedDomain). The use
7370 of structural object classes make it impossible to combine these
7371 classes with the object classes used by DHCP.&lt;/p&gt;
7372
7373 &lt;p&gt;There are other schemas that could be used too, for example the
7374 dnszone structural object class used by Gosa and bind-sdb for the DNS
7375 attributes combined with the domainrelatedobject object class, but in
7376 this case some unused attributes would have to be included as well
7377 (zonename and relativedomainname).&lt;/p&gt;
7378
7379 &lt;p&gt;My proposal for Debian Edu would be to switch PowerDNS to strict
7380 mode and not use any of the existing objectclasses (dnsdomain,
7381 dnsdomain2 and dnszone) when one want to combine the DNS information
7382 with DHCP information, and instead create a auxiliary object class
7383 defined something like this (using the attributes defined for
7384 dnsdomain and dnsdomain2 or dnszone):&lt;/p&gt;
7385
7386 &lt;blockquote&gt;&lt;pre&gt;
7387 objectclass ( some-oid NAME &#39;dnsDomainAux&#39;
7388 SUP top
7389 AUXILIARY
7390 MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
7391 DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
7392 TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
7393 NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
7394 A6Record $ DNAMERecord
7395 ))
7396 &lt;/pre&gt;&lt;/blockquote&gt;
7397
7398 &lt;p&gt;This will allow any object to become a DNS entry when combined with
7399 the domainrelatedobject object class, and allow any entity to include
7400 all the attributes PowerDNS wants. I&#39;ve sent an email to the PowerDNS
7401 developers asking for their view on this schema and if they are
7402 interested in providing such schema with PowerDNS, and I hope my
7403 message will be accepted into their mailing list soon.&lt;/p&gt;
7404
7405 &lt;p&gt;&lt;strong&gt;ISC dhcp&lt;/strong&gt;&lt;/p&gt;
7406
7407 &lt;p&gt;The DHCP server searches for specific objectclass and requests all
7408 the object attributes, and then uses the attributes it want. This
7409 make it harder to figure out exactly what attributes are used, but
7410 thanks to the working example in Debian Edu I can at least get an idea
7411 what is needed without having to read the source code.&lt;/p&gt;
7412
7413 &lt;p&gt;In the DHCP server configuration, the LDAP base to use and the
7414 search filter to use to locate the correct dhcpServer entity is
7415 stored. These are the relevant entries from
7416 /etc/dhcp3/dhcpd.conf:&lt;/p&gt;
7417
7418 &lt;blockquote&gt;&lt;pre&gt;
7419 ldap-base-dn &quot;dc=skole,dc=skolelinux,dc=no&quot;;
7420 ldap-dhcp-server-cn &quot;dhcp&quot;;
7421 &lt;/pre&gt;&lt;/blockquote&gt;
7422
7423 &lt;p&gt;The DHCP server uses this information to nest all the DHCP
7424 configuration it need. The cn &quot;dhcp&quot; is located using the given LDAP
7425 base and the filter &quot;(&amp;(objectClass=dhcpServer)(cn=dhcp))&quot;. The
7426 search result is this entry:&lt;/p&gt;
7427
7428 &lt;blockquote&gt;&lt;pre&gt;
7429 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
7430 cn: dhcp
7431 objectClass: top
7432 objectClass: dhcpServer
7433 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
7434 &lt;/pre&gt;&lt;/blockquote&gt;
7435
7436 &lt;p&gt;The content of the dhcpServiceDN attribute is next used to locate the
7437 subtree with DHCP configuration. The DHCP configuration subtree base
7438 is located using a base scope search with base &quot;cn=DHCP
7439 Config,dc=skole,dc=skolelinux,dc=no&quot; and filter
7440 &quot;(&amp;(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))&quot;.
7441 The search result is this entry:&lt;/p&gt;
7442
7443 &lt;blockquote&gt;&lt;pre&gt;
7444 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
7445 cn: DHCP Config
7446 objectClass: top
7447 objectClass: dhcpService
7448 objectClass: dhcpOptions
7449 dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
7450 dhcpStatements: ddns-update-style none
7451 dhcpStatements: authoritative
7452 dhcpOption: smtp-server code 69 = array of ip-address
7453 dhcpOption: www-server code 72 = array of ip-address
7454 dhcpOption: wpad-url code 252 = text
7455 &lt;/pre&gt;&lt;/blockquote&gt;
7456
7457 &lt;p&gt;Next, the entire subtree is processed, one level at the time. When
7458 all the DHCP configuration is loaded, it is ready to receive requests.
7459 The subtree in Debian Edu contain objects with object classes
7460 top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
7461 top/dhcpSubnet, top/dhcpGroup and top/dhcpHost. These provide options
7462 and information about netmasks, dynamic range etc. Leaving out the
7463 details here because it is not relevant for the focus of my
7464 investigation, which is to see if it is possible to merge dns and dhcp
7465 related computer objects.&lt;/p&gt;
7466
7467 &lt;p&gt;When a DHCP request come in, LDAP is searched for the MAC address
7468 of the client (00:00:00:00:00:00 in this example), using a subtree
7469 scoped search with &quot;cn=DHCP Config,dc=skole,dc=skolelinux,dc=no&quot; as
7470 the base and &quot;(&amp;(objectClass=dhcpHost)(dhcpHWAddress=ethernet
7471 00:00:00:00:00:00))&quot; as the filter. This is what a host object look
7472 like:&lt;/p&gt;
7473
7474 &lt;blockquote&gt;&lt;pre&gt;
7475 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
7476 cn: hostname
7477 objectClass: top
7478 objectClass: dhcpHost
7479 dhcpHWAddress: ethernet 00:00:00:00:00:00
7480 dhcpStatements: fixed-address hostname
7481 &lt;/pre&gt;&lt;/blockquote&gt;
7482
7483 &lt;p&gt;There is less flexiblity in the way LDAP searches are done here.
7484 The object classes need to have fixed names, and the configuration
7485 need to be stored in a fairly specific LDAP structure. On the
7486 positive side, the invidiual dhcpHost entires can be anywhere without
7487 the DN pointed to by the dhcpServer entries. The latter should make
7488 it possible to group all host entries in a subtree next to the
7489 configuration entries, and this subtree can also be shared with the
7490 DNS server if the schema proposed above is combined with the dhcpHost
7491 structural object class.
7492
7493 &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
7494
7495 &lt;p&gt;The PowerDNS implementation seem to be very flexible when it come
7496 to which LDAP schemas to use. While its &quot;tree&quot; mode is rigid when it
7497 come to the the LDAP structure, the &quot;strict&quot; mode is very flexible,
7498 allowing DNS objects to be stored anywhere under the base cn specified
7499 in the configuration.&lt;/p&gt;
7500
7501 &lt;p&gt;The DHCP implementation on the other hand is very inflexible, both
7502 regarding which LDAP schemas to use and which LDAP structure to use.
7503 I guess one could implement ones own schema, as long as the
7504 objectclasses and attributes have the names used, but this do not
7505 really help when the DHCP subtree need to have a fairly fixed
7506 structure.&lt;/p&gt;
7507
7508 &lt;p&gt;Based on the observed behaviour, I suspect a LDAP structure like
7509 this might work for Debian Edu:&lt;/p&gt;
7510
7511 &lt;blockquote&gt;&lt;pre&gt;
7512 ou=services
7513 cn=machine-info (dhcpService) - dhcpServiceDN points here
7514 cn=dhcp (dhcpServer)
7515 cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
7516 cn=10.0.2.0 (dhcpSubnet)
7517 cn=group1 (dhcpGroup/dhcpOptions)
7518 cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
7519 cn=192.168.0.0 (dhcpSubnet)
7520 cn=group1 (dhcpGroup/dhcpOptions)
7521 ou=machines - PowerDNS base points here
7522 cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
7523 &lt;/pre&gt;&lt;/blockquote&gt;
7524
7525 &lt;P&gt;This is not tested yet. If the DHCP server require the dhcpHost
7526 entries to be in the dhcpGroup subtrees, the entries can be stored
7527 there instead of a common machines subtree, and the PowerDNS base
7528 would have to be moved one level up to the machine-info subtree.&lt;/p&gt;
7529
7530 &lt;p&gt;The combined object under the machines subtree would look something
7531 like this:&lt;/p&gt;
7532
7533 &lt;blockquote&gt;&lt;pre&gt;
7534 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
7535 dc: hostname
7536 objectClass: top
7537 objectClass: dhcpHost
7538 objectclass: domainrelatedobject
7539 objectclass: dnsDomainAux
7540 associateddomain: hostname.intern
7541 arecord: 10.11.12.13
7542 dhcpHWAddress: ethernet 00:00:00:00:00:00
7543 dhcpStatements: fixed-address hostname.intern
7544 &lt;/pre&gt;&lt;/blockquote&gt;
7545
7546 &lt;/p&gt;One could even add the LTSP configuration associated with a given
7547 machine, as long as the required attributes are available in a
7548 auxiliary object class.&lt;/p&gt;
7549 </description>
7550 </item>
7551
7552 <item>
7553 <title>Combining PowerDNS and ISC DHCP LDAP objects</title>
7554 <link>http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html</link>
7555 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html</guid>
7556 <pubDate>Wed, 14 Jul 2010 23:45:00 +0200</pubDate>
7557 <description>&lt;p&gt;For a while now, I have wanted to find a way to change the DNS and
7558 DHCP services in Debian Edu to use the same LDAP objects for a given
7559 computer, to avoid the possibility of having a inconsistent state for
7560 a computer in LDAP (as in DHCP but no DNS entry or the other way
7561 around) and make it easier to add computers to LDAP.&lt;/p&gt;
7562
7563 &lt;p&gt;I&#39;ve looked at how powerdns and dhcpd is using LDAP, and using this
7564 information finally found a solution that seem to work.&lt;/p&gt;
7565
7566 &lt;p&gt;The old setup required three LDAP objects for a given computer.
7567 One forward DNS entry, one reverse DNS entry and one DHCP entry. If
7568 we switch powerdns to use its strict LDAP method (ldap-method=strict
7569 in pdns-debian-edu.conf), the forward and reverse DNS entries are
7570 merged into one while making it impossible to transfer the reverse map
7571 to a slave DNS server.&lt;/p&gt;
7572
7573 &lt;p&gt;If we also replace the object class used to get the DNS related
7574 attributes to one allowing these attributes to be combined with the
7575 dhcphost object class, we can merge the DNS and DHCP entries into one.
7576 I&#39;ve written such object class in the dnsdomainaux.schema file (need
7577 proper OIDs, but that is a minor issue), and tested the setup. It
7578 seem to work.&lt;/p&gt;
7579
7580 &lt;p&gt;With this test setup in place, we can get away with one LDAP object
7581 for both DNS and DHCP, and even the LTSP configuration I suggested in
7582 an earlier email. The combined LDAP object will look something like
7583 this:&lt;/p&gt;
7584
7585 &lt;blockquote&gt;&lt;pre&gt;
7586 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
7587 cn: hostname
7588 objectClass: dhcphost
7589 objectclass: domainrelatedobject
7590 objectclass: dnsdomainaux
7591 associateddomain: hostname.intern
7592 arecord: 10.11.12.13
7593 dhcphwaddress: ethernet 00:00:00:00:00:00
7594 dhcpstatements: fixed-address hostname
7595 ldapconfigsound: Y
7596 &lt;/pre&gt;&lt;/blockquote&gt;
7597
7598 &lt;p&gt;The DNS server uses the associateddomain and arecord entries, while
7599 the DHCP server uses the dhcphwaddress and dhcpstatements entries
7600 before asking DNS to resolve the fixed-adddress. LTSP will use
7601 dhcphwaddress or associateddomain and the ldapconfig* attributes.&lt;/p&gt;
7602
7603 &lt;p&gt;I am not yet sure if I can get the DHCP server to look for its
7604 dhcphost in a different location, to allow us to put the objects
7605 outside the &quot;DHCP Config&quot; subtree, but hope to figure out a way to do
7606 that. If I can&#39;t figure out a way to do that, we can still get rid of
7607 the hosts subtree and move all its content into the DHCP Config tree
7608 (which probably should be renamed to be more related to the new
7609 content. I suspect cn=dnsdhcp,ou=services or something like that
7610 might be a good place to put it.&lt;/p&gt;
7611
7612 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
7613 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
7614 </description>
7615 </item>
7616
7617 <item>
7618 <title>Idea for storing LTSP configuration in LDAP</title>
7619 <link>http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html</link>
7620 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html</guid>
7621 <pubDate>Sun, 11 Jul 2010 22:00:00 +0200</pubDate>
7622 <description>&lt;p&gt;Vagrant mentioned on IRC today that ltsp_config now support
7623 sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
7624 clients, and that this can be used to fetch configuration from LDAP if
7625 Debian Edu choose to store configuration there.&lt;/p&gt;
7626
7627 &lt;p&gt;Armed with this information, I got inspired and wrote a test module
7628 to get configuration from LDAP. The idea is to look up the MAC
7629 address of the client in LDAP, and look for attributes on the form
7630 ltspconfigsetting=value, and use this to export SETTING=value to the
7631 LTSP clients.&lt;/p&gt;
7632
7633 &lt;p&gt;The goal is to be able to store the LTSP configuration attributes
7634 in a &quot;computer&quot; LDAP object used by both DNS and DHCP, and thus
7635 allowing us to store all information about a computer in one place.&lt;/p&gt;
7636
7637 &lt;p&gt;This is a untested draft implementation, and I welcome feedback on
7638 this approach. A real LDAP schema for the ltspClientAux objectclass
7639 need to be written. Comments, suggestions, etc?&lt;/p&gt;
7640
7641 &lt;blockquote&gt;&lt;pre&gt;
7642 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
7643 #
7644 # Fetch LTSP client settings from LDAP based on MAC address
7645 #
7646 # Uses ethernet address as stored in the dhcpHost objectclass using
7647 # the dhcpHWAddress attribute or ethernet address stored in the
7648 # ieee802Device objectclass with the macAddress attribute.
7649 #
7650 # This module is written to be schema agnostic, and only depend on the
7651 # existence of attribute names.
7652 #
7653 # The LTSP configuration variables are saved directly using a
7654 # ltspConfig prefix and uppercasing the rest of the attribute name.
7655 # To set the SERVER variable, set the ltspConfigServer attribute.
7656 #
7657 # Some LDAP schema should be created with all the relevant
7658 # configuration settings. Something like this should work:
7659 #
7660 # objectclass ( 1.1.2.2 NAME &#39;ltspClientAux&#39;
7661 # SUP top
7662 # AUXILIARY
7663 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
7664
7665 LDAPSERVER=$(debian-edu-ldapserver)
7666 if [ &quot;$LDAPSERVER&quot; ] ; then
7667 LDAPBASE=$(debian-edu-ldapserver -b)
7668 for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk &#39;{print $5}&#39;|sort -u) ; do
7669 filter=&quot;(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))&quot;
7670 ldapsearch -h &quot;$LDAPSERVER&quot; -b &quot;$LDAPBASE&quot; -v -x &quot;$filter&quot; | \
7671 grep &#39;^ltspConfig&#39; | while read attr value ; do
7672 # Remove prefix and convert to upper case
7673 attr=$(echo $attr | sed &#39;s/^ltspConfig//i&#39; | tr a-z A-Z)
7674 # bass value on to clients
7675 eval &quot;$attr=$value; export $attr&quot;
7676 done
7677 done
7678 fi
7679 &lt;/pre&gt;&lt;/blockquote&gt;
7680
7681 &lt;p&gt;I&#39;m not sure this shell construction will work, because I suspect
7682 the while block might end up in a subshell causing the variables set
7683 there to not show up in ltsp-config, but if that is the case I am sure
7684 the code can be restructured to make sure the variables are passed on.
7685 I expect that can be solved with some testing. :)&lt;/p&gt;
7686
7687 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
7688 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
7689
7690 &lt;p&gt;Update 2010-07-17: I am aware of another effort to store LTSP
7691 configuration in LDAP that was created around year 2000 by
7692 &lt;a href=&quot;http://www.pcxperience.com/thinclient/documentation/ldap.html&quot;&gt;PC
7693 Xperience, Inc., 2000&lt;/a&gt;. I found its
7694 &lt;a href=&quot;http://people.redhat.com/alikins/ltsp/ldap/&quot;&gt;files&lt;/a&gt; on a
7695 personal home page over at redhat.com.&lt;/p&gt;
7696 </description>
7697 </item>
7698
7699 <item>
7700 <title>jXplorer, a very nice LDAP GUI</title>
7701 <link>http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html</link>
7702 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html</guid>
7703 <pubDate>Fri, 9 Jul 2010 12:55:00 +0200</pubDate>
7704 <description>&lt;p&gt;Since
7705 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html&quot;&gt;my
7706 last post&lt;/a&gt; about available LDAP tools in Debian, I was told about a
7707 LDAP GUI that is even better than luma. The java application
7708 &lt;a href=&quot;http://jxplorer.org/&quot;&gt;jXplorer&lt;/a&gt; is claimed to be capable of
7709 moving LDAP objects and subtrees using drag-and-drop, and can
7710 authenticate using Kerberos. I have only tested the Kerberos
7711 authentication, but do not have a LDAP setup allowing me to rewrite
7712 LDAP with my test user yet. It is
7713 &lt;a href=&quot;http://packages.qa.debian.org/j/jxplorer.html&quot;&gt;available in
7714 Debian&lt;/a&gt; testing and unstable at the moment. The only problem I
7715 have with it is how it handle errors. If something go wrong, its
7716 non-intuitive behaviour require me to go through some query work list
7717 and remove the failing query. Nothing big, but very annoying.&lt;/p&gt;
7718 </description>
7719 </item>
7720
7721 <item>
7722 <title>Lenny-&gt;Squeeze upgrades, apt vs aptitude with the Gnome desktop</title>
7723 <link>http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html</link>
7724 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html</guid>
7725 <pubDate>Sat, 3 Jul 2010 23:55:00 +0200</pubDate>
7726 <description>&lt;p&gt;Here is a short update on my &lt;a
7727 href=&quot;http://people.skolelinux.org/~pere/debian-upgrade-testing/&quot;&gt;my
7728 Debian Lenny-&gt;Squeeze upgrade testing&lt;/a&gt;. Here is a summary of the
7729 difference for Gnome when it is upgraded by apt-get and aptitude. I&#39;m
7730 not reporting the status for KDE, because the upgrade crashes when
7731 aptitude try because of missing conflicts
7732 (&lt;a href=&quot;http://bugs.debian.org/584861&quot;&gt;#584861&lt;/a&gt; and
7733 &lt;a href=&quot;http://bugs.debian.org/585716&quot;&gt;#585716&lt;/a&gt;).&lt;/p&gt;
7734
7735 &lt;p&gt;At the end of the upgrade test script, dpkg -l is executed to get a
7736 complete list of the installed packages. Based on this I see these
7737 differences when I did a test run today. As usual, I do not really
7738 know what the correct set of packages would be, but thought it best to
7739 publish the difference.&lt;/p&gt;
7740
7741 &lt;p&gt;Installed using apt-get, missing with aptitude&lt;/p&gt;
7742
7743 &lt;blockquote&gt;&lt;p&gt;
7744 at-spi cpp-4.3 finger gnome-spell gstreamer0.10-gnomevfs
7745 libatspi1.0-0 libcupsys2 libeel2-data libgail-common libgdl-1-common
7746 libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
7747 libgtksourceview-common libpt-1.10.10-plugins-alsa
7748 libpt-1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
7749 libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
7750 python-4suite-xml python-eggtrayicon python-gtkhtml2
7751 python-gtkmozembed svgalibg1 xserver-xephyr zip
7752 &lt;/p&gt;&lt;/blockquote&gt;
7753
7754 &lt;p&gt;Installed using apt-get, removed with aptitude&lt;/p&gt;
7755
7756 &lt;blockquote&gt;&lt;p&gt;
7757 bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
7758 gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
7759 libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-50
7760 libbluetooth2 libcamel1.2-11 libcdio7 libcucul0 libcurl3
7761 libdirectfb-1.0-0 libdvdread3 libedata-cal1.2-6 libedataserver1.2-9
7762 libeel2-2.20 libepc-1.0-1 libepc-ui-1.0-1 libexchange-storage1.2-3
7763 libfaad0 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
7764 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
7765 libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
7766 libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtkhtml2-0
7767 libgtksourceview1.0-0 libgucharmap6 libhesiod0 libicu38 libisccc50
7768 libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++10
7769 libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
7770 libneon27 libnm-glib0 libnm-util0 libopal-2.2 libosp5
7771 libparted1.8-10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
7772 libpt-1.10.10 libraw1394-8 libsensors3 libsmbios2 libsoup2.2-8
7773 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1
7774 libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
7775 libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
7776 mysql-common swfdec-gnome totem-gstreamer wodim
7777 &lt;/p&gt;&lt;/blockquote&gt;
7778
7779 &lt;p&gt;Installed using aptitude, missing with apt-get&lt;/p&gt;
7780
7781 &lt;blockquote&gt;&lt;p&gt;
7782 gnome gnome-desktop-environment hamster-applet python-gnomeapplet
7783 python-gnomekeyring python-wnck rhythmbox-plugins xorg
7784 xserver-xorg-input-all xserver-xorg-input-evdev
7785 xserver-xorg-input-kbd xserver-xorg-input-mouse
7786 xserver-xorg-input-synaptics xserver-xorg-video-all
7787 xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
7788 xserver-xorg-video-chips xserver-xorg-video-cirrus
7789 xserver-xorg-video-dummy xserver-xorg-video-fbdev
7790 xserver-xorg-video-glint xserver-xorg-video-i128
7791 xserver-xorg-video-i740 xserver-xorg-video-mach64
7792 xserver-xorg-video-mga xserver-xorg-video-neomagic
7793 xserver-xorg-video-nouveau xserver-xorg-video-nv
7794 xserver-xorg-video-r128 xserver-xorg-video-radeon
7795 xserver-xorg-video-radeonhd xserver-xorg-video-rendition
7796 xserver-xorg-video-s3 xserver-xorg-video-s3virge
7797 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
7798 xserver-xorg-video-sis xserver-xorg-video-sisusb
7799 xserver-xorg-video-tdfx xserver-xorg-video-tga
7800 xserver-xorg-video-trident xserver-xorg-video-tseng
7801 xserver-xorg-video-vesa xserver-xorg-video-vmware
7802 xserver-xorg-video-voodoo
7803 &lt;/p&gt;&lt;/blockquote&gt;
7804
7805 &lt;p&gt;Installed using aptitude, removed with apt-get&lt;/p&gt;
7806
7807 &lt;blockquote&gt;&lt;p&gt;
7808 deskbar-applet xserver-xorg xserver-xorg-core
7809 xserver-xorg-input-wacom xserver-xorg-video-intel
7810 xserver-xorg-video-openchrome
7811 &lt;/p&gt;&lt;/blockquote&gt;
7812
7813 &lt;p&gt;I was told on IRC that the xorg-xserver package was
7814 &lt;a href=&quot;http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120&quot;&gt;changed
7815 in git&lt;/a&gt; today to try to get apt-get to not remove xorg completely.
7816 No idea when it hits Squeeze, but when it does I hope it will reduce
7817 the difference somewhat.
7818 </description>
7819 </item>
7820
7821 <item>
7822 <title>LUMA, a very nice LDAP GUI</title>
7823 <link>http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html</link>
7824 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html</guid>
7825 <pubDate>Mon, 28 Jun 2010 00:30:00 +0200</pubDate>
7826 <description>&lt;p&gt;The last few days I have been looking into the status of the LDAP
7827 directory in Debian Edu, and in the process I started to miss a GUI
7828 tool to browse the LDAP tree. The only one I was able to find in
7829 Debian/Squeeze and Lenny is
7830 &lt;a href=&quot;http://luma.sourceforge.net/&quot;&gt;LUMA&lt;/a&gt;, which has proved to
7831 be a great tool to get a overview of the current LDAP directory
7832 populated by default in Skolelinux. Thanks to it, I have been able to
7833 find empty and obsolete subtrees, misplaced objects and duplicate
7834 objects. It will be installed by default in Debian/Squeeze. If you
7835 are working with LDAP, give it a go. :)&lt;/p&gt;
7836
7837 &lt;p&gt;I did notice one problem with it I have not had time to report to
7838 the BTS yet. There is no .desktop file in the package, so the tool do
7839 not show up in the Gnome and KDE menus, but only deep down in in the
7840 Debian submenu in KDE. I hope that can be fixed before Squeeze is
7841 released.&lt;/p&gt;
7842
7843 &lt;p&gt;I have not yet been able to get it to modify the tree yet. I would
7844 like to move objects and remove subtrees directly in the GUI, but have
7845 not found a way to do that with LUMA yet. So in the mean time, I use
7846 &lt;a href=&quot;http://www.lichteblau.com/ldapvi/&quot;&gt;ldapvi&lt;/a&gt; for that.&lt;/p&gt;
7847
7848 &lt;p&gt;If you have tips on other GUI tools for LDAP that might be useful
7849 in Debian Edu, please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
7850
7851 &lt;p&gt;Update 2010-06-29: Ross Reedstrom tipped us about the
7852 &lt;a href=&quot;http://packages.qa.debian.org/g/gq.html&quot;&gt;gq&lt;/a&gt; package as a
7853 useful GUI alternative. It seem like a good tool, but is unmaintained
7854 in Debian and got a RC bug keeping it out of Squeeze. Unless that
7855 changes, it will not be an option for Debian Edu based on Squeeze.&lt;/p&gt;
7856 </description>
7857 </item>
7858
7859 <item>
7860 <title>Idea for a change to LDAP schemas allowing DNS and DHCP info to be combined into one object</title>
7861 <link>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</link>
7862 <guid isPermaLink="true">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</guid>
7863 <pubDate>Thu, 24 Jun 2010 00:35:00 +0200</pubDate>
7864 <description>&lt;p&gt;A while back, I
7865 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html&quot;&gt;complained
7866 about the fact&lt;/a&gt; that it is not possible with the provided schemas
7867 for storing DNS and DHCP information in LDAP to combine the two sets
7868 of information into one LDAP object representing a computer.&lt;/p&gt;
7869
7870 &lt;p&gt;In the mean time, I discovered that a simple fix would be to make
7871 the dhcpHost object class auxiliary, to allow it to be combined with
7872 the dNSDomain object class, and thus forming one object for one
7873 computer when storing both DHCP and DNS information in LDAP.&lt;/p&gt;
7874
7875 &lt;p&gt;If I understand this correctly, it is not safe to do this change
7876 without also changing the assigned number for the object class, and I
7877 do not know enough about LDAP schema design to do that properly for
7878 Debian Edu.&lt;/p&gt;
7879
7880 &lt;p&gt;Anyway, for future reference, this is how I believe we could change
7881 the
7882 &lt;a href=&quot;http://tools.ietf.org/html/draft-ietf-dhc-ldap-schema-00&quot;&gt;DHCP
7883 schema&lt;/a&gt; to solve at least part of the problem with the LDAP schemas
7884 available today from IETF.&lt;/p&gt;
7885
7886 &lt;pre&gt;
7887 --- dhcp.schema (revision 65192)
7888 +++ dhcp.schema (working copy)
7889 @@ -376,7 +376,7 @@
7890 objectclass ( 2.16.840.1.113719.1.203.6.6
7891 NAME &#39;dhcpHost&#39;
7892 DESC &#39;This represents information about a particular client&#39;
7893 - SUP top
7894 + SUP top AUXILIARY
7895 MUST cn
7896 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
7897 X-NDS_CONTAINMENT (&#39;dhcpService&#39; &#39;dhcpSubnet&#39; &#39;dhcpGroup&#39;) )
7898 &lt;/pre&gt;
7899
7900 &lt;p&gt;I very much welcome clues on how to do this properly for Debian
7901 Edu/Squeeze. We provide the DHCP schema in our debian-edu-config
7902 package, and should thus be free to rewrite it as we see fit.&lt;/p&gt;
7903
7904 &lt;p&gt;If you want to help out with implementing this for Debian Edu,
7905 please contact us on debian-edu@lists.debian.org.&lt;/p&gt;
7906 </description>
7907 </item>
7908
7909 <item>
7910 <title>Calling tasksel like the installer, while still getting useful output</title>
7911 <link>http://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html</link>
7912 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html</guid>
7913 <pubDate>Wed, 16 Jun 2010 14:55:00 +0200</pubDate>
7914 <description>&lt;p&gt;A few times I have had the need to simulate the way tasksel
7915 installs packages during the normal debian-installer run. Until now,
7916 I have ended up letting tasksel do the work, with the annoying problem
7917 of not getting any feedback at all when something fails (like a
7918 conffile question from dpkg or a download that fails), using code like
7919 this:
7920
7921 &lt;blockquote&gt;&lt;pre&gt;
7922 export DEBIAN_FRONTEND=noninteractive
7923 tasksel --new-install
7924 &lt;/pre&gt;&lt;/blockquote&gt;
7925
7926 This would invoke tasksel, let its automatic task selection pick the
7927 tasks to install, and continue to install the requested tasks without
7928 any output what so ever.
7929
7930 Recently I revisited this problem while working on the automatic
7931 package upgrade testing, because tasksel would some times hang without
7932 any useful feedback, and I want to see what is going on when it
7933 happen. Then it occured to me, I can parse the output from tasksel
7934 when asked to run in test mode, and use that aptitude command line
7935 printed by tasksel then to simulate the tasksel run. I ended up using
7936 code like this:
7937
7938 &lt;blockquote&gt;&lt;pre&gt;
7939 export DEBIAN_FRONTEND=noninteractive
7940 cmd=&quot;$(in_target tasksel -t --new-install | sed &#39;s/debconf-apt-progress -- //&#39;)&quot;
7941 $cmd
7942 &lt;/pre&gt;&lt;/blockquote&gt;
7943
7944 &lt;p&gt;The content of $cmd is typically something like &quot;&lt;tt&gt;aptitude -q
7945 --without-recommends -o APT::Install-Recommends=no -y install
7946 ~t^desktop$ ~t^gnome-desktop$ ~t^laptop$ ~pstandard ~prequired
7947 ~pimportant&lt;/tt&gt;&quot;, which will install the gnome desktop task, the
7948 laptop task and all packages with priority standard , required and
7949 important, just like tasksel would have done it during
7950 installation.&lt;/p&gt;
7951
7952 &lt;p&gt;A better approach is probably to extend tasksel to be able to
7953 install packages without using debconf-apt-progress, for use cases
7954 like this.&lt;/p&gt;
7955 </description>
7956 </item>
7957
7958 <item>
7959 <title>Lenny-&gt;Squeeze upgrades, removals by apt and aptitude</title>
7960 <link>http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html</link>
7961 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html</guid>
7962 <pubDate>Sun, 13 Jun 2010 09:05:00 +0200</pubDate>
7963 <description>&lt;p&gt;My
7964 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html&quot;&gt;testing
7965 of Debian upgrades&lt;/a&gt; from Lenny to Squeeze continues, and I&#39;ve
7966 finally made the upgrade logs available from
7967 &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;.
7968 I am now testing dist-upgrade of Gnome and KDE in a chroot using both
7969 apt and aptitude, and found their differences interesting. This time
7970 I will only focus on their removal plans.&lt;/p&gt;
7971
7972 &lt;p&gt;After installing a Gnome desktop and the laptop task, apt-get wants
7973 to remove 72 packages when dist-upgrading from Lenny to Squeeze. The
7974 surprising part is that it want to remove xorg and all
7975 xserver-xorg-video* drivers. Clearly not a good choice, but I am not
7976 sure why. When asking aptitude to do the same, it want to remove 129
7977 packages, but most of them are library packages I suspect are no
7978 longer needed. Both of them want to remove bluetooth packages, which
7979 I do not know. Perhaps these bluetooth packages are obsolete?&lt;/p&gt;
7980
7981 &lt;p&gt;For KDE, apt-get want to remove 82 packages, among them kdebase
7982 which seem like a bad idea and xorg the same way as with Gnome. Asking
7983 aptitude for the same, it wants to remove 192 packages, none which are
7984 too surprising.&lt;/p&gt;
7985
7986 &lt;p&gt;I guess the removal of xorg during upgrades should be investigated
7987 and avoided, and perhaps others as well. Here are the complete list
7988 of planned removals. The complete logs is available from the URL
7989 above. Note if you want to repeat these tests, that the upgrade test
7990 for kde+apt-get hung in the tasksel setup because of dpkg asking
7991 conffile questions. No idea why. I worked around it by using
7992 &#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
7993 continue.&lt;/p&gt;
7994
7995 &lt;p&gt;&lt;b&gt;apt-get gnome 72&lt;/b&gt;
7996 &lt;br&gt;bluez-gnome cupsddk-drivers deskbar-applet gnome
7997 gnome-desktop-environment gnome-network-admin gtkhtml3.14
7998 iceweasel-gnome-support libavcodec51 libdatrie0 libgdl-1-0
7999 libgnomekbd2 libgnomekbdui2 libmetacity0 libslab0 libxcb-xlib0
8000 nautilus-cd-burner python-gnome2-desktop python-gnome2-extras
8001 serpentine swfdec-mozilla update-manager xorg xserver-xorg
8002 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
8003 xserver-xorg-input-kbd xserver-xorg-input-mouse
8004 xserver-xorg-input-synaptics xserver-xorg-input-wacom
8005 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
8006 xserver-xorg-video-ati xserver-xorg-video-chips
8007 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
8008 xserver-xorg-video-dummy xserver-xorg-video-fbdev
8009 xserver-xorg-video-glint xserver-xorg-video-i128
8010 xserver-xorg-video-i740 xserver-xorg-video-imstt
8011 xserver-xorg-video-intel xserver-xorg-video-mach64
8012 xserver-xorg-video-mga xserver-xorg-video-neomagic
8013 xserver-xorg-video-nsc xserver-xorg-video-nv
8014 xserver-xorg-video-openchrome xserver-xorg-video-r128
8015 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
8016 xserver-xorg-video-rendition xserver-xorg-video-s3
8017 xserver-xorg-video-s3virge xserver-xorg-video-savage
8018 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
8019 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
8020 xserver-xorg-video-tga xserver-xorg-video-trident
8021 xserver-xorg-video-tseng xserver-xorg-video-v4l
8022 xserver-xorg-video-vesa xserver-xorg-video-vga
8023 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9
8024 xulrunner-1.9-gnome-support&lt;/p&gt;
8025
8026 &lt;p&gt;&lt;b&gt;aptitude gnome 129&lt;/b&gt;
8027
8028 &lt;br&gt;bluez-gnome bluez-utils cpp-4.3 cupsddk-drivers dhcdbd
8029 djvulibre-desktop finger gnome-app-install gnome-mount
8030 gnome-network-admin gnome-spell gnome-vfs-obexftp
8031 gnome-volume-manager gstreamer0.10-gnomevfs gtkhtml3.14 libao2
8032 libavahi-compat-libdnssd1 libavahi-core5 libavcodec51 libbluetooth2
8033 libcamel1.2-11 libcdio7 libcucul0 libcupsys2 libcurl3 libdatrie0
8034 libdirectfb-1.0-0 libdvdread3 libedataserver1.2-9 libeel2-2.20
8035 libeel2-data libepc-1.0-1 libepc-ui-1.0-1 libfaad0 libgail-common
8036 libgd2-noxpm libgda3-3 libgda3-common libgdl-1-0 libgdl-1-common
8037 libggz2 libggzcore9 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0
8038 libgnomecups1.0-1 libgnomekbd2 libgnomekbdui2 libgnomeprint2.2-0
8039 libgnomeprint2.2-data libgnomeprintui2.2-0 libgnomeprintui2.2-common
8040 libgnomevfs2-bin libgpod3 libgraphviz4 libgtkhtml2-0
8041 libgtksourceview-common libgtksourceview1.0-0 libgucharmap6
8042 libhesiod0 libicu38 libiw29 libkpathsea4 libltdl3 libmagick++10
8043 libmagick10 libmalaga7 libmetacity0 libmtp7 libmysqlclient15off
8044 libnautilus-burn4 libneon27 libnm-glib0 libnm-util0 libopal-2.2
8045 libosp5 libparted1.8-10 libpoppler-glib3 libpoppler3 libpt-1.10.10
8046 libpt-1.10.10-plugins-alsa libpt-1.10.10-plugins-v4l libraw1394-8
8047 libsensors3 libslab0 libsmbios2 libsoup2.2-8 libssh2-1
8048 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1 libtotem-plparser10
8049 libtrackerclient0 libxalan2-java libxalan2-java-gcj libxcb-xlib0
8050 libxerces2-java libxerces2-java-gcj libxklavier12 libxtrap6
8051 libxxf86misc1 libzephyr3 mysql-common nautilus-cd-burner
8052 openoffice.org-writer2latex openssl-blacklist p7zip
8053 python-4suite-xml python-eggtrayicon python-gnome2-desktop
8054 python-gnome2-extras python-gtkhtml2 python-gtkmozembed
8055 python-numeric python-sexy serpentine svgalibg1 swfdec-gnome
8056 swfdec-mozilla totem-gstreamer update-manager wodim
8057 xserver-xorg-video-cyrix xserver-xorg-video-imstt
8058 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
8059 zip&lt;/p&gt;
8060
8061 &lt;p&gt;&lt;b&gt;apt-get kde 82&lt;/b&gt;
8062
8063 &lt;br&gt;cupsddk-drivers karm kaudiocreator kcoloredit kcontrol kde kde-core
8064 kdeaddons kdeartwork kdebase kdebase-bin kdebase-bin-kde3
8065 kdebase-kio-plugins kdesktop kdeutils khelpcenter kicker
8066 kicker-applets knewsticker kolourpaint konq-plugins konqueror korn
8067 kpersonalizer kscreensaver ksplash libavcodec51 libdatrie0 libkiten1
8068 libxcb-xlib0 quanta superkaramba texlive-base-bin xorg xserver-xorg
8069 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
8070 xserver-xorg-input-kbd xserver-xorg-input-mouse
8071 xserver-xorg-input-synaptics xserver-xorg-input-wacom
8072 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
8073 xserver-xorg-video-ati xserver-xorg-video-chips
8074 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
8075 xserver-xorg-video-dummy xserver-xorg-video-fbdev
8076 xserver-xorg-video-glint xserver-xorg-video-i128
8077 xserver-xorg-video-i740 xserver-xorg-video-imstt
8078 xserver-xorg-video-intel xserver-xorg-video-mach64
8079 xserver-xorg-video-mga xserver-xorg-video-neomagic
8080 xserver-xorg-video-nsc xserver-xorg-video-nv
8081 xserver-xorg-video-openchrome xserver-xorg-video-r128
8082 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
8083 xserver-xorg-video-rendition xserver-xorg-video-s3
8084 xserver-xorg-video-s3virge xserver-xorg-video-savage
8085 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
8086 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
8087 xserver-xorg-video-tga xserver-xorg-video-trident
8088 xserver-xorg-video-tseng xserver-xorg-video-v4l
8089 xserver-xorg-video-vesa xserver-xorg-video-vga
8090 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9&lt;/p&gt;
8091
8092 &lt;p&gt;&lt;b&gt;aptitude kde 192&lt;/b&gt;
8093 &lt;br&gt;bluez-utils cpp-4.3 cupsddk-drivers cvs dcoprss dhcdbd
8094 djvulibre-desktop dosfstools eyesapplet fifteenapplet finger gettext
8095 ghostscript-x imlib-base imlib11 indi kandy karm kasteroids
8096 kaudiocreator kbackgammon kbstate kcoloredit kcontrol kcron kdat
8097 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
8098 kdebase-bin-kde3 kdebase-kio-plugins kdeedu-data
8099 kdegraphics-kfile-plugins kdelirc kdemultimedia-kappfinder-data
8100 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
8101 kdepim-kfile-plugins kdepim-kio-plugins kdeprint kdesktop kdessh
8102 kdict kdnssd kdvi kedit keduca kenolaba kfax kfaxview kfouleggs
8103 kghostview khelpcenter khexedit kiconedit kitchensync klatin
8104 klickety kmailcvt kmenuedit kmid kmilo kmoon kmrml kodo kolourpaint
8105 kooka korn kpager kpdf kpercentage kpf kpilot kpoker kpovmodeler
8106 krec kregexpeditor ksayit ksim ksirc ksirtet ksmiletris ksmserver
8107 ksnake ksokoban ksplash ksvg ksysv ktip ktnef kuickshow kverbos
8108 kview kviewshell kvoctrain kwifimanager kwin kwin4 kworldclock
8109 kxsldbg libakode2 libao2 libarts1-akode libarts1-audiofile
8110 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
8111 libavahi-core5 libavc1394-0 libavcodec51 libbluetooth2
8112 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0 libdatrie0
8113 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
8114 libgail-common libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0
8115 libicu38 libiec61883-0 libindex0 libiw29 libk3b3 libkcal2b libkcddb1
8116 libkdeedu3 libkdepim1a libkgantt0 libkiten1 libkleopatra1 libkmime2
8117 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
8118 libksieve0 libktnef1 liblockdev1 libltdl3 libmagick10 libmimelib1c2a
8119 libmozjs1d libmpcdec3 libneon27 libnm-util0 libopensync0 libpisock9
8120 libpoppler-glib3 libpoppler-qt2 libpoppler3 libraw1394-8 libsmbios2
8121 libssh2-1 libsuitesparse-3.1.0 libtalloc1 libtiff-tools
8122 libxalan2-java libxalan2-java-gcj libxcb-xlib0 libxerces2-java
8123 libxerces2-java-gcj libxtrap6 mpeglib networkstatus
8124 openoffice.org-writer2latex pmount poster psutils quanta quanta-data
8125 superkaramba svgalibg1 tex-common texlive-base texlive-base-bin
8126 texlive-common texlive-doc-base texlive-fonts-recommended
8127 xserver-xorg-video-cyrix xserver-xorg-video-imstt
8128 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
8129 xulrunner-1.9&lt;/p&gt;
8130
8131 </description>
8132 </item>
8133
8134 <item>
8135 <title>Automatic upgrade testing from Lenny to Squeeze</title>
8136 <link>http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html</link>
8137 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html</guid>
8138 <pubDate>Fri, 11 Jun 2010 22:50:00 +0200</pubDate>
8139 <description>&lt;p&gt;The last few days I have done some upgrade testing in Debian, to
8140 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
8141 have been discovered and reported in the process
8142 (&lt;a href=&quot;http://bugs.debian.org/585410&quot;&gt;#585410&lt;/a&gt; in nagios3-cgi,
8143 &lt;a href=&quot;http://bugs.debian.org/584879&quot;&gt;#584879&lt;/a&gt; already fixed in
8144 enscript and &lt;a href=&quot;http://bugs.debian.org/584861&quot;&gt;#584861&lt;/a&gt; in
8145 kdebase-workspace-data), and to get a more regular testing going on, I
8146 am working on a script to automate the test.&lt;/p&gt;
8147
8148 &lt;p&gt;The idea is to create a Lenny chroot and use tasksel to install a
8149 Gnome or KDE desktop installation inside the chroot before upgrading
8150 it. To ensure no services are started in the chroot, a policy-rc.d
8151 script is inserted. To make sure tasksel believe it is to install a
8152 desktop on a laptop, the tasksel tests are replaced in the chroot
8153 (only acceptable because this is a throw-away chroot).&lt;/p&gt;
8154
8155 &lt;p&gt;A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
8156 currently always fail because udev refuses to upgrade with the kernel
8157 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
8158 is created. The bug report
8159 &lt;a href=&quot;http://bugs.debian.org/566000&quot;&gt;#566000&lt;/a&gt; make me suspect
8160 this problem do not trigger in a chroot, but I touch the file anyway
8161 to make sure the upgrade go well. Testing on virtual and real
8162 hardware have failed me because of udev so far, and creating this file
8163 do the trick in such settings anyway. This is a
8164 &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
8165 issue&lt;/a&gt; and the current udev behaviour is intended by the udev
8166 maintainer because he lack the resources to rewrite udev to keep
8167 working with old kernels or something like that. I really wish the
8168 udev upstream would keep udev backwards compatible, to avoid such
8169 upgrade problem, but given that they fail to do so, I guess
8170 documenting the way out of this mess is the best option we got for
8171 Debian Squeeze.&lt;/p&gt;
8172
8173 &lt;p&gt;Anyway, back to the task at hand, testing upgrades. This test
8174 script, which I call &lt;tt&gt;upgrade-test&lt;/tt&gt; for now, is doing the
8175 trick:&lt;/p&gt;
8176
8177 &lt;blockquote&gt;&lt;pre&gt;
8178 #!/bin/sh
8179 set -ex
8180
8181 if [ &quot;$1&quot; ] ; then
8182 desktop=$1
8183 else
8184 desktop=gnome
8185 fi
8186
8187 from=lenny
8188 to=squeeze
8189
8190 exec &amp;lt; /dev/null
8191 unset LANG
8192 mirror=http://ftp.skolelinux.org/debian
8193 tmpdir=chroot-$from-upgrade-$to-$desktop
8194 fuser -mv .
8195 debootstrap $from $tmpdir $mirror
8196 chroot $tmpdir aptitude update
8197 cat &gt; $tmpdir/usr/sbin/policy-rc.d &amp;lt;&amp;lt;EOF
8198 #!/bin/sh
8199 exit 101
8200 EOF
8201 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
8202 exit_cleanup() {
8203 umount $tmpdir/proc
8204 }
8205 mount -t proc proc $tmpdir/proc
8206 # Make sure proc is unmounted also on failure
8207 trap exit_cleanup EXIT INT
8208
8209 chroot $tmpdir aptitude -y install debconf-utils
8210
8211 # Make sure tasksel autoselection trigger. It need the test scripts
8212 # to return the correct answers.
8213 echo tasksel tasksel/desktop multiselect $desktop | \
8214 chroot $tmpdir debconf-set-selections
8215
8216 # Include the desktop and laptop task
8217 for test in desktop laptop ; do
8218 echo &gt; $tmpdir/usr/lib/tasksel/tests/$test &amp;lt;&amp;lt;EOF
8219 #!/bin/sh
8220 exit 2
8221 EOF
8222 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
8223 done
8224
8225 DEBIAN_FRONTEND=noninteractive
8226 DEBIAN_PRIORITY=critical
8227 export DEBIAN_FRONTEND DEBIAN_PRIORITY
8228 chroot $tmpdir tasksel --new-install
8229
8230 echo deb $mirror $to main &gt; $tmpdir/etc/apt/sources.list
8231 chroot $tmpdir aptitude update
8232 touch $tmpdir/etc/udev/kernel-upgrade
8233 chroot $tmpdir aptitude -y dist-upgrade
8234 fuser -mv
8235 &lt;/pre&gt;&lt;/blockquote&gt;
8236
8237 &lt;p&gt;I suspect it would be useful to test upgrades with both apt-get and
8238 with aptitude, but I have not had time to look at how they behave
8239 differently so far. I hope to get a cron job running to do the test
8240 regularly and post the result on the web. The Gnome upgrade currently
8241 work, while the KDE upgrade fail because of the bug in
8242 kdebase-workspace-data&lt;/p&gt;
8243
8244 &lt;p&gt;I am not quite sure what kind of extract from the huge upgrade logs
8245 (KDE 167 KiB, Gnome 516 KiB) it make sense to include in this blog
8246 post, so I will refrain from trying. I can report that for Gnome,
8247 aptitude report 760 packages upgraded, 448 newly installed, 129 to
8248 remove and 1 not upgraded and 1024MB need to be downloaded while for
8249 KDE the same numbers are 702 packages upgraded, 507 newly installed,
8250 193 to remove and 0 not upgraded and 1117MB need to be downloaded&lt;/p&gt;
8251
8252 &lt;p&gt;I am very happy to notice that the Gnome desktop + laptop upgrade
8253 is able to migrate to dependency based boot sequencing and parallel
8254 booting without a hitch. Was unsure if there were still bugs with
8255 packages failing to clean up their obsolete init.d script during
8256 upgrades, and no such problem seem to affect the Gnome desktop+laptop
8257 packages.&lt;/p&gt;
8258 </description>
8259 </item>
8260
8261 <item>
8262 <title>Upstart or sysvinit - as init.d scripts see it</title>
8263 <link>http://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html</link>
8264 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html</guid>
8265 <pubDate>Sun, 6 Jun 2010 23:55:00 +0200</pubDate>
8266 <description>&lt;p&gt;If Debian is to migrate to upstart on Linux, I expect some init.d
8267 scripts to migrate (some of) their operations to upstart job while
8268 keeping the init.d for hurd and kfreebsd. The packages with such
8269 needs will need a way to get their init.d scripts to behave
8270 differently when used with sysvinit and with upstart. Because of
8271 this, I had a look at the environment variables set when a init.d
8272 script is running under upstart, and when it is not.&lt;/p&gt;
8273
8274 &lt;p&gt;With upstart, I notice these environment variables are set when a
8275 script is started from rcS.d/ (ignoring some irrelevant ones like
8276 COLUMNS):&lt;/p&gt;
8277
8278 &lt;blockquote&gt;&lt;pre&gt;
8279 DEFAULT_RUNLEVEL=2
8280 previous=N
8281 PREVLEVEL=
8282 RUNLEVEL=
8283 runlevel=S
8284 UPSTART_EVENTS=startup
8285 UPSTART_INSTANCE=
8286 UPSTART_JOB=rc-sysinit
8287 &lt;/pre&gt;&lt;/blockquote&gt;
8288
8289 &lt;p&gt;With sysvinit, these environment variables are set for the same
8290 script.&lt;/p&gt;
8291
8292 &lt;blockquote&gt;&lt;pre&gt;
8293 INIT_VERSION=sysvinit-2.88
8294 previous=N
8295 PREVLEVEL=N
8296 RUNLEVEL=S
8297 runlevel=S
8298 &lt;/pre&gt;&lt;/blockquote&gt;
8299
8300 &lt;p&gt;The RUNLEVEL and PREVLEVEL environment variables passed on from
8301 sysvinit are not set by upstart. Not sure if it is intentional or not
8302 to not be compatible with sysvinit in this regard.&lt;/p&gt;
8303
8304 &lt;p&gt;For scripts needing to behave differently when upstart is used,
8305 looking for the UPSTART_JOB environment variable seem to be a good
8306 choice.&lt;/p&gt;
8307 </description>
8308 </item>
8309
8310 <item>
8311 <title>A manual for standards wars...</title>
8312 <link>http://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html</link>
8313 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html</guid>
8314 <pubDate>Sun, 6 Jun 2010 14:15:00 +0200</pubDate>
8315 <description>&lt;p&gt;Via the
8316 &lt;a href=&quot;http://feedproxy.google.com/~r/robweir/antic-atom/~3/QzU4RgoAGMg/weekly-links-10.html&quot;&gt;blog
8317 of Rob Weir&lt;/a&gt; I came across the very interesting essay named
8318 &lt;a href=&quot;http://faculty.haas.berkeley.edu/shapiro/wars.pdf&quot;&gt;The Art of
8319 Standards Wars&lt;/a&gt; (PDF 25 pages). I recommend it for everyone
8320 following the standards wars of today.&lt;/p&gt;
8321 </description>
8322 </item>
8323
8324 <item>
8325 <title>Sitesummary tip: Listing computer hardware models used at site</title>
8326 <link>http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html</link>
8327 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html</guid>
8328 <pubDate>Thu, 3 Jun 2010 12:05:00 +0200</pubDate>
8329 <description>&lt;p&gt;When using sitesummary at a site to track machines, it is possible
8330 to get a list of the machine types in use thanks to the DMI
8331 information extracted from each machine. The script to do so is
8332 included in the sitesummary package, and here is example output from
8333 the Skolelinux build servers:&lt;/p&gt;
8334
8335 &lt;blockquote&gt;&lt;pre&gt;
8336 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
8337 vendor count
8338 Dell Computer Corporation 1
8339 PowerEdge 1750 1
8340 IBM 1
8341 eserver xSeries 345 -[8670M1X]- 1
8342 Intel 2
8343 [no-dmi-info] 3
8344 maintainer:~#
8345 &lt;/pre&gt;&lt;/blockquote&gt;
8346
8347 &lt;p&gt;The quality of the report depend on the quality of the DMI tables
8348 provided in each machine. Here there are Intel machines without model
8349 information listed with Intel as vendor and no model, and virtual Xen
8350 machines listed as [no-dmi-info]. One can add -l as a command line
8351 option to list the individual machines.&lt;/p&gt;
8352
8353 &lt;p&gt;A larger list is
8354 &lt;a href=&quot;http://narvikskolen.no/sitesummary/&quot;&gt;available from the the
8355 city of Narvik&lt;/a&gt;, which uses Skolelinux on all their shools and also
8356 provide the basic sitesummary report publicly. In their report there
8357 are ~1400 machines. I know they use both Ubuntu and Skolelinux on
8358 their machines, and as sitesummary is available in both distributions,
8359 it is trivial to get all of them to report to the same central
8360 collector.&lt;/p&gt;
8361 </description>
8362 </item>
8363
8364 <item>
8365 <title>KDM fail at boot with NVidia cards - and no one try to fix it?</title>
8366 <link>http://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html</link>
8367 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html</guid>
8368 <pubDate>Tue, 1 Jun 2010 17:05:00 +0200</pubDate>
8369 <description>&lt;p&gt;It is strange to watch how a bug in Debian causing KDM to fail to
8370 start at boot when an NVidia video card is used is handled. The
8371 problem seem to be that the nvidia X.org driver uses a long time to
8372 initialize, and this duration is longer than kdm is configured to
8373 wait.&lt;/p&gt;
8374
8375 &lt;p&gt;I came across two bugs related to this issue,
8376 &lt;a href=&quot;http://bugs.debian.org/583312&quot;&gt;#583312&lt;/a&gt; initially filed
8377 against initscripts and passed on to nvidia-glx when it became obvious
8378 that the nvidia drivers were involved, and
8379 &lt;a href=&quot;http://bugs.debian.org/524751&quot;&gt;#524751&lt;/a&gt; initially filed against
8380 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.&lt;/p&gt;
8381
8382 &lt;p&gt;To me, it seem that no-one is interested in actually solving the
8383 problem nvidia video card owners experience and make sure the Debian
8384 distribution work out of the box for these users. The nvidia driver
8385 maintainers expect kdm to be set up to wait longer, while kdm expect
8386 the nvidia driver maintainers to fix the driver to start faster, and
8387 while they wait for each other I guess the users end up switching to a
8388 distribution that work for them. I have no idea what the solution is,
8389 but I am pretty sure that waiting for each other is not it.&lt;/p&gt;
8390
8391 &lt;p&gt;I wonder why we end up handling bugs this way.&lt;/p&gt;
8392 </description>
8393 </item>
8394
8395 <item>
8396 <title>Parallellized boot seem to hold up well in Debian/testing</title>
8397 <link>http://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html</link>
8398 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html</guid>
8399 <pubDate>Thu, 27 May 2010 23:55:00 +0200</pubDate>
8400 <description>&lt;p&gt;A few days ago, parallel booting was enabled in Debian/testing.
8401 The feature seem to hold up pretty well, but three fairly serious
8402 issues are known and should be solved:
8403
8404 &lt;p&gt;&lt;ul&gt;
8405
8406 &lt;li&gt;The wicd package seen to
8407 &lt;a href=&quot;http://bugs.debian.org/508289&quot;&gt;break NFS mounting&lt;/a&gt; and
8408 &lt;a href=&quot;http://bugs.debian.org/581586&quot;&gt;network setup&lt;/a&gt; when
8409 parallel booting is enabled. No idea why, but the wicd maintainer
8410 seem to be on the case.&lt;/li&gt;
8411
8412 &lt;li&gt;The nvidia X driver seem to
8413 &lt;a href=&quot;http://bugs.debian.org/583312&quot;&gt;have a race condition&lt;/a&gt;
8414 triggered more easily when parallel booting is in effect. The
8415 maintainer is on the case.&lt;/li&gt;
8416
8417 &lt;li&gt;The sysv-rc package fail to properly enable dependency based boot
8418 sequencing (the shutdown is broken) when old file-rc users
8419 &lt;a href=&quot;http://bugs.debian.org/575080&quot;&gt;try to switch back&lt;/a&gt; to
8420 sysv-rc. One way to solve it would be for file-rc to create
8421 /etc/init.d/.legacy-bootordering, and another is to try to make
8422 sysv-rc more robust. Will investigate some more and probably upload a
8423 workaround in sysv-rc to help those trying to move from file-rc to
8424 sysv-rc get a working shutdown.&lt;/li&gt;
8425
8426 &lt;/ul&gt;&lt;/p&gt;
8427
8428 &lt;p&gt;All in all not many surprising issues, and all of them seem
8429 solvable before Squeeze is released. In addition to these there are
8430 some packages with bugs in their dependencies and run level settings,
8431 which I expect will be fixed in a reasonable time span.&lt;/p&gt;
8432
8433 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
8434 the BTS, please usertag the report to get it to show up at
8435 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
8436 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
8437
8438 &lt;p&gt;Update: Correct bug number to file-rc issue.&lt;/p&gt;
8439 </description>
8440 </item>
8441
8442 <item>
8443 <title>More flexible firmware handling in debian-installer</title>
8444 <link>http://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html</link>
8445 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html</guid>
8446 <pubDate>Sat, 22 May 2010 21:30:00 +0200</pubDate>
8447 <description>&lt;p&gt;After a long break from debian-installer development, I finally
8448 found time today to return to the project. Having to spend less time
8449 working dependency based boot in debian, as it is almost complete now,
8450 definitely helped freeing some time.&lt;/p&gt;
8451
8452 &lt;p&gt;A while back, I ran into a problem while working on Debian Edu. We
8453 include some firmware packages on the Debian Edu CDs, those needed to
8454 get disk and network controllers working. Without having these
8455 firmware packages available during installation, it is impossible to
8456 install Debian Edu on the given machine, and because our target group
8457 are non-technical people, asking them to provide firmware packages on
8458 an external medium is a support pain. Initially, I expected it to be
8459 enough to include the firmware packages on the CD to get
8460 debian-installer to find and use them. This proved to be wrong.
8461 Next, I hoped it was enough to symlink the relevant firmware packages
8462 to some useful location on the CD (tried /cdrom/ and
8463 /cdrom/firmware/). This also proved to not work, and at this point I
8464 found time to look at the debian-installer code to figure out what was
8465 going to work.&lt;/p&gt;
8466
8467 &lt;p&gt;The firmware loading code is in the hw-detect package, and a closer
8468 look revealed that it would only look for firmware packages outside
8469 the installation media, so the CD was never checked for firmware
8470 packages. It would only check USB sticks, floppies and other
8471 &quot;external&quot; media devices. Today I changed it to also look in the
8472 /cdrom/firmware/ directory on the mounted CD or DVD, which should
8473 solve the problem I ran into with Debian edu. I also changed it to
8474 look in /firmware/, to make sure the installer also find firmware
8475 provided in the initrd when booting the installer via PXE, to allow us
8476 to provide the same feature in the PXE setup included in Debian
8477 Edu.&lt;/p&gt;
8478
8479 &lt;p&gt;To make sure firmware deb packages with a license questions are not
8480 activated without asking if the license is accepted, I extended
8481 hw-detect to look for preinst scripts in the firmware packages, and
8482 run these before activating the firmware during installation. The
8483 license question is asked using debconf in the preinst, so this should
8484 solve the issue for the firmware packages I have looked at so far.&lt;/p&gt;
8485
8486 &lt;p&gt;If you want to discuss the details of these features, please
8487 contact us on debian-boot@lists.debian.org.&lt;/p&gt;
8488 </description>
8489 </item>
8490
8491 <item>
8492 <title>Parallellized boot is now the default in Debian/unstable</title>
8493 <link>http://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html</link>
8494 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html</guid>
8495 <pubDate>Fri, 14 May 2010 22:40:00 +0200</pubDate>
8496 <description>&lt;p&gt;Since this evening, parallel booting is the default in
8497 Debian/unstable for machines using dependency based boot sequencing.
8498 Apparently the testing of concurrent booting has been wider than
8499 expected, if I am to believe the
8500 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg00122.html&quot;&gt;input
8501 on debian-devel@&lt;/a&gt;, and I concluded a few days ago to move forward
8502 with the feature this weekend, to give us some time to detect any
8503 remaining problems before Squeeze is frozen. If serious problems are
8504 detected, it is simple to change the default back to sequential boot.
8505 The upload of the new sysvinit package also activate a new upstream
8506 version.&lt;/p&gt;
8507
8508 More information about
8509 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
8510 based boot sequencing&lt;/a&gt; is available from the Debian wiki. It is
8511 currently possible to disable parallel booting when one run into
8512 problems caused by it, by adding this line to /etc/default/rcS:&lt;/p&gt;
8513
8514 &lt;blockquote&gt;&lt;pre&gt;
8515 CONCURRENCY=none
8516 &lt;/pre&gt;&lt;/blockquote&gt;
8517
8518 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
8519 the BTS, please usertag the report to get it to show up at
8520 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
8521 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
8522 </description>
8523 </item>
8524
8525 <item>
8526 <title>Sitesummary tip: Listing MAC address of all clients</title>
8527 <link>http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html</link>
8528 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html</guid>
8529 <pubDate>Fri, 14 May 2010 21:10:00 +0200</pubDate>
8530 <description>&lt;p&gt;In the recent Debian Edu versions, the
8531 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/HowTo/SiteSummary&quot;&gt;sitesummary
8532 system&lt;/a&gt; is used to keep track of the machines in the school
8533 network. Each machine will automatically report its status to the
8534 central server after boot and once per night. The network setup is
8535 also reported, and using this information it is possible to get the
8536 MAC address of all network interfaces in the machines. This is useful
8537 to update the DHCP configuration.&lt;/p&gt;
8538
8539 &lt;p&gt;To give some idea how to use sitesummary, here is a one-liner to
8540 ist all MAC addresses of all machines reporting to sitesummary. Run
8541 this on the collector host:&lt;/p&gt;
8542
8543 &lt;blockquote&gt;&lt;pre&gt;
8544 perl -MSiteSummary -e &#39;for_all_hosts(sub { print join(&quot; &quot;, get_macaddresses(shift)), &quot;\n&quot;; });&#39;
8545 &lt;/pre&gt;&lt;/blockquote&gt;
8546
8547 &lt;p&gt;This will list all MAC addresses assosiated with all machine, one
8548 line per machine and with space between the MAC addresses.&lt;/p&gt;
8549
8550 &lt;p&gt;To allow system administrators easier job at adding static DHCP
8551 addresses for hosts, it would be possible to extend this to fetch
8552 machine information from sitesummary and update the DHCP and DNS
8553 tables in LDAP using this information. Such tool is unfortunately not
8554 written yet.&lt;/p&gt;
8555 </description>
8556 </item>
8557
8558 <item>
8559 <title>systemd, an interesting alternative to upstart</title>
8560 <link>http://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html</link>
8561 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html</guid>
8562 <pubDate>Thu, 13 May 2010 22:20:00 +0200</pubDate>
8563 <description>&lt;p&gt;The last few days a new boot system called
8564 &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd&quot;&gt;systemd&lt;/a&gt;
8565 has been
8566 &lt;a href=&quot;http://0pointer.de/blog/projects/systemd.html&quot;&gt;introduced&lt;/a&gt;
8567
8568 to the free software world. I have not yet had time to play around
8569 with it, but it seem to be a very interesting alternative to
8570 &lt;a href=&quot;http://upstart.ubuntu.com/&quot;&gt;upstart&lt;/a&gt;, and might prove to be
8571 a good alternative for Debian when we are able to switch to an event
8572 based boot system. Tollef is
8573 &lt;a href=&quot;http://bugs.debian.org/580814&quot;&gt;in the process&lt;/a&gt; of getting
8574 systemd into Debian, and I look forward to seeing how well it work. I
8575 like the fact that systemd handles init.d scripts with dependency
8576 information natively, allowing them to run in parallel where upstart
8577 at the moment do not.&lt;/p&gt;
8578
8579 &lt;p&gt;Unfortunately do systemd have the same problem as upstart regarding
8580 platform support. It only work on recent Linux kernels, and also need
8581 some new kernel features enabled to function properly. This means
8582 kFreeBSD and Hurd ports of Debian will need a port or a different boot
8583 system. Not sure how that will be handled if systemd proves to be the
8584 way forward.&lt;/p&gt;
8585
8586 &lt;p&gt;In the mean time, based on the
8587 &lt;a href=&quot;http://lists.debian.org/debian-devel/2010/05/msg00122.html&quot;&gt;input
8588 on debian-devel@&lt;/a&gt; regarding parallel booting in Debian, I have
8589 decided to enable full parallel booting as the default in Debian as
8590 soon as possible (probably this weekend or early next week), to see if
8591 there are any remaining serious bugs in the init.d dependencies. A
8592 new version of the sysvinit package implementing this change is
8593 already in experimental. If all go well, Squeeze will be released
8594 with parallel booting enabled by default.&lt;/p&gt;
8595 </description>
8596 </item>
8597
8598 <item>
8599 <title>Parallellizing the boot in Debian Squeeze - ready for wider testing</title>
8600 <link>http://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html</link>
8601 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html</guid>
8602 <pubDate>Thu, 6 May 2010 23:25:00 +0200</pubDate>
8603 <description>&lt;p&gt;These days, the init.d script dependencies in Squeeze are quite
8604 complete, so complete that it is actually possible to run all the
8605 init.d scripts in parallell based on these dependencies. If you want
8606 to test your Squeeze system, make sure
8607 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
8608 based boot sequencing&lt;/a&gt; is enabled, and add this line to
8609 /etc/default/rcS:&lt;/p&gt;
8610
8611 &lt;blockquote&gt;&lt;pre&gt;
8612 CONCURRENCY=makefile
8613 &lt;/pre&gt;&lt;/blockquote&gt;
8614
8615 &lt;p&gt;That is it. It will cause sysv-rc to use the startpar tool to run
8616 scripts in parallel using the dependency information stored in
8617 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
8618 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
8619 to try to start the kdm and gdm scripts as early as possible, and will
8620 start the facilities required by kdm or gdm as early as possible to
8621 make this happen.&lt;/p&gt;
8622
8623 &lt;p&gt;Give it a try, and see if you like the result. If some services
8624 fail to start properly, it is most likely because they have incomplete
8625 init.d script dependencies in their startup script (or some of their
8626 dependent scripts have incomplete dependencies). Report bugs and get
8627 the package maintainers to fix it. :)&lt;/p&gt;
8628
8629 &lt;p&gt;Running scripts in parallel could be the default in Debian when we
8630 manage to get the init.d script dependencies complete and correct. I
8631 expect we will get there in Squeeze+1, if we get manage to test and
8632 fix the remaining issues.&lt;/p&gt;
8633
8634 &lt;p&gt;If you report any problems with dependencies in init.d scripts to
8635 the BTS, please usertag the report to get it to show up at
8636 &lt;a href=&quot;http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org&quot;&gt;the
8637 list of usertagged bugs related to this&lt;/a&gt;.&lt;/p&gt;
8638 </description>
8639 </item>
8640
8641 <item>
8642 <title>Debian has switched to dependency based boot sequencing</title>
8643 <link>http://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html</link>
8644 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html</guid>
8645 <pubDate>Mon, 27 Jul 2009 23:50:00 +0200</pubDate>
8646 <description>&lt;p&gt;Since this evening, with the upload of sysvinit version 2.87dsf-2,
8647 and the upload of insserv version 1.12.0-10 yesterday, Debian unstable
8648 have been migrated to using dependency based boot sequencing. This
8649 conclude work me and others have been doing for the last three days.
8650 It feels great to see this finally part of the default Debian
8651 installation. Now we just need to weed out the last few problems that
8652 are bound to show up, to get everything ready for Squeeze.&lt;/p&gt;
8653
8654 &lt;p&gt;The next step is migrating /sbin/init from sysvinit to upstart, and
8655 fixing the more fundamental problem of handing the event based
8656 non-predictable kernel in the early boot.&lt;/p&gt;
8657 </description>
8658 </item>
8659
8660 <item>
8661 <title>Taking over sysvinit development</title>
8662 <link>http://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html</link>
8663 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html</guid>
8664 <pubDate>Wed, 22 Jul 2009 23:00:00 +0200</pubDate>
8665 <description>&lt;p&gt;After several years of frustration with the lack of activity from
8666 the existing sysvinit upstream developer, I decided a few weeks ago to
8667 take over the package and become the new upstream. The number of
8668 patches to track for the Debian package was becoming a burden, and the
8669 lack of synchronization between the distribution made it hard to keep
8670 the package up to date.&lt;/p&gt;
8671
8672 &lt;p&gt;On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
8673 and my Debian co-maintainer Kel Modderman. About 10 days ago, I made
8674 a new upstream tarball with version number 2.87dsf (for Debian, SuSe
8675 and Fedora), based on the patches currently in use in these
8676 distributions. We Debian maintainers plan to move to this tarball as
8677 the new upstream as soon as we find time to do the merge. Since the
8678 new tarball was created, we agreed with Werner at SuSe to make a new
8679 upstream project at &lt;a href=&quot;http://savannah.nongnu.org/&quot;&gt;Savannah&lt;/a&gt;, and continue
8680 development there. The project is registered and currently waiting
8681 for approval by the Savannah administrators, and as soon as it is
8682 approved, we will import the old versions from svn and continue
8683 working on the future release.&lt;/p&gt;
8684
8685 &lt;p&gt;It is a bit ironic that this is done now, when some of the involved
8686 distributions are moving to upstart as a syvinit replacement.&lt;/p&gt;
8687 </description>
8688 </item>
8689
8690 <item>
8691 <title>Debian boots quicker and quicker</title>
8692 <link>http://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html</link>
8693 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html</guid>
8694 <pubDate>Wed, 24 Jun 2009 21:40:00 +0200</pubDate>
8695 <description>&lt;p&gt;I spent Monday and tuesday this week in London with a lot of the
8696 people involved in the boot system on Debian and Ubuntu, to see if we
8697 could find more ways to speed up the boot system. This was an Ubuntu
8698 funded
8699 &lt;a href=&quot;https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint&quot;&gt;developer
8700 gathering&lt;/a&gt;. It was quite productive. We also discussed the future
8701 of boot systems, and ways to handle the increasing number of boot
8702 issues introduced by the Linux kernel becoming more and more
8703 asynchronous and event base. The Ubuntu approach using udev and
8704 upstart might be a good way forward. Time will show.&lt;/p&gt;
8705
8706 &lt;p&gt;Anyway, there are a few ways at the moment to speed up the boot
8707 process in Debian. All of these should be applied to get a quick
8708 boot:&lt;/p&gt;
8709
8710 &lt;ul&gt;
8711
8712 &lt;li&gt;Use dash as /bin/sh.&lt;/li&gt;
8713
8714 &lt;li&gt;Disable the init.d/hwclock*.sh scripts and make sure the hardware
8715 clock is in UTC.&lt;/li&gt;
8716
8717 &lt;li&gt;Install and activate the insserv package to enable
8718 &lt;a href=&quot;http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot&quot;&gt;dependency
8719 based boot sequencing&lt;/a&gt;, and enable concurrent booting.&lt;/li&gt;
8720
8721 &lt;/ul&gt;
8722
8723 These points are based on the Google summer of code work done by
8724 &lt;a href=&quot;http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/&quot;&gt;Carlos
8725 Villegas&lt;/a&gt;.
8726
8727 &lt;p&gt;Support for makefile-style concurrency during boot was uploaded to
8728 unstable yesterday. When we tested it, we were able to cut 6 seconds
8729 from the boot sequence. It depend on very correct dependency
8730 declaration in all init.d scripts, so I expect us to find edge cases
8731 where the dependences in some scripts are slightly wrong when we start
8732 using this.&lt;/p&gt;
8733
8734 &lt;p&gt;On our IRC channel for this effort, #pkg-sysvinit, a new idea was
8735 introduced by Raphael Geissert today, one that could affect the
8736 startup speed as well. Instead of starting some scripts concurrently
8737 from rcS.d/ and another set of scripts from rc2.d/, it would be
8738 possible to run a of them in the same process. A quick way to test
8739 this would be to enable insserv and run &#39;mv /etc/rc2.d/S* /etc/rcS.d/;
8740 insserv&#39;. Will need to test if that work. :)&lt;/p&gt;
8741 </description>
8742 </item>
8743
8744 <item>
8745 <title>BSAs påstander om piratkopiering møter motstand</title>
8746 <link>http://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html</link>
8747 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html</guid>
8748 <pubDate>Sun, 17 May 2009 23:05:00 +0200</pubDate>
8749 <description>&lt;p&gt;Hvert år de siste årene har BSA, lobbyfronten til de store
8750 programvareselskapene som Microsoft og Apple, publisert en rapport der
8751 de gjetter på hvor mye piratkopiering påfører i tapte inntekter i
8752 ulike land rundt om i verden. Resultatene er tendensiøse. For noen
8753 dager siden kom
8754 &lt;a href=&quot;http://global.bsa.org/globalpiracy2008/studies/globalpiracy2008.pdf&quot;&gt;siste
8755 rapport&lt;/a&gt;, og det er flere kritiske kommentarer publisert de siste
8756 dagene. Et spesielt interessant kommentar fra Sverige,
8757 &lt;a href=&quot;http://www.idg.se/2.1085/1.229795/bsa-hoftade-sverigesiffror&quot;&gt;BSA
8758 höftade Sverigesiffror&lt;/a&gt;, oppsummeres slik:&lt;/p&gt;
8759
8760 &lt;blockquote&gt;
8761 I sin senaste rapport slår BSA fast att 25 procent av all mjukvara i
8762 Sverige är piratkopierad. Det utan att ha pratat med ett enda svenskt
8763 företag. &quot;Man bör nog kanske inte se de här siffrorna som helt
8764 exakta&quot;, säger BSAs Sverigechef John Hugosson.
8765 &lt;/blockquote&gt;
8766
8767 &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
8768 href=&quot;http://www.vnunet.com/vnunet/comment/2242134/bsa-piracy-figures-shot-reality&quot;&gt;BSA
8769 piracy figures need a shot of reality&lt;/a&gt; og &lt;a
8770 href=&quot;http://www.michaelgeist.ca/content/view/3958/125/&quot;&gt;Does The WIPO
8771 Copyright Treaty Work?&lt;/a&gt;&lt;/p&gt;
8772
8773 &lt;p&gt;Fant lenkene via &lt;a
8774 href=&quot;http://tech.slashdot.org/article.pl?sid=09/05/17/1632242&quot;&gt;oppslag
8775 på Slashdot&lt;/a&gt;.&lt;/p&gt;
8776 </description>
8777 </item>
8778
8779 <item>
8780 <title>IDG mener linux i servermarkedet vil vokse med 21% i 2009</title>
8781 <link>http://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html</link>
8782 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html</guid>
8783 <pubDate>Thu, 7 May 2009 22:30:00 +0200</pubDate>
8784 <description>&lt;p&gt;Kom over
8785 &lt;a href=&quot;http://news.cnet.com/8301-13505_3-10216873-16.html&quot;&gt;interessante
8786 tall&lt;/a&gt; fra IDG om utviklingen av linuxservermarkedet. Fikk meg til
8787 å tenke på antall tjenermaskiner ved Universitetet i Oslo der jeg
8788 jobber til daglig. En rask opptelling forteller meg at vi har 490
8789 (61%) fysiske unix-tjener (mest linux men også noen solaris) og 196
8790 (25%) windowstjenere, samt 112 (14%) virtuelle unix-tjenere. Med den
8791 bakgrunnskunnskapen kan jeg godt tro at IDG er inne på noe.&lt;/p&gt;
8792 </description>
8793 </item>
8794
8795 <item>
8796 <title>Kryptert harddisk - naturligvis</title>
8797 <link>http://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html</link>
8798 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html</guid>
8799 <pubDate>Sat, 2 May 2009 15:30:00 +0200</pubDate>
8800 <description>&lt;p&gt;&lt;a href=&quot;http://www.dagensit.no/trender/article1658676.ece&quot;&gt;Dagens
8801 IT melder&lt;/a&gt; at Intel hevder at det er dyrt å miste en datamaskin,
8802 når en tar tap av arbeidstid, fortrolige dokumenter,
8803 personopplysninger og alt annet det innebærer. Det er ingen tvil om
8804 at det er en kostbar affære å miste sin datamaskin, og det er årsaken
8805 til at jeg har kryptert harddisken på både kontormaskinen og min
8806 bærbare. Begge inneholder personopplysninger jeg ikke ønsker skal
8807 komme på avveie, den første informasjon relatert til jobben min ved
8808 Universitetet i Oslo, og den andre relatert til blant annet
8809 foreningsarbeide. Kryptering av diskene gjør at det er lite
8810 sannsynlig at dophoder som kan finne på å rappe maskinene får noe ut
8811 av dem. Maskinene låses automatisk etter noen minutter uten bruk,
8812 og en reboot vil gjøre at de ber om passord før de vil starte opp.
8813 Jeg bruker Debian på begge maskinene, og installasjonssystemet der
8814 gjør det trivielt å sette opp krypterte disker. Jeg har LVM på toppen
8815 av krypterte partisjoner, slik at alt av datapartisjoner er kryptert.
8816 Jeg anbefaler alle å kryptere diskene på sine bærbare. Kostnaden når
8817 det er gjort slik jeg gjør det er minimale, og gevinstene er
8818 betydelige. En bør dog passe på passordet. Hvis det går tapt, må
8819 maskinen reinstalleres og alt er tapt.&lt;/p&gt;
8820
8821 &lt;p&gt;Krypteringen vil ikke stoppe kompetente angripere som f.eks. kjøler
8822 ned minnebrikkene før maskinen rebootes med programvare for å hente ut
8823 krypteringsnøklene. Kostnaden med å forsvare seg mot slike angripere
8824 er for min del høyere enn gevinsten. Jeg tror oddsene for at
8825 f.eks. etteretningsorganisasjoner har glede av å titte på mine
8826 maskiner er minimale, og ulempene jeg ville oppnå ved å forsøke å
8827 gjøre det vanskeligere for angripere med kompetanse og ressurser er
8828 betydelige.&lt;/p&gt;
8829 </description>
8830 </item>
8831
8832 <item>
8833 <title>Two projects that have improved the quality of free software a lot</title>
8834 <link>http://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html</link>
8835 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html</guid>
8836 <pubDate>Sat, 2 May 2009 15:00:00 +0200</pubDate>
8837 <description>&lt;p&gt;There are two software projects that have had huge influence on the
8838 quality of free software, and I wanted to mention both in case someone
8839 do not yet know them.&lt;/p&gt;
8840
8841 &lt;p&gt;The first one is &lt;a href=&quot;http://valgrind.org/&quot;&gt;valgrind&lt;/a&gt;, a
8842 tool to detect and expose errors in the memory handling of programs.
8843 It is easy to use, all one need to do is to run &#39;valgrind program&#39;,
8844 and it will report any problems on stdout. It is even better if the
8845 program include debug information. With debug information, it is able
8846 to report the source file name and line number where the problem
8847 occurs. It can report things like &#39;reading past memory block in file
8848 X line N, the memory block was allocated in file Y, line M&#39;, and
8849 &#39;using uninitialised value in control logic&#39;. This tool has made it
8850 trivial to investigate reproducible crash bugs in programs, and have
8851 reduced the number of this kind of bugs in free software a lot.
8852
8853 &lt;p&gt;The second one is
8854 &lt;a href=&quot;http://en.wikipedia.org/wiki/Coverity&quot;&gt;Coverity&lt;/a&gt; which is
8855 a source code checker. It is able to process the source of a program
8856 and find problems in the logic without running the program. It
8857 started out as the Stanford Checker and became well known when it was
8858 used to find bugs in the Linux kernel. It is now a commercial tool
8859 and the company behind it is running
8860 &lt;a href=&quot;http://www.scan.coverity.com/&quot;&gt;a community service&lt;/a&gt; for the
8861 free software community, where a lot of free software projects get
8862 their source checked for free. Several thousand defects have been
8863 found and fixed so far. It can find errors like &#39;lock L taken in file
8864 X line N is never released if exiting in line M&#39;, or &#39;the code in file
8865 Y lines O to P can never be executed&#39;. The projects included in the
8866 community service project have managed to get rid of a lot of
8867 reliability problems thanks to Coverity.&lt;/p&gt;
8868
8869 &lt;p&gt;I believe tools like this, that are able to automatically find
8870 errors in the source, are vital to improve the quality of software and
8871 make sure we can get rid of the crashing and failing software we are
8872 surrounded by today.&lt;/p&gt;
8873 </description>
8874 </item>
8875
8876 <item>
8877 <title>No patch is not better than a useless patch</title>
8878 <link>http://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html</link>
8879 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html</guid>
8880 <pubDate>Tue, 28 Apr 2009 09:30:00 +0200</pubDate>
8881 <description>&lt;p&gt;Julien Blache
8882 &lt;a href=&quot;http://blog.technologeek.org/2009/04/12/214&quot;&gt;claim that no
8883 patch is better than a useless patch&lt;/a&gt;. I completely disagree, as a
8884 patch allow one to discuss a concrete and proposed solution, and also
8885 prove that the issue at hand is important enough for someone to spent
8886 time on fixing it. No patch do not provide any of these positive
8887 properties.&lt;/p&gt;
8888 </description>
8889 </item>
8890
8891 <item>
8892 <title>Standardize on protocols and formats, not vendors and applications</title>
8893 <link>http://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html</link>
8894 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html</guid>
8895 <pubDate>Mon, 30 Mar 2009 11:50:00 +0200</pubDate>
8896 <description>&lt;p&gt;Where I work at the University of Oslo, one decision stand out as a
8897 very good one to form a long lived computer infrastructure. It is the
8898 simple one, lost by many in todays computer industry: Standardize on
8899 open network protocols and open exchange/storage formats, not applications.
8900 Applications come and go, while protocols and files tend to stay, and
8901 thus one want to make it easy to change application and vendor, while
8902 avoiding conversion costs and locking users to a specific platform or
8903 application.&lt;/p&gt;
8904
8905 &lt;p&gt;This approach make it possible to replace the client applications
8906 independently of the server applications. One can even allow users to
8907 use several different applications as long as they handle the selected
8908 protocol and format. In the normal case, only one client application
8909 is recommended and users only get help if they choose to use this
8910 application, but those that want to deviate from the easy path are not
8911 blocked from doing so.&lt;/p&gt;
8912
8913 &lt;p&gt;It also allow us to replace the server side without forcing the
8914 users to replace their applications, and thus allow us to select the
8915 best server implementation at any moment, when scale and resouce
8916 requirements change.&lt;/p&gt;
8917
8918 &lt;p&gt;I strongly recommend standardizing - on open network protocols and
8919 open formats, but I would never recommend standardizing on a single
8920 application that do not use open network protocol or open formats.&lt;/p&gt;
8921 </description>
8922 </item>
8923
8924 <item>
8925 <title>Returning from Skolelinux developer gathering</title>
8926 <link>http://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html</link>
8927 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html</guid>
8928 <pubDate>Sun, 29 Mar 2009 21:00:00 +0200</pubDate>
8929 <description>&lt;p&gt;I&#39;m sitting on the train going home from this weekends Debian
8930 Edu/Skolelinux development gathering. I got a bit done tuning the
8931 desktop, and looked into the dynamic service location protocol
8932 implementation avahi. It look like it could be useful for us. Almost
8933 30 people participated, and I believe it was a great environment to
8934 get to know the Skolelinux system. Walter Bender, involved in the
8935 development of the Sugar educational platform, presented his stuff and
8936 also helped me improve my OLPC installation. He also showed me that
8937 his Turtle Art application can be used in standalone mode, and we
8938 agreed that I would help getting it packaged for Debian. As a
8939 standalone application it would be great for Debian Edu. We also
8940 tried to get the video conferencing working with two OLPCs, but that
8941 proved to be too hard for us. The application seem to need more work
8942 before it is ready for me. I look forward to getting home and relax
8943 now. :)&lt;/p&gt;
8944 </description>
8945 </item>
8946
8947 <item>
8948 <title>Time for new LDAP schemas replacing RFC 2307?</title>
8949 <link>http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</link>
8950 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html</guid>
8951 <pubDate>Sun, 29 Mar 2009 20:30:00 +0200</pubDate>
8952 <description>&lt;p&gt;The state of standardized LDAP schemas on Linux is far from
8953 optimal. There is RFC 2307 documenting one way to store NIS maps in
8954 LDAP, and a modified version of this normally called RFC 2307bis, with
8955 some modifications to be compatible with Active Directory. The RFC
8956 specification handle the content of a lot of system databases, but do
8957 not handle DNS zones and DHCP configuration.&lt;/p&gt;
8958
8959 &lt;p&gt;In &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Debian Edu/Skolelinux&lt;/a&gt;,
8960 we would like to store information about users, SMB clients/hosts,
8961 filegroups, netgroups (users and hosts), DHCP and DNS configuration,
8962 and LTSP configuration in LDAP. These objects have a lot in common,
8963 but with the current LDAP schemas it is not possible to have one
8964 object per entity. For example, one need to have at least three LDAP
8965 objects for a given computer, one with the SMB related stuff, one with
8966 DNS information and another with DHCP information. The schemas
8967 provided for DNS and DHCP are impossible to combine into one LDAP
8968 object. In addition, it is impossible to implement quick queries for
8969 netgroup membership, because of the way NIS triples are implemented.
8970 It just do not scale. I believe it is time for a few RFC
8971 specifications to cleam up this mess.&lt;/p&gt;
8972
8973 &lt;p&gt;I would like to have one LDAP object representing each computer in
8974 the network, and this object can then keep the SMB (ie host key), DHCP
8975 (mac address/name) and DNS (name/IP address) settings in one place.
8976 It need to be efficently stored to make sure it scale well.&lt;/p&gt;
8977
8978 &lt;p&gt;I would also like to have a quick way to map from a user or
8979 computer and to the net group this user or computer is a member.&lt;/p&gt;
8980
8981 &lt;p&gt;Active Directory have done a better job than unix heads like myself
8982 in this regard, and the unix side need to catch up. Time to start a
8983 new IETF work group?&lt;/p&gt;
8984 </description>
8985 </item>
8986
8987 <item>
8988 <title>Endelig er Debian Lenny gitt ut</title>
8989 <link>http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html</link>
8990 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html</guid>
8991 <pubDate>Sun, 15 Feb 2009 11:50:00 +0100</pubDate>
8992 <description>&lt;p&gt;Endelig er &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;
8993 &lt;a href=&quot;http://www.debian.org/News/2009/20090214&quot;&gt;Lenny&lt;/a&gt; gitt ut.
8994 Et langt steg videre for Debian-prosjektet, og en rekke nye
8995 programpakker blir nå tilgjengelig for de av oss som bruker den
8996 stabile utgaven av Debian. Neste steg er nå å få
8997 &lt;a href=&quot;http://www.skolelinux.org/&quot;&gt;Skolelinux&lt;/a&gt; /
8998 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/&quot;&gt;Debian Edu&lt;/a&gt; ferdig
8999 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
9000 slippes løs på skolene. Takk til alle debian-utviklerne som har
9001 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
9002 bootsekvens tilgjengelig i stabil utgave, vha pakken
9003 &lt;tt&gt;insserv&lt;/tt&gt;.&lt;/p&gt;
9004 </description>
9005 </item>
9006
9007 <item>
9008 <title>Devcamp brought us closer to the Lenny based Debian Edu release</title>
9009 <link>http://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html</link>
9010 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html</guid>
9011 <pubDate>Sun, 7 Dec 2008 12:00:00 +0100</pubDate>
9012 <description>&lt;p&gt;This weekend we had a small developer gathering for Debian Edu in
9013 Oslo. Most of Saturday was used for the general assemly for the
9014 member organization, but the rest of the weekend I used to tune the
9015 LTSP installation. LTSP now work out of the box on the 10-network.
9016 Acer Aspire One proved to be a very nice thin client, with both
9017 screen, mouse and keybard in a small box. Was working on getting the
9018 diskless workstation setup configured out of the box, but did not
9019 finish it before the weekend was up.&lt;/p&gt;
9020
9021 &lt;p&gt;Did not find time to look at the 4 VGA cards in one box we got from
9022 the Brazilian group, so that will have to wait for the next
9023 development gathering. Would love to have the Debian Edu installer
9024 automatically detect and configure a multiseat setup when it find one
9025 of these cards.&lt;/p&gt;
9026 </description>
9027 </item>
9028
9029 <item>
9030 <title>The sorry state of multimedia browser plugins in Debian</title>
9031 <link>http://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html</link>
9032 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html</guid>
9033 <pubDate>Tue, 25 Nov 2008 00:10:00 +0100</pubDate>
9034 <description>&lt;p&gt;Recently I have spent some time evaluating the multimedia browser
9035 plugins available in Debian Lenny, to see which one we should use by
9036 default in Debian Edu. We need an embedded video playing plugin with
9037 control buttons to pause or stop the video, and capable of streaming
9038 all the multimedia content available on the web. The test results and
9039 notes are available on
9040 &lt;a href=&quot;http://wiki.debian.org/DebianEdu/BrowserMultimedia&quot;&gt;the
9041 Debian wiki&lt;/a&gt;. I was surprised how few of the plugins are able to
9042 fill this need. My personal video player favorite, VLC, has a really
9043 bad plugin which fail on a lot of the test pages. A lot of the MIME
9044 types I would expect to work with any free software player (like
9045 video/ogg), just do not work. And simple formats like the
9046 audio/x-mplegurl format (m3u playlists), just isn&#39;t supported by the
9047 totem and vlc plugins. I hope the situation will improve soon. No
9048 wonder sites use the proprietary Adobe flash to play video.&lt;/p&gt;
9049
9050 &lt;p&gt;For Lenny, we seem to end up with the mplayer plugin. It seem to
9051 be the only one fitting our needs. :/&lt;/p&gt;
9052 </description>
9053 </item>
9054
9055 </channel>
9056 </rss>