]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Generated.
[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/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>
24 <div class="date">10th November 2013</div>
25 <div class="body"><p>Continuing my research into mesh networking, I was recommended to
26 use TP-Link 3040 and 3600 access points as mesh nodes, and the pair I
27 bought arrived on Friday. Here are my notes on how to set up the
28 MR3040 as a mesh node using
29 <a href="http://www.openwrt.org/">OpenWrt</a>.</p>
30
31 <p>I started by following the instructions on the OpenWRT wiki for
32 <a href="http://wiki.openwrt.org/toh/tp-link/tl-mr3040">TL-MR3040</a>,
33 and downloaded
34 <a href="http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin">the
35 recommended firmware image</a>
36 (openwrt-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin) and
37 uploaded it into the original web interface. The flashing went fine,
38 and the machine was available via telnet on the ethernet port. After
39 logging in and setting the root password, ssh was available and I
40 could start to set it up as a batman-adv mesh node.</p>
41
42 <p>I started off by reading the instructions from
43 <a href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Antoine's_Research">Wireless
44 Africa</a>, which had quite a lot of useful information, but
45 eventually I followed the recipe from the Open Mesh wiki for
46 <a href="http://www.open-mesh.org/projects/batman-adv/wiki/Batman-adv-openwrt-config">using
47 batman-adv on OpenWrt</a>. A small snag was the fact that the
48 <tt>opkg install kmod-batman-adv</tt> command did not work as it
49 should. The batman-adv kernel module would fail to load because its
50 dependency crc16 was not already loaded. I
51 <a href="https://dev.openwrt.org/ticket/14452">reported the bug</a> to
52 the openwrt project and hope it will be fixed soon. But the problem
53 only seem to affect initial testing of batman-adv, as configuration
54 seem to work when booting from scratch.</p>
55
56 <p>The setup is done using files in /etc/config/. I did not bridge
57 the Ethernet and mesh interfaces this time, to be able to hook up the
58 box on my local network and log into it for configuration updates.
59 The following files were changed and look like this after modifying
60 them:</p>
61
62 <p><tt>/etc/config/network</tt></p>
63
64 <pre>
65
66 config interface 'loopback'
67 option ifname 'lo'
68 option proto 'static'
69 option ipaddr '127.0.0.1'
70 option netmask '255.0.0.0'
71
72 config globals 'globals'
73 option ula_prefix 'fdbf:4c12:3fed::/48'
74
75 config interface 'lan'
76 option ifname 'eth0'
77 option type 'bridge'
78 option proto 'dhcp'
79 option ipaddr '192.168.1.1'
80 option netmask '255.255.255.0'
81 option hostname 'tl-mr3040'
82 option ip6assign '60'
83
84 config interface 'mesh'
85 option ifname 'adhoc0'
86 option mtu '1528'
87 option proto 'batadv'
88 option mesh 'bat0'
89 </pre>
90
91 <p><tt>/etc/config/wireless</tt></p>
92 <pre>
93
94 config wifi-device 'radio0'
95 option type 'mac80211'
96 option channel '11'
97 option hwmode '11ng'
98 option path 'platform/ar933x_wmac'
99 option htmode 'HT20'
100 list ht_capab 'SHORT-GI-20'
101 list ht_capab 'SHORT-GI-40'
102 list ht_capab 'RX-STBC1'
103 list ht_capab 'DSSS_CCK-40'
104 option disabled '0'
105
106 config wifi-iface 'wmesh'
107 option device 'radio0'
108 option ifname 'adhoc0'
109 option network 'mesh'
110 option encryption 'none'
111 option mode 'adhoc'
112 option bssid '02:BA:00:00:00:01'
113 option ssid 'meshfx@hackeriet'
114 </pre>
115 <p><tt>/etc/config/batman-adv</tt></p>
116 <pre>
117
118 config 'mesh' 'bat0'
119 option interfaces 'adhoc0'
120 option 'aggregated_ogms'
121 option 'ap_isolation'
122 option 'bonding'
123 option 'fragmentation'
124 option 'gw_bandwidth'
125 option 'gw_mode'
126 option 'gw_sel_class'
127 option 'log_level'
128 option 'orig_interval'
129 option 'vis_mode'
130 option 'bridge_loop_avoidance'
131 option 'distributed_arp_table'
132 option 'network_coding'
133 option 'hop_penalty'
134
135 # yet another batX instance
136 # config 'mesh' 'bat5'
137 # option 'interfaces' 'second_mesh'
138 </pre>
139
140 <p>The mesh node is now operational. I have yet to test its range,
141 but I hope it is good. I have not yet tested the TP-Link 3600 box
142 still wrapped up in plastic.</p>
143 </div>
144 <div class="tags">
145
146
147 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>.
148
149
150 </div>
151 </div>
152 <div class="padding"></div>
153
154 <div class="entry">
155 <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>
156 <div class="date"> 2nd November 2013</div>
157 <div class="body"><p>If one of the points of switching to a new init system in Debian is
158 <a href="http://thomas.goirand.fr/blog/?p=147">to get rid of huge
159 init.d scripts</a>, I doubt we need to switch away from sysvinit and
160 init.d scripts at all. Here is an example init.d script, ie a rewrite
161 of /etc/init.d/rsyslog:</p>
162
163 <p><pre>
164 #!/lib/init/init-d-script
165 ### BEGIN INIT INFO
166 # Provides: rsyslog
167 # Required-Start: $remote_fs $time
168 # Required-Stop: umountnfs $time
169 # X-Stop-After: sendsigs
170 # Default-Start: 2 3 4 5
171 # Default-Stop: 0 1 6
172 # Short-Description: enhanced syslogd
173 # Description: Rsyslog is an enhanced multi-threaded syslogd.
174 # It is quite compatible to stock sysklogd and can be
175 # used as a drop-in replacement.
176 ### END INIT INFO
177 DESC="enhanced syslogd"
178 DAEMON=/usr/sbin/rsyslogd
179 </pre></p>
180
181 <p>Pretty minimalistic to me... For the record, the original sysv-rc
182 script was 137 lines, and the above is just 15 lines, most of it meta
183 info/comments.</p>
184
185 <p>How to do this, you ask? Well, one create a new script
186 /lib/init/init-d-script looking something like this:
187
188 <p><pre>
189 #!/bin/sh
190
191 # Define LSB log_* functions.
192 # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
193 # and status_of_proc is working.
194 . /lib/lsb/init-functions
195
196 #
197 # Function that starts the daemon/service
198
199 #
200 do_start()
201 {
202 # Return
203 # 0 if daemon has been started
204 # 1 if daemon was already running
205 # 2 if daemon could not be started
206 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
207 || return 1
208 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
209 $DAEMON_ARGS \
210 || return 2
211 # Add code here, if necessary, that waits for the process to be ready
212 # to handle requests from services started subsequently which depend
213 # on this one. As a last resort, sleep for some time.
214 }
215
216 #
217 # Function that stops the daemon/service
218 #
219 do_stop()
220 {
221 # Return
222 # 0 if daemon has been stopped
223 # 1 if daemon was already stopped
224 # 2 if daemon could not be stopped
225 # other if a failure occurred
226 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
227 RETVAL="$?"
228 [ "$RETVAL" = 2 ] && return 2
229 # Wait for children to finish too if this is a daemon that forks
230 # and if the daemon is only ever run from this initscript.
231 # If the above conditions are not satisfied then add some other code
232 # that waits for the process to drop all resources that could be
233 # needed by services started subsequently. A last resort is to
234 # sleep for some time.
235 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
236 [ "$?" = 2 ] && return 2
237 # Many daemons don't delete their pidfiles when they exit.
238 rm -f $PIDFILE
239 return "$RETVAL"
240 }
241
242 #
243 # Function that sends a SIGHUP to the daemon/service
244 #
245 do_reload() {
246 #
247 # If the daemon can reload its configuration without
248 # restarting (for example, when it is sent a SIGHUP),
249 # then implement that here.
250 #
251 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
252 return 0
253 }
254
255 SCRIPTNAME=$1
256 scriptbasename="$(basename $1)"
257 echo "SN: $scriptbasename"
258 if [ "$scriptbasename" != "init-d-library" ] ; then
259 script="$1"
260 shift
261 . $script
262 else
263 exit 0
264 fi
265
266 NAME=$(basename $DAEMON)
267 PIDFILE=/var/run/$NAME.pid
268
269 # Exit if the package is not installed
270 #[ -x "$DAEMON" ] || exit 0
271
272 # Read configuration variable file if it is present
273 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
274
275 # Load the VERBOSE setting and other rcS variables
276 . /lib/init/vars.sh
277
278 case "$1" in
279 start)
280 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
281 do_start
282 case "$?" in
283 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
284 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
285 esac
286 ;;
287 stop)
288 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
289 do_stop
290 case "$?" in
291 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
292 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
293 esac
294 ;;
295 status)
296 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
297 ;;
298 #reload|force-reload)
299 #
300 # If do_reload() is not implemented then leave this commented out
301 # and leave 'force-reload' as an alias for 'restart'.
302 #
303 #log_daemon_msg "Reloading $DESC" "$NAME"
304 #do_reload
305 #log_end_msg $?
306 #;;
307 restart|force-reload)
308 #
309 # If the "reload" option is implemented then remove the
310 # 'force-reload' alias
311 #
312 log_daemon_msg "Restarting $DESC" "$NAME"
313 do_stop
314 case "$?" in
315 0|1)
316 do_start
317 case "$?" in
318 0) log_end_msg 0 ;;
319 1) log_end_msg 1 ;; # Old process is still running
320 *) log_end_msg 1 ;; # Failed to start
321 esac
322 ;;
323 *)
324 # Failed to stop
325 log_end_msg 1
326 ;;
327 esac
328 ;;
329 *)
330 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
331 exit 3
332 ;;
333 esac
334
335 :
336 </pre></p>
337
338 <p>It is based on /etc/init.d/skeleton, and could be improved quite a
339 lot. I did not really polish the approach, so it might not always
340 work out of the box, but you get the idea. I did not try very hard to
341 optimize it nor make it more robust either.</p>
342
343 <p>A better argument for switching init system in Debian than reducing
344 the size of init scripts (which is a good thing to do anyway), is to
345 get boot system that is able to handle the kernel events sensibly and
346 robustly, and do not depend on the boot to run sequentially. The boot
347 and the kernel have not behaved sequentially in years.</p>
348 </div>
349 <div class="tags">
350
351
352 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>.
353
354
355 </div>
356 </div>
357 <div class="padding"></div>
358
359 <div class="entry">
360 <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>
361 <div class="date"> 1st November 2013</div>
362 <div class="body"><p><a href="http://www.spice-space.org/">The SPICE protocol</a> for
363 remote display access is the preferred solution with oVirt and RedHat
364 Enterprise Virtualization, and I was sad to discover the other day
365 that the browser plugin needed to use these systems seamlessly was
366 missing in Debian. The <a href="http://bugs.debian.org/668284">request
367 for a package</a> was from 2012-04-10 with no progress since
368 2013-04-01, so I decided to wrap up a package based on the great work
369 from Cajus Pollmeier and put it in a collab-maint maintained git
370 repository to get a package I could use. I would very much like
371 others to help me maintain the package (or just take over, I do not
372 mind), but as no-one had volunteered so far, I just uploaded it to
373 NEW. I hope it will be available in Debian in a few days.</p>
374
375 <p>The source is now available from
376 <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>
377 </div>
378 <div class="tags">
379
380
381 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>.
382
383
384 </div>
385 </div>
386 <div class="padding"></div>
387
388 <div class="entry">
389 <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>
390 <div class="date">27th October 2013</div>
391 <div class="body"><p>The
392 <a href="http://packages.qa.debian.org/v/vmdebootstrap.html">vmdebootstrap</a>
393 program is a a very nice system to create virtual machine images. It
394 create a image file, add a partition table, mount it and run
395 debootstrap in the mounted directory to create a Debian system on a
396 stick. Yesterday, I decided to try to teach it how to make images for
397 <a href="https://wiki.debian.org/RaspberryPi">Raspberry Pi</a>, as part
398 of a plan to simplify the build system for
399 <a href="https://wiki.debian.org/FreedomBox">the FreedomBox
400 project</a>. The FreedomBox project already uses vmdebootstrap for
401 the virtualbox images, but its current build system made multistrap
402 based system for Dreamplug images, and it is lacking support for
403 Raspberry Pi.</p>
404
405 <p>Armed with the knowledge on how to build "foreign" (aka non-native
406 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
407 code and adjusted it to be able to build armel images on my amd64
408 Debian laptop. I ended up giving vmdebootstrap five new options,
409 allowing me to replicate the image creation process I use to make
410 <a href="http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html">Debian
411 Jessie based mesh node images for the Raspberry Pi</a>. First, the
412 <tt>--foreign /path/to/binfm_handler</tt> option tell vmdebootstrap to
413 call debootstrap with --foreign and to copy the handler into the
414 generated chroot before running the second stage. This allow
415 vmdebootstrap to create armel images on an amd64 host. Next I added
416 two new options <tt>--bootsize size</tt> and <tt>--boottype
417 fstype</tt> to teach it to create a separate /boot/ partition with the
418 given file system type, allowing me to create an image with a vfat
419 partition for the /boot/ stuff. I also added a <tt>--variant
420 variant</tt> option to allow me to create smaller images without the
421 Debian base system packages installed. Finally, I added an option
422 <tt>--no-extlinux</tt> to tell vmdebootstrap to not install extlinux
423 as a boot loader. It is not needed on the Raspberry Pi and probably
424 most other non-x86 architectures. The changes were accepted by the
425 upstream author of vmdebootstrap yesterday and today, and is now
426 available from
427 <a href="http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/">the
428 upstream project page</a>.</p>
429
430 <p>To use it to build a Raspberry Pi image using Debian Jessie, first
431 create a small script (the customize script) to add the non-free
432 binary blob needed to boot the Raspberry Pi and the APT source
433 list:</p>
434
435 <p><pre>
436 #!/bin/sh
437 set -e # Exit on first error
438 rootdir="$1"
439 cd "$rootdir"
440 cat &lt;&lt;EOF > etc/apt/sources.list
441 deb http://http.debian.net/debian/ jessie main contrib non-free
442 EOF
443 # Install non-free binary blob needed to boot Raspberry Pi. This
444 # install a kernel somewhere too.
445 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
446 -O $rootdir/usr/bin/rpi-update
447 chmod a+x $rootdir/usr/bin/rpi-update
448 mkdir -p $rootdir/lib/modules
449 touch $rootdir/boot/start.elf
450 chroot $rootdir rpi-update
451 </pre></p>
452
453 <p>Next, fetch the latest vmdebootstrap script and call it like this
454 to build the image:</p>
455
456 <pre>
457 sudo ./vmdebootstrap \
458 --variant minbase \
459 --arch armel \
460 --distribution jessie \
461 --mirror http://http.debian.net/debian \
462 --image test.img \
463 --size 600M \
464 --bootsize 64M \
465 --boottype vfat \
466 --log-level debug \
467 --verbose \
468 --no-kernel \
469 --no-extlinux \
470 --root-password raspberry \
471 --hostname raspberrypi \
472 --foreign /usr/bin/qemu-arm-static \
473 --customize `pwd`/customize \
474 --package netbase \
475 --package git-core \
476 --package binutils \
477 --package ca-certificates \
478 --package wget \
479 --package kmod
480 </pre></p>
481
482 <p>The list of packages being installed are the ones needed by
483 rpi-update to make the image bootable on the Raspberry Pi, with the
484 exception of netbase, which is needed by debootstrap to find
485 /etc/hosts with the minbase variant. I really wish there was a way to
486 set up an Raspberry Pi using only packages in the Debian archive, but
487 that is not possible as far as I know, because it boots from the GPU
488 using a non-free binary blob.</p>
489
490 <p>The build host need debootstrap, kpartx and qemu-user-static and
491 probably a few others installed. I have not checked the complete
492 build dependency list.</p>
493
494 <p>The resulting image will not use the hardware floating point unit
495 on the Raspberry PI, because the armel architecture in Debian is not
496 optimized for that use. So the images created will be a bit slower
497 than <a href="http://www.raspbian.org/">Raspbian</a> based images.</p>
498 </div>
499 <div class="tags">
500
501
502 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>.
503
504
505 </div>
506 </div>
507 <div class="padding"></div>
508
509 <div class="entry">
510 <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>
511 <div class="date">26th October 2013</div>
512 <div class="body"><p>De siste måneders eksponering av
513 <a href="http://www.aftenposten.no/nyheter/uriks/Her-er-Edvard-Snowdens-mest-omtalte-avsloringer-7351734.html">den
514 totale overvåkningen som foregår i den vestlige verden dokumenterer
515 hvor sårbare vi er</a>. Men det slår meg at de som er mest sårbare
516 for dette, myndighetspersoner på alle nivåer, neppe har innsett at de
517 selv er de mest interessante personene å lage profiler på, for å kunne
518 påvirke dem.</p>
519
520 <p>For å ta et lite eksempel: Stortingets nettsted,
521 <a href="http://www.stortinget.no/">www.stortinget.no</a> (og
522 forsåvidt også
523 <a href="http://data.stortinget.no/">data.stortinget.no</a>),
524 inneholder informasjon om det som foregår på Stortinget, og jeg antar
525 de største brukerne av informasjonen der er representanter og
526 rådgivere på Stortinget. Intet overraskende med det. Det som derimot
527 er mer skjult er at Stortingets nettsted bruker
528 <a href="http://en.wikipedia.org/wiki/Google_Analytics">Google
529 Analytics</a>, hvilket gjør at enhver som besøker nettsidene der også
530 rapporterer om besøket via Internett-linjer som passerer Sverige,
531 England og videre til USA. Det betyr at informasjon om ethvert besøk
532 på stortingets nettsider kan snappes opp av svensk, britisk og USAs
533 etterretningsvesen. De kan dermed holde et øye med hvilke
534 Stortingssaker stortingsrepresentantene synes er interessante å sjekke
535 ut, og hvilke sider rådgivere og andre på stortinget synes er
536 interessant å besøke, når de gjør det og hvilke andre representanter
537 som sjekker de samme sidene omtrent samtidig. Stortingets bruk av
538 Google Analytics gjør det dermed enkelt for utenlands etteretning å
539 spore representantenes aktivitet og interesse. Hvis noen av
540 representantene bruker Google Mail eller noen andre tjenestene som
541 krever innlogging, så vil det være enda enklere å finne ut nøyaktig
542 hvilke personer som bruker hvilke nettlesere og dermed knytte
543 informasjonen opp til enkeltpersoner på Stortinget.</p>
544
545 <p>Og jo flere nettsteder som bruker Google Analytics, jo bedre
546 oversikt over stortingsrepresentantenes lesevaner og interesse blir
547 tilgjengelig for svensk, britisk og USAs etterretning. Hva de kan
548 bruke den informasjonen til overlater jeg til leseren å undres
549 over.</p>
550 </div>
551 <div class="tags">
552
553
554 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>.
555
556
557 </div>
558 </div>
559 <div class="padding"></div>
560
561 <div class="entry">
562 <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>
563 <div class="date">21st October 2013</div>
564 <div class="body"><p>The last few days I have been experimenting with
565 <a href="http://www.open-mesh.org/projects/batman-adv/wiki">the
566 batman-adv mesh technology</a>. I want to gain some experience to see
567 if it will fit <a href="https://wiki.debian.org/FreedomBox">the
568 Freedombox project</a>, and together with my neighbors try to build a
569 mesh network around the park where I live. Batman-adv is a layer 2
570 mesh system ("ethernet" in other words), where the mesh network appear
571 as if all the mesh clients are connected to the same switch.</p>
572
573 <p>My hardware of choice was the Linksys WRT54GL routers I had lying
574 around, but I've been unable to get them working with batman-adv. So
575 instead, I started playing with a
576 <a href="http://www.raspberrypi.org/">Raspberry Pi</a>, and tried to
577 get it working as a mesh node. My idea is to use it to create a mesh
578 node which function as a switch port, where everything connected to
579 the Raspberry Pi ethernet plug is connected (bridged) to the mesh
580 network. This allow me to hook a wifi base station like the Linksys
581 WRT54GL to the mesh by plugging it into a Raspberry Pi, and allow
582 non-mesh clients to hook up to the mesh. This in turn is useful for
583 Android phones using <a href="http://servalproject.org/">the Serval
584 Project</a> voip client, allowing every one around the playground to
585 phone and message each other for free. The reason is that Android
586 phones do not see ad-hoc wifi networks (they are filtered away from
587 the GUI view), and can not join the mesh without being rooted. But if
588 they are connected using a normal wifi base station, they can talk to
589 every client on the local network.</p>
590
591 <p>To get this working, I've created a debian package
592 <a href="https://github.com/petterreinholdtsen/meshfx-node">meshfx-node</a>
593 and a script
594 <a href="https://github.com/petterreinholdtsen/meshfx-node/blob/master/build-rpi-mesh-node">build-rpi-mesh-node</a>
595 to create the Raspberry Pi boot image. I'm using Debian Jessie (and
596 not Raspbian), to get more control over the packages available.
597 Unfortunately a huge binary blob need to be inserted into the boot
598 image to get it booting, but I'll ignore that for now. Also, as
599 Debian lack support for the CPU features available in the Raspberry
600 Pi, the system do not use the hardware floating point unit. I hope
601 the routing performance isn't affected by the lack of hardware FPU
602 support.</p>
603
604 <p>To create an image, run the following with a sudo enabled user
605 after inserting the target SD card into the build machine:</p>
606
607 <p><pre>
608 % wget -O build-rpi-mesh-node \
609 https://raw.github.com/petterreinholdtsen/meshfx-node/master/build-rpi-mesh-node
610 % sudo bash -x ./build-rpi-mesh-node > build.log 2>&1
611 % dd if=/root/rpi/rpi_basic_jessie_$(date +%Y%m%d).img of=/dev/mmcblk0 bs=1M
612 %
613 </pre></p>
614
615 <p>Booting with the resulting SD card on a Raspberry PI with a USB
616 wifi card inserted should give you a mesh node. At least it does for
617 me with a the wifi card I am using. The default mesh settings are the
618 ones used by the Oslo mesh project at Hackeriet, as I mentioned in
619 <a href="http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html">an
620 earlier blog post about this mesh testing</a>.</p>
621
622 <p>The mesh node was not horribly expensive either. I bought
623 everything over the counter in shops nearby. If I had ordered online
624 from the lowest bidder, the price should be significantly lower:</p>
625
626 <p><table>
627
628 <tr><th>Supplier</th><th>Model</th><th>NOK</th></tr>
629 <tr><td>Teknikkmagasinet</td><td>Raspberry Pi model B</td><td>349.90</td></tr>
630 <tr><td>Teknikkmagasinet</td><td>Raspberry Pi type B case</td><td>99.90</td></tr>
631 <tr><td>Lefdal</td><td>Jensen Air:Link 25150</td><td>295.-</td></tr>
632 <tr><td>Clas Ohlson</td><td>Kingston 16 GB SD card</td><td>199.-</td></tr>
633 <tr><td>Total cost</td><td></td><td>943.80</td></tr>
634
635 </table></p>
636
637 <p>Now my mesh network at home consist of one laptop in the basement
638 connected to my production network, one Raspberry Pi node on the 1th
639 floor that can be seen by my neighbor across the park, and one
640 play-node I use to develop the image building script. And some times
641 I hook up my work horse laptop to the mesh to test it. I look forward
642 to figuring out what kind of latency the batman-adv setup will give,
643 and how much packet loss we will experience around the park. :)</p>
644 </div>
645 <div class="tags">
646
647
648 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>.
649
650
651 </div>
652 </div>
653 <div class="padding"></div>
654
655 <div class="entry">
656 <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>
657 <div class="date">19th October 2013</div>
658 <div class="body"><p>Back in 2010, I created a Perl library to talk to
659 <a href="http://en.wikipedia.org/wiki/Spykee">the Spykee robot</a>
660 (with two belts, wifi, USB and Linux) and made it available from my
661 web page. Today I concluded that it should move to a site that is
662 easier to use to cooperate with others, and moved it to github. If
663 you got a Spykee robot, you might want to check out
664 <a href="https://github.com/petterreinholdtsen/libspykee-perl">the
665 libspykee-perl github repository</a>.</p>
666 </div>
667 <div class="tags">
668
669
670 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>.
671
672
673 </div>
674 </div>
675 <div class="padding"></div>
676
677 <div class="entry">
678 <div class="title"><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></div>
679 <div class="date">15th October 2013</div>
680 <div class="body"><p>The last few days I came across a few good causes that should get
681 wider attention. I recommend signing and donating to each one of
682 these. :)</p>
683
684 <p>Via <a href="http://www.debian.org/News/weekly/2013/18/">Debian
685 Project News for 2013-10-14</a> I came across the Outreach Program for
686 Women program which is a Google Summer of Code like initiative to get
687 more women involved in free software. One debian sponsor has offered
688 to match <a href="http://debian.ch/opw2013">any donation done to Debian
689 earmarked</a> for this initiative. I donated a few minutes ago, and
690 hope you will to. :)</p>
691
692 <p>And the Electronic Frontier Foundation just announced plans to
693 create <a href="https://supporters.eff.org/donate/nsa-videos">video
694 documentaries about the excessive spying</a> on every Internet user that
695 take place these days, and their need to fund the work. I've already
696 donated. Are you next?</p>
697
698 <p>For my Norwegian audience, the organisation Studentenes og
699 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
700 statement under the heading
701 <a href="http://saih.no/Bloggers_United/">Bloggers United for Open
702 Access</a> for those of us asking for more focus on open access in the
703 Norwegian government. So far 499 signatures. I hope you will sign it
704 too.</p>
705 </div>
706 <div class="tags">
707
708
709 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett</a>, <a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
710
711
712 </div>
713 </div>
714 <div class="padding"></div>
715
716 <div class="entry">
717 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html">Oslo community mesh network - with NUUG and Hackeriet at Hausmania</a></div>
718 <div class="date">11th October 2013</div>
719 <div class="body"><p>Wireless mesh networks are self organising and self healing
720 networks that can be used to connect computers across small and large
721 areas, depending on the radio technology used. Normal wifi equipment
722 can be used to create home made radio networks, and there are several
723 successful examples like
724 <a href="http://www.freifunk.net/">Freifunk</a> and
725 <a href="http://www.awmn.net/">Athens Wireless Metropolitan Network</a>
726 (see
727 <a href="http://en.wikipedia.org/wiki/List_of_wireless_community_networks_by_region#Greece">wikipedia
728 for a large list</a>) around the globe. To give you an idea how it
729 work, check out the nice overview of the Kiel Freifunk community which
730 can be seen from their
731 <a href="http://freifunk.in-kiel.de/ffmap/nodes.html">dynamically
732 updated node graph and map</a>, where one can see how the mesh nodes
733 automatically handle routing and recover from nodes disappearing.
734 There is also a small community mesh network group in Oslo, Norway,
735 and that is the main topic of this blog post.</p>
736
737 <p>I've wanted to check out mesh networks for a while now, and hoped
738 to do it as part of my involvement with the <a
739 href="http://www.nuug.no/">NUUG member organisation</a> community, and
740 my recent involvement in
741 <a href="https://wiki.debian.org/FreedomBox">the Freedombox project</a>
742 finally lead me to give mesh networks some priority, as I suspect a
743 Freedombox should use mesh networks to connect neighbours and family
744 when possible, given that most communication between people are
745 between those nearby (as shown for example by research on Facebook
746 communication patterns). It also allow people to communicate without
747 any central hub to tap into for those that want to listen in on the
748 private communication of citizens, which have become more and more
749 important over the years.</p>
750
751 <p>So far I have only been able to find one group of people in Oslo
752 working on community mesh networks, over at the hack space
753 <a href="http://hackeriet.no/">Hackeriet</a> at Husmania. They seem to
754 have started with some Freifunk based effort using OLSR, called
755 <a href="http://oslo.freifunk.net/index.php?title=Main_Page">the Oslo
756 Freifunk project</a>, but that effort is now dead and the people
757 behind it have moved on to a batman-adv based system called
758 <a href="http://meshfx.org/trac">meshfx</a>. Unfortunately the wiki
759 site for the Oslo Freifunk project is no longer possible to update to
760 reflect this fact, so the old project page can't be updated to point to
761 the new project. A while back, the people at Hackeriet invited people
762 from the Freifunk community to Oslo to talk about mesh networks. I
763 came across this video where Hans Jørgen Lysglimt interview the
764 speakers about this talk (from
765 <a href="https://www.youtube.com/watch?v=N2Kd7CLkhSY">youtube</a>):</p>
766
767 <p><iframe width="420" height="315" src="https://www.youtube.com/embed/N2Kd7CLkhSY" frameborder="0" allowfullscreen></iframe></p>
768
769 <p>I mentioned OLSR and batman-adv, which are mesh routing protocols.
770 There are heaps of different protocols, and I am still struggling to
771 figure out which one would be "best" for some definitions of best, but
772 given that the community mesh group in Oslo is so small, I believe it
773 is best to hook up with the existing one instead of trying to create a
774 completely different setup, and thus I have decided to focus on
775 batman-adv for now. It sure help me to know that the very cool
776 <a href="http://www.servalproject.org/">Serval project in Australia</a>
777 is using batman-adv as their meshing technology when it create a self
778 organizing and self healing telephony system for disaster areas and
779 less industrialized communities. Check out this cool video presenting
780 that project (from
781 <a href="https://www.youtube.com/watch?v=30qNfzJCQOA">youtube</a>):</p>
782
783 <p><iframe width="560" height="315" src="https://www.youtube.com/embed/30qNfzJCQOA" frameborder="0" allowfullscreen></iframe></p>
784
785 <p>According to the wikipedia page on
786 <a href="http://en.wikipedia.org/wiki/Wireless_mesh_network">Wireless
787 mesh network</a> there are around 70 competing schemes for routing
788 packets across mesh networks, and OLSR, B.A.T.M.A.N. and
789 B.A.T.M.A.N. advanced are protocols used by several free software
790 based community mesh networks.</p>
791
792 <p>The batman-adv protocol is a bit special, as it provide layer 2
793 (as in ethernet ) routing, allowing ipv4 and ipv6 to work on the same
794 network. One way to think about it is that it provide a mesh based
795 vlan you can bridge to or handle like any other vlan connected to your
796 computer. The required drivers are already in the Linux kernel at
797 least since Debian Wheezy, and it is fairly easy to set up. A
798 <a href="http://www.open-mesh.org/projects/batman-adv/wiki/Quick-start-guide">good
799 introduction</a> is available from the Open Mesh project. These are
800 the key settings needed to join the Oslo meshfx network:</p>
801
802 <p><table>
803 <tr><th>Setting</th><th>Value</th></tr>
804 <tr><td>Protocol / kernel module</td><td>batman-adv</td></tr>
805 <tr><td>ESSID</td><td>meshfx@hackeriet</td></tr>
806 <td>Channel / Frequency</td><td>11 / 2462</td></tr>
807 <td>Cell ID</td><td>02:BA:00:00:00:01</td>
808 </table></p>
809
810 <p>The reason for setting ad-hoc wifi Cell ID is to work around bugs
811 in firmware used in wifi card and wifi drivers. (See a nice post from
812 VillageTelco about
813 "<a href="http://tiebing.blogspot.no/2009/12/ad-hoc-cell-splitting-re-post-original.html">Information
814 about cell-id splitting, stuck beacons, and failed IBSS merges!</a>
815 for details.) When these settings are activated and you have some
816 other mesh node nearby, your computer will be connected to the mesh
817 network and can communicate with any mesh node that is connected to
818 any of the nodes in your network of nodes. :)</p>
819
820 <p>My initial plan was to reuse my old Linksys WRT54GL as a mesh node,
821 but that seem to be very hard, as I have not been able to locate a
822 firmware supporting batman-adv. If anyone know how to use that old
823 wifi access point with batman-adv these days, please let me know.</p>
824
825 <p>If you find this project interesting and want to join, please join
826 us on IRC, either channel
827 <a href="irc://irc.freenode.net/#oslohackerspace">#oslohackerspace</a>
828 or <a href="irc://irc.freenode.net/#nuug">#nuug</a> on
829 irc.freenode.net.</p>
830
831 <p>While investigating mesh networks in Oslo, I came across an old
832 research paper from the university of Stavanger and Telenor Research
833 and Innovation called
834 <a href="http://folk.uio.no/paalee/publications/netrel-egeland-iswcs-2008.pdf">The
835 reliability of wireless backhaul mesh networks</a> and elsewhere
836 learned that Telenor have been experimenting with mesh networks at
837 Grünerløkka in Oslo. So mesh networks are also interesting for
838 commercial companies, even though Telenor discovered that it was hard
839 to figure out a good business plan for mesh networking and as far as I
840 know have closed down the experiment. Perhaps Telenor or others would
841 be interested in a cooperation?</p>
842
843 <p><strong>Update 2013-10-12</strong>: I was just
844 <a href="http://lists.alioth.debian.org/pipermail/freedombox-discuss/2013-October/005900.html">told
845 by the Serval project developers</a> that they no longer use
846 batman-adv (but are compatible with it), but their own crypto based
847 mesh system.</p>
848 </div>
849 <div class="tags">
850
851
852 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>.
853
854
855 </div>
856 </div>
857 <div class="padding"></div>
858
859 <div class="entry">
860 <div class="title"><a href="http://people.skolelinux.org/pere/blog/Skolelinux___Debian_Edu_7_1_install_and_overview_video_from_Marcelo_Salvador.html">Skolelinux / Debian Edu 7.1 install and overview video from Marcelo Salvador</a></div>
861 <div class="date"> 8th October 2013</div>
862 <div class="body"><p>The other day I was pleased and surprised to discover that Marcelo
863 Salvador had published a
864 <a href="https://www.youtube.com/watch?v=w-GgpdqgLFc">video on
865 Youtube</a> showing how to install the standalone Debian Edu /
866 Skolelinux profile. This is the profile intended for use at home or
867 on laptops that should not be integrated into the provided network
868 services (no central home directory, no Kerberos / LDAP directory etc,
869 in other word a single user machine). The result is 11 minutes long,
870 and show some user applications (seem to be rather randomly picked).
871 Missed a few of my favorites like celestia, planets and chromium
872 showing the <a href="http://www.zygotebody.com/">Zygote Body 3D model
873 of the human body</a>, but I guess he did not know about those or find
874 other programs more interesting. :) And the video do not show the
875 advantages I believe is one of the most valuable featuers in Debian
876 Edu, its central school server making it possible to run hundreds of
877 computers without hard drives by installing one central
878 <a href="http://www.ltsp.org/">LTSP server</a>.</p>
879
880 <p>Anyway, check out the video, embedded below and linked to above:</p>
881
882 <iframe width="420" height="315" src="http://www.youtube.com/embed/w-GgpdqgLFc" frameborder="0" allowfullscreen></iframe>
883
884 <p>Are there other nice videos demonstrating Skolelinux? Please let
885 me know. :)</p>
886 </div>
887 <div class="tags">
888
889
890 Tags: <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/video">video</a>.
891
892
893 </div>
894 </div>
895 <div class="padding"></div>
896
897 <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>
898 <div id="sidebar">
899
900
901
902 <h2>Archive</h2>
903 <ul>
904
905 <li>2013
906 <ul>
907
908 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
909
910 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
911
912 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
913
914 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
915
916 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
917
918 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
919
920 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
921
922 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
923
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
925
926 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
927
928 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (3)</a></li>
929
930 </ul></li>
931
932 <li>2012
933 <ul>
934
935 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
936
937 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
938
939 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
940
941 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
942
943 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
944
945 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
946
947 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
948
949 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
950
951 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
952
953 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
954
955 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
956
957 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
958
959 </ul></li>
960
961 <li>2011
962 <ul>
963
964 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
965
966 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
967
968 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
969
970 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
971
972 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
973
974 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
975
976 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
977
978 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
979
980 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
981
982 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
983
984 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
985
986 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
987
988 </ul></li>
989
990 <li>2010
991 <ul>
992
993 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
994
995 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
996
997 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
998
999 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1000
1001 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1002
1003 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1004
1005 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1006
1007 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1010
1011 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1012
1013 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1014
1015 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1016
1017 </ul></li>
1018
1019 <li>2009
1020 <ul>
1021
1022 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1023
1024 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1025
1026 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1027
1028 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1029
1030 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1031
1032 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1033
1034 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1035
1036 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1037
1038 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1039
1040 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1041
1042 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1043
1044 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1045
1046 </ul></li>
1047
1048 <li>2008
1049 <ul>
1050
1051 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1052
1053 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1054
1055 </ul></li>
1056
1057 </ul>
1058
1059
1060
1061 <h2>Tags</h2>
1062 <ul>
1063
1064 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
1065
1066 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1067
1068 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1069
1070 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1071
1072 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (7)</a></li>
1073
1074 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (13)</a></li>
1075
1076 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1077
1078 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (90)</a></li>
1079
1080 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (142)</a></li>
1081
1082 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
1083
1084 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (10)</a></li>
1085
1086 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1087
1088 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (226)</a></li>
1089
1090 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
1091
1092 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
1093
1094 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (12)</a></li>
1095
1096 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (5)</a></li>
1097
1098 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (11)</a></li>
1099
1100 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (37)</a></li>
1101
1102 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (7)</a></li>
1103
1104 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (18)</a></li>
1105
1106 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
1107
1108 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
1109
1110 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1111
1112 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (4)</a></li>
1113
1114 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
1115
1116 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (236)</a></li>
1117
1118 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (157)</a></li>
1119
1120 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (8)</a></li>
1121
1122 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1123
1124 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (45)</a></li>
1125
1126 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (67)</a></li>
1127
1128 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
1129
1130 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1131
1132 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
1133
1134 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (8)</a></li>
1135
1136 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1137
1138 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
1139
1140 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1141
1142 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (32)</a></li>
1143
1144 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1145
1146 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
1147
1148 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (43)</a></li>
1149
1150 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
1151
1152 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (9)</a></li>
1153
1154 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (20)</a></li>
1155
1156 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
1157
1158 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
1159
1160 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (39)</a></li>
1161
1162 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1163
1164 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (28)</a></li>
1165
1166 </ul>
1167
1168
1169 </div>
1170 <p style="text-align: right">
1171 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1172 </p>
1173
1174 </body>
1175 </html>