1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Entries Tagged debian
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"debian.rss" type=
"application/rss+xml" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <h3>Entries tagged "debian".
</h3>
25 <a href=
"http://people.skolelinux.org/pere/blog/Buster_update_of_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_almost_done.html">Buster update of Norwegian Bokmål edition of Debian Administrator's Handbook almost done
</a>
31 <p>Thanks to the good work of several volunteers, the updated edition
32 of the Norwegian translation for
33 "
<a href=
"https://debian-handbook.info/">The Debian Administrator's
34 Handbook
</a>" is now almost completed. After many months of proof
35 reading, I consider the proof reading complete enough for us to move
36 to the next step, and have asked for the print version to be prepared
37 and sent of to the print on demand service lulu.com. While it is
38 still not to late if you find any incorrect translations on
39 <a href="https://hosted.weblate.org/languages/nb_NO/debian-handbook/
">the
40 hosted Weblate service</a>, but it will be soon. :) You can check out
41 <a href=" https://debian-handbook.info/browse/nb-NO/stable/
">the Buster
42 edition on the web</a> until the print edition is ready.</p>
44 <p>The book will be for sale on lulu.com and various web book stores,
45 with links available from the web site for the book linked to above.
46 I hope a lot of readers find it useful.</p>
48 <p>As usual, if you use Bitcoin and want to show your support of my
49 activities, please send Bitcoin donations to my address
50 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
56 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook
">debian-handbook</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
61 <div class="padding
"></div>
65 <a href="http://people.skolelinux.org/pere/blog/Working_on_updated_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html
">Working on updated Norwegian Bokmål edition of Debian Administrator's Handbook</a>
71 <p>Three years ago, the first Norwegian Bokmål edition of
72 "<a href=
"https://debian-handbook.info/">The Debian Administrator's
73 Handbook
</a>" was published. This was based on Debian Jessie. Now a
74 new and updated version based on Buster is getting ready. Work on the
75 updated Norwegian Bokmål edition has been going on for a few months
76 now, and yesterday, we reached the first mile stone, with 100% of the
77 texts being translated. A lot of proof reading remains, of course,
78 but a major step towards a new edition has been taken.</p>
80 <p>The book is translated by volunteers, and we would love to get some
81 help with the proof reading. The translation uses
82 <a href="https://hosted.weblate.org/languages/nb_NO/debian-handbook/
">the
83 hosted Weblate service</a>, and we welcome everyone to have a look and
84 submit improvements and suggestions. There is also a proof readers
85 PDF available on request, get in touch if you want to help out that
88 <p>As usual, if you use Bitcoin and want to show your support of my
89 activities, please send Bitcoin donations to my address
90 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
96 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook
">debian-handbook</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
101 <div class="padding
"></div>
105 <a href="http://people.skolelinux.org/pere/blog/Secure_Socket_API___a_simple_and_powerful_approach_for_TLS_support_in_software.html
">Secure Socket API - a simple and powerful approach for TLS support in software</a>
111 <p>As a member of the <a href="https://www.nuug.no/
">Norwegian Unix
112 User Group</a>, I have the pleasure of receiving the
113 <a href="https://www.usenix.org/
">USENIX</a> magazine
114 <a href="https://www.usenix.org/publications/login/
">;login:</a>
115 several times a year. I rarely have time to read all the articles,
116 but try to at least skim through them all as there is a lot of nice
117 knowledge passed on there. I even carry the latest issue with me most
118 of the time to try to get through all the articles when I have a few
121 <p>The other day I came across a nice article titled
122 "<a href=
"https://www.usenix.org/publications/login/winter2018/oneill">The
123 Secure Socket API: TLS as an Operating System Service
</a>" with a
124 marvellous idea I hope can make it all the way into the POSIX standard.
125 The idea is as simple as it is powerful. By introducing a new
126 socket() option IPPROTO_TLS to use TLS, and a system wide service to
127 handle setting up TLS connections, one both make it trivial to add TLS
128 support to any program currently using the POSIX socket API, and gain
129 system wide control over certificates, TLS versions and encryption
130 systems used. Instead of doing this:</p>
133 int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
134 </pre></blockquote></p>
136 <p>the program code would be doing this:<p>
139 int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TLS);
140 </pre></blockquote></p>
142 <p>According to the ;login: article, converting a C program to use TLS
143 would normally modify only 5-10 lines in the code, which is amazing
144 when compared to using for example the OpenSSL API.</p>
146 <p>The project has set up the
147 <a href="https://securesocketapi.org/
">https://securesocketapi.org/</a>
148 web site to spread the idea, and the code for a kernel module and the
149 associated system daemon is available from two github repositories:
150 <a href="https://github.com/markoneill/ssa
">ssa</a> and
151 <a href="https://github.com/markoneill/ssa-daemon
">ssa-daemon</a>.
152 Unfortunately there is no explicit license information with the code,
153 so its copyright status is unclear. A
154 <a href="https://github.com/markoneill/ssa/issues/
2">request to solve
155 this</a> about it has been unsolved since 2018-08-17.</p>
157 <p>I love the idea of extending socket() to gain TLS support, and
158 understand why it is an advantage to implement this as a kernel module
159 and system wide service daemon, but can not help to think that it
160 would be a lot easier to get projects to move to this way of setting
161 up TLS if it was done with a user space approach where programs
162 wanting to use this API approach could just link with a wrapper
165 <p>I recommend you check out this simple and powerful approach to more
166 secure network connections. :)</p>
168 <p>As usual, if you use Bitcoin and want to show your support of my
169 activities, please send Bitcoin donations to my address
170 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
176 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin</a>.
181 <div class="padding
"></div>
185 <a href="http://people.skolelinux.org/pere/blog/Jami_as_a_Zoom_client__a_trick_for_password_protected_rooms___.html
">Jami as a Zoom client, a trick for password protected rooms...</a>
192 <a href="http://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html
">I
193 wrote</a> about <a href="https://jami.net/
">the Jami communication
194 client</a>, capable of peer-to-peer encrypted communication. It
195 handle both messages, audio and video. It uses distributed hash
196 tables instead of central infrastructure to connect its users to each
197 other, which in my book is a plus. I mentioned briefly that it could
198 also work as a SIP client, which came in handy when the higher
199 educational sector in Norway started to promote Zoom as its video
200 conferencing solution. I am reluctant to use the official Zoom client
201 software, due to their <a href="https://zoom.us/terms
">copyright
202 license clauses</a> prohibiting users to reverse engineer (for example
203 to check the security) and benchmark it, and thus prefer to connect to
204 Zoom meetings with free software clients.</p>
206 <p>Jami worked OK as a SIP client to Zoom as long as there was no
207 password set on the room. The Jami daemon leak memory like crazy
208 (approximately 1 GiB a minute) when I am connected to the video
209 conference, so I had to restart the client every 7-10 minutes, which
210 is not a great. I tried to get other SIP Linux clients to work
211 without success, so I decided I would have to live with this wart
212 until someone managed to fix the leak in the dring code base. But
213 another problem showed up once the rooms were password protected. I
214 could not get my dial tone signaling through from Jami to Zoom, and
215 dial tone signaling is used to enter the password when connecting to
216 Zoom. I tried a lot of different permutations with my Jami and
217 Asterisk setup to try to figure out why the signaling did not get
218 through, only to finally discover that the fundamental problem seem to
219 be that Zoom is simply not able to receive dial tone signaling when
220 connecting via SIP. There seem to be nothing wrong with the Jami and
221 Asterisk end, it is simply broken in the Zoom end. I got help from a
222 very skilled VoIP engineer figuring out this last part. And being a
223 very skilled engineer, he was also able to locate a solution for me.
224 Or to be exact, a workaround that solve my initial problem of
225 connecting to password protected Zoom rooms using Jami.</p>
227 <p>So, how do you do this, I am sure you are wondering by now. The
229 <a href="https://support.zoom.us/hc/en-us/articles/
202405539-H-
323-SIP-Room-Connector-Dial-Strings#sip
">documented
230 from Zoom</a>, and it is to modify the SIP address to include the room
231 password. What is most surprising about this is that the
232 automatically generated email from Zoom with instructions on how to
233 connect via SIP do not mention this. The SIP address to use normally
234 consist of the room ID (a number), an @ character and the IP address
235 of the Zoom SIP gateway. But Zoom understand a lot more than just the
236 room ID in front of the at sign. The format is "<tt>[Meeting
237 ID].[Password].[Layout].[Host Key]
</tt>", and you can hear see how you
238 can both enter password, control the layout (full screen, active
239 presence and gallery) and specify the host key to start the meeting.
240 The full SIP address entered into Jami to provide the password will
241 then look like this (all using made up numbers):</p>
244 <tt>sip:657837644.522827@192.168.169.170</tt>
247 <p>Now if only jami would reduce its memory usage, I could even
248 recommend this setup to others. :)</p>
250 <p>As usual, if you use Bitcoin and want to show your support of my
251 activities, please send Bitcoin donations to my address
252 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
258 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance</a>.
263 <div class="padding
"></div>
267 <a href="http://people.skolelinux.org/pere/blog/GnuCOBOL__a_free_platform_to_learn_and_use_COBOL___nice_free_software.html
">GnuCOBOL, a free platform to learn and use COBOL - nice free software</a>
273 <p>The curiosity got the better of me when
274 <a href="https://developers.slashdot.org/story/
20/
04/
06/
1424246/new-jersey-desperately-needs-cobol-programmers
">Slashdot
275 reported</a> that New Jersey was desperately looking for
276 <a href="https://en.wikipedia.org/wiki/COBOL
">COBOL</a> programmers,
277 and a few days later it was reported that
278 <a href="https://onezero.medium.com/ibm-rallies-cobol-engineers-to-save-overloaded-unemployment-systems-eeadf13eddce
">IBM
279 tried to locate COBOL programmers</a>.</p>
281 <p>I thus decided to have a look at free software alternatives to
282 learn COBOL, and had the pleasure to find
283 <a href="https://sourceforge.net/projects/open-cobol/
">GnuCOBOL</a> was
284 already <a href="https://tracker.debian.org/pkg/gnucobol
">in
285 Debian</a>. It used to be called Open Cobol, and is a "compiler"
286 transforming COBOL code to C or C++ before giving it to GCC or Visual
287 Studio to build binaries.
</p>
289 <p>I managed to get in touch with upstream, and was impressed with the
290 quick response, and also was happy to see a new Debian maintainer
291 taking over when the original one recently asked to be replaced. A
292 new Debian upload was done as recently as yesterday.
</p>
294 <p>Using the Debian package, I was able to follow a simple COBOL
295 introduction and make and run simple COBOL programs. It was fun to
296 learn a new programming language. If you want to test for yourself,
297 <a href=
"https://en.wikipedia.org/wiki/GnuCOBOL">the GnuCOBOL Wikipedia
298 page
</a> have a few simple examples to get you startet.
</p>
300 <p>As I do not have much experience with COBOL, I do not know how
301 standard compliant it is, but it claim to pass most tests from COBOL
302 test suite, which sound good to me. It is nice to know it is possible
303 to learn COBOL using software without any usage restrictions, and I am
304 very happy such nice free software project as this is available. If
305 you as me is curious about COBOL, check it out.
</p>
307 <p>As usual, if you use Bitcoin and want to show your support of my
308 activities, please send Bitcoin donations to my address
309 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
315 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
320 <div class=
"padding"></div>
324 <a href=
"http://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html">Jami/Ring, finally functioning peer to peer communication client
</a>
330 <p>Some years ago, in
2016, I
331 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">wrote
332 for the first time about
</a> the Ring peer to peer messaging system.
333 It would provide messaging without any central server coordinating the
334 system and without requiring all users to register a phone number or
335 own a mobile phone. Back then, I could not get it to work, and put it
336 aside until it had seen more development. A few days ago I decided to
337 give it another try, and am happy to report that this time I am able
338 to not only send and receive messages, but also place audio and video
339 calls. But only if UDP is not blocked into your network.
</p>
341 <p>The Ring system changed name earlier this year to
342 <a href=
"https://en.wikipedia.org/wiki/Jami_(software)">Jami
</a>. I
343 tried doing web search for 'ring' when I discovered it for the first
344 time, and can only applaud this change as it is impossible to find
345 something called Ring among the noise of other uses of that word. Now
346 you can search for 'jami' and this client and
347 <a href=
"https://jami.net/">the Jami system
</a> is the first hit at
348 least on duckduckgo.
</p>
350 <p>Jami will by default encrypt messages as well as audio and video
351 calls, and try to send them directly between the communicating parties
352 if possible. If this proves impossible (for example if both ends are
353 behind NAT), it will use a central SIP TURN server maintained by the
354 Jami project. Jami can also be a normal SIP client. If the SIP
355 server is unencrypted, the audio and video calls will also be
356 unencrypted. This is as far as I know the only case where Jami will
357 do anything without encryption.
</p>
359 <p>Jami is available for several platforms: Linux, Windows, MacOSX,
360 Android, iOS, and Android TV. It is included in Debian already. Jami
361 also work for those using F-Droid without any Google connections,
363 <a href=
"https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Protocol">The
364 protocol
</a> is described in the Ring project wiki. The system uses a
365 distributed hash table (DHT) system (similar to BitTorrent) running
366 over UDP. On one of the networks I use, I discovered Jami failed to
367 work. I tracked this down to the fact that incoming UDP packages
368 going to ports
1-
49999 were blocked, and the DHT would pick a random
369 port and end up in the low range most of the time. After talking to
370 the developers, I solved this by enabling the dhtproxy in the
371 settings, thus using TCP to talk to a central DHT proxy instead of
373 peering directly with others. I've been told the developers are
374 working on allowing DHT to use TCP to avoid this problem. I also ran
375 into a problem when trying to talk to the version of Ring included in
376 Debian Stable (Stretch). Apparently the protocol changed between
377 beta2 and the current version, making these clients incompatible.
378 Hopefully the protocol will not be made incompatible in the
381 <p>It is worth noting that while looking at Jami and its features, I
382 came across another communication platform I have not tested yet. The
383 <a href=
"https://en.wikipedia.org/wiki/Tox_(protocol)">Tox protocol
</a>
384 and
<a href=
"https://tox.chat/">family of Tox clients
</a>. It might
385 become the topic of a future blog post.
</p>
387 <p>As usual, if you use Bitcoin and want to show your support of my
388 activities, please send Bitcoin donations to my address
389 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
395 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
400 <div class=
"padding"></div>
404 <a href=
"http://people.skolelinux.org/pere/blog/Strategispillet_Unknown_Horizons_n__tilgjengelig_p__bokm_l.html">Strategispillet Unknown Horizons nå tilgjengelig på bokmål
</a>
410 <p>I høst ble jeg inspirert til å bidra til oversettelsen av
411 <a href=
"http://unknown-horizons.org/">strategispillet Unknown
412 Horizons
</a>, og oversatte de nesten
200 strengene i prosjektet til
413 bokmål. Deretter har jeg gått å ventet på at det kom en ny utgave som
414 inneholdt disse oversettelsene. Nå er endelig ventetiden over. Den
415 nye versjonen kom på nyåret, og ble
416 <a href=
"https://tracker.debian.org/pkg/unknown-horizons">lastet opp i
417 Debian
</a> for noen få dager siden. I går kveld fikk jeg testet det ut, og
418 må innrømme at oversettelsene fungerer fint. Fant noen få tekster som
419 måtte justeres, men ikke noe alvorlig. Har oppdatert
420 <a href=
"https://hosted.weblate.org/projects/uh/">oversettelsen på
421 Weblate
</a>, slik at neste utgave vil være enda bedre. :)
</p>
423 <p>Spillet er et ressursstyringsspill ala Civilization, og er morsomt
424 å spille for oss som liker slikt. :)
</p>
426 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
427 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
429 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
430 Merk, betaling med bitcoin er ikke anonymt. :)
</p>
436 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
441 <div class=
"padding"></div>
445 <a href=
"http://people.skolelinux.org/pere/blog/Debian_now_got_everything_you_need_to_program_Micro_bit.html">Debian now got everything you need to program Micro:bit
</a>
451 <p>I am amazed and very pleased to discover that since a few days ago,
452 everything you need to program the
<a href=
"https://microbit.org/">BBC
453 micro:bit
</a> is available from the Debian archive. All this is
454 thanks to the hard work of Nick Morrott and the Debian python
455 packaging team. The micro:bit project recommend the mu-editor to
456 program the microcomputer, as this editor will take care of all the
457 machinery required to injekt/flash micropython alongside the program
458 into the micro:bit, as long as the pieces are available.
</p>
460 <p>There are three main pieces involved. The first to enter Debian
462 <a href=
"https://tracker.debian.org/pkg/python-uflash">python-uflash
</a>,
463 which was accepted into the archive
2019-
01-
12. The next one was
464 <a href=
"https://tracker.debian.org/pkg/mu-editor">mu-editor
</a>, which
465 showed up
2019-
01-
13. The final and hardest part to to into the
467 <a href=
"https://tracker.debian.org/pkg/firmware-microbit-micropython">firmware-microbit-micropython
</a>,
468 which needed to get its build system and dependencies into Debian
469 before it was accepted
2019-
01-
20. The last one is already in Debian
470 Unstable and should enter Debian Testing / Buster in three days. This
471 all allow any user of the micro:bit to get going by simply running
472 'apt install mu-editor' when using Testing or Unstable, and once
473 Buster is released as stable, all the users of Debian stable will be
476 <p>As a minor final touch, I added rules to
477 <a href=
"https://tracker.debian.org/pkg/isenkram">the isenkram
478 package
</a> for recognizing micro:bit and recommend the mu-editor
479 package. This make sure any user of the isenkram desktop daemon will
480 get a popup suggesting to install mu-editor then the USB cable from
481 the micro:bit is inserted for the first time.
</p>
483 <p>This should make it easier to have fun.
</p>
485 <p>As usual, if you use Bitcoin and want to show your support of my
486 activities, please send Bitcoin donations to my address
487 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
493 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot
</a>.
498 <div class=
"padding"></div>
502 <a href=
"http://people.skolelinux.org/pere/blog/Learn_to_program_with_Minetest_on_Debian.html">Learn to program with Minetest on Debian
</a>
508 <p>A fun way to learn how to program
509 <a href=
"https://www.python.org/">Python
</a> is to follow the
510 instructions in the book
511 "
<a href=
"https://nostarch.com/programwithminecraft">Learn to program
512 with Minecraft
</a>", which introduces programming in Python to people
513 who like to play with Minecraft. The book uses a Python library to
514 talk to a TCP/IP socket with an API accepting build instructions and
515 providing information about the current players in a Minecraft world.
516 The TCP/IP API was first created for the Minecraft implementation for
517 Raspberry Pi, and has since been ported to some server versions of
518 Minecraft. The book contain recipes for those using Windows, MacOSX
519 and Raspian. But a little known fact is that you can follow the same
520 recipes using the free software construction game
521 <a href="https://minetest.net/
">Minetest</a>.</p>
523 <p>There is <a href="https://github.com/sprintingkiwi/pycraft_mod
">a
524 Minetest module implementing the same API</a>, making it possible to
525 use the Python programs coded to talk to Minecraft with Minetest too.
527 <a href="https://ftp-master.debian.org/new/minetest-mod-pycraft_0.20%
2Bgit20180331.0376a0a%
2Bdfsg-
1.html
">uploaded
528 this module</a> to Debian two weeks ago, and as soon as it clears the
529 FTP masters NEW queue, learning to program Python with Minetest on
530 Debian will be a simple 'apt install' away. The Debian package is
531 maintained as part of the Debian Games team, and
532 <a href="https://salsa.debian.org/games-team/unfinished/minetest-mod-pycraft
">the
533 packaging rules</a> are currently located under 'unfinished' on
536 <p>You will most likely need to install several of the Minetest
537 modules in Debian for the examples included with the library to work
538 well, as there are several blocks used by the example scripts that are
539 provided via modules in Minetest. Without the required blocks, a
540 simple stone block is used instead. My initial testing with a analog
541 clock did not get gold arms as instructed in the python library, but
542 instead used stone arms.</p>
544 <p>I tried to find a way to add the API to the desktop version of
545 Minecraft, but were unable to find any working recipes. The
546 <a href="https://www.epiphanydigest.com/tag/minecraft-python-api/
">recipes</a>
547 I <a href="https://github.com/kbsriram/mcpiapi
">found</a> are only
548 working with a standalone Minecraft server setup. Are there any
549 options to use with the normal desktop version?</p>
551 <p>As usual, if you use Bitcoin and want to show your support of my
552 activities, please send Bitcoin donations to my address
553 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
559 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
564 <div class="padding
"></div>
568 <a href="http://people.skolelinux.org/pere/blog/Time_for_an_official_MIME_type_for_patches_.html
">Time for an official MIME type for patches?</a>
574 <p>As part of my involvement in
575 <a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core
">the Nikita
576 archive API project</a>, I've been importing a fairly large lump of
577 emails into a test instance of the archive to see how well this would
578 go. I picked a subset of <a href="https://notmuchmail.org/
">my
579 notmuch email database</a>, all public emails sent to me via
580 @lists.debian.org, giving me a set of around 216 000 emails to import.
581 In the process, I had a look at the various attachments included in
582 these emails, to figure out what to do with attachments, and noticed
583 that one of the most common attachment formats do not have
584 <a href="https://www.iana.org/assignments/media-types/media-types.xhtml
">an
585 official MIME type</a> registered with IANA/IETF. The output from
586 diff, ie the input for patch, is on the top 10 list of formats
587 included in these emails. At the moment people seem to use either
588 text/x-patch or text/x-diff, but neither is officially registered. It
589 would be better if one official MIME type were registered and used
592 <p>To try to get one official MIME type for these files, I've brought
594 <a href="https://www.ietf.org/mailman/listinfo/media-types
">the
595 media-types mailing list</a>. If you are interested in discussion
596 which MIME type to use as the official for patch files, or involved in
597 making software using a MIME type for patches, perhaps you would like
598 to join the discussion?</p>
600 <p>As usual, if you use Bitcoin and want to show your support of my
601 activities, please send Bitcoin donations to my address
602 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
608 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/noark5
">noark5</a>, <a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard</a>.
613 <div class="padding
"></div>
617 <a href="http://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html
">Automatic Google Drive sync using grive in Debian</a>
623 <p>A few days, I rescued a Windows victim over to Debian. To try to
624 rescue the remains, I helped set up automatic sync with Google Drive.
625 I did not find any sensible Debian package handling this
626 automatically, so I rebuild the grive2 source from
627 <a href="http://www.webupd8.org/
">the Ubuntu UPD8 PPA</a> to do the
628 task and added a autostart desktop entry and a small shell script to
629 run in the background while the user is logged in to do the sync.
630 Here is a sketch of the setup for future reference.</p>
632 <p>I first created <tt>~/googledrive</tt>, entered the directory and
633 ran '<tt>grive -a</tt>' to authenticate the machine/user. Next, I
634 created a autostart hook in <tt>~/.config/autostart/grive.desktop</tt>
635 to start the sync when the user log in:</p>
639 Name=Google drive autosync
641 Exec=/home/user/bin/grive-sync
642 </pre></blockquote></p>
644 <p>Finally, I wrote the <tt>~/bin/grive-sync</tt> script to sync
645 ~/googledrive/ with the files in Google Drive.</p>
652 if [ "$syncpid" ] ; then
656 trap cleanup EXIT INT QUIT
657 /usr/lib/grive/grive-sync.sh listen googledrive
2>&
1 | sed "s%^%$
0:%" &
660 if ! xhost
>/dev/null
2>&
1 ; then
661 echo "no DISPLAY, exiting as the user probably logged out"
664 if [ ! -e /run/user/
1000/grive-sync.sh_googledrive ] ; then
665 /usr/lib/grive/grive-sync.sh sync googledrive
668 done
2>&
1 | sed "s%^%$
0:%"
669 </pre></blockquote></p>
671 <p>Feel free to use the setup if you want. It can be assumed to be
672 GNU GPL v2 licensed (or any later version, at your leisure), but I
673 doubt this code is possible to claim copyright on.
</p>
675 <p>As usual, if you use Bitcoin and want to show your support of my
676 activities, please send Bitcoin donations to my address
677 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
683 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
688 <div class=
"padding"></div>
692 <a href=
"http://people.skolelinux.org/pere/blog/Using_the_Kodi_API_to_play_Youtube_videos.html">Using the Kodi API to play Youtube videos
</a>
698 <p>I continue to explore my Kodi installation, and today I wanted to
699 tell it to play a youtube URL I received in a chat, without having to
700 insert search terms using the on-screen keyboard. After searching the
701 web for API access to the Youtube plugin and testing a bit, I managed
702 to find a recipe that worked. If you got a kodi instance with its API
703 available from http://kodihost/jsonrpc, you can try the following to
704 have check out a nice cover band.
</p>
706 <p><blockquote><pre>curl --silent --header 'Content-Type: application/json' \
707 --data-binary '{ "id":
1, "jsonrpc": "
2.0", "method": "Player.Open",
708 "params": {"item": { "file":
709 "plugin://plugin.video.youtube/play/?video_id=LuRGVM9O0qg" } } }' \
710 http://projector.local/jsonrpc
</pre></blockquote></p>
712 <p>I've extended kodi-stream program to take a video source as its
713 first argument. It can now handle direct video links, youtube links
714 and 'desktop' to stream my desktop to Kodi. It is almost like a
717 <p>As usual, if you use Bitcoin and want to show your support of my
718 activities, please send Bitcoin donations to my address
719 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
725 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
730 <div class=
"padding"></div>
734 <a href=
"http://people.skolelinux.org/pere/blog/Sharing_images_with_friends_and_family_using_RSS_and_EXIF_XMP_metadata.html">Sharing images with friends and family using RSS and EXIF/XMP metadata
</a>
740 <p>For a while now, I have looked for a sensible way to share images
741 with my family using a self hosted solution, as it is unacceptable to
742 place images from my personal life under the control of strangers
743 working for data hoarders like Google or Dropbox. The last few days I
744 have drafted an approach that might work out, and I would like to
745 share it with you. I would like to publish images on a server under
746 my control, and point some Internet connected display units using some
747 free and open standard to the images I published. As my primary
748 language is not limited to ASCII, I need to store metadata using
749 UTF-
8. Many years ago, I hoped to find a digital photo frame capable
750 of reading a RSS feed with image references (aka using the
751 <enclosure
> RSS tag), but was unable to find a current supplier
752 of such frames. In the end I gave up that approach.
</p>
754 <p>Some months ago, I discovered that
755 <a href=
"https://www.jwz.org/xscreensaver/">XScreensaver
</a> is able to
756 read images from a RSS feed, and used it to set up a screen saver on
757 my home info screen, showing images from the Daily images feed from
758 NASA. This proved to work well. More recently I discovered that
759 <a href=
"https://kodi.tv">Kodi
</a> (both using
760 <a href=
"https://www.openelec.tv/">OpenELEC
</a> and
761 <a href=
"https://libreelec.tv">LibreELEC
</a>) provide the
762 <a href=
"https://github.com/grinsted/script.screensaver.feedreader">Feedreader
</a>
763 screen saver capable of reading a RSS feed with images and news. For
764 fun, I used it this summer to test Kodi on my parents TV by hooking up
765 a Raspberry PI unit with LibreELEC, and wanted to provide them with a
766 screen saver showing selected pictures from my selection.
</p>
768 <p>Armed with motivation and a test photo frame, I set out to generate
769 a RSS feed for the Kodi instance. I adjusted my
<a
770 href=
"https://freedombox.org/">Freedombox
</a> instance, created
771 /var/www/html/privatepictures/, wrote a small Perl script to extract
772 title and description metadata from the photo files and generate the
773 RSS file. I ended up using Perl instead of python, as the
774 libimage-exiftool-perl Debian package seemed to handle the EXIF/XMP
775 tags I ended up using, while python3-exif did not. The relevant EXIF
776 tags only support ASCII, so I had to find better alternatives. XMP
777 seem to have the support I need.
</p>
779 <p>I am a bit unsure which EXIF/XMP tags to use, as I would like to
780 use tags that can be easily added/updated using normal free software
781 photo managing software. I ended up using the tags set using this
782 exiftool command, as these tags can also be set using digiKam:
</p>
785 exiftool -headline='The RSS image title' \
786 -description='The RSS image description.' \
787 -subject+=for-family photo.jpeg
790 <p>I initially tried the "-title" and "keyword" tags, but they were
791 invisible in digiKam, so I changed to "-headline" and "-subject". I
792 use the keyword/subject 'for-family' to flag that the photo should be
793 shared with my family. Images with this keyword set are located and
794 copied into my Freedombox for the RSS generating script to find.
</p>
796 <p>Are there better ways to do this? Get in touch if you have better
799 <p>As usual, if you use Bitcoin and want to show your support of my
800 activities, please send Bitcoin donations to my address
801 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
807 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
812 <div class=
"padding"></div>
816 <a href=
"http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">Simple streaming the Linux desktop to Kodi using GStreamer and RTP
</a>
822 <p>Last night, I wrote
823 <a href=
"http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">a
824 recipe to stream a Linux desktop using VLC to a instance of Kodi
</a>.
825 During the day I received valuable feedback, and thanks to the
826 suggestions I have been able to rewrite the recipe into a much simpler
827 approach requiring no setup at all. It is a single script that take
830 <p>This new script uses GStreamer instead of VLC to capture the
831 desktop and stream it to Kodi. This fixed the video quality issue I
832 saw initially. It further removes the need to add a m3u file on the
833 Kodi machine, as it instead connects to
834 <a href=
"https://kodi.wiki/view/JSON-RPC_API/v8">the JSON-RPC API in
835 Kodi
</a> and simply ask Kodi to play from the stream created using
836 GStreamer. Streaming the desktop to Kodi now become trivial. Copy
837 the script below, run it with the DNS name or IP address of the kodi
838 server to stream to as the only argument, and watch your screen show
839 up on the Kodi screen. Note, it depend on multicast on the local
840 network, so if you need to stream outside the local network, the
841 script must be modified. Also note, I have no idea if audio work, as
842 I only care about the picture part.
</p>
847 # Stream the Linux desktop view to Kodi. See
848 # http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html
849 # for backgorund information.
851 # Make sure the stream is stopped in Kodi and the gstreamer process is
852 # killed if something go wrong (for example if curl is unable to find the
853 # kodi server). Do the same when interrupting this script.
858 curl --silent --header 'Content-Type: application/json' \
859 --data-binary "{ \"id\":
1, \"jsonrpc\": \"
2.0\", \"method\": \"$cmd\", \"params\": $params }" \
860 "http://$host/jsonrpc"
863 if [ -n "$kodihost" ] ; then
864 # Stop the playing when we end
865 playerid=$(kodicmd "$kodihost" Player.GetActivePlayers "{}" |
866 jq .result[].playerid)
867 kodicmd "$kodihost" Player.Stop "{ \"playerid\" : $playerid }"
> /dev/null
869 if [ "$gstpid" ] && kill -
0 "$gstpid"
>/dev/null
2>&1; then
873 trap cleanup EXIT INT
886 pasrc=$(pactl list | grep -A2 'Source #' | grep 'Name: .*\.monitor$' | \
887 cut -d" " -f2|head -
1)
888 gst-launch-
1.0 ximagesrc use-damage=
0 ! video/x-raw,framerate=
30/
1 ! \
889 videoconvert ! queue2 ! \
890 x264enc bitrate=
8000 speed-preset=superfast tune=zerolatency qp-min=
30 \
891 key-int-max=
15 bframes=
2 ! video/x-h264,profile=high ! queue2 ! \
892 mpegtsmux alignment=
7 name=mux ! rndbuffersize max=
1316 min=
1316 ! \
893 udpsink host=$mcast port=$mcastport ttl-mc=$mcastttl auto-multicast=
1 sync=
0 \
894 pulsesrc device=$pasrc ! audioconvert ! queue2 ! avenc_aac ! queue2 ! mux. \
898 # Give stream a second to get going
901 # Ask kodi to start streaming using its JSON-RPC API
902 kodicmd "$kodihost" Player.Open \
903 "{\"item\": { \"file\": \"udp://@$mcast:$mcastport\" } }"
> /dev/null
905 # wait for gst to end
909 <p>I hope you find the approach useful. I know I do.
</p>
911 <p>As usual, if you use Bitcoin and want to show your support of my
912 activities, please send Bitcoin donations to my address
913 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
919 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
924 <div class=
"padding"></div>
928 <a href=
"http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">Streaming the Linux desktop to Kodi using VLC and RTSP
</a>
935 <ahref=
"http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">the
936 followup post
</a> for a even better approach.
</p>
938 <p>A while back, I was asked by a friend how to stream the desktop to
939 my projector connected to Kodi. I sadly had to admit that I had no
940 idea, as it was a task I never had tried. Since then, I have been
941 looking for a way to do so, preferable without much extra software to
942 install on either side. Today I found a way that seem to kind of
943 work. Not great, but it is a start.
</p>
945 <p>I had a look at several approaches, for example
946 <a href=
"https://github.com/mfoetsch/dlna_live_streaming">using uPnP
947 DLNA as described in
2011</a>, but it required a uPnP server, fuse and
948 local storage enough to store the stream locally. This is not going
949 to work well for me, lacking enough free space, and it would
950 impossible for my friend to get working.
</p>
952 <p>Next, it occurred to me that perhaps I could use VLC to create a
953 video stream that Kodi could play. Preferably using
954 broadcast/multicast, to avoid having to change any setup on the Kodi
955 side when starting such stream. Unfortunately, the only recipe I
956 could find using multicast used the rtp protocol, and this protocol
957 seem to not be supported by Kodi.
</p>
959 <p>On the other hand, the rtsp protocol is working! Unfortunately I
960 have to specify the IP address of the streaming machine in both the
961 sending command and the file on the Kodi server. But it is showing my
962 desktop, and thus allow us to have a shared look on the big screen at
963 the programs I work on.
</p>
965 <p>I did not spend much time investigating codeces. I combined the
966 rtp and rtsp recipes from
967 <a href=
"https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/">the
968 VLC Streaming HowTo/Command Line Examples
</a>, and was able to get
969 this working on the desktop/streaming end.
</p>
972 vlc screen:// --sout \
973 '#transcode{vcodec=mp4v,acodec=mpga,vb=
800,ab=
128}:rtp{dst=projector.local,port=
1234,sdp=rtsp://
192.168.11.4:
8080/test.sdp}'
976 <p>I ssh-ed into my Kodi box and created a file like this with the
980 echo rtsp://
192.168.11.4:
8080/test.sdp \
981 > /storage/videos/screenstream.m3u
984 <p>Note the
192.168.11.4 IP address is my desktops IP address. As far
985 as I can tell the IP must be hardcoded for this to work. In other
986 words, if someone elses machine is going to do the steaming, you have
987 to update screenstream.m3u on the Kodi machine and adjust the vlc
988 recipe. To get started, locate the file in Kodi and select the m3u
989 file while the VLC stream is running. The desktop then show up in my
992 <p>When using the same technique to stream a video file with audio,
993 the audio quality is really bad. No idea if the problem is package
994 loss or bad parameters for the transcode. I do not know VLC nor Kodi
997 <p><strong>Update
2018-
07-
12</strong>: Johannes Schauer send me a few
998 succestions and reminded me about an important step. The "screen:"
999 input source is only available once the vlc-plugin-access-extra
1000 package is installed on Debian. Without it, you will see this error
1001 message: "VLC is unable to open the MRL 'screen://'. Check the log
1002 for details." He further found that it is possible to drop some parts
1003 of the VLC command line to reduce the amount of hardcoded information.
1004 It is also useful to consider using cvlc to avoid having the VLC
1005 window in the desktop view. In sum, this give us this command line on
1009 cvlc screen:// --sout \
1010 '#transcode{vcodec=mp4v,acodec=mpga,vb=
800,ab=
128}:rtp{sdp=rtsp://:
8080/}'
1013 <p>and this on the Kodi end
<p>
1016 echo rtsp://
192.168.11.4:
8080/ \
1017 > /storage/videos/screenstream.m3u
1020 <p>Still bad image quality, though. But I did discover that streaming
1021 a DVD using dvdsimple:///dev/dvd as the source had excellent video and
1022 audio quality, so I guess the issue is in the input or transcoding
1023 parts, not the rtsp part. I've tried to change the vb and ab
1024 parameters to use more bandwidth, but it did not make a
1027 <p>I further received a suggestion from Einar Haraldseid to try using
1028 gstreamer instead of VLC, and this proved to work great! He also
1029 provided me with the trick to get Kodi to use a multicast stream as
1030 its source. By using this monstrous oneliner, I can stream my desktop
1031 with good video quality in reasonable framerate to the
239.255.0.1
1032 multicast address on port
1234:
1035 gst-launch-
1.0 ximagesrc use-damage=
0 ! video/x-raw,framerate=
30/
1 ! \
1036 videoconvert ! queue2 ! \
1037 x264enc bitrate=
8000 speed-preset=superfast tune=zerolatency qp-min=
30 \
1038 key-int-max=
15 bframes=
2 ! video/x-h264,profile=high ! queue2 ! \
1039 mpegtsmux alignment=
7 name=mux ! rndbuffersize max=
1316 min=
1316 ! \
1040 udpsink host=
239.255.0.1 port=
1234 ttl-mc=
1 auto-multicast=
1 sync=
0 \
1041 pulsesrc device=$(pactl list | grep -A2 'Source #' | \
1042 grep 'Name: .*\.monitor$' | cut -d" " -f2|head -
1) ! \
1043 audioconvert ! queue2 ! avenc_aac ! queue2 ! mux.
1046 <p>and this on the Kodi end
<p>
1049 echo udp://@
239.255.0.1:
1234 \
1050 > /storage/videos/screenstream.m3u
1053 <p>Note the trick to pick a valid pulseaudio source. It might not
1054 pick the one you need. This approach will of course lead to trouble
1055 if more than one source uses the same multicast port and address.
1056 Note the ttl-mc=
1 setting, which limit the multicast packages to the
1057 local network. If the value is increased, your screen will be
1058 broadcasted further, one network "hop" for each increase (read up on
1059 multicast to learn more. :)!
</p>
1061 <p>Having cracked how to get Kodi to receive multicast streams, I
1062 could use this VLC command to stream to the same multicast address.
1063 The image quality is way better than the rtsp approach, but gstreamer
1064 seem to be doing a better job.
</p>
1067 cvlc screen:// --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=
800,ab=
128}:rtp{mux=ts,dst=
239.255.0.1,port=
1234,sdp=sap}'
1070 <p>As usual, if you use Bitcoin and want to show your support of my
1071 activities, please send Bitcoin donations to my address
1072 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1078 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
1083 <div class=
"padding"></div>
1087 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html">What is the most supported MIME type in Debian in
2018?
</a>
1094 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">I
1095 measured what the most supported MIME type in Debian was
</a>, by
1096 analysing the desktop files in all packages in the archive. Since
1097 then, the DEP-
11 AppStream system has been put into production, making
1098 the task a lot easier. This made me want to repeat the measurement,
1099 to see how much things changed. Here are the new numbers, for
1100 unstable only this time:
1102 <p><strong>Debian Unstable:
</strong></p>
1106 ----- -----------------------
1118 30 audio/x-vorbis+ogg
1119 29 image/x-portable-pixmap
1121 27 image/x-portable-bitmap
1123 26 application/x-ogg
1129 <p>The list was created like this using a sid chroot: "cat
1130 /var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk '/^
1131 - \S+\/\S+$/ {print $
2 }' | sort | uniq -c | sort -nr | head -
20"
</p>
1133 <p>It is interesting to see how image formats have passed text/plain
1134 as the most announced supported MIME type. These days, thanks to the
1135 AppStream system, if you run into a file format you do not know, and
1136 want to figure out which packages support the format, you can find the
1137 MIME type of the file using "file --mime
<filename
>", and then
1138 look up all packages announcing support for this format in their
1139 AppStream metadata (XML or .desktop file) using "appstreamcli
1140 what-provides mimetype
<mime-type
>. For example if you, like
1141 me, want to know which packages support inode/directory, you can get a
1144 <p><blockquote><pre>
1145 % appstreamcli what-provides mimetype inode/directory | grep Package: | sort
1152 Package: doublecmd-common
1154 Package: enlightenment
1174 </pre></blockquote></p>
1176 <p>Using the same method, I can quickly discover that the Sketchup file
1177 format is not yet supported by any package in Debian:
</p>
1179 <p><blockquote><pre>
1180 % appstreamcli what-provides mimetype application/vnd.sketchup.skp
1181 Could not find component providing 'mimetype::application/vnd.sketchup.skp'.
1183 </pre></blockquote></p>
1185 <p>Yesterday I used it to figure out which packages support the STL
3D
1188 <p><blockquote><pre>
1189 % appstreamcli what-provides mimetype application/sla|grep Package
1194 </pre></blockquote></p>
1196 <p>PS: A new version of Cura was uploaded to Debian yesterday.
</p>
1198 <p>As usual, if you use Bitcoin and want to show your support of my
1199 activities, please send Bitcoin donations to my address
1200 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1206 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
1211 <div class=
"padding"></div>
1215 <a href=
"http://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html">Debian APT upgrade without enough free space on the disk...
</a>
1221 <p>Quite regularly, I let my Debian Sid/Unstable chroot stay untouch
1222 for a while, and when I need to update it there is not enough free
1223 space on the disk for apt to do a normal 'apt upgrade'. I normally
1224 would resolve the issue by doing 'apt install
<somepackages
>' to
1225 upgrade only some of the packages in one batch, until the amount of
1226 packages to download fall below the amount of free space available.
1227 Today, I had about
500 packages to upgrade, and after a while I got
1228 tired of trying to install chunks of packages manually. I concluded
1229 that I did not have the spare hours required to complete the task, and
1230 decided to see if I could automate it. I came up with this small
1231 script which I call 'apt-in-chunks':
</p>
1233 <p><blockquote><pre>
1236 # Upgrade packages when the disk is too full to upgrade every
1237 # upgradable package in one lump. Fetching packages to upgrade using
1238 # apt, and then installing using dpkg, to avoid changing the package
1239 # flag for manual/automatic.
1251 for p in $(apt list --upgradable | ignore "$@" |cut -d/ -f1 | grep -v '^Listing...'); do
1254 apt install --download-only -y $p
1255 for f in /var/cache/apt/archives/*.deb; do
1256 if [ -e "$f" ]; then
1257 dpkg -i /var/cache/apt/archives/*.deb
1262 </pre></blockquote></p>
1264 <p>The script will extract the list of packages to upgrade, try to
1265 download the packages needed to upgrade one package, install the
1266 downloaded packages using dpkg. The idea is to upgrade packages
1267 without changing the APT mark for the package (ie the one recording of
1268 the package was manually requested or pulled in as a dependency). To
1269 use it, simply run it as root from the command line. If it fail, try
1270 'apt install -f' to clean up the mess and run the script again. This
1271 might happen if the new packages conflict with one of the old
1272 packages. dpkg is unable to remove, while apt can do this.
</p>
1274 <p>It take one option, a package to ignore in the list of packages to
1275 upgrade. The option to ignore a package is there to be able to skip
1276 the packages that are simply too large to unpack. Today this was
1277 'ghc', but I have run into other large packages causing similar
1278 problems earlier (like TeX).
</p>
1280 <p>Update
2018-
07-
08: Thanks to Paul Wise, I am aware of two
1281 alternative ways to handle this. The "unattended-upgrades
1282 --minimal-upgrade-steps" option will try to calculate upgrade sets for
1283 each package to upgrade, and then upgrade them in order, smallest set
1284 first. It might be a better option than my above mentioned script.
1285 Also, "aptutude upgrade" can upgrade single packages, thus avoiding
1286 the need for using "dpkg -i" in the script above.
</p>
1288 <p>As usual, if you use Bitcoin and want to show your support of my
1289 activities, please send Bitcoin donations to my address
1290 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1296 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1301 <div class=
"padding"></div>
1305 <a href=
"http://people.skolelinux.org/pere/blog/Version_3_1_of_Cura__the_3D_print_slicer__is_now_in_Debian.html">Version
3.1 of Cura, the
3D print slicer, is now in Debian
</a>
1311 <p>A new version of the
1312 <a href=
"https://tracker.debian.org/pkg/cura">3D printer slicer
1313 software Cura
</a>, version
3.1.0, is now available in Debian Testing
1314 (aka Buster) and Debian Unstable (aka Sid). I hope you find it
1315 useful. It was uploaded the last few days, and the last update will
1316 enter testing tomorrow. See the
1317 <a href=
"https://ultimaker.com/en/products/cura-software/release-notes">release
1318 notes
</a> for the list of bug fixes and new features. Version
3.2
1319 was announced
6 days ago. We will try to get it into Debian as
1322 <p>More information related to
3D printing is available on the
1323 <a href=
"https://wiki.debian.org/3DPrinting">3D printing
</a> and
1324 <a href=
"https://wiki.debian.org/3D-printer">3D printer
</a> wiki pages
1327 <p>As usual, if you use Bitcoin and want to show your support of my
1328 activities, please send Bitcoin donations to my address
1329 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1335 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1340 <div class=
"padding"></div>
1344 <a href=
"http://people.skolelinux.org/pere/blog/Cura__the_nice_3D_print_slicer__is_now_in_Debian_Unstable.html">Cura, the nice
3D print slicer, is now in Debian Unstable
</a>
1350 <p>After several months of working and waiting, I am happy to report
1351 that the nice and user friendly
3D printer slicer software Cura just
1352 entered Debian Unstable. It consist of five packages,
1353 <a href=
"https://tracker.debian.org/pkg/cura">cura
</a>,
1354 <a href=
"https://tracker.debian.org/pkg/cura-engine">cura-engine
</a>,
1355 <a href=
"https://tracker.debian.org/pkg/libarcus">libarcus
</a>,
1356 <a href=
"https://tracker.debian.org/pkg/fdm-materials">fdm-materials
</a>,
1357 <a href=
"https://tracker.debian.org/pkg/libsavitar">libsavitar
</a> and
1358 <a href=
"https://tracker.debian.org/pkg/uranium">uranium
</a>. The last
1359 two, uranium and cura, entered Unstable yesterday. This should make
1360 it easier for Debian users to print on at least the Ultimaker class of
1361 3D printers. My nearest
3D printer is an Ultimaker
2+, so it will
1362 make life easier for at least me. :)
</p>
1364 <p>The work to make this happen was done by Gregor Riepl, and I was
1365 happy to assist him in sponsoring the packages. With the introduction
1366 of Cura, Debian is up to three
3D printer slicers at your service,
1367 Cura, Slic3r and Slic3r Prusa. If you own or have access to a
3D
1368 printer, give it a go. :)
</p>
1370 <p>The
3D printer software is maintained by the
3D printer Debian
1371 team, flocking together on the
1372 <a href=
"http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/3dprinter-general">3dprinter-general
</a>
1373 mailing list and the
1374 <a href=
"irc://irc.debian.org/#debian-3dprinting">#debian-
3dprinting
</a>
1377 <p>The next step for Cura in Debian is to update the cura package to
1378 version
3.0.3 and then update the entire set of packages to version
1379 3.1.0 which showed up the last few days.
</p>
1385 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1390 <div class=
"padding"></div>
1394 <a href=
"http://people.skolelinux.org/pere/blog/Generating_3D_prints_in_Debian_using_Cura_and_Slic3r__prusa_.html">Generating
3D prints in Debian using Cura and Slic3r(-prusa)
</a>
1400 <p>At my nearby maker space,
1401 <a href=
"http://sonen.ifi.uio.no/">Sonen
</a>, I heard the story that it
1402 was easier to generate gcode files for theyr
3D printers (Ultimake
2+)
1403 on Windows and MacOS X than Linux, because the software involved had
1404 to be manually compiled and set up on Linux while premade packages
1405 worked out of the box on Windows and MacOS X. I found this annoying,
1406 as the software involved,
1407 <a href=
"https://github.com/Ultimaker/Cura">Cura
</a>, is free software
1408 and should be trivial to get up and running on Linux if someone took
1409 the time to package it for the relevant distributions. I even found
1410 <a href=
"https://bugs.debian.org/706656">a request for adding into
1411 Debian
</a> from
2013, which had seem some activity over the years but
1412 never resulted in the software showing up in Debian. So a few days
1413 ago I offered my help to try to improve the situation.
</p>
1415 <p>Now I am very happy to see that all the packages required by a
1416 working Cura in Debian are uploaded into Debian and waiting in the NEW
1417 queue for the ftpmasters to have a look. You can track the progress
1419 <a href=
"https://qa.debian.org/developer.php?email=3dprinter-general%40lists.alioth.debian.org">the
1420 status page for the
3D printer team
</a>.
</p>
1422 <p>The uploaded packages are a bit behind upstream, and was uploaded
1423 now to get slots in
<a href=
"https://ftp-master.debian.org/new.html">the NEW
1424 queue
</a> while we work up updating the packages to the latest
1425 upstream version.
</p>
1427 <p>On a related note, two competitors for Cura, which I found harder
1428 to use and was unable to configure correctly for Ultimaker
2+ in the
1429 short time I spent on it, are already in Debian. If you are looking
1430 for
3D printer "slicers" and want something already available in
1432 <a href=
"https://tracker.debian.org/pkg/slic3r">slic3r
</a> and
1433 <a href=
"https://tracker.debian.org/pkg/slic3r-prusa">slic3r-prusa
</a>.
1434 The latter is a fork of the former.
</p>
1436 <p>As usual, if you use Bitcoin and want to show your support of my
1437 activities, please send Bitcoin donations to my address
1438 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
1444 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1449 <div class=
"padding"></div>
1453 <a href=
"http://people.skolelinux.org/pere/blog/Visualizing_GSM_radio_chatter_using_gr_gsm_and_Hopglass.html">Visualizing GSM radio chatter using gr-gsm and Hopglass
</a>
1459 <p>Every mobile phone announce its existence over radio to the nearby
1460 mobile cell towers. And this radio chatter is available for anyone
1461 with a radio receiver capable of receiving them. Details about the
1462 mobile phones with very good accuracy is of course collected by the
1463 phone companies, but this is not the topic of this blog post. The
1464 mobile phone radio chatter make it possible to figure out when a cell
1465 phone is nearby, as it include the SIM card ID (IMSI). By paying
1466 attention over time, one can see when a phone arrive and when it leave
1467 an area. I believe it would be nice to make this information more
1468 available to the general public, to make more people aware of how
1469 their phones are announcing their whereabouts to anyone that care to
1472 <p>I am very happy to report that we managed to get something
1473 visualizing this information up and running for
1474 <a href=
"http://norwaymakers.org/osf17">Oslo Skaperfestival
2017</a>
1475 (Oslo Makers Festival) taking place today and tomorrow at Deichmanske
1476 library. The solution is based on the
1477 <a href=
"http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html">simple
1478 recipe for listening to GSM chatter
</a> I posted a few days ago, and
1479 will show up at the stand of
<a href=
"http://sonen.ifi.uio.no/">Åpen
1480 Sone from the Computer Science department of the University of
1481 Oslo
</a>. The presentation will show the nearby mobile phones (aka
1482 IMSIs) as dots in a web browser graph, with lines to the dot
1483 representing mobile base station it is talking to. It was working in
1484 the lab yesterday, and was moved into place this morning.
</p>
1486 <p>We set up a fairly powerful desktop machine using Debian
1487 Buster/Testing with several (five, I believe) RTL2838 DVB-T receivers
1488 connected and visualize the visible cell phone towers using an
1489 <a href=
"https://github.com/marlow925/hopglass">English version of
1490 Hopglass
</a>. A fairly powerfull machine is needed as the
1491 grgsm_livemon_headless processes from
1492 <a href=
"https://tracker.debian.org/pkg/gr-gsm">gr-gsm
</a> converting
1493 the radio signal to data packages is quite CPU intensive.
</p>
1495 <p>The frequencies to listen to, are identified using a slightly
1496 patched scan-and-livemon (to set the --args values for each receiver),
1497 and the Hopglass data is generated using the
1498 <a href=
"https://github.com/petterreinholdtsen/IMSI-catcher/tree/meshviewer-output">patches
1499 in my meshviewer-output branch
</a>. For some reason we could not get
1500 more than four SDRs working. There is also a geographical map trying
1501 to show the location of the base stations, but I believe their
1502 coordinates are hardcoded to some random location in Germany, I
1503 believe. The code should be replaced with code to look up location in
1504 a text file, a sqlite database or one of the online databases
1506 <a href=
"https://github.com/Oros42/IMSI-catcher/issues/14">the github
1507 issue for the topic
</a>.
1509 <p>If this sound interesting, visit the stand at the festival!
</p>
1515 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
1520 <div class=
"padding"></div>
1524 <a href=
"http://people.skolelinux.org/pere/blog/Easier_recipe_to_observe_the_cell_phones_around_you.html">Easier recipe to observe the cell phones around you
</a>
1530 <p>A little more than a month ago I wrote
1531 <a href=
"http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html">how
1532 to observe the SIM card ID (aka IMSI number) of mobile phones talking
1533 to nearby mobile phone base stations using Debian GNU/Linux and a
1534 cheap USB software defined radio
</a>, and thus being able to pinpoint
1535 the location of people and equipment (like cars and trains) with an
1536 accuracy of a few kilometer. Since then we have worked to make the
1537 procedure even simpler, and it is now possible to do this without any
1538 manual frequency tuning and without building your own packages.
</p>
1540 <p>The
<a href=
"https://tracker.debian.org/pkg/gr-gsm">gr-gsm
</a>
1541 package is now included in Debian testing and unstable, and the
1542 IMSI-catcher code no longer require root access to fetch and decode
1543 the GSM data collected using gr-gsm.
</p>
1545 <p>Here is an updated recipe, using packages built by Debian and a git
1546 clone of two python scripts:
</p>
1550 <li>Start with a Debian machine running the Buster version (aka
1553 <li>Run '
<tt>apt install gr-gsm python-numpy python-scipy
1554 python-scapy
</tt>' as root to install required packages.
</li>
1556 <li>Fetch the code decoding GSM packages using '
<tt>git clone
1557 github.com/Oros42/IMSI-catcher.git
</tt>'.
</li>
1559 <li>Insert USB software defined radio supported by GNU Radio.
</li>
1561 <li>Enter the IMSI-catcher directory and run '
<tt>python
1562 scan-and-livemon
</tt>' to locate the frequency of nearby base
1563 stations and start listening for GSM packages on one of them.
</li>
1565 <li>Enter the IMSI-catcher directory and run '
<tt>python
1566 simple_IMSI-catcher.py
</tt>' to display the collected information.
</li>
1570 <p>Note, due to a bug somewhere the scan-and-livemon program (actually
1571 <a href=
"https://github.com/ptrkrysik/gr-gsm/issues/336">its underlying
1572 program grgsm_scanner
</a>) do not work with the HackRF radio. It does
1573 work with RTL
8232 and other similar USB radio receivers you can get
1575 (
<a href=
"https://www.ebay.com/sch/items/?_nkw=rtl+2832">for example
1576 from ebay
</a>), so for now the solution is to scan using the RTL radio
1577 and only use HackRF for fetching GSM data.
</p>
1579 <p>As far as I can tell, a cell phone only show up on one of the
1580 frequencies at the time, so if you are going to track and count every
1581 cell phone around you, you need to listen to all the frequencies used.
1582 To listen to several frequencies, use the --numrecv argument to
1583 scan-and-livemon to use several receivers. Further, I am not sure if
1584 phones using
3G or
4G will show as talking GSM to base stations, so
1585 this approach might not see all phones around you. I typically see
1586 0-
400 IMSI numbers an hour when looking around where I live.
</p>
1588 <p>I've tried to run the scanner on a
1589 <a href=
"https://wiki.debian.org/RaspberryPi">Raspberry Pi
2 and
3
1590 running Debian Buster
</a>, but the grgsm_livemon_headless process seem
1591 to be too CPU intensive to keep up. When GNU Radio print 'O' to
1592 stdout, I am told there it is caused by a buffer overflow between the
1593 radio and GNU Radio, caused by the program being unable to read the
1594 GSM data fast enough. If you see a stream of 'O's from the terminal
1595 where you started scan-and-livemon, you need a give the process more
1596 CPU power. Perhaps someone are able to optimize the code to a point
1597 where it become possible to set up RPi3 based GSM sniffers? I tried
1598 using Raspbian instead of Debian, but there seem to be something wrong
1599 with GNU Radio on raspbian, causing glibc to abort().
</p>
1605 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
1610 <div class=
"padding"></div>
1614 <a href=
"http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html">Simpler recipe on how to make a simple $
7 IMSI Catcher using Debian
</a>
1620 <p>On friday, I came across an interesting article in the Norwegian
1621 web based ICT news magazine digi.no on
1622 <a href=
"https://www.digi.no/artikler/sikkerhetsforsker-lagde-enkel-imsi-catcher-for-60-kroner-na-kan-mobiler-kartlegges-av-alle/398588">how
1623 to collect the IMSI numbers of nearby cell phones
</a> using the cheap
1624 DVB-T software defined radios. The article refered to instructions
1625 and
<a href=
"https://www.youtube.com/watch?v=UjwgNd_as30">a recipe by
1626 Keld Norman on Youtube on how to make a simple $
7 IMSI Catcher
</a>, and I decided to test them out.
</p>
1628 <p>The instructions said to use Ubuntu, install pip using apt (to
1629 bypass apt), use pip to install pybombs (to bypass both apt and pip),
1630 and the ask pybombs to fetch and build everything you need from
1631 scratch. I wanted to see if I could do the same on the most recent
1632 Debian packages, but this did not work because pybombs tried to build
1633 stuff that no longer build with the most recent openssl library or
1634 some other version skew problem. While trying to get this recipe
1635 working, I learned that the apt-
>pip-
>pybombs route was a long detour,
1636 and the only piece of software dependency missing in Debian was the
1637 gr-gsm package. I also found out that the lead upstream developer of
1638 gr-gsm (the name stand for GNU Radio GSM) project already had a set of
1639 Debian packages provided in an Ubuntu PPA repository. All I needed to
1640 do was to dget the Debian source package and built it.
</p>
1642 <p>The IMSI collector is a python script listening for packages on the
1643 loopback network device and printing to the terminal some specific GSM
1644 packages with IMSI numbers in them. The code is fairly short and easy
1645 to understand. The reason this work is because gr-gsm include a tool
1646 to read GSM data from a software defined radio like a DVB-T USB stick
1647 and other software defined radios, decode them and inject them into a
1648 network device on your Linux machine (using the loopback device by
1649 default). This proved to work just fine, and I've been testing the
1650 collector for a few days now.
</p>
1652 <p>The updated and simpler recipe is thus to
</p>
1656 <li>start with a Debian machine running Stretch or newer,
</li>
1658 <li>build and install the gr-gsm package available from
1659 <a href=
"http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/">http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/
</a>,
</li>
1661 <li>clone the git repostory from
<a href=
"https://github.com/Oros42/IMSI-catcher">https://github.com/Oros42/IMSI-catcher
</a>,
</li>
1663 <li>run grgsm_livemon and adjust the frequency until the terminal
1664 where it was started is filled with a stream of text (meaning you
1665 found a GSM station).
</li>
1667 <li>go into the IMSI-catcher directory and run 'sudo python simple_IMSI-catcher.py' to extract the IMSI numbers.
</li>
1671 <p>To make it even easier in the future to get this sniffer up and
1672 running, I decided to package
1673 <a href=
"https://github.com/ptrkrysik/gr-gsm/">the gr-gsm project
</a>
1674 for Debian (
<a href=
"https://bugs.debian.org/871055">WNPP
1675 #
871055</a>), and the package was uploaded into the NEW queue today.
1676 Luckily the gnuradio maintainer has promised to help me, as I do not
1677 know much about gnuradio stuff yet.
</p>
1679 <p>I doubt this "IMSI cacher" is anywhere near as powerfull as
1680 commercial tools like
1681 <a href=
"https://www.thespyphone.com/portable-imsi-imei-catcher/">The
1682 Spy Phone Portable IMSI / IMEI Catcher
</a> or the
1683 <a href=
"https://en.wikipedia.org/wiki/Stingray_phone_tracker">Harris
1684 Stingray
</a>, but I hope the existance of cheap alternatives can make
1685 more people realise how their whereabouts when carrying a cell phone
1686 is easily tracked. Seeing the data flow on the screen, realizing that
1687 I live close to a police station and knowing that the police is also
1688 wearing cell phones, I wonder how hard it would be for criminals to
1689 track the position of the police officers to discover when there are
1690 police near by, or for foreign military forces to track the location
1691 of the Norwegian military forces, or for anyone to track the location
1692 of government officials...
</p>
1694 <p>It is worth noting that the data reported by the IMSI-catcher
1695 script mentioned above is only a fraction of the data broadcasted on
1696 the GSM network. It will only collect one frequency at the time,
1697 while a typical phone will be using several frequencies, and not all
1698 phones will be using the frequencies tracked by the grgsm_livemod
1699 program. Also, there is a lot of radio chatter being ignored by the
1700 simple_IMSI-catcher script, which would be collected by extending the
1701 parser code. I wonder if gr-gsm can be set up to listen to more than
1708 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
1713 <div class=
"padding"></div>
1717 <a href=
"http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_is_now_available.html">Norwegian Bokmål edition of Debian Administrator's Handbook is now available
</a>
1723 <p align=
"center"><img align=
"center" src=
"http://people.skolelinux.org/pere/blog/images/2017-07-25-debian-handbook-nb-testprint.png"/></p>
1725 <p>I finally received a copy of the Norwegian Bokmål edition of
1726 "
<a href=
"https://debian-handbook.info/">The Debian Administrator's
1727 Handbook
</a>". This test copy arrived in the mail a few days ago, and
1728 I am very happy to hold the result in my hand. We spent around one and a half year translating it. This paperbook edition
1729 <a href="https://debian-handbook.info/get/#norwegian
">is available
1730 from lulu.com</a>. If you buy it quickly, you save 25% on the list
1731 price. The book is also available for download in electronic form as
1732 PDF, EPUB and Mobipocket, as can be
1733 <a href="https://debian-handbook.info/browse/nb-NO/stable/
">read online
1734 as a web page</a>.</p>
1736 <p>This is the second book I publish (the first was the book
1737 "<a href=
"http://free-culture.cc/">Free Culture
</a>" by Lawrence Lessig
1739 <a href="http://www.lulu.com/shop/lawrence-lessig/free-culture/paperback/product-
22440520.html
">English</a>,
1740 <a href="http://www.lulu.com/shop/lawrence-lessig/culture-libre/paperback/product-
22645082.html
">French</a>
1742 <a href="http://www.lulu.com/shop/lawrence-lessig/fri-kultur/paperback/product-
22441576.html
">Norwegian
1743 Bokmål</a>), and I am very excited to finally wrap up this
1745 "<a href=
"http://www.lulu.com/shop/rapha%C3%ABl-hertzog-and-roland-mas/h%C3%A5ndbok-for-debian-administratoren/paperback/product-23262290.html">Håndbok
1746 for Debian-administratoren
</a>" will be well received.</p>
1752 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook
">debian-handbook</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
1757 <div class="padding
"></div>
1761 <a href="http://people.skolelinux.org/pere/blog/N_r_nynorskoversettelsen_svikter_til_eksamen___.html
">Når nynorskoversettelsen svikter til eksamen...</a>
1767 <p><a href="http://www.aftenposten.no/norge/Krever-at-elever-ma-fa-annullert-eksamen-etter-rot-med-oppgavetekster-
622459b.html
">Aftenposten
1768 melder i dag</a> om feil i eksamensoppgavene for eksamen i politikk og
1769 menneskerettigheter, der teksten i bokmåls og nynorskutgaven ikke var
1770 like. Oppgaveteksten er gjengitt i artikkelen, og jeg ble nysgjerring
1771 på om den fri oversetterløsningen
1772 <a href="https://www.apertium.org/
">Apertium</a> ville gjort en bedre
1773 jobb enn Utdanningsdirektoratet. Det kan se slik ut.</p>
1775 <p>Her er bokmålsoppgaven fra eksamenen:</p>
1778 <p>Drøft utfordringene knyttet til nasjonalstatenes og andre aktørers
1779 rolle og muligheter til å håndtere internasjonale utfordringer, som
1780 for eksempel flykningekrisen.</p>
1782 <p>Vedlegge er eksempler på tekster som kan gi relevante perspektiver
1785 <li>Flykningeregnskapet 2016, UNHCR og IDMC
1786 <li>«Grenseløst Europa for fall» A-Magasinet, 26. november 2015
1791 <p>Dette oversetter Apertium slik:</p>
1794 <p>Drøft utfordringane knytte til nasjonalstatane sine og rolla til
1795 andre aktørar og høve til å handtera internasjonale utfordringar, som
1796 til dømes *flykningekrisen.</p>
1798 <p>Vedleggja er døme på tekster som kan gje relevante perspektiv på
1802 <li>*Flykningeregnskapet 2016, *UNHCR og *IDMC</li>
1803 <li>«*Grenseløst Europa for fall» A-Magasinet, 26. november 2015</li>
1808 <p>Ord som ikke ble forstått er markert med stjerne (*), og trenger
1809 ekstra språksjekk. Men ingen ord er forsvunnet, slik det var i
1810 oppgaven elevene fikk presentert på eksamen. Jeg mistenker dog at
1811 "andre aktørers rolle og muligheter til ..." burde vært oversatt til
1812 "rolla til andre aktørar og deira høve til ..." eller noe slikt, men
1813 det er kanskje flisespikking. Det understreker vel bare at det alltid
1814 trengs korrekturlesning etter automatisk oversettelse.
</p>
1820 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll
</a>.
1825 <div class=
"padding"></div>
1829 <a href=
"http://people.skolelinux.org/pere/blog/Detecting_NFS_hangs_on_Linux_without_hanging_yourself___.html">Detecting NFS hangs on Linux without hanging yourself...
</a>
1835 <p>Over the years, administrating thousand of NFS mounting linux
1836 computers at the time, I often needed a way to detect if the machine
1837 was experiencing NFS hang. If you try to use
<tt>df
</tt> or look at a
1838 file or directory affected by the hang, the process (and possibly the
1839 shell) will hang too. So you want to be able to detect this without
1840 risking the detection process getting stuck too. It has not been
1841 obvious how to do this. When the hang has lasted a while, it is
1842 possible to find messages like these in dmesg:
</p>
1845 nfs: server nfsserver not responding, still trying
1846 <br>nfs: server nfsserver OK
1849 <p>It is hard to know if the hang is still going on, and it is hard to
1850 be sure looking in dmesg is going to work. If there are lots of other
1851 messages in dmesg the lines might have rotated out of site before they
1854 <p>While reading through the nfs client implementation in linux kernel
1855 code, I came across some statistics that seem to give a way to detect
1856 it. The om_timeouts sunrpc value in the kernel will increase every
1857 time the above log entry is inserted into dmesg. And after digging a
1858 bit further, I discovered that this value show up in
1859 /proc/self/mountstats on Linux.
</p>
1861 <p>The mountstats content seem to be shared between files using the
1862 same file system context, so it is enough to check one of the
1863 mountstats files to get the state of the mount point for the machine.
1864 I assume this will not show lazy umounted NFS points, nor NFS mount
1865 points in a different process context (ie with a different filesystem
1866 view), but that does not worry me.
</p>
1868 <p>The content for a NFS mount point look similar to this:
</p>
1870 <p><blockquote><pre>
1872 device /dev/mapper/Debian-var mounted on /var with fstype ext3
1873 device nfsserver:/mnt/nfsserver/home0 mounted on /mnt/nfsserver/home0 with fstype nfs statvers=
1.1
1874 opts: rw,vers=
3,rsize=
65536,wsize=
65536,namlen=
255,acregmin=
3,acregmax=
60,acdirmin=
30,acdirmax=
60,soft,nolock,proto=tcp,timeo=
600,retrans=
2,sec=sys,mountaddr=
129.240.3.145,mountvers=
3,mountport=
4048,mountproto=udp,local_lock=all
1876 caps: caps=
0x3fe7,wtmult=
4096,dtsize=
8192,bsize=
0,namlen=
255
1877 sec: flavor=
1,pseudoflavor=
1
1878 events:
61063112 732346265 1028140 35486205 16220064 8162542 761447191 71714012 37189 3891185 45561809 110486139 4850138 420353 15449177 296502 52736725 13523379 0 52182 9016896 1231 0 0 0 0 0
1879 bytes:
166253035039 219519120027 0 0 40783504807 185466229638 11677877 45561809
1880 RPC iostats version:
1.0 p/v:
100003/
3 (nfs)
1881 xprt: tcp
925 1 6810 0 0 111505412 111480497 109 2672418560317 0 248 53869103 22481820
1883 NULL:
0 0 0 0 0 0 0 0
1884 GETATTR:
61063106 61063108 0 9621383060 6839064400 453650 77291321 78926132
1885 SETATTR:
463469 463470 0 92005440 66739536 63787 603235 687943
1886 LOOKUP:
17021657 17021657 0 3354097764 4013442928 57216 35125459 35566511
1887 ACCESS:
14281703 14290009 5 2318400592 1713803640 1709282 4865144 7130140
1888 READLINK:
125 125 0 20472 18620 0 1112 1118
1889 READ:
4214236 4214237 0 715608524 41328653212 89884 22622768 22806693
1890 WRITE:
8479010 8494376 22 187695798568 1356087148 178264904 51506907 231671771
1891 CREATE:
171708 171708 0 38084748 46702272 873 1041833 1050398
1892 MKDIR:
3680 3680 0 773980 993920 26 23990 24245
1893 SYMLINK:
903 903 0 233428 245488 6 5865 5917
1894 MKNOD:
80 80 0 20148 21760 0 299 304
1895 REMOVE:
429921 429921 0 79796004 61908192 3313 2710416 2741636
1896 RMDIR:
3367 3367 0 645112 484848 22 5782 6002
1897 RENAME:
466201 466201 0 130026184 121212260 7075 5935207 5961288
1898 LINK:
289155 289155 0 72775556 67083960 2199 2565060 2585579
1899 READDIR:
2933237 2933237 0 516506204 13973833412 10385 3190199 3297917
1900 READDIRPLUS:
1652839 1652839 0 298640972 6895997744 84735 14307895 14448937
1901 FSSTAT:
6144 6144 0 1010516 1032192 51 9654 10022
1902 FSINFO:
2 2 0 232 328 0 1 1
1903 PATHCONF:
1 1 0 116 140 0 0 0
1904 COMMIT:
0 0 0 0 0 0 0 0
1906 device binfmt_misc mounted on /proc/sys/fs/binfmt_misc with fstype binfmt_misc
1908 </pre></blockquote></p>
1910 <p>The key number to look at is the third number in the per-op list.
1911 It is the number of NFS timeouts experiences per file system
1912 operation. Here
22 write timeouts and
5 access timeouts. If these
1913 numbers are increasing, I believe the machine is experiencing NFS
1914 hang. Unfortunately the timeout value do not start to increase right
1915 away. The NFS operations need to time out first, and this can take a
1916 while. The exact timeout value depend on the setup. For example the
1917 defaults for TCP and UDP mount points are quite different, and the
1918 timeout value is affected by the soft, hard, timeo and retrans NFS
1921 <p>The only way I have been able to get working on Debian and RedHat
1922 Enterprise Linux for getting the timeout count is to peek in /proc/.
1924 <ahref=
"http://docs.oracle.com/cd/E19253-01/816-4555/netmonitor-12/index.html">Solaris
1925 10 System Administration Guide: Network Services
</a>, the 'nfsstat -c'
1926 command can be used to get these timeout values. But this do not work
1927 on Linux, as far as I can tell. I
1928 <ahref=
"http://bugs.debian.org/857043">asked Debian about this
</a>,
1929 but have not seen any replies yet.
</p>
1931 <p>Is there a better way to figure out if a Linux NFS client is
1932 experiencing NFS hangs? Is there a way to detect which processes are
1933 affected? Is there a way to get the NFS mount going quickly once the
1934 network problem causing the NFS hang has been cleared? I would very
1935 much welcome some clues, as we regularly run into NFS hangs.
</p>
1941 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin
</a>.
1946 <div class=
"padding"></div>
1950 <a href=
"http://people.skolelinux.org/pere/blog/Norwegian_Bokm_l_translation_of_The_Debian_Administrator_s_Handbook_complete__proofreading_in_progress.html">Norwegian Bokmål translation of The Debian Administrator's Handbook complete, proofreading in progress
</a>
1956 <p>For almost a year now, we have been working on making a Norwegian
1957 Bokmål edition of
<a href=
"https://debian-handbook.info/">The Debian
1958 Administrator's Handbook
</a>. Now, thanks to the tireless effort of
1959 Ole-Erik, Ingrid and Andreas, the initial translation is complete, and
1960 we are working on the proof reading to ensure consistent language and
1961 use of correct computer science terms. The plan is to make the book
1962 available on paper, as well as in electronic form. For that to
1963 happen, the proof reading must be completed and all the figures need
1964 to be translated. If you want to help out, get in touch.
</p>
1966 <p><a href=
"http://people.skolelinux.org/pere/debian-handbook/debian-handbook-nb-NO.pdf">A
1968 fresh PDF edition
</a> in A4 format (the final book will have smaller
1969 pages) of the book created every morning is available for
1970 proofreading. If you find any errors, please
1971 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">visit
1972 Weblate and correct the error
</a>. The
1973 <a href=
"http://l.github.io/debian-handbook/stat/nb-NO/index.html">state
1974 of the translation including figures
</a> is a useful source for those
1975 provide Norwegian bokmål screen shots and figures.
</p>
1981 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
1986 <div class=
"padding"></div>
1990 <a href=
"http://people.skolelinux.org/pere/blog/Unlimited_randomness_with_the_ChaosKey_.html">Unlimited randomness with the ChaosKey?
</a>
1996 <p>A few days ago I ordered a small batch of
1997 <a href=
"http://altusmetrum.org/ChaosKey/">the ChaosKey
</a>, a small
1998 USB dongle for generating entropy created by Bdale Garbee and Keith
1999 Packard. Yesterday it arrived, and I am very happy to report that it
2000 work great! According to its designers, to get it to work out of the
2001 box, you need the Linux kernel version
4.1 or later. I tested on a
2002 Debian Stretch machine (kernel version
4.9), and there it worked just
2003 fine, increasing the available entropy very quickly. I wrote a small
2004 test oneliner to test. It first print the current entropy level,
2005 drain /dev/random, and then print the entropy level for five seconds.
2006 Here is the situation without the ChaosKey inserted:
</p>
2009 % cat /proc/sys/kernel/random/entropy_avail; \
2010 dd bs=
1M if=/dev/random of=/dev/null count=
1; \
2011 for n in $(seq
1 5); do \
2012 cat /proc/sys/kernel/random/entropy_avail; \
2018 28 byte kopiert,
0,
000264565 s,
106 kB/s
2027 <p>The entropy level increases by
3-
4 every second. In such case any
2028 application requiring random bits (like a HTTPS enabled web server)
2029 will halt and wait for more entrpy. And here is the situation with
2030 the ChaosKey inserted:
</p>
2033 % cat /proc/sys/kernel/random/entropy_avail; \
2034 dd bs=
1M if=/dev/random of=/dev/null count=
1; \
2035 for n in $(seq
1 5); do \
2036 cat /proc/sys/kernel/random/entropy_avail; \
2042 104 byte kopiert,
0,
000487647 s,
213 kB/s
2051 <p>Quite the difference. :) I bought a few more than I need, in case
2052 someone want to buy one here in Norway. :)
</p>
2054 <p>Update: The dongle was presented at Debconf last year. You might
2055 find
<a href=
"https://debconf16.debconf.org/talks/94/">the talk
2056 recording illuminating
</a>. It explains exactly what the source of
2057 randomness is, if you are unable to spot it from the schema drawing
2058 available from the ChaosKey web site linked at the start of this blog
2065 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
2070 <div class=
"padding"></div>
2074 <a href=
"http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html">Where did that package go?
— geolocated IP traceroute
</a>
2080 <p>Did you ever wonder where the web trafic really flow to reach the
2081 web servers, and who own the network equipment it is flowing through?
2082 It is possible to get a glimpse of this from using traceroute, but it
2083 is hard to find all the details. Many years ago, I wrote a system to
2084 map the Norwegian Internet (trying to figure out if our plans for a
2085 network game service would get low enough latency, and who we needed
2086 to talk to about setting up game servers close to the users. Back
2087 then I used traceroute output from many locations (I asked my friends
2088 to run a script and send me their traceroute output) to create the
2089 graph and the map. The output from traceroute typically look like
2093 traceroute to www.stortinget.no (
85.88.67.10),
30 hops max,
60 byte packets
2094 1 uio-gw10.uio.no (
129.240.202.1)
0.447 ms
0.486 ms
0.621 ms
2095 2 uio-gw8.uio.no (
129.240.24.229)
0.467 ms
0.578 ms
0.675 ms
2096 3 oslo-gw1.uninett.no (
128.39.65.17)
0.385 ms
0.373 ms
0.358 ms
2097 4 te3-
1-
2.br1.fn3.as2116.net (
193.156.90.3)
1.174 ms
1.172 ms
1.153 ms
2098 5 he16-
1-
1.cr1.san110.as2116.net (
195.0.244.234)
2.627 ms he16-
1-
1.cr2.oslosda310.as2116.net (
195.0.244.48)
3.172 ms he16-
1-
1.cr1.san110.as2116.net (
195.0.244.234)
2.857 ms
2099 6 ae1.ar8.oslosda310.as2116.net (
195.0.242.39)
0.662 ms
0.637 ms ae0.ar8.oslosda310.as2116.net (
195.0.242.23)
0.622 ms
2100 7 89.191.10.146 (
89.191.10.146)
0.931 ms
0.917 ms
0.955 ms
2106 <p>This show the DNS names and IP addresses of (at least some of the)
2107 network equipment involved in getting the data traffic from me to the
2108 www.stortinget.no server, and how long it took in milliseconds for a
2109 package to reach the equipment and return to me. Three packages are
2110 sent, and some times the packages do not follow the same path. This
2111 is shown for hop
5, where three different IP addresses replied to the
2112 traceroute request.
</p>
2114 <p>There are many ways to measure trace routes. Other good traceroute
2115 implementations I use are traceroute (using ICMP packages) mtr (can do
2116 both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
2117 traceroute and a lot of other capabilities). All of them are easily
2118 available in
<a href=
"https://www.debian.org/">Debian
</a>.
</p>
2120 <p>This time around, I wanted to know the geographic location of
2121 different route points, to visualize how visiting a web page spread
2122 information about the visit to a lot of servers around the globe. The
2123 background is that a web site today often will ask the browser to get
2124 from many servers the parts (for example HTML, JSON, fonts,
2125 JavaScript, CSS, video) required to display the content. This will
2126 leak information about the visit to those controlling these servers
2127 and anyone able to peek at the data traffic passing by (like your ISP,
2128 the ISPs backbone provider, FRA, GCHQ, NSA and others).
</p>
2130 <p>Lets pick an example, the Norwegian parliament web site
2131 www.stortinget.no. It is read daily by all members of parliament and
2132 their staff, as well as political journalists, activits and many other
2133 citizens of Norway. A visit to the www.stortinget.no web site will
2134 ask your browser to contact
8 other servers: ajax.googleapis.com,
2135 insights.hotjar.com, script.hotjar.com, static.hotjar.com,
2136 stats.g.doubleclick.net, www.google-analytics.com,
2137 www.googletagmanager.com and www.netigate.se. I extracted this by
2138 asking
<a href=
"http://phantomjs.org/">PhantomJS
</a> to visit the
2139 Stortinget web page and tell me all the URLs PhantomJS downloaded to
2140 render the page (in HAR format using
2141 <a href=
"https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js">their
2142 netsniff example
</a>. I am very grateful to Gorm for showing me how
2143 to do this). My goal is to visualize network traces to all IP
2144 addresses behind these DNS names, do show where visitors personal
2145 information is spread when visiting the page.
</p>
2147 <p align=
"center"><a href=
"www.stortinget.no-geoip.kml"><img
2148 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geoip-small.png" alt=
"map of combined traces for URLs used by www.stortinget.no using GeoIP"/></a></p>
2150 <p>When I had a look around for options, I could not find any good
2151 free software tools to do this, and decided I needed my own traceroute
2152 wrapper outputting KML based on locations looked up using GeoIP. KML
2153 is easy to work with and easy to generate, and understood by several
2154 of the GIS tools I have available. I got good help from by NUUG
2155 colleague Anders Einar with this, and the result can be seen in
2156 <a href=
"https://github.com/petterreinholdtsen/kmltraceroute">my
2157 kmltraceroute git repository
</a>. Unfortunately, the quality of the
2158 free GeoIP databases I could find (and the for-pay databases my
2159 friends had access to) is not up to the task. The IP addresses of
2160 central Internet infrastructure would typically be placed near the
2161 controlling companies main office, and not where the router is really
2162 located, as you can see from
<a href=
"www.stortinget.no-geoip.kml">the
2163 KML file I created
</a> using the GeoLite City dataset from MaxMind.
2165 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg"><img
2166 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy-small.png" alt=
"scapy traceroute graph for URLs used by www.stortinget.no"/></a></p>
2168 <p>I also had a look at the visual traceroute graph created by
2169 <a href=
"http://www.secdev.org/projects/scapy/">the scrapy project
</a>,
2170 showing IP network ownership (aka AS owner) for the IP address in
2172 <a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg">The
2173 graph display a lot of useful information about the traceroute in SVG
2174 format
</a>, and give a good indication on who control the network
2175 equipment involved, but it do not include geolocation. This graph
2176 make it possible to see the information is made available at least for
2177 UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
2178 3 Communications and NetDNA.
</p>
2180 <p align=
"center"><a href=
"https://geotraceroute.com/index.php?node=4&host=www.stortinget.no"><img
2181 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-small.png" alt=
"example geotraceroute view for www.stortinget.no"/></a></p>
2183 <p>In the process, I came across the
2184 <a href=
"https://geotraceroute.com/">web service GeoTraceroute
</a> by
2185 Salim Gasmi. Its methology of combining guesses based on DNS names,
2186 various location databases and finally use latecy times to rule out
2187 candidate locations seemed to do a very good job of guessing correct
2188 geolocation. But it could only do one trace at the time, did not have
2189 a sensor in Norway and did not make the geolocations easily available
2190 for postprocessing. So I contacted the developer and asked if he
2191 would be willing to share the code (he refused until he had time to
2192 clean it up), but he was interested in providing the geolocations in a
2193 machine readable format, and willing to set up a sensor in Norway. So
2194 since yesterday, it is possible to run traces from Norway in this
2195 service thanks to a sensor node set up by
2196 <a href=
"https://www.nuug.no/">the NUUG assosiation
</a>, and get the
2197 trace in KML format for further processing.
</p>
2199 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml"><img
2200 src=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.png" alt=
"map of combined traces for URLs used by www.stortinget.no using geotraceroute"/></a></p>
2202 <p>Here we can see a lot of trafic passes Sweden on its way to
2203 Denmark, Germany, Holland and Ireland. Plenty of places where the
2204 Snowden confirmations verified the traffic is read by various actors
2205 without your best interest as their top priority.
</p>
2207 <p>Combining KML files is trivial using a text editor, so I could loop
2208 over all the hosts behind the urls imported by www.stortinget.no and
2209 ask for the KML file from GeoTraceroute, and create a combined KML
2210 file with all the traces (unfortunately only one of the IP addresses
2211 behind the DNS name is traced this time. To get them all, one would
2212 have to request traces using IP number instead of DNS names from
2213 GeoTraceroute). That might be the next step in this project.
</p>
2215 <p>Armed with these tools, I find it a lot easier to figure out where
2216 the IP traffic moves and who control the boxes involved in moving it.
2217 And every time the link crosses for example the Swedish border, we can
2218 be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
2219 Britain and NSA in USA and cables around the globe. (Hm, what should
2220 we tell them? :) Keep that in mind if you ever send anything
2221 unencrypted over the Internet.
</p>
2223 <p>PS: KML files are drawn using
2224 <a href=
"http://ivanrublev.me/kml/">the KML viewer from Ivan
2225 Rublev
<a/>, as it was less cluttered than the local Linux application
2226 Marble. There are heaps of other options too.
</p>
2228 <p>As usual, if you use Bitcoin and want to show your support of my
2229 activities, please send Bitcoin donations to my address
2230 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
2236 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
2241 <div class=
"padding"></div>
2245 <a href=
"http://people.skolelinux.org/pere/blog/Appstream_just_learned_how_to_map_hardware_to_packages_too_.html">Appstream just learned how to map hardware to packages too!
</a>
2251 <p>I received a very nice Christmas present today. As my regular
2252 readers probably know, I have been working on the
2253 <a href=
"http://packages.qa.debian.org/isenkram">the Isenkram
2254 system
</a> for many years. The goal of the Isenkram system is to make
2255 it easier for users to figure out what to install to get a given piece
2256 of hardware to work in Debian, and a key part of this system is a way
2257 to map hardware to packages. Isenkram have its own mapping database,
2258 and also uses data provided by each package using the AppStream
2259 metadata format. And today,
2260 <a href=
"https://tracker.debian.org/pkg/appstream">AppStream
</a> in
2261 Debian learned to look up hardware the same way Isenkram is doing it,
2262 ie using fnmatch():
</p>
2265 % appstreamcli what-provides modalias \
2266 usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
2267 Identifier: pymissile [generic]
2269 Summary: Control original Striker USB Missile Launcher
2271 % appstreamcli what-provides modalias usb:v0694p0002d0000
2272 Identifier: libnxt [generic]
2274 Summary: utility library for talking to the LEGO Mindstorms NXT brick
2277 Identifier: t2n [generic]
2279 Summary: Simple command-line tool for Lego NXT
2282 Identifier: python-nxt [generic]
2284 Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
2287 Identifier: nbc [generic]
2289 Summary: C compiler for LEGO Mindstorms NXT bricks
2294 <p>A similar query can be done using the combined AppStream and
2295 Isenkram databases using the isenkram-lookup tool:
</p>
2298 % isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
2300 % isenkram-lookup usb:v0694p0002d0000
2308 <p>You can find modalias values relevant for your machine using
2309 <tt>cat $(find /sys/devices/ -name modalias)
</tt>.
2311 <p>If you want to make this system a success and help Debian users
2312 make the most of the hardware they have, please
2313 help
<a href=
"https://wiki.debian.org/AppStream/Guidelines">add
2314 AppStream metadata for your package following the guidelines
</a>
2315 documented in the wiki. So far only
11 packages provide such
2316 information, among the several hundred hardware specific packages in
2317 Debian. The Isenkram database on the other hand contain
101 packages,
2318 mostly related to USB dongles. Most of the packages with hardware
2319 mapping in AppStream are LEGO Mindstorms related, because I have, as
2320 part of my involvement in
2321 <a href=
"https://wiki.debian.org/LegoDesigners">the Debian LEGO
2322 team
</a> given priority to making sure LEGO users get proposed the
2323 complete set of packages in Debian for that particular hardware. The
2324 team also got a nice Christmas present today. The
2325 <a href=
"https://tracker.debian.org/pkg/nxt-firmware">nxt-firmware
2326 package
</a> made it into Debian. With this package in place, it is
2327 now possible to use the LEGO Mindstorms NXT unit with only free
2328 software, as the nxt-firmware package contain the source and firmware
2329 binaries for the NXT brick.
</p>
2331 <p>As usual, if you use Bitcoin and want to show your support of my
2332 activities, please send Bitcoin donations to my address
2333 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
2339 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
2344 <div class=
"padding"></div>
2348 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_updated_with_a_lot_more_hardware_package_mappings.html">Isenkram updated with a lot more hardware-package mappings
</a>
2354 <p><a href=
"http://packages.qa.debian.org/isenkram">The Isenkram
2355 system
</a> I wrote two years ago to make it easier in Debian to find
2356 and install packages to get your hardware dongles to work, is still
2357 going strong. It is a system to look up the hardware present on or
2358 connected to the current system, and map the hardware to Debian
2359 packages. It can either be done using the tools in isenkram-cli or
2360 using the user space daemon in the isenkram package. The latter will
2361 notify you, when inserting new hardware, about what packages to
2362 install to get the dongle working. It will even provide a button to
2363 click on to ask packagekit to install the packages.
</p>
2365 <p>Here is an command line example from my Thinkpad laptop:
</p>
2386 <p>It can also list the firware package providing firmware requested
2387 by the load kernel modules, which in my case is an empty list because
2388 I have all the firmware my machine need:
2391 % /usr/sbin/isenkram-autoinstall-firmware -l
2392 info: did not find any firmware files requested by loaded kernel modules. exiting
2396 <p>The last few days I had a look at several of the around
250
2397 packages in Debian with udev rules. These seem like good candidates
2398 to install when a given hardware dongle is inserted, and I found
2399 several that should be proposed by isenkram. I have not had time to
2400 check all of them, but am happy to report that now there are
97
2401 packages packages mapped to hardware by Isenkram.
11 of these
2402 packages provide hardware mapping using AppStream, while the rest are
2403 listed in the modaliases file provided in isenkram.
</p>
2405 <p>These are the packages with hardware mappings at the moment. The
2406 <strong>marked packages
</strong> are also announcing their hardware
2407 support using AppStream, for everyone to use:
</p>
2409 <p>air-quality-sensor, alsa-firmware-loaders, argyll,
2410 <strong>array-info
</strong>, avarice, avrdude, b43-fwcutter,
2411 bit-babbler, bluez, bluez-firmware,
<strong>brltty
</strong>,
2412 <strong>broadcom-sta-dkms
</strong>, calibre, cgminer, cheese, colord,
2413 <strong>colorhug-client
</strong>, dahdi-firmware-nonfree, dahdi-linux,
2414 dfu-util, dolphin-emu, ekeyd, ethtool, firmware-ipw2x00, fprintd,
2415 fprintd-demo,
<strong>galileo
</strong>, gkrellm-thinkbat, gphoto2,
2416 gpsbabel, gpsbabel-gui, gpsman, gpstrans, gqrx-sdr, gr-fcdproplus,
2417 gr-osmosdr, gtkpod, hackrf, hdapsd, hdmi2usb-udev, hpijs-ppds, hplip,
2418 ipw3945-source, ipw3945d, kde-config-tablet, kinect-audio-setup,
2419 <strong>libnxt
</strong>, libpam-fprintd,
<strong>lomoco
</strong>,
2420 madwimax, minidisc-utils, mkgmap, msi-keyboard, mtkbabel,
2421 <strong>nbc
</strong>,
<strong>nqc
</strong>, nut-hal-drivers, ola,
2422 open-vm-toolbox, open-vm-tools, openambit, pcgminer, pcmciautils,
2423 pcscd, pidgin-blinklight, printer-driver-splix,
2424 <strong>pymissile
</strong>, python-nxt, qlandkartegt,
2425 qlandkartegt-garmin, rosegarden, rt2x00-source, sispmctl,
2426 soapysdr-module-hackrf, solaar, squeak-plugins-scratch, sunxi-tools,
2427 <strong>t2n
</strong>, thinkfan, thinkfinger-tools, tlp, tp-smapi-dkms,
2428 tp-smapi-source, tpb, tucnak, uhd-host, usbmuxd, viking,
2429 virtualbox-ose-guest-x11, w1retap, xawtv, xserver-xorg-input-vmmouse,
2430 xserver-xorg-input-wacom, xserver-xorg-video-qxl,
2431 xserver-xorg-video-vmware, yubikey-personalization and
2434 <p>If you know of other packages, please let me know with a wishlist
2435 bug report against the isenkram-cli package, and ask the package
2437 <a href=
"https://wiki.debian.org/AppStream/Guidelines">add AppStream
2438 metadata according to the guidelines
</a> to provide the information
2439 for everyone. In time, I hope to get rid of the isenkram specific
2440 hardware mapping and depend exclusively on AppStream.
</p>
2442 <p>Note, the AppStream metadata for broadcom-sta-dkms is matching too
2443 much hardware, and suggest that the package with with any ethernet
2444 card. See
<a href=
"http://bugs.debian.org/838735">bug #
838735</a> for
2445 the details. I hope the maintainer find time to address it soon. In
2446 the mean time I provide an override in isenkram.
</p>
2452 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
2457 <div class=
"padding"></div>
2461 <a href=
"http://people.skolelinux.org/pere/blog/Oolite__a_life_in_space_as_vagabond_and_mercenary___nice_free_software.html">Oolite, a life in space as vagabond and mercenary - nice free software
</a>
2467 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-12-11-nice-oolite.png"/></p>
2469 <p>In my early years, I played
2470 <a href=
"http://wiki.alioth.net/index.php/Classic_Elite">the epic game
2471 Elite
</a> on my PC. I spent many months trading and fighting in
2472 space, and reached the 'elite' fighting status before I moved on. The
2473 original Elite game was available on Commodore
64 and the IBM PC
2474 edition I played had a
64 KB executable. I am still impressed today
2475 that the authors managed to squeeze both a
3D engine and details about
2476 more than
2000 planet systems across
7 galaxies into a binary so
2479 <p>I have known about
<a href=
"http://www.oolite.org/">the free
2480 software game Oolite inspired by Elite
</a> for a while, but did not
2481 really have time to test it properly until a few days ago. It was
2482 great to discover that my old knowledge about trading routes were
2483 still valid. But my fighting and flying abilities were gone, so I had
2484 to retrain to be able to dock on a space station. And I am still not
2485 able to make much resistance when I am attacked by pirates, so I
2486 bougth and mounted the most powerful laser in the rear to be able to
2487 put up at least some resistance while fleeing for my life. :)
</p>
2489 <p>When playing Elite in the late eighties, I had to discover
2490 everything on my own, and I had long lists of prices seen on different
2491 planets to be able to decide where to trade what. This time I had the
2493 <a href=
"http://wiki.alioth.net/index.php/Main_Page">Elite wiki
</a>,
2494 where information about each planet is easily available with common
2495 price ranges and suggested trading routes. This improved my ability
2496 to earn money and I have been able to earn enough to buy a lot of
2497 useful equipent in a few days. I believe I originally played for
2498 months before I could get a docking computer, while now I could get it
2499 after less then a week.
</p>
2501 <p>If you like science fiction and dreamed of a life as a vagabond in
2502 space, you should try out Oolite. It is available for Linux, MacOSX
2503 and Windows, and is included in Debian and derivatives since
2011.
</p>
2505 <p>As usual, if you use Bitcoin and want to show your support of my
2506 activities, please send Bitcoin donations to my address
2507 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
2513 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
2518 <div class=
"padding"></div>
2522 <a href=
"http://people.skolelinux.org/pere/blog/Quicker_Debian_installations_using_eatmydata.html">Quicker Debian installations using eatmydata
</a>
2528 <p>Two years ago, I did some experiments with eatmydata and the Debian
2529 installation system, observing how using
2530 <a href=
"http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html">eatmydata
2531 could speed up the installation
</a> quite a bit. My testing measured
2532 speedup around
20-
40 percent for Debian Edu, where we install around
2533 1000 packages from within the installer. The eatmydata package
2534 provide a way to disable/delay file system flushing. This is a bit
2535 risky in the general case, as files that should be stored on disk will
2536 stay only in memory a bit longer than expected, causing problems if a
2537 machine crashes at an inconvenient time. But for an installation, if
2538 the machine crashes during installation the process is normally
2539 restarted, and avoiding disk operations as much as possible to speed
2540 up the process make perfect sense.
2542 <p>I added code in the Debian Edu specific installation code to enable
2543 <a href=
"https://tracker.debian.org/pkg/libeatmydata">eatmydata
</a>,
2544 but did not have time to push it any further. But a few months ago I
2545 picked it up again and worked with the libeatmydata package maintainer
2546 Mattia Rizzolo to make it easier for everyone to get this installation
2547 speedup in Debian. Thanks to our cooperation There is now an
2548 eatmydata-udeb package in Debian testing and unstable, and simply
2549 enabling/installing it in debian-installer (d-i) is enough to get the
2550 quicker installations. It can be enabled using preseeding. The
2551 following untested kernel argument should do the trick:
</p>
2554 preseed/
early_command="anna-install eatmydata-udeb"
2557 <p>This should ask d-i to install the package inside the d-i
2558 environment early in the installation sequence. Having it installed
2559 in d-i in turn will make sure the relevant scripts are called just
2560 after debootstrap filled /target/ with the freshly installed Debian
2561 system to configure apt to run dpkg with eatmydata. This is enough to
2562 speed up the installation process. There is a proposal to
2563 <a href=
"https://bugs.debian.org/841153">extend the idea a bit further
2564 by using /etc/ld.so.preload instead of apt.conf
</a>, but I have not
2565 tested its impact.
</p>
2572 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
2577 <div class=
"padding"></div>
2581 <a href=
"http://people.skolelinux.org/pere/blog/Oversette_bokm_l_til_nynorsk__enklere_enn_du_tror_takket_v_re_Apertium.html">Oversette bokmål til nynorsk, enklere enn du tror takket være Apertium
</a>
2587 <p>I Norge er det mange som trenger å skrive både bokmål og nynorsk.
2588 Eksamensoppgaver, offentlige brev og nyheter er eksempler på tekster
2589 der det er krav om skriftspråk. I tillegg til alle skoleoppgavene som
2590 elever over det ganske land skal levere inn hvert år. Det mange ikke
2591 vet er at selv om de kommersielle alternativene
2592 <a href=
"https://translate.google.com/">Google Translate
</a> og
2593 <a href=
"https://www.bing.com/translator/">Bing Translator
</a> ikke kan
2594 bidra med å oversette mellom bokmål og nynorsk, så finnes det et
2595 utmerket fri programvarealternativ som kan. Oversetterverktøyet
2596 Apertium har støtte for en rekke språkkombinasjoner, og takket være
2597 den utrettelige innsatsen til blant annet Kevin Brubeck Unhammer, kan
2598 en bruke webtjenesten til å fylle inn en tekst på bokmål eller
2599 nynorsk, og få den automatoversatt til det andre skriftspråket.
2600 Resultatet er ikke perfekt, men et svært godt utgangspunkt. Av og til
2601 er resultatet så bra at det kan benyttes uten endringer. Jeg vet
2602 f.eks. at store deler av Joomla ble oversatt til nynorsk ved hjelp
2603 Apertium. Høres det ut som noe du kan ha bruk for? Besøk i så fall
2604 <a href=
"https://www.apertium.org/">Apertium.org
</a> og fyll inn
2605 teksten din i webskjemaet der.
2607 <p>Hvis du trenger maskinell tilgang til den bakenforliggende
2608 teknologien kan du enten installere pakken
2609 <a href=
"https://tracker.debian.org/apertium-nno-nob">apertium-nno-nob
</a>
2610 på en Debian-maskin eller bruke web-API-et tilgjengelig fra
2611 api.apertium.org. Se
2612 <a href=
"http://wiki.apertium.org/wiki/Apertium-apy">API-dokumentasjonen
</a>
2613 for detaljer om web-API-et. Her kan du se hvordan resultatet blir for
2614 denne teksten som ble skrevet på bokmål over maskinoversatt til
2619 <p>I Noreg er det mange som treng å skriva både bokmål og nynorsk.
2620 Eksamensoppgåver, offentlege brev og nyhende er døme på tekster der
2621 det er krav om skriftspråk. I tillegg til alle skuleoppgåvene som
2622 elevar over det ganske land skal levera inn kvart år. Det mange ikkje
2623 veit er at sjølv om dei kommersielle alternativa
2624 <a href=
"https://translate.google.com/">Google *Translate
</a> og
2625 <a href=
"https://www.bing.com/translator/">Bing *Translator
</a> ikkje
2626 kan bidra med å omsetja mellom bokmål og nynorsk, så finst det eit
2627 utmerka fri programvarealternativ som kan. Omsetjarverktøyet
2628 *Apertium har støtte for ei rekkje språkkombinasjonar, og takka vera
2629 den utrøyttelege innsatsen til blant anna Kevin Brubeck Unhammer, kan
2630 ein bruka *webtjenesten til å fylla inn ei tekst på bokmål eller
2631 nynorsk, og få den *automatoversatt til det andre skriftspråket.
2632 Resultatet er ikkje perfekt, men eit svært godt utgangspunkt. Av og
2633 til er resultatet så bra at det kan nyttast utan endringar. Eg veit
2634 t.d. at store delar av *Joomla vart omsett til nynorsk ved hjelp
2635 *Apertium. Høyrast det ut som noko du kan ha bruk for? Besøk i så
2636 fall
<a href=
"https://www.apertium.org/">*Apertium.org
</a> og fyll inn
2637 teksta di i *webskjemaet der.
2639 <p>Viss du treng *maskinell tilgjenge til den *bakenforliggende
2640 teknologien kan du anten installera pakken
2641 <a href=
"https://tracker.debian.org/apertium-nno-nob">*apertium-*nno-*nob
</a>
2642 på ein *Debian-maskin eller bruka *web-*API-eit tilgjengeleg frå
2643 *api.*apertium.org. Sjå
2644 <a href=
"http://wiki.apertium.org/wiki/Apertium-apy">*API-dokumentasjonen
</a>
2645 for detaljar om *web-*API-eit. Her kan du sjå korleis resultatet vert
2646 for denne teksta som vart skreva på bokmål over *maskinoversatt til
2653 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll
</a>.
2658 <div class=
"padding"></div>
2662 <a href=
"http://people.skolelinux.org/pere/blog/Coz_profiler_for_multi_threaded_software_is_now_in_Debian.html">Coz profiler for multi-threaded software is now in Debian
</a>
2668 <p><a href=
"http://coz-profiler.org/">The Coz profiler
</a>, a nice
2669 profiler able to run benchmarking experiments on the instrumented
2670 multi-threaded program, finally
2671 <a href=
"https://tracker.debian.org/pkg/coz-profiler">made it into
2672 Debian unstable yesterday
</A>. Lluís Vilanova and I have spent many
2674 <a href=
"http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">I
2675 blogged about the coz tool
</a> in August working with upstream to make
2676 it suitable for Debian. There are still issues with clang
2677 compatibility, inline assembly only working x86 and minimized
2678 JavaScript libraries.
</p>
2680 <p>To test it, install 'coz-profiler' using apt and run it like this:
</p>
2683 <tt>coz run --- /path/to/binary-with-debug-info
</tt>
2686 <p>This will produce a profile.coz file in the current working
2687 directory with the profiling information. This is then given to a
2688 JavaScript application provided in the package and available from
2689 <a href=
"http://plasma-umass.github.io/coz/">a project web page
</a>.
2690 To start the local copy, invoke it in a browser like this:
</p>
2693 <tt>sensible-browser /usr/share/coz-profiler/viewer/index.htm
</tt>
2696 <p>See the project home page and the
2697 <a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger">USENIX
2698 ;login: article on Coz
</a> for more information on how it is
2705 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
2710 <div class=
"padding"></div>
2714 <a href=
"http://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway
</a>
2720 <p>A while back I received a Gyro sensor for the NXT
2721 <a href=
"mindstorms.lego.com">Mindstorms
</a> controller as a birthday
2722 present. It had been on my wishlist for a while, because I wanted to
2723 build a Segway like balancing lego robot. I had already built
2724 <a href=
"http://www.nxtprograms.com/NXT2/segway/">a simple balancing
2725 robot
</a> with the kids, using the light/color sensor included in the
2726 NXT kit as the balance sensor, but it was not working very well. It
2727 could balance for a while, but was very sensitive to the light
2728 condition in the room and the reflective properties of the surface and
2729 would fall over after a short while. I wanted something more robust,
2731 <a href=
"https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NGY1044">the
2732 gyro sensor from HiTechnic
</a> I believed would solve it on my
2733 wishlist for some years before it suddenly showed up as a gift from my
2736 <p>Unfortunately I have not had time to sit down and play with it
2737 since then. But that changed some days ago, when I was searching for
2738 lego segway information and came across a recipe from HiTechnic for
2740 <a href=
"http://www.hitechnic.com/blog/gyro-sensor/htway/">the
2741 HTWay
</a>, a segway like balancing robot. Build instructions and
2742 <a href=
"https://www.hitechnic.com/upload/786-HTWayC.nxc">source
2743 code
</a> was included, so it was just a question of putting it all
2744 together. And thanks to the great work of many Debian developers, the
2745 compiler needed to build the source for the NXT is already included in
2746 Debian, so I was read to go in less than an hour. The resulting robot
2747 do not look very impressive in its simplicity:
</p>
2749 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg"></p>
2751 <p>Because I lack the infrared sensor used to control the robot in the
2752 design from HiTechnic, I had to comment out the last task
2753 (taskControl). I simply placed /* and */ around it get the program
2754 working without that sensor present. Now it balances just fine until
2755 the battery status run low:
</p>
2757 <p align=
"center"><video width=
"70%" controls=
"true">
2758 <source src=
"http://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-balancing.ogv" type=
"video/ogg">
2761 <p>Now we would like to teach it how to follow a line and take remote
2762 control instructions using the included Bluetooth receiver in the NXT.
</p>
2764 <p>If you, like me, love LEGO and want to make sure we find the tools
2765 they need to work with LEGO in Debian and all our derivative
2766 distributions like Ubuntu, check out
2767 <a href=
"http://wiki.debian.org/LegoDesigners">the LEGO designers
2768 project page
</a> and join the Debian LEGO team. Personally I own a
2769 RCX and NXT controller (no EV3), and would like to make sure the
2770 Debian tools needed to program the systems I own work as they
2777 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot
</a>.
2782 <div class=
"padding"></div>
2786 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">Experience and updated recipe for using the Signal app without a mobile phone
</a>
2793 <a href=
"http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html">I
2794 wrote how to get the Signal Chrome/Chromium app working
</a> without
2795 the ability to receive SMS messages (aka without a cell phone). It is
2796 time to share some experiences and provide an updated setup.
</p>
2798 <p>The Signal app have worked fine for several months now, and I use
2799 it regularly to chat with my loved ones. I had a major snag at the
2800 end of my summer vacation, when the the app completely forgot my
2801 setup, identity and keys. The reason behind this major mess was
2802 running out of disk space. To avoid that ever happening again I have
2803 started storing everything in
<tt>userdata/
</tt> in git, to be able to
2804 roll back to an earlier version if the files are wiped by mistake. I
2805 had to use it once after introducing the git backup. When rolling
2806 back to an earlier version, one need to use the 'reset session' option
2807 in Signal to get going, and notify the people you talk with about the
2808 problem. I assume there is some sequence number tracking in the
2809 protocol to detect rollback attacks. The git repository is rather big
2810 (
674 MiB so far), but I have not tried to figure out if some of the
2811 content can be added to a .gitignore file due to lack of spare
2814 <p>I've also hit the
90 days timeout blocking, and noticed that this
2815 make it impossible to send messages using Signal. I could still
2816 receive them, but had to patch the code with a new timestamp to send.
2817 I believe the timeout is added by the developers to force people to
2818 upgrade to the latest version of the app, even when there is no
2819 protocol changes, to reduce the version skew among the user base and
2820 thus try to keep the number of support requests down.
</p>
2822 <p>Since my original recipe, the Signal source code changed slightly,
2823 making the old patch fail to apply cleanly. Below is an updated
2824 patch, including the shell wrapper I use to start Signal. The
2825 original version required a new user to locate the JavaScript console
2826 and call a function from there. I got help from a friend with more
2827 JavaScript knowledge than me to modify the code to provide a GUI
2828 button instead. This mean that to get started you just need to run
2829 the wrapper and click the 'Register without mobile phone' to get going
2830 now. I've also modified the timeout code to always set it to
90 days
2831 in the future, to avoid having to patch the code regularly.
</p>
2833 <p>So, the updated recipe for Debian Jessie:
</p>
2837 <li>First, install required packages to get the source code and the
2838 browser you need. Signal only work with Chrome/Chromium, as far as I
2839 know, so you need to install it.
2842 apt install git tor chromium
2843 git clone https://github.com/WhisperSystems/Signal-Desktop.git
2846 <li>Modify the source code using command listed in the the patch
2849 <li>Start Signal using the run-signal-app wrapper (for example using
2850 <tt>`pwd`/run-signal-app
</tt>).
2852 <li>Click on the 'Register without mobile phone', will in a phone
2853 number you can receive calls to the next minute, receive the
2854 verification code and enter it into the form field and press
2855 'Register'. Note, the phone number you use will be user Signal
2856 username, ie the way others can find you on Signal.
</li>
2858 <li>You can now use Signal to contact others. Note, new contacts do
2859 not show up in the contact list until you restart Signal, and there is
2860 no way to assign names to Contacts. There is also no way to create or
2861 update chat groups. I suspect this is because the web app do not have
2862 a associated contact database.
</li>
2866 <p>I am still a bit uneasy about using Signal, because of the way its
2867 main author moxie0 reject federation and accept dependencies to major
2868 corporations like Google (part of the code is fetched from Google) and
2869 Amazon (the central coordination point is owned by Amazon). See for
2871 <a href=
"https://github.com/LibreSignal/LibreSignal/issues/37">the
2872 LibreSignal issue tracker
</a> for a thread documenting the authors
2873 view on these issues. But the network effect is strong in this case,
2874 and several of the people I want to communicate with already use
2875 Signal. Perhaps we can all move to
<a href=
"https://ring.cx/">Ring
</a>
2876 once it
<a href=
"https://bugs.debian.org/830265">work on my
2877 laptop
</a>? It already work on Windows and Android, and is included
2878 in
<a href=
"https://tracker.debian.org/pkg/ring">Debian
</a> and
2879 <a href=
"https://launchpad.net/ubuntu/+source/ring">Ubuntu
</a>, but not
2880 working on Debian Stable.
</p>
2882 <p>Anyway, this is the patch I apply to the Signal code to get it
2883 working. It switch to the production servers, disable to timeout,
2884 make registration easier and add the shell wrapper:
</p>
2887 cd Signal-Desktop; cat
<<EOF | patch -p1
2888 diff --git a/js/background.js b/js/background.js
2889 index
24b4c1d.
.579345f
100644
2890 --- a/js/background.js
2891 +++ b/js/background.js
2896 - var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
2897 + var SERVER_URL = 'https://textsecure-service-ca.whispersystems.org';
2898 var SERVER_PORTS = [
80,
4433,
8443];
2899 - var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com';
2900 + var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments.s3.amazonaws.com';
2901 var messageReceiver;
2902 window.getSocketStatus = function() {
2903 if (messageReceiver) {
2904 diff --git a/js/expire.js b/js/expire.js
2905 index
639aeae..beb91c3
100644
2911 - var BUILD_EXPIRATION =
0;
2912 + var BUILD_EXPIRATION = Date.now() + (
90 *
24 *
60 *
60 *
1000);
2914 window.extension = window.extension || {};
2916 diff --git a/js/views/install_view.js b/js/views/install_view.js
2917 index
7816f4f.
.1d6233b
100644
2918 --- a/js/views/install_view.js
2919 +++ b/js/views/install_view.js
2922 'click .step1': this.selectStep.bind(this,
1),
2923 'click .step2': this.selectStep.bind(this,
2),
2924 - 'click .step3': this.selectStep.bind(this,
3)
2925 + 'click .step3': this.selectStep.bind(this,
3),
2926 + 'click .callreg': function() { extension.install('standalone') },
2929 clearQR: function() {
2930 diff --git a/options.html b/options.html
2931 index dc0f28e.
.8d709f6
100644
2935 <div class='nav'
>
2936 <h1
>{{ installWelcome }}
</h1
>
2937 <p
>{{ installTagline }}
</p
>
2938 -
<div
> <a class='button step2'
>{{ installGetStartedButton }}
</a
> </div
>
2939 +
<div
> <a class='button step2'
>{{ installGetStartedButton }}
</a
>
2940 +
<br
> <a
class="button callreg"
>Register without mobile phone
</a
>
2943 <span class='dot step1 selected'
></span
>
2944 <span class='dot step2'
></span
>
2945 <span class='dot step3'
></span
>
2946 --- /dev/null
2016-
10-
07 09:
55:
13.730181472 +
0200
2947 +++ b/run-signal-app
2016-
10-
10 08:
54:
09.434172391 +
0200
2953 +
userdata="`pwd`/userdata"
2954 +if [ -d "$userdata" ] && [ ! -d "$userdata/.git" ] ; then
2955 + (cd $userdata && git init)
2957 +(cd $userdata && git add . && git commit -m "Current status." || true)
2959 +
--proxy-server="socks://localhost:
9050" \
2960 + --user-data-dir=$userdata --load-and-launch-app=`pwd`
2962 chmod a+rx run-signal-app
2965 <p>As usual, if you use Bitcoin and want to show your support of my
2966 activities, please send Bitcoin donations to my address
2967 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
2973 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
2978 <div class=
"padding"></div>
2982 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html">Isenkram, Appstream and udev make life as a LEGO builder easier
</a>
2988 <p><a href=
"http://packages.qa.debian.org/isenkram">The Isenkram
2989 system
</a> provide a practical and easy way to figure out which
2990 packages support the hardware in a given machine. The command line
2991 tool
<tt>isenkram-lookup
</tt> and the tasksel options provide a
2992 convenient way to list and install packages relevant for the current
2993 hardware during system installation, both user space packages and
2994 firmware packages. The GUI background daemon on the other hand provide
2995 a pop-up proposing to install packages when a new dongle is inserted
2996 while using the computer. For example, if you plug in a smart card
2997 reader, the system will ask if you want to install
<tt>pcscd
</tt> if
2998 that package isn't already installed, and if you plug in a USB video
2999 camera the system will ask if you want to install
<tt>cheese
</tt> if
3000 cheese is currently missing. This already work just fine.
</p>
3002 <p>But Isenkram depend on a database mapping from hardware IDs to
3003 package names. When I started no such database existed in Debian, so
3004 I made my own data set and included it with the isenkram package and
3005 made isenkram fetch the latest version of this database from git using
3006 http. This way the isenkram users would get updated package proposals
3007 as soon as I learned more about hardware related packages.
</p>
3009 <p>The hardware is identified using modalias strings. The modalias
3010 design is from the Linux kernel where most hardware descriptors are
3011 made available as a strings that can be matched using filename style
3012 globbing. It handle USB, PCI, DMI and a lot of other hardware related
3015 <p>The downside to the Isenkram specific database is that there is no
3016 information about relevant distribution / Debian version, making
3017 isenkram propose obsolete packages too. But along came AppStream, a
3018 cross distribution mechanism to store and collect metadata about
3019 software packages. When I heard about the proposal, I contacted the
3020 people involved and suggested to add a hardware matching rule using
3021 modalias strings in the specification, to be able to use AppStream for
3022 mapping hardware to packages. This idea was accepted and AppStream is
3023 now a great way for a package to announce the hardware it support in a
3024 distribution neutral way. I wrote
3025 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">a
3026 recipe on how to add such meta-information
</a> in a blog post last
3027 December. If you have a hardware related package in Debian, please
3028 announce the relevant hardware IDs using AppStream.
</p>
3030 <p>In Debian, almost all packages that can talk to a LEGO Mindestorms
3031 RCX or NXT unit, announce this support using AppStream. The effect is
3032 that when you insert such LEGO robot controller into your Debian
3033 machine, Isenkram will propose to install the packages needed to get
3034 it working. The intention is that this should allow the local user to
3035 start programming his robot controller right away without having to
3036 guess what packages to use or which permissions to fix.
</p>
3038 <p>But when I sat down with my son the other day to program our NXT
3039 unit using his Debian Stretch computer, I discovered something
3040 annoying. The local console user (ie my son) did not get access to
3041 the USB device for programming the unit. This used to work, but no
3042 longer in Jessie and Stretch. After some investigation and asking
3043 around on #debian-devel, I discovered that this was because udev had
3044 changed the mechanism used to grant access to local devices. The
3045 ConsoleKit mechanism from
<tt>/lib/udev/rules.d/
70-udev-acl.rules
</tt>
3046 no longer applied, because LDAP users no longer was added to the
3047 plugdev group during login. Michael Biebl told me that this method
3048 was obsolete and the new method used ACLs instead. This was good
3049 news, as the plugdev mechanism is a mess when using a remote user
3050 directory like LDAP. Using ACLs would make sure a user lost device
3051 access when she logged out, even if the user left behind a background
3052 process which would retain the plugdev membership with the ConsoleKit
3053 setup. Armed with this knowledge I moved on to fix the access problem
3054 for the LEGO Mindstorms related packages.
</p>
3056 <p>The new system uses a udev tag, 'uaccess'. It can either be
3057 applied directly for a device, or is applied in
3058 /lib/udev/rules.d/
70-uaccess.rules for classes of devices. As the
3059 LEGO Mindstorms udev rules did not have a class, I decided to add the
3060 tag directly in the udev rules files included in the packages. Here
3061 is one example. For the nqc C compiler for the RCX, the
3062 <tt>/lib/udev/rules.d/
60-nqc.rules
</tt> file now look like this:
3065 SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="
0694", ATTR{idProduct}=="
0001", \
3066 SYMLINK+="rcx-%k", TAG+="uaccess"
3069 <p>The key part is the 'TAG+="uaccess"' at the end. I suspect all
3070 packages using plugdev in their /lib/udev/rules.d/ files should be
3071 changed to use this tag (either directly or indirectly via
3072 <tt>70-uaccess.rules
</tt>). Perhaps a lintian check should be created
3075 <p>I've been unable to find good documentation on the uaccess feature.
3076 It is unclear to me if the uaccess tag is an internal implementation
3077 detail like the udev-acl tag used by
3078 <tt>/lib/udev/rules.d/
70-udev-acl.rules
</tt>. If it is, I guess the
3079 indirect method is the preferred way. Michael
3080 <a href=
"https://github.com/systemd/systemd/issues/4288">asked for more
3081 documentation from the systemd project
</a> and I hope it will make
3082 this clearer. For now I use the generic classes when they exist and
3083 is already handled by
<tt>70-uaccess.rules
</tt>, and add the tag
3084 directly if no such class exist.
</p>
3086 <p>To learn more about the isenkram system, please check out
3087 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">my
3088 blog posts tagged isenkram
</a>.
</p>
3090 <p>To help out making life for LEGO constructors in Debian easier,
3091 please join us on our IRC channel
3092 <a href=
"irc://irc.debian.org/%23debian-lego">#debian-lego
</a> and join
3093 the
<a href=
"https://alioth.debian.org/projects/debian-lego/">Debian
3094 LEGO team
</a> in the Alioth project we created yesterday. A mailing
3095 list is not yet created, but we are working on it. :)
</p>
3097 <p>As usual, if you use Bitcoin and want to show your support of my
3098 activities, please send Bitcoin donations to my address
3099 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
3105 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego
</a>.
3110 <div class=
"padding"></div>
3114 <a href=
"http://people.skolelinux.org/pere/blog/First_draft_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook_now_public.html">First draft Norwegian Bokmål edition of The Debian Administrator's Handbook now public
</a>
3121 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html">started
3122 to work
</a> on a Norwegian Bokmål edition of the "open access" book on
3123 how to set up and administrate a Debian system. Today I am happy to
3124 report that the first draft is now publicly available. You can find
3125 it on
<a href=
"https://debian-handbook.info/get/">get the Debian
3126 Administrator's Handbook page
</a> (under Other languages). The first
3127 eight chapters have a first draft translation, and we are working on
3128 proofreading the content. If you want to help out, please start
3130 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">the
3131 hosted weblate project page
</a>, and get in touch using
3132 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators">the
3133 translators mailing list
</a>. Please also check out
3134 <a href=
"https://debian-handbook.info/contribute/">the instructions for
3135 contributors
</a>. A good way to contribute is to proofread the text
3136 and update weblate if you find errors.
</p>
3138 <p>Our goal is still to make the Norwegian book available on paper as well as
3139 electronic form.
</p>
3145 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3150 <div class=
"padding"></div>
3154 <a href=
"http://people.skolelinux.org/pere/blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html">Coz can help you find bottlenecks in multi-threaded software - nice free software
</a>
3160 <p>This summer, I read a great article
3161 "
<a href=
"https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
3162 This Is the Profiler You're Looking For
</a>" in USENIX ;login: about
3163 how to profile multi-threaded programs. It presented a system for
3164 profiling software by running experiences in the running program,
3165 testing how run time performance is affected by "speeding up
" parts of
3166 the code to various degrees compared to a normal run. It does this by
3167 slowing down parallel threads while the "faster up
" code is running
3168 and measure how this affect processing time. The processing time is
3169 measured using probes inserted into the code, either using progress
3170 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
3171 can also measure unmodified code by measuring complete the program
3172 runtime and running the program several times instead.</p>
3174 <p>The project and presentation was so inspiring that I would like to
3175 get the system into Debian. I
3176 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
830708">created
3177 a WNPP request for it</a> and contacted upstream to try to make the
3178 system ready for Debian by sending patches. The build process need to
3179 be changed a bit to avoid running 'git clone' to get dependencies, and
3180 to include the JavaScript web page used to visualize the collected
3181 profiling information included in the source package.
3182 But I expect that should work out fairly soon.</p>
3184 <p>The way the system work is fairly simple. To run an coz experiment
3185 on a binary with debug symbols available, start the program like this:
3187 <p><blockquote><pre>
3188 coz run --- program-to-run
3189 </pre></blockquote></p>
3191 <p>This will create a text file profile.coz with the instrumentation
3192 information. To show what part of the code affect the performance
3193 most, use a web browser and either point it to
3194 <a href="http://plasma-umass.github.io/coz/
">http://plasma-umass.github.io/coz/</a>
3195 or use the copy from git (in the gh-pages branch). Check out this web
3196 site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
3197 profiling more useful you include <coz.h> and insert the
3198 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
3199 code, rebuild and run the profiler. This allow coz to do more
3200 targeted experiments.</p>
3202 <p>A video published by ACM
3203 <a href="https://www.youtube.com/watch?v=jE0V-p1odPg
">presenting the
3204 Coz profiler</a> is available from Youtube. There is also a paper
3205 from the 25th Symposium on Operating Systems Principles available
3207 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger
">Coz:
3208 finding code that counts with causal profiling</a>.</p>
3210 <p><a href="https://github.com/plasma-umass/coz
">The source code</a>
3211 for Coz is available from github. It will only build with clang
3213 <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=
55606">C++
3214 feature missing in GCC</a>, but I've submitted
3215 <a href="https://github.com/plasma-umass/coz/pull/
67">a patch to solve
3216 it</a> and hope it will be included in the upstream source soon.</p>
3218 <p>Please get in touch if you, like me, would like to see this piece
3219 of software in Debian. I would very much like some help with the
3220 packaging effort, as I lack the in depth knowledge on how to package
3227 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>.
3232 <div class="padding
"></div>
3236 <a href="http://people.skolelinux.org/pere/blog/Unlocking_HTC_Desire_HD_on_Linux_using_unruu_and_fastboot.html
">Unlocking HTC Desire HD on Linux using unruu and fastboot</a>
3242 <p>Yesterday, I tried to unlock a HTC Desire HD phone, and it proved
3243 to be a slight challenge. Here is the recipe if I ever need to do it
3244 again. It all started by me wanting to try the recipe to set up
3245 <a href="https://blog.torproject.org/blog/mission-impossible-hardening-android-security-and-privacy
">an
3246 hardened Android installation</a> from the Tor project blog on a
3247 device I had access to. It is a old mobile phone with a broken
3248 microphone The initial idea had been to just
3249 <a href="http://wiki.cyanogenmod.org/w/Install_CM_for_ace
">install
3250 CyanogenMod on it</a>, but did not quite find time to start on it
3251 until a few days ago.</p>
3253 <p>The unlock process is supposed to be simple: (1) Boot into the boot
3254 loader (press volume down and power at the same time), (2) select
3255 'fastboot' before (3) connecting the device via USB to a Linux
3256 machine, (4) request the device identifier token by running 'fastboot
3257 oem get_identifier_token', (5) request the device unlocking key using
3258 the <a href="http://www.htcdev.com/bootloader/
">HTC developer web
3259 site</a> and unlock the phone using the key file emailed to you.</p>
3261 <p>Unfortunately, this only work fi you have hboot version 2.00.0029
3262 or newer, and the device I was working on had 2.00.0027. This
3263 apparently can be easily fixed by downloading a Windows program and
3264 running it on your Windows machine, if you accept the terms Microsoft
3265 require you to accept to use Windows - which I do not. So I had to
3266 come up with a different approach. I got a lot of help from AndyCap
3267 on #nuug, and would not have been able to get this working without
3270 <p>First I needed to extract the hboot firmware from
3271 <a href="http://www.htcdev.com/ruu/PD9810000_Ace_Sense30_S_hboot_2.00
.0029.exe
">the
3272 windows binary for HTC Desire HD</a> downloaded as 'the RUU' from HTC.
3273 For this there is is <a href="https://github.com/kmdm/unruu/
">a github
3274 project named unruu</a> using libunshield. The unshield tool did not
3275 recognise the file format, but unruu worked and extracted rom.zip,
3276 containing the new hboot firmware and a text file describing which
3277 devices it would work for.</p>
3279 <p>Next, I needed to get the new firmware into the device. For this I
3280 followed some instructions
3281 <a href="http://www.htc1guru.com/
2013/
09/new-ruu-zips-posted/
">available
3282 from HTC1Guru.com</a>, and ran these commands as root on a Linux
3283 machine with Debian testing:</p>
3286 adb reboot-bootloader
3287 fastboot oem rebootRUU
3288 fastboot flash zip rom.zip
3289 fastboot flash zip rom.zip
3293 <p>The flash command apparently need to be done twice to take effect,
3294 as the first is just preparations and the second one do the flashing.
3295 The adb command is just to get to the boot loader menu, so turning the
3296 device on while holding volume down and the power button should work
3299 <p>With the new hboot version in place I could start following the
3300 instructions on the HTC developer web site. I got the device token
3304 fastboot oem get_identifier_token 2>&1 | sed 's/(bootloader) //'
3307 <p>And once I got the unlock code via email, I could use it like
3311 fastboot flash unlocktoken Unlock_code.bin
3314 <p>And with that final step in place, the phone was unlocked and I
3315 could start stuffing the software of my own choosing into the device.
3316 So far I only inserted a replacement recovery image to wipe the phone
3317 before I start. We will see what happen next. Perhaps I should
3318 install <a href="https://www.debian.org/
">Debian</a> on it. :)</p>
3324 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
3329 <div class="padding
"></div>
3333 <a href="http://people.skolelinux.org/pere/blog/How_to_use_the_Signal_app_if_you_only_have_a_land_line__ie_no_mobile_phone_.html
">How to use the Signal app if you only have a land line (ie no mobile phone)</a>
3339 <p>For a while now, I have wanted to test
3340 <a href="https://whispersystems.org/
">the Signal app</a>, as it is
3341 said to provide end to end encrypted communication and several of my
3342 friends and family are already using it. As I by choice do not own a
3343 mobile phone, this proved to be harder than expected. And I wanted to
3344 have the source of the client and know that it was the code used on my
3345 machine. But yesterday I managed to get it working. I used the
3346 Github source, compared it to the source in
3347 <a href="https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk?hl=en-US
">the
3348 Signal Chrome app</a> available from the Chrome web store, applied
3349 patches to use the production Signal servers, started the app and
3350 asked for the hidden "register without a smart phone" form. Here is
3351 the recipe how I did it.
</p>
3353 <p>First, I fetched the Signal desktop source from Github, using
3356 git clone https://github.com/WhisperSystems/Signal-Desktop.git
3359 <p>Next, I patched the source to use the production servers, to be
3360 able to talk to other Signal users:
</p>
3363 cat
<<EOF | patch -p0
3364 diff -ur ./js/background.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
3365 --- ./js/background.js
2016-
06-
29 13:
43:
15.630344628 +
0200
3366 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/background.js
2016-
06-
29 14:
06:
29.530300934 +
0200
3371 - var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
3372 - var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments-staging.s3.amazonaws.com';
3373 + var SERVER_URL = 'https://textsecure-service-ca.whispersystems.org:
4433';
3374 + var ATTACHMENT_SERVER_URL = 'https://whispersystems-textsecure-attachments.s3.amazonaws.com';
3375 var messageReceiver;
3376 window.getSocketStatus = function() {
3377 if (messageReceiver) {
3378 diff -ur ./js/expire.js userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js
3379 --- ./js/expire.js
2016-
06-
29 13:
43:
15.630344628 +
0200
3380 +++ userdata/Default/Extensions/bikioccmkafdpakkkcpdbppfkghcmihk/
0.15.0_0/js/expire.js2016-
06-
29 14:
06:
29.530300934 +
0200
3384 - var BUILD_EXPIRATION =
0;
3385 + var BUILD_EXPIRATION =
1474492690000;
3387 window.extension = window.extension || {};
3392 <p>The first part is changing the servers, and the second is updating
3393 an expiration timestamp. This timestamp need to be updated regularly.
3394 It is set
90 days in the future by the build process (Gruntfile.js).
3395 The value is seconds since
1970 times
1000, as far as I can tell.
</p>
3397 <p>Based on a tip and good help from the #nuug IRC channel, I wrote a
3398 script to launch Signal in Chromium.
</p>
3405 --proxy-server="socks://localhost:
9050" \
3406 --user-data-dir=`pwd`/userdata --load-and-launch-app=`pwd`
3409 <p> The script start the app and configure Chromium to use the Tor
3410 SOCKS5 proxy to make sure those controlling the Signal servers (today
3411 Amazon and Whisper Systems) as well as those listening on the lines
3412 will have a harder time location my laptop based on the Signal
3413 connections if they use source IP address.
</p>
3415 <p>When the script starts, one need to follow the instructions under
3416 "Standalone Registration" in the CONTRIBUTING.md file in the git
3417 repository. I right clicked on the Signal window to get up the
3418 Chromium debugging tool, visited the 'Console' tab and wrote
3419 'extension.install("standalone")' on the console prompt to get the
3420 registration form. Then I entered by land line phone number and
3421 pressed 'Call'.
5 seconds later the phone rang and a robot voice
3422 repeated the verification code three times. After entering the number
3423 into the verification code field in the form, I could start using
3424 Signal from my laptop.
3426 <p>As far as I can tell, The Signal app will leak who is talking to
3427 whom and thus who know who to those controlling the central server,
3428 but such leakage is hard to avoid with a centrally controlled server
3429 setup. It is something to keep in mind when using Signal - the
3430 content of your chats are harder to intercept, but the meta data
3431 exposing your contact network is available to people you do not know.
3432 So better than many options, but not great. And sadly the usage is
3433 connected to my land line, thus allowing those controlling the server
3434 to associate it to my home and person. I would prefer it if only
3435 those I knew could tell who I was on Signal. There are options
3436 avoiding such information leakage, but most of my friends are not
3437 using them, so I am stuck with Signal for now.
</p>
3439 <p><strong>Update
2017-
01-
10</strong>: There is an updated blog post
3441 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">Experience
3442 and updated recipe for using the Signal app without a mobile
3449 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
3454 <div class=
"padding"></div>
3458 <a href=
"http://people.skolelinux.org/pere/blog/The_new__best__multimedia_player_in_Debian_.html">The new "best" multimedia player in Debian?
</a>
3464 <p>When I set out a few weeks ago to figure out
3465 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html">which
3466 multimedia player in Debian claimed to support most file formats /
3467 MIME types
</a>, I was a bit surprised how varied the sets of MIME types
3468 the various players claimed support for. The range was from
55 to
130
3469 MIME types. I suspect most media formats are supported by all
3470 players, but this is not really reflected in the MimeTypes values in
3471 their desktop files. There are probably also some bogus MIME types
3472 listed, but it is hard to identify which one this is.
</p>
3474 <p>Anyway, in the mean time I got in touch with upstream for some of
3475 the players suggesting to add more MIME types to their desktop files,
3476 and decided to spend some time myself improving the situation for my
3477 favorite media player VLC. The fixes for VLC entered Debian unstable
3478 yesterday. The complete list of MIME types can be seen on the
3479 <a href=
"https://wiki.debian.org/DebianMultimedia/PlayerSupport">Multimedia
3480 player MIME type support status
</a> Debian wiki page.
</p>
3482 <p>The new "best" multimedia player in Debian? It is VLC, followed by
3483 totem, parole, kplayer, gnome-mpv, mpv, smplayer, mplayer-gui and
3484 kmplayer. I am sure some of the other players desktop files support
3485 several of the formats currently listed as working only with vlc,
3486 toten and parole.
</p>
3488 <p>A sad observation is that only
14 MIME types are listed as
3489 supported by all the tested multimedia players in Debian in their
3490 desktop files: audio/mpeg, audio/vnd.rn-realaudio, audio/x-mpegurl,
3491 audio/x-ms-wma, audio/x-scpls, audio/x-wav, video/mp4, video/mpeg,
3492 video/quicktime, video/vnd.rn-realvideo, video/x-matroska,
3493 video/x-ms-asf, video/x-ms-wmv and video/x-msvideo. Personally I find
3494 it sad that video/ogg and video/webm is not supported by all the media
3495 players in Debian. As far as I can tell, all of them can handle both
3502 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
3507 <div class=
"padding"></div>
3511 <a href=
"http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html">A program should be able to open its own files on Linux
</a>
3517 <p>Many years ago, when koffice was fresh and with few users, I
3518 decided to test its presentation tool when making the slides for a
3519 talk I was giving for NUUG on Japhar, a free Java virtual machine. I
3520 wrote the first draft of the slides, saved the result and went to bed
3521 the day before I would give the talk. The next day I took a plane to
3522 the location where the meeting should take place, and on the plane I
3523 started up koffice again to polish the talk a bit, only to discover
3524 that kpresenter refused to load its own data file. I cursed a bit and
3525 started making the slides again from memory, to have something to
3526 present when I arrived. I tested that the saved files could be
3527 loaded, and the day seemed to be rescued. I continued to polish the
3528 slides until I suddenly discovered that the saved file could no longer
3529 be loaded into kpresenter. In the end I had to rewrite the slides
3530 three times, condensing the content until the talk became shorter and
3531 shorter. After the talk I was able to pinpoint the problem
–
3532 kpresenter wrote inline images in a way itself could not understand.
3533 Eventually that bug was fixed and kpresenter ended up being a great
3534 program to make slides. The point I'm trying to make is that we
3535 expect a program to be able to load its own data files, and it is
3536 embarrassing to its developers if it can't.
</p>
3538 <p>Did you ever experience a program failing to load its own data
3539 files from the desktop file browser? It is not a uncommon problem. A
3540 while back I discovered that the screencast recorder
3541 gtk-recordmydesktop would save an Ogg Theora video file the KDE file
3542 browser would refuse to open. No video player claimed to understand
3543 such file. I tracked down the cause being
<tt>file --mime-type
</tt>
3544 returning the application/ogg MIME type, which no video player I had
3545 installed listed as a MIME type they would understand. I asked for
3546 <a href=
"http://bugs.gw.com/view.php?id=382">file to change its
3547 behavour
</a> and use the MIME type video/ogg instead. I also asked
3548 several video players to add video/ogg to their desktop files, to give
3549 the file browser an idea what to do about Ogg Theora files. After a
3550 while, the desktop file browsers in Debian started to handle the
3551 output from gtk-recordmydesktop properly.
</p>
3553 <p>But history repeats itself. A few days ago I tested the music
3554 system Rosegarden again, and I discovered that the KDE and xfce file
3555 browsers did not know what to do with the Rosegarden project files
3556 (*.rg). I've reported
<a href=
"http://bugs.debian.org/825993">the
3557 rosegarden problem to BTS
</a> and a fix is commited to git and will be
3558 included in the next upload. To increase the chance of me remembering
3559 how to fix the problem next time some program fail to load its files
3560 from the file browser, here are some notes on how to fix it.
</p>
3562 <p>The file browsers in Debian in general operates on MIME types.
3563 There are two sources for the MIME type of a given file. The output from
3564 <tt>file --mime-type
</tt> mentioned above, and the content of the
3565 shared MIME type registry (under /usr/share/mime/). The file MIME
3566 type is mapped to programs supporting the MIME type, and this
3567 information is collected from
3568 <a href=
"https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/">the
3569 desktop files
</a> available in /usr/share/applications/. If there is
3570 one desktop file claiming support for the MIME type of the file, it is
3571 activated when asking to open a given file. If there are more, one
3572 can normally select which one to use by right-clicking on the file and
3573 selecting the wanted one using 'Open with' or similar. In general
3574 this work well. But it depend on each program picking a good MIME
3576 <a href=
"http://www.iana.org/assignments/media-types/media-types.xhtml">a
3577 MIME type registered with IANA
</a>), file and/or the shared MIME
3578 registry recognizing the file and the desktop file to list the MIME
3579 type in its list of supported MIME types.
</p>
3581 <p>The
<tt>/usr/share/mime/packages/rosegarden.xml
</tt> entry for
3582 <a href=
"http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">the
3583 Shared MIME database
</a> look like this:
</p>
3585 <p><blockquote><pre>
3586 <?xml
version="
1.0"
encoding="UTF-
8"?
>
3587 <mime-info
xmlns="http://www.freedesktop.org/standards/shared-mime-info"
>
3588 <mime-type
type="audio/x-rosegarden"
>
3589 <sub-class-of
type="application/x-gzip"/
>
3590 <comment
>Rosegarden project file
</comment
>
3591 <glob
pattern="*.rg"/
>
3594 </pre></blockquote></p>
3596 <p>This states that audio/x-rosegarden is a kind of application/x-gzip
3597 (it is a gzipped XML file). Note, it is much better to use an
3598 official MIME type registered with IANA than it is to make up ones own
3599 unofficial ones like the x-rosegarden type used by rosegarden.
</p>
3601 <p>The desktop file of the rosegarden program failed to list
3602 audio/x-rosegarden in its list of supported MIME types, causing the
3603 file browsers to have no idea what to do with *.rg files:
</p>
3605 <p><blockquote><pre>
3606 % grep Mime /usr/share/applications/rosegarden.desktop
3607 MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
3608 X-KDE-NativeMimeType=audio/x-rosegarden-composition
3610 </pre></blockquote></p>
3612 <p>The fix was to add "audio/x-rosegarden;" at the end of the
3615 <p>If you run into a file which fail to open the correct program when
3616 selected from the file browser, please check out the output from
3617 <tt>file --mime-type
</tt> for the file, ensure the file ending and
3618 MIME type is registered somewhere under /usr/share/mime/ and check
3619 that some desktop file under /usr/share/applications/ is claiming
3620 support for this MIME type. If not, please report a bug to have it
3627 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3632 <div class=
"padding"></div>
3636 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_with_PackageKit_support___new_version_0_23_available_in_Debian_unstable.html">Isenkram with PackageKit support - new version
0.23 available in Debian unstable
</a>
3642 <p><a href=
"https://tracker.debian.org/pkg/isenkram">The isenkram
3643 system
</a> is a user-focused solution in Debian for handling hardware
3644 related packages. The idea is to have a database of mappings between
3645 hardware and packages, and pop up a dialog suggesting for the user to
3646 install the packages to use a given hardware dongle. Some use cases
3647 are when you insert a Yubikey, it proposes to install the software
3648 needed to control it; when you insert a braille reader list it
3649 proposes to install the packages needed to send text to the reader;
3650 and when you insert a ColorHug screen calibrator it suggests to
3651 install the driver for it. The system work well, and even have a few
3652 command line tools to install firmware packages and packages for the
3653 hardware already in the machine (as opposed to hotpluggable hardware).
</p>
3655 <p>The system was initially written using aptdaemon, because I found
3656 good documentation and example code on how to use it. But aptdaemon
3657 is going away and is generally being replaced by
3658 <a href=
"http://www.freedesktop.org/software/PackageKit/">PackageKit
</a>,
3659 so Isenkram needed a rewrite. And today, thanks to the great patch
3660 from my college Sunil Mohan Adapa in the FreedomBox project, the
3661 rewrite finally took place. I've just uploaded a new version of
3662 Isenkram into Debian Unstable with the patch included, and the default
3663 for the background daemon is now to use PackageKit. To check it out,
3664 install the
<tt>isenkram
</tt> package and insert some hardware dongle
3665 and see if it is recognised.
</p>
3667 <p>If you want to know what kind of packages isenkram would propose for
3668 the machine it is running on, you can check out the isenkram-lookup
3669 program. This is what it look like on a Thinkpad X230:
</p>
3671 <p><blockquote><pre>
3687 </pre></blockquote></p>
3689 <p>The hardware mappings come from several places. The preferred way
3690 is for packages to announce their hardware support using
3691 <a href=
"https://www.freedesktop.org/software/appstream/docs/">the
3692 cross distribution appstream system
</a>.
3694 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">previous
3695 blog posts about isenkram
</a> to learn how to do that.
</p>
3701 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
3706 <div class=
"padding"></div>
3710 <a href=
"http://people.skolelinux.org/pere/blog/Discharge_rate_estimate_in_new_battery_statistics_collector_for_Debian.html">Discharge rate estimate in new battery statistics collector for Debian
</a>
3716 <p>Yesterday I updated the
3717 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
3718 package in Debian
</a> with a few patches sent to me by skilled and
3719 enterprising users. There were some nice user and visible changes.
3720 First of all, both desktop menu entries now work. A design flaw in
3721 one of the script made the history graph fail to show up (its PNG was
3722 dumped in ~/.xsession-errors) if no controlling TTY was available.
3723 The script worked when called from the command line, but not when
3724 called from the desktop menu. I changed this to look for a DISPLAY
3725 variable or a TTY before deciding where to draw the graph, and now the
3726 graph window pop up as expected.
</p>
3728 <p>The next new feature is a discharge rate estimator in one of the
3729 graphs (the one showing the last few hours). New is also the user of
3730 colours showing charging in blue and discharge in red. The percentages
3731 of this graph is relative to last full charge, not battery design
3734 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-rate.png"/></p>
3736 <p>The other graph show the entire history of the collected battery
3737 statistics, comparing it to the design capacity of the battery to
3738 visualise how the battery life time get shorter over time. The red
3739 line in this graph is what the previous graph considers
100 percent:
3741 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-05-23-battery-stats-history.png"/></p>
3743 <p>In this graph you can see that I only charge the battery to
80
3744 percent of last full capacity, and how the capacity of the battery is
3747 <p>The last new feature is in the collector, which now will handle
3748 more hardware models. On some hardware, Linux power supply
3749 information is stored in /sys/class/power_supply/ACAD/, while the
3750 collector previously only looked in /sys/class/power_supply/AC/. Now
3751 both are checked to figure if there is power connected to the
3754 <p>If you are interested in how your laptop battery is doing, please
3756 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
</a>
3757 in Debian unstable, or rebuild it on Jessie to get it working on
3758 Debian stable. :) The upstream source is available from
<a
3759 href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
3760 Patches are very welcome.
</p>
3762 <p>As usual, if you use Bitcoin and want to show your support of my
3763 activities, please send Bitcoin donations to my address
3764 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
3770 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3775 <div class=
"padding"></div>
3779 <a href=
"http://people.skolelinux.org/pere/blog/Debian_now_with_ZFS_on_Linux_included.html">Debian now with ZFS on Linux included
</a>
3785 <p>Today, after many years of hard work from many people,
3786 <a href=
"http://zfsonlinux.org/">ZFS for Linux
</a> finally entered
3787 Debian. The package status can be seen on
3788 <a href=
"https://tracker.debian.org/pkg/zfs-linux">the package tracker
3789 for zfs-linux
</a>. and
3790 <a href=
"https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org">the
3791 team status page
</a>. If you want to help out, please join us.
3792 <a href=
"http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git">The
3793 source code
</a> is available via git on Alioth. It would also be
3794 great if you could help out with
3795 <a href=
"https://tracker.debian.org/pkg/dkms">the dkms package
</a>, as
3796 it is an important piece of the puzzle to get ZFS working.
</p>
3802 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3807 <div class=
"padding"></div>
3811 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_best_multimedia_player_in_Debian_.html">What is the best multimedia player in Debian?
</a>
3817 <p><strong>Where I set out to figure out which multimedia player in
3818 Debian claim support for most file formats.
</strong></p>
3820 <p>A few years ago, I had a look at the media support for Browser
3821 plugins in Debian, to get an idea which plugins to include in Debian
3822 Edu. I created a script to extract the set of supported MIME types
3823 for each plugin, and used this to find out which multimedia browser
3824 plugin supported most file formats / media types.
3825 <a href=
"https://wiki.debian.org/DebianEdu/BrowserMultimedia">The
3826 result
</a> can still be seen on the Debian wiki, even though it have
3827 not been updated for a while. But browser plugins are less relevant
3828 these days, so I thought it was time to look at standalone
3831 <p>A few days ago I was tired of VLC not being listed as a viable
3832 player when I wanted to play videos from the Norwegian National
3833 Broadcasting Company, and decided to investigate why. The cause is a
3834 <a href=
"https://bugs.debian.org/822245">missing MIME type in the VLC
3835 desktop file
</a>. In the process I wrote a script to compare the set
3836 of MIME types announced in the desktop file and the browser plugin,
3837 only to discover that there is quite a large difference between the
3838 two for VLC. This discovery made me dig up the script I used to
3839 compare browser plugins, and adjust it to compare desktop files
3840 instead, to try to figure out which multimedia player in Debian
3841 support most file formats.
</p>
3843 <p>The result can be seen on the Debian Wiki, as
3844 <a href=
"https://wiki.debian.org/DebianMultimedia/PlayerSupport">a
3845 table listing all MIME types supported by one of the packages included
3846 in the table
</a>, with the package supporting most MIME types being
3847 listed first in the table.
</p>
3849 </p>The best multimedia player in Debian? It is totem, followed by
3850 parole, kplayer, mpv, vlc, smplayer mplayer-gui gnome-mpv and
3851 kmplayer. Time for the other players to update their announced MIME
3858 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>.
3863 <div class=
"padding"></div>
3867 <a href=
"http://people.skolelinux.org/pere/blog/The_Pyra___handheld_computer_with_Debian_preinstalled.html">The Pyra - handheld computer with Debian preinstalled
</a>
3873 A friend of mine made me aware of
3874 <a href=
"https://pyra-handheld.com/boards/pages/pyra/">The Pyra
</a>, a
3875 handheld computer which will be delivered with Debian preinstalled. I
3876 would love to get one of those for my birthday. :)
</p>
3878 <p>The machine is a complete ARM-based PC with micro HDMI, SATA, USB
3879 plugs and many others connectors, and include a full keyboard and a
5"
3880 LCD touch screen. The
6000mAh battery is claimed to provide a whole
3881 day of battery life time, but I have not seen any independent tests
3882 confirming this. The vendor is still collecting preorders, and the
3883 last I heard last night was that
22 more orders were needed before
3884 production started.
</p>
3886 <p>As far as I know, this is the first handheld preinstalled with
3887 Debian. Please let me know if you know of any others. Is it the
3888 first computer being sold with Debian preinstalled?
</p>
3894 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3899 <div class=
"padding"></div>
3903 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_a_Norwegian_Bokm_l_edition_of_The_Debian_Administrator_s_Handbook.html">Lets make a Norwegian Bokmål edition of The Debian Administrator's Handbook
</a>
3909 <p>During this weekends
3910 <a href=
"http://www.nuug.no/news/Oslo__Takk_for_feilfiksingsfesten.shtml">bug
3911 squashing party and developer gathering
</a>, we decided to do our part
3912 to make sure there are good books about Debian available in Norwegian
3913 Bokmål, and got in touch with the people behind the
3914 <a href=
"http://debian-handbook.info/">Debian Administrator's Handbook
3915 project
</a> to get started. If you want to help out, please start
3917 <a href=
"https://hosted.weblate.org/projects/debian-handbook/">the
3918 hosted weblate project page
</a>, and get in touch using
3919 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators">the
3920 translators mailing list
</a>. Please also check out
3921 <a href=
"https://debian-handbook.info/contribute/">the instructions for
3922 contributors
</a>.
</p>
3924 <p>The book is already available on paper in English, French and
3925 Japanese, and our goal is to get it available on paper in Norwegian
3926 Bokmål too. In addition to the paper edition, there are also EPUB and
3927 Mobi versions available. And there are incomplete translations
3928 available for many more languages.
</p>
3934 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
3939 <div class=
"padding"></div>
3943 <a href=
"http://people.skolelinux.org/pere/blog/One_in_two_hundred_Debian_users_using_ZFS_on_Linux_.html">One in two hundred Debian users using ZFS on Linux?
</a>
3949 <p>Just for fun I had a look at the popcon number of ZFS related
3950 packages in Debian, and was quite surprised with what I found. I use
3951 ZFS myself at home, but did not really expect many others to do so.
3952 But I might be wrong.
</p>
3955 <a href=
"https://qa.debian.org/popcon.php?package=spl-linux">the popcon
3956 results for spl-linux
</a>, there are
1019 Debian installations, or
3957 0.53% of the population, with the package installed. As far as I know
3958 the only use of the spl-linux package is as a support library for ZFS
3959 on Linux, so I use it here as proxy for measuring the number of ZFS
3960 installation on Linux in Debian. In the kFreeBSD variant of Debian
3961 the ZFS feature is already available, and there
3962 <a href=
"https://qa.debian.org/popcon.php?package=zfsutils">the popcon
3963 results for zfsutils
</a> show
1625 Debian installations or
0.84% of
3964 the population. So I guess I am not alone in using ZFS on Debian.
</p>
3966 <p>But even though the Debian project leader Lucas Nussbaum
3967 <a href=
"https://lists.debian.org/debian-devel-announce/2015/04/msg00006.html">announced
3968 in April
2015</a> that the legal obstacles blocking ZFS on Debian were
3969 cleared, the package is still not in Debian. The package is again in
3970 the NEW queue. Several uploads have been rejected so far because the
3971 debian/copyright file was incomplete or wrong, but there is no reason
3972 to give up. The current status can be seen on
3973 <a href=
"https://qa.debian.org/developer.php?login=pkg-zfsonlinux-devel@lists.alioth.debian.org">the
3974 team status page
</a>, and
3975 <a href=
"http://anonscm.debian.org/gitweb/?p=pkg-zfsonlinux/zfs.git">the
3976 source code
</a> is available on Alioth.
</p>
3978 <p>As I want ZFS to be included in next version of Debian to make sure
3979 my home server can function in the future using only official Debian
3980 packages, and the current blocker is to get the debian/copyright file
3981 accepted by the FTP masters in Debian, I decided a while back to try
3982 to help out the team. This was the background for my blog post about
3983 <a href=
"http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">creating,
3984 updating and checking debian/copyright semi-automatically
</a>, and I
3985 used the techniques I explored there to try to find any errors in the
3986 copyright file. It is not very easy to check every one of the around
3987 2000 files in the source package, but I hope we this time got it
3988 right. If you want to help out, check out the git source and try to
3989 find missing entries in the debian/copyright file.
</p>
3995 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4000 <div class=
"padding"></div>
4004 <a href=
"http://people.skolelinux.org/pere/blog/Full_battery_stats_collector_is_now_available_in_Debian.html">Full battery stats collector is now available in Debian
</a>
4010 <p>Since this morning, the battery-stats package in Debian include an
4011 extended collector that will collect the complete battery history for
4012 later processing and graphing. The original collector store the
4013 battery level as percentage of last full level, while the new
4014 collector also record battery vendor, model, serial number, design
4015 full level, last full level and current battery level. This make it
4016 possible to predict the lifetime of the battery as well as visualise
4017 the energy flow when the battery is charging or discharging.
</p>
4019 <p>The new tools are available in
<tt>/usr/share/battery-stats/
</tt>
4020 in the version
0.5.1 package in unstable. Get the new battery level graph
4021 and lifetime prediction by running:
4024 /usr/share/battery-stats/battery-stats-graph /var/log/battery-stats.csv
4027 <p>Or select the 'Battery Level Graph' from your application menu.
</p>
4029 <p>The flow in/out of the battery can be seen by running (no menu
4033 /usr/share/battery-stats/battery-stats-graph-flow
4036 <p>I'm not quite happy with the way the data is visualised, at least
4037 when there are few data points. The graphs look a bit better with a
4038 few years of data.
</p>
4040 <p>A while back one important feature I use in the battery stats
4041 collector broke in Debian. The scripts in
4042 <tt>/usr/lib/pm-utils/power.d/
</tt> were no longer executed. I
4043 suspect it happened when Jessie started using systemd, but I do not
4044 know. The issue is reported as
4045 <a href=
"https://bugs.debian.org/818649">bug #
818649</a> against
4046 pm-utils. I managed to work around it by adding an udev rule to call
4047 the collector script every time the power connector is connected and
4048 disconnected. With this fix in place it was finally time to make a
4049 new release of the package, and get it into Debian.
</p>
4051 <p>If you are interested in how your laptop battery is doing, please
4053 <a href=
"https://tracker.debian.org/pkg/battery-stats">battery-stats
</a>
4054 in Debian unstable, or rebuild it on Jessie to get it working on
4055 Debian stable. :) The upstream source is available from
4056 <a href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
4057 As always, patches are very welcome.
</p>
4063 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4068 <div class=
"padding"></div>
4072 <a href=
"http://people.skolelinux.org/pere/blog/Making_battery_measurements_a_little_easier_in_Debian.html">Making battery measurements a little easier in Debian
</a>
4078 <p>Back in September, I blogged about
4079 <a href=
"http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html">the
4080 system I wrote to collect statistics about my laptop battery
</a>, and
4081 how it showed the decay and death of this battery (now replaced). I
4082 created a simple deb package to handle the collection and graphing,
4083 but did not want to upload it to Debian as there were already
4084 <a href=
"https://tracker.debian.org/pkg/battery-stats">a battery-stats
4085 package in Debian
</a> that should do the same thing, and I did not see
4086 a point of uploading a competing package when battery-stats could be
4087 fixed instead. I reported a few bugs about its non-function, and
4088 hoped someone would step in and fix it. But no-one did.
</p>
4090 <p>I got tired of waiting a few days ago, and took matters in my own
4091 hands. The end result is that I am now the new upstream developer of
4092 battery stats (
<a href=
"https://github.com/petterreinholdtsen/battery-stats">available from github
</a>) and part of the team maintaining
4093 battery-stats in Debian, and the package in Debian unstable is finally
4094 able to collect battery status using the
<tt>/sys/class/power_supply/
</tt>
4095 information provided by the Linux kernel. If you install the
4096 battery-stats package from unstable now, you will be able to get a
4097 graph of the current battery fill level, to get some idea about the
4098 status of the battery. The source package build and work just fine in
4099 Debian testing and stable (and probably oldstable too, but I have not
4100 tested). The default graph you get for that system look like this:
</p>
4102 <p align=
"center"><img src=
"http://people.skolelinux.org/pere/blog/images/2016-03-15-battery-stats-graph-example.png" width=
"70%" align=
"center"></p>
4104 <p>My plans for the future is to merge my old scripts into the
4105 battery-stats package, as my old scripts collected a lot more details
4106 about the battery. The scripts are merged into the upstream
4107 battery-stats git repository already, but I am not convinced they work
4108 yet, as I changed a lot of paths along the way. Will have to test a
4109 bit more before I make a new release.
</p>
4111 <p>I will also consider changing the file format slightly, as I
4112 suspect the way I combine several values into one field might make it
4113 impossible to know the type of the value when using it for processing
4116 <p>If you would like I would like to keep an close eye on your laptop
4117 battery, check out the battery-stats package in
4118 <a href=
"https://tracker.debian.org/pkg/battery-stats">Debian
</a> and
4120 <a href=
"https://github.com/petterreinholdtsen/battery-stats">github
</a>.
4121 I would love some help to improve the system further.
</p>
4127 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4132 <div class=
"padding"></div>
4136 <a href=
"http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">Creating, updating and checking debian/copyright semi-automatically
</a>
4142 <p>Making packages for Debian requires quite a lot of attention to
4143 details. And one of the details is the content of the
4144 debian/copyright file, which should list all relevant licenses used by
4145 the code in the package in question, preferably in
4146 <a href=
"https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">machine
4147 readable DEP5 format
</a>.
</p>
4149 <p>For large packages with lots of contributors it is hard to write
4150 and update this file manually, and if you get some detail wrong, the
4151 package is normally rejected by the ftpmasters. So getting it right
4152 the first time around get the package into Debian faster, and save
4153 both you and the ftpmasters some work.. Today, while trying to figure
4154 out what was wrong with
4155 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447">the
4156 zfsonlinux copyright file
</a>, I decided to spend some time on
4157 figuring out the options for doing this job automatically, or at least
4158 semi-automatically.
</p>
4160 <p>Lucikly, there are at least two tools available for generating the
4161 file based on the code in the source package,
4162 <tt><a href=
"https://tracker.debian.org/pkg/debmake">debmake
</a></tt>
4163 and
<tt><a href=
"https://tracker.debian.org/pkg/cme">cme
</a></tt>. I'm
4164 not sure which one of them came first, but both seem to be able to
4165 create a sensible draft file. As far as I can tell, none of them can
4166 be trusted to get the result just right, so the content need to be
4167 polished a bit before the file is OK to upload. I found the debmake
4169 <a href=
"http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html">a
4170 blog posts from
2014</a>.
4172 <p>To generate using debmake, use the -cc option:
4175 debmake -cc
> debian/copyright
4178 <p>Note there are some problems with python and non-ASCII names, so
4179 this might not be the best option.
</p>
4181 <p>The cme option is based on a config parsing library, and I found
4183 <a href=
"https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/">a
4184 blog post from
2015</a>. To generate using cme, use the 'update
4185 dpkg-copyright' option:
4188 cme update dpkg-copyright
4191 <p>This will create or update debian/copyright. The cme tool seem to
4192 handle UTF-
8 names better than debmake.
</p>
4194 <p>When the copyright file is created, I would also like some help to
4195 check if the file is correct. For this I found two good options,
4196 <tt>debmake -k
</tt> and
<tt>license-reconcile
</tt>. The former seem
4197 to focus on license types and file matching, and is able to detect
4198 ineffective blocks in the copyright file. The latter reports missing
4199 copyright holders and years, but was confused by inconsistent license
4200 names (like CDDL vs. CDDL-
1.0). I suspect it is good to use both and
4201 fix all issues reported by them before uploading. But I do not know
4202 if the tools and the ftpmasters agree on what is important to fix in a
4203 copyright file, so the package might still be rejected.
</p>
4205 <p>The devscripts tool
<tt>licensecheck
</tt> deserve mentioning. It
4206 will read through the source and try to find all copyright statements.
4207 It is not comparing the result to the content of debian/copyright, but
4208 can be useful when verifying the content of the copyright file.
</p>
4210 <p>Are you aware of better tools in Debian to create and update
4211 debian/copyright file. Please let me know, or blog about it on
4212 planet.debian.org.
</p>
4214 <p>As usual, if you use Bitcoin and want to show your support of my
4215 activities, please send Bitcoin donations to my address
4216 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
4218 <p><strong>Update
2016-
02-
20</strong>: I got a tip from Mike Gabriel
4219 on how to use licensecheck and cdbs to create a draft copyright file
4222 licensecheck --copyright -r `find * -type f` | \
4223 /usr/lib/cdbs/licensecheck2dep5
> debian/copyright.auto
4226 <p>He mentioned that he normally check the generated file into the
4227 version control system to make it easier to discover license and
4228 copyright changes in the upstream source. I will try to do the same
4229 with my packages in the future.
</p>
4231 <p><strong>Update
2016-
02-
21</strong>: The cme author recommended
4232 against using -quiet for new users, so I removed it from the proposed
4239 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4244 <div class=
"padding"></div>
4248 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html">Using appstream in Debian to locate packages with firmware and mime type support
</a>
4254 <p>The
<a href=
"https://wiki.debian.org/DEP-11">appstream system
</a>
4255 is taking shape in Debian, and one provided feature is a very
4256 convenient way to tell you which package to install to make a given
4257 firmware file available when the kernel is looking for it. This can
4258 be done using apt-file too, but that is for someone else to blog
4261 <p>Here is a small recipe to find the package with a given firmware
4262 file, in this example I am looking for ctfw-
3.2.3.0.bin, randomly
4263 picked from the set of firmware announced using appstream in Debian
4264 unstable. In general you would be looking for the firmware requested
4265 by the kernel during kernel module loading. To find the package
4266 providing the example file, do like this:
</p>
4269 % apt install appstream
4273 % appstreamcli what-provides firmware:runtime ctfw-
3.2.3.0.bin | \
4274 awk '/Package:/ {print $
2}'
4279 <p>See
<a href=
"https://wiki.debian.org/AppStream/Guidelines">the
4280 appstream wiki
</a> page to learn how to embed the package metadata in
4281 a way appstream can use.
</p>
4283 <p>This same approach can be used to find any package supporting a
4284 given MIME type. This is very useful when you get a file you do not
4285 know how to handle. First find the mime type using
<tt>file
4286 --mime-type
</tt>, and next look up the package providing support for
4287 it. Lets say you got an SVG file. Its MIME type is image/svg+xml,
4288 and you can find all packages handling this type like this:
</p>
4291 % apt install appstream
4295 % appstreamcli what-provides mimetype image/svg+xml | \
4296 awk '/Package:/ {print $
2}'
4320 <p>I believe the MIME types are fetched from the desktop file for
4321 packages providing appstream metadata.
</p>
4327 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
4332 <div class=
"padding"></div>
4336 <a href=
"http://people.skolelinux.org/pere/blog/Creepy__visualise_geotagged_social_media_information___nice_free_software.html">Creepy, visualise geotagged social media information - nice free software
</a>
4342 <p>Most people seem not to realise that every time they walk around
4343 with the computerised radio beacon known as a mobile phone their
4344 position is tracked by the phone company and often stored for a long
4345 time (like every time a SMS is received or sent). And if their
4346 computerised radio beacon is capable of running programs (often called
4347 mobile apps) downloaded from the Internet, these programs are often
4348 also capable of tracking their location (if the app requested access
4349 during installation). And when these programs send out information to
4350 central collection points, the location is often included, unless
4351 extra care is taken to not send the location. The provided
4352 information is used by several entities, for good and bad (what is
4353 good and bad, depend on your point of view). What is certain, is that
4354 the private sphere and the right to free movement is challenged and
4355 perhaps even eradicated for those announcing their location this way,
4356 when they share their whereabouts with private and public
4359 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2016-01-24-nice-creepy-desktop-window.png"></p>
4361 <p>The phone company logs provide a register of locations to check out
4362 when one want to figure out what the tracked person was doing. It is
4363 unavailable for most of us, but provided to selected government
4364 officials, company staff, those illegally buying information from
4365 unfaithful servants and crackers stealing the information. But the
4366 public information can be collected and analysed, and a free software
4367 tool to do so is called
4368 <a href=
"http://www.geocreepy.com/">Creepy or Cree.py
</a>. I
4369 discovered it when I read
4370 <a href=
"http://www.aftenposten.no/kultur/Slik-kan-du-bli-overvaket-pa-Twitter-og-Instagram-uten-a-ane-det-7787884.html">an
4371 article about Creepy
</a> in the Norwegian newspaper Aftenposten i
4372 November
2014, and decided to check if it was available in Debian.
4373 The python program was in Debian, but
4374 <a href=
"https://tracker.debian.org/pkg/creepy">the version in
4375 Debian
</a> was completely broken and practically unmaintained. I
4376 uploaded a new version which did not work quite right, but did not
4377 have time to fix it then. This Christmas I decided to finally try to
4378 get Creepy operational in Debian. Now a fixed version is available in
4379 Debian unstable and testing, and almost all Debian specific patches
4381 <a href=
"https://github.com/jkakavas/creepy">upstream
</a>.
</p>
4383 <p>The Creepy program visualises geolocation information fetched from
4384 Twitter, Instagram, Flickr and Google+, and allow one to get a
4385 complete picture of every social media message posted recently in a
4386 given area, or track the movement of a given individual across all
4387 these services. Earlier it was possible to use the search API of at
4388 least some of these services without identifying oneself, but these
4389 days it is impossible. This mean that to use Creepy, you need to
4390 configure it to log in as yourself on these services, and provide
4391 information to them about your search interests. This should be taken
4392 into account when using Creepy, as it will also share information
4393 about yourself with the services.
</p>
4395 <p>The picture above show the twitter messages sent from (or at least
4396 geotagged with a position from) the city centre of Oslo, the capital
4397 of Norway. One useful way to use Creepy is to first look at
4398 information tagged with an area of interest, and next look at all the
4399 information provided by one or more individuals who was in the area.
4400 I tested it by checking out which celebrity provide their location in
4401 twitter messages by checkout out who sent twitter messages near a
4402 Norwegian TV station, and next could track their position over time,
4403 making it possible to locate their home and work place, among other
4404 things. A similar technique have been
4405 <a href=
"http://www.buzzfeed.com/maxseddon/does-this-soldiers-instagram-account-prove-russia-is-covertl">used
4406 to locate Russian soldiers in Ukraine
</a>, and it is both a powerful
4407 tool to discover lying governments, and a useful tool to help people
4408 understand the value of the private information they provide to the
4411 <p>The package is not trivial to backport to Debian Stable/Jessie, as
4412 it depend on several python modules currently missing in Jessie (at
4413 least python-instagram, python-flickrapi and
4414 python-requests-toolbelt).
</p>
4417 <a href=
"https://screenshots.debian.net/package/creepy">the image to
4418 screenshots.debian.net
</a> and licensed it under the same terms as the
4419 Creepy program in Debian.)
</p>
4425 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
4430 <div class=
"padding"></div>
4434 <a href=
"http://people.skolelinux.org/pere/blog/Always_download_Debian_packages_using_Tor___the_simple_recipe.html">Always download Debian packages using Tor - the simple recipe
</a>
4440 <p>During his DebConf15 keynote, Jacob Appelbaum
4441 <a href=
"https://summit.debconf.org/debconf15/meeting/331/what-is-to-be-done/">observed
4442 that those listening on the Internet lines would have good reason to
4443 believe a computer have a given security hole
</a> if it download a
4444 security fix from a Debian mirror. This is a good reason to always
4445 use encrypted connections to the Debian mirror, to make sure those
4446 listening do not know which IP address to attack. In August, Richard
4447 Hartmann observed that encryption was not enough, when it was possible
4448 to interfere download size to security patches or the fact that
4449 download took place shortly after a security fix was released, and
4450 <a href=
"http://richardhartmann.de/blog/posts/2015/08/24-Tor-enabled_Debian_mirror/">proposed
4451 to always use Tor to download packages from the Debian mirror
</a>. He
4452 was not the first to propose this, as the
4453 <tt><a href=
"https://tracker.debian.org/pkg/apt-transport-tor">apt-transport-tor
</a></tt>
4454 package by Tim Retout already existed to make it easy to convince apt
4455 to use
<a href=
"https://www.torproject.org/">Tor
</a>, but I was not
4456 aware of that package when I read the blog post from Richard.
</p>
4458 <p>Richard discussed the idea with Peter Palfrader, one of the Debian
4459 sysadmins, and he set up a Tor hidden service on one of the central
4460 Debian mirrors using the address vwakviie2ienjx6t.onion, thus making
4461 it possible to download packages directly between two tor nodes,
4462 making sure the network traffic always were encrypted.
</p>
4464 <p>Here is a short recipe for enabling this on your machine, by
4465 installing
<tt>apt-transport-tor
</tt> and replacing http and https
4466 urls with tor+http and tor+https, and using the hidden service instead
4467 of the official Debian mirror site. I recommend installing
4468 <tt>etckeeper
</tt> before you start to have a history of the changes
4472 apt install apt-transport-tor
4473 sed -i 's% http://ftp.debian.org/% tor+http://vwakviie2ienjx6t.onion/%' /etc/apt/sources.list
4474 sed -i 's% http% tor+http%' /etc/apt/sources.list
4477 <p>If you have more sources listed in /etc/apt/sources.list.d/, run
4478 the sed commands for these too. The sed command is assuming your are
4479 using the ftp.debian.org Debian mirror. Adjust the command (or just
4480 edit the file manually) to match your mirror.
</p>
4482 <p>This work in Debian Jessie and later. Note that tools like
4483 <tt>apt-file
</tt> only recently started using the apt transport
4484 system, and do not work with these tor+http URLs. For
4485 <tt>apt-file
</tt> you need the version currently in experimental,
4486 which need a recent apt version currently only in unstable. So if you
4487 need a working
<tt>apt-file
</tt>, this is not for you.
</p>
4489 <p>Another advantage from this change is that your machine will start
4490 using Tor regularly and at fairly random intervals (every time you
4491 update the package lists or upgrade or install a new package), thus
4492 masking other Tor traffic done from the same machine. Using Tor will
4493 become normal for the machine in question.
</p>
4495 <p>On
<a href=
"https://wiki.debian.org/FreedomBox">Freedombox
</a>, APT
4496 is set up by default to use
<tt>apt-transport-tor
</tt> when Tor is
4497 enabled. It would be great if it was the default on any Debian
4504 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
4509 <div class=
"padding"></div>
4513 <a href=
"http://people.skolelinux.org/pere/blog/OpenALPR__find_car_license_plates_in_video_streams___nice_free_software.html">OpenALPR, find car license plates in video streams - nice free software
</a>
4519 <p>When I was a kid, we used to collect "car numbers", as we used to
4520 call the car license plate numbers in those days. I would write the
4521 numbers down in my little book and compare notes with the other kids
4522 to see how many region codes we had seen and if we had seen some
4523 exotic or special region codes and numbers. It was a fun game to pass
4524 time, as we kids have plenty of it.
</p>
4526 <p>A few days I came across
4527 <a href=
"https://github.com/openalpr/openalpr">the OpenALPR
4528 project
</a>, a free software project to automatically discover and
4529 report license plates in images and video streams, and provide the
4530 "car numbers" in a machine readable format. I've been looking for
4531 such system for a while now, because I believe it is a bad idea that the
4532 <a href=
"https://en.wikipedia.org/wiki/Automatic_number_plate_recognition">automatic
4533 number plate recognition
</a> tool only is available in the hands of
4534 the powerful, and want it to be available also for the powerless to
4535 even the score when it comes to surveillance and sousveillance. I
4536 discovered the developer
4537 <a href=
"https://bugs.debian.org/747509">wanted to get the tool into
4538 Debian
</a>, and as I too wanted it to be in Debian, I volunteered to
4539 help him get it into shape to get the package uploaded into the Debian
4542 <p>Today we finally managed to get the package into shape and uploaded
4543 it into Debian, where it currently
4544 <a href=
"https://ftp-master.debian.org//new/openalpr_2.2.1-1.html">waits
4545 in the NEW queue
</a> for review by the Debian ftpmasters.
</p>
4547 <p>I guess you are wondering why on earth such tool would be useful
4548 for the common folks, ie those not running a large government
4549 surveillance system? Well, I plan to put it in a computer on my bike
4550 and in my car, tracking the cars nearby and allowing me to be notified
4551 when number plates on my watch list are discovered. Another use case
4552 was suggested by a friend of mine, who wanted to set it up at his home
4553 to open the car port automatically when it discovered the plate on his
4554 car. When I mentioned it perhaps was a bit foolhardy to allow anyone
4555 capable of placing his license plate number of a piece of cardboard to
4556 open his car port, men replied that it was always unlocked anyway. I
4557 guess for such use case it make sense. I am sure there are other use
4558 cases too, for those with imagination and a vision.
</p>
4560 <p>If you want to build your own version of the Debian package, check
4561 out the upstream git source and symlink ./distros/debian to ./debian/
4562 before running "debuild" to build the source. Or wait a bit until the
4563 package show up in unstable.
</p>
4569 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
4574 <div class=
"padding"></div>
4578 <a href=
"http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">Using appstream with isenkram to install hardware related packages in Debian
</a>
4584 <p>Around three years ago, I created
4585 <a href=
"http://packages.qa.debian.org/isenkram">the isenkram
4586 system
</a> to get a more practical solution in Debian for handing
4587 hardware related packages. A GUI system in the isenkram package will
4588 present a pop-up dialog when some hardware dongle supported by
4589 relevant packages in Debian is inserted into the machine. The same
4590 lookup mechanism to detect packages is available as command line
4591 tools in the isenkram-cli package. In addition to mapping hardware,
4592 it will also map kernel firmware files to packages and make it easy to
4593 install needed firmware packages automatically. The key for this
4594 system to work is a good way to map hardware to packages, in other
4595 words, allow packages to announce what hardware they will work
4598 <p>I started by providing data files in the isenkram source, and
4599 adding code to download the latest version of these data files at run
4600 time, to ensure every user had the most up to date mapping available.
4601 I also added support for storing the mapping in the Packages file in
4602 the apt repositories, but did not push this approach because while I
4603 was trying to figure out how to best store hardware/package mappings,
4604 <a href=
"http://www.freedesktop.org/software/appstream/docs/">the
4605 appstream system
</a> was announced. I got in touch and suggested to
4606 add the hardware mapping into that data set to be able to use
4607 appstream as a data source, and this was accepted at least for the
4608 Debian version of appstream.
</p>
4610 <p>A few days ago using appstream in Debian for this became possible,
4611 and today I uploaded a new version
0.20 of isenkram adding support for
4612 appstream as a data source for mapping hardware to packages. The only
4613 package so far using appstream to announce its hardware support is my
4614 pymissile package. I got help from Matthias Klumpp with figuring out
4615 how do add the required
4616 <a href=
"https://appstream.debian.org/html/sid/main/metainfo/pymissile.html">metadata
4617 in pymissile
</a>. I added a file debian/pymissile.metainfo.xml with
4621 <?xml
version="
1.0"
encoding="UTF-
8"?
>
4623 <id
>pymissile
</id
>
4624 <metadata_license
>MIT
</metadata_license
>
4625 <name
>pymissile
</name
>
4626 <summary
>Control original Striker USB Missile Launcher
</summary
>
4629 Pymissile provides a curses interface to control an original
4630 Marks and Spencer / Striker USB Missile Launcher, as well as a
4631 motion control script to allow a webcamera to control the
4634 </description
>
4636 <modalias
>usb:v1130p0202d*
</modalias
>
4641 <p>The key for isenkram is the component/provides/modalias value,
4642 which is a glob style match rule for hardware specific strings
4643 (modalias strings) provided by the Linux kernel. In this case, it
4644 will map to all USB devices with vendor code
1130 and product code
4647 <p>Note, it is important that the license of all the metadata files
4648 are compatible to have permissions to aggregate them into archive wide
4649 appstream files. Matthias suggested to use MIT or BSD licenses for
4650 these files. A challenge is figuring out a good id for the data, as
4651 it is supposed to be globally unique and shared across distributions
4652 (in other words, best to coordinate with upstream what to use). But
4653 it can be changed later or, so we went with the package name as
4654 upstream for this project is dormant.
</p>
4656 <p>To get the metadata file installed in the correct location for the
4657 mirror update scripts to pick it up and include its content the
4658 appstream data source, the file must be installed in the binary
4659 package under /usr/share/appdata/. I did this by adding the following
4660 line to debian/pymissile.install:
</p>
4663 debian/pymissile.metainfo.xml usr/share/appdata
4666 <p>With that in place, the command line tool isenkram-lookup will list
4667 all packages useful on the current computer automatically, and the GUI
4668 pop-up handler will propose to install the package not already
4669 installed if a hardware dongle is inserted into the machine in
4672 <p>Details of the modalias field in appstream is available from the
4673 <a href=
"https://wiki.debian.org/DEP-11">DEP-
11</a> proposal.
</p>
4675 <p>To locate the modalias values of all hardware present in a machine,
4676 try running this command on the command line:
</p>
4679 cat $(find /sys/devices/|grep modalias)
4682 <p>To learn more about the isenkram system, please check out
4683 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">my
4684 blog posts tagged isenkram
</a>.
</p>
4690 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
4695 <div class=
"padding"></div>
4699 <a href=
"http://people.skolelinux.org/pere/blog/The_GNU_General_Public_License_is_not_magic_pixie_dust.html">The GNU General Public License is not magic pixie dust
</a>
4705 <p>A blog post from my fellow Debian developer Paul Wise titled
4706 "
<a href=
"http://bonedaddy.net/pabs3/log/2015/11/27/sfc-supporter/">The
4707 GPL is not magic pixie dust
</a>" explain the importance of making sure
4708 the <a href="http://www.gnu.org/copyleft/gpl.html
">GPL</a> is enforced.
4709 I quote the blog post from Paul in full here with his permission:<p>
4713 <p><a href="https://sfconservancy.org/supporter/
"><img src="https://sfconservancy.org/img/supporter-badge.png
" width="194" height="90" alt="Become a Software Freedom Conservancy Supporter!
" align="right
" border="0" /></a></p>
4716 The GPL is not magic pixie dust. It does not work by itself.<br/>
4718 The first step is to choose a
4719 <a href="https://copyleft.org/
">copyleft</a> license for your
4722 The next step is, when someone fails to follow that copyleft license,
4723 <b>it must be enforced</b><br/>
4725 and its a simple fact of our modern society that such type of
4728 is incredibly expensive to do and incredibly difficult to do.
4731 <p><small>-- <a href="http://ebb.org/bkuhn/
">Bradley Kuhn</a>, in
4732 <a href="http://faif.us/
" title="Free as in Freedom
">FaiF</a>
4733 <a href="http://faif.us/cast/
2015/nov/
24/
0x57/
">episode
4734 0x57</a></small></p>
4736 <p>As the Debian Website
4737 <a href="https://bugs.debian.org/
794116">used</a>
4738 <a href="https://anonscm.debian.org/viewvc/webwml/webwml/english/intro/free.wml?r1=
1.24&r2=
1.25">to</a>
4739 imply, public domain and permissively licensed software can lead to
4740 the production of more proprietary software as people discover useful
4741 software, extend it and or incorporate it into their hardware or
4742 software products. Copyleft licenses such as the GNU GPL were created
4743 to close off this avenue to the production of proprietary software but
4744 such licenses are not enough. With the ongoing adoption of Free
4745 Software by individuals and groups, inevitably the community's
4746 expectations of license compliance are violated, usually out of
4747 ignorance of the way Free Software works, but not always. As Karen
4748 and Bradley explained in <a href="http://faif.us/
" title="Free as in
4750 <a href="http://faif.us/cast/
2015/nov/
24/
0x57/
">episode 0x57</a>,
4751 copyleft is nothing if no-one is willing and able to stand up in court
4752 to protect it. The reality of today's world is that legal
4753 representation is expensive, difficult and time consuming. With
4754 <a href="http://gpl-violations.org/
">gpl-violations.org</a> in hiatus
4755 <a href="http://gpl-violations.org/news/
20151027-homepage-recovers/
">until</a>
4756 some time in 2016, the <a href="https://sfconservancy.org/
">Software
4757 Freedom Conservancy</a> (a tax-exempt charity) is the major defender
4758 of the Linux project, Debian and other groups against GPL violations.
4759 In March the SFC supported a
4760 <a href="https://sfconservancy.org/news/
2015/mar/
05/vmware-lawsuit/
">lawsuit
4761 by Christoph Hellwig</a> against VMware for refusing to
4762 <a href="https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html
">comply
4763 with the GPL</a> in relation to their use of parts of the Linux
4764 kernel. Since then two of their sponsors pulled corporate funding and
4766 <a href="https://sfconservancy.org/blog/
2015/nov/
24/faif-carols-fundraiser/
">blocked
4767 or cancelled their talks</a>. As a result they have decided to rely
4768 less on corporate funding and more on the broad community of
4769 individuals who support Free Software and copyleft. So the SFC has
4770 <a href="https://sfconservancy.org/news/
2015/nov/
23/
2015fundraiser/
">launched</a>
4771 a <a href="https://sfconservancy.org/supporter/
">campaign</a> to create
4772 a community of folks who stand up for copyleft and the GPL by
4773 supporting their work on promoting and supporting copyleft and Free
4776 <p>If you support Free Software,
4777 <a href="https://sfconservancy.org/blog/
2015/nov/
26/like-what-I-do/
">like</a>
4778 what the SFC do, agree with their
4779 <a href="https://sfconservancy.org/linux-compliance/principles.html
">compliance
4780 principles</a>, are happy about their
4781 <a href="https://sfconservancy.org/supporter/
">successes</a> in 2015,
4782 work on a project that is an SFC
4783 <a href="https://sfconservancy.org/members/current/
">member</a> and or
4784 just want to stand up for copyleft, please join
4785 <a href="https://identi.ca/cwebber/image/JQGPA4qbTyyp3-MY8QpvuA
">Christopher
4787 <a href="https://sfconservancy.org/blog/
2015/nov/
24/faif-carols-fundraiser/
">Carol
4789 <a href="http://www.jonobacon.org/
2015/
11/
25/supporting-software-freedom-conservancy/
">Jono
4790 Bacon</a>, myself and
4791 <a href="https://sfconservancy.org/sponsors/#supporters
">others</a> in
4793 <a href="https://sfconservancy.org/supporter/
">supporter</a>. For the
4794 next week your donation will be
4795 <a href="https://sfconservancy.org/news/
2015/nov/
27/black-friday/
">matched</a>
4796 by an anonymous donor. Please also consider asking your employer to
4797 match your donation or become a sponsor of SFC. Don't forget to
4798 spread the word about your support for SFC via email, your blog and or
4799 social media accounts.</p>
4803 <p>I agree with Paul on this topic and just signed up as a Supporter
4804 of Software Freedom Conservancy myself. Perhaps you should be a
4811 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett</a>.
4816 <div class="padding
"></div>
4820 <a href="http://people.skolelinux.org/pere/blog/PGP_key_transition_statement_for_key_EE4E02F9.html
">PGP key transition statement for key EE4E02F9</a>
4826 <p>I've needed a new OpenPGP key for a while, but have not had time to
4827 set it up properly. I wanted to generate it offline and have it
4828 available on <a href="http://shop.kernelconcepts.de/#openpgp
">a OpenPGP
4829 smart card</a> for daily use, and learning how to do it and finding
4830 time to sit down with an offline machine almost took forever. But
4831 finally I've been able to complete the process, and have now moved
4832 from my old GPG key to a new GPG key. See
4833 <a href="http://people.skolelinux.org/pere/blog/images/
2015-
11-
17-new-gpg-key-transition.txt
">the
4834 full transition statement, signed with both my old and new key</a> for
4835 the details. This is my new key:</p>
4838 pub 3936R/<a href="http://pgp.cs.uu.nl/stats/
111D6B29EE4E02F9.html
">111D6B29EE4E02F9</a> 2015-11-03 [expires: 2019-11-14]
4839 Key fingerprint = 3AC7 B2E3 ACA5 DF87 78F1 D827 111D 6B29 EE4E 02F9
4840 uid Petter Reinholdtsen <pere@hungry.com>
4841 uid Petter Reinholdtsen <pere@debian.org>
4842 sub 4096R/87BAFB0E 2015-11-03 [expires: 2019-11-02]
4843 sub 4096R/F91E6DE9 2015-11-03 [expires: 2019-11-02]
4844 sub 4096R/A0439BAB 2015-11-03 [expires: 2019-11-02]
4847 <p>The key can be downloaded from the OpenPGP key servers, signed by
4850 <p>If you signed my old key
4851 (<a href="http://pgp.cs.uu.nl/stats/DB4CCC4B2A30D729.html
">DB4CCC4B2A30D729</a>),
4852 I'd very much appreciate a signature on my new key, details and
4853 instructions in the transition statement. I m happy to reciprocate if
4854 you have a similarly signed transition statement to present.</p>
4860 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
4865 <div class="padding
"></div>
4869 <a href="http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html
">The life and death of a laptop battery</a>
4875 <p>When I get a new laptop, the battery life time at the start is OK.
4876 But this do not last. The last few laptops gave me a feeling that
4877 within a year, the life time is just a fraction of what it used to be,
4878 and it slowly become painful to use the laptop without power connected
4879 all the time. Because of this, when I got a new Thinkpad X230 laptop
4880 about two years ago, I decided to monitor its battery state to have
4881 more hard facts when the battery started to fail.</p>
4883 <img src="http://people.skolelinux.org/pere/blog/images/
2015-
09-
24-laptop-battery-graph.png
"/>
4885 <p>First I tried to find a sensible Debian package to record the
4886 battery status, assuming that this must be a problem already handled
4887 by someone else. I found
4888 <a href="https://tracker.debian.org/pkg/battery-stats
">battery-stats</a>,
4889 which collects statistics from the battery, but it was completely
4890 broken. I sent a few suggestions to the maintainer, but decided to
4891 write my own collector as a shell script while I waited for feedback
4893 <a href="http://www.ifweassume.com/
2013/
08/the-de-evolution-of-my-laptop-battery.html
">a
4894 blog post about the battery development on a MacBook Air</a> I also
4896 <a href="https://github.com/jradavenport/batlog.git
">batlog</a>, not
4897 available in Debian.</p>
4899 <p>I started my collector 2013-07-15, and it has been collecting
4900 battery stats ever since. Now my
4901 /var/log/hjemmenett-battery-status.log file contain around 115,000
4902 measurements, from the time the battery was working great until now,
4903 when it is unable to charge above 7% of original capacity. My
4904 collector shell script is quite simple and look like this:</p>
4909 # http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html
4911 # http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/
4912 logfile=/var/log/hjemmenett-battery-status.log
4914 files="manufacturer model_name technology serial_number \
4915 energy_full energy_full_design energy_now cycle_count status"
4917 if [ ! -e "$logfile" ] ; then
4928 # Print complete message in one echo call, to avoid race condition
4929 # when several log processes run in parallel.
4930 msg=$(printf
"%s," $(date +%s); \
4931 for f in $files; do \
4932 printf
"%s," $(cat $f); \
4937 cd /sys/class/power_supply
4940 (cd $bat && log_battery
>> "$logfile")
4944 <p>The script is called when the power management system detect a
4945 change in the power status (power plug in or out), and when going into
4946 and out of hibernation and suspend. In addition, it collect a value
4947 every
10 minutes. This make it possible for me know when the battery
4948 is discharging, charging and how the maximum charge change over time.
4949 The code for the Debian package
4950 <a href=
"https://github.com/petterreinholdtsen/battery-status">is now
4951 available on github
</a>.
</p>
4953 <p>The collected log file look like this:
</p>
4956 timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status,
4957 1376591133,LGC,
45N1025,Li-ion,
974,
62800000,
62160000,
39050000,
0,Discharging,
4959 1443090528,LGC,
45N1025,Li-ion,
974,
4900000,
62160000,
4900000,
0,Full,
4960 1443090601,LGC,
45N1025,Li-ion,
974,
4900000,
62160000,
4900000,
0,Full,
4963 <p>I wrote a small script to create a graph of the charge development
4964 over time. This graph depicted above show the slow death of my laptop
4967 <p>But why is this happening? Why are my laptop batteries always
4968 dying in a year or two, while the batteries of space probes and
4969 satellites keep working year after year. If we are to believe
4970 <a href=
"http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries">Battery
4971 University
</a>, the cause is me charging the battery whenever I have a
4972 chance, and the fix is to not charge the Lithium-ion batteries to
100%
4973 all the time, but to stay below
90% of full charge most of the time.
4974 I've been told that the Tesla electric cars
4975 <a href=
"http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit">limit
4976 the charge of their batteries to
80%
</a>, with the option to charge to
4977 100% when preparing for a longer trip (not that I would want a car
4978 like Tesla where rights to privacy is abandoned, but that is another
4979 story), which I guess is the option we should have for laptops on
4982 <p>Is there a good and generic way with Linux to tell the battery to
4983 stop charging at
80%, unless requested to charge to
100% once in
4984 preparation for a longer trip? I found
4985 <a href=
"http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity">one
4986 recipe on askubuntu for Ubuntu to limit charging on Thinkpad to
4987 80%
</a>, but could not get it to work (kernel module refused to
4990 <p>I wonder why the battery capacity was reported to be more than
100%
4991 at the start. I also wonder why the "full capacity" increases some
4992 times, and if it is possible to repeat the process to get the battery
4993 back to design capacity. And I wonder if the discharge and charge
4994 speed change over time, or if this stay the same. I did not yet try
4995 to write a tool to calculate the derivative values of the battery
4996 level, but suspect some interesting insights might be learned from
4999 <p>Update
2015-
09-
24: I got a tip to install the packages
5000 acpi-call-dkms and tlp (unfortunately missing in Debian stable)
5001 packages instead of the tp-smapi-dkms package I had tried to use
5002 initially, and use 'tlp setcharge
40 80' to change when charging start
5003 and stop. I've done so now, but expect my existing battery is toast
5004 and need to be replaced. The proposal is unfortunately Thinkpad
5011 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5016 <div class=
"padding"></div>
5020 <a href=
"http://people.skolelinux.org/pere/blog/New_laptop___some_more_clues_and_ideas_based_on_feedback.html">New laptop - some more clues and ideas based on feedback
</a>
5026 <p>Several people contacted me after my previous blog post about my
5027 need for a new laptop, and provided very useful feedback. I wish to
5028 thank every one of these. Several pointed me to the possibility of
5029 fixing my X230, and I am already in the process of getting Lenovo to
5030 do so thanks to the on site, next day support contract covering the
5031 machine. But the battery is almost useless (I expect to replace it
5032 with a non-official battery) and I do not expect the machine to live
5033 for many more years, so it is time to plan its replacement. If I did
5034 not have a support contract, it was suggested to find replacement parts
5035 using
<a href=
"http://www.francecrans.com/">FrancEcrans
</a>, but it
5036 might present a language barrier as I do not understand French.
</p>
5038 <p>One tip I got was to use the
5039 <a href=
"https://skinflint.co.uk/?cat=nb">Skinflint
</a> web service to
5040 compare laptop models. It seem to have more models available than
5041 prisjakt.no. Another tip I got from someone I know have similar
5042 keyboard preferences was that the HP EliteBook
840 keyboard is not
5043 very good, and this matches my experience with earlier EliteBook
5044 keyboards I tested. Because of this, I will not consider it any further.
5046 <p>When I wrote my blog post, I was not aware of Thinkpad X250, the
5047 newest Thinkpad X model. The keyboard reintroduces mouse buttons
5048 (which is missing from the X240), and is working fairly well with
5049 Debian Sid/Unstable according to
5050 <a href=
"http://www.corsac.net/X250/">Corsac.net
</a>. The reports I
5051 got on the keyboard quality are not consistent. Some say the keyboard
5052 is good, others say it is ok, while others say it is not very good.
5053 Those with experience from X41 and and X60 agree that the X250
5054 keyboard is not as good as those trusty old laptops, and suggest I
5055 keep and fix my X230 instead of upgrading, or get a used X230 to
5056 replace it. I'm also told that the X250 lack leds for caps lock, disk
5057 activity and battery status, which is very convenient on my X230. I'm
5058 also told that the CPU fan is running very often, making it a bit
5059 noisy. In any case, the X250 do not work out of the box with Debian
5060 Stable/Jessie, one of my requirements.
</p>
5062 <p>I have also gotten a few vendor proposals, one was
5063 <a href=
"http://pro-star.com">Pro-Star
</a>, another was
5064 <a href=
"http://shop.gluglug.org.uk/product/libreboot-x200/">Libreboot
</a>.
5065 The latter look very attractive to me.
</p>
5067 <p>Again, thank you all for the very useful feedback. It help a lot
5068 as I keep looking for a replacement.
</p>
5070 <p>Update
2015-
07-
06: I was recommended to check out the
5071 <a href=
"">lapstore.de
</a> web shop for used laptops. They got several
5073 <a href=
"http://www.lapstore.de/f.php/shop/lapstore/f/411/lang/x/kw/Lenovo_ThinkPad_X_Serie/">old
5074 thinkpad X models
</a>, and provide one year warranty.
</p>
5080 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5085 <div class=
"padding"></div>
5089 <a href=
"http://people.skolelinux.org/pere/blog/Time_to_find_a_new_laptop__as_the_old_one_is_broken_after_only_two_years.html">Time to find a new laptop, as the old one is broken after only two years
</a>
5095 <p>My primary work horse laptop is failing, and will need a
5096 replacement soon. The left
5 cm of the screen on my Thinkpad X230
5097 started flickering yesterday, and I suspect the cause is a broken
5098 cable, as changing the angle of the screen some times get rid of the
5101 <p>My requirements have not really changed since I bought it, and is
5103 <a href=
"http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">I
5104 described them in
2013</a>. The last time I bought a laptop, I had
5106 <a href=
"http://www.prisjakt.no/category.php?k=353">prisjakt.no
</a>
5107 where I could select at least a few of the requirements (mouse pin,
5108 wifi, weight) and go through the rest manually. Three button mouse
5109 and a good keyboard is not available as an option, and all the three
5110 laptop models proposed today (Thinkpad X240, HP EliteBook
820 G1 and
5111 G2) lack three mouse buttons). It is also unclear to me how good the
5112 keyboard on the HP EliteBooks are. I hope Lenovo have not messed up
5113 the keyboard, even if the quality and robustness in the X series have
5114 deteriorated since X41.
</p>
5116 <p>I wonder how I can find a sensible laptop when none of the options
5117 seem sensible to me? Are there better services around to search the
5118 set of available laptops for features? Please send me an email if you
5119 have suggestions.
</p>
5121 <p>Update
2015-
07-
23: I got a suggestion to check out the FSF
5122 <a href=
"http://www.fsf.org/resources/hw/endorsement/respects-your-freedom">list
5123 of endorsed hardware
</a>, which is useful background information.
</p>
5129 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5134 <div class=
"padding"></div>
5138 <a href=
"http://people.skolelinux.org/pere/blog/How_to_stay_with_sysvinit_in_Debian_Jessie.html">How to stay with sysvinit in Debian Jessie
</a>
5144 <p>By now, it is well known that Debian Jessie will not be using
5145 sysvinit as its boot system by default. But how can one keep using
5146 sysvinit in Jessie? It is fairly easy, and here are a few recipes,
5148 <a href=
"http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html">Erich
5150 <a href=
"http://smcv.pseudorandom.co.uk/2014/still_universal/">Simon
5153 <p>If you already are using Wheezy and want to upgrade to Jessie and
5154 keep sysvinit as your boot system, create a file
5155 <tt>/etc/apt/preferences.d/use-sysvinit
</tt> with this content before
5158 <p><blockquote><pre>
5159 Package: systemd-sysv
5160 Pin: release o=Debian
5162 </pre></blockquote><p>
5164 <p>This file content will tell apt and aptitude to not consider
5165 installing systemd-sysv as part of any installation and upgrade
5166 solution when resolving dependencies, and thus tell it to avoid
5167 systemd as a default boot system. The end result should be that the
5168 upgraded system keep using sysvinit.
</p>
5170 <p>If you are installing Jessie for the first time, there is no way to
5171 get sysvinit installed by default (debootstrap used by
5172 debian-installer have no option for this), but one can tell the
5173 installer to switch to sysvinit before the first boot. Either by
5174 using a kernel argument to the installer, or by adding a line to the
5175 preseed file used. First, the kernel command line argument:
5177 <p><blockquote><pre>
5178 preseed/
late_command="in-target apt-get install --purge -y sysvinit-core"
5179 </pre></blockquote><p>
5181 <p>Next, the line to use in a preseed file:
</p>
5183 <p><blockquote><pre>
5184 d-i preseed/late_command string in-target apt-get install -y sysvinit-core
5185 </pre></blockquote><p>
5187 <p>One can of course also do this after the first boot by installing
5188 the sysvinit-core package.
</p>
5190 <p>I recommend only using sysvinit if you really need it, as the
5191 sysvinit boot sequence in Debian have several hardware specific bugs
5192 on Linux caused by the fact that it is unpredictable when hardware
5193 devices show up during boot. But on the other hand, the new default
5194 boot system still have a few rough edges I hope will be fixed before
5195 Jessie is released.
</p>
5197 <p>Update
2014-
11-
26: Inspired by
5198 <ahref=
"https://www.mirbsd.org/permalinks/wlog-10-tg_e20141125-tg.htm#e20141125-tg_wlog-10-tg">a
5199 blog post by Torsten Glaser
</a>, added --purge to the preseed
5206 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5211 <div class=
"padding"></div>
5215 <a href=
"http://people.skolelinux.org/pere/blog/A_Debian_package_for_SMTP_via_Tor__aka_SMTorP__using_exim4.html">A Debian package for SMTP via Tor (aka SMTorP) using exim4
</a>
5221 <p>The right to communicate with your friends and family in private,
5222 without anyone snooping, is a right every citicen have in a liberal
5223 democracy. But this right is under serious attack these days.
</p>
5225 <p>A while back it occurred to me that one way to make the dragnet
5226 surveillance conducted by NSA, GCHQ, FRA and others (and confirmed by
5227 the whisleblower Snowden) more expensive for Internet email,
5228 is to deliver all email using SMTP via Tor. Such SMTP option would be
5229 a nice addition to the FreedomBox project if we could send email
5230 between FreedomBox machines without leaking metadata about the emails
5231 to the people peeking on the wire. I
5232 <a href=
"http://lists.alioth.debian.org/pipermail/freedombox-discuss/2014-October/006493.html">proposed
5233 this on the FreedomBox project mailing list in October
</a> and got a
5234 lot of useful feedback and suggestions. It also became obvious to me
5235 that this was not a novel idea, as the same idea was tested and
5236 documented by Johannes Berg as early as
2006, and both
5237 <a href=
"https://github.com/pagekite/Mailpile/wiki/SMTorP">the
5238 Mailpile
</a> and
<a href=
"http://dee.su/cables">the Cables
</a> systems
5239 propose a similar method / protocol to pass emails between users.
</p>
5241 <p>To implement such system one need to set up a Tor hidden service
5242 providing the SMTP protocol on port
25, and use email addresses
5243 looking like username@hidden-service-name.onion. With such addresses
5244 the connections to port
25 on hidden-service-name.onion using Tor will
5245 go to the correct SMTP server. To do this, one need to configure the
5246 Tor daemon to provide the hidden service and the mail server to accept
5247 emails for this .onion domain. To learn more about Exim configuration
5248 in Debian and test the design provided by Johannes Berg in his FAQ, I
5249 set out yesterday to create a Debian package for making it trivial to
5250 set up such SMTP over Tor service based on Debian. Getting it to work
5251 were fairly easy, and
5252 <a href=
"https://github.com/petterreinholdtsen/exim4-smtorp">the
5253 source code for the Debian package
</a> is available from github. I
5254 plan to move it into Debian if further testing prove this to be a
5255 useful approach.
</p>
5257 <p>If you want to test this, set up a blank Debian machine without any
5258 mail system installed (or run
<tt>apt-get purge exim4-config
</tt> to
5259 get rid of exim4). Install tor, clone the git repository mentioned
5260 above, build the deb and install it on the machine. Next, run
5261 <tt>/usr/lib/exim4-smtorp/setup-exim-hidden-service
</tt> and follow
5262 the instructions to get the service up and running. Restart tor and
5263 exim when it is done, and test mail delivery using swaks like
5266 <p><blockquote><pre>
5267 torsocks swaks --server dutlqrrmjhtfa3vp.onion \
5268 --to fbx@dutlqrrmjhtfa3vp.onion
5269 </pre></blockquote></p>
5271 <p>This will test the SMTP delivery using tor. Replace the email
5272 address with your own address to test your server. :)
</p>
5274 <p>The setup procedure is still to complex, and I hope it can be made
5275 easier and more automatic. Especially the tor setup need more work.
5276 Also, the package include a tor-smtp tool written in C, but its task
5277 should probably be rewritten in some script language to make the deb
5278 architecture independent. It would probably also make the code easier
5279 to review. The tor-smtp tool currently need to listen on a socket for
5280 exim to talk to it and is started using xinetd. It would be better if
5281 no daemon and no socket is needed. I suspect it is possible to get
5282 exim to run a command line tool for delivery instead of talking to a
5283 socket, and hope to figure out how in a future version of this
5286 <p>Until I wipe my test machine, I can be reached using the
5287 <tt>fbx@dutlqrrmjhtfa3vp.onion
</tt> mail address, deliverable over
5294 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
5299 <div class=
"padding"></div>
5303 <a href=
"http://people.skolelinux.org/pere/blog/listadmin__the_quick_way_to_moderate_mailman_lists___nice_free_software.html">listadmin, the quick way to moderate mailman lists - nice free software
</a>
5309 <p>If you ever had to moderate a mailman list, like the ones on
5310 alioth.debian.org, you know the web interface is fairly slow to
5311 operate. First you visit one web page, enter the moderation password
5312 and get a new page shown with a list of all the messages to moderate
5313 and various options for each email address. This take a while for
5314 every list you moderate, and you need to do it regularly to do a good
5315 job as a list moderator. But there is a quick alternative,
5316 <a href=
"http://heim.ifi.uio.no/kjetilho/hacks/#listadmin">the
5317 listadmin program
</a>. It allow you to check lists for new messages
5318 to moderate in a fraction of a second. Here is a test run on two
5319 lists I recently took over:
</p>
5321 <p><blockquote><pre>
5322 % time listadmin xiph
5323 fetching data for pkg-xiph-commits@lists.alioth.debian.org ... nothing in queue
5324 fetching data for pkg-xiph-maint@lists.alioth.debian.org ... nothing in queue
5330 </pre></blockquote></p>
5332 <p>In
1.7 seconds I had checked two mailing lists and confirmed that
5333 there are no message in the moderation queue. Every morning I
5334 currently moderate
68 mailman lists, and it normally take around two
5335 minutes. When I took over the two pkg-xiph lists above a few days
5336 ago, there were
400 emails waiting in the moderator queue. It took me
5337 less than
15 minutes to process them all using the listadmin
5341 <a href=
"https://tracker.debian.org/pkg/listadmin">the listadmin
5342 package
</a> from Debian and create a file
<tt>~/.listadmin.ini
</tt>
5343 with content like this, the moderation task is a breeze:
</p>
5345 <p><blockquote><pre>
5346 username username@example.org
5349 discard_if_reason "Posting restricted to members only. Remove us from your mail list."
5352 adminurl https://{domain}/mailman/admindb/{list}
5353 mailman-list@lists.example.com
5356 other-list@otherserver.example.org
5357 </pre></blockquote></p>
5359 <p>There are other options to set as well. Check the manual page to
5360 learn the details.
</p>
5362 <p>If you are forced to moderate lists on a mailman installation where
5363 the SSL certificate is self signed or not properly signed by a
5364 generally accepted signing authority, you can set a environment
5365 variable when calling listadmin to disable SSL verification:
</p>
5367 <p><blockquote><pre>
5368 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 listadmin
5369 </pre></blockquote></p>
5371 <p>If you want to moderate a subset of the lists you take care of, you
5372 can provide an argument to the listadmin script like I do in the
5373 initial screen dump (the xiph argument). Using an argument, only
5374 lists matching the argument string will be processed. This make it
5375 quick to accept messages if you notice the moderation request in your
5378 <p>Without the listadmin program, I would never be the moderator of
68
5379 mailing lists, as I simply do not have time to spend on that if the
5380 process was any slower. The listadmin program have saved me hours of
5381 time I could spend elsewhere over the years. It truly is nice free
5384 <p>As usual, if you use Bitcoin and want to show your support of my
5385 activities, please send Bitcoin donations to my address
5386 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
5388 <p>Update
2014-
10-
27: Added missing 'username' statement in
5389 configuration example. Also, I've been told that the
5390 PERL_LWP_SSL_VERIFY_HOSTNAME=
0 setting do not work for everyone. Not
5397 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>.
5402 <div class=
"padding"></div>
5406 <a href=
"http://people.skolelinux.org/pere/blog/Debian_Jessie__PXE_and_automatic_firmware_installation.html">Debian Jessie, PXE and automatic firmware installation
</a>
5412 <p>When PXE installing laptops with Debian, I often run into the
5413 problem that the WiFi card require some firmware to work properly.
5414 And it has been a pain to fix this using preseeding in Debian.
5415 Normally something more is needed. But thanks to
5416 <a href=
"https://packages.qa.debian.org/i/isenkram.html">my isenkram
5417 package
</a> and its recent tasksel extension, it has now become easy
5418 to do this using simple preseeding.
</p>
5420 <p>The isenkram-cli package provide tasksel tasks which will install
5421 firmware for the hardware found in the machine (actually, requested by
5422 the kernel modules for the hardware). (It can also install user space
5423 programs supporting the hardware detected, but that is not the focus
5426 <p>To get this working in the default installation, two preeseding
5427 values are needed. First, the isenkram-cli package must be installed
5428 into the target chroot (aka the hard drive) before tasksel is executed
5429 in the pkgsel step of the debian-installer system. This is done by
5430 preseeding the base-installer/includes debconf value to include the
5431 isenkram-cli package. The package name is next passed to debootstrap
5432 for installation. With the isenkram-cli package in place, tasksel
5433 will automatically use the isenkram tasks to detect hardware specific
5434 packages for the machine being installed and install them, because
5435 isenkram-cli contain tasksel tasks.
</p>
5437 <p>Second, one need to enable the non-free APT repository, because
5438 most firmware unfortunately is non-free. This is done by preseeding
5439 the apt-mirror-setup step. This is unfortunate, but for a lot of
5440 hardware it is the only option in Debian.
</p>
5442 <p>The end result is two lines needed in your preseeding file to get
5443 firmware installed automatically by the installer:
</p>
5445 <p><blockquote><pre>
5446 base-installer base-installer/includes string isenkram-cli
5447 apt-mirror-setup apt-setup/non-free boolean true
5448 </pre></blockquote></p>
5450 <p>The current version of isenkram-cli in testing/jessie will install
5451 both firmware and user space packages when using this method. It also
5452 do not work well, so use version
0.15 or later. Installing both
5453 firmware and user space packages might give you a bit more than you
5454 want, so I decided to split the tasksel task in two, one for firmware
5455 and one for user space programs. The firmware task is enabled by
5456 default, while the one for user space programs is not. This split is
5457 implemented in the package currently in unstable.
</p>
5459 <p>If you decide to give this a go, please let me know (via email) how
5460 this recipe work for you. :)
</p>
5462 <p>So, I bet you are wondering, how can this work. First and
5463 foremost, it work because tasksel is modular, and driven by whatever
5464 files it find in /usr/lib/tasksel/ and /usr/share/tasksel/. So the
5465 isenkram-cli package place two files for tasksel to find. First there
5466 is the task description file (/usr/share/tasksel/descs/isenkram.desc):
</p>
5468 <p><blockquote><pre>
5469 Task: isenkram-packages
5471 Description: Hardware specific packages (autodetected by isenkram)
5472 Based on the detected hardware various hardware specific packages are
5474 Test-new-install: show show
5476 Packages: for-current-hardware
5478 Task: isenkram-firmware
5480 Description: Hardware specific firmware packages (autodetected by isenkram)
5481 Based on the detected hardware various hardware specific firmware
5482 packages are proposed.
5483 Test-new-install: mark show
5485 Packages: for-current-hardware-firmware
5486 </pre></blockquote></p>
5488 <p>The key parts are Test-new-install which indicate how the task
5489 should be handled and the Packages line referencing to a script in
5490 /usr/lib/tasksel/packages/. The scripts use other scripts to get a
5491 list of packages to install. The for-current-hardware-firmware script
5492 look like this to list relevant firmware for the machine:
5494 <p><blockquote><pre>
5497 PATH=/usr/sbin:$PATH
5499 isenkram-autoinstall-firmware -l
5500 </pre></blockquote></p>
5502 <p>With those two pieces in place, the firmware is installed by
5503 tasksel during the normal d-i run. :)
</p>
5505 <p>If you want to test what tasksel will install when isenkram-cli is
5506 installed, run
<tt>DEBIAN_PRIORITY=critical tasksel --test
5507 --new-install
</tt> to get the list of packages that tasksel would
5510 <p><a href=
"https://wiki.debian.org/DebianEdu/">Debian Edu
</a> will be
5511 pilots in testing this feature, as isenkram is used there now to
5512 install firmware, replacing the earlier scripts.
</p>
5518 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin
</a>.
5523 <div class=
"padding"></div>
5527 <a href=
"http://people.skolelinux.org/pere/blog/Ubuntu_used_to_show_the_bread_prizes_at_ICA_Storo.html">Ubuntu used to show the bread prizes at ICA Storo
</a>
5533 <p>Today I came across an unexpected Ubuntu boot screen. Above the
5534 bread shelf on the ICA shop at Storo in Oslo, the grub menu of Ubuntu
5535 with Linux kernel
3.2.0-
23 (ie probably version
12.04 LTS) was stuck
5536 on a screen normally showing the bread types and prizes:
</p>
5538 <p align=
"center"><img width=
"70%" src=
"http://people.skolelinux.org/pere/blog/images/2014-10-04-ubuntu-ica-storo-crop.jpeg"></p>
5540 <p>If it had booted as it was supposed to, I would never had known
5541 about this hidden Linux installation. It is interesting what
5542 <a href=
"http://revealingerrors.com/">errors can reveal
</a>.
</p>
5548 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5553 <div class=
"padding"></div>
5557 <a href=
"http://people.skolelinux.org/pere/blog/New_lsdvd_release_version_0_17_is_ready.html">New lsdvd release version
0.17 is ready
</a>
5563 <p>The
<a href=
"https://sourceforge.net/p/lsdvd/">lsdvd project
</a>
5564 got a new set of developers a few weeks ago, after the original
5565 developer decided to step down and pass the project to fresh blood.
5566 This project is now maintained by Petter Reinholdtsen and Steve
5569 <p>I just wrapped up
5570 <a href=
"https://sourceforge.net/p/lsdvd/mailman/message/32896061/">a
5571 new lsdvd release
</a>, available in git or from
5572 <a href=
"https://sourceforge.net/projects/lsdvd/files/lsdvd/">the
5573 download page
</a>. This is the changelog dated
2014-
10-
03 for version
5578 <li>Ignore 'phantom' audio, subtitle tracks
</li>
5579 <li>Check for garbage in the program chains, which indicate that a track is
5580 non-existant, to work around additional copy protection
</li>
5581 <li>Fix displaying content type for audio tracks, subtitles
</li>
5582 <li>Fix pallete display of first entry
</li>
5583 <li>Fix include orders
</li>
5584 <li>Ignore read errors in titles that would not be displayed anyway
</li>
5585 <li>Fix the chapter count
</li>
5586 <li>Make sure the array size and the array limit used when initialising
5587 the palette size is the same.
</li>
5588 <li>Fix array printing.
</li>
5589 <li>Correct subsecond calculations.
</li>
5590 <li>Add sector information to the output format.
</li>
5591 <li>Clean up code to be closer to ANSI C and compile without warnings
5592 with more GCC compiler warnings.
</li>
5596 <p>This change bring together patches for lsdvd in use in various
5597 Linux and Unix distributions, as well as patches submitted to the
5598 project the last nine years. Please check it out. :)
</p>
5604 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
5609 <div class=
"padding"></div>
5613 <a href=
"http://people.skolelinux.org/pere/blog/How_to_test_Debian_Edu_Jessie_despite_some_fatal_problems_with_the_installer.html">How to test Debian Edu Jessie despite some fatal problems with the installer
</a>
5619 <p>The
<a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
5620 project
</a> provide a Linux solution for schools, including a
5621 powerful desktop with education software, a central server providing
5622 web pages, user database, user home directories, central login and PXE
5623 boot of both clients without disk and the installation to install Debian
5624 Edu on machines with disk (and a few other services perhaps to small
5625 to mention here). We in the Debian Edu team are currently working on
5626 the Jessie based version, trying to get everything in shape before the
5627 freeze, to avoid having to maintain our own package repository in the
5629 <a href=
"https://wiki.debian.org/DebianEdu/Status/Jessie">current
5630 status
</a> can be seen on the Debian wiki, and there is still heaps of
5631 work left. Some fatal problems block testing, breaking the installer,
5632 but it is possible to work around these to get anyway. Here is a
5633 recipe on how to get the installation limping along.
</p>
5635 <p>First, download the test ISO via
5636 <a href=
"ftp://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">ftp
</a>,
5637 <a href=
"http://ftp.skolelinux.no/cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-1.iso">http
</a>
5639 ftp.skolelinux.org::cd-edu-testing-nolocal-netinst/debian-edu-amd64-i386-NETINST-
1.iso).
5640 The ISO build was broken on Tuesday, so we do not get a new ISO every
5641 12 hours or so, but thankfully the ISO we already got we are able to
5642 install with some tweaking.
</p>
5644 <p>When you get to the Debian Edu profile question, go to tty2
5645 (use Alt-Ctrl-F2), run
</p>
5647 <p><blockquote><pre>
5648 nano /usr/bin/edu-eatmydata-install
5649 </pre></blockquote></p>
5651 <p>and add 'exit
0' as the second line, disabling the eatmydata
5652 optimization. Return to the installation, select the profile you want
5653 and continue. Without this change, exim4-config will fail to install
5654 due to a known bug in eatmydata.
</p>
5656 <p>When you get the grub question at the end, answer /dev/sda (or if
5657 this do not work, figure out what your correct value would be. All my
5658 test machines need /dev/sda, so I have no advice if it do not fit
5661 <p>If you installed a profile including a graphical desktop, log in as
5662 root after the initial boot from hard drive, and install the
5663 education-desktop-XXX metapackage. XXX can be kde, gnome, lxde, xfce
5664 or mate. If you want several desktop options, install more than one
5665 metapackage. Once this is done, reboot and you should have a working
5666 graphical login screen. This workaround should no longer be needed
5667 once the education-tasks package version
1.801 enter testing in two
5670 <p>I believe the ISO build will start working on two days when the new
5671 tasksel package enter testing and Steve McIntyre get a chance to
5672 update the debian-cd git repository. The eatmydata, grub and desktop
5673 issues are already fixed in unstable and testing, and should show up
5674 on the ISO as soon as the ISO build start working again. Well the
5675 eatmydata optimization is really just disabled. The proper fix
5676 require an upload by the eatmydata maintainer applying the patch
5677 provided in bug
<a href=
"https://bugs.debian.org/702711">#
702711</a>.
5678 The rest have proper fixes in unstable.
</p>
5680 <p>I hope this get you going with the installation testing, as we are
5681 quickly running out of time trying to get our Jessie based
5682 installation ready before the distribution freeze in a month.
</p>
5688 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5693 <div class=
"padding"></div>
5697 <a href=
"http://people.skolelinux.org/pere/blog/Suddenly_I_am_the_new_upstream_of_the_lsdvd_command_line_tool.html">Suddenly I am the new upstream of the lsdvd command line tool
</a>
5703 <p>I use the
<a href=
"https://sourceforge.net/p/lsdvd/">lsdvd tool
</a>
5704 to handle my fairly large DVD collection. It is a nice command line
5705 tool to get details about a DVD, like title, tracks, track length,
5706 etc, in XML, Perl or human readable format. But lsdvd have not seen
5707 any new development since
2006 and had a few irritating bugs affecting
5708 its use with some DVDs. Upstream seemed to be dead, and in January I
5709 sent a small probe asking for a version control repository for the
5710 project, without any reply. But I use it regularly and would like to
5711 get
<a href=
"https://packages.qa.debian.org/lsdvd">an updated version
5712 into Debian
</a>. So two weeks ago I tried harder to get in touch with
5713 the project admin, and after getting a reply from him explaining that
5714 he was no longer interested in the project, I asked if I could take
5715 over. And yesterday, I became project admin.
</p>
5717 <p>I've been in touch with a Gentoo developer and the Debian
5718 maintainer interested in joining forces to maintain the upstream
5719 project, and I hope we can get a new release out fairly quickly,
5720 collecting the patches spread around on the internet into on place.
5721 I've added the relevant Debian patches to the freshly created git
5722 repository, and expect the Gentoo patches to make it too. If you got
5723 a DVD collection and care about command line tools, check out
5724 <a href=
"https://sourceforge.net/p/lsdvd/git/ci/master/tree/">the git source
</a> and join
5725 <a href=
"https://sourceforge.net/p/lsdvd/mailman/">the project mailing
5732 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
5737 <div class=
"padding"></div>
5741 <a href=
"http://people.skolelinux.org/pere/blog/Speeding_up_the_Debian_installer_using_eatmydata_and_dpkg_divert.html">Speeding up the Debian installer using eatmydata and dpkg-divert
</a>
5747 <p>The
<a href=
"https://www.debian.org/">Debian
</a> installer could be
5748 a lot quicker. When we install more than
2000 packages in
5749 <a href=
"http://www.skolelinux.org/">Skolelinux / Debian Edu
</a> using
5750 tasksel in the installer, unpacking the binary packages take forever.
5751 A part of the slow I/O issue was discussed in
5752 <a href=
"https://bugs.debian.org/613428">bug #
613428</a> about too
5753 much file system sync-ing done by dpkg, which is the package
5754 responsible for unpacking the binary packages. Other parts (like code
5755 executed by postinst scripts) might also sync to disk during
5756 installation. All this sync-ing to disk do not really make sense to
5757 me. If the machine crash half-way through, I start over, I do not try
5758 to salvage the half installed system. So the failure sync-ing is
5759 supposed to protect against, hardware or system crash, is not really
5760 relevant while the installer is running.
</p>
5762 <p>A few days ago, I thought of a way to get rid of all the file
5763 system sync()-ing in a fairly non-intrusive way, without the need to
5764 change the code in several packages. The idea is not new, but I have
5765 not heard anyone propose the approach using dpkg-divert before. It
5766 depend on the small and clever package
5767 <a href=
"https://packages.qa.debian.org/eatmydata">eatmydata
</a>, which
5768 uses LD_PRELOAD to replace the system functions for syncing data to
5769 disk with functions doing nothing, thus allowing programs to live
5770 dangerous while speeding up disk I/O significantly. Instead of
5771 modifying the implementation of dpkg, apt and tasksel (which are the
5772 packages responsible for selecting, fetching and installing packages),
5773 it occurred to me that we could just divert the programs away, replace
5774 them with a simple shell wrapper calling
5775 "eatmydata
$program
$@", to get the same effect.
5776 Two days ago I decided to test the idea, and wrapped up a simple
5777 implementation for the Debian Edu udeb.
</p>
5779 <p>The effect was stunning. In my first test it reduced the running
5780 time of the pkgsel step (installing tasks) from
64 to less than
44
5781 minutes (
20 minutes shaved off the installation) on an old Dell
5782 Latitude D505 machine. I am not quite sure what the optimised time
5783 would have been, as I messed up the testing a bit, causing the debconf
5784 priority to get low enough for two questions to pop up during
5785 installation. As soon as I saw the questions I moved the installation
5786 along, but do not know how long the question were holding up the
5787 installation. I did some more measurements using Debian Edu Jessie,
5788 and got these results. The time measured is the time stamp in
5789 /var/log/syslog between the "pkgsel: starting tasksel" and the
5790 "pkgsel: finishing up" lines, if you want to do the same measurement
5791 yourself. In Debian Edu, the tasksel dialog do not show up, and the
5792 timing thus do not depend on how quickly the user handle the tasksel
5798 <th>Machine/setup
</th>
5799 <th>Original tasksel
</th>
5800 <th>Optimised tasksel
</th>
5805 <td>Latitude D505 Main+LTSP LXDE
</td>
5806 <td>64 min (
07:
46-
08:
50)
</td>
5807 <td><44 min (
11:
27-
12:
11)
</td>
5808 <td>>20 min
18%
</td>
5812 <td>Latitude D505 Roaming LXDE
</td>
5813 <td>57 min (
08:
48-
09:
45)
</td>
5814 <td>34 min (
07:
43-
08:
17)
</td>
5819 <td>Latitude D505 Minimal
</td>
5820 <td>22 min (
10:
37-
10:
59)
</td>
5821 <td>11 min (
11:
16-
11:
27)
</td>
5826 <td>Thinkpad X200 Minimal
</td>
5827 <td>6 min (
08:
19-
08:
25)
</td>
5828 <td>4 min (
08:
04-
08:
08)
</td>
5833 <td>Thinkpad X200 Roaming KDE
</td>
5834 <td>19 min (
09:
21-
09:
40)
</td>
5835 <td>15 min (
10:
25-
10:
40)
</td>
5841 <p>The test is done using a netinst ISO on a USB stick, so some of the
5842 time is spent downloading packages. The connection to the Internet
5843 was
100Mbit/s during testing, so downloading should not be a
5844 significant factor in the measurement. Download typically took a few
5845 seconds to a few minutes, depending on the amount of packages being
5848 <p>The speedup is implemented by using two hooks in
5849 <a href=
"https://www.debian.org/devel/debian-installer/">Debian
5850 Installer
</a>, the pre-pkgsel.d hook to set up the diverts, and the
5851 finish-install.d hook to remove the divert at the end of the
5852 installation. I picked the pre-pkgsel.d hook instead of the
5853 post-base-installer.d hook because I test using an ISO without the
5854 eatmydata package included, and the post-base-installer.d hook in
5855 Debian Edu can only operate on packages included in the ISO. The
5856 negative effect of this is that I am unable to activate this
5857 optimization for the kernel installation step in d-i. If the code is
5858 moved to the post-base-installer.d hook, the speedup would be larger
5859 for the entire installation.
</p>
5861 <p>I've implemented this in the
5862 <a href=
"https://packages.qa.debian.org/debian-edu-install">debian-edu-install
</a>
5863 git repository, and plan to provide the optimization as part of the
5864 Debian Edu installation. If you want to test this yourself, you can
5865 create two files in the installer (or in an udeb). One shell script
5866 need do go into /usr/lib/pre-pkgsel.d/, with content like this:
</p>
5868 <p><blockquote><pre>
5871 . /usr/share/debconf/confmodule
5873 logger -t my-pkgsel "info: $*"
5876 logger -t my-pkgsel "error: $*"
5878 override_install() {
5879 apt-install eatmydata || true
5880 if [ -x /target/usr/bin/eatmydata ] ; then
5881 for bin in dpkg apt-get aptitude tasksel ; do
5883 # Test that the file exist and have not been diverted already.
5884 if [ -f /target$file ] ; then
5885 info "diverting $file using eatmydata"
5886 printf "#!/bin/sh\neatmydata $bin.distrib \"\$@\"\n" \
5888 chmod
755 /target$file.edu
5889 in-target dpkg-divert --package debian-edu-config \
5890 --rename --quiet --add $file
5891 ln -sf ./$bin.edu /target$file
5893 error "unable to divert $file, as it is missing."
5897 error "unable to find /usr/bin/eatmydata after installing the eatmydata pacage"
5902 </pre></blockquote></p>
5904 <p>To clean up, another shell script should go into
5905 /usr/lib/finish-install.d/ with code like this:
5907 <p><blockquote><pre>
5909 . /usr/share/debconf/confmodule
5911 logger -t my-finish-install "error: $@"
5913 remove_install_override() {
5914 for bin in dpkg apt-get aptitude tasksel ; do
5916 if [ -x /target$file.edu ] ; then
5918 in-target dpkg-divert --package debian-edu-config \
5919 --rename --quiet --remove $file
5922 error "Missing divert for $file."
5925 sync # Flush file buffers before continuing
5928 remove_install_override
5929 </pre></blockquote></p>
5931 <p>In Debian Edu, I placed both code fragments in a separate script
5932 edu-eatmydata-install and call it from the pre-pkgsel.d and
5933 finish-install.d scripts.
</p>
5935 <p>By now you might ask if this change should get into the normal
5936 Debian installer too? I suspect it should, but am not sure the
5937 current debian-installer coordinators find it useful enough. It also
5938 depend on the side effects of the change. I'm not aware of any, but I
5939 guess we will see if the change is safe after some more testing.
5940 Perhaps there is some package in Debian depending on sync() and
5941 fsync() having effect? Perhaps it should go into its own udeb, to
5942 allow those of us wanting to enable it to do so without affecting
5945 <p>Update
2014-
09-
24: Since a few days ago, enabling this optimization
5946 will break installation of all programs using gnutls because of
5947 <a href=
"https://bugs.debian.org/702711">bug #
702711</a>. An updated
5948 eatmydata package in Debian will solve it.
</p>
5950 <p>Update
2014-
10-
17: The bug mentioned above is fixed in testing and
5951 the optimization work again. And I have discovered that the
5952 dpkg-divert trick is not really needed and implemented a slightly
5953 simpler approach as part of the debian-edu-install package. See
5954 tools/edu-eatmydata-install in the source package.
</p>
5956 <p>Update
2014-
11-
11: Unfortunately, a new
5957 <a href=
"http://bugs.debian.org/765738">bug #
765738</a> in eatmydata only
5958 triggering on i386 made it into testing, and broke this installation
5959 optimization again. If
<a href=
"http://bugs.debian.org/768893">unblock
5960 request
768893</a> is accepted, it should be working again.
</p>
5966 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
5971 <div class=
"padding"></div>
5975 <a href=
"http://people.skolelinux.org/pere/blog/Good_bye_subkeys_pgp_net__welcome_pool_sks_keyservers_net.html">Good bye subkeys.pgp.net, welcome pool.sks-keyservers.net
</a>
5981 <p>Yesterday, I had the pleasure of attending a talk with the
5982 <a href=
"http://www.nuug.no/">Norwegian Unix User Group
</a> about
5983 <a href=
"http://www.nuug.no/aktiviteter/20140909-sks-keyservers/">the
5984 OpenPGP keyserver pool sks-keyservers.net
</a>, and was very happy to
5985 learn that there is a large set of publicly available key servers to
5986 use when looking for peoples public key. So far I have used
5987 subkeys.pgp.net, and some times wwwkeys.nl.pgp.net when the former
5988 were misbehaving, but those days are ended. The servers I have used
5989 up until yesterday have been slow and some times unavailable. I hope
5990 those problems are gone now.
</p>
5992 <p>Behind the round robin DNS entry of the
5993 <a href=
"https://sks-keyservers.net/">sks-keyservers.net
</a> service
5994 there is a pool of more than
100 keyservers which are checked every
5995 day to ensure they are well connected and up to date. It must be
5996 better than what I have used so far. :)
</p>
5998 <p>Yesterdays speaker told me that the service is the default
5999 keyserver provided by the default configuration in GnuPG, but this do
6000 not seem to be used in Debian. Perhaps it should?
</p>
6002 <p>Anyway, I've updated my ~/.gnupg/options file to now include this
6005 <p><blockquote><pre>
6006 keyserver pool.sks-keyservers.net
6007 </pre></blockquote></p>
6009 <p>With GnuPG version
2 one can also locate the keyserver using SRV
6010 entries in DNS. Just for fun, I did just that at work, so now every
6011 user of GnuPG at the University of Oslo should find a OpenGPG
6012 keyserver automatically should their need it:
</p>
6014 <p><blockquote><pre>
6015 % host -t srv _pgpkey-http._tcp.uio.no
6016 _pgpkey-http._tcp.uio.no has SRV record
0 100 11371 pool.sks-keyservers.net.
6018 </pre></blockquote></p>
6021 <a href=
"http://ietfreport.isoc.org/idref/draft-shaw-openpgp-hkp/">the
6022 HKP lookup protocol
</a> supported finding signature paths, I would be
6023 very happy. It can look up a given key or search for a user ID, but I
6024 normally do not want that, but to find a trust path from my key to
6025 another key. Given a user ID or key ID, I would like to find (and
6026 download) the keys representing a signature path from my key to the
6027 key in question, to be able to get a trust path between the two keys.
6028 This is as far as I can tell not possible today. Perhaps something
6029 for a future version of the protocol?
</p>
6035 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
6040 <div class=
"padding"></div>
6044 <a href=
"http://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html">From English wiki to translated PDF and epub via Docbook
</a>
6050 <p>The
<a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
6051 project
</a> provide an instruction manual for teachers, system
6052 administrators and other users that contain useful tips for setting up
6053 and maintaining a Debian Edu installation. This text is about how the
6054 text processing of this manual is handled in the project.
</p>
6056 <p>One goal of the project is to provide information in the native
6057 language of its users, and for this we need to handle translations.
6058 But we also want to make sure each language contain the same
6059 information, so for this we need a good way to keep the translations
6060 in sync. And we want it to be easy for our users to improve the
6061 documentation, avoiding the need to learn special formats or tools to
6062 contribute, and the obvious way to do this is to make it possible to
6063 edit the documentation using a web browser. We also want it to be
6064 easy for translators to keep the translation up to date, and give them
6065 help in figuring out what need to be translated. Here is the list of
6066 tools and the process we have found trying to reach all these
6069 <p>We maintain the authoritative source of our manual in the
6070 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">Debian
6071 wiki
</a>, as several wiki pages written in English. It consist of one
6072 front page with references to the different chapters, several pages
6073 for each chapter, and finally one "collection page" gluing all the
6074 chapters together into one large web page (aka
6075 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/AllInOne">the
6076 AllInOne page
</a>). The AllInOne page is the one used for further
6077 processing and translations. Thanks to the fact that the
6078 <a href=
"http://moinmo.in/">MoinMoin
</a> installation on
6079 wiki.debian.org support exporting pages in
6080 <a href=
"http://www.docbook.org/">the Docbook format
</a>, we can fetch
6081 the list of pages to export using the raw version of the AllInOne
6082 page, loop over each of them to generate a Docbook XML version of the
6083 manual. This process also download images and transform image
6084 references to use the locally downloaded images. The generated
6085 Docbook XML files are slightly broken, so some post-processing is done
6086 using the
<tt>documentation/scripts/get_manual
</tt> program, and the
6087 result is a nice Docbook XML file (debian-edu-wheezy-manual.xml) and
6088 a handfull of images. The XML file can now be used to generate PDF, HTML
6089 and epub versions of the English manual. This is the basic step of
6090 our process, making PDF (using dblatex), HTML (using xsltproc) and
6091 epub (using dbtoepub) version from Docbook XML, and the resulting files
6092 are placed in the debian-edu-doc-en binary package.
</p>
6094 <p>But English documentation is not enough for us. We want translated
6095 documentation too, and we want to make it easy for translators to
6096 track the English original. For this we use the
6097 <a href=
"http://packages.qa.debian.org/p/poxml.html">poxml
</a> package,
6098 which allow us to transform the English Docbook XML file into a
6099 translation file (a .pot file), usable with the normal gettext based
6100 translation tools used by those translating free software. The pot
6101 file is used to create and maintain translation files (several .po
6102 files), which the translations update with the native language
6103 translations of all titles, paragraphs and blocks of text in the
6104 original. The next step is combining the original English Docbook XML
6105 and the translation file (say debian-edu-wheezy-manual.nb.po), to
6106 create a translated Docbook XML file (in this case
6107 debian-edu-wheezy-manual.nb.xml). This translated (or partly
6108 translated, if the translation is not complete) Docbook XML file can
6109 then be used like the original to create a PDF, HTML and epub version
6110 of the documentation.
</p>
6112 <p>The translators use different tools to edit the .po files. We
6114 <a href=
"http://www.kde.org/applications/development/lokalize/">lokalize
</a>,
6115 while some use emacs and vi, others can use web based editors like
6116 <a href=
"http://pootle.translatehouse.org/">Poodle
</a> or
6117 <a href=
"https://www.transifex.com/">Transifex
</a>. All we care about
6118 is where the .po file end up, in our git repository. Updated
6119 translations can either be committed directly to git, or submitted as
6120 <a href=
"https://bugs.debian.org/src:debian-edu-doc">bug reports
6121 against the debian-edu-doc package
</a>.
</p>
6123 <p>One challenge is images, which both might need to be translated (if
6124 they show translated user applications), and are needed in different
6125 formats when creating PDF and HTML versions (epub is a HTML version in
6126 this regard). For this we transform the original PNG images to the
6127 needed density and format during build, and have a way to provide
6128 translated images by storing translated versions in
6129 images/$LANGUAGECODE/. I am a bit unsure about the details here. The
6130 package maintainers know more.
</p>
6132 <p>If you wonder what the result look like, we provide
6133 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/">the content
6134 of the documentation packages on the web
</a>. See for example the
6135 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/it/debian-edu-wheezy-manual.pdf">Italian
6136 PDF version
</a> or the
6137 <a href=
"http://maintainer.skolelinux.org/debian-edu-doc/de/debian-edu-wheezy-manual.html">German
6138 HTML version
</a>. We do not yet build the epub version by default,
6139 but perhaps it will be done in the future.
</p>
6141 <p>To learn more, check out
6142 <a href=
"http://packages.qa.debian.org/d/debian-edu-doc.html">the
6143 debian-edu-doc package
</a>,
6144 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">the
6145 manual on the wiki
</a> and
6146 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Translations">the
6147 translation instructions
</a> in the manual.
</p>
6153 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6158 <div class=
"padding"></div>
6162 <a href=
"http://people.skolelinux.org/pere/blog/Install_hardware_dependent_packages_using_tasksel__Isenkram_0_7_.html">Install hardware dependent packages using tasksel (Isenkram
0.7)
</a>
6168 <p>It would be nice if it was easier in Debian to get all the hardware
6169 related packages relevant for the computer installed automatically.
6170 So I implemented one, using
6171 <a href=
"http://packages.qa.debian.org/isenkram">my Isenkram
6172 package
</a>. To use it, install the tasksel and isenkram packages and
6173 run tasksel as user root. You should be presented with a new option,
6174 "Hardware specific packages (autodetected by isenkram)". When you
6175 select it, tasksel will install the packages isenkram claim is fit for
6176 the current hardware, hot pluggable or not.
<p>
6178 <p>The implementation is in two files, one is the tasksel menu entry
6179 description, and the other is the script used to extract the list of
6180 packages to install. The first part is in
6181 <tt>/usr/share/tasksel/descs/isenkram.desc
</tt> and look like
6184 <p><blockquote><pre>
6187 Description: Hardware specific packages (autodetected by isenkram)
6188 Based on the detected hardware various hardware specific packages are
6190 Test-new-install: mark show
6192 Packages: for-current-hardware
6193 </pre></blockquote></p>
6195 <p>The second part is in
6196 <tt>/usr/lib/tasksel/packages/for-current-hardware
</tt> and look like
6199 <p><blockquote><pre>
6204 isenkram-autoinstall-firmware -l
6206 </pre></blockquote></p>
6208 <p>All in all, a very short and simple implementation making it
6209 trivial to install the hardware dependent package we all may want to
6210 have installed on our machines. I've not been able to find a way to
6211 get tasksel to tell you exactly which packages it plan to install
6212 before doing the installation. So if you are curious or careful,
6213 check the output from the isenkram-* command line tools first.
</p>
6215 <p>The information about which packages are handling which hardware is
6216 fetched either from the isenkram package itself in
6217 /usr/share/isenkram/, from git.debian.org or from the APT package
6218 database (using the Modaliases header). The APT package database
6219 parsing have caused a nasty resource leak in the isenkram daemon (bugs
6220 <a href=
"http://bugs.debian.org/719837">#
719837</a> and
6221 <a href=
"http://bugs.debian.org/730704">#
730704</a>). The cause is in
6222 the python-apt code (bug
6223 <a href=
"http://bugs.debian.org/745487">#
745487</a>), but using a
6224 workaround I was able to get rid of the file descriptor leak and
6225 reduce the memory leak from ~
30 MiB per hardware detection down to
6226 around
2 MiB per hardware detection. It should make the desktop
6227 daemon a lot more useful. The fix is in version
0.7 uploaded to
6230 <p>I believe the current way of mapping hardware to packages in
6231 Isenkram is is a good draft, but in the future I expect isenkram to
6232 use the AppStream data source for this. A proposal for getting proper
6233 AppStream support into Debian is floating around as
6234 <a href=
"https://wiki.debian.org/DEP-11">DEP-
11</a>, and
6235 <a href=
"https://wiki.debian.org/SummerOfCode2014/Projects#SummerOfCode2014.2FProjects.2FAppStreamDEP11Implementation.AppStream.2FDEP-11_for_the_Debian_Archive">GSoC
6236 project
</a> will take place this summer to improve the situation. I
6237 look forward to seeing the result, and welcome patches for isenkram to
6238 start using the information when it is ready.
</p>
6240 <p>If you want your package to map to some specific hardware, either
6241 add a "Xb-Modaliases" header to your control file like I did in
6242 <a href=
"http://packages.qa.debian.org/pymissile">the pymissile
6243 package
</a> or submit a bug report with the details to the isenkram
6245 <a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram/">all my
6246 blog posts tagged isenkram
</a> for details on the notation. I expect
6247 the information will be migrated to AppStream eventually, but for the
6248 moment I got no better place to store it.
</p>
6254 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
6259 <div class=
"padding"></div>
6263 <a href=
"http://people.skolelinux.org/pere/blog/FreedomBox_milestone___all_packages_now_in_Debian_Sid.html">FreedomBox milestone - all packages now in Debian Sid
</a>
6269 <p>The
<a href=
"https://wiki.debian.org/FreedomBox">Freedombox
6270 project
</a> is working on providing the software and hardware to make
6271 it easy for non-technical people to host their data and communication
6272 at home, and being able to communicate with their friends and family
6273 encrypted and away from prying eyes. It is still going strong, and
6274 today a major mile stone was reached.
</p>
6276 <p>Today, the last of the packages currently used by the project to
6277 created the system images were accepted into Debian Unstable. It was
6278 the freedombox-setup package, which is used to configure the images
6279 during build and on the first boot. Now all one need to get going is
6280 the build code from the freedom-maker git repository and packages from
6281 Debian. And once the freedombox-setup package enter testing, we can
6282 build everything directly from Debian. :)
</p>
6284 <p>Some key packages used by Freedombox are
6285 <a href=
"http://packages.qa.debian.org/freedombox-setup">freedombox-setup
</a>,
6286 <a href=
"http://packages.qa.debian.org/plinth">plinth
</a>,
6287 <a href=
"http://packages.qa.debian.org/pagekite">pagekite
</a>,
6288 <a href=
"http://packages.qa.debian.org/tor">tor
</a>,
6289 <a href=
"http://packages.qa.debian.org/privoxy">privoxy
</a>,
6290 <a href=
"http://packages.qa.debian.org/owncloud">owncloud
</a> and
6291 <a href=
"http://packages.qa.debian.org/dnsmasq">dnsmasq
</a>. There
6292 are plans to integrate more packages into the setup. User
6293 documentation is maintained on the Debian wiki. Please
6294 <a href=
"https://wiki.debian.org/FreedomBox/Manual/Jessie">check out
6295 the manual
</a> and help us improve it.
</p>
6297 <p>To test for yourself and create boot images with the FreedomBox
6298 setup, run this on a Debian machine using a user with sudo rights to
6302 sudo apt-get install git vmdebootstrap mercurial python-docutils \
6303 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
6305 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
6307 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
6310 <p>Root access is needed to run debootstrap and mount loopback
6311 devices. See the README in the freedom-maker git repo for more
6312 details on the build. If you do not want all three images, trim the
6313 make line. Note that the virtualbox-image target is not really
6314 virtualbox specific. It create a x86 image usable in kvm, qemu,
6315 vmware and any other x86 virtual machine environment. You might need
6316 the version of vmdebootstrap in Jessie to get the build working, as it
6317 include fixes for a race condition with kpartx.
</p>
6319 <p>If you instead want to install using a Debian CD and the preseed
6320 method, boot a Debian Wheezy ISO and use this boot argument to load
6321 the preseed values:
</p>
6324 url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
</a>
6327 <p>I have not tested it myself the last few weeks, so I do not know if
6330 <p>If you wonder how to help, one task you could look at is using
6331 systemd as the boot system. It will become the default for Linux in
6332 Jessie, so we need to make sure it is usable on the Freedombox. I did
6333 a simple test a few weeks ago, and noticed dnsmasq failed to start
6334 during boot when using systemd. I suspect there are other problems
6335 too. :) To detect problems, there is a test suite included, which can
6336 be run from the plinth web interface.
</p>
6338 <p>Give it a go and let us know how it goes on the mailing list, and help
6339 us get the new release published. :) Please join us on
6340 <a href=
"irc://irc.debian.org:6667/%23freedombox">IRC (#freedombox on
6341 irc.debian.org)
</a> and
6342 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
6343 mailing list
</a> if you want to help make this vision come true.
</p>
6349 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
6354 <div class=
"padding"></div>
6358 <a href=
"http://people.skolelinux.org/pere/blog/S3QL__a_locally_mounted_cloud_file_system___nice_free_software.html">S3QL, a locally mounted cloud file system - nice free software
</a>
6364 <p>For a while now, I have been looking for a sensible offsite backup
6365 solution for use at home. My requirements are simple, it must be
6366 cheap and locally encrypted (in other words, I keep the encryption
6367 keys, the storage provider do not have access to my private files).
6368 One idea me and my friends had many years ago, before the cloud
6369 storage providers showed up, was to use Google mail as storage,
6370 writing a Linux block device storing blocks as emails in the mail
6371 service provided by Google, and thus get heaps of free space. On top
6372 of this one can add encryption, RAID and volume management to have
6373 lots of (fairly slow, I admit that) cheap and encrypted storage. But
6374 I never found time to implement such system. But the last few weeks I
6375 have looked at a system called
6376 <a href=
"https://bitbucket.org/nikratio/s3ql/">S3QL
</a>, a locally
6377 mounted network backed file system with the features I need.
</p>
6379 <p>S3QL is a fuse file system with a local cache and cloud storage,
6380 handling several different storage providers, any with Amazon S3,
6381 Google Drive or OpenStack API. There are heaps of such storage
6382 providers. S3QL can also use a local directory as storage, which
6383 combined with sshfs allow for file storage on any ssh server. S3QL
6384 include support for encryption, compression, de-duplication, snapshots
6385 and immutable file systems, allowing me to mount the remote storage as
6386 a local mount point, look at and use the files as if they were local,
6387 while the content is stored in the cloud as well. This allow me to
6388 have a backup that should survive fire. The file system can not be
6389 shared between several machines at the same time, as only one can
6390 mount it at the time, but any machine with the encryption key and
6391 access to the storage service can mount it if it is unmounted.
</p>
6393 <p>It is simple to use. I'm using it on Debian Wheezy, where the
6394 package is included already. So to get started, run
<tt>apt-get
6395 install s3ql
</tt>. Next, pick a storage provider. I ended up picking
6396 Greenqloud, after reading their nice recipe on
6397 <a href=
"https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
6398 to use S3QL with their Amazon S3 service
</a>, because I trust the laws
6399 in Iceland more than those in USA when it come to keeping my personal
6400 data safe and private, and thus would rather spend money on a company
6401 in Iceland. Another nice recipe is available from the article
6402 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
6403 Filesystem for HPC Storage
</a> by Jeff Layton in the HPC section of
6404 Admin magazine. When the provider is picked, figure out how to get
6405 the API key needed to connect to the storage API. With Greencloud,
6406 the key did not show up until I had added payment details to my
6409 <p>Armed with the API access details, it is time to create the file
6410 system. First, create a new bucket in the cloud. This bucket is the
6411 file system storage area. I picked a bucket name reflecting the
6412 machine that was going to store data there, but any name will do.
6413 I'll refer to it as
<tt>bucket-name
</tt> below. In addition, one need
6414 the API login and password, and a locally created password. Store it
6415 all in ~root/.s3ql/authinfo2 like this:
6417 <p><blockquote><pre>
6419 storage-url: s3c://s.greenqloud.com:
443/bucket-name
6420 backend-login: API-login
6421 backend-password: API-password
6422 fs-passphrase: local-password
6423 </pre></blockquote></p>
6425 <p>I create my local passphrase using
<tt>pwget
50</tt> or similar,
6426 but any sensible way to create a fairly random password should do it.
6427 Armed with these details, it is now time to run mkfs, entering the API
6428 details and password to create it:
</p>
6430 <p><blockquote><pre>
6431 # mkdir -m
700 /var/lib/s3ql-cache
6432 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6433 --ssl s3c://s.greenqloud.com:
443/bucket-name
6434 Enter backend login:
6435 Enter backend password:
6436 Before using S3QL, make sure to read the user's guide, especially
6437 the 'Important Rules to Avoid Loosing Data' section.
6438 Enter encryption password:
6439 Confirm encryption password:
6440 Generating random encryption key...
6441 Creating metadata tables...
6451 Compressing and uploading metadata...
6452 Wrote
0.00 MB of compressed metadata.
6453 #
</pre></blockquote></p>
6455 <p>The next step is mounting the file system to make the storage available.
6457 <p><blockquote><pre>
6458 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6459 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
6460 Using
4 upload threads.
6461 Downloading and decompressing metadata...
6471 Mounting filesystem...
6473 Filesystem Size Used Avail Use% Mounted on
6474 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
6476 </pre></blockquote></p>
6478 <p>The file system is now ready for use. I use rsync to store my
6479 backups in it, and as the metadata used by rsync is downloaded at
6480 mount time, no network traffic (and storage cost) is triggered by
6481 running rsync. To unmount, one should not use the normal umount
6482 command, as this will not flush the cache to the cloud storage, but
6483 instead running the umount.s3ql command like this:
6485 <p><blockquote><pre>
6488 </pre></blockquote></p>
6490 <p>There is a fsck command available to check the file system and
6491 correct any problems detected. This can be used if the local server
6492 crashes while the file system is mounted, to reset the "already
6493 mounted" flag. This is what it look like when processing a working
6496 <p><blockquote><pre>
6497 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
6498 Using cached metadata.
6499 File system seems clean, checking anyway.
6500 Checking DB integrity...
6501 Creating temporary extra indices...
6502 Checking lost+found...
6503 Checking cached objects...
6504 Checking names (refcounts)...
6505 Checking contents (names)...
6506 Checking contents (inodes)...
6507 Checking contents (parent inodes)...
6508 Checking objects (reference counts)...
6509 Checking objects (backend)...
6510 ..processed
5000 objects so far..
6511 ..processed
10000 objects so far..
6512 ..processed
15000 objects so far..
6513 Checking objects (sizes)...
6514 Checking blocks (referenced objects)...
6515 Checking blocks (refcounts)...
6516 Checking inode-block mapping (blocks)...
6517 Checking inode-block mapping (inodes)...
6518 Checking inodes (refcounts)...
6519 Checking inodes (sizes)...
6520 Checking extended attributes (names)...
6521 Checking extended attributes (inodes)...
6522 Checking symlinks (inodes)...
6523 Checking directory reachability...
6524 Checking unix conventions...
6525 Checking referential integrity...
6526 Dropping temporary indices...
6527 Backing up old metadata...
6537 Compressing and uploading metadata...
6538 Wrote
0.89 MB of compressed metadata.
6540 </pre></blockquote></p>
6542 <p>Thanks to the cache, working on files that fit in the cache is very
6543 quick, about the same speed as local file access. Uploading large
6544 amount of data is to me limited by the bandwidth out of and into my
6545 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
6546 which is very close to my upload speed, and downloading the same
6547 Debian installation ISO gave me
610 kiB/s, close to my download speed.
6548 Both were measured using
<tt>dd
</tt>. So for me, the bottleneck is my
6549 network, not the file system code. I do not know what a good cache
6550 size would be, but suspect that the cache should e larger than your
6553 <p>I mentioned that only one machine can mount the file system at the
6554 time. If another machine try, it is told that the file system is
6557 <p><blockquote><pre>
6558 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
6559 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
6560 Using
8 upload threads.
6561 Backend reports that fs is still mounted elsewhere, aborting.
6563 </pre></blockquote></p>
6565 <p>The file content is uploaded when the cache is full, while the
6566 metadata is uploaded once every
24 hour by default. To ensure the
6567 file system content is flushed to the cloud, one can either umount the
6568 file system, or ask S3QL to flush the cache and metadata using
6571 <p><blockquote><pre>
6572 # s3qlctrl upload-meta /s3ql
6573 # s3qlctrl flushcache /s3ql
6575 </pre></blockquote></p>
6577 <p>If you are curious about how much space your data uses in the
6578 cloud, and how much compression and deduplication cut down on the
6579 storage usage, you can use s3qlstat on the mounted file system to get
6582 <p><blockquote><pre>
6584 Directory entries:
9141
6587 Total data size:
22049.38 MB
6588 After de-duplication:
21955.46 MB (
99.57% of total)
6589 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
6590 Database size:
2.39 MB (uncompressed)
6591 (some values do not take into account not-yet-uploaded dirty blocks in cache)
6593 </pre></blockquote></p>
6595 <p>I mentioned earlier that there are several possible suppliers of
6596 storage. I did not try to locate them all, but am aware of at least
6597 <a href=
"https://www.greenqloud.com/">Greenqloud
</a>,
6598 <a href=
"http://drive.google.com/">Google Drive
</a>,
6599 <a href=
"http://aws.amazon.com/s3/">Amazon S3 web serivces
</a>,
6600 <a href=
"http://www.rackspace.com/">Rackspace
</a> and
6601 <a href=
"http://crowncloud.net/">Crowncloud
</A>. The latter even
6602 accept payment in Bitcoin. Pick one that suit your need. Some of
6603 them provide several GiB of free storage, but the prize models are
6604 quite different and you will have to figure out what suits you
6607 <p>While researching this blog post, I had a look at research papers
6608 and posters discussing the S3QL file system. There are several, which
6609 told me that the file system is getting a critical check by the
6610 science community and increased my confidence in using it. One nice
6612 "
<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
6613 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
6614 Store and Transformative Parallel I/O Approach
</a>" by Hsing-Bung
6615 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
6616 and Pamela Smith. Please have a look.</p>
6618 <p>Given my problems with different file systems earlier, I decided to
6619 check out the mounted S3QL file system to see if it would be usable as
6620 a home directory (in other word, that it provided POSIX semantics when
6621 it come to locking and umask handling etc). Running
6622 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
6623 test code to check file system semantics</a>, I was happy to discover that
6624 no error was found. So the file system can be used for home
6625 directories, if one chooses to do so.</p>
6627 <p>If you do not want a locally file system, and want something that
6628 work without the Linux fuse file system, I would like to mention the
6629 <a href="http://www.tarsnap.com/
">Tarsnap service</a>, which also
6630 provide locally encrypted backup using a command line client. It have
6631 a nicer access control system, where one can split out read and write
6632 access, allowing some systems to write to the backup and others to
6633 only read from it.</p>
6635 <p>As usual, if you use Bitcoin and want to show your support of my
6636 activities, please send Bitcoin donations to my address
6637 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
6643 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
6648 <div class="padding
"></div>
6652 <a href="http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html
">Freedombox on Dreamplug, Raspberry Pi and virtual x86 machine</a>
6658 <p>The <a href="https://wiki.debian.org/FreedomBox
">Freedombox
6659 project</a> is working on providing the software and hardware for
6660 making it easy for non-technical people to host their data and
6661 communication at home, and being able to communicate with their
6662 friends and family encrypted and away from prying eyes. It has been
6663 going on for a while, and is slowly progressing towards a new test
6666 <p>And what day could be better than the Pi day to announce that the
6667 new version will provide "hard drive" / SD card / USB stick images for
6668 Dreamplug, Raspberry Pi and VirtualBox (or any other virtualization
6669 system), and can also be installed using a Debian installer preseed
6670 file. The Debian based Freedombox is now based on Debian Jessie,
6671 where most of the needed packages used are already present. Only one,
6672 the freedombox-setup package, is missing. To try to build your own
6673 boot image to test the current status, fetch the freedom-maker scripts
6675 <a href=
"http://packages.qa.debian.org/vmdebootstrap">vmdebootstrap
</a>
6676 with a user with sudo access to become root:
6679 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
6681 sudo apt-get install git vmdebootstrap mercurial python-docutils \
6682 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
6684 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
6687 <p>Root access is needed to run debootstrap and mount loopback
6688 devices. See the README for more details on the build. If you do not
6689 want all three images, trim the make line. But note that thanks to
<a
6690 href=
"https://bugs.debian.org/741407">a race condition in
6691 vmdebootstrap
</a>, the build might fail without the patch to the
6694 <p>If you instead want to install using a Debian CD and the preseed
6695 method, boot a Debian Wheezy ISO and use this boot argument to load
6696 the preseed values:
</p>
6699 url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-jessie.dat">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
</a>
6702 <p>But note that due to
<a href=
"https://bugs.debian.org/740673">a
6703 recently introduced bug in apt in Jessie
</a>, the installer will
6704 currently hang while setting up APT sources. Killing the
6705 '
<tt>apt-cdrom ident
</tt>' process when it hang a few times during the
6706 installation will get the installation going. This affect all
6707 installations in Jessie, and I expect it will be fixed soon.
</p>
6709 <p>Give it a go and let us know how it goes on the mailing list, and help
6710 us get the new release published. :) Please join us on
6711 <a href=
"irc://irc.debian.org:6667/%23freedombox">IRC (#freedombox on
6712 irc.debian.org)
</a> and
6713 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
6714 mailing list
</a> if you want to help make this vision come true.
</p>
6720 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
6725 <div class=
"padding"></div>
6729 <a href=
"http://people.skolelinux.org/pere/blog/New_home_and_release_1_0_for_netgroup_and_innetgr__aka_ng_utils_.html">New home and release
1.0 for netgroup and innetgr (aka ng-utils)
</a>
6735 <p>Many years ago, I wrote a GPL licensed version of the netgroup and
6736 innetgr tools, because I needed them in
6737 <a href=
"http://www.skolelinux.org/">Skolelinux
</a>. I called the project
6738 ng-utils, and it has served me well. I placed the project under the
6739 <a href=
"http://www.hungry.com/">Hungry Programmer
</a> umbrella, and it was maintained in our CVS
6740 repository. But many years ago, the CVS repository was dropped (lost,
6741 not migrated to new hardware, not sure), and the project have lacked a
6742 proper home since then.
</p>
6744 <p>Last summer, I had a look at the package and made a new release
6745 fixing a irritating crash bug, but was unable to store the changes in
6746 a proper source control system. I applied for a project on
6747 <a href=
"https://alioth.debian.org/">Alioth
</a>, but did not have time
6748 to follow up on it. Until today. :)
</p>
6750 <p>After many hours of cleaning and migration, the ng-utils project
6751 now have a new home, and a git repository with the highlight of the
6752 history of the project. I published all release tarballs and imported
6753 them into the git repository. As the project is really stable and not
6754 expected to gain new features any time soon, I decided to make a new
6755 release and call it
1.0. Visit the new project home on
6756 <a href=
"https://alioth.debian.org/projects/ng-utils/">https://alioth.debian.org/projects/ng-utils/
</a>
6757 if you want to check it out. The new version is also uploaded into
6758 <a href=
"http://packages.qa.debian.org/n/ng-utils.html">Debian Unstable
</a>.
</p>
6764 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6769 <div class=
"padding"></div>
6773 <a href=
"http://people.skolelinux.org/pere/blog/Testing_sysvinit_from_experimental_in_Debian_Hurd.html">Testing sysvinit from experimental in Debian Hurd
</a>
6779 <p>A few days ago I decided to try to help the Hurd people to get
6780 their changes into sysvinit, to allow them to use the normal sysvinit
6781 boot system instead of their old one. This follow up on the
6782 <a href=
"https://teythoon.cryptobitch.de//categories/gsoc.html">great
6783 Google Summer of Code work
</a> done last summer by Justus Winter to
6784 get Debian on Hurd working more like Debian on Linux. To get started,
6785 I downloaded a prebuilt hard disk image from
6786 <a href=
"http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz">http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz
</a>,
6787 and started it using virt-manager.
</p>
6789 <p>The first think I had to do after logging in (root without any
6790 password) was to get the network operational. I followed
6791 <a href=
"https://www.debian.org/ports/hurd/hurd-install">the
6792 instructions on the Debian GNU/Hurd ports page
</a> and ran these
6793 commands as root to get the machine to accept a IP address from the
6794 kvm internal DHCP server:
</p>
6796 <p><blockquote><pre>
6797 settrans -fgap /dev/netdde /hurd/netdde
6798 kill $(ps -ef|awk '/[p]finet/ { print $
2}')
6799 kill $(ps -ef|awk '/[d]evnode/ { print $
2}')
6801 </pre></blockquote></p>
6803 <p>After this, the machine had internet connectivity, and I could
6804 upgrade it and install the sysvinit packages from experimental and
6805 enable it as the default boot system in Hurd.
</p>
6807 <p>But before I did that, I set a password on the root user, as ssh is
6808 running on the machine it for ssh login to work a password need to be
6809 set. Also, note that a bug somewhere in openssh on Hurd block
6810 compression from working. Remember to turn that off on the client
6813 <p>Run these commands as root to upgrade and test the new sysvinit
6816 <p><blockquote><pre>
6817 cat
> /etc/apt/sources.list.d/experimental.list
<<EOF
6818 deb http://http.debian.net/debian/ experimental main
6821 apt-get dist-upgrade
6822 apt-get install -t experimental initscripts sysv-rc sysvinit \
6823 sysvinit-core sysvinit-utils
6824 update-alternatives --config runsystem
6825 </pre></blockquote></p>
6827 <p>To reboot after switching boot system, you have to use
6828 <tt>reboot-hurd
</tt> instead of just
<tt>reboot
</tt>, as there is not
6829 yet a sysvinit process able to receive the signals from the normal
6830 'reboot' command. After switching to sysvinit as the boot system,
6831 upgrading every package and rebooting, the network come up with DHCP
6832 after boot as it should, and the settrans/pkill hack mentioned at the
6833 start is no longer needed. But for some strange reason, there are no
6834 longer any login prompt in the virtual console, so I logged in using
6837 <p>Note that there are some race conditions in Hurd making the boot
6838 fail some times. No idea what the cause is, but hope the Hurd porters
6839 figure it out. At least Justus said on IRC (#debian-hurd on
6840 irc.debian.org) that they are aware of the problem. A way to reduce
6841 the impact is to upgrade to the Hurd packages built by Justus by
6842 adding this repository to the machine:
</p>
6844 <p><blockquote><pre>
6845 cat
> /etc/apt/sources.list.d/hurd-ci.list
<<EOF
6846 deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
6848 </pre></blockquote></p>
6850 <p>At the moment the prebuilt virtual machine get some packages from
6851 http://ftp.debian-ports.org/debian, because some of the packages in
6852 unstable do not yet include the required patches that are lingering in
6853 BTS. This is the completely list of "unofficial" packages installed:
</p>
6855 <p><blockquote><pre>
6856 # aptitude search '?narrow(?version(CURRENT),?origin(Debian Ports))'
6857 i emacs - GNU Emacs editor (metapackage)
6858 i gdb - GNU Debugger
6859 i hurd-recommended - Miscellaneous translators
6860 i isc-dhcp-client - ISC DHCP client
6861 i isc-dhcp-common - common files used by all the isc-dhcp* packages
6862 i libc-bin - Embedded GNU C Library: Binaries
6863 i libc-dev-bin - Embedded GNU C Library: Development binaries
6864 i libc0.3 - Embedded GNU C Library: Shared libraries
6865 i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
6866 i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
6867 i multiarch-support - Transitional package to ensure multiarch compatibilit
6868 i A x11-common - X Window System (X.Org) infrastructure
6869 i xorg - X.Org X Window System
6870 i A xserver-xorg - X.Org X server
6871 i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
6873 </pre></blockquote></p>
6875 <p>All in all, testing hurd has been an interesting experience. :)
6876 X.org did not work out of the box and I never took the time to follow
6877 the porters instructions to fix it. This time I was interested in the
6878 command line stuff.
<p>
6884 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6889 <div class=
"padding"></div>
6893 <a href=
"http://people.skolelinux.org/pere/blog/New_chrpath_release_0_16.html">New chrpath release
0.16</a>
6899 <p><a href=
"http://www.coverity.com/">Coverity
</a> is a nice tool to
6900 find problems in C, C++ and Java code using static source code
6901 analysis. It can detect a lot of different problems, and is very
6902 useful to find memory and locking bugs in the error handling part of
6903 the source. The company behind it provide
6904 <a href=
"https://scan.coverity.com/">check of free software projects as
6905 a community service
</a>, and many hundred free software projects are
6906 already checked. A few days ago I decided to have a closer look at
6907 the Coverity system, and discovered that the
6908 <a href=
"http://www.gnu.org/software/gnash/">gnash
</a> and
6909 <a href=
"http://sourceforge.net/projects/ipmitool/">ipmitool
</a>
6910 projects I am involved with was already registered. But these are
6911 fairly big, and I would also like to have a small and easy project to
6912 check, and decided to
<a href=
"http://scan.coverity.com/projects/1179">request
6913 checking of the chrpath project
</a>. It was
6914 added to the checker and discovered seven potential defects. Six of
6915 these were real, mostly resource "leak" when the program detected an
6916 error. Nothing serious, as the resources would be released a fraction
6917 of a second later when the program exited because of the error, but it
6918 is nice to do it right in case the source of the program some time in
6919 the future end up in a library. Having fixed all defects and added
6920 <a href=
"https://lists.alioth.debian.org/mailman/listinfo/chrpath-devel">a
6921 mailing list for the chrpath developers
</a>, I decided it was time to
6922 publish a new release. These are the release notes:
</p>
6924 <p>New in
0.16 released
2014-
01-
14:
</p>
6928 <li>Fixed all minor bugs discovered by Coverity.
</li>
6929 <li>Updated config.sub and config.guess from the GNU project.
</li>
6930 <li>Mention new project mailing list in the documentation.
</li>
6935 <a href=
"https://alioth.debian.org/frs/?group_id=31052">download the
6936 new version
0.16 from alioth
</a>. Please let us know via the Alioth
6937 project if something is wrong with the new release. The test suite
6938 did not discover any old errors, so if you find a new one, please also
6939 include a test suite check.
</p>
6945 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
6950 <div class=
"padding"></div>
6954 <a href=
"http://people.skolelinux.org/pere/blog/New_chrpath_release_0_15.html">New chrpath release
0.15</a>
6960 <p>After many years break from the package and a vain hope that
6961 development would be continued by someone else, I finally pulled my
6962 acts together this morning and wrapped up a new release of chrpath,
6963 the command line tool to modify the rpath and runpath of already
6964 compiled ELF programs. The update was triggered by the persistence of
6965 Isha Vishnoi at IBM, which needed a new config.guess file to get
6966 support for the ppc64le architecture (powerpc
64-bit Little Endian) he
6967 is working on. I checked the
6968 <a href=
"http://packages.qa.debian.org/chrpath">Debian
</a>,
6969 <a href=
"https://launchpad.net/ubuntu/+source/chrpath">Ubuntu
</a> and
6970 <a href=
"https://admin.fedoraproject.org/pkgdb/acls/name/chrpath">Fedora
</a>
6971 packages for interesting patches (failed to find the source from
6972 OpenSUSE and Mandriva packages), and found quite a few nice fixes.
6973 These are the release notes:
</p>
6975 <p>New in
0.15 released
2013-
11-
24:
</p>
6979 <li>Updated config.sub and config.guess from the GNU project to work
6980 with newer architectures. Thanks to isha vishnoi for the heads
6983 <li>Updated README with current URLs.
</li>
6985 <li>Added byteswap fix found in Ubuntu, credited Jeremy Kerr and
6986 Matthias Klose.
</li>
6988 <li>Added missing help for -k|--keepgoing option, using patch by
6989 Petr Machata found in Fedora.
</li>
6991 <li>Rewrite removal of RPATH/RUNPATH to make sure the entry in
6992 .dynamic is a NULL terminated string. Based on patch found in
6993 Fedora credited Axel Thimm and Christian Krause.
</li>
6998 <a href=
"https://alioth.debian.org/frs/?group_id=31052">download the
6999 new version
0.15 from alioth
</a>. Please let us know via the Alioth
7000 project if something is wrong with the new release. The test suite
7001 did not discover any old errors, so if you find a new one, please also
7002 include a testsuite check.
</p>
7008 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7013 <div class=
"padding"></div>
7017 <a href=
"http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html">Debian init.d boot script example for rsyslog
</a>
7023 <p>If one of the points of switching to a new init system in Debian is
7024 <a href=
"http://thomas.goirand.fr/blog/?p=147">to get rid of huge
7025 init.d scripts
</a>, I doubt we need to switch away from sysvinit and
7026 init.d scripts at all. Here is an example init.d script, ie a rewrite
7027 of /etc/init.d/rsyslog:
</p>
7030 #!/lib/init/init-d-script
7033 # Required-Start: $remote_fs $time
7034 # Required-Stop: umountnfs $time
7035 # X-Stop-After: sendsigs
7036 # Default-Start:
2 3 4 5
7037 # Default-Stop:
0 1 6
7038 # Short-Description: enhanced syslogd
7039 # Description: Rsyslog is an enhanced multi-threaded syslogd.
7040 # It is quite compatible to stock sysklogd and can be
7041 # used as a drop-in replacement.
7043 DESC="enhanced syslogd"
7044 DAEMON=/usr/sbin/rsyslogd
7047 <p>Pretty minimalistic to me... For the record, the original sysv-rc
7048 script was
137 lines, and the above is just
15 lines, most of it meta
7051 <p>How to do this, you ask? Well, one create a new script
7052 /lib/init/init-d-script looking something like this:
7057 # Define LSB log_* functions.
7058 # Depend on lsb-base (
>=
3.2-
14) to ensure that this file is present
7059 # and status_of_proc is working.
7060 . /lib/lsb/init-functions
7063 # Function that starts the daemon/service
7069 #
0 if daemon has been started
7070 #
1 if daemon was already running
7071 #
2 if daemon could not be started
7072 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test
> /dev/null \
7074 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
7077 # Add code here, if necessary, that waits for the process to be ready
7078 # to handle requests from services started subsequently which depend
7079 # on this one. As a last resort, sleep for some time.
7083 # Function that stops the daemon/service
7088 #
0 if daemon has been stopped
7089 #
1 if daemon was already stopped
7090 #
2 if daemon could not be stopped
7091 # other if a failure occurred
7092 start-stop-daemon --stop --quiet --retry=TERM/
30/KILL/
5 --pidfile $PIDFILE --name $NAME
7094 [ "$RETVAL" =
2 ] && return
2
7095 # Wait for children to finish too if this is a daemon that forks
7096 # and if the daemon is only ever run from this initscript.
7097 # If the above conditions are not satisfied then add some other code
7098 # that waits for the process to drop all resources that could be
7099 # needed by services started subsequently. A last resort is to
7100 # sleep for some time.
7101 start-stop-daemon --stop --quiet --oknodo --retry=
0/
30/KILL/
5 --exec $DAEMON
7102 [ "$?" =
2 ] && return
2
7103 # Many daemons don't delete their pidfiles when they exit.
7109 # Function that sends a SIGHUP to the daemon/service
7113 # If the daemon can reload its configuration without
7114 # restarting (for example, when it is sent a SIGHUP),
7115 # then implement that here.
7117 start-stop-daemon --stop --signal
1 --quiet --pidfile $PIDFILE --name $NAME
7122 scriptbasename="$(basename $
1)"
7123 echo "SN: $scriptbasename"
7124 if [ "$scriptbasename" != "init-d-library" ] ; then
7132 NAME=$(basename $DAEMON)
7133 PIDFILE=/var/run/$NAME.pid
7135 # Exit if the package is not installed
7136 #[ -x "$DAEMON" ] || exit
0
7138 # Read configuration variable file if it is present
7139 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
7141 # Load the VERBOSE setting and other rcS variables
7146 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
7149 0|
1) [ "$VERBOSE" != no ] && log_end_msg
0 ;;
7150 2) [ "$VERBOSE" != no ] && log_end_msg
1 ;;
7154 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
7157 0|
1) [ "$VERBOSE" != no ] && log_end_msg
0 ;;
7158 2) [ "$VERBOSE" != no ] && log_end_msg
1 ;;
7162 status_of_proc "$DAEMON" "$NAME" && exit
0 || exit $?
7164 #reload|force-reload)
7166 # If do_reload() is not implemented then leave this commented out
7167 # and leave 'force-reload' as an alias for 'restart'.
7169 #log_daemon_msg "Reloading $DESC" "$NAME"
7173 restart|force-reload)
7175 # If the "reload" option is implemented then remove the
7176 # 'force-reload' alias
7178 log_daemon_msg "Restarting $DESC" "$NAME"
7185 1) log_end_msg
1 ;; # Old process is still running
7186 *) log_end_msg
1 ;; # Failed to start
7196 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
>&
2
7204 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
7205 lot. I did not really polish the approach, so it might not always
7206 work out of the box, but you get the idea. I did not try very hard to
7207 optimize it nor make it more robust either.
</p>
7209 <p>A better argument for switching init system in Debian than reducing
7210 the size of init scripts (which is a good thing to do anyway), is to
7211 get boot system that is able to handle the kernel events sensibly and
7212 robustly, and do not depend on the boot to run sequentially. The boot
7213 and the kernel have not behaved sequentially in years.
</p>
7219 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7224 <div class=
"padding"></div>
7228 <a href=
"http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html">Browser plugin for SPICE (spice-xpi) uploaded to Debian
</a>
7234 <p><a href=
"http://www.spice-space.org/">The SPICE protocol
</a> for
7235 remote display access is the preferred solution with oVirt and RedHat
7236 Enterprise Virtualization, and I was sad to discover the other day
7237 that the browser plugin needed to use these systems seamlessly was
7238 missing in Debian. The
<a href=
"http://bugs.debian.org/668284">request
7239 for a package
</a> was from
2012-
04-
10 with no progress since
7240 2013-
04-
01, so I decided to wrap up a package based on the great work
7241 from Cajus Pollmeier and put it in a collab-maint maintained git
7242 repository to get a package I could use. I would very much like
7243 others to help me maintain the package (or just take over, I do not
7244 mind), but as no-one had volunteered so far, I just uploaded it to
7245 NEW. I hope it will be available in Debian in a few days.
</p>
7247 <p>The source is now available from
7248 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary">http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary
</a>.
</p>
7254 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7259 <div class=
"padding"></div>
7263 <a href=
"http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html">Teaching vmdebootstrap to create Raspberry Pi SD card images
</a>
7270 <a href=
"http://packages.qa.debian.org/v/vmdebootstrap.html">vmdebootstrap
</a>
7271 program is a a very nice system to create virtual machine images. It
7272 create a image file, add a partition table, mount it and run
7273 debootstrap in the mounted directory to create a Debian system on a
7274 stick. Yesterday, I decided to try to teach it how to make images for
7275 <a href=
"https://wiki.debian.org/RaspberryPi">Raspberry Pi
</a>, as part
7276 of a plan to simplify the build system for
7277 <a href=
"https://wiki.debian.org/FreedomBox">the FreedomBox
7278 project
</a>. The FreedomBox project already uses vmdebootstrap for
7279 the virtualbox images, but its current build system made multistrap
7280 based system for Dreamplug images, and it is lacking support for
7283 <p>Armed with the knowledge on how to build "foreign" (aka non-native
7284 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
7285 code and adjusted it to be able to build armel images on my amd64
7286 Debian laptop. I ended up giving vmdebootstrap five new options,
7287 allowing me to replicate the image creation process I use to make
7288 <a href=
"http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html">Debian
7289 Jessie based mesh node images for the Raspberry Pi
</a>. First, the
7290 <tt>--foreign /path/to/binfm_handler
</tt> option tell vmdebootstrap to
7291 call debootstrap with --foreign and to copy the handler into the
7292 generated chroot before running the second stage. This allow
7293 vmdebootstrap to create armel images on an amd64 host. Next I added
7294 two new options
<tt>--bootsize size
</tt> and
<tt>--boottype
7295 fstype
</tt> to teach it to create a separate /boot/ partition with the
7296 given file system type, allowing me to create an image with a vfat
7297 partition for the /boot/ stuff. I also added a
<tt>--variant
7298 variant
</tt> option to allow me to create smaller images without the
7299 Debian base system packages installed. Finally, I added an option
7300 <tt>--no-extlinux
</tt> to tell vmdebootstrap to not install extlinux
7301 as a boot loader. It is not needed on the Raspberry Pi and probably
7302 most other non-x86 architectures. The changes were accepted by the
7303 upstream author of vmdebootstrap yesterday and today, and is now
7305 <a href=
"http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/">the
7306 upstream project page
</a>.
</p>
7308 <p>To use it to build a Raspberry Pi image using Debian Jessie, first
7309 create a small script (the customize script) to add the non-free
7310 binary blob needed to boot the Raspberry Pi and the APT source
7315 set -e # Exit on first error
7318 cat
<<EOF
> etc/apt/sources.list
7319 deb http://http.debian.net/debian/ jessie main contrib non-free
7321 # Install non-free binary blob needed to boot Raspberry Pi. This
7322 # install a kernel somewhere too.
7323 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
7324 -O $rootdir/usr/bin/rpi-update
7325 chmod a+x $rootdir/usr/bin/rpi-update
7326 mkdir -p $rootdir/lib/modules
7327 touch $rootdir/boot/start.elf
7328 chroot $rootdir rpi-update
7331 <p>Next, fetch the latest vmdebootstrap script and call it like this
7332 to build the image:
</p>
7335 sudo ./vmdebootstrap \
7338 --distribution jessie \
7339 --mirror http://http.debian.net/debian \
7348 --root-password raspberry \
7349 --hostname raspberrypi \
7350 --foreign /usr/bin/qemu-arm-static \
7351 --customize `pwd`/customize \
7353 --package git-core \
7354 --package binutils \
7355 --package ca-certificates \
7360 <p>The list of packages being installed are the ones needed by
7361 rpi-update to make the image bootable on the Raspberry Pi, with the
7362 exception of netbase, which is needed by debootstrap to find
7363 /etc/hosts with the minbase variant. I really wish there was a way to
7364 set up an Raspberry Pi using only packages in the Debian archive, but
7365 that is not possible as far as I know, because it boots from the GPU
7366 using a non-free binary blob.
</p>
7368 <p>The build host need debootstrap, kpartx and qemu-user-static and
7369 probably a few others installed. I have not checked the complete
7370 build dependency list.
</p>
7372 <p>The resulting image will not use the hardware floating point unit
7373 on the Raspberry PI, because the armel architecture in Debian is not
7374 optimized for that use. So the images created will be a bit slower
7375 than
<a href=
"http://www.raspbian.org/">Raspbian
</a> based images.
</p>
7381 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network
</a>.
7386 <div class=
"padding"></div>
7390 <a href=
"http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html">Good causes: Debian Outreach Program for Women, EFF documenting the spying and Open access in Norway
</a>
7396 <p>The last few days I came across a few good causes that should get
7397 wider attention. I recommend signing and donating to each one of
7400 <p>Via
<a href=
"http://www.debian.org/News/weekly/2013/18/">Debian
7401 Project News for
2013-
10-
14</a> I came across the Outreach Program for
7402 Women program which is a Google Summer of Code like initiative to get
7403 more women involved in free software. One debian sponsor has offered
7404 to match
<a href=
"http://debian.ch/opw2013">any donation done to Debian
7405 earmarked
</a> for this initiative. I donated a few minutes ago, and
7406 hope you will to. :)
</p>
7408 <p>And the Electronic Frontier Foundation just announced plans to
7409 create
<a href=
"https://supporters.eff.org/donate/nsa-videos">video
7410 documentaries about the excessive spying
</a> on every Internet user that
7411 take place these days, and their need to fund the work. I've already
7412 donated. Are you next?
</p>
7414 <p>For my Norwegian audience, the organisation Studentenes og
7415 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
7416 statement under the heading
7417 <a href=
"http://saih.no/Bloggers_United/">Bloggers United for Open
7418 Access
</a> for those of us asking for more focus on open access in the
7419 Norwegian government. So far
499 signatures. I hope you will sign it
7426 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
7431 <div class=
"padding"></div>
7435 <a href=
"http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html">Videos about the Freedombox project - for inspiration and learning
</a>
7441 <p>The
<a href=
"http://www.freedomboxfoundation.org/">Freedombox
7442 project
</a> have been going on for a while, and have presented the
7443 vision, ideas and solution several places. Here is a little
7444 collection of videos of talks and presentation of the project.
</p>
7448 <li><a href=
"http://www.youtube.com/watch?v=ukvUz5taxvA">FreedomBox -
7449 2,
5 minute marketing film
</a> (Youtube)
</li>
7451 <li><a href=
"http://www.youtube.com/watch?v=SzW25QTVWsE">Eben Moglen
7452 discusses the Freedombox on CBS news
2011</a> (Youtube)
</li>
7454 <li><a href=
"http://www.youtube.com/watch?v=Ae8SZbxfE0g">Eben Moglen -
7455 Freedom in the Cloud - Software Freedom, Privacy and and Security for
7456 Web
2.0 and Cloud computing at ISOC-NY Public Meeting
2010</a>
7459 <li><a href=
"http://www.youtube.com/watch?v=vNaIji_3xBE">Fosdem
2011
7460 Keynote by Eben Moglen presenting the Freedombox
</a> (Youtube)
</li>
7462 <li><a href=
"http://www.youtube.com/watch?v=9bDDUyJSQ9s">Presentation of
7463 the Freedombox by James Vasile at Elevate in Gratz
2011</a> (Youtube)
</li>
7465 <li><a href=
"http://www.youtube.com/watch?v=zQTmnk27g9s"> Freedombox -
7466 Discovery, Identity, and Trust by Nick Daly at Freedombox Hackfest New
7467 York City in
2012</a> (Youtube)
</li>
7469 <li><a href=
"http://www.youtube.com/watch?v=tkbSB4Ba7Ck">Introduction
7470 to the Freedombox at Freedombox Hackfest New York City in
2012</a>
7473 <li><a href=
"http://www.youtube.com/watch?v=z-P2Jaeg0aQ">Freedom, Out
7474 of the Box! by Bdale Garbee at linux.conf.au Ballarat,
2012</a> (Youtube)
</li>
7476 <li><a href=
"https://archive.fosdem.org/2013/schedule/event/freedombox/">Freedombox
7477 1.0 by Eben Moglen and Bdale Garbee at Fosdem
2013</a> (FOSDEM)
</li>
7479 <li><a href=
"http://www.youtube.com/watch?v=e1LpYX2zVYg">What is the
7480 FreedomBox today by Bdale Garbee at Debconf13 in Vaumarcus
7481 2013</a> (Youtube)
</li>
7485 <p>A larger list is available from
7486 <a href=
"https://wiki.debian.org/FreedomBox/TalksAndPresentations">the
7487 Freedombox Wiki
</a>.
</p>
7489 <p>On other news, I am happy to report that Freedombox based on Debian
7490 Jessie is coming along quite well, and soon both Owncloud and using
7491 Tor should be available for testers of the Freedombox solution. :) In
7492 a few weeks I hope everything needed to test it is included in Debian.
7493 The withsqlite package is already in Debian, and the plinth package is
7494 pending in NEW. The third and vital part of that puzzle is the
7495 metapackage/setup framework, which is still pending an upload. Join
7496 us on
<a href=
"irc://irc.debian.org:6667/%23freedombox">IRC
7497 (#freedombox on irc.debian.org)
</a> and
7498 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">the
7499 mailing list
</a> if you want to help make this vision come true.
</p>
7505 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
7510 <div class=
"padding"></div>
7514 <a href=
"http://people.skolelinux.org/pere/blog/Recipe_to_test_the_Freedombox_project_on_amd64_or_Raspberry_Pi.html">Recipe to test the Freedombox project on amd64 or Raspberry Pi
</a>
7520 <p>I was introduced to the
7521 <a href=
"http://www.freedomboxfoundation.org/">Freedombox project
</a>
7522 in
2010, when Eben Moglen presented his vision about serving the need
7523 of non-technical people to keep their personal information private and
7524 within the legal protection of their own homes. The idea is to give
7525 people back the power over their network and machines, and return
7526 Internet back to its intended peer-to-peer architecture. Instead of
7527 depending on a central service, the Freedombox will give everyone
7528 control over their own basic infrastructure.
</p>
7530 <p>I've intended to join the effort since then, but other tasks have
7531 taken priority. But this summers nasty news about the misuse of trust
7532 and privilege exercised by the "western" intelligence gathering
7533 communities increased my eagerness to contribute to a point where I
7534 actually started working on the project a while back.
</p>
7536 <p>The
<a href=
"https://alioth.debian.org/projects/freedombox/">initial
7537 Debian initiative
</a> based on the vision from Eben Moglen, is to
7538 create a simple and cheap Debian based appliance that anyone can hook
7539 up in their home and get access to secure and private services and
7540 communication. The initial deployment platform have been the
7541 <a href=
"http://www.globalscaletechnologies.com/t-dreamplugdetails.aspx">Dreamplug
</a>,
7542 which is a piece of hardware I do not own. So to be able to test what
7543 the current Freedombox setup look like, I had to come up with a way to install
7544 it on some hardware I do have access to. I have rewritten the
7545 <a href=
"https://github.com/NickDaly/freedom-maker">freedom-maker
</a>
7546 image build framework to use .deb packages instead of only copying
7547 setup into the boot images, and thanks to this rewrite I am able to
7548 set up any machine supported by Debian Wheezy as a Freedombox, using
7549 the previously mentioned deb (and a few support debs for packages
7550 missing in Debian).
</p>
7552 <p>The current Freedombox setup consist of a set of bootstrapping
7554 (
<a href=
"https://github.com/petterreinholdtsen/freedombox-setup">freedombox-setup
</a>),
7555 and a administrative web interface
7556 (
<a href=
"https://github.com/NickDaly/Plinth">plinth
</a> + exmachina +
7557 withsqlite), as well as a privacy enhancing proxy based on
7558 <a href=
"http://packages.qa.debian.org/privoxy">privoxy
</a>
7559 (freedombox-privoxy). There is also a web/javascript based XMPP
7560 client (
<a href=
"http://packages.qa.debian.org/jwchat">jwchat
</a>)
7561 trying (unsuccessfully so far) to talk to the XMPP server
7562 (
<a href=
"http://packages.qa.debian.org/ejabberd">ejabberd
</a>). The
7563 web interface is pluggable, and the goal is to use it to enable OpenID
7564 services, mesh network connectivity, use of TOR, etc, etc. Not much of
7565 this is really working yet, see
7566 <a href=
"https://github.com/NickDaly/freedombox-todos/blob/master/TODO">the
7567 project TODO
</a> for links to GIT repositories. Most of the code is
7568 on github at the moment. The HTTP proxy is operational out of the
7569 box, and the admin web interface can be used to add/remove plinth
7570 users. I've not been able to do anything else with it so far, but
7571 know there are several branches spread around github and other places
7572 with lots of half baked features.
</p>
7574 <p>Anyway, if you want to have a look at the current state, the
7575 following recipes should work to give you a test machine to poke
7578 <p><strong>Debian Wheezy amd64
</strong></p>
7582 <li>Fetch normal Debian Wheezy installation ISO.
</li>
7583 <li>Boot from it, either as CD or USB stick.
</li>
7584 <li><p>Press [tab] on the boot prompt and add this as a boot argument
7585 to the Debian installer:
<p>
7586 <pre>url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat">http://www.reinholdtsen.name/freedombox/preseed-wheezy.dat
</a></pre></li>
7588 <li>Answer the few language/region/password questions and pick disk to
7591 <li>When the installation is finished and the machine have rebooted a
7592 few times, your Freedombox is ready for testing.
</li>
7596 <p><strong>Raspberry Pi Raspbian
</strong></p>
7600 <li>Fetch a Raspbian SD card image, create SD card.
</li>
7601 <li>Boot from SD card, extend file system to fill the card completely.
</li>
7602 <li><p>Log in and add this to /etc/sources.list:
</p>
7604 deb
<a href=
"http://www.reinholdtsen.name/freedombox/">http://www.reinholdtsen.name/freedombox
</a> wheezy main
7606 <li><p>Run this as root:
</p>
7608 wget -O - http://www.reinholdtsen.name/freedombox/BE1A583D.asc | \
7611 apt-get install freedombox-setup
7612 /usr/lib/freedombox/setup
7614 <li>Reboot into your freshly created Freedombox.
</li>
7618 <p>You can test it on other architectures too, but because the
7619 freedombox-privoxy package is binary, it will only work as intended on
7620 the architectures where I have had time to build the binary and put it
7621 in my APT repository. But do not let this stop you. It is only a
7622 short "
<tt>apt-get source -b freedombox-privoxy
</tt>" away. :)</p>
7624 <p>Note that by default Freedombox is a DHCP server on the
7625 192.168.1.0/24 subnet, so if this is your subnet be careful and turn
7626 off the DHCP server by running "<tt>update-rc.d isc-dhcp-server
7627 disable
</tt>" as root.</p>
7629 <p>Please let me know if this works for you, or if you have any
7630 problems. We gather on the IRC channel
7631 <a href="irc://irc.debian.org:
6667/%
23freedombox
">#freedombox</a> on
7632 irc.debian.org and the
7633 <a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/freedombox-discuss
">project
7634 mailing list</a>.</p>
7636 <p>Once you get your freedombox operational, you can visit
7637 <tt>http://your-host-name:8001/</tt> to see the state of the plint
7638 welcome screen (dead end - do not be surprised if you are unable to
7639 get past it), and next visit <tt>http://your-host-name:8001/help/</tt>
7640 to look at the rest of plinth. The default user is 'admin' and the
7641 default password is 'secret'.</p>
7647 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web
">web</a>.
7652 <div class="padding
"></div>
7656 <a href="http://people.skolelinux.org/pere/blog/Intel_180_SSD_disk_with_Lenovo_firmware_can_not_use_Intel_firmware.html
">Intel 180 SSD disk with Lenovo firmware can not use Intel firmware</a>
7662 <p>Earlier, I reported about
7663 <a href="http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html
">my
7664 problems using an Intel SSD 520 Series 180 GB disk</a>. Friday I was
7665 told by IBM that the original disk should be thrown away. And as
7666 there no longer was a problem if I bricked the firmware, I decided
7667 today to try to install Intel firmware to replace the Lenovo firmware
7668 currently on the disk.</p>
7670 <p>I searched the Intel site for firmware, and found
7671 <a href="https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=
3472&DwnldID=
18363&ProductFamily=Solid-State+Drives+and+Caching&ProductLine=Intel%c2%ae+High+Performance+Solid-State+Drive&ProductProduct=Intel%c2%ae+SSD+
520+Series+(
180GB%
2c+
2.5in+SATA+
6Gb%
2fs%
2c+
25nm%
2c+MLC)&lang=eng
">issdfut_2.0.4.iso</a>
7672 (aka Intel SATA Solid-State Drive Firmware Update Tool) which
7673 according to the site should contain the latest firmware for SSD
7674 disks. I inserted the broken disk in one of my spare laptops and
7675 booted the ISO from a USB stick. The disk was recognized, but the
7676 program claimed the newest firmware already were installed and refused
7677 to insert any Intel firmware. So no change, and the disk is still
7678 unable to handle write load. :( I guess the only way to get them
7679 working would be if Lenovo releases new firmware. No idea how likely
7680 that is. Anyway, just blogging about this test for completeness. I
7681 got a working Samsung disk, and see no point in spending more time on
7682 the broken disks.</p>
7688 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
7693 <div class="padding
"></div>
7697 <a href="http://people.skolelinux.org/pere/blog/How_to_fix_a_Thinkpad_X230_with_a_broken_180_GB_SSD_disk.html
">How to fix a Thinkpad X230 with a broken 180 GB SSD disk</a>
7703 <p>Today I switched to
7704 <a href="http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html
">my
7705 new laptop</a>. I've previously written about the problems I had with
7706 my new Thinkpad X230, which was delivered with an
7707 <a href="http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html
">180
7708 GB Intel SSD disk with Lenovo firmware</a> that did not handle
7709 sustained writes. My hardware supplier have been very forthcoming in
7710 trying to find a solution, and after first trying with another
7711 identical 180 GB disks they decided to send me a 256 GB Samsung SSD
7712 disk instead to fix it once and for all. The Samsung disk survived
7713 the installation of Debian with encrypted disks (filling the disk with
7714 random data during installation killed the first two), and I thus
7715 decided to trust it with my data. I have installed it as a Debian Edu
7716 Wheezy roaming workstation hooked up with my Debian Edu Squeeze main
7717 server at home using Kerberos and LDAP, and will use it as my work
7718 station from now on.</p>
7720 <p>As this is a solid state disk with no moving parts, I believe the
7721 Debian Wheezy default installation need to be tuned a bit to increase
7722 performance and increase life time of the disk. The Linux kernel and
7723 user space applications do not yet adjust automatically to such
7724 environment. To make it easier for my self, I created a draft Debian
7725 package <tt>ssd-setup</tt> to handle this tuning. The
7726 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/ssd-setup.git
">source
7727 for the ssd-setup package</a> is available from collab-maint, and it
7728 is set up to adjust the setup of the machine by just installing the
7729 package. If there is any non-SSD disk in the machine, the package
7730 will refuse to install, as I did not try to write any logic to sort
7731 file systems in SSD and non-SSD file systems.</p>
7733 <p>I consider the package a draft, as I am a bit unsure how to best
7734 set up Debian Wheezy with an SSD. It is adjusted to my use case,
7735 where I set up the machine with one large encrypted partition (in
7736 addition to /boot), put LVM on top of this and set up partitions on
7737 top of this again. See the README file in the package source for the
7738 references I used to pick the settings. At the moment these
7739 parameters are tuned:</p>
7743 <li>Set up cryptsetup to pass TRIM commands to the physical disk
7744 (adding discard to /etc/crypttab)</li>
7746 <li>Set up LVM to pass on TRIM commands to the underlying device (in
7747 this case a cryptsetup partition) by changing issue_discards from
7748 0 to 1 in /etc/lvm/lvm.conf.</li>
7750 <li>Set relatime as a file system option for ext3 and ext4 file
7753 <li>Tell swap to use TRIM commands by adding 'discard' to
7756 <li>Change I/O scheduler from cfq to deadline using a udev rule.</li>
7758 <li>Run fstrim on every ext3 and ext4 file system every night (from
7761 <li>Adjust sysctl values vm.swappiness to 1 and vm.vfs_cache_pressure
7762 to 50 to reduce the kernel eagerness to swap out processes.</li>
7766 <p>During installation, I cancelled the part where the installer fill
7767 the disk with random data, as this would kill the SSD performance for
7768 little gain. My goal with the encrypted file system is to ensure
7769 those stealing my laptop end up with a brick and not a working
7770 computer. I have no hope in keeping the really resourceful people
7771 from getting the data on the disk (see
7772 <a href="http://xkcd.com/
538/
">XKCD #538</a> for an explanation why).
7773 Thus I concluded that adding the discard option to crypttab is the
7774 right thing to do.</p>
7776 <p>I considered using the noop I/O scheduler, as several recommended
7777 it for SSD, but others recommended deadline and a benchmark I found
7778 indicated that deadline might be better for interactive use.</p>
7780 <p>I also considered using the 'discard' file system option for ext3
7781 and ext4, but read that it would give a performance hit ever time a
7782 file is removed, and thought it best to that that slowdown once a day
7783 instead of during my work.</p>
7785 <p>My package do not set up tmpfs on /var/run, /var/lock and /tmp, as
7786 this is already done by Debian Edu.</p>
7788 <p>I have not yet started on the user space tuning. I expect
7789 iceweasel need some tuning, and perhaps other applications too, but
7790 have not yet had time to investigate those parts.</p>
7792 <p>The package should work on Ubuntu too, but I have not yet tested it
7795 <p>As for the answer to the question in the title of this blog post,
7796 as far as I know, the only solution I know about is to replace the
7797 disk. It might be possible to flash it with Intel firmware instead of
7798 the Lenovo firmware. But I have not tried and did not want to do so
7799 without approval from Lenovo as I wanted to keep the warranty on the
7800 disk until a solution was found and they wanted the broken disks
7807 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
7812 <div class="padding
"></div>
7816 <a href="http://people.skolelinux.org/pere/blog/Intel_SSD_520_Series_180_GB_with_Lenovo_firmware_still_lock_up_from_sustained_writes.html
">Intel SSD 520 Series 180 GB with Lenovo firmware still lock up from sustained writes</a>
7822 <p>A few days ago, I wrote about
7823 <a href="http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html
">the
7824 problems I experienced with my new X230 and its SSD disk</a>, which
7825 was dying during installation because it is unable to cope with
7826 sustained write. My supplier is in contact with
7827 <a href="http://www.lenovo.com/
">Lenovo</a>, and they wanted to send a
7828 replacement disk to try to fix the problem. They decided to send an
7829 identical model, so my hopes for a permanent fix was slim.</p>
7831 <p>Anyway, today I got the replacement disk and tried to install
7832 Debian Edu Wheezy with encrypted disk on it. The new disk have the
7833 same firmware version as the original. This time my hope raised
7834 slightly as the installation progressed, as the original disk used to
7835 die after 4-7% of the disk was written to, while this time it kept
7836 going past 10%, 20%, 40% and even past 50%. But around 60%, the disk
7837 died again and I was back on square one. I still do not have a new
7838 laptop with a disk I can trust. I can not live with a disk that might
7839 lock up when I download a new
7840 <a href="http://www.skolelinux.org/
">Debian Edu / Skolelinux</a> ISO or
7841 other large files. I look forward to hearing from my supplier with
7842 the next proposal from Lenovo.</p>
7844 <p>The original disk is marked Intel SSD 520 Series 180 GB,
7845 11S0C38722Z1ZNME35X1TR, ISN: CVCV321407HB180EGN, SA: G57560302, FW:
7846 LF1i, 29MAY2013, PBA: G39779-300, LBA 351,651,888, LI P/N: 0C38722,
7847 Pb-free 2LI, LC P/N: 16-200366, WWN: 55CD2E40002756C4, Model:
7848 SSDSC2BW180A3L 2.5" 6Gb/s SATA SSD
180G
5V
1A, ASM P/N
0C38732, FRU
7849 P/N
45N8295, P0C38732.
</p>
7851 <p>The replacement disk is marked Intel SSD
520 Series
180 GB,
7852 11S0C38722Z1ZNDE34N0L0, ISN: CVCV315306RK180EGN, SA: G57560-
302, FW:
7853 LF1i,
22APR2013, PBA: G39779-
300, LBA
351,
651,
888, LI P/N:
0C38722,
7854 Pb-free
2LI, LC P/N:
16-
200366, WWN:
55CD2E40000AB69E, Model:
7855 SSDSC2BW180A3L
2.5"
6Gb/s SATA SSD
180G
5V
1A, ASM P/N
0C38732, FRU
7856 P/N
45N8295, P0C38732.
</p>
7858 <p>The only difference is in the first number (serial number?), ISN,
7859 SA, date and WNPP values. Mentioning all the details here in case
7860 someone is able to use the information to find a way to identify the
7861 failing disk among working ones (if any such working disk actually
7868 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7873 <div class=
"padding"></div>
7877 <a href=
"http://people.skolelinux.org/pere/blog/July_13th__Debian_Ubuntu_BSP_and_Skolelinux_Debian_Edu_developer_gathering_in_Oslo.html">July
13th: Debian/Ubuntu BSP and Skolelinux/Debian Edu developer gathering in Oslo
</a>
7883 <p>The upcoming Saturday,
2013-
07-
13, we are organising a combined
7884 Debian Edu developer gathering and Debian and Ubuntu bug squashing
7885 party in Oslo. It is organised by
<a href=
"http://www.nuug.no/">the
7886 member assosiation NUUG
</a> and
7887 <a href=
"http://www.skolelinux.org/">the Debian Edu / Skolelinux
7888 project
</a> together with
<a href=
"http://bitraf.no/">the hack space
7891 <p>It starts
10:
00 and continue until late evening. Everyone is
7892 welcome, and there is no fee to participate. There is on the other
7893 hand limited space, and only room for
30 people. Please put your name
7894 on
<a href=
"http://wiki.debian.org/BSP/2013/07/13/no/Oslo">the event
7895 wiki page
</a> if you plan to join us.
</p>
7901 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
7906 <div class=
"padding"></div>
7910 <a href=
"http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230_.html">The Thinkpad is dead, long live the Thinkpad X230?
</a>
7916 <p>Half a year ago, I reported that I had to find a
7917 <a href=
"http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">replacement
7918 for my trusty old Thinkpad X41
</a>. Unfortunately I did not have much
7919 time to spend on it, and it took a while to find a model I believe
7920 will do the job, but two days ago the replacement finally arrived. I
7922 <a href=
"http://www.linlap.com/lenovo_thinkpad_x230">Thinkpad X230
</a>
7923 with SSD disk (NZDAJMN). I first test installed Debian Edu Wheezy as
7924 a roaming workstation, and it seemed to work flawlessly. But my
7925 second installation with encrypted disk was not as successful. More
7928 <p>I had a hard time trying to track down a good laptop, as my most
7929 important requirements (robust and with a good keyboard) are never
7930 listed in the feature list. But I did get good help from the search
7931 feature at
<a href=
"http://www.prisjakt.no/">Prisjakt
</a>, which
7932 allowed me to limit the list of interesting laptops based on my other
7933 requirements. A bit surprising that SSD disk are not disks according
7934 to that search interface, so I had to drop specifying the number of
7935 disks from my search parameters. I also asked around among friends to
7936 get their impression on keyboards and robustness.
</p>
7938 <p>So the new laptop arrived, and it is quite a lot wider than the
7939 X41. I am not quite convinced about the keyboard, as it is
7940 significantly wider than my old keyboard, and I have to stretch my
7941 hand a lot more to reach the edges. But the key response is fairly
7942 good and the individual key shape is fairly easy to handle, so I hope
7943 I will get used to it. My old X40 was starting to fail, and I really
7944 needed a new laptop now. :)
</p>
7946 <p>Turning off the touch pad was simple. All it took was a quick
7947 visit to the BIOS during boot it disable it.
</p>
7949 <p>But there is a fatal problem with the laptop. The
180 GB SSD disk
7950 lock up during load. And this happen when installing Debian Wheezy
7951 with encrypted disk, while the disk is being filled with random data.
7952 I also tested to install Ubuntu Raring, and it happen there too if I
7953 reenable the code to fill the disk with random data (it is disabled by
7954 default in Ubuntu). And the bug with is already known. It was
7955 reported to Debian as
<a href=
"http://bugs.debian.org/691427">BTS
7956 report #
691427 2012-
10-
25</a> (journal commit I/O error on brand-new
7957 Thinkpad T430s ext4 on lvm on SSD). It is also reported to the Linux
7958 kernel developers as
7959 <a href=
"https://bugzilla.kernel.org/show_bug.cgi?id=51861">Kernel bugzilla
7960 report #
51861 2012-
12-
20</a> (Intel SSD
520 stops working under load
7961 (SSDSC2BW180A3L in Lenovo ThinkPad T430s)). It is also reported on the
7962 Lenovo forums, both for
7963 <a href=
"http://forums.lenovo.com/t5/T400-T500-and-newer-T-series/T430s-Intel-SSD-520-180GB-issue/m-p/1070549">T430
7964 2012-
11-
10</a> and for
7965 <a href=
"http://forums.lenovo.com/t5/X-Series-ThinkPad-Laptops/x230-SATA-errors-with-180GB-Intel-520-SSD-under-heavy-write-load/m-p/1068147">X230
7966 03-
20-
2013</a>. The problem do not only affect installation. The
7967 reports state that the disk lock up during use if many writes are done
7968 on the disk, so it is much no use to work around the installation
7969 problem and end up with a computer that can lock up at any moment.
7971 <a href=
"https://git.efficios.com/?p=test-ssd.git">small C program
7972 available
</a> that will lock up the hard drive after running a few
7973 minutes by writing to a file.
</p>
7975 <p>I've contacted my supplier and asked how to handle this, and after
7976 contacting PCHELP Norway (request
01D1FDP) which handle support
7977 requests for Lenovo, his first suggestion was to upgrade the disk
7978 firmware. Unfortunately there is no newer firmware available from
7979 Lenovo, as my disk already have the most recent one (version LF1i). I
7980 hope to hear more from him today and hope the problem can be
7987 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
7992 <div class=
"padding"></div>
7996 <a href=
"http://people.skolelinux.org/pere/blog/The_Thinkpad_is_dead__long_live_the_Thinkpad_X230.html">The Thinkpad is dead, long live the Thinkpad X230
</a>
8002 <p>Half a year ago, I reported that I had to find a replacement for my
8003 trusty old Thinkpad X41. Unfortunately I did not have much time to
8004 spend on it, but today the replacement finally arrived. I ended up
8005 picking a
<a href=
"http://www.linlap.com/lenovo_thinkpad_x230">Thinkpad
8006 X230
</a> with SSD disk (NZDAJMN). I first test installed Debian Edu
8007 Wheezy as a roaming workstation, and it worked flawlessly. As I write
8008 this, it is installing what I hope will be a more final installation,
8009 with a encrypted hard drive to ensure any dope head stealing it end up
8010 with an expencive door stop.
</p>
8012 <p>I had a hard time trying to track down a good laptop, as my most
8013 important requirements (robust and with a good keyboard) are never
8014 listed in the feature list. But I did get good help from the search
8015 feature at
<ahref=
"http://www.prisjakt.no/">Prisjakt
</a>, which
8016 allowed me to limit the list of interesting laptops based on my other
8017 requirements. A bit surprising that SSD disk are not disks, so I had
8018 to drop number of disks from my search parameters.
</p>
8020 <p>I am not quite convinced about the keyboard, as it is significantly
8021 wider than my old keyboard, and I have to stretch my hand a lot more
8022 to reach the edges. But the key response is fairly good and the
8023 individual key shape is fairly easy to handle, so I hope I will get
8024 used to it. My old X40 was starting to fail, and I really needed a
8025 new laptop now. :)
</p>
8027 <p>I look forward to figuring out how to turn off the touch pad.
</p>
8033 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8038 <div class=
"padding"></div>
8042 <a href=
"http://people.skolelinux.org/pere/blog/Automatically_locate_and_install_required_firmware_packages_on_Debian__Isenkram_0_4_.html">Automatically locate and install required firmware packages on Debian (Isenkram
0.4)
</a>
8048 <p>It annoys me when the computer fail to do automatically what it is
8049 perfectly capable of, and I have to do it manually to get things
8050 working. One such task is to find out what firmware packages are
8051 needed to get the hardware on my computer working. Most often this
8052 affect the wifi card, but some times it even affect the RAID
8053 controller or the ethernet card. Today I pushed version
0.4 of the
8054 <a href=
"http://packages.qa.debian.org/isenkram">Isenkram package
</a>
8055 including a new script isenkram-autoinstall-firmware handling the
8056 process of asking all the loaded kernel modules what firmware files
8057 they want, find debian packages providing these files and install the
8058 debian packages. Here is a test run on my laptop:
</p>
8061 # isenkram-autoinstall-firmware
8062 info: kernel drivers requested extra firmware: ipw2200-bss.fw ipw2200-ibss.fw ipw2200-sniffer.fw
8063 info: fetching http://http.debian.net/debian/dists/squeeze/Contents-i386.gz
8064 info: locating packages with the requested firmware files
8065 info: Updating APT sources after adding non-free APT source
8066 info: trying to install firmware-ipw2x00
8069 Preconfiguring packages ...
8070 Selecting previously deselected package firmware-ipw2x00.
8071 (Reading database ...
259727 files and directories currently installed.)
8072 Unpacking firmware-ipw2x00 (from .../firmware-ipw2x00_0.28+squeeze1_all.deb) ...
8073 Setting up firmware-ipw2x00 (
0.28+squeeze1) ...
8077 <p>When all the requested firmware is present, a simple message is
8078 printed instead:
</p>
8081 # isenkram-autoinstall-firmware
8082 info: did not find any firmware files requested by loaded kernel modules. exiting
8086 <p>It could use some polish, but it is already working well and saving
8087 me some time when setting up new machines. :)
</p>
8089 <p>So, how does it work? It look at the set of currently loaded
8090 kernel modules, and look up each one of them using modinfo, to find
8091 the firmware files listed in the module meta-information. Next, it
8092 download the Contents file from a nearby APT mirror, and search for
8093 the firmware files in this file to locate the package with the
8094 requested firmware file. If the package is in the non-free section, a
8095 non-free APT source is added and the package is installed using
8096 <tt>apt-get install
</tt>. The end result is a slightly better working
8099 <p>I hope someone find time to implement a more polished version of
8100 this script as part of the hw-detect debian-installer module, to
8101 finally fix
<a href=
"http://bugs.debian.org/655507">BTS report
8102 #
655507</a>. There really is no need to insert USB sticks with
8103 firmware during a PXE install when the packages already are available
8104 from the nearby Debian mirror.
</p>
8110 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
8115 <div class=
"padding"></div>
8119 <a href=
"http://people.skolelinux.org/pere/blog/Fixing_the_Linux_black_screen_of_death_on_machines_with_Intel_HD_video.html">Fixing the Linux black screen of death on machines with Intel HD video
</a>
8125 <p>When installing RedHat, Fedora, Debian and Ubuntu on some machines,
8126 the screen just turn black when Linux boot, either during installation
8127 or on first boot from the hard disk. I've seen it once in a while the
8128 last few years, but only recently understood the cause. I've seen it
8129 on HP laptops, and on my latest acquaintance the Packard Bell laptop.
8130 The reason seem to be in the wiring of some laptops. The system to
8131 control the screen background light is inverted, so when Linux try to
8132 turn the brightness fully on, it end up turning it off instead. I do
8133 not know which Linux drivers are affected, but this post is about the
8134 i915 driver used by the
8135 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Packard Bell
8136 EasyNote LV
</a>, Thinkpad X40 and many other laptops.
</p>
8138 <p>The problem can be worked around two ways. Either by adding
8139 i915.invert_brightness=
1 as a kernel option, or by adding a file in
8140 /etc/modprobe.d/ to tell modprobe to add the invert_brightness=
1
8141 option when it load the i915 kernel module. On Debian and Ubuntu, it
8142 can be done by running these commands as root:
</p>
8145 echo options i915 invert_brightness=
1 | tee /etc/modprobe.d/i915.conf
8146 update-initramfs -u -k all
8149 <p>Since March
2012 there is
8150 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955">a
8151 mechanism in the Linux kernel
</a> to tell the i915 driver which
8152 hardware have this problem, and get the driver to invert the
8153 brightness setting automatically. To use it, one need to add a row in
8154 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/intel_display.c">the
8155 intel_quirks array
</a> in the driver source
8156 <tt>drivers/gpu/drm/i915/intel_display.c
</tt> (look for "
<tt>static
8157 struct intel_quirk intel_quirks
</tt>"), specifying the PCI device
8158 number (vendor number 8086 is assumed) and subdevice vendor and device
8161 <p>My Packard Bell EasyNote LV got this output from <tt>lspci
8162 -vvnn</tt> for the video card in question:</p>
8165 00:02.0 VGA compatible controller [0300]: Intel Corporation \
8166 3rd Gen Core processor Graphics Controller [8086:0156] \
8167 (rev 09) (prog-if 00 [VGA controller])
8168 Subsystem: Acer Incorporated [ALI] Device [1025:0688]
8169 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- \
8170 ParErr- Stepping- SE RR- FastB2B- DisINTx+
8171 Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- \
8172 <TAbort- <MAbort->SERR- <PERR- INTx-
8174 Interrupt: pin A routed to IRQ 42
8175 Region 0: Memory at c2000000 (64-bit, non-prefetchable) [size=4M]
8176 Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
8177 Region 4: I/O ports at 4000 [size=64]
8178 Expansion ROM at <unassigned> [disabled]
8179 Capabilities: <access denied>
8180 Kernel driver in use: i915
8183 <p>The resulting intel_quirks entry would then look like this:</p>
8186 struct intel_quirk intel_quirks[] = {
8188 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
8189 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
8194 <p>According to the kernel module instructions (as seen using
8195 <tt>modinfo i915</tt>), information about hardware needing the
8196 invert_brightness flag should be sent to the
8197 <a href="http://lists.freedesktop.org/mailman/listinfo/dri-devel
">dri-devel
8198 (at) lists.freedesktop.org</a> mailing list to reach the kernel
8199 developers. But my email about the laptop sent 2013-06-03 have not
8201 <a href="http://lists.freedesktop.org/archives/dri-devel/
2013-June/thread.html
">the
8202 web archive for the mailing list</a>, so I suspect they do not accept
8203 emails from non-subscribers. Because of this, I sent my patch also to
8204 the Debian bug tracking system instead as
8205 <a href="http://bugs.debian.org/
710938">BTS report #710938</a>, to make
8206 sure the patch is not lost.</p>
8208 <p>Unfortunately, it is not enough to fix the kernel to get Laptops
8209 with this problem working properly with Linux. If you use Gnome, your
8210 worries should be over at this point. But if you use KDE, there is
8211 something in KDE ignoring the invert_brightness setting and turning on
8212 the screen during login. I've reported it to Debian as
8213 <a href="http://bugs.debian.org/
711237">BTS report #711237</a>, and
8214 have no idea yet how to figure out exactly what subsystem is doing
8215 this. Perhaps you can help? Perhaps you know what the Gnome
8216 developers did to handle this, and this can give a clue to the KDE
8217 developers? Or you know where in KDE the screen brightness is changed
8218 during login? If so, please update the BTS report (or get in touch if
8219 you do not know how to update BTS).</p>
8221 <p>Update 2013-07-19: The correct fix for this machine seem to be
8222 acpi_backlight=vendor, to disable ACPI backlight support completely,
8223 as the ACPI information on the machine is trash and it is better to
8224 leave it to the intel video driver to control the screen
8231 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
8236 <div class="padding
"></div>
8240 <a href="http://people.skolelinux.org/pere/blog/How_to_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8.html
">How to install Linux on a Packard Bell Easynote LV preinstalled with Windows 8</a>
8246 <p>Two days ago, I asked
8247 <a href="http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html
">how
8248 I could install Linux on a Packard Bell EasyNote LV computer
8249 preinstalled with Windows 8</a>. I found a solution, but am horrified
8250 with the obstacles put in the way of Linux users on a laptop with UEFI
8253 <p>I never found out if the cause of my problems were the use of UEFI
8254 secure booting or fast boot. I suspect fast boot was the problem,
8255 causing the firmware to boot directly from HD without considering any
8256 key presses and alternative devices, but do not know UEFI settings
8259 <p>There is no way to install Linux on the machine in question without
8260 opening the box and disconnecting the hard drive! This is as far as I
8261 can tell, the only way to get access to the firmware setup menu
8262 without accepting the Windows 8 license agreement. I am told (and
8263 found description on how to) that it is possible to configure the
8264 firmware setup once booted into Windows 8. But as I believe the terms
8265 of that agreement are completely unacceptable, accepting the license
8266 was never an alternative. I do not enter agreements I do not intend
8269 <p>I feared I had to return the laptops and ask for a refund, and
8270 waste many hours on this, but luckily there was a way to get it to
8271 work. But I would not recommend it to anyone planning to run Linux on
8272 it, and I have become sceptical to Windows 8 certified laptops. Is
8273 this the way Linux will be forced out of the market place, by making
8274 it close to impossible for "normal" users to install Linux without
8275 accepting the Microsoft Windows license terms? Or at least not
8276 without risking to loose the warranty?
</p>
8279 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Linux Laptop
8280 wiki page for Packard Bell EasyNote LV
</a>, to ensure the next person
8281 do not have to struggle as much as I did to get Linux into the
8284 <p>Thanks to Bob Rosbag, Florian Weimer, Philipp Kern, Ben Hutching,
8285 Michael Tokarev and others for feedback and ideas.
</p>
8291 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8296 <div class=
"padding"></div>
8300 <a href=
"http://people.skolelinux.org/pere/blog/How_can_I_install_Linux_on_a_Packard_Bell_Easynote_LV_preinstalled_with_Windows_8_.html">How can I install Linux on a Packard Bell Easynote LV preinstalled with Windows
8?
</a>
8306 <p>I've run into quite a problem the last few days. I bought three
8307 new laptops for my parents and a few others. I bought Packard Bell
8308 Easynote LV to run Kubuntu on and use as their home computer. But I
8309 am completely unable to figure out how to install Linux on it. The
8310 computer is preinstalled with Windows
8, and I suspect it uses UEFI
8311 instead of a BIOS to boot.
</p>
8313 <p>The problem is that I am unable to get it to PXE boot, and unable
8314 to get it to boot the Linux installer from my USB stick. I have yet
8315 to try the DVD install, and still hope it will work. when I turn on
8316 the computer, there is no information on what buttons to press to get
8317 the normal boot menu. I expect to get some boot menu to select PXE or
8318 USB stick booting. When booting, it first ask for the language to
8319 use, then for some regional settings, and finally if I will accept the
8320 Windows
8 terms of use. As these terms are completely unacceptable to
8321 me, I have no other choice but to turn off the computer and try again
8322 to get it to boot the Linux installer.
</p>
8324 <p>I have gathered my findings so far on a Linlap page about the
8325 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Packard Bell
8326 EasyNote LV
</a> model. If you have any idea how to get Linux
8327 installed on this machine, please get in touch or update that wiki
8328 page. If I can't find a way to install Linux, I will have to return
8329 the laptop to the seller and find another machine for my parents.
</p>
8331 <p>I wonder, is this the way Linux will be forced out of the market
8332 using UEFI and "secure boot" by making it impossible to install Linux
8339 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8344 <div class=
"padding"></div>
8348 <a href=
"http://people.skolelinux.org/pere/blog/How_to_transform_a_Debian_based_system_to_a_Debian_Edu_installation.html">How to transform a Debian based system to a Debian Edu installation
</a>
8354 <p><a href=
"http://www.skolelinux.org/">Debian Edu / Skolelinux
</a> is
8355 an operating system based on Debian intended for use in schools. It
8356 contain a turn-key solution for the computer network provided to
8357 pupils in the primary schools. It provide both the central server,
8358 network boot servers and desktop environments with heaps of
8359 educational software. The project was founded almost
12 years ago,
8360 2001-
07-
02. If you want to support the project, which is in need for
8361 cash to fund developer gatherings and other project related activity,
8362 <a href=
"http://www.linuxiskolen.no/slxdebianlabs/donations.html">please
8363 donate some money
</a>.
8365 <p>A topic that come up again and again on the Debian Edu mailing
8366 lists and elsewhere, is the question on how to transform a Debian or
8367 Ubuntu installation into a Debian Edu installation. It isn't very
8368 hard, and last week I wrote a script to replicate the steps done by
8369 the Debian Edu installer.
</p>
8372 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/branches/wheezy/debian-edu-config/share/debian-edu-config/tools/debian-edu-bless?view=markup">debian-edu-bless
<a/>
8373 in the debian-edu-config package, will go through these six steps and
8374 transform an existing Debian Wheezy or Ubuntu (untested) installation
8375 into a Debian Edu Workstation:
</p>
8379 <li>Add skolelinux related APT sources.
</li>
8380 <li>Create /etc/debian-edu/config with the wanted configuration.
</li>
8381 <li>Install debian-edu-install to load preseeding values and pull in
8382 our configuration.
</li>
8383 <li>Preseed debconf database with profile setup in
8384 /etc/debian-edu/config, and run tasksel to install packages
8385 according to the profile specified in the config above,
8386 overriding some of the Debian automation machinery.
</li>
8387 <li>Run debian-edu-cfengine-D installation to configure everything
8388 that could not be done using preseeding.
</li>
8389 <li>Ask for a reboot to enable all the configuration changes.
</li>
8393 <p>There are some steps in the Debian Edu installation that can not be
8394 replicated like this. Disk partitioning and LVM setup, for example.
8395 So this script just assume there is enough disk space to install all
8396 the needed packages.
</p>
8398 <p>The script was created to help a Debian Edu student working on
8399 setting up
<a href=
"http://www.raspberrypi.org">Raspberry Pi
</a> as a
8400 Debian Edu client, and using it he can take the existing
8401 <a href=
"http://www.raspbian.org/FrontPage">Raspbian
</a> installation and
8402 transform it into a fully functioning Debian Edu Workstation (or
8403 Roaming Workstation, or whatever :).
</p>
8405 <p>The default setting in the script is to create a KDE Workstation.
8406 If a LXDE based Roaming workstation is wanted instead, modify the
8407 PROFILE and DESKTOP values at the top to look like this instead:
</p>
8410 PROFILE="Roaming-Workstation"
8414 <p>The script could even become useful to set up Debian Edu servers in
8415 the cloud, by starting with a virtual Debian installation at some
8416 virtual hosting service and setting up all the services on first
8423 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8428 <div class=
"padding"></div>
8432 <a href=
"http://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html">Debian, the Linux distribution of choice for LEGO designers?
</a>
8439 <a href=
"http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">I
8440 announced a
</a> new
<a href=
"irc://irc.debian.org/%23debian-lego">IRC
8441 channel #debian-lego
</a>, for those of us in the Debian and Linux
8442 community interested in
<a href=
"http://www.lego.com/">LEGO
</a>, the
8443 marvellous construction system from Denmark. We also created
8444 <a href=
"http://wiki.debian.org/LegoDesigners">a wiki page
</a> to have
8445 a place to take notes and write down our plans and hopes. And several
8446 people showed up to help. I was very happy to see the effect of my
8447 call. Since the small start, we have a debtags tag
8448 <a href=
"http://debtags.debian.net/search/bytag?wl=hardware::hobby:lego">hardware::hobby:lego
</a>
8449 tag for LEGO related packages, and now count
10 packages related to
8450 LEGO and
<a href=
"http://mindstorms.lego.com/">Mindstorms
</a>:
</p>
8453 <tr><td><a href=
"http://packages.qa.debian.org/brickos">brickos
</a></td><td>alternative OS for LEGO Mindstorms RCX. Supports development in C/C++
</td></tr>
8454 <tr><td><a href=
"http://packages.qa.debian.org/leocad">leocad
</a></td><td>virtual brick CAD software
</td></tr>
8455 <tr><td><a href=
"http://packages.qa.debian.org/libnxt">libnxt
</a></td><td>utility library for talking to the LEGO Mindstorms NX
</td></tr>
8456 <tr><td><a href=
"http://packages.qa.debian.org/lnpd">lnpd
</a></td><td>daemon for LNP communication with BrickOS
</td></tr>
8457 <tr><td><a href=
"http://packages.qa.debian.org/nbc">nbc
</a></td><td>compiler for LEGO Mindstorms NXT bricks
</td></tr>
8458 <tr><td><a href=
"http://packages.qa.debian.org/nqc">nqc
</a></td><td>Not Quite C compiler for LEGO Mindstorms RCX
</td></tr>
8459 <tr><td><a href=
"http://packages.qa.debian.org/python-nxt">python-nxt
</a></td><td>python driver/interface/wrapper for the Lego Mindstorms NXT robot
</td></tr>
8460 <tr><td><a href=
"http://packages.qa.debian.org/python-nxt-filer">python-nxt-filer
</a></td><td>simple GUI to manage files on a LEGO Mindstorms NXT
</td></tr>
8461 <tr><td><a href=
"http://packages.qa.debian.org/scratch">scratch
</a></td><td>easy to use programming environment for ages
8 and up
</td></tr>
8462 <tr><td><a href=
"http://packages.qa.debian.org/t2n">t2n
</a></td><td>simple command-line tool for Lego NXT
</td></tr>
8465 <p>Some of these are available in Wheezy, and all but one are
8466 currently available in Jessie/testing. leocad is so far only
8467 available in experimental.
</p>
8469 <p>If you care about LEGO in Debian, please join us on IRC and help
8470 adding the rest of the great free software tools available on Linux
8471 for LEGO designers.
</p>
8477 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot
</a>.
8482 <div class=
"padding"></div>
8486 <a href=
"http://people.skolelinux.org/pere/blog/Debian_Wheezy_is_out___and_Debian_Edu___Skolelinux_should_soon_follow___newinwheezy.html">Debian Wheezy is out - and Debian Edu / Skolelinux should soon follow! #newinwheezy
</a>
8492 <p>When I woke up this morning, I was very happy to see that the
8493 <a href=
"http://www.debian.org/News/2013/20130504">release announcement
8494 for Debian Wheezy
</a> was waiting in my mail box. This is a great
8495 Debian release, and I expect to move my machines at home over to it fairly
8498 <p>The new debian release contain heaps of new stuff, and one program
8499 in particular make me very happy to see included. The
8500 <a href=
"http://scratch.mit.edu/">Scratch
</a> program, made famous by
8501 the
<a href=
"http://www.code.org/">Teach kids code
</a> movement, is
8502 included for the first time. Alongside similar programs like
8503 <a href=
"http://edu.kde.org/kturtle/">kturtle
</a> and
8504 <a href=
"http://wiki.sugarlabs.org/go/Activities/Turtle_Art">turtleart
</a>,
8505 it allow for visual programming where syntax errors can not happen,
8506 and a friendly programming environment for learning to control the
8507 computer. Scratch will also be included in the next release of Debian
8510 <p>And now that Wheezy is wrapped up, we can wrap up the next Debian
8511 Edu/Skolelinux release too. The
8512 <a href=
"http://lists.debian.org/debian-edu/2013/04/msg00132.html">first
8513 alpha release
</a> went out last week, and the next should soon
8520 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8525 <div class=
"padding"></div>
8529 <a href=
"http://people.skolelinux.org/pere/blog/Isenkram_0_2_finally_in_the_Debian_archive.html">Isenkram
0.2 finally in the Debian archive
</a>
8535 <p>Today the
<a href=
"http://packages.qa.debian.org/isenkram">Isenkram
8536 package
</a> finally made it into the archive, after lingering in NEW
8537 for many months. I uploaded it to the Debian experimental suite
8538 2013-
01-
27, and today it was accepted into the archive.
</p>
8540 <p>Isenkram is a system for suggesting to users what packages to
8541 install to work with a pluggable hardware device. The suggestion pop
8542 up when the device is plugged in. For example if a Lego Mindstorm NXT
8543 is inserted, it will suggest to install the program needed to program
8544 the NXT controller. Give it a go, and report bugs and suggestions to
8551 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
8556 <div class=
"padding"></div>
8560 <a href=
"http://people.skolelinux.org/pere/blog/Bitcoin_GUI_now_available_from_Debian_unstable__and_Ubuntu_raring_.html">Bitcoin GUI now available from Debian/unstable (and Ubuntu/raring)
</a>
8567 <a href=
"http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">last
8568 bitcoin related blog post
</a> mentioned that the new
8569 <a href=
"http://packages.qa.debian.org/bitcoin">bitcoin package
</a> for
8570 Debian was waiting in NEW. It was accepted by the Debian ftp-masters
8571 2013-
01-
19, and have been available in unstable since then. It was
8572 automatically copied to Ubuntu, and is available in their Raring
8575 <p>But there is a strange problem with the build that block this new
8576 version from being available on the i386 and kfreebsd-i386
8577 architectures. For some strange reason, the autobuilders in Debian
8578 for these architectures fail to run the test suite on these
8579 architectures (
<a href=
"http://bugs.debian.org/672524">BTS #
672524</a>).
8580 We are so far unable to reproduce it when building it manually, and
8581 no-one have been able to propose a fix. If you got an idea what is
8582 failing, please let us know via the BTS.
</p>
8584 <p>One feature that is annoying me with of the bitcoin client, because
8585 I often run low on disk space, is the fact that the client will exit
8586 if it run short on space (
<a href=
"http://bugs.debian.org/696715">BTS
8587 #
696715</a>). So make sure you have enough disk space when you run
8590 <p>As usual, if you use bitcoin and want to show your support of my
8591 activities, please send Bitcoin donations to my address
8592 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
8598 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8603 <div class=
"padding"></div>
8607 <a href=
"http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">Welcome to the world, Isenkram!
</a>
8614 <a href=
"http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">asked
8615 for testers
</a> for my prototype for making Debian better at handling
8616 pluggable hardware devices, which I
8617 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">set
8618 out to create
</a> earlier this month. Several valuable testers showed
8619 up, and caused me to really want to to open up the development to more
8620 people. But before I did this, I want to come up with a sensible name
8621 for this project. Today I finally decided on a new name, and I have
8622 renamed the project from hw-support-handler to this new name. In the
8623 process, I moved the source to git and made it available as a
8624 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/isenkram.git">collab-maint
</a>
8625 repository in Debian. The new name? It is
<strong>Isenkram
</strong>.
8626 To fetch and build the latest version of the source, use
</p>
8629 git clone http://anonscm.debian.org/git/collab-maint/isenkram.git
8630 cd isenkram && git-buildpackage -us -uc
8633 <p>I have not yet adjusted all files to use the new name yet. If you
8634 want to hack on the source or improve the package, please go ahead.
8635 But please talk to me first on IRC or via email before you do major
8636 changes, to make sure we do not step on each others toes. :)
</p>
8638 <p>If you wonder what 'isenkram' is, it is a Norwegian word for iron
8639 stuff, typically meaning tools, nails, screws, etc. Typical hardware
8640 stuff, in other words. I've been told it is the Norwegian variant of
8641 the German word eisenkram, for those that are familiar with that
8644 <p><strong>Update
2013-
01-
26</strong>: Added -us -us to build
8645 instructions, to avoid confusing people with an error from the signing
8648 <p><strong>Update
2013-
01-
27</strong>: Switch to HTTP URL for the git
8649 clone argument to avoid the need for authentication.
</p>
8655 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
8660 <div class=
"padding"></div>
8664 <a href=
"http://people.skolelinux.org/pere/blog/First_prototype_ready_making_hardware_easier_to_use_in_Debian.html">First prototype ready making hardware easier to use in Debian
</a>
8670 <p>Early this month I set out to try to
8671 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">improve
8672 the Debian support for pluggable hardware devices
</a>. Now my
8673 prototype is working, and it is ready for a larger audience. To test
8675 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">source
8676 from the Debian Edu subversion repository
</a>, build and install the
8677 package. You might have to log out and in again activate the
8678 autostart script.
</p>
8680 <p>The design is simple:
</p>
8684 <li>Add desktop entry in /usr/share/autostart/ causing a program
8685 hw-support-handlerd to start when the user log in.
</li>
8687 <li>This program listen for kernel events about new hardware (directly
8688 from the kernel like udev does), not using HAL dbus events as I
8691 <li>When new hardware is inserted, look up the hardware modalias in
8692 the APT database, a database
8693 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=markup">available
8694 via HTTP
</a> and a database available as part of the package.
</li>
8696 <li>If a package is mapped to the hardware in question, the package
8697 isn't installed yet and this is the first time the hardware was
8698 plugged in, show a desktop notification suggesting to install the
8699 package or packages.
</li>
8701 <li>If the user click on the 'install package now' button, ask
8702 aptdaemon via the PackageKit API to install the requrired package.
</li>
8704 <li>aptdaemon ask for root password or sudo password, and install the
8705 package while showing progress information in a window.
</li>
8709 <p>I still need to come up with a better name for the system. Here
8710 are some screen shots showing the prototype in action. First the
8711 notification, then the password request, and finally the request to
8712 approve all the dependencies. Sorry for the Norwegian Bokmål GUI.
</p>
8714 <p><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-1-notification.png">
8715 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-2-password.png">
8716 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-3-dependencies.png">
8717 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-4-installing.png">
8718 <br><img src=
"http://people.skolelinux.org/pere/blog/images/2013-01-21-hw-support-5-installing-details.png" width=
"70%"></p>
8720 <p>The prototype still need to be improved with longer timeouts, but
8721 is already useful. The database of hardware to package mappings also
8722 need more work. It is currently compatible with the Ubuntu way of
8723 storing such information in the package control file, but could be
8724 changed to use other formats instead or in addition to the current
8725 method. I've dropped the use of discover for this mapping, as the
8726 modalias approach is more flexible and easier to use on Linux as long
8727 as the Linux kernel expose its modalias strings directly.
</p>
8729 <p><strong>Update
2013-
01-
21 16:
50</strong>: Due to popular demand,
8730 here is the command required to check out and build the source: Use
8732 svn://svn.debian.org/debian-edu/trunk/src/hw-support-handler/; cd
8733 hw-support-handler; debuild
</tt>'. If you lack debuild, install the
8734 devscripts package.
</p>
8736 <p><strong>Update
2013-
01-
23 12:
00</strong>: The project is now
8737 renamed to Isenkram and the source moved from the Debian Edu
8738 subversion repository to a Debian collab-maint git repository. See
8739 <a href=
"http://people.skolelinux.org/pere/blog/Welcome_to_the_world__Isenkram_.html">build
8740 instructions
</a> for details.
</p>
8746 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
8751 <div class=
"padding"></div>
8755 <a href=
"http://people.skolelinux.org/pere/blog/Thank_you_Thinkpad_X41__for_your_long_and_trustworthy_service.html">Thank you Thinkpad X41, for your long and trustworthy service
</a>
8761 <p>This Christmas my trusty old laptop died. It died quietly and
8762 suddenly in bed. With a quiet whimper, it went completely quiet and
8763 black. The power button was no longer able to turn it on. It was a
8764 IBM Thinkpad X41, and the best laptop I ever had. Better than both
8765 Thinkpads X30, X31, X40, X60, X61 and X61S. Far better than the
8766 Compaq I had before that. Now I need to find a replacement. To keep
8767 going during Christmas, I moved the one year old SSD disk to my old
8768 X40 where it fitted (only one I had left that could use it), but it is
8769 not a durable solution.
8771 <p>My laptop needs are fairly modest. This is my wishlist from when I
8772 got a new one more than
10 years ago. It still holds true.:)
</p>
8776 <li>Lightweight (around
1 kg) and small volume (preferably smaller
8778 <li>Robust, it will be in my backpack every day.
</li>
8779 <li>Three button mouse and a mouse pin instead of touch pad.
</li>
8780 <li>Long battery life time. Preferable a week.
</li>
8781 <li>Internal WIFI network card.
</li>
8782 <li>Internal Twisted Pair network card.
</li>
8783 <li>Some USB slots (
2-
3 is plenty)
</li>
8784 <li>Good keyboard - similar to the Thinkpad.
</li>
8785 <li>Video resolution at least
1024x768, with size around
12" (A4 paper
8787 <li>Hardware supported by Debian Stable, ie the default kernel and
8788 X.org packages.
</li>
8789 <li>Quiet, preferably fan free (or at least not using the fan most of
8794 <p>You will notice that there are no RAM and CPU requirements in the
8795 list. The reason is simply that the specifications on laptops the
8796 last
10-
15 years have been sufficient for my needs, and I have to look
8797 at other features to choose my laptop. But are there still made as
8798 robust laptops as my X41? The Thinkpad X60/X61 proved to be less
8799 robust, and Thinkpads seem to be heading in the wrong direction since
8800 Lenovo took over. But I've been told that X220 and X1 Carbon might
8801 still be useful.
</p>
8803 <p>Perhaps I should rethink my needs, and look for a pad with an
8804 external keyboard? I'll have to check the
8805 <a href=
"http://www.linux-laptop.net/">Linux Laptops site
</a> for
8806 well-supported laptops, or perhaps just buy one preinstalled from one
8807 of the vendors listed on the
<a href=
"http://linuxpreloaded.com/">Linux
8808 Pre-loaded site
</a>.
</p>
8814 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8819 <div class=
"padding"></div>
8823 <a href=
"http://people.skolelinux.org/pere/blog/How_to_find_a_browser_plugin_supporting_a_given_MIME_type.html">How to find a browser plugin supporting a given MIME type
</a>
8829 <p>Some times I try to figure out which Iceweasel browser plugin to
8830 install to get support for a given MIME type. Thanks to
8831 <a href=
"https://wiki.ubuntu.com/MozillaTeam/Plugins">specifications
8832 done by Ubuntu
</a> and Mozilla, it is possible to do this in Debian.
8833 Unfortunately, not very many packages provide the needed meta
8834 information, Anyway, here is a small script to look up all browser
8835 plugin packages announcing ther MIME support using this specification:
</p>
8841 def pkgs_handling_mimetype(mimetype):
8846 version = pkg.candidate
8848 version = pkg.installed
8851 record = version.record
8852 if not record.has_key('Npp-MimeType'):
8854 mime_types = record['Npp-MimeType'].split(',')
8855 for t in mime_types:
8856 t = t.rstrip().strip()
8858 thepkgs.append(pkg.name)
8860 mimetype = "audio/ogg"
8861 if
1 < len(sys.argv):
8862 mimetype = sys.argv[
1]
8863 print "Browser plugin packages supporting %s:" % mimetype
8864 for pkg in pkgs_handling_mimetype(mimetype):
8868 <p>It can be used like this to look up a given MIME type:
</p>
8871 % ./apt-find-browserplug-for-mimetype
8872 Browser plugin packages supporting audio/ogg:
8874 % ./apt-find-browserplug-for-mimetype application/x-shockwave-flash
8875 Browser plugin packages supporting application/x-shockwave-flash:
8876 browser-plugin-gnash
8880 <p>In Ubuntu this mechanism is combined with support in the browser
8881 itself to query for plugins and propose to install the needed
8882 packages. It would be great if Debian supported such feature too. Is
8883 anyone working on adding it?
</p>
8885 <p><strong>Update
2013-
01-
18 14:
20</strong>: The Debian BTS
8886 request for icweasel support for this feature is
8887 <a href=
"http://bugs.debian.org/484010">#
484010</a> from
2008 (and
8888 <a href=
"http://bugs.debian.org/698426">#
698426</a> from today). Lack
8889 of manpower and wish for a different design is the reason thus feature
8890 is not yet in iceweasel from Debian.
</p>
8896 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
8901 <div class=
"padding"></div>
8905 <a href=
"http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">What is the most supported MIME type in Debian?
</a>
8911 <p>The
<a href=
"http://wiki.debian.org/AppStreamDebianProposal">DEP-
11
8912 proposal to add AppStream information to the Debian archive
</a>, is a
8913 proposal to make it possible for a Desktop application to propose to
8914 the user some package to install to gain support for a given MIME
8915 type, font, library etc. that is currently missing. With such
8916 mechanism in place, it would be possible for the desktop to
8917 automatically propose and install leocad if some LDraw file is
8918 downloaded by the browser.
</p>
8920 <p>To get some idea about the current content of the archive, I decided
8921 to write a simple program to extract all .desktop files from the
8922 Debian archive and look up the claimed MIME support there. The result
8924 <a href=
"http://ftp.skolelinux.org/pub/AppStreamTest">Skolelinux FTP
8925 site
</a>. Using the collected information, it become possible to
8926 answer the question in the title. Here are the
20 most supported MIME
8927 types in Debian stable (Squeeze), testing (Wheezy) and unstable (Sid).
8928 The complete list is available from the link above.
</p>
8930 <p><strong>Debian Stable:
</strong></p>
8934 ----- -----------------------
8950 18 application/x-ogg
8957 <p><strong>Debian Testing:
</strong></p>
8961 ----- -----------------------
8977 18 application/x-ogg
8984 <p><strong>Debian Unstable:
</strong></p>
8988 ----- -----------------------
9005 18 application/x-ogg
9011 <p>I am told that PackageKit can provide an API to access the kind of
9012 information mentioned in DEP-
11. I have not yet had time to look at
9013 it, but hope the PackageKit people in Debian are on top of these
9016 <p><strong>Update
2013-
01-
16 13:
35</strong>: Updated numbers after
9017 discovering a typo in my script.
</p>
9023 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9028 <div class=
"padding"></div>
9032 <a href=
"http://people.skolelinux.org/pere/blog/Using_modalias_info_to_find_packages_handling_my_hardware.html">Using modalias info to find packages handling my hardware
</a>
9038 <p>Yesterday, I wrote about the
9039 <a href=
"http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">modalias
9040 values provided by the Linux kernel
</a> following my hope for
9041 <a href=
"http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html">better
9042 dongle support in Debian
</a>. Using this knowledge, I have tested how
9043 modalias values attached to package names can be used to map packages
9044 to hardware. This allow the system to look up and suggest relevant
9045 packages when I plug in some new hardware into my machine, and replace
9046 discover and discover-data as the database used to map hardware to
9049 <p>I create a modaliases file with entries like the following,
9050 containing package name, kernel module name (if relevant, otherwise
9051 the package name) and globs matching the relevant hardware
9055 Package: package-name
9056 <br>Modaliases: module(modaliasglob, modaliasglob, modaliasglob)
</p>
9059 <p>It is fairly trivial to write code to find the relevant packages
9060 for a given modalias value using this file.
</p>
9062 <p>An entry like this would suggest the video and picture application
9063 cheese for many USB web cameras (interface bus class
0E01):
</p>
9067 <br>Modaliases: cheese(usb:v*p*d*dc*dsc*dp*ic0Eisc01ip*)
</p>
9070 <p>An entry like this would suggest the pcmciautils package when a
9071 CardBus bridge (bus class
0607) PCI device is present:
</p>
9074 Package: pcmciautils
9075 <br>Modaliases: pcmciautils(pci:v*d*sv*sd*bc06sc07i*)
9078 <p>An entry like this would suggest the package colorhug-client when
9079 plugging in a ColorHug with USB IDs
04D8:F8DA:
</p>
9082 Package: colorhug-client
9083 <br>Modaliases: colorhug-client(usb:v04D8pF8DAd*)
</p>
9086 <p>I believe the format is compatible with the format of the Packages
9087 file in the Debian archive. Ubuntu already uses their Packages file
9088 to store their mappings from packages to hardware.
</p>
9090 <p>By adding a XB-Modaliases: header in debian/control, any .deb can
9091 announce the hardware it support in a way my prototype understand.
9092 This allow those publishing packages in an APT source outside the
9093 Debian archive as well as those backporting packages to make sure the
9094 hardware mapping are included in the package meta information. I've
9095 tested such header in the pymissile package, and its modalias mapping
9096 is working as it should with my prototype. It even made it to Ubuntu
9099 <p>To test if it was possible to look up supported hardware using only
9100 the shell tools available in the Debian installer, I wrote a shell
9101 implementation of the lookup code. The idea is to create files for
9102 each modalias and let the shell do the matching. Please check out and
9104 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/hw-support-lookup?view=co">hw-support-lookup
</a>
9105 shell script. It run without any extra dependencies and fetch the
9106 hardware mappings from the Debian archive and the subversion
9107 repository where I currently work on my prototype.
</p>
9109 <p>When I use it on a machine with a yubikey inserted, it suggest to
9110 install yubikey-personalization:
</p>
9113 % ./hw-support-lookup
9114 <br>yubikey-personalization
9118 <p>When I run it on my Thinkpad X40 with a PCMCIA/CardBus slot, it
9119 propose to install the pcmciautils package:
</p>
9122 % ./hw-support-lookup
9127 <p>If you know of any hardware-package mapping that should be added to
9128 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/modaliases?view=co">my
9129 database
</a>, please tell me about it.
</p>
9131 <p>It could be possible to generate several of the mappings between
9132 packages and hardware. One source would be to look at packages with
9133 kernel modules, ie packages with *.ko files in /lib/modules/, and
9134 extract their modalias information. Another would be to look at
9135 packages with udev rules, ie packages with files in
9136 /lib/udev/rules.d/, and extract their vendor/model information to
9137 generate a modalias matching rule. I have not tested any of these to
9140 <p>If you want to help implementing a system to let us propose what
9141 packages to install when new hardware is plugged into a Debian
9142 machine, please send me an email or talk to me on
9143 <a href=
"irc://irc.debian.org/%23debian-devel">#debian-devel
</a>.
</p>
9149 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
9154 <div class=
"padding"></div>
9158 <a href=
"http://people.skolelinux.org/pere/blog/Modalias_strings___a_practical_way_to_map__stuff__to_hardware.html">Modalias strings - a practical way to map "stuff" to hardware
</a>
9164 <p>While looking into how to look up Debian packages based on hardware
9165 information, to find the packages that support a given piece of
9166 hardware, I refreshed my memory regarding modalias values, and decided
9167 to document the details. Here are my findings so far, also available
9169 <a href=
"http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/">the
9170 Debian Edu subversion repository
</a>:
9172 <p><strong>Modalias decoded
</strong></p>
9174 <p>This document try to explain what the different types of modalias
9175 values stands for. It is in part based on information from
9176 <URL:
<a href=
"https://wiki.archlinux.org/index.php/Modalias">https://wiki.archlinux.org/index.php/Modalias
</a> >,
9177 <URL:
<a href=
"http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device">http://unix.stackexchange.com/questions/
26132/how-to-assign-usb-driver-to-device
</a> >,
9178 <URL:
<a href=
"http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c">http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c
</a> > and
9179 <URL:
<a href=
"http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup">http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup
</a> >.
9181 <p>The modalias entries for a given Linux machine can be found using
9182 this shell script:
</p>
9185 find /sys -name modalias -print0 | xargs -
0 cat | sort -u
9188 <p>The supported modalias globs for a given kernel module can be found
9192 % /sbin/modinfo psmouse | grep alias:
9193 alias: serio:ty05pr*id*ex*
9194 alias: serio:ty01pr*id*ex*
9198 <p><strong>PCI subtype
</strong></p>
9200 <p>A typical PCI entry can look like this. This is an Intel Host
9201 Bridge memory controller:
</p>
9204 pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00
9207 <p>This represent these values:
</p>
9212 sv
00001028 (subvendor)
9213 sd
000001AD (subdevice)
9215 sc
00 (bus subclass)
9219 <p>The vendor/device values are the same values outputted from 'lspci
9220 -n' as
8086:
2770. The bus class/subclass is also shown by lspci as
9221 0600. The
0600 class is a host bridge. Other useful bus values are
9222 0300 (VGA compatible card) and
0200 (Ethernet controller).
</p>
9224 <p>Not sure how to figure out the interface value, nor what it
9227 <p><strong>USB subtype
</strong></p>
9229 <p>Some typical USB entries can look like this. This is an internal
9230 USB hub in a laptop:
</p>
9233 usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00
9236 <p>Here is the values included in this alias:
</p>
9239 v
1D6B (device vendor)
9240 p
0001 (device product)
9242 dc
09 (device class)
9243 dsc
00 (device subclass)
9244 dp
00 (device protocol)
9245 ic
09 (interface class)
9246 isc
00 (interface subclass)
9247 ip
00 (interface protocol)
9250 <p>The
0900 device class/subclass means hub. Some times the relevant
9251 class is in the interface class section. For a simple USB web camera,
9252 these alias entries show up:
</p>
9255 usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00
9256 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00
9257 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00
9258 <br>usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00
9261 <p>Interface class
0E01 is video control,
0E02 is video streaming (aka
9262 camera),
0101 is audio control device and
0102 is audio streaming (aka
9263 microphone). Thus this is a camera with microphone included.
</p>
9265 <p><strong>ACPI subtype
</strong></p>
9267 <p>The ACPI type is used for several non-PCI/USB stuff. This is an IR
9268 receiver in a Thinkpad X40:
</p>
9271 acpi:IBM0071:PNP0511:
9274 <p>The values between the colons are IDs.
</p>
9276 <p><strong>DMI subtype
</strong></p>
9278 <p>The DMI table contain lots of information about the computer case
9279 and model. This is an entry for a IBM Thinkpad X40, fetched from
9280 /sys/devices/virtual/dmi/id/modalias:
</p>
9283 dmi:bvnIBM:bvr1UETB6WW(
1.66):bd06/
15/
2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
9286 <p>The values present are
</p>
9289 bvn IBM (BIOS vendor)
9290 bvr
1UETB
6WW(
1.66) (BIOS version)
9291 bd
06/
15/
2005 (BIOS date)
9292 svn IBM (system vendor)
9293 pn
2371H4G (product name)
9294 pvr ThinkPadX40 (product version)
9295 rvn IBM (board vendor)
9296 rn
2371H4G (board name)
9297 rvr NotAvailable (board version)
9298 cvn IBM (chassis vendor)
9299 ct
10 (chassis type)
9300 cvr NotAvailable (chassis version)
9303 <p>The chassis type
10 is Notebook. Other interesting values can be
9304 found in the dmidecode source:
</p>
9308 4 Low Profile Desktop
9321 17 Main Server Chassis
9322 18 Expansion Chassis
9324 20 Bus Expansion Chassis
9325 21 Peripheral Chassis
9327 23 Rack Mount Chassis
9336 <p>The chassis type values are not always accurately set in the DMI
9337 table. For example my home server is a tower, but the DMI modalias
9338 claim it is a desktop.
</p>
9340 <p><strong>SerIO subtype
</strong></p>
9342 <p>This type is used for PS/
2 mouse plugs. One example is from my
9346 serio:ty01pr00id00ex00
9349 <p>The values present are
</p>
9358 <p>This type is supported by the psmouse driver. I am not sure what
9359 the valid values are.
</p>
9361 <p><strong>Other subtypes
</strong></p>
9363 <p>There are heaps of other modalias subtypes according to
9364 file2alias.c. There is the rest of the list from that source: amba,
9365 ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp,
9366 mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio,
9367 vmbus, x86cpu and zorro. I did not spend time documenting all of
9368 these, as they do not seem relevant for my intended use with mapping
9369 hardware to packages when new stuff is inserted during run time.
</p>
9371 <p><strong>Looking up kernel modules using modalias values
</strong></p>
9373 <p>To check which kernel modules provide support for a given modalias,
9374 one can use the following shell script:
</p>
9377 for id in $(find /sys -name modalias -print0 | xargs -
0 cat | sort -u); do \
9379 /sbin/modprobe --show-depends "$id"|sed 's/^/ /' ; \
9383 <p>The output can look like this (only the first few entries as the
9384 list is very long on my test machine):
</p>
9388 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/acpi/ac.ko
9390 FATAL: Module acpi:device: not found.
9392 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/char/nvram.ko
9393 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/leds/led-class.ko
9394 insmod /lib/modules/
2.6.32-
5-
686/kernel/net/rfkill/rfkill.ko
9395 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/platform/x86/thinkpad_acpi.ko
9396 acpi:IBM0071:PNP0511:
9397 insmod /lib/modules/
2.6.32-
5-
686/kernel/lib/crc-ccitt.ko
9398 insmod /lib/modules/
2.6.32-
5-
686/kernel/net/irda/irda.ko
9399 insmod /lib/modules/
2.6.32-
5-
686/kernel/drivers/net/irda/nsc-ircc.ko
9403 <p>If you want to help implementing a system to let us propose what
9404 packages to install when new hardware is plugged into a Debian
9405 machine, please send me an email or talk to me on
9406 <a href=
"irc://irc.debian.org/%23debian-devel">#debian-devel
</a>.
</p>
9408 <p><strong>Update
2013-
01-
15:
</strong> Rewrite "cat $(find ...)" to
9409 "find ... -print0 | xargs -
0 cat" to make sure it handle directories
9410 in /sys/ with space in them.
</p>
9416 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
9421 <div class=
"padding"></div>
9425 <a href=
"http://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html">Moved the pymissile Debian packaging to collab-maint
</a>
9431 <p>As part of my investigation on how to improve the support in Debian
9432 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
9433 Launcher and updated the Debian package
9434 <a href=
"http://packages.qa.debian.org/pymissile">pymissile
</a> to make
9435 sure udev will fix the device permissions when it is plugged in. I
9436 also added a "Modaliases" header to test it in the Debian archive and
9437 hopefully make the package be proposed by jockey in Ubuntu when a user
9438 plug in his rocket launcher. In the process I moved the source to a
9439 git repository under collab-maint, to make it easier for any DD to
9440 contribute.
<a href=
"http://code.google.com/p/pymissile/">Upstream
</a>
9441 is not very active, but the software still work for me even after five
9442 years of relative silence. The new git repository is not listed in
9443 the uploaded package yet, because I want to test the other changes a
9444 bit more before I upload the new version. If you want to check out
9445 the new version with a .desktop file included, visit the
9446 <a href=
"http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git">gitweb
9447 view
</a> or use "
<tt>git clone
9448 git://anonscm.debian.org/collab-maint/pymissile.git
</tt>".</p>
9454 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram</a>, <a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot</a>.
9459 <div class="padding
"></div>
9463 <a href="http://people.skolelinux.org/pere/blog/Lets_make_hardware_dongles_easier_to_use_in_Debian.html
">Lets make hardware dongles easier to use in Debian</a>
9469 <p>One thing that annoys me with Debian and Linux distributions in
9470 general, is that there is a great package management system with the
9471 ability to automatically install software packages by downloading them
9472 from the distribution mirrors, but no way to get it to automatically
9473 install the packages I need to use the hardware I plug into my
9474 machine. Even if the package to use it is easily available from the
9475 Linux distribution. When I plug in a LEGO Mindstorms NXT, it could
9476 suggest to automatically install the python-nxt, nbc and t2n packages
9477 I need to talk to it. When I plug in a Yubikey, it could propose the
9478 yubikey-personalization package. The information required to do this
9479 is available, but no-one have pulled all the pieces together.</p>
9481 <p>Some years ago, I proposed to
9482 <a href="http://lists.debian.org/debian-devel/
2010/
05/msg01206.html
">use
9483 the discover subsystem to implement this</a>. The idea is fairly
9488 <li>Add a desktop entry in /usr/share/autostart/ pointing to a program
9489 starting when a user log in.</li>
9491 <li>Set this program up to listen for kernel events emitted when new
9492 hardware is inserted into the computer.</li>
9494 <li>When new hardware is inserted, look up the hardware ID in a
9495 database mapping to packages, and take note of any non-installed
9498 <li>Show a message to the user proposing to install the discovered
9499 package, and make it easy to install it.</li>
9503 <p>I am not sure what the best way to implement this is, but my
9504 initial idea was to use dbus events to discover new hardware, the
9505 discover database to find packages and
9506 <a href="http://www.packagekit.org/
">PackageKit</a> to install
9509 <p>Yesterday, I found time to try to implement this idea, and the
9510 draft package is now checked into
9511 <a href="http://anonscm.debian.org/viewvc/debian-edu/trunk/src/hw-support-handler/
">the
9512 Debian Edu subversion repository</a>. In the process, I updated the
9513 <a href="http://packages.qa.debian.org/d/discover-data.html
">discover-data</a>
9514 package to map the USB ids of LEGO Mindstorms and Yubikey devices to
9515 the relevant packages in Debian, and uploaded a new version
9516 2.2013.01.09 to unstable. I also discovered that the current
9517 <a href="http://packages.qa.debian.org/d/discover.html
">discover</a>
9518 package in Debian no longer discovered any USB devices, because
9519 /proc/bus/usb/devices is no longer present. I ported it to use
9520 libusb as a fall back option to get it working. The fixed package
9521 version 2.1.2-6 is now in experimental (didn't upload it to unstable
9522 because of the freeze).</p>
9524 <p>With this prototype in place, I can insert my Yubikey, and get this
9525 desktop notification to show up (only once, the first time it is
9528 <p align="center
"><img src="http://people.skolelinux.org/pere/blog/images/
2013-
01-
09-hw-autoinstall.png
"></p>
9530 <p>For this prototype to be really useful, some way to automatically
9531 install the proposed packages by pressing the "Please install
9532 program(s)" button should to be implemented.
</p>
9534 <p>If this idea seem useful to you, and you want to help make it
9535 happen, please help me update the discover-data database with mappings
9536 from hardware to Debian packages. Check if 'discover-pkginstall -l'
9537 list the package you would like to have installed when a given
9538 hardware device is inserted into your computer, and report bugs using
9539 reportbug if it isn't. Or, if you know of a better way to provide
9540 such mapping, please let me know.
</p>
9542 <p>This prototype need more work, and there are several questions that
9543 should be considered before it is ready for production use. Is dbus
9544 the correct way to detect new hardware? At the moment I look for HAL
9545 dbus events on the system bus, because that is the events I could see
9546 on my Debian Squeeze KDE desktop. Are there better events to use?
9547 How should the user be notified? Is the desktop notification
9548 mechanism the best option, or should the background daemon raise a
9549 popup instead? How should packages be installed? When should they
9550 not be installed?
</p>
9552 <p>If you want to help getting such feature implemented in Debian,
9553 please send me an email. :)
</p>
9559 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>.
9564 <div class=
"padding"></div>
9568 <a href=
"http://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">New IRC channel for LEGO designers using Debian
</a>
9574 <p>During Christmas, I have worked a bit on the Debian support for
9575 <a href=
"http://mindstorms.lego.com/en-us/Default.aspx">LEGO Mindstorm
9576 NXT
</a>. My son and I have played a bit with my NXT set, and I
9577 discovered I had to build all the tools myself because none were
9578 already in Debian Squeeze. If Debian support for LEGO is something
9579 you care about, please join me on the IRC channel
9580 <a href=
"irc://irc.debian.org/%23debian-lego">#debian-lego
</a> (server
9581 irc.debian.org). There is a lot that could be done to improve the
9582 Debian support for LEGO designers. For example both CAD software
9583 and Mindstorm compilers are missing. :)
</p>
9585 <p>Update
2012-
01-
03: A
9586 <a href=
"http://wiki.debian.org/LegoDesigners">project page
</a>
9587 including links to Lego related packages is now available.
</p>
9593 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot
</a>.
9598 <div class=
"padding"></div>
9602 <a href=
"http://people.skolelinux.org/pere/blog/How_to_backport_bitcoin_qt_version_0_7_2_2_to_Debian_Squeeze.html">How to backport bitcoin-qt version
0.7.2-
2 to Debian Squeeze
</a>
9608 <p>Let me start by wishing you all marry Christmas and a happy new
9609 year! I hope next year will prove to be a good year.
</p>
9611 <p><a href=
"http://www.bitcoin.org/">Bitcoin
</a>, the digital
9612 decentralised "currency" that allow people to transfer bitcoins
9613 between each other with minimal overhead, is a very interesting
9614 experiment. And as I wrote a few days ago, the bitcoin situation in
9615 <a href=
"http://www.debian.org/">Debian
</a> is about to improve a bit.
9616 The
<a href=
"http://packages.qa.debian.org/bitcoin">new debian source
9617 package
</a> (version
0.7.2-
2) was uploaded yesterday, and is waiting
9618 in
<a href=
"http://ftp-master.debian.org/new.html">the NEW queue
</A>
9619 for one of the ftpmasters to approve the new bitcoin-qt package
9622 <p>And thanks to the great work of Jonas and the rest of the bitcoin
9623 team in Debian, you can easily test the package in Debian Squeeze
9624 using the following steps to get a set of working packages:
</p>
9627 git clone git://git.debian.org/git/collab-maint/bitcoin
9629 DEB_MAINTAINER_MODE=
1 DEB_BUILD_OPTIONS=noupnp fakeroot debian/rules clean
9630 DEB_BUILD_OPTIONS=noupnp git-buildpackage --git-ignore-new
9633 <p>You might have to install some build dependencies as well. The
9634 list of commands should give you two packages, bitcoind and
9635 bitcoin-qt, ready for use in a Squeeze environment. Note that the
9636 client will download the complete set of bitcoin "blocks", which need
9637 around
5.6 GiB of data on my machine at the moment. Make sure your
9638 ~/.bitcoin/ directory have lots of spare room if you want to download
9639 all the blocks. The client will warn if the disk is getting full, so
9640 there is not really a problem if you got too little room, but you will
9641 not be able to get all the features out of the client.
</p>
9643 <p>As usual, if you use bitcoin and want to show your support of my
9644 activities, please send Bitcoin donations to my address
9645 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
9651 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9656 <div class=
"padding"></div>
9660 <a href=
"http://people.skolelinux.org/pere/blog/A_word_on_bitcoin_support_in_Debian.html">A word on bitcoin support in Debian
</a>
9666 <p>It has been a while since I wrote about
9667 <a href=
"http://www.bitcoin.org/">bitcoin
</a>, the decentralised
9668 peer-to-peer based crypto-currency, and the reason is simply that I
9669 have been busy elsewhere. But two days ago, I started looking at the
9670 state of
<a href=
"http://packages.qa.debian.org/bitcoin">bitcoin in
9671 Debian
</a> again to try to recover my old bitcoin wallet. The package
9672 is now maintained by a
9673 <a href=
"https://alioth.debian.org/projects/pkg-bitcoin/">team of
9674 people
</a>, and the grunt work had already been done by this team. We
9675 owe a huge thank you to all these team members. :)
9676 But I was sad to discover that the bitcoin client is missing in
9677 Wheezy. It is only available in Sid (and an outdated client from
9678 backports). The client had several RC bugs registered in BTS blocking
9679 it from entering testing. To try to help the team and improve the
9680 situation, I spent some time providing patches and triaging the bug
9681 reports. I also had a look at the bitcoin package available from Matt
9683 <a href=
"https://launchpad.net/~bitcoin/+archive/bitcoin">PPA for
9684 Ubuntu
</a>, and moved the useful pieces from that version into the
9687 <p>After checking with the main package maintainer Jonas Smedegaard on
9688 IRC, I pushed several patches into the collab-maint git repository to
9689 improve the package. It now contains fixes for the RC issues (not from
9690 me, but fixed by Scott Howard), build rules for a Qt GUI client
9691 package, konqueror support for the bitcoin: URI and bash completion
9692 setup. As I work on Debian Squeeze, I also created
9693 <a href=
"http://lists.alioth.debian.org/pipermail/pkg-bitcoin-devel/Week-of-Mon-20121217/000041.html">a
9694 patch to backport
</a> the latest version. Jonas is going to look at
9695 it and try to integrate it into the git repository before uploading a
9696 new version to unstable.
9698 <p>I would very much like bitcoin to succeed, to get rid of the
9699 centralized control currently exercised in the monetary system. I
9700 find it completely unacceptable that the USA government is collecting
9701 transaction data for almost all international money transfers (most are done in USD and transaction logs shipped to the spooks), and
9702 that the major credit card companies can block legal money
9703 transactions to Wikileaks. But for bitcoin to succeed, more people
9704 need to use bitcoins, and more people need to accept bitcoins when
9705 they sell products and services. Improving the bitcoin support in
9706 Debian is a small step in the right direction, but not enough.
9707 Unfortunately the user experience when browsing the web and wanting to
9708 pay with bitcoin is still not very good. The bitcoin: URI is a step
9709 in the right direction, but need to work in most or every browser in
9710 use. Also the bitcoin-qt client is too heavy to fire up to do a
9711 quick transaction. I believe there are other clients available, but
9712 have not tested them.
</p>
9715 <a href=
"http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">experiment
9716 with bitcoins
</a> showed that at least some of my readers use bitcoin.
9717 I received
20.15 BTC so far on the address I provided in my blog two
9718 years ago, as can be
9719 <a href=
"http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">seen
9720 on the blockexplorer service
</a>. Thank you everyone for your
9721 donation. The blockexplorer service demonstrates quite well that
9722 bitcoin is not quite anonymous and untracked. :) I wonder if the
9723 number of users have gone up since then. If you use bitcoin and want
9724 to show your support of my activity, please send Bitcoin donations to
9725 the same address as last time,
9726 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
9732 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
9737 <div class=
"padding"></div>
9741 <a href=
"http://people.skolelinux.org/pere/blog/Git_repository_for_song_book_for_Computer_Scientists.html">Git repository for song book for Computer Scientists
</a>
9748 <a href=
"http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">mentioned
9749 this summer
</a>, I have created a Computer Science song book a few
9750 years ago, and today I finally found time to create a public
9751 <a href=
"https://gitorious.org/pere-cs-songbook/pere-cs-songbook">Gitorious
9752 repository for the project
</a>.
</p>
9754 <p>If you want to help out, please clone the source and submit patches
9755 to the HTML version. To generate the PDF and PostScript version,
9756 please use prince XML, or let me know about a useful free software
9757 processor capable of creating a good looking PDF from the HTML.
</p>
9759 <p>Want to sing? You can still find the song book in HTML, PDF and
9760 PostScript formats at
9761 <a href=
"http://www.hungry.com/~pere/cs-songbook/">Petter's Computer
9762 Science Songbook
</a>.
</p>
9768 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
9773 <div class=
"padding"></div>
9777 <a href=
"http://people.skolelinux.org/pere/blog/Gratulerer_med_19__rsdagen__Debian_.html">Gratulerer med
19-årsdagen, Debian!
</a>
9784 <a href=
"http://www.debian.org/News/2012/20120813">Debian-prosjektet
19
9785 år
</a>. Jeg har fulgt det de siste
12 årene, og er veldig glad for å kunne
9786 si gratulerer med dagen, Debian!
</p>
9792 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
9797 <div class=
"padding"></div>
9801 <a href=
"http://people.skolelinux.org/pere/blog/Song_book_for_Computer_Scientists.html">Song book for Computer Scientists
</a>
9807 <p>Many years ago, while studying Computer Science at the
9808 <a href=
"http://www.uit.no/">University of Tromsø
</a>, I started
9809 collecting computer related songs for use at parties. The original
9810 version was written in LaTeX, but a few years ago I got help from
9811 Håkon W. Lie, one of the inventors of W3C CSS, to convert it to HTML
9812 while keeping the ability to create a nice book in PDF format. I have
9813 not had time to maintain the book for a while now, and guess I should
9814 put it up on some public version control repository where others can
9815 help me extend and update the book. If anyone is volunteering to help
9816 me with this, send me an email. Also let me know if there are songs
9817 missing in my book.
</p>
9819 <p>I have not mentioned the book on my blog so far, and it occured to
9820 me today that I really should let all my readers share the joys of
9821 singing out load about programming, computers and computer networks.
9822 Especially now that
<a href=
"http://debconf12.debconf.org/">Debconf
9823 12</a> is about to start (and I am not going). Want to sing? Check
9824 out
<a href=
"http://www.hungry.com/~pere/cs-songbook/">Petter's
9825 Computer Science Songbook
</a>.
9831 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
9836 <div class=
"padding"></div>
9840 <a href=
"http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html">Automatically upgrading server firmware on Dell PowerEdge
</a>
9846 <p>At work we have heaps of servers. I believe the total count is
9847 around
1000 at the moment. To be able to get help from the vendors
9848 when something go wrong, we want to keep the firmware on the servers
9849 up to date. If the firmware isn't the latest and greatest, the
9850 vendors typically refuse to start debugging any problems until the
9851 firmware is upgraded. So before every reboot, we want to upgrade the
9852 firmware, and we would really like everyone handling servers at the
9853 university to do this themselves when they plan to reboot a machine.
9854 For that to happen we at the unix server admin group need to provide
9855 the tools to do so.
</p>
9857 <p>To make firmware upgrading easier, I am working on a script to
9858 fetch and install the latest firmware for the servers we got. Most of
9859 our hardware are from Dell and HP, so I have focused on these servers
9860 so far. This blog post is about the Dell part.
</P>
9862 <p>On the Dell FTP site I was lucky enough to find
9863 <a href=
"ftp://ftp.us.dell.com/catalog/Catalog.xml.gz">an XML file
</a>
9864 with firmware information for all
11th generation servers, listing
9865 which firmware should be used on a given model and where on the FTP
9866 site I can find it. Using a simple perl XML parser I can then
9867 download the shell scripts Dell provides to do firmware upgrades from
9868 within Linux and reboot when all the firmware is primed and ready to
9869 be activated on the first reboot.
</p>
9871 <p>This is the Dell related fragment of the perl code I am working on.
9872 Are there anyone working on similar tools for firmware upgrading all
9873 servers at a site? Please get in touch and lets share resources.
</p>
9879 use File::Temp qw(tempdir);
9881 # Install needed RHEL packages if missing
9883 'XML::Simple' =
> 'perl-XML-Simple',
9885 for my $module (keys %rhelmodules) {
9886 eval "use $module;";
9888 my $pkg = $rhelmodules{$module};
9889 system("yum install -y $pkg");
9890 eval "use $module;";
9894 my $errorsto = 'pere@hungry.com';
9900 sub run_firmware_script {
9901 my ($opts, $script) = @_;
9903 print STDERR "fail: missing script name\n";
9906 print STDERR "Running $script\n\n";
9908 if (
0 == system("sh $script $opts")) { # FIXME correct exit code handling
9909 print STDERR "success: firmware script ran succcessfully\n";
9911 print STDERR "fail: firmware script returned error\n";
9915 sub run_firmware_scripts {
9916 my ($opts, @dirs) = @_;
9917 # Run firmware packages
9918 for my $dir (@dirs) {
9919 print STDERR "info: Running scripts in $dir\n";
9920 opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
9921 while (my $s = readdir $dh) {
9922 next if $s =~ m/^\.\.?/;
9923 run_firmware_script($opts, "$dir/$s");
9931 print STDERR "info: Downloading $url\n";
9932 system("wget --quiet \"$url\"");
9937 my $product = `dmidecode -s system-product-name`;
9940 if ($product =~ m/PowerEdge/) {
9942 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
9943 system('yum install -y compat-libstdc++-
33.i686 libstdc++.i686 libxml2.i686 procmail');
9945 my $tmpdir = tempdir(
9949 fetch_dell_fw('catalog/Catalog.xml.gz');
9950 system('gunzip Catalog.xml.gz');
9951 my @paths = fetch_dell_fw_list('Catalog.xml');
9952 # -q is quiet, disabling interactivity and reducing console output
9955 for my $url (@paths) {
9956 fetch_dell_fw($url);
9958 run_firmware_scripts($fwopts, $tmpdir);
9960 print STDERR
"error: Unsupported Dell model '$product'.\n";
9961 print STDERR
"error: Please report to $errorsto.\n";
9965 print STDERR
"error: Unsupported Dell model '$product'.\n";
9966 print STDERR
"error: Please report to $errorsto.\n";
9972 my $url =
"ftp://ftp.us.dell.com/$path";
9976 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
9977 # firmware packages to download from Dell. Only work for Linux
9978 # machines and
11th generation Dell servers.
9979 sub fetch_dell_fw_list {
9980 my $filename = shift;
9982 my $product = `dmidecode -s system-product-name`;
9984 my ($mybrand, $mymodel) = split(/\s+/, $product);
9986 print STDERR
"Finding firmware bundles for $mybrand $mymodel\n";
9988 my $xml = XMLin($filename);
9990 for my $bundle (@{$xml-
>{SoftwareBundle}}) {
9991 my $brand = $bundle-
>{TargetSystems}-
>{Brand}-
>{Display}-
>{content};
9992 my $model = $bundle-
>{TargetSystems}-
>{Brand}-
>{Model}-
>{Display}-
>{content};
9994 if ("ARRAY" eq ref $bundle-
>{TargetOSes}-
>{OperatingSystem}) {
9995 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}[
0]-
>{osCode};
9997 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}-
>{osCode};
9999 if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
10001 @paths = map { $_-
>{path} } @{$bundle-
>{Contents}-
>{Package}};
10004 for my $component (@{$xml-
>{SoftwareComponent}}) {
10005 my $componenttype = $component-
>{ComponentType}-
>{value};
10007 # Drop application packages, only firmware and BIOS
10008 next if 'APAC' eq $componenttype;
10010 my $cpath = $component-
>{path};
10011 for my $path (@paths) {
10012 if ($cpath =~ m%/$path$%) {
10013 push(@paths, $cpath);
10021 <p>The code is only tested on RedHat Enterprise Linux, but I suspect
10022 it could work on other platforms with some tweaking. Anyone know a
10023 index like Catalog.xml is available from HP for HP servers? At the
10024 moment I maintain a similar list manually and it is quickly getting
10031 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
10036 <div class=
"padding"></div>
10038 <div class=
"entry">
10039 <div class=
"title">
10040 <a href=
"http://people.skolelinux.org/pere/blog/How_is_booting_into_runlevel_1_different_from_single_user_boots_.html">How is booting into runlevel
1 different from single user boots?
</a>
10046 <p>Wouter Verhelst have some
10047 <a href=
"http://grep.be/blog/en/retorts/pere_kubuntu_boot">interesting
10048 comments and opinions
</a> on my blog post on
10049 <a href=
"http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html">the
10050 need to clean up /etc/rcS.d/ in Debian
</a> and my blog post about
10051 <a href=
"http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html">the
10052 default KDE desktop in Debian
</a>. I only have time to address one
10053 small piece of his comment now, and though it best to address the
10054 misunderstanding he bring forward:
</p>
10057 Currently, a system admin has four options: [...] boot to a
10058 single-user system (by adding 'single' to the kernel command line;
10059 this runs rcS and rc1 scripts)
10062 <p>This make me believe Wouter believe booting into single user mode
10063 and booting into runlevel
1 is the same. I am not surprised he
10064 believe this, because it would make sense and is a quite sensible
10065 thing to believe. But because the boot in Debian is slightly broken,
10066 runlevel
1 do not work properly and it isn't the same as single user
10067 mode. I'll try to explain what is actually happing, but it is a bit
10068 hard to explain.
</p>
10070 <p>Single user mode is defined like this in /etc/inittab:
10071 "
<tt>~~:S:wait:/sbin/sulogin
</tt>". This means the only thing that is
10072 executed in single user mode is sulogin. Single user mode is a boot
10073 state "between
" the runlevels, and when booting into single user mode,
10074 only the scripts in /etc/rcS.d/ are executed before the init process
10075 enters the single user state. When switching to runlevel 1, the state
10076 is in fact not ending in runlevel 1, but it passes through runlevel 1
10077 and end up in the single user mode (see /etc/rc1.d/S03single, which
10078 runs "init -t1 S
" to switch to single user mode at the end of runlevel
10079 1. It is confusing that the 'S' (single user) init mode is not the
10080 mode enabled by /etc/rcS.d/ (which is more like the initial boot
10083 <p>This summary might make it clearer. When booting for the first
10084 time into single user mode, the following commands are executed:
10085 "<tt>/etc/init.d/rc S; /sbin/sulogin
</tt>". When booting into
10086 runlevel 1, the following commands are executed: "<tt>/etc/init.d/rc
10087 S; /etc/init.d/rc
1; /sbin/sulogin
</tt>". A problem show up when
10088 trying to continue after visiting single user mode. Not all services
10089 are started again as they should, causing the machine to end up in an
10090 unpredicatble state. This is why Debian admins recommend rebooting
10091 after visiting single user mode.</p>
10093 <p>A similar problem with runlevel 1 is caused by the amount of
10094 scripts executed from /etc/rcS.d/. When switching from say runlevel 2
10095 to runlevel 1, the services started from /etc/rcS.d/ are not properly
10096 stopped when passing through the scripts in /etc/rc1.d/, and not
10097 started again when switching away from runlevel 1 to the runlevels
10098 2-5. I believe the problem is best fixed by moving all the scripts
10099 out of /etc/rcS.d/ that are not <strong>required</strong> to get a
10100 functioning single user mode during boot.</p>
10102 <p>I have spent several years investigating the Debian boot system,
10103 and discovered this problem a few years ago. I suspect it originates
10104 from when sysvinit was introduced into Debian, a long time ago.</p>
10110 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
10115 <div class="padding
"></div>
10117 <div class="entry
">
10118 <div class="title
">
10119 <a href="http://people.skolelinux.org/pere/blog/What_should_start_from__etc_rcS_d__in_Debian____almost_nothing.html
">What should start from /etc/rcS.d/ in Debian? - almost nothing</a>
10125 <p>In the Debian boot system, several packages include scripts that
10126 are started from /etc/rcS.d/. In fact, there is a bite more of them
10127 than make sense, and this causes a few problems. What kind of
10128 problems, you might ask. There are at least two problems. The first
10129 is that it is not possible to recover a machine after switching to
10130 runlevel 1. One need to actually reboot to get the machine back to
10131 the expected state. The other is that single user boot will sometimes
10132 run into problems because some of the subsystems are activated before
10133 the root login is presented, causing problems when trying to recover a
10134 machine from a problem in that subsystem. A minor additional point is
10135 that moving more scripts out of rcS.d/ and into the other rc#.d/
10136 directories will increase the amount of scripts that can run in
10137 parallel during boot, and thus decrease the boot time.</p>
10139 <p>So, which scripts should start from rcS.d/. In short, only the
10140 scripts that _have_ to execute before the root login prompt is
10141 presented during a single user boot should go there. Everything else
10142 should go into the numeric runlevels. This means things like
10143 lm-sensors, fuse and x11-common should not run from rcS.d, but from
10144 the numeric runlevels. Today in Debian, there are around 115 init.d
10145 scripts that are started from rcS.d/, and most of them should be moved
10146 out. Do your package have one of them? Please help us make single
10147 user and runlevel 1 better by moving it.</p>
10149 <p>Scripts setting up the screen, keyboard, system partitions
10150 etc. should still be started from rcS.d/, but there is for example no
10151 need to have the network enabled before the single user login prompt
10154 <p>As always, things are not so easy to fix as they sound. To keep
10155 Debian systems working while scripts migrate and during upgrades, the
10156 scripts need to be moved from rcS.d/ to rc2.d/ in reverse dependency
10157 order, ie the scripts that nothing in rcS.d/ depend on can be moved,
10158 and the next ones can only be moved when their dependencies have been
10159 moved first. This migration must be done sequentially while we ensure
10160 that the package system upgrade packages in the right order to keep
10161 the system state correct. This will require some coordination when it
10162 comes to network related packages, but most of the packages with
10163 scripts that should migrate do not have anything in rcS.d/ depending
10164 on them. Some packages have already been updated, like the sudo
10165 package, while others are still left to do. I wish I had time to work
10166 on this myself, but real live constrains make it unlikely that I will
10167 find time to push this forward.</p>
10173 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
10178 <div class="padding
"></div>
10180 <div class="entry
">
10181 <div class="title
">
10182 <a href="http://people.skolelinux.org/pere/blog/What_is_missing_in_the_Debian_desktop__or_why_my_parents_use_Kubuntu.html
">What is missing in the Debian desktop, or why my parents use Kubuntu</a>
10188 <p>While at Debconf11, I have several times during discussions
10189 mentioned the issues I believe should be improved in Debian for its
10190 desktop to be useful for more people. The use case for this is my
10191 parents, which are currently running Kubuntu which solve the
10194 <p>I suspect these four missing features are not very hard to
10195 implement. After all, they are present in Ubuntu, so if we wanted to
10196 do this in Debian we would have a source.</p>
10200 <li><strong>Simple GUI based upgrade of packages.</strong> When there
10201 are new packages available for upgrades, a icon in the KDE status bar
10202 indicate this, and clicking on it will activate the simple upgrade
10203 tool to handle it. I have no problem guiding both of my parents
10204 through the process over the phone. If a kernel reboot is required,
10205 this too is indicated by the status bars and the upgrade tool. Last
10206 time I checked, nothing with the same features was working in KDE in
10209 <li><strong>Simple handling of missing Firefox browser
10210 plugins.</strong> When the browser encounter a MIME type it do not
10211 currently have a handler for, it will ask the user if the system
10212 should search for a package that would add support for this MIME type,
10213 and if the user say yes, the APT sources will be searched for packages
10214 advertising the MIME type in their control file (visible in the
10215 Packages file in the APT archive). If one or more packages are found,
10216 it is a simple click of the mouse to add support for the missing mime
10217 type. If the package require the user to accept some non-free
10218 license, this is explained to the user. The entire process make it
10219 more clear to the user why something do not work in the browser, and
10220 make the chances higher for the user to blame the web page authors and
10221 not the browser for any missing features.</li>
10223 <li><strong>Simple handling of missing multimedia codec/format
10224 handlers.</strong> When the media players encounter a format or codec
10225 it is not supporting, a dialog pop up asking the user if the system
10226 should search for a package that would add support for it. This
10227 happen with things like MP3, Windows Media or H.264. The selection
10228 and installation procedure is very similar to the Firefox browser
10229 plugin handling. This is as far as I know implemented using a
10230 gstreamer hook. The end result is that the user easily get access to
10231 the codecs that are present from the APT archives available, while
10232 explaining more on why a given format is unsupported by Ubuntu.</li>
10234 <li><strong>Better browser handling of some MIME types.</strong> When
10235 displaying a text/plain file in my Debian browser, it will propose to
10236 start emacs to show it. If I remember correctly, when doing the same
10237 in Kunbutu it show the file as a text file in the browser. At least I
10238 know Opera will show text files within the browser. I much prefer the
10239 latter behaviour.</li>
10243 <p>There are other nice features as well, like the simplified suite
10244 upgrader, but given that I am the one mostly doing the dist-upgrade,
10245 it do not matter much.</p>
10247 <p>I really hope we could get these features in place for the next
10248 Debian release. It would require the coordinated effort of several
10249 maintainers, but would make the end user experience a lot better.</p>
10255 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/h264
">h264</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web
">web</a>.
10260 <div class="padding
"></div>
10262 <div class="entry
">
10263 <div class="title
">
10264 <a href="http://people.skolelinux.org/pere/blog/Perl_modules_used_by_FixMyStreet_which_are_missing_in_Debian_Squeeze.html
">Perl modules used by FixMyStreet which are missing in Debian/Squeeze</a>
10270 <p>The Norwegian <a href="http://www.fiksgatami.no/
">FiksGataMi</A>
10271 site is build on Debian/Squeeze, and this platform was chosen because
10272 I am most familiar with Debian (being a Debian Developer for around 10
10273 years) because it is the latest stable Debian release which should get
10274 security support for a few years.</p>
10276 <p>The web service is written in Perl, and depend on some perl modules
10277 that are missing in Debian at the moment. It would be great if these
10278 modules were added to the Debian archive, allowing anyone to set up
10279 their own <a href="http://www.fixmystreet.com
">FixMyStreet</a> clone
10280 in their own country using only Debian packages. The list of modules
10281 missing in Debian/Squeeze isn't very long, and I hope the perl group
10282 will find time to package the 12 modules Catalyst::Plugin::SmartURI,
10283 Catalyst::Plugin::Unicode::Encoding, Catalyst::View::TT, Devel::Hide,
10284 Sort::Key, Statistics::Distributions, Template::Plugin::Comma,
10285 Template::Plugin::DateTime::Format, Term::Size::Any, Term::Size::Perl,
10286 URI::SmartURI and Web::Scraper to make the maintenance of FixMyStreet
10287 easier in the future.</p>
10289 <p>Thanks to the great tools in Debian, getting the missing modules
10290 installed on my server was a simple call to 'cpan2deb Module::Name'
10291 and 'dpkg -i' to install the resulting package. But this leave me
10292 with the responsibility of tracking security problems, which I really
10293 do not have time for.</p>
10299 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami</a>.
10304 <div class="padding
"></div>
10306 <div class="entry
">
10307 <div class="title
">
10308 <a href="http://people.skolelinux.org/pere/blog/A_Norwegian_FixMyStreet_have_kept_me_busy_the_last_few_weeks.html
">A Norwegian FixMyStreet have kept me busy the last few weeks</a>
10314 <p>Here is a small update for my English readers. Most of my blog
10315 posts have been in Norwegian the last few weeks, so here is a short
10316 update in English.</p>
10318 <p>The kids still keep me too busy to get much free software work
10319 done, but I did manage to organise a project to get a Norwegian port
10320 of the British service
10321 <a href="http://www.fixmystreet.com/
">FixMyStreet</a> up and running,
10322 and it has been running for a month now. The entire project has been
10323 organised by me and two others. Around Christmas we gathered sponsors
10324 to fund the development work. In January I drafted a contract with
10325 <a href="http://www.mysociety.org/
">mySociety</a> on what to develop,
10326 and in February the development took place. Most of it involved
10327 converting the source to use GPS coordinates instead of British
10328 easting/northing, and the resulting code should be a lot easier to get
10329 running in any country by now. The Norwegian
10330 <a href="http://www.fiksgatami.no/
">FiksGataMi</a> is using
10331 <a href="http://www.openstreetmap.org/
">OpenStreetmap</a> as the map
10332 source and the source for administrative borders in Norway, and
10333 support for this had to be added/fixed.</p>
10335 <p>The Norwegian version went live March 3th, and we spent the weekend
10336 polishing the system before we announced it March 7th. The system is
10337 running on a KVM instance of Debian/Squeeze, and has seen almost 3000
10338 problem reports in a few weeks. Soon we hope to announce the Android
10339 and iPhone versions making it even easier to report problems with the
10340 public infrastructure.</p>
10342 <p>Perhaps something to consider for those of you in countries without
10349 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami</a>, <a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart</a>.
10354 <div class="padding
"></div>
10356 <div class="entry
">
10357 <div class="title
">
10358 <a href="http://people.skolelinux.org/pere/blog/Using_NVD_and_CPE_to_track_CVEs_in_locally_maintained_software.html
">Using NVD and CPE to track CVEs in locally maintained software</a>
10364 <p>The last few days I have looked at ways to track open security
10365 issues here at my work with the University of Oslo. My idea is that
10366 it should be possible to use the information about security issues
10367 available on the Internet, and check our locally
10368 maintained/distributed software against this information. It should
10369 allow us to verify that no known security issues are forgotten. The
10370 CVE database listing vulnerabilities seem like a great central point,
10371 and by using the package lists from Debian mapped to CVEs provided by
10372 the testing security team, I believed it should be possible to figure
10373 out which security holes were present in our free software
10376 <p>After reading up on the topic, it became obvious that the first
10377 building block is to be able to name software packages in a unique and
10378 consistent way across data sources. I considered several ways to do
10379 this, for example coming up with my own naming scheme like using URLs
10380 to project home pages or URLs to the Freshmeat entries, or using some
10381 existing naming scheme. And it seem like I am not the first one to
10382 come across this problem, as MITRE already proposed and implemented a
10383 solution. Enter the <a href="http://cpe.mitre.org/index.html
">Common
10384 Platform Enumeration</a> dictionary, a vocabulary for referring to
10385 software, hardware and other platform components. The CPE ids are
10386 mapped to CVEs in the <a href="http://web.nvd.nist.gov/
">National
10387 Vulnerability Database</a>, allowing me to look up know security
10388 issues for any CPE name. With this in place, all I need to do is to
10389 locate the CPE id for the software packages we use at the university.
10390 This is fairly trivial (I google for 'cve cpe $package' and check the
10391 NVD entry if a CVE for the package exist).</p>
10393 <p>To give you an example. The GNU gzip source package have the CPE
10394 name cpe:/a:gnu:gzip. If the old version 1.3.3 was the package to
10395 check out, one could look up
10396 <a href="http://web.nvd.nist.gov/view/vuln/search?cpe=cpe%
3A%
2Fa%
3Agnu%
3Agzip:
1.3.3">cpe:/a:gnu:gzip:1.3.3
10397 in NVD</a> and get a list of 6 security holes with public CVE entries.
10398 The most recent one is
10399 <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-
2010-
0001">CVE-2010-0001</a>,
10400 and at the bottom of the NVD page for this vulnerability the complete
10401 list of affected versions is provided.</p>
10403 <p>The NVD database of CVEs is also available as a XML dump, allowing
10404 for offline processing of issues. Using this dump, I've written a
10405 small script taking a list of CPEs as input and list all CVEs
10406 affecting the packages represented by these CPEs. One give it CPEs
10407 with version numbers as specified above and get a list of open
10408 security issues out.</p>
10410 <p>Of course for this approach to be useful, the quality of the NVD
10411 information need to be high. For that to happen, I believe as many as
10412 possible need to use and contribute to the NVD database. I notice
10414 <a href="https://www.redhat.com/security/data/metrics/rhsamapcpe.txt
">a
10415 map from CVE to CPE</a>, indicating that they are using the CPE
10416 information. I'm not aware of Debian and Ubuntu doing the same.</p>
10418 <p>To get an idea about the quality for free software, I spent some
10419 time making it possible to compare the CVE database from Debian with
10420 the CVE database in NVD. The result look fairly good, but there are
10421 some inconsistencies in NVD (same software package having several
10422 CPEs), and some inaccuracies (NVD not mentioning buggy packages that
10423 Debian believe are affected by a CVE). Hope to find time to improve
10424 the quality of NVD, but that require being able to get in touch with
10425 someone maintaining it. So far my three emails with questions and
10426 corrections have not seen any reply, but I hope contact can be
10427 established soon.</p>
10429 <p>An interesting application for CPEs is cross platform package
10430 mapping. It would be useful to know which packages in for example
10431 RHEL, OpenSuSe and Mandriva are missing from Debian and Ubuntu, and
10432 this would be trivial if all linux distributions provided CPE entries
10433 for their packages.</p>
10439 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.
10444 <div class="padding
"></div>
10446 <div class="entry
">
10447 <div class="title
">
10448 <a href="http://people.skolelinux.org/pere/blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html
">Which module is loaded for a given PCI and USB device?</a>
10455 <a href="http://packages.qa.debian.org/discover-data
">discover-data</a>
10456 package in Debian, there is a script to report useful information
10457 about the running hardware for use when people report missing
10458 information. One part of this script that I find very useful when
10459 debugging hardware problems, is the part mapping loaded kernel module
10460 to the PCI device it claims. It allow me to quickly see if the kernel
10461 module I expect is driving the hardware I am struggling with. To see
10462 the output, make sure discover-data is installed and run
10463 <tt>/usr/share/bug/discover-data 3>&1</tt>. The relevant output on
10464 one of my machines like this:</p>
10468 10de:03eb i2c_nforce2
10471 10de:03f0 snd_hda_intel
10476 109e:0878 snd_bt87x
10480 <p>The code in question look like this, slightly modified for
10481 readability and to drop the output to file descriptor 3:</p>
10484 if [ -d /sys/bus/pci/devices/ ] ; then
10485 echo loaded pci modules:
10487 cd /sys/bus/pci/devices/
10488 for address in * ; do
10489 if [ -d "$address/driver/module" ] ; then
10490 module=`cd $address/driver/module ; pwd -P | xargs basename`
10491 if grep -q "^$module " /proc/modules ; then
10492 address=$(echo $address |sed s/
0000://)
10493 id=`lspci -n -s $address | tail -n
1 | awk '{print $
3}'`
10503 <p>Similar code could be used to extract USB device module
10507 if [ -d /sys/bus/usb/devices/ ] ; then
10508 echo loaded usb modules:
10510 cd /sys/bus/usb/devices/
10511 for address in * ; do
10512 if [ -d "$address/driver/module" ] ; then
10513 module=`cd $address/driver/module ; pwd -P | xargs basename`
10514 if grep -q "^$module " /proc/modules ; then
10515 address=$(echo $address |sed s/
0000://)
10516 id=$(lsusb -s $address | tail -n
1 | awk '{print $
6}')
10517 if [ "$id" ] ; then
10528 <p>This might perhaps be something to include in other tools as
10535 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
10540 <div class=
"padding"></div>
10542 <div class=
"entry">
10543 <div class=
"title">
10544 <a href=
"http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html">How to test if a laptop is working with Linux
</a>
10550 <p>The last few days I have spent at work here at the
<a
10551 href=
"http://www.uio.no/">University of Oslo
</a> testing if the new
10552 batch of computers will work with Linux. Every year for the last few
10553 years the university have organised shared bid of a few thousand
10554 computers, and this year HP won the bid. Two different desktops and
10555 five different laptops are on the list this year. We in the UNIX
10556 group want to know which one of these computers work well with RHEL
10557 and Ubuntu, the two Linux distributions we currently handle at the
10560 <p>My test method is simple, and I share it here to get feedback and
10561 perhaps inspire others to test hardware as well. To test, I PXE
10562 install the OS version of choice, and log in as my normal user and run
10563 a few applications and plug in selected pieces of hardware. When
10564 something fail, I make a note about this in the test matrix and move
10565 on. If I have some spare time I try to report the bug to the OS
10566 vendor, but as I only have the machines for a short time, I rarely
10567 have the time to do this for all the problems I find.
</p>
10569 <p>Anyway, to get to the point of this post. Here is the simple tests
10570 I perform on a new model.
</p>
10574 <li>Is PXE installation working? I'm testing with RHEL6, Ubuntu Lucid
10575 and Ubuntu Maverik at the moment. If I feel like it, I also test with
10576 RHEL5 and Debian Edu/Squeeze.
</li>
10578 <li>Is X.org working? If the graphical login screen show up after
10579 installation, X.org is working.
</li>
10581 <li>Is hardware accelerated OpenGL working? Running glxgears (in
10582 package mesa-utils on Ubuntu) and writing down the frames per second
10583 reported by the program.
</li>
10585 <li>Is sound working? With Gnome and KDE, a sound is played when
10586 logging in, and if I can hear this the test is successful. If there
10587 are several audio exits on the machine, I try them all and check if
10588 the Gnome/KDE audio mixer can control where to send the sound. I
10589 normally test this by playing
10590 <a href=
"http://www.nuug.no/aktiviteter/20101012-chef/ ">a HTML5
10591 video
</a> in Firefox/Iceweasel.
</li>
10593 <li>Is the USB subsystem working? I test this by plugging in a USB
10594 memory stick and see if Gnome/KDE notices this.
</li>
10596 <li>Is the CD/DVD player working? I test this by inserting any CD/DVD
10597 I have lying around, and see if Gnome/KDE notices this.
</li>
10599 <li>Is any built in camera working? Test using cheese, and see if a
10600 picture from the v4l device show up.
</li>
10602 <li>Is bluetooth working? Use the Gnome/KDE browsing tool to see if
10603 any bluetooth devices are discovered. In my office, I normally see a
10606 <li>For laptops, is the SD or Compaq Flash reader working. I have
10607 memory modules lying around, and stick them in and see if Gnome/KDE
10610 <li>For laptops, is suspend/hibernate working? I'm testing if the
10611 special button work, and if the laptop continue to work after
10614 <li>For laptops, is the extra buttons working, like audio level,
10615 adjusting background light, switching on/off external video output,
10616 switching on/off wifi, bluetooth, etc? The set of buttons differ from
10617 laptop to laptop, so I just write down which are working and which are
10620 <li>Some laptops have smart card readers, finger print readers,
10621 acceleration sensors etc. I rarely test these, as I do not know how
10622 to quickly test if they are working or not, so I only document their
10627 <p>By now I suspect you are really curious what the test results are
10628 for the HP machines I am testing. I'm not done yet, so I will report
10629 the test results later. For now I can report that HP
8100 Elite work
10630 fine, and hibernation fail with HP EliteBook
8440p on Ubuntu Lucid,
10631 and audio fail on RHEL6. Ubuntu Maverik worked with
8440p. As you
10632 can see, I have most machines left to test. One interesting
10633 observation is that Ubuntu Lucid has almost twice the frame rate than
10634 RHEL6 with glxgears. No idea why.
</p>
10640 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
10645 <div class=
"padding"></div>
10647 <div class=
"entry">
10648 <div class=
"title">
10649 <a href=
"http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html">Some thoughts on BitCoins
</a>
10655 <p>As I continue to explore
10656 <a href=
"http://www.bitcoin.org/">BitCoin
</a>, I've starting to wonder
10657 what properties the system have, and how it will be affected by laws
10658 and regulations here in Norway. Here are some random notes.
</p>
10660 <p>One interesting thing to note is that since the transactions are
10661 verified using a peer to peer network, all details about a transaction
10662 is known to everyone. This means that if a BitCoin address has been
10663 published like I did with mine in my initial post about BitCoin, it is
10664 possible for everyone to see how many BitCoins have been transfered to
10665 that address. There is even a web service to look at the details for
10666 all transactions. There I can see that my address
10667 <a href=
"http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a>
10668 have received
16.06 Bitcoin, the
10669 <a href=
"http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3">1LfdGnGuWkpSJgbQySxxCWhv
8MHqvwst
3</a>
10670 address of Simon Phipps have received
181.97 BitCoin and the address
10671 <a href=
"http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt">1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt
</A>
10672 of EFF have received
2447.38 BitCoins so far. Thank you to each and
10673 every one of you that donated bitcoins to support my activity. The
10674 fact that anyone can see how much money was transfered to a given
10675 address make it more obvious why the BitCoin community recommend to
10676 generate and hand out a new address for each transaction. I'm told
10677 there is no way to track which addresses belong to a given person or
10678 organisation without the person or organisation revealing it
10679 themselves, as Simon, EFF and I have done.
</p>
10681 <p>In Norway, and in most other countries, there are laws and
10682 regulations limiting how much money one can transfer across the border
10683 without declaring it. There are money laundering, tax and accounting
10684 laws and regulations I would expect to apply to the use of BitCoin.
10685 If the Skolelinux foundation
10686 (
<a href=
"http://linuxiskolen.no/slxdebianlabs/donations.html">SLX
10687 Debian Labs
</a>) were to accept donations in BitCoin in addition to
10688 normal bank transfers like EFF is doing, how should this be accounted?
10689 Given that it is impossible to know if money can cross the border or
10690 not, should everything or nothing be declared? What exchange rate
10691 should be used when calculating taxes? Would receivers have to pay
10692 income tax if the foundation were to pay Skolelinux contributors in
10693 BitCoin? I have no idea, but it would be interesting to know.
</p>
10695 <p>For a currency to be useful and successful, it must be trusted and
10696 accepted by a lot of users. It must be possible to get easy access to
10697 the currency (as a wage or using currency exchanges), and it must be
10698 easy to spend it. At the moment BitCoin seem fairly easy to get
10699 access to, but there are very few places to spend it. I am not really
10700 a regular user of any of the vendor types currently accepting BitCoin,
10701 so I wonder when my kind of shop would start accepting BitCoins. I
10702 would like to buy electronics, travels and subway tickets, not herbs
10703 and books. :) The currency is young, and this will improve over time
10704 if it become popular, but I suspect regular banks will start to lobby
10705 to get BitCoin declared illegal if it become popular. I'm sure they
10706 will claim it is helping fund terrorism and money laundering (which
10707 probably would be true, as is any currency in existence), but I
10708 believe the problems should be solved elsewhere and not by blaming
10711 <p>The process of creating new BitCoins is called mining, and it is
10712 CPU intensive process that depend on a bit of luck as well (as one is
10713 competing against all the other miners currently spending CPU cycles
10714 to see which one get the next lump of cash). The "winner" get
50
10715 BitCoin when this happen. Yesterday I came across the obvious way to
10716 join forces to increase ones changes of getting at least some coins,
10717 by coordinating the work on mining BitCoins across several machines
10718 and people, and sharing the result if one is lucky and get the
50
10719 BitCoins. Check out
10720 <a href=
"http://www.bluishcoder.co.nz/bitcoin-pool/">BitCoin Pool
</a>
10721 if this sounds interesting. I have not had time to try to set up a
10722 machine to participate there yet, but have seen that running on ones
10723 own for a few days have not yield any BitCoins througth mining
10726 <p>Update
2010-
12-
15: Found an
<a
10727 href=
"http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi">interesting
10728 criticism
</a> of bitcoin. Not quite sure how valid it is, but thought
10729 it was interesting to read. The arguments presented seem to be
10730 equally valid for gold, which was used as a currency for many years.
</p>
10736 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
10741 <div class=
"padding"></div>
10743 <div class=
"entry">
10744 <div class=
"title">
10745 <a href=
"http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">Now accepting bitcoins - anonymous and distributed p2p crypto-money
</a>
10751 <p>With this weeks lawless
10752 <a href=
"http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html">governmental
10753 attacks
</a> on Wikileak and
10754 <a href=
"http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech">free
10755 speech
</a>, it has become obvious that PayPal, visa and mastercard can
10756 not be trusted to handle money transactions.
10758 <a href=
"http://webmink.com/2010/12/06/now-accepting-bitcoin/">Simon
10759 Phipps on bitcoin
</a> reminded me about a project that a friend of
10760 mine mentioned earlier. I decided to follow Simon's example, and get
10761 involved with
<a href=
"http://www.bitcoin.org/">BitCoin
</a>. I got
10762 some help from my friend to get it all running, and he even handed me
10763 some bitcoins to get started. I even donated a few bitcoins to Simon
10764 for helping me remember BitCoin.
</p>
10766 <p>So, what is bitcoins, you probably wonder? It is a digital
10767 crypto-currency, decentralised and handled using peer-to-peer
10768 networks. It allows anonymous transactions and prohibits central
10769 control over the transactions, making it impossible for governments
10770 and companies alike to block donations and other transactions. The
10771 source is free software, and while the key dependency wxWidgets
2.9
10772 for the graphical user interface is missing in Debian, the command
10773 line client builds just fine. Hopefully Jonas
10774 <a href=
"http://bugs.debian.org/578157">will get the package into
10775 Debian
</a> soon.
</p>
10777 <p>Bitcoins can be converted to other currencies, like USD and EUR.
10778 There are
<a href=
"http://www.bitcoin.org/trade">companies accepting
10779 bitcoins
</a> when selling services and goods, and there are even
10780 currency "stock" markets where the exchange rate is decided. There
10781 are not many users so far, but the concept seems promising. If you
10782 want to get started and lack a friend with any bitcoins to spare,
10784 <a href=
"https://freebitcoins.appspot.com/">some for free
</a> (
0.05
10785 bitcoin at the time of writing). Use
10786 <a href=
"http://www.bitcoinwatch.com/">BitcoinWatch
</a> to keep an eye
10787 on the current exchange rates.
</p>
10789 <p>As an experiment, I have decided to set up bitcoind on one of my
10790 machines. If you want to support my activity, please send Bitcoin
10791 donations to the address
10792 <b>15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</b>. Thank you!
</p>
10798 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
10803 <div class=
"padding"></div>
10805 <div class=
"entry">
10806 <div class=
"title">
10807 <a href=
"http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html">Why isn't Debian Edu using VLC?
</a>
10813 <p>In the latest issue of Linux Journal, the readers choices were
10814 presented, and the winner among the multimedia player were VLC.
10815 Personally, I like VLC, and it is my player of choice when I first try
10816 to play a video file or stream. Only if VLC fail will I drag out
10817 gmplayer to see if it can do better. The reason is mostly the failure
10818 model and trust. When VLC fail, it normally pop up a error message
10819 reporting the problem. When mplayer fail, it normally segfault or
10820 just hangs. The latter failure mode drain my trust in the program.
<p>
10822 <p>But even if VLC is my player of choice, we have choosen to use
10823 mplayer in
<a href=
"http://www.skolelinux.org/">Debian
10824 Edu/Skolelinux
</a>. The reason is simple. We need a good browser
10825 plugin to play web videos seamlessly, and the VLC browser plugin is
10826 not very good. For example, it lack in-line control buttons, so there
10827 is no way for the user to pause the video. Also, when I
10828 <a href=
"http://wiki.debian.org/DebianEdu/BrowserMultimedia">last
10829 tested the browser plugins
</a> available in Debian, the VLC plugin
10830 failed on several video pages where mplayer based plugins worked. If
10831 the browser plugin for VLC was as good as the gecko-mediaplayer
10832 package (which uses mplayer), we would switch.
</P>
10834 <p>While VLC is a good player, its user interface is slightly
10835 annoying. The most annoying feature is its inconsistent use of
10836 keyboard shortcuts. When the player is in full screen mode, its
10837 shortcuts are different from when it is playing the video in a window.
10838 For example, space only work as pause when in full screen mode. I
10839 wish it had consisten shortcuts and that space also would work when in
10840 window mode. Another nice shortcut in gmplayer is [enter] to restart
10841 the current video. It is very nice when playing short videos from the
10842 web and want to restart it when new people arrive to have a look at
10843 what is going on.
</p>
10849 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
10854 <div class=
"padding"></div>
10856 <div class=
"entry">
10857 <div class=
"title">
10858 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html">Lenny-
>Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove
</a>
10864 <p>Michael Biebl suggested to me on IRC, that I changed my automated
10865 upgrade testing of the
10866 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
10867 Gnome and KDE Desktop
</a> to do
<tt>apt-get autoremove
</tt> when using apt-get.
10868 This seem like a very good idea, so I adjusted by test scripts and
10869 can now present the updated result from today:
</p>
10871 <p>This is for Gnome:
</p>
10873 <p>Installed using apt-get, missing with aptitude
</p>
10880 browser-plugin-gnash
10887 freedesktop-sound-theme
10889 gconf-defaults-service
10902 gnome-codec-install
10904 gnome-desktop-environment
10908 gnome-session-canberra
10910 gnome-themes-extras
10913 gstreamer0.10-fluendo-mp3
10914 gstreamer0.10-tools
10916 gtk2-engines-pixbuf
10917 gtk2-engines-smooth
10919 libapache2-mod-dnssd
10922 libaprutil1-dbd-sqlite3
10925 libboost-date-time1.42
.0
10926 libboost-python1.42
.0
10927 libboost-thread1.42
.0
10929 libchamplain-gtk-
0.4-
0
10931 libclutter-gtk-
0.10-
0
10938 libfreerdp-plugins-standard
10951 libgnome-vfs2.0-cil
10953 libgnomepanel2.24-cil
10958 libgtksourceview2.0-common
10959 libmono-addins-gui0.2-cil
10960 libmono-addins0.2-cil
10961 libmono-cairo2.0-cil
10962 libmono-corlib2.0-cil
10963 libmono-i18n-west2.0-cil
10964 libmono-posix2.0-cil
10965 libmono-security2.0-cil
10966 libmono-sharpzip2.84-cil
10967 libmono-system2.0-cil
10970 libndesk-dbus-glib1.0-cil
10971 libndesk-dbus1.0-cil
10981 libtelepathy-farsight0
10990 nautilus-sendto-empathy
10994 python-aptdaemon-gtk
10996 python-beautifulsoup
11011 python-gtksourceview2
11022 python-pkg-resources
11029 python-twisted-conch
11030 python-twisted-core
11035 python-zope.interface
11037 remmina-plugin-data
11040 rhythmbox-plugin-cdrecorder
11047 system-config-printer-udev
11049 telepathy-mission-control-
5
11056 transmission-common
11062 <p>Installed using apt-get, removed with aptitude
</p>
11068 epiphany-extensions
11070 fast-user-switch-applet
11089 libgtksourceview2.0-
0
11091 libsdl1.2debian-alsa
11097 system-config-printer
11104 <p>Installed using aptitude, missing with apt-get
</p>
11107 gstreamer0.10-gnomevfs
11110 <p>Installed using aptitude, removed with apt-get
</p>
11116 <p>This is for KDE:
</p>
11118 <p>Installed using apt-get, missing with aptitude
</p>
11124 <p>Installed using apt-get, removed with aptitude
</p>
11128 network-manager-kde
11131 <p>Installed using aptitude, missing with apt-get
</p>
11147 kdeartwork-emoticons
11149 kdeartwork-theme-icon
11153 kdebase-workspace-bin
11154 kdebase-workspace-data
11166 konqueror-nsplugins
11168 kscreensaver-xsavers
11183 plasma-dataengines-workspace
11185 plasma-desktopthemes-artwork
11186 plasma-runners-addons
11187 plasma-scriptengine-googlegadgets
11188 plasma-scriptengine-python
11189 plasma-scriptengine-qedje
11190 plasma-scriptengine-ruby
11191 plasma-scriptengine-webkit
11192 plasma-scriptengines
11193 plasma-wallpapers-addons
11194 plasma-widget-folderview
11195 plasma-widget-networkmanagement
11198 update-notifier-kde
11199 xscreensaver-data-extra
11201 xscreensaver-gl-extra
11202 xscreensaver-screensaver-bsod
11205 <p>Installed using aptitude, removed with apt-get
</p>
11209 google-gadgets-common
11227 libggadget-qt-
1.0-
0b
11232 libkonqsidebarplugin4a
11236 libkunitconversion4
11241 libplasma-geolocation-interface4
11243 libplasmagenericshell4
11257 libsmokeknewstuff2-
3
11258 libsmokeknewstuff3-
3
11260 libsmokektexteditor3
11268 libsmokeqtnetwork4-
3
11269 libsmokeqtopengl4-
3
11270 libsmokeqtscript4-
3
11274 libsmokeqtuitools4-
3
11275 libsmokeqtwebkit4-
3
11286 plasma-dataengines-addons
11287 plasma-scriptengine-superkaramba
11288 plasma-widget-lancelot
11289 plasma-widgets-addons
11290 plasma-widgets-workspace
11294 update-notifier-common
11297 <p>Running apt-get autoremove made the results using apt-get and
11298 aptitude a bit more similar, but there are still quite a lott of
11299 differences. I have no idea what packages should be installed after
11300 the upgrade, but hope those that do can have a look.
</p>
11306 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11311 <div class=
"padding"></div>
11313 <div class=
"entry">
11314 <div class=
"title">
11315 <a href=
"http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html">Migrating Xen virtual machines using LVM to KVM using disk images
</a>
11321 <p>Most of the computers in use by the
11322 <a href=
"http://www.skolelinux.org/">Debian Edu/Skolelinux project
</a>
11323 are virtual machines. And they have been Xen machines running on a
11324 fairly old IBM eserver xseries
345 machine, and we wanted to migrate
11325 them to KVM on a newer Dell PowerEdge
2950 host machine. This was a
11326 bit harder that it could have been, because we set up the Xen virtual
11327 machines to get the virtual partitions from LVM, which as far as I
11328 know is not supported by KVM. So to migrate, we had to convert
11329 several LVM logical volumes to partitions on a virtual disk file.
</p>
11332 <a href=
"http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM">a
11333 nice recipe
</a> to do this, and wrote the following script to do the
11334 migration. It uses qemu-img from the qemu package to make the disk
11335 image, parted to partition it, losetup and kpartx to present the disk
11336 image partions as devices, and dd to copy the data. I NFS mounted the
11337 new servers storage area on the old server to do the migration.
</p>
11343 # http://searchnetworking.techtarget.com.au/articles/
35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
11348 if [ -z "$
1" ] ; then
11349 echo "Usage: $
0 <hostname
>"
11355 if [ ! -e /dev/vg_data/$host-disk ] ; then
11356 echo "error: unable to find LVM volume for $host"
11360 # Partitions need to be a bit bigger than the LVM LVs. not sure why.
11361 disksize=$( lvs --units m | grep $host-disk | awk '{sum = sum + $
4} END { print int(sum *
1.05) }')
11362 swapsize=$( lvs --units m | grep $host-swap | awk '{sum = sum + $
4} END { print int(sum *
1.05) }')
11363 totalsize=$(( ( $disksize + $swapsize ) ))
11366 #dd if=/dev/zero of=$img bs=
1M count=$(( $disksize + $swapsize ))
11367 qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
11369 parted $img mklabel msdos
11370 parted $img mkpart primary linux-swap
0 $disksize
11371 parted $img mkpart primary ext2 $disksize $totalsize
11372 parted $img set
1 boot on
11375 losetup /dev/loop0 $img
11376 kpartx -a /dev/loop0
11378 dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=
1M
11379 fsck.ext3 -f /dev/mapper/loop0p1 || true
11380 mkswap /dev/mapper/loop0p2
11382 kpartx -d /dev/loop0
11383 losetup -d /dev/loop0
11386 <p>The script is perhaps so simple that it is not copyrightable, but
11387 if it is, it is licenced using GPL v2 or later at your discretion.
</p>
11389 <p>After doing this, I booted a Debian CD in rescue mode in KVM with
11390 the new disk image attached, installed grub-pc and linux-image-
686 and
11391 set up grub to boot from the disk image. After this, the KVM machines
11392 seem to work just fine.
</p>
11398 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11403 <div class=
"padding"></div>
11405 <div class=
"entry">
11406 <div class=
"title">
11407 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html">Lenny-
>Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop
</a>
11413 <p>I'm still running upgrade testing of the
11414 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
11415 Gnome and KDE Desktop
</a>, but have not had time to spend on reporting the
11416 status. Here is a short update based on a test I ran
20101118.
</p>
11418 <p>I still do not know what a correct migration should look like, so I
11419 report any differences between apt and aptitude and hope someone else
11420 can see if anything should be changed.
</p>
11422 <p>This is for Gnome:
</p>
11424 <p>Installed using apt-get, missing with aptitude
</p>
11427 apache2.2-bin aptdaemon at-spi baobab binfmt-support
11428 browser-plugin-gnash cheese-common cli-common cpp-
4.3 cups-pk-helper
11429 dmz-cursor-theme empathy empathy-common finger
11430 freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
11431 gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
11432 geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
11433 gnome-cards-data gnome-codec-install gnome-core
11434 gnome-desktop-environment gnome-disk-utility gnome-screenshot
11435 gnome-search-tool gnome-session-canberra gnome-spell
11436 gnome-system-log gnome-themes-extras gnome-themes-more
11437 gnome-user-share gs-common gstreamer0.10-fluendo-mp3
11438 gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
11439 gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
11440 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
11441 libart2.0-cil libatspi1.0-
0 libboost-date-time1.42
.0
11442 libboost-python1.42
.0 libboost-thread1.42
.0 libchamplain-
0.4-
0
11443 libchamplain-gtk-
0.4-
0 libcheese-gtk18 libclutter-gtk-
0.10-
0
11444 libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-
1.0-
2
11445 libepc-common libepc-ui-
1.0-
2 libfreerdp-plugins-standard
11446 libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
11447 libgdl-
1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-
0 libgif4
11448 libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
11449 libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
11450 libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
11451 libgtk2.0-cil libgtkglext1 libgtksourceview-common
11452 libgtksourceview2.0-common libmono-addins-gui0.2-cil
11453 libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
11454 libmono-i18n-west2.0-cil libmono-posix2.0-cil
11455 libmono-security2.0-cil libmono-sharpzip2.84-cil
11456 libmono-system2.0-cil libmtp8 libmusicbrainz3-
6
11457 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6
.8
11458 libpolkit-gtk-
1-
0 libpt-
1.10.10-plugins-alsa
11459 libpt-
1.10.10-plugins-v4l libpt2.6
.7 libpython2.6 librpm1 librpmio1
11460 libsdl1.2debian libservlet2.4-java libsrtp0 libssh-
4
11461 libtelepathy-farsight0 libtelepathy-glib0 libtidy-
0.99-
0
11462 libxalan2-java libxerces2-java media-player-info mesa-utils
11463 mono-
2.0-gac mono-gac mono-runtime nautilus-sendto
11464 nautilus-sendto-empathy openoffice.org-writer2latex
11465 openssl-blacklist p7zip p7zip-full pkg-config python-
4suite-xml
11466 python-aptdaemon python-aptdaemon-gtk python-axiom
11467 python-beautifulsoup python-bugbuddy python-clientform
11468 python-coherence python-configobj python-crypto python-cupshelpers
11469 python-cupsutils python-eggtrayicon python-elementtree
11470 python-epsilon python-evolution python-feedparser python-gdata
11471 python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
11472 python-gtksourceview2 python-httplib2 python-louie python-mako
11473 python-markupsafe python-mechanize python-nevow python-notify
11474 python-opengl python-openssl python-pam python-pkg-resources
11475 python-pyasn1 python-pysqlite2 python-rdflib python-serial
11476 python-tagpy python-twisted-bin python-twisted-conch
11477 python-twisted-core python-twisted-web python-utidylib python-webkit
11478 python-xdg python-zope.interface remmina remmina-plugin-data
11479 remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
11480 rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
11481 software-center svgalibg1 system-config-printer-udev
11482 telepathy-gabble telepathy-mission-control-
5 telepathy-salut tomboy
11483 totem totem-coherence totem-mozilla totem-plugins
11484 transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
11488 Installed using apt-get, removed with aptitude
11491 arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
11492 epiphany-extensions epiphany-gecko evolution-exchange
11493 fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
11494 gedit-common gnome-app-install gnome-games gnome-games-data
11495 gnome-nettool gnome-system-tools gnome-themes gnome-utils
11496 gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
11497 guile-
1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
11498 libavahi-ui0 libbind9-
50 libbluetooth2 libcamel1.2-
11 libcdio7
11499 libcucul0 libcurl3 libdirectfb-
1.0-
0 libdmx1 libdvdread3
11500 libedata-cal1.2-
6 libedataserver1.2-
9 libeel2-
2.20 libepc-
1.0-
1
11501 libepc-ui-
1.0-
1 libexchange-storage1.2-
3 libfaad0 libgadu3
11502 libgalago3 libgd2-noxpm libgda3-
3 libgda3-common libggz2 libggzcore9
11503 libggzmod4 libgksu1.2-
0 libgksuui1.0-
1 libgmyth0 libgnome-desktop-
2
11504 libgnome-pilot2 libgnomecups1.0-
1 libgnomeprint2.2-
0
11505 libgnomeprintui2.2-
0 libgpod3 libgraphviz4 libgtk-vnc-
1.0-
0
11506 libgtkhtml2-
0 libgtksourceview1.0-
0 libgtksourceview2.0-
0
11507 libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
11508 libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
11509 libmagick++
10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
11510 libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
11511 libnm-util0 libopal-
2.2 libosp5 libparted1.8-
10 libpisock9
11512 libpisync1 libpoppler-glib3 libpoppler3 libpt-
1.10.10 libraw1394-
8
11513 libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-
8
11514 libspeexdsp1 libssh2-
1 libsuitesparse-
3.1.0 libsvga1
11515 libswfdec-
0.6-
90 libtalloc1 libtotem-plparser10 libtrackerclient0
11516 libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
11517 libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
11518 sound-juicer swfdec-gnome system-config-printer totem-common
11519 totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
11522 <p>Installed using aptitude, missing with apt-get
</p>
11525 gstreamer0.10-gnomevfs
11528 <p>Installed using aptitude, removed with apt-get
</p>
11534 <p>This is for KDE:
</p>
11536 <p>Installed using apt-get, missing with aptitude
</p>
11539 autopoint bomber bovo cantor cantor-backend-kalgebra cpp-
4.3 dcoprss
11540 edict espeak espeak-data eyesapplet fifteenapplet finger gettext
11541 ghostscript-x git gnome-audio gnugo granatier gs-common
11542 gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
11543 kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
11544 kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
11545 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
11546 kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
11547 kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
11548 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
11549 kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
11550 kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
11551 killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
11552 kollision kpf krosspython ksirk ksmserver ksquares kstars-data
11553 ksudoku kubrick kweather libasound2-plugins libboost-python1.42
.0
11554 libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
11555 libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
11556 libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
11557 libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
11558 libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
11559 libkrossui4 libmailtools-perl libmime-tools-perl
11560 libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
11561 libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
11562 libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
11563 lirc luatex marble networkstatus noatun-plugins
11564 openoffice.org-writer2latex palapeli palapeli-data parley
11565 parley-data poster psutils pulseaudio pulseaudio-esound-compat
11566 pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
11567 speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
11568 ttf-sazanami-gothic
11571 <p>Installed using apt-get, removed with aptitude
</p>
11574 amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
11575 dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
11576 kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
11577 kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
11578 keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
11579 kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
11580 kitchensync kiten kjumpingcube klatin klettres klickety klines
11581 klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
11582 kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
11583 kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
11584 kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
11585 ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
11586 ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
11587 kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
11588 kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
11589 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
11590 libavahi-core5 libavc1394-
0 libbind9-
50 libbluetooth2
11591 libboost-python1.34
.1 libcucul0 libcurl3 libcvsservice0
11592 libdirectfb-
1.0-
0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
11593 libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-
0 libicu38
11594 libiec61883-
0 libindex0 libisccc50 libisccfg50 libiw29
11595 libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
11596 libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
11597 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
11598 libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
11599 libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
11600 libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
11601 libpoppler-qt2 libpoppler3 libraw1394-
8 librss1 libsensors3
11602 libsmbios2 libssh2-
1 libsuitesparse-
3.1.0 libswfdec-
0.6-
90
11603 libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
11604 mpeglib network-manager-kde noatun pmount tex-common texlive-base
11605 texlive-common texlive-doc-base texlive-fonts-recommended tidy
11606 ttf-dustin ttf-kochi-gothic ttf-sjfonts
11609 <p>Installed using aptitude, missing with apt-get
</p>
11612 dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
11613 kdeartwork kdebase kdebase-apps kdebase-workspace
11614 kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
11615 kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
11616 netpbm plasma-widget-folderview plasma-widget-networkmanagement
11617 xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
11618 xscreensaver-screensaver-bsod
11621 <p>Installed using aptitude, removed with apt-get
</p>
11624 kdebase-bin konq-plugins konqueror
11631 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11636 <div class=
"padding"></div>
11638 <div class=
"entry">
11639 <div class=
"title">
11640 <a href=
"http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html">Gnash buildbot slave and Debian kfreebsd
</a>
11647 <a href=
"http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html">the
11648 call from the Gnash project
</a> for
11649 <a href=
"http://www.gnashdev.org:8010">buildbot
</a> slaves to test the
11650 current source, I have set up a virtual KVM machine on the Debian
11651 Edu/Skolelinux virtualization host to test the git source on
11652 Debian/Squeeze. I hope this can help the developers in getting new
11653 releases out more often.
</p>
11655 <p>As the developers want less main-stream build platforms tested to,
11656 I have considered setting up a
<a
11657 href=
"http://www.debian.org/ports/kfreebsd-gnu/">Debian/kfreebsd
</a>
11658 machine as well. I have also considered using the kfreebsd
11659 architecture in Debian as a file server in NUUG to get access to the
5
11660 TB zfs volume we currently use to store DV video. Because of this, I
11661 finally got around to do a test installation of Debian/Squeeze with
11662 kfreebsd. Installation went fairly smooth, thought I noticed some
11663 visual glitches in the cdebconf dialogs (black cursor left on the
11664 screen at random locations). Have not gotten very far with the
11665 testing. Noticed cfdisk did not work, but fdisk did so it was not a
11666 fatal problem. Have to spend some more time on it to see if it is
11667 useful as a file server for NUUG. Will try to find time to set up a
11668 gnash buildbot slave on the Debian Edu/Skolelinux this weekend.
</p>
11674 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11679 <div class=
"padding"></div>
11681 <div class=
"entry">
11682 <div class=
"title">
11683 <a href=
"http://people.skolelinux.org/pere/blog/Debian_in_3D.html">Debian in
3D
</a>
11689 <p><img src=
"http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg"></p>
11691 <p>3D printing is just great. I just came across this Debian logo in
11693 <a href=
"http://blog.thingiverse.com/2010/11/09/participatory-branding/">the
11694 thingiverse blog
</a>.
</p>
11700 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
11705 <div class=
"padding"></div>
11707 <div class=
"entry">
11708 <div class=
"title">
11709 <a href=
"http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates
2010-
10-
24</a>
11715 <p>Some updates.
</p>
11717 <p>My
<a href=
"http://pledgebank.com/gnash-avm2">gnash pledge
</a> to
11718 raise money for the project is going well. The lower limit of
10
11719 signers was reached in
24 hours, and so far
13 people have signed it.
11720 More signers and more funding is most welcome, and I am really curious
11721 how far we can get before the time limit of December
24 is reached.
11724 <p>On the #gnash IRC channel on irc.freenode.net, I was just tipped
11725 about what appear to be a great code coverage tool capable of
11726 generating code coverage stats without any changes to the source code.
11728 <a href=
"http://simonkagstrom.github.com/kcov/index.html">kcov
</a>,
11729 and can be used using
<tt>kcov
<directory
> <binary
></tt>.
11730 It is missing in Debian, but the git source built just fine in Squeeze
11731 after I installed libelf-dev, libdwarf-dev, pkg-config and
11732 libglib2.0-dev. Failed to build in Lenny, but suspect that is
11733 solvable. I hope kcov make it into Debian soon.
</p>
11735 <p>Finally found time to wrap up the release notes for
<a
11736 href=
"http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html">a
11737 new alpha release of Debian Edu
</a>, and just published the second
11738 alpha test release of the Squeeze based Debian Edu /
11739 <a href=
"http://www.skolelinux.org/">Skolelinux
</a>
11740 release. Give it a try if you need a complete linux solution for your
11741 school, including central infrastructure server, workstations, thin
11742 client servers and diskless workstations. A nice touch added
11743 yesterday is RDP support on the thin client servers, for windows
11744 clients to get a Linux desktop on request.
</p>
11750 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>.
11755 <div class=
"padding"></div>
11757 <div class=
"entry">
11758 <div class=
"title">
11759 <a href=
"http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html">Some notes on Flash in Debian and Debian Edu
</a>
11765 <p>In the
<a href=
"http://popcon.debian.org/unknown/by_vote">Debian
11766 popularity-contest numbers
</a>, the adobe-flashplugin package the
11767 second most popular used package that is missing in Debian. The sixth
11768 most popular is flashplayer-mozilla. This is a clear indication that
11769 working flash is important for Debian users. Around
10 percent of the
11770 users submitting data to popcon.debian.org have this package
11773 <p>In the report written by Lars Risan in August
2008
11774 («
<a href=
"http://wiki.skolelinux.no/Dokumentasjon/Rapporter?action=AttachFile&do=view&target=Skolelinux_i_bruk_rapport_1.0.pdf">Skolelinux
11775 i bruk – Rapport for Hurum kommune, Universitetet i Agder og
11776 stiftelsen SLX Debian Labs
</a>»), one of the most important problems
11777 schools experienced with
<a href=
"http://www.skolelinux.org/">Debian
11778 Edu/Skolelinux
</a> was the lack of working Flash. A lot of educational
11779 web sites require Flash to work, and lacking working Flash support in
11780 the web browser and the problems with installing it was perceived as a
11781 good reason to stay with Windows.
</p>
11783 <p>I once saw a funny and sad comment in a web forum, where Linux was
11784 said to be the retarded cousin that did not really understand
11785 everything you told him but could work fairly well. This was a
11786 comment regarding the problems Linux have with proprietary formats and
11787 non-standard web pages, and is sad because it exposes a fairly common
11788 understanding of whose fault it is if web pages that only work in for
11789 example Internet Explorer
6 fail to work on Firefox, and funny because
11790 it explain very well how annoying it is for users when Linux
11791 distributions do not work with the documents they receive or the web
11792 pages they want to visit.
</p>
11794 <p>This is part of the reason why I believe it is important for Debian
11795 and Debian Edu to have a well working Flash implementation in the
11796 distribution, to get at least popular sites as Youtube and Google
11797 Video to working out of the box. For Squeeze, Debian have the chance
11798 to include the latest version of Gnash that will make this happen, as
11799 the new release
0.8.8 was published a few weeks ago and is resting in
11800 unstable. The new version work with more sites that version
0.8.7.
11801 The Gnash maintainers have asked for a freeze exception, but the
11802 release team have not had time to reply to it yet. I hope they agree
11803 with me that Flash is important for the Debian desktop users, and thus
11804 accept the new package into Squeeze.
</p>
11810 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/video">video
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
11815 <div class=
"padding"></div>
11817 <div class=
"entry">
11818 <div class=
"title">
11819 <a href=
"http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html">Circular package dependencies harms apt recovery
</a>
11825 <p>I discovered this while doing
11826 <a href=
"http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">automated
11827 testing of upgrades from Debian Lenny to Squeeze
</a>. A few packages
11828 in Debian still got circular dependencies, and it is often claimed
11829 that apt and aptitude should be able to handle this just fine, but
11830 some times these dependency loops causes apt to fail.
</p>
11832 <p>An example is from todays
11833 <a href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt">upgrade
11834 of KDE using aptitude
</a>. In it, a bug in kdebase-workspace-data
11835 causes perl-modules to fail to upgrade. The cause is simple. If a
11836 package fail to unpack, then only part of packages with the circular
11837 dependency might end up being unpacked when unpacking aborts, and the
11838 ones already unpacked will fail to configure in the recovery phase
11839 because its dependencies are unavailable.
</p>
11841 <p>In this log, the problem manifest itself with this error:
</p>
11844 dpkg: dependency problems prevent configuration of perl-modules:
11845 perl-modules depends on perl (
>=
5.10.1-
1); however:
11846 Version of perl on system is
5.10.0-
19lenny
2.
11847 dpkg: error processing perl-modules (--configure):
11848 dependency problems - leaving unconfigured
11849 </pre></blockquote>
11851 <p>The perl/perl-modules circular dependency is already
11852 <a href=
"http://bugs.debian.org/527917">reported as a bug
</a>, and will
11853 hopefully be solved as soon as possible, but it is not the only one,
11854 and each one of these loops in the dependency tree can cause similar
11855 failures. Of course, they only occur when there are bugs in other
11856 packages causing the unpacking to fail, but it is rather nasty when
11857 the failure of one package causes the problem to become worse because
11858 of dependency loops.
</p>
11861 <a href=
"http://lists.debian.org/debian-devel/2010/06/msg00116.html">the
11862 tireless effort by Bill Allombert
</a>, the number of circular
11864 <a href=
"http://debian.semistable.com/debgraph.out.html">left in Debian
11865 is dropping
</a>, and perhaps it will reach zero one day. :)
</p>
11867 <p>Todays testing also exposed a bug in
11868 <a href=
"http://bugs.debian.org/590605">update-notifier
</a> and
11869 <a href=
"http://bugs.debian.org/590604">different behaviour
</a> between
11870 apt-get and aptitude, the latter possibly caused by some circular
11871 dependency. Reported both to BTS to try to get someone to look at
11878 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
11883 <div class=
"padding"></div>
11885 <div class=
"entry">
11886 <div class=
"title">
11887 <a href=
"http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html">What are they searching for - PowerDNS and ISC DHCP in LDAP
</a>
11894 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">followup
</a>
11896 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">previous
11898 <a href=
"http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">merging
11899 all
</a> the computer related LDAP objects in Debian Edu.
</p>
11901 <p>As a step to try to see if it possible to merge the DNS and DHCP
11902 LDAP objects, I have had a look at how the packages pdns-backend-ldap
11903 and dhcp3-server-ldap in Debian use the LDAP server. The two
11904 implementations are quite different in how they use LDAP.
</p>
11906 To get this information, I started slapd with debugging enabled and
11907 dumped the debug output to a file to get the LDAP searches performed
11908 on a Debian Edu main-server. Here is a summary.
11910 <p><strong>powerdns
</strong></p>
11912 <a href=
"http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend">Clues
11913 on how to
</a> set up PowerDNS to use a LDAP backend is available on
11916 <p>PowerDNS have two modes of operation using LDAP as its backend.
11917 One "strict" mode where the forward and reverse DNS lookups are done
11918 using the same LDAP objects, and a "tree" mode where the forward and
11919 reverse entries are in two different subtrees in LDAP with a structure
11920 based on the DNS names, as in tjener.intern and
11921 2.2.0.10.in-addr.arpa.
</p>
11923 <p>In tree mode, the server is set up to use a LDAP subtree as its
11924 base, and uses a "base" scoped search for the DNS name by adding
11925 "dc=tjener,dc=intern," to the base with a filter for
11926 "(associateddomain=tjener.intern)" for the forward entry and
11927 "dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa," with a filter for
11928 "(associateddomain=
2.2.0.10.in-addr.arpa)" for the reverse entry. For
11929 forward entries, it is looking for attributes named dnsttl, arecord,
11930 nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
11931 txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
11932 srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
11933 ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
11934 spfrecord and modifytimestamp. For reverse entries it is looking for
11935 the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
11936 ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
11937 locrecord, srvrecord, naptrrecord and modifytimestamp. The equivalent
11938 ldapsearch commands could look like this:
</p>
11941 ldapsearch -h ldap \
11942 -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
11943 -s base -x '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
11944 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
11945 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
11946 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
11947 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
11949 ldapsearch -h ldap \
11950 -b dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
11951 -s base -x '(associateddomain=
2.2.0.10.in-addr.arpa)'
11952 dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
11953 hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
11954 srvrecord naptrrecord modifytimestamp
11955 </pre></blockquote>
11957 <p>In Debian Edu/Lenny, the PowerDNS tree mode is used with
11958 ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
11959 example LDAP objects used there. In addition to these objects, the
11960 parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
11964 dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
11966 objectclass: dnsdomain
11967 objectclass: domainrelatedobject
11970 associateddomain: tjener.intern
11972 dn: dc=
2,dc=
2,dc=
0,dc=
10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
11974 objectclass: dnsdomain2
11975 objectclass: domainrelatedobject
11977 ptrrecord: tjener.intern
11978 associateddomain:
2.2.0.10.in-addr.arpa
11979 </pre></blockquote>
11981 <p>In strict mode, the server behaves differently. When looking for
11982 forward DNS entries, it is doing a "subtree" scoped search with the
11983 same base as in the tree mode for a object with filter
11984 "(associateddomain=tjener.intern)" and requests the attributes dnsttl,
11985 arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
11986 mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
11987 naptrrecord and modifytimestamp. For reverse entires it also do a
11988 subtree scoped search but this time the filter is "(arecord=
10.0.2.2)"
11989 and the requested attributes are associateddomain, dnsttl and
11990 modifytimestamp. In short, in strict mode the objects with ptrrecord
11991 go away, and the arecord attribute in the forward object is used
11994 <p>The forward and reverse searches can be simulated using ldapsearch
11998 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
11999 '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
12000 cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
12001 rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
12002 nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
12003 rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
12005 ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
12006 '(arecord=
10.0.2.2)' associateddomain dnsttl modifytimestamp
12007 </pre></blockquote>
12009 <p>In addition to the forward and reverse searches , there is also a
12010 search for SOA records, which behave similar to the forward and
12011 reverse lookups.
</p>
12013 <p>A thing to note with the PowerDNS behaviour is that it do not
12014 specify any objectclass names, and instead look for the attributes it
12015 need to generate a DNS reply. This make it able to work with any
12016 objectclass that provide the needed attributes.
</p>
12018 <p>The attributes are normally provided in the cosine (RFC
1274) and
12019 dnsdomain2 schemas. The latter is used for reverse entries like
12020 ptrrecord and recent DNS additions like aaaarecord and srvrecord.
</p>
12022 <p>In Debian Edu, we have created DNS objects using the object classes
12023 dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
12024 attributes) and domainrelatedobject (for associatedDomain). The use
12025 of structural object classes make it impossible to combine these
12026 classes with the object classes used by DHCP.
</p>
12028 <p>There are other schemas that could be used too, for example the
12029 dnszone structural object class used by Gosa and bind-sdb for the DNS
12030 attributes combined with the domainrelatedobject object class, but in
12031 this case some unused attributes would have to be included as well
12032 (zonename and relativedomainname).
</p>
12034 <p>My proposal for Debian Edu would be to switch PowerDNS to strict
12035 mode and not use any of the existing objectclasses (dnsdomain,
12036 dnsdomain2 and dnszone) when one want to combine the DNS information
12037 with DHCP information, and instead create a auxiliary object class
12038 defined something like this (using the attributes defined for
12039 dnsdomain and dnsdomain2 or dnszone):
</p>
12042 objectclass ( some-oid NAME 'dnsDomainAux'
12045 MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
12046 DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
12047 TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
12048 NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
12049 A6Record $ DNAMERecord
12051 </pre></blockquote>
12053 <p>This will allow any object to become a DNS entry when combined with
12054 the domainrelatedobject object class, and allow any entity to include
12055 all the attributes PowerDNS wants. I've sent an email to the PowerDNS
12056 developers asking for their view on this schema and if they are
12057 interested in providing such schema with PowerDNS, and I hope my
12058 message will be accepted into their mailing list soon.
</p>
12060 <p><strong>ISC dhcp
</strong></p>
12062 <p>The DHCP server searches for specific objectclass and requests all
12063 the object attributes, and then uses the attributes it want. This
12064 make it harder to figure out exactly what attributes are used, but
12065 thanks to the working example in Debian Edu I can at least get an idea
12066 what is needed without having to read the source code.
</p>
12068 <p>In the DHCP server configuration, the LDAP base to use and the
12069 search filter to use to locate the correct dhcpServer entity is
12070 stored. These are the relevant entries from
12071 /etc/dhcp3/dhcpd.conf:
</p>
12074 ldap-base-dn "dc=skole,dc=skolelinux,dc=no";
12075 ldap-dhcp-server-cn "dhcp";
12076 </pre></blockquote>
12078 <p>The DHCP server uses this information to nest all the DHCP
12079 configuration it need. The cn "dhcp" is located using the given LDAP
12080 base and the filter "(&(objectClass=dhcpServer)(cn=dhcp))". The
12081 search result is this entry:
</p>
12084 dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
12087 objectClass: dhcpServer
12088 dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
12089 </pre></blockquote>
12091 <p>The content of the dhcpServiceDN attribute is next used to locate the
12092 subtree with DHCP configuration. The DHCP configuration subtree base
12093 is located using a base scope search with base "cn=DHCP
12094 Config,dc=skole,dc=skolelinux,dc=no" and filter
12095 "(&(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))".
12096 The search result is this entry:
</p>
12099 dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
12102 objectClass: dhcpService
12103 objectClass: dhcpOptions
12104 dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
12105 dhcpStatements: ddns-update-style none
12106 dhcpStatements: authoritative
12107 dhcpOption: smtp-server code
69 = array of ip-address
12108 dhcpOption: www-server code
72 = array of ip-address
12109 dhcpOption: wpad-url code
252 = text
12110 </pre></blockquote>
12112 <p>Next, the entire subtree is processed, one level at the time. When
12113 all the DHCP configuration is loaded, it is ready to receive requests.
12114 The subtree in Debian Edu contain objects with object classes
12115 top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
12116 top/dhcpSubnet, top/dhcpGroup and top/dhcpHost. These provide options
12117 and information about netmasks, dynamic range etc. Leaving out the
12118 details here because it is not relevant for the focus of my
12119 investigation, which is to see if it is possible to merge dns and dhcp
12120 related computer objects.
</p>
12122 <p>When a DHCP request come in, LDAP is searched for the MAC address
12123 of the client (
00:
00:
00:
00:
00:
00 in this example), using a subtree
12124 scoped search with "cn=DHCP Config,dc=skole,dc=skolelinux,dc=no" as
12125 the base and "(&(objectClass=dhcpHost)(dhcpHWAddress=ethernet
12126 00:
00:
00:
00:
00:
00))" as the filter. This is what a host object look
12130 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
12133 objectClass: dhcpHost
12134 dhcpHWAddress: ethernet
00:
00:
00:
00:
00:
00
12135 dhcpStatements: fixed-address hostname
12136 </pre></blockquote>
12138 <p>There is less flexiblity in the way LDAP searches are done here.
12139 The object classes need to have fixed names, and the configuration
12140 need to be stored in a fairly specific LDAP structure. On the
12141 positive side, the invidiual dhcpHost entires can be anywhere without
12142 the DN pointed to by the dhcpServer entries. The latter should make
12143 it possible to group all host entries in a subtree next to the
12144 configuration entries, and this subtree can also be shared with the
12145 DNS server if the schema proposed above is combined with the dhcpHost
12146 structural object class.
12148 <p><strong>Conclusion
</strong></p>
12150 <p>The PowerDNS implementation seem to be very flexible when it come
12151 to which LDAP schemas to use. While its "tree" mode is rigid when it
12152 come to the the LDAP structure, the "strict" mode is very flexible,
12153 allowing DNS objects to be stored anywhere under the base cn specified
12154 in the configuration.
</p>
12156 <p>The DHCP implementation on the other hand is very inflexible, both
12157 regarding which LDAP schemas to use and which LDAP structure to use.
12158 I guess one could implement ones own schema, as long as the
12159 objectclasses and attributes have the names used, but this do not
12160 really help when the DHCP subtree need to have a fairly fixed
12163 <p>Based on the observed behaviour, I suspect a LDAP structure like
12164 this might work for Debian Edu:
</p>
12168 cn=machine-info (dhcpService) - dhcpServiceDN points here
12169 cn=dhcp (dhcpServer)
12170 cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
12171 cn=
10.0.2.0 (dhcpSubnet)
12172 cn=group1 (dhcpGroup/dhcpOptions)
12173 cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
12174 cn=
192.168.0.0 (dhcpSubnet)
12175 cn=group1 (dhcpGroup/dhcpOptions)
12176 ou=machines - PowerDNS base points here
12177 cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
12178 </pre></blockquote>
12180 <P>This is not tested yet. If the DHCP server require the dhcpHost
12181 entries to be in the dhcpGroup subtrees, the entries can be stored
12182 there instead of a common machines subtree, and the PowerDNS base
12183 would have to be moved one level up to the machine-info subtree.
</p>
12185 <p>The combined object under the machines subtree would look something
12189 dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
12192 objectClass: dhcpHost
12193 objectclass: domainrelatedobject
12194 objectclass: dnsDomainAux
12195 associateddomain: hostname.intern
12196 arecord:
10.11.12.13
12197 dhcpHWAddress: ethernet
00:
00:
00:
00:
00:
00
12198 dhcpStatements: fixed-address hostname.intern
12199 </pre></blockquote>
12201 </p>One could even add the LTSP configuration associated with a given
12202 machine, as long as the required attributes are available in a
12203 auxiliary object class.
</p>
12209 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12214 <div class=
"padding"></div>
12216 <div class=
"entry">
12217 <div class=
"title">
12218 <a href=
"http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">Combining PowerDNS and ISC DHCP LDAP objects
</a>
12224 <p>For a while now, I have wanted to find a way to change the DNS and
12225 DHCP services in Debian Edu to use the same LDAP objects for a given
12226 computer, to avoid the possibility of having a inconsistent state for
12227 a computer in LDAP (as in DHCP but no DNS entry or the other way
12228 around) and make it easier to add computers to LDAP.
</p>
12230 <p>I've looked at how powerdns and dhcpd is using LDAP, and using this
12231 information finally found a solution that seem to work.
</p>
12233 <p>The old setup required three LDAP objects for a given computer.
12234 One forward DNS entry, one reverse DNS entry and one DHCP entry. If
12235 we switch powerdns to use its strict LDAP method (ldap-method=strict
12236 in pdns-debian-edu.conf), the forward and reverse DNS entries are
12237 merged into one while making it impossible to transfer the reverse map
12238 to a slave DNS server.
</p>
12240 <p>If we also replace the object class used to get the DNS related
12241 attributes to one allowing these attributes to be combined with the
12242 dhcphost object class, we can merge the DNS and DHCP entries into one.
12243 I've written such object class in the dnsdomainaux.schema file (need
12244 proper OIDs, but that is a minor issue), and tested the setup. It
12247 <p>With this test setup in place, we can get away with one LDAP object
12248 for both DNS and DHCP, and even the LTSP configuration I suggested in
12249 an earlier email. The combined LDAP object will look something like
12253 dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
12255 objectClass: dhcphost
12256 objectclass: domainrelatedobject
12257 objectclass: dnsdomainaux
12258 associateddomain: hostname.intern
12259 arecord:
10.11.12.13
12260 dhcphwaddress: ethernet
00:
00:
00:
00:
00:
00
12261 dhcpstatements: fixed-address hostname
12263 </pre></blockquote>
12265 <p>The DNS server uses the associateddomain and arecord entries, while
12266 the DHCP server uses the dhcphwaddress and dhcpstatements entries
12267 before asking DNS to resolve the fixed-adddress. LTSP will use
12268 dhcphwaddress or associateddomain and the ldapconfig* attributes.
</p>
12270 <p>I am not yet sure if I can get the DHCP server to look for its
12271 dhcphost in a different location, to allow us to put the objects
12272 outside the "DHCP Config" subtree, but hope to figure out a way to do
12273 that. If I can't figure out a way to do that, we can still get rid of
12274 the hosts subtree and move all its content into the DHCP Config tree
12275 (which probably should be renamed to be more related to the new
12276 content. I suspect cn=dnsdhcp,ou=services or something like that
12277 might be a good place to put it.
</p>
12279 <p>If you want to help out with implementing this for Debian Edu,
12280 please contact us on debian-edu@lists.debian.org.
</p>
12286 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12291 <div class=
"padding"></div>
12293 <div class=
"entry">
12294 <div class=
"title">
12295 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html">Idea for storing LTSP configuration in LDAP
</a>
12301 <p>Vagrant mentioned on IRC today that ltsp_config now support
12302 sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
12303 clients, and that this can be used to fetch configuration from LDAP if
12304 Debian Edu choose to store configuration there.
</p>
12306 <p>Armed with this information, I got inspired and wrote a test module
12307 to get configuration from LDAP. The idea is to look up the MAC
12308 address of the client in LDAP, and look for attributes on the form
12309 ltspconfigsetting=value, and use this to export SETTING=value to the
12312 <p>The goal is to be able to store the LTSP configuration attributes
12313 in a "computer" LDAP object used by both DNS and DHCP, and thus
12314 allowing us to store all information about a computer in one place.
</p>
12316 <p>This is a untested draft implementation, and I welcome feedback on
12317 this approach. A real LDAP schema for the ltspClientAux objectclass
12318 need to be written. Comments, suggestions, etc?
</p>
12321 # Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
12323 # Fetch LTSP client settings from LDAP based on MAC address
12325 # Uses ethernet address as stored in the dhcpHost objectclass using
12326 # the dhcpHWAddress attribute or ethernet address stored in the
12327 # ieee802Device objectclass with the macAddress attribute.
12329 # This module is written to be schema agnostic, and only depend on the
12330 # existence of attribute names.
12332 # The LTSP configuration variables are saved directly using a
12333 # ltspConfig prefix and uppercasing the rest of the attribute name.
12334 # To set the SERVER variable, set the ltspConfigServer attribute.
12336 # Some LDAP schema should be created with all the relevant
12337 # configuration settings. Something like this should work:
12339 # objectclass (
1.1.2.2 NAME 'ltspClientAux'
12342 # MAY ( ltspConfigServer $ ltsConfigSound $ ... )
12344 LDAPSERVER=$(debian-edu-ldapserver)
12345 if [ "$LDAPSERVER" ] ; then
12346 LDAPBASE=$(debian-edu-ldapserver -b)
12347 for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk '{print $
5}'|sort -u) ; do
12348 filter="(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))"
12349 ldapsearch -h "$LDAPSERVER" -b "$LDAPBASE" -v -x "$filter" | \
12350 grep '^ltspConfig' | while read attr value ; do
12351 # Remove prefix and convert to upper case
12352 attr=$(echo $attr | sed 's/^ltspConfig//i' | tr a-z A-Z)
12353 # bass value on to clients
12354 eval "$attr=$value; export $attr"
12358 </pre></blockquote>
12360 <p>I'm not sure this shell construction will work, because I suspect
12361 the while block might end up in a subshell causing the variables set
12362 there to not show up in ltsp-config, but if that is the case I am sure
12363 the code can be restructured to make sure the variables are passed on.
12364 I expect that can be solved with some testing. :)
</p>
12366 <p>If you want to help out with implementing this for Debian Edu,
12367 please contact us on debian-edu@lists.debian.org.
</p>
12369 <p>Update
2010-
07-
17: I am aware of another effort to store LTSP
12370 configuration in LDAP that was created around year
2000 by
12371 <a href=
"http://www.pcxperience.com/thinclient/documentation/ldap.html">PC
12372 Xperience, Inc.,
2000</a>. I found its
12373 <a href=
"http://people.redhat.com/alikins/ltsp/ldap/">files
</a> on a
12374 personal home page over at redhat.com.
</p>
12380 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12385 <div class=
"padding"></div>
12387 <div class=
"entry">
12388 <div class=
"title">
12389 <a href=
"http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html">jXplorer, a very nice LDAP GUI
</a>
12396 <a href=
"http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">my
12397 last post
</a> about available LDAP tools in Debian, I was told about a
12398 LDAP GUI that is even better than luma. The java application
12399 <a href=
"http://jxplorer.org/">jXplorer
</a> is claimed to be capable of
12400 moving LDAP objects and subtrees using drag-and-drop, and can
12401 authenticate using Kerberos. I have only tested the Kerberos
12402 authentication, but do not have a LDAP setup allowing me to rewrite
12403 LDAP with my test user yet. It is
12404 <a href=
"http://packages.qa.debian.org/j/jxplorer.html">available in
12405 Debian
</a> testing and unstable at the moment. The only problem I
12406 have with it is how it handle errors. If something go wrong, its
12407 non-intuitive behaviour require me to go through some query work list
12408 and remove the failing query. Nothing big, but very annoying.
</p>
12414 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12419 <div class=
"padding"></div>
12421 <div class=
"entry">
12422 <div class=
"title">
12423 <a href=
"http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html">Lenny-
>Squeeze upgrades, apt vs aptitude with the Gnome desktop
</a>
12429 <p>Here is a short update on my
<a
12430 href=
"http://people.skolelinux.org/~pere/debian-upgrade-testing/">my
12431 Debian Lenny-
>Squeeze upgrade testing
</a>. Here is a summary of the
12432 difference for Gnome when it is upgraded by apt-get and aptitude. I'm
12433 not reporting the status for KDE, because the upgrade crashes when
12434 aptitude try because of missing conflicts
12435 (
<a href=
"http://bugs.debian.org/584861">#
584861</a> and
12436 <a href=
"http://bugs.debian.org/585716">#
585716</a>).
</p>
12438 <p>At the end of the upgrade test script, dpkg -l is executed to get a
12439 complete list of the installed packages. Based on this I see these
12440 differences when I did a test run today. As usual, I do not really
12441 know what the correct set of packages would be, but thought it best to
12442 publish the difference.
</p>
12444 <p>Installed using apt-get, missing with aptitude
</p>
12447 at-spi cpp-
4.3 finger gnome-spell gstreamer0.10-gnomevfs
12448 libatspi1.0-
0 libcupsys2 libeel2-data libgail-common libgdl-
1-common
12449 libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
12450 libgtksourceview-common libpt-
1.10.10-plugins-alsa
12451 libpt-
1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
12452 libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
12453 python-
4suite-xml python-eggtrayicon python-gtkhtml2
12454 python-gtkmozembed svgalibg1 xserver-xephyr zip
12457 <p>Installed using apt-get, removed with aptitude
</p>
12460 bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
12461 gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
12462 libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-
50
12463 libbluetooth2 libcamel1.2-
11 libcdio7 libcucul0 libcurl3
12464 libdirectfb-
1.0-
0 libdvdread3 libedata-cal1.2-
6 libedataserver1.2-
9
12465 libeel2-
2.20 libepc-
1.0-
1 libepc-ui-
1.0-
1 libexchange-storage1.2-
3
12466 libfaad0 libgd2-noxpm libgda3-
3 libgda3-common libggz2 libggzcore9
12467 libggzmod4 libgksu1.2-
0 libgksuui1.0-
1 libgmyth0 libgnome-desktop-
2
12468 libgnome-pilot2 libgnomecups1.0-
1 libgnomeprint2.2-
0
12469 libgnomeprintui2.2-
0 libgpod3 libgraphviz4 libgtkhtml2-
0
12470 libgtksourceview1.0-
0 libgucharmap6 libhesiod0 libicu38 libisccc50
12471 libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++
10
12472 libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
12473 libneon27 libnm-glib0 libnm-util0 libopal-
2.2 libosp5
12474 libparted1.8-
10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
12475 libpt-
1.10.10 libraw1394-
8 libsensors3 libsmbios2 libsoup2.2-
8
12476 libssh2-
1 libsuitesparse-
3.1.0 libswfdec-
0.6-
90 libtalloc1
12477 libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
12478 libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
12479 mysql-common swfdec-gnome totem-gstreamer wodim
12482 <p>Installed using aptitude, missing with apt-get
</p>
12485 gnome gnome-desktop-environment hamster-applet python-gnomeapplet
12486 python-gnomekeyring python-wnck rhythmbox-plugins xorg
12487 xserver-xorg-input-all xserver-xorg-input-evdev
12488 xserver-xorg-input-kbd xserver-xorg-input-mouse
12489 xserver-xorg-input-synaptics xserver-xorg-video-all
12490 xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
12491 xserver-xorg-video-chips xserver-xorg-video-cirrus
12492 xserver-xorg-video-dummy xserver-xorg-video-fbdev
12493 xserver-xorg-video-glint xserver-xorg-video-i128
12494 xserver-xorg-video-i740 xserver-xorg-video-mach64
12495 xserver-xorg-video-mga xserver-xorg-video-neomagic
12496 xserver-xorg-video-nouveau xserver-xorg-video-nv
12497 xserver-xorg-video-r128 xserver-xorg-video-radeon
12498 xserver-xorg-video-radeonhd xserver-xorg-video-rendition
12499 xserver-xorg-video-s3 xserver-xorg-video-s3virge
12500 xserver-xorg-video-savage xserver-xorg-video-siliconmotion
12501 xserver-xorg-video-sis xserver-xorg-video-sisusb
12502 xserver-xorg-video-tdfx xserver-xorg-video-tga
12503 xserver-xorg-video-trident xserver-xorg-video-tseng
12504 xserver-xorg-video-vesa xserver-xorg-video-vmware
12505 xserver-xorg-video-voodoo
12508 <p>Installed using aptitude, removed with apt-get
</p>
12511 deskbar-applet xserver-xorg xserver-xorg-core
12512 xserver-xorg-input-wacom xserver-xorg-video-intel
12513 xserver-xorg-video-openchrome
12516 <p>I was told on IRC that the xorg-xserver package was
12517 <a href=
"http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120">changed
12518 in git
</a> today to try to get apt-get to not remove xorg completely.
12519 No idea when it hits Squeeze, but when it does I hope it will reduce
12520 the difference somewhat.
12526 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
12531 <div class=
"padding"></div>
12533 <div class=
"entry">
12534 <div class=
"title">
12535 <a href=
"http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">LUMA, a very nice LDAP GUI
</a>
12541 <p>The last few days I have been looking into the status of the LDAP
12542 directory in Debian Edu, and in the process I started to miss a GUI
12543 tool to browse the LDAP tree. The only one I was able to find in
12544 Debian/Squeeze and Lenny is
12545 <a href=
"http://luma.sourceforge.net/">LUMA
</a>, which has proved to
12546 be a great tool to get a overview of the current LDAP directory
12547 populated by default in Skolelinux. Thanks to it, I have been able to
12548 find empty and obsolete subtrees, misplaced objects and duplicate
12549 objects. It will be installed by default in Debian/Squeeze. If you
12550 are working with LDAP, give it a go. :)
</p>
12552 <p>I did notice one problem with it I have not had time to report to
12553 the BTS yet. There is no .desktop file in the package, so the tool do
12554 not show up in the Gnome and KDE menus, but only deep down in in the
12555 Debian submenu in KDE. I hope that can be fixed before Squeeze is
12558 <p>I have not yet been able to get it to modify the tree yet. I would
12559 like to move objects and remove subtrees directly in the GUI, but have
12560 not found a way to do that with LUMA yet. So in the mean time, I use
12561 <a href=
"http://www.lichteblau.com/ldapvi/">ldapvi
</a> for that.
</p>
12563 <p>If you have tips on other GUI tools for LDAP that might be useful
12564 in Debian Edu, please contact us on debian-edu@lists.debian.org.
</p>
12566 <p>Update
2010-
06-
29: Ross Reedstrom tipped us about the
12567 <a href=
"http://packages.qa.debian.org/g/gq.html">gq
</a> package as a
12568 useful GUI alternative. It seem like a good tool, but is unmaintained
12569 in Debian and got a RC bug keeping it out of Squeeze. Unless that
12570 changes, it will not be an option for Debian Edu based on Squeeze.
</p>
12576 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12581 <div class=
"padding"></div>
12583 <div class=
"entry">
12584 <div class=
"title">
12585 <a href=
"http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">Idea for a change to LDAP schemas allowing DNS and DHCP info to be combined into one object
</a>
12592 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">complained
12593 about the fact
</a> that it is not possible with the provided schemas
12594 for storing DNS and DHCP information in LDAP to combine the two sets
12595 of information into one LDAP object representing a computer.
</p>
12597 <p>In the mean time, I discovered that a simple fix would be to make
12598 the dhcpHost object class auxiliary, to allow it to be combined with
12599 the dNSDomain object class, and thus forming one object for one
12600 computer when storing both DHCP and DNS information in LDAP.
</p>
12602 <p>If I understand this correctly, it is not safe to do this change
12603 without also changing the assigned number for the object class, and I
12604 do not know enough about LDAP schema design to do that properly for
12607 <p>Anyway, for future reference, this is how I believe we could change
12609 <a href=
"http://tools.ietf.org/html/draft-ietf-dhc-ldap-schema-00">DHCP
12610 schema
</a> to solve at least part of the problem with the LDAP schemas
12611 available today from IETF.
</p>
12614 --- dhcp.schema (revision
65192)
12615 +++ dhcp.schema (working copy)
12616 @@ -
376,
7 +
376,
7 @@
12617 objectclass (
2.16.840.1.113719.1.203.6.6
12619 DESC 'This represents information about a particular client'
12621 + SUP top AUXILIARY
12623 MAY (dhcpLeaseDN $ dhcpHWAddress $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
12624 X-NDS_CONTAINMENT ('dhcpService' 'dhcpSubnet' 'dhcpGroup') )
12627 <p>I very much welcome clues on how to do this properly for Debian
12628 Edu/Squeeze. We provide the DHCP schema in our debian-edu-config
12629 package, and should thus be free to rewrite it as we see fit.
</p>
12631 <p>If you want to help out with implementing this for Debian Edu,
12632 please contact us on debian-edu@lists.debian.org.
</p>
12638 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
12643 <div class=
"padding"></div>
12645 <div class=
"entry">
12646 <div class=
"title">
12647 <a href=
"http://people.skolelinux.org/pere/blog/Calling_tasksel_like_the_installer__while_still_getting_useful_output.html">Calling tasksel like the installer, while still getting useful output
</a>
12653 <p>A few times I have had the need to simulate the way tasksel
12654 installs packages during the normal debian-installer run. Until now,
12655 I have ended up letting tasksel do the work, with the annoying problem
12656 of not getting any feedback at all when something fails (like a
12657 conffile question from dpkg or a download that fails), using code like
12661 export DEBIAN_FRONTEND=noninteractive
12662 tasksel --new-install
12663 </pre></blockquote>
12665 This would invoke tasksel, let its automatic task selection pick the
12666 tasks to install, and continue to install the requested tasks without
12667 any output what so ever.
12669 Recently I revisited this problem while working on the automatic
12670 package upgrade testing, because tasksel would some times hang without
12671 any useful feedback, and I want to see what is going on when it
12672 happen. Then it occured to me, I can parse the output from tasksel
12673 when asked to run in test mode, and use that aptitude command line
12674 printed by tasksel then to simulate the tasksel run. I ended up using
12678 export DEBIAN_FRONTEND=noninteractive
12679 cmd="$(in_target tasksel -t --new-install | sed 's/debconf-apt-progress -- //')"
12681 </pre></blockquote>
12683 <p>The content of $cmd is typically something like "
<tt>aptitude -q
12684 --without-recommends -o APT::Install-Recommends=no -y install
12685 ~t^desktop$ ~t^gnome-desktop$ ~t^laptop$ ~pstandard ~prequired
12686 ~pimportant
</tt>", which will install the gnome desktop task, the
12687 laptop task and all packages with priority standard , required and
12688 important, just like tasksel would have done it during
12691 <p>A better approach is probably to extend tasksel to be able to
12692 install packages without using debconf-apt-progress, for use cases
12699 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug</a>.
12704 <div class="padding
"></div>
12706 <div class="entry
">
12707 <div class="title
">
12708 <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__removals_by_apt_and_aptitude.html
">Lenny->Squeeze upgrades, removals by apt and aptitude</a>
12715 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html
">testing
12716 of Debian upgrades</a> from Lenny to Squeeze continues, and I've
12717 finally made the upgrade logs available from
12718 <a href="http://people.skolelinux.org/pere/debian-upgrade-testing/
">http://people.skolelinux.org/pere/debian-upgrade-testing/</a>.
12719 I am now testing dist-upgrade of Gnome and KDE in a chroot using both
12720 apt and aptitude, and found their differences interesting. This time
12721 I will only focus on their removal plans.</p>
12723 <p>After installing a Gnome desktop and the laptop task, apt-get wants
12724 to remove 72 packages when dist-upgrading from Lenny to Squeeze. The
12725 surprising part is that it want to remove xorg and all
12726 xserver-xorg-video* drivers. Clearly not a good choice, but I am not
12727 sure why. When asking aptitude to do the same, it want to remove 129
12728 packages, but most of them are library packages I suspect are no
12729 longer needed. Both of them want to remove bluetooth packages, which
12730 I do not know. Perhaps these bluetooth packages are obsolete?</p>
12732 <p>For KDE, apt-get want to remove 82 packages, among them kdebase
12733 which seem like a bad idea and xorg the same way as with Gnome. Asking
12734 aptitude for the same, it wants to remove 192 packages, none which are
12735 too surprising.</p>
12737 <p>I guess the removal of xorg during upgrades should be investigated
12738 and avoided, and perhaps others as well. Here are the complete list
12739 of planned removals. The complete logs is available from the URL
12740 above. Note if you want to repeat these tests, that the upgrade test
12741 for kde+apt-get hung in the tasksel setup because of dpkg asking
12742 conffile questions. No idea why. I worked around it by using
12743 '<tt>echo >> /proc/<em>pidofdpkg</em>/fd/0</tt>' to tell dpkg to
12746 <p><b>apt-get gnome 72</b>
12747 <br>bluez-gnome cupsddk-drivers deskbar-applet gnome
12748 gnome-desktop-environment gnome-network-admin gtkhtml3.14
12749 iceweasel-gnome-support libavcodec51 libdatrie0 libgdl-1-0
12750 libgnomekbd2 libgnomekbdui2 libmetacity0 libslab0 libxcb-xlib0
12751 nautilus-cd-burner python-gnome2-desktop python-gnome2-extras
12752 serpentine swfdec-mozilla update-manager xorg xserver-xorg
12753 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
12754 xserver-xorg-input-kbd xserver-xorg-input-mouse
12755 xserver-xorg-input-synaptics xserver-xorg-input-wacom
12756 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
12757 xserver-xorg-video-ati xserver-xorg-video-chips
12758 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
12759 xserver-xorg-video-dummy xserver-xorg-video-fbdev
12760 xserver-xorg-video-glint xserver-xorg-video-i128
12761 xserver-xorg-video-i740 xserver-xorg-video-imstt
12762 xserver-xorg-video-intel xserver-xorg-video-mach64
12763 xserver-xorg-video-mga xserver-xorg-video-neomagic
12764 xserver-xorg-video-nsc xserver-xorg-video-nv
12765 xserver-xorg-video-openchrome xserver-xorg-video-r128
12766 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
12767 xserver-xorg-video-rendition xserver-xorg-video-s3
12768 xserver-xorg-video-s3virge xserver-xorg-video-savage
12769 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
12770 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
12771 xserver-xorg-video-tga xserver-xorg-video-trident
12772 xserver-xorg-video-tseng xserver-xorg-video-v4l
12773 xserver-xorg-video-vesa xserver-xorg-video-vga
12774 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9
12775 xulrunner-1.9-gnome-support</p>
12777 <p><b>aptitude gnome 129</b>
12779 <br>bluez-gnome bluez-utils cpp-4.3 cupsddk-drivers dhcdbd
12780 djvulibre-desktop finger gnome-app-install gnome-mount
12781 gnome-network-admin gnome-spell gnome-vfs-obexftp
12782 gnome-volume-manager gstreamer0.10-gnomevfs gtkhtml3.14 libao2
12783 libavahi-compat-libdnssd1 libavahi-core5 libavcodec51 libbluetooth2
12784 libcamel1.2-11 libcdio7 libcucul0 libcupsys2 libcurl3 libdatrie0
12785 libdirectfb-1.0-0 libdvdread3 libedataserver1.2-9 libeel2-2.20
12786 libeel2-data libepc-1.0-1 libepc-ui-1.0-1 libfaad0 libgail-common
12787 libgd2-noxpm libgda3-3 libgda3-common libgdl-1-0 libgdl-1-common
12788 libggz2 libggzcore9 libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0
12789 libgnomecups1.0-1 libgnomekbd2 libgnomekbdui2 libgnomeprint2.2-0
12790 libgnomeprint2.2-data libgnomeprintui2.2-0 libgnomeprintui2.2-common
12791 libgnomevfs2-bin libgpod3 libgraphviz4 libgtkhtml2-0
12792 libgtksourceview-common libgtksourceview1.0-0 libgucharmap6
12793 libhesiod0 libicu38 libiw29 libkpathsea4 libltdl3 libmagick++10
12794 libmagick10 libmalaga7 libmetacity0 libmtp7 libmysqlclient15off
12795 libnautilus-burn4 libneon27 libnm-glib0 libnm-util0 libopal-2.2
12796 libosp5 libparted1.8-10 libpoppler-glib3 libpoppler3 libpt-1.10.10
12797 libpt-1.10.10-plugins-alsa libpt-1.10.10-plugins-v4l libraw1394-8
12798 libsensors3 libslab0 libsmbios2 libsoup2.2-8 libssh2-1
12799 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1 libtotem-plparser10
12800 libtrackerclient0 libxalan2-java libxalan2-java-gcj libxcb-xlib0
12801 libxerces2-java libxerces2-java-gcj libxklavier12 libxtrap6
12802 libxxf86misc1 libzephyr3 mysql-common nautilus-cd-burner
12803 openoffice.org-writer2latex openssl-blacklist p7zip
12804 python-4suite-xml python-eggtrayicon python-gnome2-desktop
12805 python-gnome2-extras python-gtkhtml2 python-gtkmozembed
12806 python-numeric python-sexy serpentine svgalibg1 swfdec-gnome
12807 swfdec-mozilla totem-gstreamer update-manager wodim
12808 xserver-xorg-video-cyrix xserver-xorg-video-imstt
12809 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
12812 <p><b>apt-get kde 82</b>
12814 <br>cupsddk-drivers karm kaudiocreator kcoloredit kcontrol kde kde-core
12815 kdeaddons kdeartwork kdebase kdebase-bin kdebase-bin-kde3
12816 kdebase-kio-plugins kdesktop kdeutils khelpcenter kicker
12817 kicker-applets knewsticker kolourpaint konq-plugins konqueror korn
12818 kpersonalizer kscreensaver ksplash libavcodec51 libdatrie0 libkiten1
12819 libxcb-xlib0 quanta superkaramba texlive-base-bin xorg xserver-xorg
12820 xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev
12821 xserver-xorg-input-kbd xserver-xorg-input-mouse
12822 xserver-xorg-input-synaptics xserver-xorg-input-wacom
12823 xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark
12824 xserver-xorg-video-ati xserver-xorg-video-chips
12825 xserver-xorg-video-cirrus xserver-xorg-video-cyrix
12826 xserver-xorg-video-dummy xserver-xorg-video-fbdev
12827 xserver-xorg-video-glint xserver-xorg-video-i128
12828 xserver-xorg-video-i740 xserver-xorg-video-imstt
12829 xserver-xorg-video-intel xserver-xorg-video-mach64
12830 xserver-xorg-video-mga xserver-xorg-video-neomagic
12831 xserver-xorg-video-nsc xserver-xorg-video-nv
12832 xserver-xorg-video-openchrome xserver-xorg-video-r128
12833 xserver-xorg-video-radeon xserver-xorg-video-radeonhd
12834 xserver-xorg-video-rendition xserver-xorg-video-s3
12835 xserver-xorg-video-s3virge xserver-xorg-video-savage
12836 xserver-xorg-video-siliconmotion xserver-xorg-video-sis
12837 xserver-xorg-video-sisusb xserver-xorg-video-tdfx
12838 xserver-xorg-video-tga xserver-xorg-video-trident
12839 xserver-xorg-video-tseng xserver-xorg-video-v4l
12840 xserver-xorg-video-vesa xserver-xorg-video-vga
12841 xserver-xorg-video-vmware xserver-xorg-video-voodoo xulrunner-1.9</p>
12843 <p><b>aptitude kde 192</b>
12844 <br>bluez-utils cpp-4.3 cupsddk-drivers cvs dcoprss dhcdbd
12845 djvulibre-desktop dosfstools eyesapplet fifteenapplet finger gettext
12846 ghostscript-x imlib-base imlib11 indi kandy karm kasteroids
12847 kaudiocreator kbackgammon kbstate kcoloredit kcontrol kcron kdat
12848 kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
12849 kdebase-bin-kde3 kdebase-kio-plugins kdeedu-data
12850 kdegraphics-kfile-plugins kdelirc kdemultimedia-kappfinder-data
12851 kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
12852 kdepim-kfile-plugins kdepim-kio-plugins kdeprint kdesktop kdessh
12853 kdict kdnssd kdvi kedit keduca kenolaba kfax kfaxview kfouleggs
12854 kghostview khelpcenter khexedit kiconedit kitchensync klatin
12855 klickety kmailcvt kmenuedit kmid kmilo kmoon kmrml kodo kolourpaint
12856 kooka korn kpager kpdf kpercentage kpf kpilot kpoker kpovmodeler
12857 krec kregexpeditor ksayit ksim ksirc ksirtet ksmiletris ksmserver
12858 ksnake ksokoban ksplash ksvg ksysv ktip ktnef kuickshow kverbos
12859 kview kviewshell kvoctrain kwifimanager kwin kwin4 kworldclock
12860 kxsldbg libakode2 libao2 libarts1-akode libarts1-audiofile
12861 libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
12862 libavahi-core5 libavc1394-0 libavcodec51 libbluetooth2
12863 libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0 libdatrie0
12864 libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
12865 libgail-common libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0
12866 libicu38 libiec61883-0 libindex0 libiw29 libk3b3 libkcal2b libkcddb1
12867 libkdeedu3 libkdepim1a libkgantt0 libkiten1 libkleopatra1 libkmime2
12868 libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
12869 libksieve0 libktnef1 liblockdev1 libltdl3 libmagick10 libmimelib1c2a
12870 libmozjs1d libmpcdec3 libneon27 libnm-util0 libopensync0 libpisock9
12871 libpoppler-glib3 libpoppler-qt2 libpoppler3 libraw1394-8 libsmbios2
12872 libssh2-1 libsuitesparse-3.1.0 libtalloc1 libtiff-tools
12873 libxalan2-java libxalan2-java-gcj libxcb-xlib0 libxerces2-java
12874 libxerces2-java-gcj libxtrap6 mpeglib networkstatus
12875 openoffice.org-writer2latex pmount poster psutils quanta quanta-data
12876 superkaramba svgalibg1 tex-common texlive-base texlive-base-bin
12877 texlive-common texlive-doc-base texlive-fonts-recommended
12878 xserver-xorg-video-cyrix xserver-xorg-video-imstt
12879 xserver-xorg-video-nsc xserver-xorg-video-v4l xserver-xorg-video-vga
12887 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.
12892 <div class="padding
"></div>
12894 <div class="entry
">
12895 <div class="title
">
12896 <a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html
">Automatic upgrade testing from Lenny to Squeeze</a>
12902 <p>The last few days I have done some upgrade testing in Debian, to
12903 see if the upgrade from Lenny to Squeeze will go smoothly. A few bugs
12904 have been discovered and reported in the process
12905 (<a href="http://bugs.debian.org/
585410">#585410</a> in nagios3-cgi,
12906 <a href="http://bugs.debian.org/
584879">#584879</a> already fixed in
12907 enscript and <a href="http://bugs.debian.org/
584861">#584861</a> in
12908 kdebase-workspace-data), and to get a more regular testing going on, I
12909 am working on a script to automate the test.</p>
12911 <p>The idea is to create a Lenny chroot and use tasksel to install a
12912 Gnome or KDE desktop installation inside the chroot before upgrading
12913 it. To ensure no services are started in the chroot, a policy-rc.d
12914 script is inserted. To make sure tasksel believe it is to install a
12915 desktop on a laptop, the tasksel tests are replaced in the chroot
12916 (only acceptable because this is a throw-away chroot).</p>
12918 <p>A naive upgrade from Lenny to Squeeze using aptitude dist-upgrade
12919 currently always fail because udev refuses to upgrade with the kernel
12920 in Lenny, so to avoid that problem the file /etc/udev/kernel-upgrade
12921 is created. The bug report
12922 <a href="http://bugs.debian.org/
566000">#566000</a> make me suspect
12923 this problem do not trigger in a chroot, but I touch the file anyway
12924 to make sure the upgrade go well. Testing on virtual and real
12925 hardware have failed me because of udev so far, and creating this file
12926 do the trick in such settings anyway. This is a
12927 <a href="http://www.linuxquestions.org/questions/debian-
26/failed-dist-upgrade-due-to-udev-config_sysfs_deprecated-nonsense-
804130/
">known
12928 issue</a> and the current udev behaviour is intended by the udev
12929 maintainer because he lack the resources to rewrite udev to keep
12930 working with old kernels or something like that. I really wish the
12931 udev upstream would keep udev backwards compatible, to avoid such
12932 upgrade problem, but given that they fail to do so, I guess
12933 documenting the way out of this mess is the best option we got for
12934 Debian Squeeze.</p>
12936 <p>Anyway, back to the task at hand, testing upgrades. This test
12937 script, which I call <tt>upgrade-test</tt> for now, is doing the
12953 exec
< /dev/null
12955 mirror=http://ftp.skolelinux.org/debian
12956 tmpdir=chroot-$from-upgrade-$to-$desktop
12958 debootstrap $from $tmpdir $mirror
12959 chroot $tmpdir aptitude update
12960 cat
> $tmpdir/usr/sbin/policy-rc.d
<<EOF
12964 chmod a+rx $tmpdir/usr/sbin/policy-rc.d
12966 umount $tmpdir/proc
12968 mount -t proc proc $tmpdir/proc
12969 # Make sure proc is unmounted also on failure
12970 trap exit_cleanup EXIT INT
12972 chroot $tmpdir aptitude -y install debconf-utils
12974 # Make sure tasksel autoselection trigger. It need the test scripts
12975 # to return the correct answers.
12976 echo tasksel tasksel/desktop multiselect $desktop | \
12977 chroot $tmpdir debconf-set-selections
12979 # Include the desktop and laptop task
12980 for test in desktop laptop ; do
12981 echo
> $tmpdir/usr/lib/tasksel/tests/$test
<<EOF
12985 chmod a+rx $tmpdir/usr/lib/tasksel/tests/$test
12988 DEBIAN_FRONTEND=noninteractive
12989 DEBIAN_PRIORITY=critical
12990 export DEBIAN_FRONTEND DEBIAN_PRIORITY
12991 chroot $tmpdir tasksel --new-install
12993 echo deb $mirror $to main
> $tmpdir/etc/apt/sources.list
12994 chroot $tmpdir aptitude update
12995 touch $tmpdir/etc/udev/kernel-upgrade
12996 chroot $tmpdir aptitude -y dist-upgrade
12998 </pre></blockquote>
13000 <p>I suspect it would be useful to test upgrades with both apt-get and
13001 with aptitude, but I have not had time to look at how they behave
13002 differently so far. I hope to get a cron job running to do the test
13003 regularly and post the result on the web. The Gnome upgrade currently
13004 work, while the KDE upgrade fail because of the bug in
13005 kdebase-workspace-data
</p>
13007 <p>I am not quite sure what kind of extract from the huge upgrade logs
13008 (KDE
167 KiB, Gnome
516 KiB) it make sense to include in this blog
13009 post, so I will refrain from trying. I can report that for Gnome,
13010 aptitude report
760 packages upgraded,
448 newly installed,
129 to
13011 remove and
1 not upgraded and
1024MB need to be downloaded while for
13012 KDE the same numbers are
702 packages upgraded,
507 newly installed,
13013 193 to remove and
0 not upgraded and
1117MB need to be downloaded
</p>
13015 <p>I am very happy to notice that the Gnome desktop + laptop upgrade
13016 is able to migrate to dependency based boot sequencing and parallel
13017 booting without a hitch. Was unsure if there were still bugs with
13018 packages failing to clean up their obsolete init.d script during
13019 upgrades, and no such problem seem to affect the Gnome desktop+laptop
13026 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13031 <div class=
"padding"></div>
13033 <div class=
"entry">
13034 <div class=
"title">
13035 <a href=
"http://people.skolelinux.org/pere/blog/Upstart_or_sysvinit___as_init_d_scripts_see_it.html">Upstart or sysvinit - as init.d scripts see it
</a>
13041 <p>If Debian is to migrate to upstart on Linux, I expect some init.d
13042 scripts to migrate (some of) their operations to upstart job while
13043 keeping the init.d for hurd and kfreebsd. The packages with such
13044 needs will need a way to get their init.d scripts to behave
13045 differently when used with sysvinit and with upstart. Because of
13046 this, I had a look at the environment variables set when a init.d
13047 script is running under upstart, and when it is not.
</p>
13049 <p>With upstart, I notice these environment variables are set when a
13050 script is started from rcS.d/ (ignoring some irrelevant ones like
13059 UPSTART_EVENTS=startup
13061 UPSTART_JOB=rc-sysinit
13062 </pre></blockquote>
13064 <p>With sysvinit, these environment variables are set for the same
13068 INIT_VERSION=sysvinit-
2.88
13073 </pre></blockquote>
13075 <p>The RUNLEVEL and PREVLEVEL environment variables passed on from
13076 sysvinit are not set by upstart. Not sure if it is intentional or not
13077 to not be compatible with sysvinit in this regard.
</p>
13079 <p>For scripts needing to behave differently when upstart is used,
13080 looking for the UPSTART_JOB environment variable seem to be a good
13087 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13092 <div class=
"padding"></div>
13094 <div class=
"entry">
13095 <div class=
"title">
13096 <a href=
"http://people.skolelinux.org/pere/blog/A_manual_for_standards_wars___.html">A manual for standards wars...
</a>
13103 <a href=
"http://feedproxy.google.com/~r/robweir/antic-atom/~3/QzU4RgoAGMg/weekly-links-10.html">blog
13104 of Rob Weir
</a> I came across the very interesting essay named
13105 <a href=
"http://faculty.haas.berkeley.edu/shapiro/wars.pdf">The Art of
13106 Standards Wars
</a> (PDF
25 pages). I recommend it for everyone
13107 following the standards wars of today.
</p>
13113 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
13118 <div class=
"padding"></div>
13120 <div class=
"entry">
13121 <div class=
"title">
13122 <a href=
"http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_computer_hardware_models_used_at_site.html">Sitesummary tip: Listing computer hardware models used at site
</a>
13128 <p>When using sitesummary at a site to track machines, it is possible
13129 to get a list of the machine types in use thanks to the DMI
13130 information extracted from each machine. The script to do so is
13131 included in the sitesummary package, and here is example output from
13132 the Skolelinux build servers:
</p>
13135 maintainer:~# /usr/lib/sitesummary/hardware-model-summary
13137 Dell Computer Corporation
1
13140 eserver xSeries
345 -[
8670M1X]-
1
13144 </pre></blockquote>
13146 <p>The quality of the report depend on the quality of the DMI tables
13147 provided in each machine. Here there are Intel machines without model
13148 information listed with Intel as vendor and no model, and virtual Xen
13149 machines listed as [no-dmi-info]. One can add -l as a command line
13150 option to list the individual machines.
</p>
13152 <p>A larger list is
13153 <a href=
"http://narvikskolen.no/sitesummary/">available from the the
13154 city of Narvik
</a>, which uses Skolelinux on all their shools and also
13155 provide the basic sitesummary report publicly. In their report there
13156 are ~
1400 machines. I know they use both Ubuntu and Skolelinux on
13157 their machines, and as sitesummary is available in both distributions,
13158 it is trivial to get all of them to report to the same central
13165 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary
</a>.
13170 <div class=
"padding"></div>
13172 <div class=
"entry">
13173 <div class=
"title">
13174 <a href=
"http://people.skolelinux.org/pere/blog/KDM_fail_at_boot_with_NVidia_cards___and_no_one_try_to_fix_it_.html">KDM fail at boot with NVidia cards - and no one try to fix it?
</a>
13180 <p>It is strange to watch how a bug in Debian causing KDM to fail to
13181 start at boot when an NVidia video card is used is handled. The
13182 problem seem to be that the nvidia X.org driver uses a long time to
13183 initialize, and this duration is longer than kdm is configured to
13186 <p>I came across two bugs related to this issue,
13187 <a href=
"http://bugs.debian.org/583312">#
583312</a> initially filed
13188 against initscripts and passed on to nvidia-glx when it became obvious
13189 that the nvidia drivers were involved, and
13190 <a href=
"http://bugs.debian.org/524751">#
524751</a> initially filed against
13191 kdm and passed on to src:nvidia-graphics-drivers for unknown reasons.
</p>
13193 <p>To me, it seem that no-one is interested in actually solving the
13194 problem nvidia video card owners experience and make sure the Debian
13195 distribution work out of the box for these users. The nvidia driver
13196 maintainers expect kdm to be set up to wait longer, while kdm expect
13197 the nvidia driver maintainers to fix the driver to start faster, and
13198 while they wait for each other I guess the users end up switching to a
13199 distribution that work for them. I have no idea what the solution is,
13200 but I am pretty sure that waiting for each other is not it.
</p>
13202 <p>I wonder why we end up handling bugs this way.
</p>
13208 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13213 <div class=
"padding"></div>
13215 <div class=
"entry">
13216 <div class=
"title">
13217 <a href=
"http://people.skolelinux.org/pere/blog/Parallellized_boot_seem_to_hold_up_well_in_Debian_testing.html">Parallellized boot seem to hold up well in Debian/testing
</a>
13223 <p>A few days ago, parallel booting was enabled in Debian/testing.
13224 The feature seem to hold up pretty well, but three fairly serious
13225 issues are known and should be solved:
13229 <li>The wicd package seen to
13230 <a href=
"http://bugs.debian.org/508289">break NFS mounting
</a> and
13231 <a href=
"http://bugs.debian.org/581586">network setup
</a> when
13232 parallel booting is enabled. No idea why, but the wicd maintainer
13233 seem to be on the case.
</li>
13235 <li>The nvidia X driver seem to
13236 <a href=
"http://bugs.debian.org/583312">have a race condition
</a>
13237 triggered more easily when parallel booting is in effect. The
13238 maintainer is on the case.
</li>
13240 <li>The sysv-rc package fail to properly enable dependency based boot
13241 sequencing (the shutdown is broken) when old file-rc users
13242 <a href=
"http://bugs.debian.org/575080">try to switch back
</a> to
13243 sysv-rc. One way to solve it would be for file-rc to create
13244 /etc/init.d/.legacy-bootordering, and another is to try to make
13245 sysv-rc more robust. Will investigate some more and probably upload a
13246 workaround in sysv-rc to help those trying to move from file-rc to
13247 sysv-rc get a working shutdown.
</li>
13251 <p>All in all not many surprising issues, and all of them seem
13252 solvable before Squeeze is released. In addition to these there are
13253 some packages with bugs in their dependencies and run level settings,
13254 which I expect will be fixed in a reasonable time span.
</p>
13256 <p>If you report any problems with dependencies in init.d scripts to
13257 the BTS, please usertag the report to get it to show up at
13258 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
13259 list of usertagged bugs related to this
</a>.
</p>
13261 <p>Update: Correct bug number to file-rc issue.
</p>
13267 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13272 <div class=
"padding"></div>
13274 <div class=
"entry">
13275 <div class=
"title">
13276 <a href=
"http://people.skolelinux.org/pere/blog/More_flexible_firmware_handling_in_debian_installer.html">More flexible firmware handling in debian-installer
</a>
13282 <p>After a long break from debian-installer development, I finally
13283 found time today to return to the project. Having to spend less time
13284 working dependency based boot in debian, as it is almost complete now,
13285 definitely helped freeing some time.
</p>
13287 <p>A while back, I ran into a problem while working on Debian Edu. We
13288 include some firmware packages on the Debian Edu CDs, those needed to
13289 get disk and network controllers working. Without having these
13290 firmware packages available during installation, it is impossible to
13291 install Debian Edu on the given machine, and because our target group
13292 are non-technical people, asking them to provide firmware packages on
13293 an external medium is a support pain. Initially, I expected it to be
13294 enough to include the firmware packages on the CD to get
13295 debian-installer to find and use them. This proved to be wrong.
13296 Next, I hoped it was enough to symlink the relevant firmware packages
13297 to some useful location on the CD (tried /cdrom/ and
13298 /cdrom/firmware/). This also proved to not work, and at this point I
13299 found time to look at the debian-installer code to figure out what was
13302 <p>The firmware loading code is in the hw-detect package, and a closer
13303 look revealed that it would only look for firmware packages outside
13304 the installation media, so the CD was never checked for firmware
13305 packages. It would only check USB sticks, floppies and other
13306 "external" media devices. Today I changed it to also look in the
13307 /cdrom/firmware/ directory on the mounted CD or DVD, which should
13308 solve the problem I ran into with Debian edu. I also changed it to
13309 look in /firmware/, to make sure the installer also find firmware
13310 provided in the initrd when booting the installer via PXE, to allow us
13311 to provide the same feature in the PXE setup included in Debian
13314 <p>To make sure firmware deb packages with a license questions are not
13315 activated without asking if the license is accepted, I extended
13316 hw-detect to look for preinst scripts in the firmware packages, and
13317 run these before activating the firmware during installation. The
13318 license question is asked using debconf in the preinst, so this should
13319 solve the issue for the firmware packages I have looked at so far.
</p>
13321 <p>If you want to discuss the details of these features, please
13322 contact us on debian-boot@lists.debian.org.
</p>
13328 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13333 <div class=
"padding"></div>
13335 <div class=
"entry">
13336 <div class=
"title">
13337 <a href=
"http://people.skolelinux.org/pere/blog/Parallellized_boot_is_now_the_default_in_Debian_unstable.html">Parallellized boot is now the default in Debian/unstable
</a>
13343 <p>Since this evening, parallel booting is the default in
13344 Debian/unstable for machines using dependency based boot sequencing.
13345 Apparently the testing of concurrent booting has been wider than
13346 expected, if I am to believe the
13347 <a href=
"http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
13348 on debian-devel@
</a>, and I concluded a few days ago to move forward
13349 with the feature this weekend, to give us some time to detect any
13350 remaining problems before Squeeze is frozen. If serious problems are
13351 detected, it is simple to change the default back to sequential boot.
13352 The upload of the new sysvinit package also activate a new upstream
13355 More information about
13356 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
13357 based boot sequencing
</a> is available from the Debian wiki. It is
13358 currently possible to disable parallel booting when one run into
13359 problems caused by it, by adding this line to /etc/default/rcS:
</p>
13363 </pre></blockquote>
13365 <p>If you report any problems with dependencies in init.d scripts to
13366 the BTS, please usertag the report to get it to show up at
13367 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
13368 list of usertagged bugs related to this
</a>.
</p>
13374 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13379 <div class=
"padding"></div>
13381 <div class=
"entry">
13382 <div class=
"title">
13383 <a href=
"http://people.skolelinux.org/pere/blog/Sitesummary_tip__Listing_MAC_address_of_all_clients.html">Sitesummary tip: Listing MAC address of all clients
</a>
13389 <p>In the recent Debian Edu versions, the
13390 <a href=
"http://wiki.debian.org/DebianEdu/HowTo/SiteSummary">sitesummary
13391 system
</a> is used to keep track of the machines in the school
13392 network. Each machine will automatically report its status to the
13393 central server after boot and once per night. The network setup is
13394 also reported, and using this information it is possible to get the
13395 MAC address of all network interfaces in the machines. This is useful
13396 to update the DHCP configuration.
</p>
13398 <p>To give some idea how to use sitesummary, here is a one-liner to
13399 ist all MAC addresses of all machines reporting to sitesummary. Run
13400 this on the collector host:
</p>
13403 perl -MSiteSummary -e 'for_all_hosts(sub { print join(" ", get_macaddresses(shift)), "\n"; });'
13404 </pre></blockquote>
13406 <p>This will list all MAC addresses assosiated with all machine, one
13407 line per machine and with space between the MAC addresses.
</p>
13409 <p>To allow system administrators easier job at adding static DHCP
13410 addresses for hosts, it would be possible to extend this to fetch
13411 machine information from sitesummary and update the DHCP and DNS
13412 tables in LDAP using this information. Such tool is unfortunately not
13419 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary
</a>.
13424 <div class=
"padding"></div>
13426 <div class=
"entry">
13427 <div class=
"title">
13428 <a href=
"http://people.skolelinux.org/pere/blog/systemd__an_interesting_alternative_to_upstart.html">systemd, an interesting alternative to upstart
</a>
13434 <p>The last few days a new boot system called
13435 <a href=
"http://www.freedesktop.org/wiki/Software/systemd">systemd
</a>
13437 <a href=
"http://0pointer.de/blog/projects/systemd.html">introduced
</a>
13439 to the free software world. I have not yet had time to play around
13440 with it, but it seem to be a very interesting alternative to
13441 <a href=
"http://upstart.ubuntu.com/">upstart
</a>, and might prove to be
13442 a good alternative for Debian when we are able to switch to an event
13443 based boot system. Tollef is
13444 <a href=
"http://bugs.debian.org/580814">in the process
</a> of getting
13445 systemd into Debian, and I look forward to seeing how well it work. I
13446 like the fact that systemd handles init.d scripts with dependency
13447 information natively, allowing them to run in parallel where upstart
13448 at the moment do not.
</p>
13450 <p>Unfortunately do systemd have the same problem as upstart regarding
13451 platform support. It only work on recent Linux kernels, and also need
13452 some new kernel features enabled to function properly. This means
13453 kFreeBSD and Hurd ports of Debian will need a port or a different boot
13454 system. Not sure how that will be handled if systemd proves to be the
13457 <p>In the mean time, based on the
13458 <a href=
"http://lists.debian.org/debian-devel/2010/05/msg00122.html">input
13459 on debian-devel@
</a> regarding parallel booting in Debian, I have
13460 decided to enable full parallel booting as the default in Debian as
13461 soon as possible (probably this weekend or early next week), to see if
13462 there are any remaining serious bugs in the init.d dependencies. A
13463 new version of the sysvinit package implementing this change is
13464 already in experimental. If all go well, Squeeze will be released
13465 with parallel booting enabled by default.
</p>
13471 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13476 <div class=
"padding"></div>
13478 <div class=
"entry">
13479 <div class=
"title">
13480 <a href=
"http://people.skolelinux.org/pere/blog/Parallellizing_the_boot_in_Debian_Squeeze___ready_for_wider_testing.html">Parallellizing the boot in Debian Squeeze - ready for wider testing
</a>
13486 <p>These days, the init.d script dependencies in Squeeze are quite
13487 complete, so complete that it is actually possible to run all the
13488 init.d scripts in parallell based on these dependencies. If you want
13489 to test your Squeeze system, make sure
13490 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
13491 based boot sequencing
</a> is enabled, and add this line to
13492 /etc/default/rcS:
</p>
13495 CONCURRENCY=makefile
13496 </pre></blockquote>
13498 <p>That is it. It will cause sysv-rc to use the startpar tool to run
13499 scripts in parallel using the dependency information stored in
13500 /etc/init.d/.depend.boot, /etc/init.d/.depend.start and
13501 /etc/init.d/.depend.stop to order the scripts. Startpar is configured
13502 to try to start the kdm and gdm scripts as early as possible, and will
13503 start the facilities required by kdm or gdm as early as possible to
13504 make this happen.
</p>
13506 <p>Give it a try, and see if you like the result. If some services
13507 fail to start properly, it is most likely because they have incomplete
13508 init.d script dependencies in their startup script (or some of their
13509 dependent scripts have incomplete dependencies). Report bugs and get
13510 the package maintainers to fix it. :)
</p>
13512 <p>Running scripts in parallel could be the default in Debian when we
13513 manage to get the init.d script dependencies complete and correct. I
13514 expect we will get there in Squeeze+
1, if we get manage to test and
13515 fix the remaining issues.
</p>
13517 <p>If you report any problems with dependencies in init.d scripts to
13518 the BTS, please usertag the report to get it to show up at
13519 <a href=
"http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=initscripts-ng-devel@lists.alioth.debian.org">the
13520 list of usertagged bugs related to this
</a>.
</p>
13526 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13531 <div class=
"padding"></div>
13533 <div class=
"entry">
13534 <div class=
"title">
13535 <a href=
"http://people.skolelinux.org/pere/blog/Debian_has_switched_to_dependency_based_boot_sequencing.html">Debian has switched to dependency based boot sequencing
</a>
13541 <p>Since this evening, with the upload of sysvinit version
2.87dsf-
2,
13542 and the upload of insserv version
1.12.0-
10 yesterday, Debian unstable
13543 have been migrated to using dependency based boot sequencing. This
13544 conclude work me and others have been doing for the last three days.
13545 It feels great to see this finally part of the default Debian
13546 installation. Now we just need to weed out the last few problems that
13547 are bound to show up, to get everything ready for Squeeze.
</p>
13549 <p>The next step is migrating /sbin/init from sysvinit to upstart, and
13550 fixing the more fundamental problem of handing the event based
13551 non-predictable kernel in the early boot.
</p>
13557 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13562 <div class=
"padding"></div>
13564 <div class=
"entry">
13565 <div class=
"title">
13566 <a href=
"http://people.skolelinux.org/pere/blog/Taking_over_sysvinit_development.html">Taking over sysvinit development
</a>
13572 <p>After several years of frustration with the lack of activity from
13573 the existing sysvinit upstream developer, I decided a few weeks ago to
13574 take over the package and become the new upstream. The number of
13575 patches to track for the Debian package was becoming a burden, and the
13576 lack of synchronization between the distribution made it hard to keep
13577 the package up to date.
</p>
13579 <p>On the new sysvinit team is the SuSe maintainer Dr. Werner Fink,
13580 and my Debian co-maintainer Kel Modderman. About
10 days ago, I made
13581 a new upstream tarball with version number
2.87dsf (for Debian, SuSe
13582 and Fedora), based on the patches currently in use in these
13583 distributions. We Debian maintainers plan to move to this tarball as
13584 the new upstream as soon as we find time to do the merge. Since the
13585 new tarball was created, we agreed with Werner at SuSe to make a new
13586 upstream project at
<a href=
"http://savannah.nongnu.org/">Savannah
</a>, and continue
13587 development there. The project is registered and currently waiting
13588 for approval by the Savannah administrators, and as soon as it is
13589 approved, we will import the old versions from svn and continue
13590 working on the future release.
</p>
13592 <p>It is a bit ironic that this is done now, when some of the involved
13593 distributions are moving to upstart as a syvinit replacement.
</p>
13599 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13604 <div class=
"padding"></div>
13606 <div class=
"entry">
13607 <div class=
"title">
13608 <a href=
"http://people.skolelinux.org/pere/blog/Debian_boots_quicker_and_quicker.html">Debian boots quicker and quicker
</a>
13614 <p>I spent Monday and tuesday this week in London with a lot of the
13615 people involved in the boot system on Debian and Ubuntu, to see if we
13616 could find more ways to speed up the boot system. This was an Ubuntu
13618 <a href=
"https://wiki.ubuntu.com/FoundationsTeam/BootPerformance/DebianUbuntuSprint">developer
13619 gathering
</a>. It was quite productive. We also discussed the future
13620 of boot systems, and ways to handle the increasing number of boot
13621 issues introduced by the Linux kernel becoming more and more
13622 asynchronous and event base. The Ubuntu approach using udev and
13623 upstart might be a good way forward. Time will show.
</p>
13625 <p>Anyway, there are a few ways at the moment to speed up the boot
13626 process in Debian. All of these should be applied to get a quick
13631 <li>Use dash as /bin/sh.
</li>
13633 <li>Disable the init.d/hwclock*.sh scripts and make sure the hardware
13634 clock is in UTC.
</li>
13636 <li>Install and activate the insserv package to enable
13637 <a href=
"http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot">dependency
13638 based boot sequencing
</a>, and enable concurrent booting.
</li>
13642 These points are based on the Google summer of code work done by
13643 <a href=
"http://initscripts-ng.alioth.debian.org/soc2006-bootsystem/">Carlos
13646 <p>Support for makefile-style concurrency during boot was uploaded to
13647 unstable yesterday. When we tested it, we were able to cut
6 seconds
13648 from the boot sequence. It depend on very correct dependency
13649 declaration in all init.d scripts, so I expect us to find edge cases
13650 where the dependences in some scripts are slightly wrong when we start
13653 <p>On our IRC channel for this effort, #pkg-sysvinit, a new idea was
13654 introduced by Raphael Geissert today, one that could affect the
13655 startup speed as well. Instead of starting some scripts concurrently
13656 from rcS.d/ and another set of scripts from rc2.d/, it would be
13657 possible to run a of them in the same process. A quick way to test
13658 this would be to enable insserv and run 'mv /etc/rc2.d/S* /etc/rcS.d/;
13659 insserv'. Will need to test if that work. :)
</p>
13665 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13670 <div class=
"padding"></div>
13672 <div class=
"entry">
13673 <div class=
"title">
13674 <a href=
"http://people.skolelinux.org/pere/blog/BSAs_p_stander_om_piratkopiering_m_ter_motstand.html">BSAs påstander om piratkopiering møter motstand
</a>
13680 <p>Hvert år de siste årene har BSA, lobbyfronten til de store
13681 programvareselskapene som Microsoft og Apple, publisert en rapport der
13682 de gjetter på hvor mye piratkopiering påfører i tapte inntekter i
13683 ulike land rundt om i verden. Resultatene er tendensiøse. For noen
13685 <a href=
"http://global.bsa.org/globalpiracy2008/studies/globalpiracy2008.pdf">siste
13686 rapport
</a>, og det er flere kritiske kommentarer publisert de siste
13687 dagene. Et spesielt interessant kommentar fra Sverige,
13688 <a href=
"http://www.idg.se/2.1085/1.229795/bsa-hoftade-sverigesiffror">BSA
13689 höftade Sverigesiffror
</a>, oppsummeres slik:
</p>
13692 I sin senaste rapport slår BSA fast att
25 procent av all mjukvara i
13693 Sverige är piratkopierad. Det utan att ha pratat med ett enda svenskt
13694 företag. "Man bör nog kanske inte se de här siffrorna som helt
13695 exakta", säger BSAs Sverigechef John Hugosson.
13698 <p>Mon tro om de er like metodiske når de gjetter på andelen piratkopiering i Norge? To andre kommentarer er
<a
13699 href=
"http://www.vnunet.com/vnunet/comment/2242134/bsa-piracy-figures-shot-reality">BSA
13700 piracy figures need a shot of reality
</a> og
<a
13701 href=
"http://www.michaelgeist.ca/content/view/3958/125/">Does The WIPO
13702 Copyright Treaty Work?
</a></p>
13704 <p>Fant lenkene via
<a
13705 href=
"http://tech.slashdot.org/article.pl?sid=09/05/17/1632242">oppslag
13706 på Slashdot
</a>.
</p>
13712 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>.
13717 <div class=
"padding"></div>
13719 <div class=
"entry">
13720 <div class=
"title">
13721 <a href=
"http://people.skolelinux.org/pere/blog/IDG_mener_linux_i_servermarkedet_vil_vokse_med_21__i_2009.html">IDG mener linux i servermarkedet vil vokse med
21% i
2009</a>
13728 <a href=
"http://news.cnet.com/8301-13505_3-10216873-16.html">interessante
13729 tall
</a> fra IDG om utviklingen av linuxservermarkedet. Fikk meg til
13730 å tenke på antall tjenermaskiner ved Universitetet i Oslo der jeg
13731 jobber til daglig. En rask opptelling forteller meg at vi har
490
13732 (
61%) fysiske unix-tjener (mest linux men også noen solaris) og
196
13733 (
25%) windowstjenere, samt
112 (
14%) virtuelle unix-tjenere. Med den
13734 bakgrunnskunnskapen kan jeg godt tro at IDG er inne på noe.
</p>
13740 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13745 <div class=
"padding"></div>
13747 <div class=
"entry">
13748 <div class=
"title">
13749 <a href=
"http://people.skolelinux.org/pere/blog/Kryptert_harddisk___naturligvis.html">Kryptert harddisk - naturligvis
</a>
13755 <p><a href=
"http://www.dagensit.no/trender/article1658676.ece">Dagens
13756 IT melder
</a> at Intel hevder at det er dyrt å miste en datamaskin,
13757 når en tar tap av arbeidstid, fortrolige dokumenter,
13758 personopplysninger og alt annet det innebærer. Det er ingen tvil om
13759 at det er en kostbar affære å miste sin datamaskin, og det er årsaken
13760 til at jeg har kryptert harddisken på både kontormaskinen og min
13761 bærbare. Begge inneholder personopplysninger jeg ikke ønsker skal
13762 komme på avveie, den første informasjon relatert til jobben min ved
13763 Universitetet i Oslo, og den andre relatert til blant annet
13764 foreningsarbeide. Kryptering av diskene gjør at det er lite
13765 sannsynlig at dophoder som kan finne på å rappe maskinene får noe ut
13766 av dem. Maskinene låses automatisk etter noen minutter uten bruk,
13767 og en reboot vil gjøre at de ber om passord før de vil starte opp.
13768 Jeg bruker Debian på begge maskinene, og installasjonssystemet der
13769 gjør det trivielt å sette opp krypterte disker. Jeg har LVM på toppen
13770 av krypterte partisjoner, slik at alt av datapartisjoner er kryptert.
13771 Jeg anbefaler alle å kryptere diskene på sine bærbare. Kostnaden når
13772 det er gjort slik jeg gjør det er minimale, og gevinstene er
13773 betydelige. En bør dog passe på passordet. Hvis det går tapt, må
13774 maskinen reinstalleres og alt er tapt.
</p>
13776 <p>Krypteringen vil ikke stoppe kompetente angripere som f.eks. kjøler
13777 ned minnebrikkene før maskinen rebootes med programvare for å hente ut
13778 krypteringsnøklene. Kostnaden med å forsvare seg mot slike angripere
13779 er for min del høyere enn gevinsten. Jeg tror oddsene for at
13780 f.eks. etteretningsorganisasjoner har glede av å titte på mine
13781 maskiner er minimale, og ulempene jeg ville oppnå ved å forsøke å
13782 gjøre det vanskeligere for angripere med kompetanse og ressurser er
13789 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>.
13794 <div class=
"padding"></div>
13796 <div class=
"entry">
13797 <div class=
"title">
13798 <a href=
"http://people.skolelinux.org/pere/blog/Two_projects_that_have_improved_the_quality_of_free_software_a_lot.html">Two projects that have improved the quality of free software a lot
</a>
13804 <p>There are two software projects that have had huge influence on the
13805 quality of free software, and I wanted to mention both in case someone
13806 do not yet know them.
</p>
13808 <p>The first one is
<a href=
"http://valgrind.org/">valgrind
</a>, a
13809 tool to detect and expose errors in the memory handling of programs.
13810 It is easy to use, all one need to do is to run 'valgrind program',
13811 and it will report any problems on stdout. It is even better if the
13812 program include debug information. With debug information, it is able
13813 to report the source file name and line number where the problem
13814 occurs. It can report things like 'reading past memory block in file
13815 X line N, the memory block was allocated in file Y, line M', and
13816 'using uninitialised value in control logic'. This tool has made it
13817 trivial to investigate reproducible crash bugs in programs, and have
13818 reduced the number of this kind of bugs in free software a lot.
13820 <p>The second one is
13821 <a href=
"http://en.wikipedia.org/wiki/Coverity">Coverity
</a> which is
13822 a source code checker. It is able to process the source of a program
13823 and find problems in the logic without running the program. It
13824 started out as the Stanford Checker and became well known when it was
13825 used to find bugs in the Linux kernel. It is now a commercial tool
13826 and the company behind it is running
13827 <a href=
"http://www.scan.coverity.com/">a community service
</a> for the
13828 free software community, where a lot of free software projects get
13829 their source checked for free. Several thousand defects have been
13830 found and fixed so far. It can find errors like 'lock L taken in file
13831 X line N is never released if exiting in line M', or 'the code in file
13832 Y lines O to P can never be executed'. The projects included in the
13833 community service project have managed to get rid of a lot of
13834 reliability problems thanks to Coverity.
</p>
13836 <p>I believe tools like this, that are able to automatically find
13837 errors in the source, are vital to improve the quality of software and
13838 make sure we can get rid of the crashing and failing software we are
13839 surrounded by today.
</p>
13845 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
13850 <div class=
"padding"></div>
13852 <div class=
"entry">
13853 <div class=
"title">
13854 <a href=
"http://people.skolelinux.org/pere/blog/No_patch_is_not_better_than_a_useless_patch.html">No patch is not better than a useless patch
</a>
13861 <a href=
"http://blog.technologeek.org/2009/04/12/214">claim that no
13862 patch is better than a useless patch
</a>. I completely disagree, as a
13863 patch allow one to discuss a concrete and proposed solution, and also
13864 prove that the issue at hand is important enough for someone to spent
13865 time on fixing it. No patch do not provide any of these positive
13872 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13877 <div class=
"padding"></div>
13879 <div class=
"entry">
13880 <div class=
"title">
13881 <a href=
"http://people.skolelinux.org/pere/blog/Standardize_on_protocols_and_formats__not_vendors_and_applications.html">Standardize on protocols and formats, not vendors and applications
</a>
13887 <p>Where I work at the University of Oslo, one decision stand out as a
13888 very good one to form a long lived computer infrastructure. It is the
13889 simple one, lost by many in todays computer industry: Standardize on
13890 open network protocols and open exchange/storage formats, not applications.
13891 Applications come and go, while protocols and files tend to stay, and
13892 thus one want to make it easy to change application and vendor, while
13893 avoiding conversion costs and locking users to a specific platform or
13896 <p>This approach make it possible to replace the client applications
13897 independently of the server applications. One can even allow users to
13898 use several different applications as long as they handle the selected
13899 protocol and format. In the normal case, only one client application
13900 is recommended and users only get help if they choose to use this
13901 application, but those that want to deviate from the easy path are not
13902 blocked from doing so.
</p>
13904 <p>It also allow us to replace the server side without forcing the
13905 users to replace their applications, and thus allow us to select the
13906 best server implementation at any moment, when scale and resouce
13907 requirements change.
</p>
13909 <p>I strongly recommend standardizing - on open network protocols and
13910 open formats, but I would never recommend standardizing on a single
13911 application that do not use open network protocol or open formats.
</p>
13917 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
13922 <div class=
"padding"></div>
13924 <div class=
"entry">
13925 <div class=
"title">
13926 <a href=
"http://people.skolelinux.org/pere/blog/Returning_from_Skolelinux_developer_gathering.html">Returning from Skolelinux developer gathering
</a>
13932 <p>I'm sitting on the train going home from this weekends Debian
13933 Edu/Skolelinux development gathering. I got a bit done tuning the
13934 desktop, and looked into the dynamic service location protocol
13935 implementation avahi. It look like it could be useful for us. Almost
13936 30 people participated, and I believe it was a great environment to
13937 get to know the Skolelinux system. Walter Bender, involved in the
13938 development of the Sugar educational platform, presented his stuff and
13939 also helped me improve my OLPC installation. He also showed me that
13940 his Turtle Art application can be used in standalone mode, and we
13941 agreed that I would help getting it packaged for Debian. As a
13942 standalone application it would be great for Debian Edu. We also
13943 tried to get the video conferencing working with two OLPCs, but that
13944 proved to be too hard for us. The application seem to need more work
13945 before it is ready for me. I look forward to getting home and relax
13952 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
13957 <div class=
"padding"></div>
13959 <div class=
"entry">
13960 <div class=
"title">
13961 <a href=
"http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">Time for new LDAP schemas replacing RFC
2307?
</a>
13967 <p>The state of standardized LDAP schemas on Linux is far from
13968 optimal. There is RFC
2307 documenting one way to store NIS maps in
13969 LDAP, and a modified version of this normally called RFC
2307bis, with
13970 some modifications to be compatible with Active Directory. The RFC
13971 specification handle the content of a lot of system databases, but do
13972 not handle DNS zones and DHCP configuration.
</p>
13974 <p>In
<a href=
"http://www.skolelinux.org/">Debian Edu/Skolelinux
</a>,
13975 we would like to store information about users, SMB clients/hosts,
13976 filegroups, netgroups (users and hosts), DHCP and DNS configuration,
13977 and LTSP configuration in LDAP. These objects have a lot in common,
13978 but with the current LDAP schemas it is not possible to have one
13979 object per entity. For example, one need to have at least three LDAP
13980 objects for a given computer, one with the SMB related stuff, one with
13981 DNS information and another with DHCP information. The schemas
13982 provided for DNS and DHCP are impossible to combine into one LDAP
13983 object. In addition, it is impossible to implement quick queries for
13984 netgroup membership, because of the way NIS triples are implemented.
13985 It just do not scale. I believe it is time for a few RFC
13986 specifications to cleam up this mess.
</p>
13988 <p>I would like to have one LDAP object representing each computer in
13989 the network, and this object can then keep the SMB (ie host key), DHCP
13990 (mac address/name) and DNS (name/IP address) settings in one place.
13991 It need to be efficently stored to make sure it scale well.
</p>
13993 <p>I would also like to have a quick way to map from a user or
13994 computer and to the net group this user or computer is a member.
</p>
13996 <p>Active Directory have done a better job than unix heads like myself
13997 in this regard, and the unix side need to catch up. Time to start a
13998 new IETF work group?
</p>
14004 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>.
14009 <div class=
"padding"></div>
14011 <div class=
"entry">
14012 <div class=
"title">
14013 <a href=
"http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html">Endelig er Debian Lenny gitt ut
</a>
14019 <p>Endelig er
<a href=
"http://www.debian.org/">Debian
</a>
14020 <a href=
"http://www.debian.org/News/2009/20090214">Lenny
</a> gitt ut.
14021 Et langt steg videre for Debian-prosjektet, og en rekke nye
14022 programpakker blir nå tilgjengelig for de av oss som bruker den
14023 stabile utgaven av Debian. Neste steg er nå å få
14024 <a href=
"http://www.skolelinux.org/">Skolelinux
</a> /
14025 <a href=
"http://wiki.debian.org/DebianEdu/">Debian Edu
</a> ferdig
14026 oppdatert for den nye utgaven, slik at en oppdatert versjon kan
14027 slippes løs på skolene. Takk til alle debian-utviklerne som har
14028 gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
14029 bootsekvens tilgjengelig i stabil utgave, vha pakken
14030 <tt>insserv
</tt>.
</p>
14036 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>.
14041 <div class=
"padding"></div>
14043 <div class=
"entry">
14044 <div class=
"title">
14045 <a href=
"http://people.skolelinux.org/pere/blog/Devcamp_brought_us_closer_to_the_Lenny_based_Debian_Edu_release.html">Devcamp brought us closer to the Lenny based Debian Edu release
</a>
14051 <p>This weekend we had a small developer gathering for Debian Edu in
14052 Oslo. Most of Saturday was used for the general assemly for the
14053 member organization, but the rest of the weekend I used to tune the
14054 LTSP installation. LTSP now work out of the box on the
10-network.
14055 Acer Aspire One proved to be a very nice thin client, with both
14056 screen, mouse and keybard in a small box. Was working on getting the
14057 diskless workstation setup configured out of the box, but did not
14058 finish it before the weekend was up.
</p>
14060 <p>Did not find time to look at the
4 VGA cards in one box we got from
14061 the Brazilian group, so that will have to wait for the next
14062 development gathering. Would love to have the Debian Edu installer
14063 automatically detect and configure a multiseat setup when it find one
14064 of these cards.
</p>
14070 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp
</a>.
14075 <div class=
"padding"></div>
14077 <div class=
"entry">
14078 <div class=
"title">
14079 <a href=
"http://people.skolelinux.org/pere/blog/The_sorry_state_of_multimedia_browser_plugins_in_Debian.html">The sorry state of multimedia browser plugins in Debian
</a>
14085 <p>Recently I have spent some time evaluating the multimedia browser
14086 plugins available in Debian Lenny, to see which one we should use by
14087 default in Debian Edu. We need an embedded video playing plugin with
14088 control buttons to pause or stop the video, and capable of streaming
14089 all the multimedia content available on the web. The test results and
14090 notes are available on
14091 <a href=
"http://wiki.debian.org/DebianEdu/BrowserMultimedia">the
14092 Debian wiki
</a>. I was surprised how few of the plugins are able to
14093 fill this need. My personal video player favorite, VLC, has a really
14094 bad plugin which fail on a lot of the test pages. A lot of the MIME
14095 types I would expect to work with any free software player (like
14096 video/ogg), just do not work. And simple formats like the
14097 audio/x-mplegurl format (m3u playlists), just isn't supported by the
14098 totem and vlc plugins. I hope the situation will improve soon. No
14099 wonder sites use the proprietary Adobe flash to play video.
</p>
14101 <p>For Lenny, we seem to end up with the mplayer plugin. It seem to
14102 be the only one fitting our needs. :/
</p>
14108 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
14113 <div class=
"padding"></div>
14115 <p style=
"text-align: right;"><a href=
"debian.rss"><img src=
"http://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS Feed" width=
"36" height=
"14" /></a></p>
14126 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/02/">February (
2)
</a></li>
14128 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/03/">March (
2)
</a></li>
14130 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/04/">April (
2)
</a></li>
14132 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/05/">May (
3)
</a></li>
14134 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/06/">June (
2)
</a></li>
14136 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/07/">July (
1)
</a></li>
14138 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2020/09/">September (
1)
</a></li>
14145 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
14147 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
14149 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
14151 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
14153 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/06/">June (
5)
</a></li>
14155 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/07/">July (
2)
</a></li>
14157 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/08/">August (
1)
</a></li>
14159 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/09/">September (
1)
</a></li>
14161 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/11/">November (
1)
</a></li>
14163 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/12/">December (
4)
</a></li>
14170 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
14172 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
14174 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
14176 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
14178 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
14180 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
14182 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
14184 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
14186 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
14188 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
14190 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
14197 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
14199 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
14201 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
14203 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
14205 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
14207 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
14209 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
14211 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
14213 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
14215 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
14217 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
14224 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
14226 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
14228 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
14230 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
14232 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
14234 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
14236 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
14238 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
14240 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
14242 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
14244 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
14246 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
14253 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
14255 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
14257 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
14259 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
14261 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
14263 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
14265 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
14267 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
14269 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
14271 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
14273 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
14275 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
14282 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
14284 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
14286 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
14288 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
14290 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
14292 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
14294 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
14296 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
14298 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
14300 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
14302 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
14304 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
14311 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
14313 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
14315 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
14317 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
14319 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
14321 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
14323 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
14325 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
14327 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
14329 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
14331 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
14333 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
14340 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
14342 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
14344 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
14346 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
14348 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
14350 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
14352 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
14354 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
14356 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
14358 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
14360 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
14362 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
14369 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
14371 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
14373 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
14375 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
14377 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
14379 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
14381 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
14383 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
14385 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
14387 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
14389 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
14391 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
14398 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
14400 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
14402 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
14404 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
14406 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
14408 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
14410 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
14412 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
14414 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
14416 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
14418 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
14420 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
14427 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
14429 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
14431 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
14433 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
14435 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
14437 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
14439 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
14441 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
14443 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
14445 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
14447 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
14449 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
14456 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
14458 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
14469 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
16)
</a></li>
14471 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
14473 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
14475 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
14477 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
14479 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
11)
</a></li>
14481 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
14483 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
14485 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
14487 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
173)
</a></li>
14489 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
159)
</a></li>
14491 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
6)
</a></li>
14493 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
14495 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
17)
</a></li>
14497 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
26)
</a></li>
14499 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
14501 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
420)
</a></li>
14503 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
14505 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
14507 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
14509 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
14511 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
14513 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
14515 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
43)
</a></li>
14517 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
14519 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
22)
</a></li>
14521 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi (
4)
</a></li>
14523 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
14525 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego (
4)
</a></li>
14527 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
14529 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
14531 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
14533 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
14535 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
42)
</a></li>
14537 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
13)
</a></li>
14539 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
22)
</a></li>
14541 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
314)
</a></li>
14543 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
197)
</a></li>
14545 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
38)
</a></li>
14547 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
14549 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
75)
</a></li>
14551 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
111)
</a></li>
14553 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
14555 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
14557 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
14559 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
14561 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
12)
</a></li>
14563 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
14565 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
14567 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
14569 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
58)
</a></li>
14571 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
14573 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
14575 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
70)
</a></li>
14577 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
14579 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
12)
</a></li>
14581 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
60)
</a></li>
14583 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
14585 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
14587 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
14589 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
18)
</a></li>
14591 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
74)
</a></li>
14593 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
14595 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
14601 <p style=
"text-align: right">
14602 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>