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