]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
New post.
[homepage.git] / blog / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen</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="http://people.skolelinux.org/pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="http://people.skolelinux.org/pere/blog/RSS_kilde_for_friteksts_k_i_offentlige_anbud_hos_Doffin.html">RSS-kilde for fritekstsøk i offentlige anbud hos Doffin</a></div>
24 <div class="date">22nd November 2013</div>
25 <div class="body"><p>I fjor sommer lagde jeg en
26 <a href="http://people.skolelinux.org/pere/blog/SQL_database_med_anbud_publisert_p__Doffin.html">offentlig
27 tilgjengelig SQL-database over offentlig anbud</a> basert på skraping
28 av HTML-data fra Doffin. Den har stått og gått siden da, og har nå
29 ca. 28000 oppføringer. Jeg oppdaget da jeg tittet innom at noen
30 oppføringer var ikke blitt med, antagelig på grunn av at de fikk
31 tildelt sekvensnummer i Doffin en godt stund før de ble publisert,
32 slik at min nettsideskraper som fortsatte skrapingen der den slapp
33 sist ikke fikk dem med seg. Jeg har fikset litt slik at skraperen nå
34 ser litt tilbake i tid for å se om den har gått glipp av noen
35 oppføringer, og har skrapet på nytt fra midten av september 2013 og
36 fremover. Det bør dermed bli en mer komplett database for kommende
37 måneder. Hvis jeg får tid skal jeg forsøke å skrape "glemte" data fra
38 før midten av september 2013, men tør ikke garantere at det blir
39 prioritert med det første. </p>
40
41 <p>Men målet med denne bloggposten er å vise hvordan denne
42 Doffin-databasen kan brukes og integreres med en RSS-leser, slik at en
43 kan la datamaskinen holde et øye med Doffin-annonseringer etter
44 nøkkelord. En kan lage sitt eget søk ved å besøke
45 <ahref="https://classic.scraperwiki.com/docs/api?name=norwegian-doffin#sqlite">API-et
46 hos Scraperwiki</a>, velge format rss2 og så legge inn noe ala dette i
47 "query in SQL":</p>
48
49 <p><pre>
50 select title, scrapedurl as link, abstract as description,
51 publishdate as pubDate from 'swdata'
52 where abstract like '%linux%' or title like '%linux%'
53 order by seq desc limit 20
54 </pre></p>
55
56 <p>Dette vil søke opp alle anbud med ordet linux i oppsummering eller
57 tittel. En kan lage mer avanserte søk hvis en ønsker det. URL-en som
58 dukker opp nederst på siden kan en så gi til sin RSS-leser (jeg bruker
59 akregator selv), og så automatisk få beskjed hvis det dukker opp anbud
60 med det aktuelle nøkkelordet i teksten. Merk at kapasiteten og
61 ytelsen hos Scraperwiki er begrenset, så ikke be RSS-leseren hente ned
62 oftere enn en gang hver dag.</p>
63
64 <p>Du lurer kanskje på hva slags informasjon en kan få ut fra denne
65 databasen. Her er to RSS-kilder, med søkeordet
66 "<a href="https://api.scraperwiki.com/api/1.0/datastore/sqlite?format=rss2&name=norwegian-doffin&query=select%20title%2C%20scrapedurl%20as%20link%2C%20abstract%20as%20description%2C%0A%20%20%20%20%20%20%20publishdate%20as%20pubDate%20from%20'swdata'%0A%20%20%20where%20abstract%20like%20'%25linux%25'%20or%20title%20like%20'%25linux%25'%0A%20%20%20order%20by%20seq%20desc%20limit%2020">linux</a>",
67 søkeordet
68 "<a href="https://api.scraperwiki.com/api/1.0/datastore/sqlite?format=rss2&name=norwegian-doffin&query=select%20title%2C%20scrapedurl%20as%20link%2C%20abstract%20as%20description%2C%0A%20%20%20%20%20%20%20publishdate%20as%20pubDate%20from%20'swdata'%0A%20%20%20where%20abstract%20like%20'%25fri%20programvare%25'%20or%20title%20like%20'%25fri%20programvare%25'%0A%20%20%20order%20by%20seq%20desc%20limit%2020">fri
69 programvare</a>"
70 og søkeordet
71 "<a href="https://api.scraperwiki.com/api/1.0/datastore/sqlite?format=rss2&name=norwegian-doffin&query=select%20title%2C%20scrapedurl%20as%20link%2C%20abstract%20as%20description%2C%0A%20%20%20%20%20%20%20publishdate%20as%20pubDate%20from%20'swdata'%0A%20%20%20where%20abstract%20like%20'%25odf%25'%20or%20title%20like%20'%25odf%25'%0A%20%20%20order%20by%20seq%20desc%20limit%2020">odf</a>".
72 Det er bare å søke på det en er interessert i. Kopier gjerne
73 datasettet og sett opp din egen tjeneste hvis du vil gjøre mer
74 avanserte søk. SQLite-filen med Doffin-oppføringer kan lastes med fra
75 Scraperwiki for de som vil grave dypere.</p>
76 </div>
77 <div class="tags">
78
79
80 Tags: <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/offentlig innsyn">offentlig innsyn</a>.
81
82
83 </div>
84 </div>
85 <div class="padding"></div>
86
87 <div class="entry">
88 <div class="title"><a href="http://people.skolelinux.org/pere/blog/All_drones_should_be_radio_marked_with_what_they_do_and_who_they_belong_to.html">All drones should be radio marked with what they do and who they belong to</a></div>
89 <div class="date">21st November 2013</div>
90 <div class="body">Drones, flying robots, are getting more and more popular. The most
91 know ones are the killer drones used by some government to murder
92 people they do not like without giving them the chance of a fair
93 trial, but the technology have many good uses too, from mapping and
94 forest maintenance to photography and search and rescue. I am sure it
95 is just a question of time before "bad drones" are in the hands of
96 private enterprises and not only state criminals but petty criminals
97 too. The drone technology is very useful and very dangerous. To have
98 some control over the use of drones, I agree with Daniel Suarez in his
99 TED talk
100 "<a href="https://archive.org/details/DanielSuarez_2013G">The kill
101 decision shouldn't belong to a robot</a>", where he suggested this
102 little gem to keep the good while limiting the bad use of drones:</p>
103
104 <blockquote>
105
106 <p>Each robot and drone should have a cryptographically signed
107 I.D. burned in at the factory that can be used to track its movement
108 through public spaces. We have license plates on cars, tail numbers on
109 aircraft. This is no different. And every citizen should be able to
110 download an app that shows the population of drones and autonomous
111 vehicles moving through public spaces around them, both right now and
112 historically. And civic leaders should deploy sensors and civic drones
113 to detect rogue drones, and instead of sending killer drones of their
114 own up to shoot them down, they should notify humans to their
115 presence. And in certain very high-security areas, perhaps civic
116 drones would snare them and drag them off to a bomb disposal facility.</p>
117
118 <p>But notice, this is more an immune system than a weapons system. It
119 would allow us to avail ourselves of the use of autonomous vehicles
120 and drones while still preserving our open, civil society.</p>
121
122 </blockquote>
123
124 <p>The key is that <em>every citizen</em> should be able to read the
125 radio beacons sent from the drones in the area, to be able to check
126 both the government and others use of drones. For such control to be
127 effective, everyone must be able to do it. What should such beacon
128 contain? At least formal owner, purpose, contact information and GPS
129 location. Probably also the origin and target position of the current
130 flight. And perhaps some registration number to be able to look up
131 the drone in a central database tracking their movement. Robots
132 should not have privacy. It is people who need privacy.</p>
133 </div>
134 <div class="tags">
135
136
137 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/robot">robot</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>.
138
139
140 </div>
141 </div>
142 <div class="padding"></div>
143
144 <div class="entry">
145 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Lets_make_a_wireless_community_network_in_Oslo_.html">Lets make a wireless community network in Oslo!</a></div>
146 <div class="date">13th November 2013</div>
147 <div class="body"><p>Today NUUG and Hackeriet announced
148 <a href="http://www.nuug.no/news/Bli_med___bygge_dugnadsnett_for_alle_i_Oslo.shtml">our
149 plans to join forces and create a wireless community network in
150 Oslo</a>. The workshop to help people get started will take place
151 Thursday 2013-11-28, but we already are collecting the geolocation of
152 people joining forces to make this happen. We have
153 <a href="https://github.com/petterreinholdtsen/meshfx-node/blob/master/oslo-nodes.geojson">9
154 locations plotted on the map</a>, but we will need more before we have
155 a connected mesh spread across Oslo. If this sound interesting to
156 you, please join us at the workshop. If you are too impatient to wait
157 15 days, please join us on the IRC channel
158 <a href="irc://irc.freenode.net/%23nuug">#nuug on irc.freenode.net</a>
159 right away. :)</p>
160 </div>
161 <div class="tags">
162
163
164 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
165
166
167 </div>
168 </div>
169 <div class="padding"></div>
170
171 <div class="entry">
172 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Running_TP_Link_MR3040_as_a_batman_adv_mesh_node_using_openwrt.html">Running TP-Link MR3040 as a batman-adv mesh node using openwrt</a></div>
173 <div class="date">10th November 2013</div>
174 <div class="body"><p>Continuing my research into mesh networking, I was recommended to
175 use TP-Link 3040 and 3600 access points as mesh nodes, and the pair I
176 bought arrived on Friday. Here are my notes on how to set up the
177 MR3040 as a mesh node using
178 <a href="http://www.openwrt.org/">OpenWrt</a>.</p>
179
180 <p>I started by following the instructions on the OpenWRT wiki for
181 <a href="http://wiki.openwrt.org/toh/tp-link/tl-mr3040">TL-MR3040</a>,
182 and downloaded
183 <a href="http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin">the
184 recommended firmware image</a>
185 (openwrt-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin) and
186 uploaded it into the original web interface. The flashing went fine,
187 and the machine was available via telnet on the ethernet port. After
188 logging in and setting the root password, ssh was available and I
189 could start to set it up as a batman-adv mesh node.</p>
190
191 <p>I started off by reading the instructions from
192 <a href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Antoine's_Research">Wireless
193 Africa</a>, which had quite a lot of useful information, but
194 eventually I followed the recipe from the Open Mesh wiki for
195 <a href="http://www.open-mesh.org/projects/batman-adv/wiki/Batman-adv-openwrt-config">using
196 batman-adv on OpenWrt</a>. A small snag was the fact that the
197 <tt>opkg install kmod-batman-adv</tt> command did not work as it
198 should. The batman-adv kernel module would fail to load because its
199 dependency crc16 was not already loaded. I
200 <a href="https://dev.openwrt.org/ticket/14452">reported the bug</a> to
201 the openwrt project and hope it will be fixed soon. But the problem
202 only seem to affect initial testing of batman-adv, as configuration
203 seem to work when booting from scratch.</p>
204
205 <p>The setup is done using files in /etc/config/. I did not bridge
206 the Ethernet and mesh interfaces this time, to be able to hook up the
207 box on my local network and log into it for configuration updates.
208 The following files were changed and look like this after modifying
209 them:</p>
210
211 <p><tt>/etc/config/network</tt></p>
212
213 <pre>
214
215 config interface 'loopback'
216 option ifname 'lo'
217 option proto 'static'
218 option ipaddr '127.0.0.1'
219 option netmask '255.0.0.0'
220
221 config globals 'globals'
222 option ula_prefix 'fdbf:4c12:3fed::/48'
223
224 config interface 'lan'
225 option ifname 'eth0'
226 option type 'bridge'
227 option proto 'dhcp'
228 option ipaddr '192.168.1.1'
229 option netmask '255.255.255.0'
230 option hostname 'tl-mr3040'
231 option ip6assign '60'
232
233 config interface 'mesh'
234 option ifname 'adhoc0'
235 option mtu '1528'
236 option proto 'batadv'
237 option mesh 'bat0'
238 </pre>
239
240 <p><tt>/etc/config/wireless</tt></p>
241 <pre>
242
243 config wifi-device 'radio0'
244 option type 'mac80211'
245 option channel '11'
246 option hwmode '11ng'
247 option path 'platform/ar933x_wmac'
248 option htmode 'HT20'
249 list ht_capab 'SHORT-GI-20'
250 list ht_capab 'SHORT-GI-40'
251 list ht_capab 'RX-STBC1'
252 list ht_capab 'DSSS_CCK-40'
253 option disabled '0'
254
255 config wifi-iface 'wmesh'
256 option device 'radio0'
257 option ifname 'adhoc0'
258 option network 'mesh'
259 option encryption 'none'
260 option mode 'adhoc'
261 option bssid '02:BA:00:00:00:01'
262 option ssid 'meshfx@hackeriet'
263 </pre>
264 <p><tt>/etc/config/batman-adv</tt></p>
265 <pre>
266
267 config 'mesh' 'bat0'
268 option interfaces 'adhoc0'
269 option 'aggregated_ogms'
270 option 'ap_isolation'
271 option 'bonding'
272 option 'fragmentation'
273 option 'gw_bandwidth'
274 option 'gw_mode'
275 option 'gw_sel_class'
276 option 'log_level'
277 option 'orig_interval'
278 option 'vis_mode'
279 option 'bridge_loop_avoidance'
280 option 'distributed_arp_table'
281 option 'network_coding'
282 option 'hop_penalty'
283
284 # yet another batX instance
285 # config 'mesh' 'bat5'
286 # option 'interfaces' 'second_mesh'
287 </pre>
288
289 <p>The mesh node is now operational. I have yet to test its range,
290 but I hope it is good. I have not yet tested the TP-Link 3600 box
291 still wrapped up in plastic.</p>
292 </div>
293 <div class="tags">
294
295
296 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
297
298
299 </div>
300 </div>
301 <div class="padding"></div>
302
303 <div class="entry">
304 <div class="title"><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></div>
305 <div class="date"> 2nd November 2013</div>
306 <div class="body"><p>If one of the points of switching to a new init system in Debian is
307 <a href="http://thomas.goirand.fr/blog/?p=147">to get rid of huge
308 init.d scripts</a>, I doubt we need to switch away from sysvinit and
309 init.d scripts at all. Here is an example init.d script, ie a rewrite
310 of /etc/init.d/rsyslog:</p>
311
312 <p><pre>
313 #!/lib/init/init-d-script
314 ### BEGIN INIT INFO
315 # Provides: rsyslog
316 # Required-Start: $remote_fs $time
317 # Required-Stop: umountnfs $time
318 # X-Stop-After: sendsigs
319 # Default-Start: 2 3 4 5
320 # Default-Stop: 0 1 6
321 # Short-Description: enhanced syslogd
322 # Description: Rsyslog is an enhanced multi-threaded syslogd.
323 # It is quite compatible to stock sysklogd and can be
324 # used as a drop-in replacement.
325 ### END INIT INFO
326 DESC="enhanced syslogd"
327 DAEMON=/usr/sbin/rsyslogd
328 </pre></p>
329
330 <p>Pretty minimalistic to me... For the record, the original sysv-rc
331 script was 137 lines, and the above is just 15 lines, most of it meta
332 info/comments.</p>
333
334 <p>How to do this, you ask? Well, one create a new script
335 /lib/init/init-d-script looking something like this:
336
337 <p><pre>
338 #!/bin/sh
339
340 # Define LSB log_* functions.
341 # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
342 # and status_of_proc is working.
343 . /lib/lsb/init-functions
344
345 #
346 # Function that starts the daemon/service
347
348 #
349 do_start()
350 {
351 # Return
352 # 0 if daemon has been started
353 # 1 if daemon was already running
354 # 2 if daemon could not be started
355 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
356 || return 1
357 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
358 $DAEMON_ARGS \
359 || return 2
360 # Add code here, if necessary, that waits for the process to be ready
361 # to handle requests from services started subsequently which depend
362 # on this one. As a last resort, sleep for some time.
363 }
364
365 #
366 # Function that stops the daemon/service
367 #
368 do_stop()
369 {
370 # Return
371 # 0 if daemon has been stopped
372 # 1 if daemon was already stopped
373 # 2 if daemon could not be stopped
374 # other if a failure occurred
375 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
376 RETVAL="$?"
377 [ "$RETVAL" = 2 ] && return 2
378 # Wait for children to finish too if this is a daemon that forks
379 # and if the daemon is only ever run from this initscript.
380 # If the above conditions are not satisfied then add some other code
381 # that waits for the process to drop all resources that could be
382 # needed by services started subsequently. A last resort is to
383 # sleep for some time.
384 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
385 [ "$?" = 2 ] && return 2
386 # Many daemons don't delete their pidfiles when they exit.
387 rm -f $PIDFILE
388 return "$RETVAL"
389 }
390
391 #
392 # Function that sends a SIGHUP to the daemon/service
393 #
394 do_reload() {
395 #
396 # If the daemon can reload its configuration without
397 # restarting (for example, when it is sent a SIGHUP),
398 # then implement that here.
399 #
400 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
401 return 0
402 }
403
404 SCRIPTNAME=$1
405 scriptbasename="$(basename $1)"
406 echo "SN: $scriptbasename"
407 if [ "$scriptbasename" != "init-d-library" ] ; then
408 script="$1"
409 shift
410 . $script
411 else
412 exit 0
413 fi
414
415 NAME=$(basename $DAEMON)
416 PIDFILE=/var/run/$NAME.pid
417
418 # Exit if the package is not installed
419 #[ -x "$DAEMON" ] || exit 0
420
421 # Read configuration variable file if it is present
422 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
423
424 # Load the VERBOSE setting and other rcS variables
425 . /lib/init/vars.sh
426
427 case "$1" in
428 start)
429 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
430 do_start
431 case "$?" in
432 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
433 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
434 esac
435 ;;
436 stop)
437 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
438 do_stop
439 case "$?" in
440 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
441 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
442 esac
443 ;;
444 status)
445 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
446 ;;
447 #reload|force-reload)
448 #
449 # If do_reload() is not implemented then leave this commented out
450 # and leave 'force-reload' as an alias for 'restart'.
451 #
452 #log_daemon_msg "Reloading $DESC" "$NAME"
453 #do_reload
454 #log_end_msg $?
455 #;;
456 restart|force-reload)
457 #
458 # If the "reload" option is implemented then remove the
459 # 'force-reload' alias
460 #
461 log_daemon_msg "Restarting $DESC" "$NAME"
462 do_stop
463 case "$?" in
464 0|1)
465 do_start
466 case "$?" in
467 0) log_end_msg 0 ;;
468 1) log_end_msg 1 ;; # Old process is still running
469 *) log_end_msg 1 ;; # Failed to start
470 esac
471 ;;
472 *)
473 # Failed to stop
474 log_end_msg 1
475 ;;
476 esac
477 ;;
478 *)
479 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
480 exit 3
481 ;;
482 esac
483
484 :
485 </pre></p>
486
487 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
488 lot. I did not really polish the approach, so it might not always
489 work out of the box, but you get the idea. I did not try very hard to
490 optimize it nor make it more robust either.</p>
491
492 <p>A better argument for switching init system in Debian than reducing
493 the size of init scripts (which is a good thing to do anyway), is to
494 get boot system that is able to handle the kernel events sensibly and
495 robustly, and do not depend on the boot to run sequentially. The boot
496 and the kernel have not behaved sequentially in years.</p>
497 </div>
498 <div class="tags">
499
500
501 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>.
502
503
504 </div>
505 </div>
506 <div class="padding"></div>
507
508 <div class="entry">
509 <div class="title"><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></div>
510 <div class="date"> 1st November 2013</div>
511 <div class="body"><p><a href="http://www.spice-space.org/">The SPICE protocol</a> for
512 remote display access is the preferred solution with oVirt and RedHat
513 Enterprise Virtualization, and I was sad to discover the other day
514 that the browser plugin needed to use these systems seamlessly was
515 missing in Debian. The <a href="http://bugs.debian.org/668284">request
516 for a package</a> was from 2012-04-10 with no progress since
517 2013-04-01, so I decided to wrap up a package based on the great work
518 from Cajus Pollmeier and put it in a collab-maint maintained git
519 repository to get a package I could use. I would very much like
520 others to help me maintain the package (or just take over, I do not
521 mind), but as no-one had volunteered so far, I just uploaded it to
522 NEW. I hope it will be available in Debian in a few days.</p>
523
524 <p>The source is now available from
525 <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>
526 </div>
527 <div class="tags">
528
529
530 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
531
532
533 </div>
534 </div>
535 <div class="padding"></div>
536
537 <div class="entry">
538 <div class="title"><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></div>
539 <div class="date">27th October 2013</div>
540 <div class="body"><p>The
541 <a href="http://packages.qa.debian.org/v/vmdebootstrap.html">vmdebootstrap</a>
542 program is a a very nice system to create virtual machine images. It
543 create a image file, add a partition table, mount it and run
544 debootstrap in the mounted directory to create a Debian system on a
545 stick. Yesterday, I decided to try to teach it how to make images for
546 <a href="https://wiki.debian.org/RaspberryPi">Raspberry Pi</a>, as part
547 of a plan to simplify the build system for
548 <a href="https://wiki.debian.org/FreedomBox">the FreedomBox
549 project</a>. The FreedomBox project already uses vmdebootstrap for
550 the virtualbox images, but its current build system made multistrap
551 based system for Dreamplug images, and it is lacking support for
552 Raspberry Pi.</p>
553
554 <p>Armed with the knowledge on how to build "foreign" (aka non-native
555 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
556 code and adjusted it to be able to build armel images on my amd64
557 Debian laptop. I ended up giving vmdebootstrap five new options,
558 allowing me to replicate the image creation process I use to make
559 <a href="http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html">Debian
560 Jessie based mesh node images for the Raspberry Pi</a>. First, the
561 <tt>--foreign /path/to/binfm_handler</tt> option tell vmdebootstrap to
562 call debootstrap with --foreign and to copy the handler into the
563 generated chroot before running the second stage. This allow
564 vmdebootstrap to create armel images on an amd64 host. Next I added
565 two new options <tt>--bootsize size</tt> and <tt>--boottype
566 fstype</tt> to teach it to create a separate /boot/ partition with the
567 given file system type, allowing me to create an image with a vfat
568 partition for the /boot/ stuff. I also added a <tt>--variant
569 variant</tt> option to allow me to create smaller images without the
570 Debian base system packages installed. Finally, I added an option
571 <tt>--no-extlinux</tt> to tell vmdebootstrap to not install extlinux
572 as a boot loader. It is not needed on the Raspberry Pi and probably
573 most other non-x86 architectures. The changes were accepted by the
574 upstream author of vmdebootstrap yesterday and today, and is now
575 available from
576 <a href="http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/">the
577 upstream project page</a>.</p>
578
579 <p>To use it to build a Raspberry Pi image using Debian Jessie, first
580 create a small script (the customize script) to add the non-free
581 binary blob needed to boot the Raspberry Pi and the APT source
582 list:</p>
583
584 <p><pre>
585 #!/bin/sh
586 set -e # Exit on first error
587 rootdir="$1"
588 cd "$rootdir"
589 cat &lt;&lt;EOF > etc/apt/sources.list
590 deb http://http.debian.net/debian/ jessie main contrib non-free
591 EOF
592 # Install non-free binary blob needed to boot Raspberry Pi. This
593 # install a kernel somewhere too.
594 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
595 -O $rootdir/usr/bin/rpi-update
596 chmod a+x $rootdir/usr/bin/rpi-update
597 mkdir -p $rootdir/lib/modules
598 touch $rootdir/boot/start.elf
599 chroot $rootdir rpi-update
600 </pre></p>
601
602 <p>Next, fetch the latest vmdebootstrap script and call it like this
603 to build the image:</p>
604
605 <pre>
606 sudo ./vmdebootstrap \
607 --variant minbase \
608 --arch armel \
609 --distribution jessie \
610 --mirror http://http.debian.net/debian \
611 --image test.img \
612 --size 600M \
613 --bootsize 64M \
614 --boottype vfat \
615 --log-level debug \
616 --verbose \
617 --no-kernel \
618 --no-extlinux \
619 --root-password raspberry \
620 --hostname raspberrypi \
621 --foreign /usr/bin/qemu-arm-static \
622 --customize `pwd`/customize \
623 --package netbase \
624 --package git-core \
625 --package binutils \
626 --package ca-certificates \
627 --package wget \
628 --package kmod
629 </pre></p>
630
631 <p>The list of packages being installed are the ones needed by
632 rpi-update to make the image bootable on the Raspberry Pi, with the
633 exception of netbase, which is needed by debootstrap to find
634 /etc/hosts with the minbase variant. I really wish there was a way to
635 set up an Raspberry Pi using only packages in the Debian archive, but
636 that is not possible as far as I know, because it boots from the GPU
637 using a non-free binary blob.</p>
638
639 <p>The build host need debootstrap, kpartx and qemu-user-static and
640 probably a few others installed. I have not checked the complete
641 build dependency list.</p>
642
643 <p>The resulting image will not use the hardware floating point unit
644 on the Raspberry PI, because the armel architecture in Debian is not
645 optimized for that use. So the images created will be a bit slower
646 than <a href="http://www.raspbian.org/">Raspbian</a> based images.</p>
647 </div>
648 <div class="tags">
649
650
651 Tags: <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>.
652
653
654 </div>
655 </div>
656 <div class="padding"></div>
657
658 <div class="entry">
659 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Det_er_jo_makta_som_er_mest_s_rbar_ved_massiv_overv_kning_av_Internett.html">Det er jo makta som er mest sårbar ved massiv overvåkning av Internett</a></div>
660 <div class="date">26th October 2013</div>
661 <div class="body"><p>De siste måneders eksponering av
662 <a href="http://www.aftenposten.no/nyheter/uriks/Her-er-Edvard-Snowdens-mest-omtalte-avsloringer-7351734.html">den
663 totale overvåkningen som foregår i den vestlige verden dokumenterer
664 hvor sårbare vi er</a>. Men det slår meg at de som er mest sårbare
665 for dette, myndighetspersoner på alle nivåer, neppe har innsett at de
666 selv er de mest interessante personene å lage profiler på, for å kunne
667 påvirke dem.</p>
668
669 <p>For å ta et lite eksempel: Stortingets nettsted,
670 <a href="http://www.stortinget.no/">www.stortinget.no</a> (og
671 forsåvidt også
672 <a href="http://data.stortinget.no/">data.stortinget.no</a>),
673 inneholder informasjon om det som foregår på Stortinget, og jeg antar
674 de største brukerne av informasjonen der er representanter og
675 rådgivere på Stortinget. Intet overraskende med det. Det som derimot
676 er mer skjult er at Stortingets nettsted bruker
677 <a href="http://en.wikipedia.org/wiki/Google_Analytics">Google
678 Analytics</a>, hvilket gjør at enhver som besøker nettsidene der også
679 rapporterer om besøket via Internett-linjer som passerer Sverige,
680 England og videre til USA. Det betyr at informasjon om ethvert besøk
681 på stortingets nettsider kan snappes opp av svensk, britisk og USAs
682 etterretningsvesen. De kan dermed holde et øye med hvilke
683 Stortingssaker stortingsrepresentantene synes er interessante å sjekke
684 ut, og hvilke sider rådgivere og andre på stortinget synes er
685 interessant å besøke, når de gjør det og hvilke andre representanter
686 som sjekker de samme sidene omtrent samtidig. Stortingets bruk av
687 Google Analytics gjør det dermed enkelt for utenlands etteretning å
688 spore representantenes aktivitet og interesse. Hvis noen av
689 representantene bruker Google Mail eller noen andre tjenestene som
690 krever innlogging, så vil det være enda enklere å finne ut nøyaktig
691 hvilke personer som bruker hvilke nettlesere og dermed knytte
692 informasjonen opp til enkeltpersoner på Stortinget.</p>
693
694 <p>Og jo flere nettsteder som bruker Google Analytics, jo bedre
695 oversikt over stortingsrepresentantenes lesevaner og interesse blir
696 tilgjengelig for svensk, britisk og USAs etterretning. Hva de kan
697 bruke den informasjonen til overlater jeg til leseren å undres
698 over.</p>
699 </div>
700 <div class="tags">
701
702
703 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</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>, <a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
704
705
706 </div>
707 </div>
708 <div class="padding"></div>
709
710 <div class="entry">
711 <div class="title"><a href="http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html">A Raspberry Pi based batman-adv Mesh network node</a></div>
712 <div class="date">21st October 2013</div>
713 <div class="body"><p>The last few days I have been experimenting with
714 <a href="http://www.open-mesh.org/projects/batman-adv/wiki">the
715 batman-adv mesh technology</a>. I want to gain some experience to see
716 if it will fit <a href="https://wiki.debian.org/FreedomBox">the
717 Freedombox project</a>, and together with my neighbors try to build a
718 mesh network around the park where I live. Batman-adv is a layer 2
719 mesh system ("ethernet" in other words), where the mesh network appear
720 as if all the mesh clients are connected to the same switch.</p>
721
722 <p>My hardware of choice was the Linksys WRT54GL routers I had lying
723 around, but I've been unable to get them working with batman-adv. So
724 instead, I started playing with a
725 <a href="http://www.raspberrypi.org/">Raspberry Pi</a>, and tried to
726 get it working as a mesh node. My idea is to use it to create a mesh
727 node which function as a switch port, where everything connected to
728 the Raspberry Pi ethernet plug is connected (bridged) to the mesh
729 network. This allow me to hook a wifi base station like the Linksys
730 WRT54GL to the mesh by plugging it into a Raspberry Pi, and allow
731 non-mesh clients to hook up to the mesh. This in turn is useful for
732 Android phones using <a href="http://servalproject.org/">the Serval
733 Project</a> voip client, allowing every one around the playground to
734 phone and message each other for free. The reason is that Android
735 phones do not see ad-hoc wifi networks (they are filtered away from
736 the GUI view), and can not join the mesh without being rooted. But if
737 they are connected using a normal wifi base station, they can talk to
738 every client on the local network.</p>
739
740 <p>To get this working, I've created a debian package
741 <a href="https://github.com/petterreinholdtsen/meshfx-node">meshfx-node</a>
742 and a script
743 <a href="https://github.com/petterreinholdtsen/meshfx-node/blob/master/build-rpi-mesh-node">build-rpi-mesh-node</a>
744 to create the Raspberry Pi boot image. I'm using Debian Jessie (and
745 not Raspbian), to get more control over the packages available.
746 Unfortunately a huge binary blob need to be inserted into the boot
747 image to get it booting, but I'll ignore that for now. Also, as
748 Debian lack support for the CPU features available in the Raspberry
749 Pi, the system do not use the hardware floating point unit. I hope
750 the routing performance isn't affected by the lack of hardware FPU
751 support.</p>
752
753 <p>To create an image, run the following with a sudo enabled user
754 after inserting the target SD card into the build machine:</p>
755
756 <p><pre>
757 % wget -O build-rpi-mesh-node \
758 https://raw.github.com/petterreinholdtsen/meshfx-node/master/build-rpi-mesh-node
759 % sudo bash -x ./build-rpi-mesh-node > build.log 2>&1
760 % dd if=/root/rpi/rpi_basic_jessie_$(date +%Y%m%d).img of=/dev/mmcblk0 bs=1M
761 %
762 </pre></p>
763
764 <p>Booting with the resulting SD card on a Raspberry PI with a USB
765 wifi card inserted should give you a mesh node. At least it does for
766 me with a the wifi card I am using. The default mesh settings are the
767 ones used by the Oslo mesh project at Hackeriet, as I mentioned in
768 <a href="http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html">an
769 earlier blog post about this mesh testing</a>.</p>
770
771 <p>The mesh node was not horribly expensive either. I bought
772 everything over the counter in shops nearby. If I had ordered online
773 from the lowest bidder, the price should be significantly lower:</p>
774
775 <p><table>
776
777 <tr><th>Supplier</th><th>Model</th><th>NOK</th></tr>
778 <tr><td>Teknikkmagasinet</td><td>Raspberry Pi model B</td><td>349.90</td></tr>
779 <tr><td>Teknikkmagasinet</td><td>Raspberry Pi type B case</td><td>99.90</td></tr>
780 <tr><td>Lefdal</td><td>Jensen Air:Link 25150</td><td>295.-</td></tr>
781 <tr><td>Clas Ohlson</td><td>Kingston 16 GB SD card</td><td>199.-</td></tr>
782 <tr><td>Total cost</td><td></td><td>943.80</td></tr>
783
784 </table></p>
785
786 <p>Now my mesh network at home consist of one laptop in the basement
787 connected to my production network, one Raspberry Pi node on the 1th
788 floor that can be seen by my neighbor across the park, and one
789 play-node I use to develop the image building script. And some times
790 I hook up my work horse laptop to the mesh to test it. I look forward
791 to figuring out what kind of latency the batman-adv setup will give,
792 and how much packet loss we will experience around the park. :)</p>
793 </div>
794 <div class="tags">
795
796
797 Tags: <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>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
798
799
800 </div>
801 </div>
802 <div class="padding"></div>
803
804 <div class="entry">
805 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Perl_library_to_control_the_Spykee_robot_moved_to_github.html">Perl library to control the Spykee robot moved to github</a></div>
806 <div class="date">19th October 2013</div>
807 <div class="body"><p>Back in 2010, I created a Perl library to talk to
808 <a href="http://en.wikipedia.org/wiki/Spykee">the Spykee robot</a>
809 (with two belts, wifi, USB and Linux) and made it available from my
810 web page. Today I concluded that it should move to a site that is
811 easier to use to cooperate with others, and moved it to github. If
812 you got a Spykee robot, you might want to check out
813 <a href="https://github.com/petterreinholdtsen/libspykee-perl">the
814 libspykee-perl github repository</a>.</p>
815 </div>
816 <div class="tags">
817
818
819 Tags: <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/robot">robot</a>.
820
821
822 </div>
823 </div>
824 <div class="padding"></div>
825
826 <p style="text-align: right;"><a href="index.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
827 <div id="sidebar">
828
829
830
831 <h2>Archive</h2>
832 <ul>
833
834 <li>2013
835 <ul>
836
837 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
838
839 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
840
841 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
842
843 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
844
845 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
846
847 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
848
849 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
850
851 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
852
853 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
854
855 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
856
857 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (6)</a></li>
858
859 </ul></li>
860
861 <li>2012
862 <ul>
863
864 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
865
866 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
867
868 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
869
870 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
871
872 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
873
874 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
875
876 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
877
878 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
879
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
881
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
883
884 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
885
886 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
887
888 </ul></li>
889
890 <li>2011
891 <ul>
892
893 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
894
895 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
896
897 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
898
899 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
900
901 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
902
903 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
904
905 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
906
907 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
908
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
910
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
912
913 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
914
915 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
916
917 </ul></li>
918
919 <li>2010
920 <ul>
921
922 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
923
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
925
926 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
927
928 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
929
930 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
931
932 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
933
934 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
935
936 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
937
938 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
939
940 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
941
942 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
943
944 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
945
946 </ul></li>
947
948 <li>2009
949 <ul>
950
951 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
952
953 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
954
955 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
956
957 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
958
959 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
960
961 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
962
963 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
964
965 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
966
967 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
968
969 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
970
971 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
972
973 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
974
975 </ul></li>
976
977 <li>2008
978 <ul>
979
980 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
981
982 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
983
984 </ul></li>
985
986 </ul>
987
988
989
990 <h2>Tags</h2>
991 <ul>
992
993 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
994
995 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
996
997 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
998
999 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1000
1001 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (7)</a></li>
1002
1003 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (13)</a></li>
1004
1005 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1006
1007 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (90)</a></li>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (142)</a></li>
1010
1011 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1012
1013 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (10)</a></li>
1014
1015 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (228)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (12)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (5)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (11)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (37)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (7)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (18)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
1036
1037 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
1038
1039 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1040
1041 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (5)</a></li>
1042
1043 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
1044
1045 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (237)</a></li>
1046
1047 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (159)</a></li>
1048
1049 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (9)</a></li>
1050
1051 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1052
1053 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (45)</a></li>
1054
1055 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (67)</a></li>
1056
1057 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1058
1059 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1060
1061 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
1064
1065 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1066
1067 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1068
1069 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1070
1071 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (33)</a></li>
1072
1073 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1074
1075 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
1076
1077 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (43)</a></li>
1078
1079 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
1080
1081 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (9)</a></li>
1082
1083 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (21)</a></li>
1084
1085 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
1086
1087 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
1088
1089 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (39)</a></li>
1090
1091 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1092
1093 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (28)</a></li>
1094
1095 </ul>
1096
1097
1098 </div>
1099 <p style="text-align: right">
1100 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1101 </p>
1102
1103 </body>
1104 </html>