]> pere.pagekite.me Git - homepage.git/blob - blog/index.rss
Typo.
[homepage.git] / blog / index.rss
1 <?xml version="1.0" encoding="utf-8"?>
2 <rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom="http://www.w3.org/2005/Atom">
3 <channel>
4 <title>Petter Reinholdtsen</title>
5 <description></description>
6 <link>http://people.skolelinux.org/pere/blog/</link>
7 <atom:link href="http://people.skolelinux.org/pere/blog/index.rss" rel="self" type="application/rss+xml" />
8
9 <item>
10 <title>Debian init.d boot script example for rsyslog</title>
11 <link>http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</link>
12 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</guid>
13 <pubDate>Sat, 2 Nov 2013 22:40:00 +0100</pubDate>
14 <description>&lt;p&gt;If one of the points of switching to a new init system in Debian is
15 &lt;a href=&quot;http://thomas.goirand.fr/blog/?p=147&quot;&gt;to get rid of huge
16 init.d scripts&lt;/a&gt;, I doubt we need to switch away from sysvinit and
17 init.d scripts at all. Here is an example init.d script, ie a rewrite
18 of /etc/init.d/rsyslog:&lt;/p&gt;
19
20 &lt;p&gt;&lt;pre&gt;
21 #!/lib/init/init-d-script
22 ### BEGIN INIT INFO
23 # Provides: rsyslog
24 # Required-Start: $remote_fs $time
25 # Required-Stop: umountnfs $time
26 # X-Stop-After: sendsigs
27 # Default-Start: 2 3 4 5
28 # Default-Stop: 0 1 6
29 # Short-Description: enhanced syslogd
30 # Description: Rsyslog is an enhanced multi-threaded syslogd.
31 # It is quite compatible to stock sysklogd and can be
32 # used as a drop-in replacement.
33 ### END INIT INFO
34 DESC=&quot;enhanced syslogd&quot;
35 DAEMON=/usr/sbin/rsyslogd
36 &lt;/pre&gt;&lt;/p&gt;
37
38 &lt;p&gt;Pretty minimalistic to me... For the record, the original sysv-rc
39 script was 137 lines, and the above is just 15 lines, most of it meta
40 info/comments.&lt;/p&gt;
41
42 &lt;p&gt;How to do this, you ask? Well, one create a new script
43 /lib/init/init-d-script looking something like this:
44
45 &lt;p&gt;&lt;pre&gt;
46 #!/bin/sh
47
48 # Define LSB log_* functions.
49 # Depend on lsb-base (&gt;= 3.2-14) to ensure that this file is present
50 # and status_of_proc is working.
51 . /lib/lsb/init-functions
52
53 #
54 # Function that starts the daemon/service
55
56 #
57 do_start()
58 {
59 # Return
60 # 0 if daemon has been started
61 # 1 if daemon was already running
62 # 2 if daemon could not be started
63 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test &gt; /dev/null \
64 || return 1
65 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
66 $DAEMON_ARGS \
67 || return 2
68 # Add code here, if necessary, that waits for the process to be ready
69 # to handle requests from services started subsequently which depend
70 # on this one. As a last resort, sleep for some time.
71 }
72
73 #
74 # Function that stops the daemon/service
75 #
76 do_stop()
77 {
78 # Return
79 # 0 if daemon has been stopped
80 # 1 if daemon was already stopped
81 # 2 if daemon could not be stopped
82 # other if a failure occurred
83 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
84 RETVAL=&quot;$?&quot;
85 [ &quot;$RETVAL&quot; = 2 ] &amp;&amp; return 2
86 # Wait for children to finish too if this is a daemon that forks
87 # and if the daemon is only ever run from this initscript.
88 # If the above conditions are not satisfied then add some other code
89 # that waits for the process to drop all resources that could be
90 # needed by services started subsequently. A last resort is to
91 # sleep for some time.
92 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
93 [ &quot;$?&quot; = 2 ] &amp;&amp; return 2
94 # Many daemons don&#39;t delete their pidfiles when they exit.
95 rm -f $PIDFILE
96 return &quot;$RETVAL&quot;
97 }
98
99 #
100 # Function that sends a SIGHUP to the daemon/service
101 #
102 do_reload() {
103 #
104 # If the daemon can reload its configuration without
105 # restarting (for example, when it is sent a SIGHUP),
106 # then implement that here.
107 #
108 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
109 return 0
110 }
111
112 SCRIPTNAME=$1
113 scriptbasename=&quot;$(basename $1)&quot;
114 echo &quot;SN: $scriptbasename&quot;
115 if [ &quot;$scriptbasename&quot; != &quot;init-d-library&quot; ] ; then
116 script=&quot;$1&quot;
117 shift
118 . $script
119 else
120 exit 0
121 fi
122
123 NAME=$(basename $DAEMON)
124 PIDFILE=/var/run/$NAME.pid
125
126 # Exit if the package is not installed
127 #[ -x &quot;$DAEMON&quot; ] || exit 0
128
129 # Read configuration variable file if it is present
130 [ -r /etc/default/$NAME ] &amp;&amp; . /etc/default/$NAME
131
132 # Load the VERBOSE setting and other rcS variables
133 . /lib/init/vars.sh
134
135 case &quot;$1&quot; in
136 start)
137 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Starting $DESC&quot; &quot;$NAME&quot;
138 do_start
139 case &quot;$?&quot; in
140 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
141 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
142 esac
143 ;;
144 stop)
145 [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Stopping $DESC&quot; &quot;$NAME&quot;
146 do_stop
147 case &quot;$?&quot; in
148 0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
149 2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
150 esac
151 ;;
152 status)
153 status_of_proc &quot;$DAEMON&quot; &quot;$NAME&quot; &amp;&amp; exit 0 || exit $?
154 ;;
155 #reload|force-reload)
156 #
157 # If do_reload() is not implemented then leave this commented out
158 # and leave &#39;force-reload&#39; as an alias for &#39;restart&#39;.
159 #
160 #log_daemon_msg &quot;Reloading $DESC&quot; &quot;$NAME&quot;
161 #do_reload
162 #log_end_msg $?
163 #;;
164 restart|force-reload)
165 #
166 # If the &quot;reload&quot; option is implemented then remove the
167 # &#39;force-reload&#39; alias
168 #
169 log_daemon_msg &quot;Restarting $DESC&quot; &quot;$NAME&quot;
170 do_stop
171 case &quot;$?&quot; in
172 0|1)
173 do_start
174 case &quot;$?&quot; in
175 0) log_end_msg 0 ;;
176 1) log_end_msg 1 ;; # Old process is still running
177 *) log_end_msg 1 ;; # Failed to start
178 esac
179 ;;
180 *)
181 # Failed to stop
182 log_end_msg 1
183 ;;
184 esac
185 ;;
186 *)
187 echo &quot;Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}&quot; &gt;&amp;2
188 exit 3
189 ;;
190 esac
191
192 :
193 &lt;/pre&gt;&lt;/p&gt;
194
195 &lt;p&gt;It is based on /etc/init.d/skeleton, and could be improved quite a
196 lot. I did not really polish the approach, so it might not always
197 work out of the box, but you get the idea. I did not try very hard to
198 optimize it nor make it more robust either.&lt;/p&gt;
199
200 &lt;p&gt;A better argument for switching init system in Debian than reducing
201 the size of init scripts (which is a good thing to do anyway), is to
202 get boot system that is able to handle the kernel events sensibly and
203 robustly, and do not depend on the boot to run sequentially. The boot
204 and the kernel have not behaved sequentially in year.&lt;/p&gt;
205 </description>
206 </item>
207
208 <item>
209 <title>Browser plugin for SPICE (spice-xpi) uploaded to Debian</title>
210 <link>http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</link>
211 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</guid>
212 <pubDate>Fri, 1 Nov 2013 11:00:00 +0100</pubDate>
213 <description>&lt;p&gt;&lt;a href=&quot;http://www.spice-space.org/&quot;&gt;The SPICE protocol&lt;/a&gt; for
214 remote display access is the preferred solution with oVirt and RedHat
215 Enterprise Virtualization, and I was sad to discover the other day
216 that the browser plugin needed to use these systems seamlessly was
217 missing in Debian. The &lt;a href=&quot;http://bugs.debian.org/668284&quot;&gt;request
218 for a package&lt;/a&gt; was from 2012-04-10 with no progress since
219 2013-04-01, so I decided to wrap up a package based on the great work
220 from Cajus Pollmeier and put it in a collab-maint maintained git
221 repository to get a package I could use. I would very much like
222 others to help me maintain the package (or just take over, I do not
223 mind), but as no-one had volunteered so far, I just uploaded it to
224 NEW. I hope it will be available in Debian in a few days.&lt;/p&gt;
225
226 &lt;p&gt;The source is now available from
227 &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary&quot;&gt;http://anonscm.debian.org/gitweb/?p=collab-maint/spice-xpi.git;a=summary&lt;/a&gt;.&lt;/p&gt;
228 </description>
229 </item>
230
231 <item>
232 <title>Teaching vmdebootstrap to create Raspberry Pi SD card images</title>
233 <link>http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</link>
234 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</guid>
235 <pubDate>Sun, 27 Oct 2013 17:00:00 +0100</pubDate>
236 <description>&lt;p&gt;The
237 &lt;a href=&quot;http://packages.qa.debian.org/v/vmdebootstrap.html&quot;&gt;vmdebootstrap&lt;/a&gt;
238 program is a a very nice system to create virtual machine images. It
239 create a image file, add a partition table, mount it and run
240 debootstrap in the mounted directory to create a Debian system on a
241 stick. Yesterday, I decided to try to teach it how to make images for
242 &lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi&lt;/a&gt;, as part
243 of a plan to simplify the build system for
244 &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the FreedomBox
245 project&lt;/a&gt;. The FreedomBox project already uses vmdebootstrap for
246 the virtualbox images, but its current build system made multistrap
247 based system for Dreamplug images, and it is lacking support for
248 Raspberry Pi.&lt;/p&gt;
249
250 &lt;p&gt;Armed with the knowledge on how to build &quot;foreign&quot; (aka non-native
251 architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap
252 code and adjusted it to be able to build armel images on my amd64
253 Debian laptop. I ended up giving vmdebootstrap five new options,
254 allowing me to replicate the image creation process I use to make
255 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html&quot;&gt;Debian
256 Jessie based mesh node images for the Raspberry Pi&lt;/a&gt;. First, the
257 &lt;tt&gt;--foreign /path/to/binfm_handler&lt;/tt&gt; option tell vmdebootstrap to
258 call debootstrap with --foreign and to copy the handler into the
259 generated chroot before running the second stage. This allow
260 vmdebootstrap to create armel images on an amd64 host. Next I added
261 two new options &lt;tt&gt;--bootsize size&lt;/tt&gt; and &lt;tt&gt;--boottype
262 fstype&lt;/tt&gt; to teach it to create a separate /boot/ partition with the
263 given file system type, allowing me to create an image with a vfat
264 partition for the /boot/ stuff. I also added a &lt;tt&gt;--variant
265 variant&lt;/tt&gt; option to allow me to create smaller images without the
266 Debian base system packages installed. Finally, I added an option
267 &lt;tt&gt;--no-extlinux&lt;/tt&gt; to tell vmdebootstrap to not install extlinux
268 as a boot loader. It is not needed on the Raspberry Pi and probably
269 most other non-x86 architectures. The changes were accepted by the
270 upstream author of vmdebootstrap yesterday and today, and is now
271 available from
272 &lt;a href=&quot;http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/&quot;&gt;the
273 upstream project page&lt;/a&gt;.&lt;/p&gt;
274
275 &lt;p&gt;To use it to build a Raspberry Pi image using Debian Jessie, first
276 create a small script (the customize script) to add the non-free
277 binary blob needed to boot the Raspberry Pi and the APT source
278 list:&lt;/p&gt;
279
280 &lt;p&gt;&lt;pre&gt;
281 #!/bin/sh
282 set -e # Exit on first error
283 rootdir=&quot;$1&quot;
284 cd &quot;$rootdir&quot;
285 cat &amp;lt;&amp;lt;EOF &gt; etc/apt/sources.list
286 deb http://http.debian.net/debian/ jessie main contrib non-free
287 EOF
288 # Install non-free binary blob needed to boot Raspberry Pi. This
289 # install a kernel somewhere too.
290 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
291 -O $rootdir/usr/bin/rpi-update
292 chmod a+x $rootdir/usr/bin/rpi-update
293 mkdir -p $rootdir/lib/modules
294 touch $rootdir/boot/start.elf
295 chroot $rootdir rpi-update
296 &lt;/pre&gt;&lt;/p&gt;
297
298 &lt;p&gt;Next, fetch the latest vmdebootstrap script and call it like this
299 to build the image:&lt;/p&gt;
300
301 &lt;pre&gt;
302 sudo ./vmdebootstrap \
303 --variant minbase \
304 --arch armel \
305 --distribution jessie \
306 --mirror http://http.debian.net/debian \
307 --image test.img \
308 --size 600M \
309 --bootsize 64M \
310 --boottype vfat \
311 --log-level debug \
312 --verbose \
313 --no-kernel \
314 --no-extlinux \
315 --root-password raspberry \
316 --hostname raspberrypi \
317 --foreign /usr/bin/qemu-arm-static \
318 --customize `pwd`/customize \
319 --package netbase \
320 --package git-core \
321 --package binutils \
322 --package ca-certificates \
323 --package wget \
324 --package kmod
325 &lt;/pre&gt;&lt;/p&gt;
326
327 &lt;p&gt;The list of packages being installed are the ones needed by
328 rpi-update to make the image bootable on the Raspberry Pi, with the
329 exception of netbase, which is needed by debootstrap to find
330 /etc/hosts with the minbase variant. I really wish there was a way to
331 set up an Raspberry Pi using only packages in the Debian archive, but
332 that is not possible as far as I know, because it boots from the GPU
333 using a non-free binary blob.&lt;/p&gt;
334
335 &lt;p&gt;The build host need debootstrap, kpartx and qemu-user-static and
336 probably a few others installed. I have not checked the complete
337 build dependency list.&lt;/p&gt;
338
339 &lt;p&gt;The resulting image will not use the hardware floating point unit
340 on the Raspberry PI, because the armel architecture in Debian is not
341 optimized for that use. So the images created will be a bit slower
342 than &lt;a href=&quot;http://www.raspbian.org/&quot;&gt;Raspbian&lt;/a&gt; based images.&lt;/p&gt;
343 </description>
344 </item>
345
346 <item>
347 <title>Det er jo makta som er mest sårbar ved massiv overvåkning av Internett</title>
348 <link>http://people.skolelinux.org/pere/blog/Det_er_jo_makta_som_er_mest_s_rbar_ved_massiv_overv_kning_av_Internett.html</link>
349 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Det_er_jo_makta_som_er_mest_s_rbar_ved_massiv_overv_kning_av_Internett.html</guid>
350 <pubDate>Sat, 26 Oct 2013 20:30:00 +0200</pubDate>
351 <description>&lt;p&gt;De siste måneders eksponering av
352 &lt;a href=&quot;http://www.aftenposten.no/nyheter/uriks/Her-er-Edvard-Snowdens-mest-omtalte-avsloringer-7351734.html&quot;&gt;den
353 totale overvåkningen som foregår i den vestlige verden dokumenterer
354 hvor sårbare vi er&lt;/a&gt;. Men det slår meg at de som er mest sårbare
355 for dette, myndighetspersoner på alle nivåer, neppe har innsett at de
356 selv er de mest interessante personene å lage profiler på, for å kunne
357 påvirke dem.&lt;/p&gt;
358
359 &lt;p&gt;For å ta et lite eksempel: Stortingets nettsted,
360 &lt;a href=&quot;http://www.stortinget.no/&quot;&gt;www.stortinget.no&lt;/a&gt; (og
361 forsåvidt også
362 &lt;a href=&quot;http://data.stortinget.no/&quot;&gt;data.stortinget.no&lt;/a&gt;),
363 inneholder informasjon om det som foregår på Stortinget, og jeg antar
364 de største brukerne av informasjonen der er representanter og
365 rådgivere på Stortinget. Intet overraskende med det. Det som derimot
366 er mer skjult er at Stortingets nettsted bruker
367 &lt;a href=&quot;http://en.wikipedia.org/wiki/Google_Analytics&quot;&gt;Google
368 Analytics&lt;/a&gt;, hvilket gjør at enhver som besøker nettsidene der også
369 rapporterer om besøket via Internett-linjer som passerer Sverige,
370 England og videre til USA. Det betyr at informasjon om ethvert besøk
371 på stortingets nettsider kan snappes opp av svensk, britisk og USAs
372 etterretningsvesen. De kan dermed holde et øye med hvilke
373 Stortingssaker stortingsrepresentantene synes er interessante å sjekke
374 ut, og hvilke sider rådgivere og andre på stortinget synes er
375 interessant å besøke, når de gjør det og hvilke andre representanter
376 som sjekker de samme sidene omtrent samtidig. Stortingets bruk av
377 Google Analytics gjør det dermed enkelt for utenlands etteretning å
378 spore representantenes aktivitet og interesse. Hvis noen av
379 representantene bruker Google Mail eller noen andre tjenestene som
380 krever innlogging, så vil det være enda enklere å finne ut nøyaktig
381 hvilke personer som bruker hvilke nettlesere og dermed knytte
382 informasjonen opp til enkeltpersoner på Stortinget.&lt;/p&gt;
383
384 &lt;p&gt;Og jo flere nettsteder som bruker Google Analytics, jo bedre
385 oversikt over stortingsrepresentantenes lesevaner og interesse blir
386 tilgjengelig for svensk, britisk og USAs etterretning. Hva de kan
387 bruke den informasjonen til overlater jeg til leseren å undres
388 over.&lt;/p&gt;
389 </description>
390 </item>
391
392 <item>
393 <title>A Raspberry Pi based batman-adv Mesh network node</title>
394 <link>http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html</link>
395 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html</guid>
396 <pubDate>Mon, 21 Oct 2013 11:40:00 +0200</pubDate>
397 <description>&lt;p&gt;The last few days I have been experimenting with
398 &lt;a href=&quot;http://www.open-mesh.org/projects/batman-adv/wiki&quot;&gt;the
399 batman-adv mesh technology&lt;/a&gt;. I want to gain some experience to see
400 if it will fit &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the
401 Freedombox project&lt;/a&gt;, and together with my neighbors try to build a
402 mesh network around the park where I live. Batman-adv is a layer 2
403 mesh system (&quot;ethernet&quot; in other words), where the mesh network appear
404 as if all the mesh clients are connected to the same switch.&lt;/p&gt;
405
406 &lt;p&gt;My hardware of choice was the Linksys WRT54GL routers I had lying
407 around, but I&#39;ve been unable to get them working with batman-adv. So
408 instead, I started playing with a
409 &lt;a href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt;, and tried to
410 get it working as a mesh node. My idea is to use it to create a mesh
411 node which function as a switch port, where everything connected to
412 the Raspberry Pi ethernet plug is connected (bridged) to the mesh
413 network. This allow me to hook a wifi base station like the Linksys
414 WRT54GL to the mesh by plugging it into a Raspberry Pi, and allow
415 non-mesh clients to hook up to the mesh. This in turn is useful for
416 Android phones using &lt;a href=&quot;http://servalproject.org/&quot;&gt;the Serval
417 Project&lt;/a&gt; voip client, allowing every one around the playground to
418 phone and message each other for free. The reason is that Android
419 phones do not see ad-hoc wifi networks (they are filtered away from
420 the GUI view), and can not join the mesh without being rooted. But if
421 they are connected using a normal wifi base station, they can talk to
422 every client on the local network.&lt;/p&gt;
423
424 &lt;p&gt;To get this working, I&#39;ve created a debian package
425 &lt;a href=&quot;https://github.com/petterreinholdtsen/meshfx-node&quot;&gt;meshfx-node&lt;/a&gt;
426 and a script
427 &lt;a href=&quot;https://github.com/petterreinholdtsen/meshfx-node/blob/master/build-rpi-mesh-node&quot;&gt;build-rpi-mesh-node&lt;/a&gt;
428 to create the Raspberry Pi boot image. I&#39;m using Debian Jessie (and
429 not Raspbian), to get more control over the packages available.
430 Unfortunately a huge binary blob need to be inserted into the boot
431 image to get it booting, but I&#39;ll ignore that for now. Also, as
432 Debian lack support for the CPU features available in the Raspberry
433 Pi, the system do not use the hardware floating point unit. I hope
434 the routing performance isn&#39;t affected by the lack of hardware FPU
435 support.&lt;/p&gt;
436
437 &lt;p&gt;To create an image, run the following with a sudo enabled user
438 after inserting the target SD card into the build machine:&lt;/p&gt;
439
440 &lt;p&gt;&lt;pre&gt;
441 % wget -O build-rpi-mesh-node \
442 https://raw.github.com/petterreinholdtsen/meshfx-node/master/build-rpi-mesh-node
443 % sudo bash -x ./build-rpi-mesh-node &gt; build.log 2&gt;&amp;1
444 % dd if=/root/rpi/rpi_basic_jessie_$(date +%Y%m%d).img of=/dev/mmcblk0 bs=1M
445 %
446 &lt;/pre&gt;&lt;/p&gt;
447
448 &lt;p&gt;Booting with the resulting SD card on a Raspberry PI with a USB
449 wifi card inserted should give you a mesh node. At least it does for
450 me with a the wifi card I am using. The default mesh settings are the
451 ones used by the Oslo mesh project at Hackeriet, as I mentioned in
452 &lt;a href=&quot;http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html&quot;&gt;an
453 earlier blog post about this mesh testing&lt;/a&gt;.&lt;/p&gt;
454
455 &lt;p&gt;The mesh node was not horribly expensive either. I bought
456 everything over the counter in shops nearby. If I had ordered online
457 from the lowest bidder, the price should be significantly lower:&lt;/p&gt;
458
459 &lt;p&gt;&lt;table&gt;
460
461 &lt;tr&gt;&lt;th&gt;Supplier&lt;/th&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th&gt;NOK&lt;/th&gt;&lt;/tr&gt;
462 &lt;tr&gt;&lt;td&gt;Teknikkmagasinet&lt;/td&gt;&lt;td&gt;Raspberry Pi model B&lt;/td&gt;&lt;td&gt;349.90&lt;/td&gt;&lt;/tr&gt;
463 &lt;tr&gt;&lt;td&gt;Teknikkmagasinet&lt;/td&gt;&lt;td&gt;Raspberry Pi type B case&lt;/td&gt;&lt;td&gt;99.90&lt;/td&gt;&lt;/tr&gt;
464 &lt;tr&gt;&lt;td&gt;Lefdal&lt;/td&gt;&lt;td&gt;Jensen Air:Link 25150&lt;/td&gt;&lt;td&gt;295.-&lt;/td&gt;&lt;/tr&gt;
465 &lt;tr&gt;&lt;td&gt;Clas Ohlson&lt;/td&gt;&lt;td&gt;Kingston 16 GB SD card&lt;/td&gt;&lt;td&gt;199.-&lt;/td&gt;&lt;/tr&gt;
466 &lt;tr&gt;&lt;td&gt;Total cost&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;943.80&lt;/td&gt;&lt;/tr&gt;
467
468 &lt;/table&gt;&lt;/p&gt;
469
470 &lt;p&gt;Now my mesh network at home consist of one laptop in the basement
471 connected to my production network, one Raspberry Pi node on the 1th
472 floor that can be seen by my neighbor across the park, and one
473 play-node I use to develop the image building script. And some times
474 I hook up my work horse laptop to the mesh to test it. I look forward
475 to figuring out what kind of latency the batman-adv setup will give,
476 and how much packet loss we will experience around the park. :)&lt;/p&gt;
477 </description>
478 </item>
479
480 <item>
481 <title>Perl library to control the Spykee robot moved to github</title>
482 <link>http://people.skolelinux.org/pere/blog/Perl_library_to_control_the_Spykee_robot_moved_to_github.html</link>
483 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Perl_library_to_control_the_Spykee_robot_moved_to_github.html</guid>
484 <pubDate>Sat, 19 Oct 2013 10:20:00 +0200</pubDate>
485 <description>&lt;p&gt;Back in 2010, I created a Perl library to talk to
486 &lt;a href=&quot;http://en.wikipedia.org/wiki/Spykee&quot;&gt;the Spykee robot&lt;/a&gt;
487 (with two belts, wifi, USB and Linux) and made it available from my
488 web page. Today I concluded that it should move to a site that is
489 easier to use to cooperate with others, and moved it to github. If
490 you got a Spykee robot, you might want to check out
491 &lt;a href=&quot;https://github.com/petterreinholdtsen/libspykee-perl&quot;&gt;the
492 libspykee-perl github repository&lt;/a&gt;.&lt;/p&gt;
493 </description>
494 </item>
495
496 <item>
497 <title>Good causes: Debian Outreach Program for Women, EFF documenting the spying and Open access in Norway</title>
498 <link>http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</link>
499 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Good_causes__Debian_Outreach_Program_for_Women__EFF_documenting_the_spying_and_Open_access_in_Norway.html</guid>
500 <pubDate>Tue, 15 Oct 2013 21:30:00 +0200</pubDate>
501 <description>&lt;p&gt;The last few days I came across a few good causes that should get
502 wider attention. I recommend signing and donating to each one of
503 these. :)&lt;/p&gt;
504
505 &lt;p&gt;Via &lt;a href=&quot;http://www.debian.org/News/weekly/2013/18/&quot;&gt;Debian
506 Project News for 2013-10-14&lt;/a&gt; I came across the Outreach Program for
507 Women program which is a Google Summer of Code like initiative to get
508 more women involved in free software. One debian sponsor has offered
509 to match &lt;a href=&quot;http://debian.ch/opw2013&quot;&gt;any donation done to Debian
510 earmarked&lt;/a&gt; for this initiative. I donated a few minutes ago, and
511 hope you will to. :)&lt;/p&gt;
512
513 &lt;p&gt;And the Electronic Frontier Foundation just announced plans to
514 create &lt;a href=&quot;https://supporters.eff.org/donate/nsa-videos&quot;&gt;video
515 documentaries about the excessive spying&lt;/a&gt; on every Internet user that
516 take place these days, and their need to fund the work. I&#39;ve already
517 donated. Are you next?&lt;/p&gt;
518
519 &lt;p&gt;For my Norwegian audience, the organisation Studentenes og
520 Akademikernes Internasjonale Hjelpefond is collecting signatures for a
521 statement under the heading
522 &lt;a href=&quot;http://saih.no/Bloggers_United/&quot;&gt;Bloggers United for Open
523 Access&lt;/a&gt; for those of us asking for more focus on open access in the
524 Norwegian government. So far 499 signatures. I hope you will sign it
525 too.&lt;/p&gt;
526 </description>
527 </item>
528
529 <item>
530 <title>Oslo community mesh network - with NUUG and Hackeriet at Hausmania</title>
531 <link>http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html</link>
532 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Oslo_community_mesh_network___with_NUUG_and_Hackeriet_at_Hausmania.html</guid>
533 <pubDate>Fri, 11 Oct 2013 14:10:00 +0200</pubDate>
534 <description>&lt;p&gt;Wireless mesh networks are self organising and self healing
535 networks that can be used to connect computers across small and large
536 areas, depending on the radio technology used. Normal wifi equipment
537 can be used to create home made radio networks, and there are several
538 successful examples like
539 &lt;a href=&quot;http://www.freifunk.net/&quot;&gt;Freifunk&lt;/a&gt; and
540 &lt;a href=&quot;http://www.awmn.net/&quot;&gt;Athens Wireless Metropolitan Network&lt;/a&gt;
541 (see
542 &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_wireless_community_networks_by_region#Greece&quot;&gt;wikipedia
543 for a large list&lt;/a&gt;) around the globe. To give you an idea how it
544 work, check out the nice overview of the Kiel Freifunk community which
545 can be seen from their
546 &lt;a href=&quot;http://freifunk.in-kiel.de/ffmap/nodes.html&quot;&gt;dynamically
547 updated node graph and map&lt;/a&gt;, where one can see how the mesh nodes
548 automatically handle routing and recover from nodes disappearing.
549 There is also a small community mesh network group in Oslo, Norway,
550 and that is the main topic of this blog post.&lt;/p&gt;
551
552 &lt;p&gt;I&#39;ve wanted to check out mesh networks for a while now, and hoped
553 to do it as part of my involvement with the &lt;a
554 href=&quot;http://www.nuug.no/&quot;&gt;NUUG member organisation&lt;/a&gt; community, and
555 my recent involvement in
556 &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the Freedombox project&lt;/a&gt;
557 finally lead me to give mesh networks some priority, as I suspect a
558 Freedombox should use mesh networks to connect neighbours and family
559 when possible, given that most communication between people are
560 between those nearby (as shown for example by research on Facebook
561 communication patterns). It also allow people to communicate without
562 any central hub to tap into for those that want to listen in on the
563 private communication of citizens, which have become more and more
564 important over the years.&lt;/p&gt;
565
566 &lt;p&gt;So far I have only been able to find one group of people in Oslo
567 working on community mesh networks, over at the hack space
568 &lt;a href=&quot;http://hackeriet.no/&quot;&gt;Hackeriet&lt;/a&gt; at Husmania. They seem to
569 have started with some Freifunk based effort using OLSR, called
570 &lt;a href=&quot;http://oslo.freifunk.net/index.php?title=Main_Page&quot;&gt;the Oslo
571 Freifunk project&lt;/a&gt;, but that effort is now dead and the people
572 behind it have moved on to a batman-adv based system called
573 &lt;a href=&quot;http://meshfx.org/trac&quot;&gt;meshfx&lt;/a&gt;. Unfortunately the wiki
574 site for the Oslo Freifunk project is no longer possible to update to
575 reflect this fact, so the old project page can&#39;t be updated to point to
576 the new project. A while back, the people at Hackeriet invited people
577 from the Freifunk community to Oslo to talk about mesh networks. I
578 came across this video where Hans Jørgen Lysglimt interview the
579 speakers about this talk (from
580 &lt;a href=&quot;https://www.youtube.com/watch?v=N2Kd7CLkhSY&quot;&gt;youtube&lt;/a&gt;):&lt;/p&gt;
581
582 &lt;p&gt;&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/N2Kd7CLkhSY&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
583
584 &lt;p&gt;I mentioned OLSR and batman-adv, which are mesh routing protocols.
585 There are heaps of different protocols, and I am still struggling to
586 figure out which one would be &quot;best&quot; for some definitions of best, but
587 given that the community mesh group in Oslo is so small, I believe it
588 is best to hook up with the existing one instead of trying to create a
589 completely different setup, and thus I have decided to focus on
590 batman-adv for now. It sure help me to know that the very cool
591 &lt;a href=&quot;http://www.servalproject.org/&quot;&gt;Serval project in Australia&lt;/a&gt;
592 is using batman-adv as their meshing technology when it create a self
593 organizing and self healing telephony system for disaster areas and
594 less industrialized communities. Check out this cool video presenting
595 that project (from
596 &lt;a href=&quot;https://www.youtube.com/watch?v=30qNfzJCQOA&quot;&gt;youtube&lt;/a&gt;):&lt;/p&gt;
597
598 &lt;p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/30qNfzJCQOA&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
599
600 &lt;p&gt;According to the wikipedia page on
601 &lt;a href=&quot;http://en.wikipedia.org/wiki/Wireless_mesh_network&quot;&gt;Wireless
602 mesh network&lt;/a&gt; there are around 70 competing schemes for routing
603 packets across mesh networks, and OLSR, B.A.T.M.A.N. and
604 B.A.T.M.A.N. advanced are protocols used by several free software
605 based community mesh networks.&lt;/p&gt;
606
607 &lt;p&gt;The batman-adv protocol is a bit special, as it provide layer 2
608 (as in ethernet ) routing, allowing ipv4 and ipv6 to work on the same
609 network. One way to think about it is that it provide a mesh based
610 vlan you can bridge to or handle like any other vlan connected to your
611 computer. The required drivers are already in the Linux kernel at
612 least since Debian Wheezy, and it is fairly easy to set up. A
613 &lt;a href=&quot;http://www.open-mesh.org/projects/batman-adv/wiki/Quick-start-guide&quot;&gt;good
614 introduction&lt;/a&gt; is available from the Open Mesh project. These are
615 the key settings needed to join the Oslo meshfx network:&lt;/p&gt;
616
617 &lt;p&gt;&lt;table&gt;
618 &lt;tr&gt;&lt;th&gt;Setting&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;
619 &lt;tr&gt;&lt;td&gt;Protocol / kernel module&lt;/td&gt;&lt;td&gt;batman-adv&lt;/td&gt;&lt;/tr&gt;
620 &lt;tr&gt;&lt;td&gt;ESSID&lt;/td&gt;&lt;td&gt;meshfx@hackeriet&lt;/td&gt;&lt;/tr&gt;
621 &lt;td&gt;Channel / Frequency&lt;/td&gt;&lt;td&gt;11 / 2462&lt;/td&gt;&lt;/tr&gt;
622 &lt;td&gt;Cell ID&lt;/td&gt;&lt;td&gt;02:BA:00:00:00:01&lt;/td&gt;
623 &lt;/table&gt;&lt;/p&gt;
624
625 &lt;p&gt;The reason for setting ad-hoc wifi Cell ID is to work around bugs
626 in firmware used in wifi card and wifi drivers. (See a nice post from
627 VillageTelco about
628 &quot;&lt;a href=&quot;http://tiebing.blogspot.no/2009/12/ad-hoc-cell-splitting-re-post-original.html&quot;&gt;Information
629 about cell-id splitting, stuck beacons, and failed IBSS merges!&lt;/a&gt;
630 for details.) When these settings are activated and you have some
631 other mesh node nearby, your computer will be connected to the mesh
632 network and can communicate with any mesh node that is connected to
633 any of the nodes in your network of nodes. :)&lt;/p&gt;
634
635 &lt;p&gt;My initial plan was to reuse my old Linksys WRT54GL as a mesh node,
636 but that seem to be very hard, as I have not been able to locate a
637 firmware supporting batman-adv. If anyone know how to use that old
638 wifi access point with batman-adv these days, please let me know.&lt;/p&gt;
639
640 &lt;p&gt;If you find this project interesting and want to join, please join
641 us on IRC, either channel
642 &lt;a href=&quot;irc://irc.freenode.net/#oslohackerspace&quot;&gt;#oslohackerspace&lt;/a&gt;
643 or &lt;a href=&quot;irc://irc.freenode.net/#nuug&quot;&gt;#nuug&lt;/a&gt; on
644 irc.freenode.net.&lt;/p&gt;
645
646 &lt;p&gt;While investigating mesh networks in Oslo, I came across an old
647 research paper from the university of Stavanger and Telenor Research
648 and Innovation called
649 &lt;a href=&quot;http://folk.uio.no/paalee/publications/netrel-egeland-iswcs-2008.pdf&quot;&gt;The
650 reliability of wireless backhaul mesh networks&lt;/a&gt; and elsewhere
651 learned that Telenor have been experimenting with mesh networks at
652 Grünerløkka in Oslo. So mesh networks are also interesting for
653 commercial companies, even though Telenor discovered that it was hard
654 to figure out a good business plan for mesh networking and as far as I
655 know have closed down the experiment. Perhaps Telenor or others would
656 be interested in a cooperation?&lt;/p&gt;
657
658 &lt;p&gt;&lt;strong&gt;Update 2013-10-12&lt;/strong&gt;: I was just
659 &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/freedombox-discuss/2013-October/005900.html&quot;&gt;told
660 by the Serval project developers&lt;/a&gt; that they no longer use
661 batman-adv (but are compatible with it), but their own crypto based
662 mesh system.&lt;/p&gt;
663 </description>
664 </item>
665
666 <item>
667 <title>Skolelinux / Debian Edu 7.1 install and overview video from Marcelo Salvador</title>
668 <link>http://people.skolelinux.org/pere/blog/Skolelinux___Debian_Edu_7_1_install_and_overview_video_from_Marcelo_Salvador.html</link>
669 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Skolelinux___Debian_Edu_7_1_install_and_overview_video_from_Marcelo_Salvador.html</guid>
670 <pubDate>Tue, 8 Oct 2013 17:10:00 +0200</pubDate>
671 <description>&lt;p&gt;The other day I was pleased and surprised to discover that Marcelo
672 Salvador had published a
673 &lt;a href=&quot;https://www.youtube.com/watch?v=w-GgpdqgLFc&quot;&gt;video on
674 Youtube&lt;/a&gt; showing how to install the standalone Debian Edu /
675 Skolelinux profile. This is the profile intended for use at home or
676 on laptops that should not be integrated into the provided network
677 services (no central home directory, no Kerberos / LDAP directory etc,
678 in other word a single user machine). The result is 11 minutes long,
679 and show some user applications (seem to be rather randomly picked).
680 Missed a few of my favorites like celestia, planets and chromium
681 showing the &lt;a href=&quot;http://www.zygotebody.com/&quot;&gt;Zygote Body 3D model
682 of the human body&lt;/a&gt;, but I guess he did not know about those or find
683 other programs more interesting. :) And the video do not show the
684 advantages I believe is one of the most valuable featuers in Debian
685 Edu, its central school server making it possible to run hundreds of
686 computers without hard drives by installing one central
687 &lt;a href=&quot;http://www.ltsp.org/&quot;&gt;LTSP server&lt;/a&gt;.&lt;/p&gt;
688
689 &lt;p&gt;Anyway, check out the video, embedded below and linked to above:&lt;/p&gt;
690
691 &lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/w-GgpdqgLFc&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
692
693 &lt;p&gt;Are there other nice videos demonstrating Skolelinux? Please let
694 me know. :)&lt;/p&gt;
695 </description>
696 </item>
697
698 <item>
699 <title>Finally, Debian Edu Wheezy is released today!</title>
700 <link>http://people.skolelinux.org/pere/blog/Finally__Debian_Edu_Wheezy_is_released_today_.html</link>
701 <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Finally__Debian_Edu_Wheezy_is_released_today_.html</guid>
702 <pubDate>Sun, 29 Sep 2013 10:20:00 +0200</pubDate>
703 <description>&lt;p&gt;A few hours ago, the announcement for the first stable release of
704 Debian Edu Wheezy went out from the Debian publicity team. The
705 complete announcement text can be found at
706 &lt;a href=&quot;http://www.debian.org/News/2013/20130928&quot;&gt;the Debian News
707 section&lt;/a&gt;, translated to several languages. Please check it out.&lt;/p&gt;
708
709 &lt;p&gt;There is one minor known problem that we will fix very soon. One
710 can not install a amd64 Thin Client Server using PXE, as the /var/
711 partition is too small. A workaround is to extend the partition (use
712 lvresize + resize2fs in tty 2 while installing).&lt;/p&gt;
713 </description>
714 </item>
715
716 </channel>
717 </rss>