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