]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2010/08/index.html
Generated.
[homepage.git] / blog / archive / 2010 / 08 / 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: entries from August 2010</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="08.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from August 2010.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="https://people.skolelinux.org/pere/blog/Forslag_i_stortinget_om___stoppe_elektronisk_stemmegiving_i_Norge.html">Forslag i stortinget om å stoppe elektronisk stemmegiving i Norge</a>
27 </div>
28 <div class="date">
29 31st August 2010
30 </div>
31 <div class="body">
32 <p>Ble tipset i dag om at et forslag om å stoppe forsøkene med
33 elektronisk stemmegiving utenfor valglokaler er
34 <a href="http://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=46616">til
35 behandling</a> i Stortinget.
36 <a href="http://www.stortinget.no/Global/pdf/Representantforslag/2009-2010/dok8-200910-128.pdf">Forslaget</a>
37 er fremmet av Erna Solberg, Michael Tetzschner og Trond Helleland.</p>
38
39 <p>Håper det får flertall.</p>
40
41 </div>
42 <div class="tags">
43
44
45 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="https://people.skolelinux.org/pere/blog/tags/valg">valg</a>.
46
47
48 </div>
49 </div>
50 <div class="padding"></div>
51
52 <div class="entry">
53 <div class="title">
54 <a href="https://people.skolelinux.org/pere/blog/Broken_hard_link_handling_with_sshfs.html">Broken hard link handling with sshfs</a>
55 </div>
56 <div class="date">
57 30th August 2010
58 </div>
59 <div class="body">
60 <p>Just got an email from Tobias Gruetzmacher as a followup on my
61 <a href="https://people.skolelinux.org/pere/blog/Broken_umask_handling_with_sshfs.html">previous
62 post about sshfs</a>. He reported another problem with sshfs. It
63 fail to handle hard links properly. A simple way to spot this is to
64 look at the . and .. entries in the directory tree. These should have
65 a link count >1, but on sshfs the count is 1. I just tested to see
66 what happen when trying to hardlink, and this fail as well:</p>
67
68 <pre>
69 % ln foo bar
70 ln: creating hard link `bar' => `foo': Function not implemented
71 %
72 </pre>
73
74 <p>I have not yet found time to implement a test for this in my file
75 system test code, but believe having working hard links is useful to
76 avoid surprised unix programs. Not as useful as working file locking
77 and symlinks, which are required to get a working desktop, but useful
78 nevertheless. :)</p>
79
80 <p>The latest version of the file system test code is available via
81 git from
82 <a href="http://github.com/gebi/fs-test">http://github.com/gebi/fs-test</a></p>
83
84 </div>
85 <div class="tags">
86
87
88 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
89
90
91 </div>
92 </div>
93 <div class="padding"></div>
94
95 <div class="entry">
96 <div class="title">
97 <a href="https://people.skolelinux.org/pere/blog/Sikkerhetsteateret_p__flyplassene_fortsetter.html">Sikkerhetsteateret på flyplassene fortsetter</a>
98 </div>
99 <div class="date">
100 28th August 2010
101 </div>
102 <div class="body">
103 <p>Jeg skrev for et halvt år siden hvordan
104 <a href="https://people.skolelinux.org/pere/blog/Sikkerhet__teater__og_hvordan_gj__re_verden_sikrere.html">samfunnet
105 kaster bort ressurser på sikkerhetstiltak som ikke fungerer</a>. Kom
106 nettopp over en
107 <a href="http://www.askthepilot.com/essays-and-stories/terrorism-tweezers-and-terminal-madness-an-essay-on-security/">historie
108 fra en pilot fra USA</a> som kommenterer det samme. Jeg mistenker det
109 kun er uvitenhet og autoritetstro som gjør at så få protesterer. Har
110 veldig sans for piloten omtalt i <a
111 href="http://www.aftenposten.no/nyheter/iriks/article2057501.ece">Aftenposten</a> 2007-10-23,
112 og skulle ønske flere rettet oppmerksomhet mot problemet. Det gir
113 ikke meg trygghetsfølelse på flyplassene når jeg ser at
114 flyplassadministrasjonen kaster bort folk, penger og tid på tull i
115 stedet for ting som bidrar til reell økning av sikkerheten. Det
116 forteller meg jo at vurderingsevnen til de som burde bidra til økt
117 sikkerhet er svært sviktende, noe som ikke taler godt for de andre
118 tiltakene.</p>
119
120 <p>Mon tro hva som skjer hvis det fantes en enkel brosjyre å skrive ut
121 fra Internet som forklarte hva som er galt med sikkerhetsopplegget på
122 flyplassene, og folk skrev ut og la en bunke på flyplassene når de
123 passerte. Kanskje det ville fått flere til å få øynene opp for
124 problemet.</p>
125
126 <p>Personlig synes jeg flyopplevelsen er blitt så avskyelig at jeg
127 forsøker å klare meg med tog, bil og båt for å slippe ubehaget. Det
128 er dog noe vanskelig i det langstrakte Norge og for å kunne besøke de
129 delene av verden jeg ønsker å nå. Mistenker at flere har det slik, og
130 at dette går ut over inntjeningen til flyselskapene. Det er antagelig
131 en god ting sett fra et miljøperspektiv, men det er en annen sak.</p>
132
133 </div>
134 <div class="tags">
135
136
137 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
138
139
140 </div>
141 </div>
142 <div class="padding"></div>
143
144 <div class="entry">
145 <div class="title">
146 <a href="https://people.skolelinux.org/pere/blog/Skolelinux_i_Osloskolen.html">Skolelinux i Osloskolen</a>
147 </div>
148 <div class="date">
149 26th August 2010
150 </div>
151 <div class="body">
152 <p>Denne høsten skal endelig alle Osloskolene få mulighet til å bruke
153 <a href="http://www.skolelinux.org/">Skolelinux</a>. Ny IT-løsning
154 har vært rullet ut i noen måneder nå, og så vidt jeg fikk vite før
155 sommeren skulle alle skoler ha nytt opplegg på plass før oppstart nå i
156 høst. På alle skolene skal en kunne velge ved installasjon om en skal
157 ha Windows eller Skolelinux på maskinene, og en kan i tillegg
158 PXE-boote maskinene over nett som tynne klienter eller diskløse
159 arbeidsstasjoner. Jeg er spent på hvor mange skoler som velger å ta i
160 bruk Skolelinux, og gleder meg til å se hvordan dette utvikler seg.
161 Løsningen leveres av
162 <a href="http://www.logica.no/">Logica</a> med
163 <a href="http://www.slxdrift.no/">Skolelinux Drift AS</a> som
164 underleverandør, og jeg har vært involvert i utviklingen av løsningen
165 via Skolelinux Drift AS siden prosjektet starter. Jeg synes det er
166 fantastisk at Skolelinux er kommet så langt siden vi startet i 2001 at
167 alle elevene i Osloskolene nå skal få mulighet til å bruke
168 løsningen. Jeg håper de vil sette pris på alle de
169 <a href="http://www.skolelinux.no/linux-signpost/">fantastiske
170 brukerprogrammene</a> som er tilgjengelig i Skolelinux.</p>
171
172 </div>
173 <div class="tags">
174
175
176 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.
177
178
179 </div>
180 </div>
181 <div class="padding"></div>
182
183 <div class="entry">
184 <div class="title">
185 <a href="https://people.skolelinux.org/pere/blog/Broken_umask_handling_with_sshfs.html">Broken umask handling with sshfs</a>
186 </div>
187 <div class="date">
188 26th August 2010
189 </div>
190 <div class="body">
191 <p>My file system sematics program
192 <a href="https://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">presented
193 a few days ago</a> is very useful to verify that a file system can
194 work as a unix home directory,and today I had to extend it a bit. I'm
195 looking into alternatives for home directory access here at the
196 University of Oslo, and one of the options is sshfs. My friend
197 Finn-Arne mentioned a while back that they had used sshfs with Debian
198 Edu, but stopped because of problems. I asked today what the problems
199 where, and he mentioned that sshfs failed to handle umask properly.
200 Trying to detect the problem I wrote this addition to my fs testing
201 script:</p>
202
203 <pre>
204 mode_t touch_get_mode(const char *name, mode_t mode) {
205 mode_t retval = 0;
206 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
207 if (-1 != fd) {
208 unlink(name);
209 struct stat statbuf;
210 if (-1 != fstat(fd, &statbuf)) {
211 retval = statbuf.st_mode & 0x1ff;
212 }
213 close(fd);
214 }
215 return retval;
216 }
217
218 /* Try to detect problem discovered using sshfs */
219 int test_umask(void) {
220 printf("info: testing umask effect on file creation\n");
221
222 mode_t orig_umask = umask(000);
223 mode_t newmode;
224 if (0666 != (newmode = touch_get_mode("foobar", 0666))) {
225 printf(" error: Wrong file mode %o when creating using mode 666 and umask 000\n",
226 newmode);
227 }
228 umask(007);
229 if (0660 != (newmode = touch_get_mode("foobar", 0666))) {
230 printf(" error: Wrong file mode %o when creating using mode 666 and umask 007\n",
231 newmode);
232 }
233
234 umask (orig_umask);
235 return 0;
236 }
237
238 int main(int argc, char **argv) {
239 [...]
240 test_umask();
241 return 0;
242 }
243 </pre>
244
245 <p>Sure enough. On NFS to a netapp, I get this result:</p>
246
247 <pre>
248 Testing POSIX/Unix sematics on file system
249 info: testing symlink creation
250 info: testing subdirectory creation
251 info: testing fcntl locking
252 Read-locking 1 byte from 1073741824
253 Read-locking 510 byte from 1073741826
254 Unlocking 1 byte from 1073741824
255 Write-locking 1 byte from 1073741824
256 Write-locking 510 byte from 1073741826
257 Unlocking 2 byte from 1073741824
258 info: testing umask effect on file creation
259 </pre>
260
261 <p>When mounting the same directory using sshfs, I get this
262 result:</p>
263
264 <pre>
265 Testing POSIX/Unix sematics on file system
266 info: testing symlink creation
267 info: testing subdirectory creation
268 info: testing fcntl locking
269 Read-locking 1 byte from 1073741824
270 Read-locking 510 byte from 1073741826
271 Unlocking 1 byte from 1073741824
272 Write-locking 1 byte from 1073741824
273 Write-locking 510 byte from 1073741826
274 Unlocking 2 byte from 1073741824
275 info: testing umask effect on file creation
276 error: Wrong file mode 644 when creating using mode 666 and umask 000
277 error: Wrong file mode 640 when creating using mode 666 and umask 007
278 </pre>
279
280 <p>So, I can conclude that sshfs is better than smb to a Netapp or a
281 Windows server, but not good enough to be used as a home
282 directory.</p>
283
284 <p>Update 2010-08-26: Reported the issue in
285 <a href="http://bugs.debian.org/594498">BTS report #594498</a></p>
286
287 <p>Update 2010-08-27: Michael Gebetsroither report that he found the
288 script so useful that he created a GIT repository and stored it in
289 <a href="http://github.com/gebi/fs-test">http://github.com/gebi/fs-test</a>.</p>
290
291 </div>
292 <div class="tags">
293
294
295 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
296
297
298 </div>
299 </div>
300 <div class="padding"></div>
301
302 <div class="entry">
303 <div class="title">
304 <a href="https://people.skolelinux.org/pere/blog/Elektronisk_stemmegiving_er_ikke_til___stole_p____heller_ikke_i_Norge.html">Elektronisk stemmegiving er ikke til å stole på - heller ikke i Norge</a>
305 </div>
306 <div class="date">
307 23rd August 2010
308 </div>
309 <div class="body">
310 <p>I Norge pågår en prosess for å
311 <a href="http://www.e-valg.dep.no/">innføre elektronisk
312 stemmegiving</a> ved kommune- og stortingsvalg. Dette skal
313 introduseres i 2011. Det er all grunn til å tro at valg i Norge ikke
314 vil være til å stole på hvis dette blir gjennomført. Da det hele var
315 oppe til høring i 2006 forfattet jeg
316 <a href="http://www.nuug.no/dokumenter/valg-horing-2006-09.pdf">en
317 høringsuttalelse fra NUUG</a> (og EFN som hengte seg på) som skisserte
318 hvilke punkter som må oppfylles for at en skal kunne stole på et valg,
319 og elektronisk stemmegiving mangler flere av disse. Elektronisk
320 stemmegiving er for alle praktiske formål å putte ens stemme i en sort
321 boks under andres kontroll, og satse på at de som har kontroll med
322 boksen er til å stole på - uten at en har mulighet til å verifisere
323 dette selv. Det er ikke slik en gjennomfører demokratiske valg.</p>
324
325 <p>Da problemet er fundamentalt med hvordan elektronisk stemmegiving
326 må fungere for at også ikke-krypografer skal kunne delta, har det vært
327 mange rapporter om hvordan elektronisk stemmegiving har sviktet i land
328 etter land. En
329 <a href="http://wiki.nuug.no/uttalelser/2006-elektronisk-stemmegiving">liten
330 samling referanser</a> finnes på NUUGs wiki. Den siste er fra India,
331 der valgkomisjonen har valgt
332 <a href="http://www.freedom-to-tinker.com/blog/jhalderm/electronic-voting-researcher-arrested-over-anonymous-source">å
333 pusse politiet på en forsker</a> som har dokumentert svakheter i
334 valgsystemet.</p>
335
336 <p>Her i Norge har en valgt en annen tilnærming, der en forsøker seg
337 med teknobabbel for å få befolkningen til å tro at dette skal bli
338 sikkert. Husk, elektronisk stemmegiving underminerer de demokratiske
339 valgene i Norge, og bør ikke innføres.</p>
340
341 <p>Den offentlige diskusjonen blir litt vanskelig av at media har
342 valgt å kalle dette "evalg", som kan sies å både gjelde elektronisk
343 opptelling av valget som Norge har gjort siden 60-tallet og som er en
344 svært god ide, og elektronisk opptelling som er en svært dårlig ide.
345 Diskusjonen gir ikke mening hvis en skal diskutere om en er for eller
346 mot "evalg", og jeg forsøker derfor å være klar på at jeg snakker om
347 elektronisk stemmegiving og unngå begrepet "evalg".</p>
348
349 </div>
350 <div class="tags">
351
352
353 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="https://people.skolelinux.org/pere/blog/tags/valg">valg</a>.
354
355
356 </div>
357 </div>
358 <div class="padding"></div>
359
360 <div class="entry">
361 <div class="title">
362 <a href="https://people.skolelinux.org/pere/blog/Robot__reis_deg___.html">Robot, reis deg...</a>
363 </div>
364 <div class="date">
365 21st August 2010
366 </div>
367 <div class="body">
368 <p>I dag fikk jeg endelig tittet litt på mine nyinnkjøpte roboter, og
369 har brukt noen timer til å google etter interessante referanser og
370 aktuell kildekode for bruk på Linux. Det mest lovende så langt er
371 <a href="http://ispykee.toyz.org/">ispykee</a>, som har en
372 BSD-lisensiert linux-daemon som står som mellomledd mellom roboter på
373 lokalnettet og en sentral tjeneste der en iPhone kan koble seg opp for
374 å fjernstyre roboten. Linux-daemonen implementerer deler av
375 protokollen som roboten forstår. Etter å ha knotet litt med å oppnå
376 kontakt med roboten (den oppretter et eget ad-hoc wifi-nett, så jeg
377 måtte gå av mitt vanlige nett for å få kontakt), og kommet frem til at
378 den lytter på IP-port 9000 og 9001, gikk jeg i gang med å finne ut
379 hvordan jeg kunne snakke med roboten vha. disse portene. Robotbiten
380 av protokollen er publisert av produsenten med GPL-lisens, slik at det
381 er mulig å se hvordan protokollen fungerer. Det finnes en java-klient
382 for Android som så ganske snasen ut, men fant ingen kildekode for
383 denne. Derimot hadde iphone-løsningen kildekode, så jeg tok
384 utgangspunkt i den.</p>
385
386 <p>Daemonen ville i utgangspunktet forsøke å kontakte den sentrale
387 tjenesten som iphone-programmet kobler seg til. Jeg skrev dette om
388 til i stedet å sette opp en nettverkstjeneste på min lokale maskin,
389 som jeg kan koble meg opp til med telnet og gi kommandoer til roboten
390 (act, forward, right, left, etc). Det involverte i praksis å bytte ut
391 socket()/connect() med socket()/bind()/listen()/accept() for å gjøre
392 klienten om til en tjener.</p>
393
394 <p>Mens jeg har forsøkt å få roboten til å bevege seg har min samboer
395 skrudd sammen resten av roboten for å få montert kamera og plastpynten
396 (armer, plastfiber for lys). Nå er det hele montert, og roboten er
397 klar til bruk. Må få flyttet den over til mitt vanlige trådløsnett
398 før det blir praktisk, men de bitene av protokollen er ikke
399 implementert i ispykee-daemonen, så der må jeg enten få tak i en mac
400 eller en windows-maskin, eller implementere det selv.</p>
401
402 <p>Vi var tre som kjøpte slike roboter, og vi har blitt enige om å
403 samle notater og referanser på <a
404 href="http://wiki.nuug.no/grupper/robot/">NUUGs wiki</a>. Ta en titt
405 der hvis du er nysgjerrig.</p>
406
407 </div>
408 <div class="tags">
409
410
411 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
412
413
414 </div>
415 </div>
416 <div class="padding"></div>
417
418 <div class="entry">
419 <div class="title">
420 <a href="https://people.skolelinux.org/pere/blog/2_Spykee_roboter_i_hus__n__skal_det_lekes.html">2 Spykee-roboter i hus, nå skal det lekes</a>
421 </div>
422 <div class="date">
423 18th August 2010
424 </div>
425 <div class="body">
426 <p>Jeg kjøpte nettopp to
427 <a href="http://www.spykee-robot.com/">Spykee</a>-roboter, for test og
428 leking. Kjøpte to da det var så billige, og gir meg mulighet til å
429 eksperimentere uten å være veldig redd for å ødelegge alt ved å bytte
430 ut firmware og slikt. Oppdaget at lekebutikken på Bryn senter hadde
431 en liten stabel på lager som de ikke hadde klart å selge ut etter
432 fjorårets juleinnkjøp, og var villig til å selge for en femtedel av
433 vanlig pris. Jeg, Ronny og Jarle har skaffet oss restbeholdningen, og
434 det blir morsomt å se hva vi får ut av dette.</p>
435
436 <p>Roboten har belter styrt av to motorer, kamera, høytaler, mikrofon
437 og wifi-tilkobling. Det hele styrt av en GPL-lisensiert databoks som
438 jeg mistenker kjører linux. Firmware-kildekoden ble visst publisert i
439 mai. Eneste utfordringen er at kontroller-programvaren kun finnes til
440 Windows, men det må en kunne jobbe seg rundt når vi har kildekoden til
441 firmwaren. :)</p>
442
443 <ul>
444 <li><a href="http://en.wikipedia.org/wiki/Spykee">Wikipedia-oppføring</a></li>
445 <li><a href="http://www.spykeeworld.com/spykee/US/freeSoftware.html">Nedlasting av firmware-kilden</a></li>
446 <li><a href="http://wiki.nuug.no/grupper/robot">prosjektwiki hos NUUG</a></li>
447 </ul>
448
449 </div>
450 <div class="tags">
451
452
453 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
454
455
456 </div>
457 </div>
458 <div class="padding"></div>
459
460 <div class="entry">
461 <div class="title">
462 <a href="https://people.skolelinux.org/pere/blog/Rob_Weir__How_to_Crush_Dissent.html">Rob Weir: How to Crush Dissent</a>
463 </div>
464 <div class="date">
465 15th August 2010
466 </div>
467 <div class="body">
468 <p>I found the notes from Rob Weir on
469 <a href="http://feedproxy.google.com/~r/robweir/antic-atom/~3/VGb23-kta8c/how-to-crush-dissent.html">how
470 to crush dissent</a> matching my own thoughts on the matter quite
471 well. Highly recommended for those wondering which road our society
472 should go down. In my view we have been heading the wrong way for a
473 long time.</p>
474
475 </div>
476 <div class="tags">
477
478
479 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
480
481
482 </div>
483 </div>
484 <div class="padding"></div>
485
486 <div class="entry">
487 <div class="title">
488 <a href="https://people.skolelinux.org/pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html">No hardcoded config on Debian Edu clients</a>
489 </div>
490 <div class="date">
491 9th August 2010
492 </div>
493 <div class="body">
494 <p>As reported earlier, the last few days I have looked at how Debian
495 Edu clients are configured, and tried to get rid of all hardcoded
496 configuration settings on the clients. I believe the work to be
497 mostly done, and the clients seem to work just fine with dynamically
498 generated configuration.</p>
499
500 <p>What is the point, you might ask? The point is to allow a Debian
501 Edu desktop to integrate into an existing network infrastructure
502 without any manual configuration.</p>
503
504 <p>This is what happens when installing a Debian Edu client here at
505 the University of Oslo using PXE. With the PXE installation, I am
506 asked for language (Norwegian Bokmål), locality (Norway) and keyboard
507 layout (no-latin1), Debian Edu profile (Roaming Workstation), if I
508 accept to reformat the hard drive (yes), if I want to submit info to
509 popcon.debian.org (no) and root password (secret). After answering
510 these questions, the installer goes ahead and does its thing, and
511 after around 50 minutes it is done. I press enter to finish the
512 installation, and the machine reboots into KDE. When the machine is
513 ready and kdm asks for login information, I enter my university
514 username and password, am told by kdm that a local home directory has
515 been created and that I must log in again, and finally log in with the
516 same username and password to the KDE 4.4 desktop. At no point during
517 this process did it ask for university specific settings, and all the
518 required configuration was dynamically detected using information
519 fetched via DHCP and DNS. The roaming workstation is now ready for
520 use.</p>
521
522 <p>How was this done, you might wonder? First of all, here is the
523 list of things that need to be configured on the client to get it
524 working properly out of the box:</p>
525
526 <ul>
527 <li>IP address/netmask and DNS server.</li>
528 <li>Web proxy URL.</li>
529 <li>LDAP server for NSS directory information (user, group, etc).</li>
530 <li>Kerberos server for PAM password checking.</li>
531 <li>SMB mount point to access the network home directory. (*)</li>
532 <li>Central syslog server to send syslog messages to. (*)</li>
533 <li>Sitesummary collector URL to submit info to central server. (*)</li>
534 </ul>
535
536 <p>(Hm, did I forget anything? Let me knew if I did.)</p>
537
538 <p>The points marked (*) are not required to be able to use the
539 machine, but needed to provide central storage and allowing system
540 administrators to track their machines. Since yesterday, everything
541 but the sitesummary collector URL is dynamically discovered at boot
542 and installation time in the svn version of Debian Edu.</p>
543
544 <p>The IP and DNS setup is fetched during boot using DHCP as usual.
545 When a DHCP update arrives, the proxy setup is updated by looking for
546 http://wpat/wpad.dat and using the content of this WPAD file to
547 configure the http and ftp proxy in /etc/environment and
548 /etc/apt/apt.conf. I decided to update the proxy setup using a DHCP
549 hook to ensure that the client stops using the Debian Edu proxy when
550 it is moved outside the Debian Edu network, and instead uses any local
551 proxy present on the new network when it moves around.</p>
552
553 <p>The DNS names of the LDAP, Kerberos and syslog server and related
554 configuration are generated using DNS information at boot. First the
555 installer looks for a host named ldap in the current DNS domain. If
556 not found, it looks for _ldap._tcp SRV records in DNS instead. If an
557 LDAP server is found, its root DSE entry is requested and the
558 attributes namingContexts and defaultNamingContext are used to
559 determine which LDAP base to use for NSS. If there are several
560 namingContexts attibutes and the defaultNamingContext is present, that
561 LDAP subtree is used as the base. If defaultNamingContext is missing,
562 the subtrees listed as namingContexts are searched in sequence for any
563 object with class posixAccount or posixGroup, and the first one with
564 such an object is used as the LDAP base. For Kerberos, a similar
565 search is done by first looking for a host named kerberos, and then
566 for the _kerberos._tcp SRV record. I've been unable to find a way to
567 look up the Kerberos realm, so for this the upper case string of the
568 current DNS domain is used.</p>
569
570 <p>For the syslog server, the hosts syslog and loghost are searched
571 for, and the _syslog._udp SRV record is consulted if no such host is
572 found. This algorithm works for both Debian Edu and the University of
573 Oslo. A similar strategy would work for locating the sitesummary
574 server, but have not been implemented yet. I decided to fetch and
575 save these settings during installation, to make sure moving to a
576 different network does not change the set of users being allowed to
577 log in nor the passwords required to log in. Usernames and passwords
578 will be cached by sssd when the user logs in on the Debian Edu
579 network, and will not change as the laptop move around. For a
580 non-roaming machine, there is no caching, but given that it is
581 supposed to stay in place it should not matter much. Perhaps we
582 should switch those to use sssd too?</p>
583
584 <p>The user's SMB mount point for the network home directory is
585 located when the user logs in for the first time. The LDAP server is
586 consulted to look for the user's LDAP object and the sambaHomePath
587 attribute is used if found. If it isn't found, the home directory
588 path fetched from NSS is used instead. Assuming the path is of the
589 form /site/server/directory/username, the second part is looked up in
590 DNS and used to generate a SMB URL of the form
591 smb://server.domain/username. This algorithm works for both Debian
592 edu and the University of Oslo. Perhaps there are better attributes
593 to use or a better algorithm that works for more sites, but this will
594 do for now. :)</p>
595
596 <p>This work should make it easier to integrate the Debian Edu clients
597 into any LDAP/Kerberos infrastructure, and make the current setup even
598 more flexible than before. I suspect it will also work for thin
599 client servers, allowing one to easily set up LTSP and hook it into a
600 existing network infrastructure, but I have not had time to test this
601 yet.</p>
602
603 <p>If you want to help out with implementing these things for Debian
604 Edu, please contact us on debian-edu@lists.debian.org.</p>
605
606 <p>Update 2010-08-09: Simon Farnsworth gave me a heads-up on how to
607 detect Kerberos realm from DNS, by looking for _kerberos TXT entries
608 before falling back to the upper case DNS domain name. Will have to
609 implement it for Debian Edu. :)</p>
610
611 </div>
612 <div class="tags">
613
614
615 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
616
617
618 </div>
619 </div>
620 <div class="padding"></div>
621
622 <div class="entry">
623 <div class="title">
624 <a href="https://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">Testing if a file system can be used for home directories...</a>
625 </div>
626 <div class="date">
627 8th August 2010
628 </div>
629 <div class="body">
630 <p>A few years ago, I was involved in a project planning to use
631 Windows file servers as home directory servers for Debian
632 Edu/Skolelinux machines. This was thought to be no problem, as the
633 access would be through the SMB network file system protocol, and we
634 knew other sites used SMB with unix and samba as the file server to
635 mount home directories without any problems. But, after months of
636 struggling, we had to conclude that our goal was impossible.</p>
637
638 <p>The reason is simply that while SMB can be used for home
639 directories when the file server is Samba running on Unix, this only
640 work because of Samba have some extensions and the fact that the
641 underlying file system is a unix file system. When using a Windows
642 file server, the underlying file system do not have POSIX semantics,
643 and several programs will fail if the users home directory where they
644 want to store their configuration lack POSIX semantics.</p>
645
646 <p>As part of this work, I wrote a small C program I want to share
647 with you all, to replicate a few of the problematic applications (like
648 OpenOffice.org and GCompris) and see if the file system was working as
649 it should. If you find yourself in spooky file system land, it might
650 help you find your way out again. This is the fs-test.c source:</p>
651
652 <pre>
653 /*
654 * Some tests to check the file system sematics. Used to verify that
655 * CIFS from a windows server do not work properly as a linux home
656 * directory.
657 * License: GPL v2 or later
658 *
659 * needs libsqlite3-dev and build-essential installed
660 * compile with: gcc -Wall -lsqlite3 -DTEST_SQLITE fs-test.c -o fs-test
661 */
662
663 #define _FILE_OFFSET_BITS 64
664 #define _LARGEFILE_SOURCE 1
665 #define _LARGEFILE64_SOURCE 1
666
667 #define _GNU_SOURCE /* for asprintf() */
668
669 #include &lt;errno.h>
670 #include &lt;fcntl.h>
671 #include &lt;stdio.h>
672 #include &lt;string.h>
673 #include &lt;stdlib.h>
674 #include &lt;sys/file.h>
675 #include &lt;sys/stat.h>
676 #include &lt;sys/types.h>
677 #include &lt;unistd.h>
678
679 #ifdef TEST_SQLITE
680 /*
681 * Test sqlite open, as done by gcompris require the libsqlite3-dev
682 * package and linking with -lsqlite3. A more low level test is
683 * below.
684 * See also &lt;URL: http://www.sqlite.org./faq.html#q5 >.
685 */
686 #include &lt;sqlite3.h>
687 #define CREATE_TABLE_USERS \
688 "CREATE TABLE users (user_id INT UNIQUE, login TEXT, lastname TEXT, firstname TEXT, birthdate TEXT, class_id INT ); "
689 int test_sqlite_open(void) {
690 char *zErrMsg;
691 char *name = "testsqlite.db";
692 sqlite3 *db=NULL;
693 unlink(name);
694 int rc = sqlite3_open(name, &db);
695 if( rc ){
696 printf("error: sqlite open of %s failed: %s\n", name, sqlite3_errmsg(db));
697 sqlite3_close(db);
698 return -1;
699 }
700
701 /* create tables */
702 rc = sqlite3_exec(db,CREATE_TABLE_USERS, NULL, 0, &zErrMsg);
703 if( rc != SQLITE_OK ){
704 printf("error: sqlite table create failed: %s\n", zErrMsg);
705 sqlite3_close(db);
706 return -1;
707 }
708 printf("info: sqlite worked\n");
709 sqlite3_close(db);
710 return 0;
711 }
712 #endif /* TEST_SQLITE */
713
714 /*
715 * Demonstrate locking issue found in gcompris using sqlite3. This
716 * work with ext3, but not with cifs server on Windows 2003. This is
717 * done in the sqlite3 library.
718 * See also
719 * &lt;URL:http://www.cygwin.com/ml/cygwin/2001-08/msg00854.html> and the
720 * POSIX specification
721 * &lt;URL:http://www.opengroup.org/onlinepubs/009695399/functions/fcntl.html>.
722 */
723 int test_gcompris_locking(void) {
724 struct flock fl;
725 char *name = "testsqlite.db";
726 unlink(name);
727 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, 0644);
728 printf("info: testing fcntl locking\n");
729
730 fl.l_whence = SEEK_SET;
731 fl.l_pid = getpid();
732 printf(" Read-locking 1 byte from 1073741824");
733 fl.l_start = 1073741824;
734 fl.l_len = 1;
735 fl.l_type = F_RDLCK;
736 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
737
738 printf(" Read-locking 510 byte from 1073741826");
739 fl.l_start = 1073741826;
740 fl.l_len = 510;
741 fl.l_type = F_RDLCK;
742 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
743
744 printf(" Unlocking 1 byte from 1073741824");
745 fl.l_start = 1073741824;
746 fl.l_len = 1;
747 fl.l_type = F_UNLCK;
748 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
749
750 printf(" Write-locking 1 byte from 1073741824");
751 fl.l_start = 1073741824;
752 fl.l_len = 1;
753 fl.l_type = F_WRLCK;
754 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
755
756 printf(" Write-locking 510 byte from 1073741826");
757 fl.l_start = 1073741826;
758 fl.l_len = 510;
759 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
760
761 printf(" Unlocking 2 byte from 1073741824");
762 fl.l_start = 1073741824;
763 fl.l_len = 2;
764 fl.l_type = F_UNLCK;
765 if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
766
767 close(fd);
768 return 0;
769 }
770
771 /*
772 * Test if permissions of freshly created directories allow entries
773 * below them. This was a problem with OpenOffice.org and gcompris.
774 * Mounting with option 'sync' seem to solve this problem while
775 * slowing down file operations.
776 */
777 int test_subdirectory_creation(void) {
778 #define LEVELS 5
779 char *path = strdup("test");
780 char *dirs[LEVELS];
781 int level;
782 printf("info: testing subdirectory creation\n");
783 for (level = 0; level &lt; LEVELS; level++) {
784 char *newpath = NULL;
785 if (-1 == mkdir(path, 0777)) {
786 printf(" error: Unable to create directory '%s': %s\n",
787 path, strerror(errno));
788 break;
789 }
790 asprintf(&newpath, "%s/%s", path, "test");
791 free(path);
792 path = newpath;
793 }
794 return 0;
795 }
796
797 /*
798 * Test if symlinks can be created. This was a problem detected with
799 * KDE.
800 */
801 int test_symlinks(void) {
802 printf("info: testing symlink creation\n");
803 unlink("symlink");
804 if (-1 == symlink("file", "symlink"))
805 printf(" error: Unable to create symlink\n");
806 return 0;
807 }
808
809 int main(int argc, char **argv) {
810 printf("Testing POSIX/Unix sematics on file system\n");
811 test_symlinks();
812 test_subdirectory_creation();
813 #ifdef TEST_SQLITE
814 test_sqlite_open();
815 #endif /* TEST_SQLITE */
816 test_gcompris_locking();
817 return 0;
818 }
819 </pre>
820
821 <p>When everything is working, it should print something like
822 this:</p>
823
824 <pre>
825 Testing POSIX/Unix sematics on file system
826 info: testing symlink creation
827 info: testing subdirectory creation
828 info: sqlite worked
829 info: testing fcntl locking
830 Read-locking 1 byte from 1073741824
831 Read-locking 510 byte from 1073741826
832 Unlocking 1 byte from 1073741824
833 Write-locking 1 byte from 1073741824
834 Write-locking 510 byte from 1073741826
835 Unlocking 2 byte from 1073741824
836 </pre>
837
838 <p>I do not remember the exact details of the problems we saw, but one
839 of them was with locking, where if I remember correctly, POSIX allow a
840 read-only lock to be upgraded to a read-write lock without unlocking
841 the read-only lock (while Windows do not). Another was a bug in the
842 CIFS/SMB client implementation in the Linux kernel where directory
843 meta information would be wrong for a fraction of a second, making
844 OpenOffice.org fail to create its deep directory tree because it was
845 not allowed to create files in its freshly created directory.</p>
846
847 <p>Anyway, here is a nice tool for your tool box, might you never need
848 it. :)</p>
849
850 <p>Update 2010-08-27: Michael Gebetsroither report that he found the
851 script so useful that he created a GIT repository and stored it in
852 <a href="http://github.com/gebi/fs-test">http://github.com/gebi/fs-test</a>.</p>
853
854 </div>
855 <div class="tags">
856
857
858 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
859
860
861 </div>
862 </div>
863 <div class="padding"></div>
864
865 <div class="entry">
866 <div class="title">
867 <a href="https://people.skolelinux.org/pere/blog/Autodetecting_Client_setup_for_roaming_workstations_in_Debian_Edu.html">Autodetecting Client setup for roaming workstations in Debian Edu</a>
868 </div>
869 <div class="date">
870 7th August 2010
871 </div>
872 <div class="body">
873 <p>A few days ago, I
874 <a href="https://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html">tried
875 to install</a> a Roaming workation profile from Debian Edu/Squeeze
876 while on the university network here at the University of Oslo, and
877 noticed how much had to change to get it operational using the
878 university infrastructure. It was fairly easy, but it occured to me
879 that Debian Edu would improve a lot if I could get the client to
880 connect without any changes at all, and thus let the client configure
881 itself during installation and first boot to use the infrastructure
882 around it. Now I am a huge step further along that road.</p>
883
884 <p>With our current squeeze-test packages, I can select the roaming
885 workstation profile and get a working laptop connecting to the
886 university LDAP server for user and group and our active directory
887 servers for Kerberos authentication. All this without any
888 configuration at all during installation. My users home directory got
889 a bookmark in the KDE menu to mount it via SMB, with the correct URL.
890 In short, openldap and sssd is correctly configured. In addition to
891 this, the client look for http://wpad/wpad.dat to configure a web
892 proxy, and when it fail to find it no proxy settings are stored in
893 /etc/environment and /etc/apt/apt.conf. Iceweasel and KDE is
894 configured to look for the same wpad configuration and also do not use
895 a proxy when at the university network. If the machine is moved to a
896 network with such wpad setup, it would automatically use it when DHCP
897 gave it a IP address.</p>
898
899 <p>The LDAP server is located using DNS, by first looking for the DNS
900 entry ldap.$domain. If this do not exist, it look for the
901 _ldap._tcp.$domain SRV records and use the first one as the LDAP
902 server. Next, it connects to the LDAP server and search all
903 namingContexts entries for posixAccount or posixGroup objects, and
904 pick the first one as the LDAP base. For Kerberos, a similar
905 algorithm is used to locate the LDAP server, and the realm is the
906 uppercase version of $domain.</p>
907
908 <p>So, what is not working, you might ask. SMB mounting my home
909 directory do not work. No idea why, but suspected the incorrect
910 Kerberos settings in /etc/krb5.conf and /etc/samba/smb.conf might be
911 the cause. These are not properly configured during installation, and
912 had to be hand-edited to get the correct Kerberos realm and server,
913 but SMB mounting still do not work. :(</p>
914
915 <p>With this automatic configuration in place, I expect a Debian Edu
916 roaming profile installation would be able to automatically detect and
917 connect to any site using LDAP and Kerberos for NSS directory and PAM
918 authentication. It should also work out of the box in a Active
919 Directory environment providing posixAccount and posixGroup objects
920 with UID and GID values.</p>
921
922 <p>If you want to help out with implementing these things for Debian
923 Edu, please contact us on debian-edu@lists.debian.org.</p>
924
925 </div>
926 <div class="tags">
927
928
929 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
930
931
932 </div>
933 </div>
934 <div class="padding"></div>
935
936 <div class="entry">
937 <div class="title">
938 <a href="https://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html">Debian Edu roaming workstation - at the university of Oslo</a>
939 </div>
940 <div class="date">
941 3rd August 2010
942 </div>
943 <div class="body">
944 <p>The new roaming workstation profile in Debian Edu/Squeeze is fairly
945 similar to the laptop setup am I working on using Ubuntu for the
946 University of Oslo, and just for the heck of it, I tested today how
947 hard it would be to integrate that profile into the university
948 infrastructure. In this case, it is the university LDAP server,
949 Active Directory Kerberos server and SMB mounting from the Netapp file
950 servers.</p>
951
952 <p>I was pleasantly surprised that the only three files needed to be
953 changed (/etc/sssd/sssd.conf, /etc/ldap.conf and
954 /etc/mklocaluser.d/20-debian-edu-config) and one file had to be added
955 (/usr/share/perl5/Debian/Edu_Local.pm), to get the client working.
956 Most of the changes were to get the client to use the university LDAP
957 for NSS and Kerberos server for PAM, but one was to change a hard
958 coded DNS domain name in the mklocaluser hook from .intern to
959 .uio.no.</p>
960
961 <p>This testing was so encouraging, that I went ahead and adjusted the
962 Debian Edu scripts and setup in subversion to centralise the roaming
963 workstation setup a bit more and avoid the hardcoded DNS domain name,
964 so that when I test this tomorrow, I expect to get away with modifying
965 only /etc/sssd/sssd.conf and /etc/ldap.conf to get it to use the
966 university servers.</p>
967
968 <p>My goal is to get the clients to have no hardcoded settings and
969 fetch all their initial setup during installation and first boot, to
970 allow them to be inserted also into environments where the default
971 setup in Debian Edu has been changed or as with the university, where
972 the environment is different but provides the protocols Debian Edu
973 uses.</p>
974
975 </div>
976 <div class="tags">
977
978
979 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
980
981
982 </div>
983 </div>
984 <div class="padding"></div>
985
986 <p style="text-align: right;"><a href="08.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
987 <div id="sidebar">
988
989
990
991 <h2>Archive</h2>
992 <ul>
993
994 <li>2024
995 <ul>
996
997 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/01/">January (1)</a></li>
998
999 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/02/">February (1)</a></li>
1000
1001 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/03/">March (2)</a></li>
1002
1003 <li><a href="https://people.skolelinux.org/pere/blog/archive/2024/04/">April (3)</a></li>
1004
1005 </ul></li>
1006
1007 <li>2023
1008 <ul>
1009
1010 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
1011
1012 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
1013
1014 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
1015
1016 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
1017
1018 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
1019
1020 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/08/">August (1)</a></li>
1021
1022 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/09/">September (1)</a></li>
1023
1024 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/10/">October (1)</a></li>
1025
1026 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/11/">November (4)</a></li>
1027
1028 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/12/">December (1)</a></li>
1029
1030 </ul></li>
1031
1032 <li>2022
1033 <ul>
1034
1035 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
1036
1037 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
1038
1039 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
1040
1041 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
1042
1043 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
1044
1045 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
1046
1047 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
1048
1049 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
1050
1051 </ul></li>
1052
1053 <li>2021
1054 <ul>
1055
1056 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
1057
1058 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
1059
1060 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
1061
1062 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
1063
1064 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
1065
1066 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
1067
1068 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
1069
1070 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
1071
1072 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
1073
1074 </ul></li>
1075
1076 <li>2020
1077 <ul>
1078
1079 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
1080
1081 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
1082
1083 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
1084
1085 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
1086
1087 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
1088
1089 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
1090
1091 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
1092
1093 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
1094
1095 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
1096
1097 </ul></li>
1098
1099 <li>2019
1100 <ul>
1101
1102 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
1103
1104 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
1105
1106 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
1107
1108 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
1109
1110 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
1111
1112 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
1113
1114 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
1115
1116 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
1117
1118 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
1119
1120 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
1121
1122 </ul></li>
1123
1124 <li>2018
1125 <ul>
1126
1127 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
1128
1129 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
1130
1131 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
1132
1133 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
1134
1135 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
1136
1137 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
1138
1139 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
1140
1141 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
1142
1143 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
1144
1145 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
1146
1147 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
1148
1149 </ul></li>
1150
1151 <li>2017
1152 <ul>
1153
1154 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
1155
1156 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
1157
1158 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
1159
1160 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
1161
1162 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
1163
1164 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
1165
1166 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
1167
1168 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
1169
1170 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
1171
1172 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
1173
1174 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
1175
1176 </ul></li>
1177
1178 <li>2016
1179 <ul>
1180
1181 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
1182
1183 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
1184
1185 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
1186
1187 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
1188
1189 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
1190
1191 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
1192
1193 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
1194
1195 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
1196
1197 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
1198
1199 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
1200
1201 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
1202
1203 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
1204
1205 </ul></li>
1206
1207 <li>2015
1208 <ul>
1209
1210 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
1211
1212 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
1213
1214 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
1215
1216 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
1217
1218 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
1219
1220 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
1221
1222 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
1223
1224 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
1225
1226 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
1227
1228 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
1229
1230 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
1231
1232 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
1233
1234 </ul></li>
1235
1236 <li>2014
1237 <ul>
1238
1239 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1240
1241 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1242
1243 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1244
1245 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1246
1247 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1248
1249 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1250
1251 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1252
1253 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1254
1255 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1256
1257 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
1258
1259 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
1260
1261 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
1262
1263 </ul></li>
1264
1265 <li>2013
1266 <ul>
1267
1268 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1269
1270 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1271
1272 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1273
1274 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1275
1276 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1277
1278 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1279
1280 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1281
1282 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1283
1284 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1285
1286 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1287
1288 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1289
1290 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1291
1292 </ul></li>
1293
1294 <li>2012
1295 <ul>
1296
1297 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1298
1299 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1300
1301 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1302
1303 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1304
1305 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1306
1307 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1308
1309 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1310
1311 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1312
1313 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1314
1315 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1316
1317 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1318
1319 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1320
1321 </ul></li>
1322
1323 <li>2011
1324 <ul>
1325
1326 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1327
1328 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1329
1330 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1331
1332 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1333
1334 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1335
1336 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1337
1338 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1339
1340 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1341
1342 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1343
1344 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1345
1346 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1347
1348 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1349
1350 </ul></li>
1351
1352 <li>2010
1353 <ul>
1354
1355 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1356
1357 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1358
1359 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1360
1361 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1362
1363 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1364
1365 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1366
1367 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1368
1369 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1370
1371 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1372
1373 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1374
1375 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1376
1377 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1378
1379 </ul></li>
1380
1381 <li>2009
1382 <ul>
1383
1384 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1385
1386 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1387
1388 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1389
1390 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1391
1392 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1393
1394 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1395
1396 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1397
1398 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1399
1400 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1401
1402 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1403
1404 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1405
1406 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1407
1408 </ul></li>
1409
1410 <li>2008
1411 <ul>
1412
1413 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1414
1415 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1416
1417 </ul></li>
1418
1419 </ul>
1420
1421
1422
1423 <h2>Tags</h2>
1424 <ul>
1425
1426 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1427
1428 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1429
1430 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1431
1432 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1433
1434 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1435
1436 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (13)</a></li>
1437
1438 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1439
1440 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1441
1442 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (3)</a></li>
1443
1444 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (199)</a></li>
1445
1446 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1447
1448 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1449
1450 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1451
1452 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1453
1454 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (32)</a></li>
1455
1456 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1457
1458 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (461)</a></li>
1459
1460 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1461
1462 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1463
1464 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1465
1466 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1467
1468 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1469
1470 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1471
1472 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1473
1474 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (18)</a></li>
1475
1476 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1477
1478 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (6)</a></li>
1479
1480 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1481
1482 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1483
1484 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1485
1486 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
1487
1488 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1489
1490 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1491
1492 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1493
1494 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1495
1496 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (46)</a></li>
1497
1498 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
1499
1500 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (25)</a></li>
1501
1502 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (324)</a></li>
1503
1504 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (199)</a></li>
1505
1506 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
1507
1508 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1509
1510 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1511
1512 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
1513
1514 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
1515
1516 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (4)</a></li>
1517
1518 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1519
1520 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1521
1522 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1523
1524 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
1525
1526 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1527
1528 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1529
1530 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1531
1532 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1533
1534 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1535
1536 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1537
1538 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (76)</a></li>
1539
1540 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1541
1542 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
1543
1544 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (65)</a></li>
1545
1546 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1547
1548 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1549
1550 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1551
1552 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
1553
1554 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (80)</a></li>
1555
1556 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1557
1558 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1559
1560 </ul>
1561
1562
1563 </div>
1564 <p style="text-align: right">
1565 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1566 </p>
1567
1568 </body>
1569 </html>