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