1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
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">
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
20 <p>Entries from August
2010.
</p>
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>
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
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
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>
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
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>.
73 <div class=
"padding"></div>
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>
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>
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>
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>
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>
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>
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>
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>.
146 <div class=
"padding"></div>
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>
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>
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>
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>
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
185 * License: GPL v2 or later
187 * needs libsqlite3-dev and build-essential installed
188 * compile with: gcc -Wall -lsqlite3 -DTEST_SQLITE fs-test.c -o fs-test
191 #define _FILE_OFFSET_BITS
64
192 #define _LARGEFILE_SOURCE
1
193 #define _LARGEFILE64_SOURCE
1
195 #define _GNU_SOURCE /* for asprintf() */
197 #include
<errno.h
>
198 #include
<fcntl.h
>
199 #include
<stdio.h
>
200 #include
<string.h
>
201 #include
<stdlib.h
>
202 #include
<sys/file.h
>
203 #include
<sys/stat.h
>
204 #include
<sys/types.h
>
205 #include
<unistd.h
>
209 * Test sqlite open, as done by gcompris require the libsqlite3-dev
210 * package and linking with -lsqlite3. A more low level test is
212 * See also
<URL: http://www.sqlite.org./faq.html#q5
>.
214 #include
<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) {
219 char *name = "testsqlite.db";
222 int rc = sqlite3_open(name, &db);
224 printf("error: sqlite open of %s failed: %s\n", name, sqlite3_errmsg(db));
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);
236 printf("info: sqlite worked\n");
240 #endif /* TEST_SQLITE */
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.
247 *
<URL:http://www.cygwin.com/ml/cygwin/
2001-
08/msg00854.html
> and the
248 * POSIX specification
249 *
<URL:http://www.opengroup.org/onlinepubs/
009695399/functions/fcntl.html
>.
251 int test_gcompris_locking(void) {
253 char *name = "testsqlite.db";
255 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE,
0644);
256 printf("info: testing fcntl locking\n");
258 fl.l_whence = SEEK_SET;
260 printf(" Read-locking
1 byte from
1073741824");
261 fl.l_start =
1073741824;
264 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
266 printf(" Read-locking
510 byte from
1073741826");
267 fl.l_start =
1073741826;
270 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
272 printf(" Unlocking
1 byte from
1073741824");
273 fl.l_start =
1073741824;
276 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
278 printf(" Write-locking
1 byte from
1073741824");
279 fl.l_start =
1073741824;
282 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
284 printf(" Write-locking
510 byte from
1073741826");
285 fl.l_start =
1073741826;
287 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
289 printf(" Unlocking
2 byte from
1073741824");
290 fl.l_start =
1073741824;
293 if (
0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
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.
305 int test_subdirectory_creation(void) {
307 char *path = strdup("test");
310 printf("info: testing subdirectory creation\n");
311 for (level =
0; level
< 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));
318 asprintf(&newpath, "%s/%s", path, "test");
326 * Test if symlinks can be created. This was a problem detected with
329 int test_symlinks(void) {
330 printf("info: testing symlink creation\n");
332 if (-
1 == symlink("file", "symlink"))
333 printf(" error: Unable to create symlink\n");
337 int main(int argc, char **argv) {
338 printf("Testing POSIX/Unix sematics on file system\n");
340 test_subdirectory_creation();
343 #endif /* TEST_SQLITE */
344 test_gcompris_locking();
349 <p>When everything is working, it should print something like
353 Testing POSIX/Unix sematics on file system
354 info: testing symlink creation
355 info: testing subdirectory creation
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
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>
375 <p>Anyway, here is a nice tool for your tool box, might you never need
383 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>.
387 <div class=
"padding"></div>
391 <a href=
"http://people.skolelinux.org/pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html">No hardcoded config on Debian Edu clients
</a>
399 <p>As reported earlier, the last few days I have looked at how Debian
400 Edu clients are configured, and tried to get rid of all hardcoded
401 configuration settings on the clients. I believe the work to be
402 mostly done, and the clients seem to work just fine with dynamically
403 generated configuration.
</p>
405 <p>What is the point, you might ask? The point is to allow a Debian
406 Edu desktop to integrate into an existing network infrastructure
407 without any manual configuration.
</p>
409 <p>This is what happens when installing a Debian Edu client here at
410 the University of Oslo using PXE. With the PXE installation, I am
411 asked for language (Norwegian Bokmål), locality (Norway) and keyboard
412 layout (no-latin1), Debian Edu profile (Roaming Workstation), if I
413 accept to reformat the hard drive (yes), if I want to submit info to
414 popcon.debian.org (no) and root password (secret). After answering
415 these questions, the installer goes ahead and does its thing, and
416 after around
50 minutes it is done. I press enter to finish the
417 installation, and the machine reboots into KDE. When the machine is
418 ready and kdm asks for login information, I enter my university
419 username and password, am told by kdm that a local home directory has
420 been created and that I must log in again, and finally log in with the
421 same username and password to the KDE
4.4 desktop. At no point during
422 this process did it ask for university specific settings, and all the
423 required configuration was dynamically detected using information
424 fetched via DHCP and DNS. The roaming workstation is now ready for
427 <p>How was this done, you might wonder? First of all, here is the
428 list of things that need to be configured on the client to get it
429 working properly out of the box:
</p>
432 <li>IP address/netmask and DNS server.
</li>
433 <li>Web proxy URL.
</li>
434 <li>LDAP server for NSS directory information (user, group, etc).
</li>
435 <li>Kerberos server for PAM password checking.
</li>
436 <li>SMB mount point to access the network home directory. (*)
</li>
437 <li>Central syslog server to send syslog messages to. (*)
</li>
438 <li>Sitesummary collector URL to submit info to central server. (*)
</li>
441 <p>(Hm, did I forget anything? Let me knew if I did.)
</p>
443 <p>The points marked (*) are not required to be able to use the
444 machine, but needed to provide central storage and allowing system
445 administrators to track their machines. Since yesterday, everything
446 but the sitesummary collector URL is dynamically discovered at boot
447 and installation time in the svn version of Debian Edu.
</p>
449 <p>The IP and DNS setup is fetched during boot using DHCP as usual.
450 When a DHCP update arrives, the proxy setup is updated by looking for
451 http://wpat/wpad.dat and using the content of this WPAD file to
452 configure the http and ftp proxy in /etc/environment and
453 /etc/apt/apt.conf. I decided to update the proxy setup using a DHCP
454 hook to ensure that the client stops using the Debian Edu proxy when
455 it is moved outside the Debian Edu network, and instead uses any local
456 proxy present on the new network when it moves around.
</p>
458 <p>The DNS names of the LDAP, Kerberos and syslog server and related
459 configuration are generated using DNS information at boot. First the
460 installer looks for a host named ldap in the current DNS domain. If
461 not found, it looks for _ldap._tcp SRV records in DNS instead. If an
462 LDAP server is found, its root DSE entry is requested and the
463 attributes namingContexts and defaultNamingContext are used to
464 determine which LDAP base to use for NSS. If there are several
465 namingContexts attibutes and the defaultNamingContext is present, that
466 LDAP subtree is used as the base. If defaultNamingContext is missing,
467 the subtrees listed as namingContexts are searched in sequence for any
468 object with class posixAccount or posixGroup, and the first one with
469 such an object is used as the LDAP base. For Kerberos, a similar
470 search is done by first looking for a host named kerberos, and then
471 for the _kerberos._tcp SRV record. I've been unable to find a way to
472 look up the Kerberos realm, so for this the upper case string of the
473 current DNS domain is used.
</p>
475 <p>For the syslog server, the hosts syslog and loghost are searched
476 for, and the _syslog._udp SRV record is consulted if no such host is
477 found. This algorithm works for both Debian Edu and the University of
478 Oslo. A similar strategy would work for locating the sitesummary
479 server, but have not been implemented yet. I decided to fetch and
480 save these settings during installation, to make sure moving to a
481 different network does not change the set of users being allowed to
482 log in nor the passwords required to log in. Usernames and passwords
483 will be cached by sssd when the user logs in on the Debian Edu
484 network, and will not change as the laptop move around. For a
485 non-roaming machine, there is no caching, but given that it is
486 supposed to stay in place it should not matter much. Perhaps we
487 should switch those to use sssd too?
</p>
489 <p>The user's SMB mount point for the network home directory is
490 located when the user logs in for the first time. The LDAP server is
491 consulted to look for the user's LDAP object and the sambaHomePath
492 attribute is used if found. If it isn't found, the home directory
493 path fetched from NSS is used instead. Assuming the path is of the
494 form /site/server/directory/username, the second part is looked up in
495 DNS and used to generate a SMB URL of the form
496 smb://server.domain/username. This algorithm works for both Debian
497 edu and the University of Oslo. Perhaps there are better attributes
498 to use or a better algorithm that works for more sites, but this will
501 <p>This work should make it easier to integrate the Debian Edu clients
502 into any LDAP/Kerberos infrastructure, and make the current setup even
503 more flexible than before. I suspect it will also work for thin
504 client servers, allowing one to easily set up LTSP and hook it into a
505 existing network infrastructure, but I have not had time to test this
508 <p>If you want to help out with implementing these things for Debian
509 Edu, please contact us on debian-edu@lists.debian.org.
</p>
511 <p>Update
2010-
08-
09: Simon Farnsworth gave me a heads-up on how to
512 detect Kerberos realm from DNS, by looking for _kerberos TXT entries
513 before falling back to the upper case DNS domain name. Will have to
514 implement it for Debian Edu. :)
</p>
521 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>.
525 <div class=
"padding"></div>
529 <a href=
"http://people.skolelinux.org/pere/blog/Rob_Weir__How_to_Crush_Dissent.html">Rob Weir: How to Crush Dissent
</a>
537 <p>I found the notes from Rob Weir on
538 <a href=
"http://feedproxy.google.com/~r/robweir/antic-atom/~3/VGb23-kta8c/how-to-crush-dissent.html">how
539 to crush dissent
</a> matching my own thoughts on the matter quite
540 well. Highly recommended for those wondering which road our society
541 should go down. In my view we have been heading the wrong way for a
549 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>.
553 <div class=
"padding"></div>
557 <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>
565 <p>Jeg kjøpte nettopp to
566 <a href=
"http://www.spykee-robot.com/">Spykee
</a>-roboter, for test og
567 leking. Kjøpte to da det var så billige, og gir meg mulighet til å
568 eksperimentere uten å være veldig redd for å ødelegge alt ved å bytte
569 ut firmware og slikt. Oppdaget at lekebutikken på Bryn senter hadde
570 en liten stabel på lager som de ikke hadde klart å selge ut etter
571 fjorårets juleinnkjøp, og var villig til å selge for en femtedel av
572 vanlig pris. Jeg, Ronny og Jarle har skaffet oss restbeholdningen, og
573 det blir morsomt å se hva vi får ut av dette.
</p>
575 <p>Roboten har belter styrt av to motorer, kamera, høytaler, mikrofon
576 og wifi-tilkobling. Det hele styrt av en GPL-lisensiert databoks som
577 jeg mistenker kjører linux. Firmware-kildekoden ble visst publisert i
578 mai. Eneste utfordringen er at kontroller-programvaren kun finnes til
579 Windows, men det må en kunne jobbe seg rundt når vi har kildekoden til
583 <li><a href=
"http://en.wikipedia.org/wiki/Spykee">Wikipedia-oppføring
</a></li>
584 <li><a href=http://www.spykeeworld.com/spykee/US/freeSoftware.html
">Nedlasting av firmware-kilden</a></li>
585 <li><a href="http://wiki.nuug.no/grupper/robot
">prosjektwiki hos NUUG</a></li>
593 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>.
597 <div class="padding
"></div>
601 <a href="http://people.skolelinux.org/pere/blog/Robot__reis_deg___.html
">Robot, reis deg...</a>
609 <p>I dag fikk jeg endelig tittet litt på mine nyinnkjøpte roboter, og
610 har brukt noen timer til å google etter interessante referanser og
611 aktuell kildekode for bruk på Linux. Det mest lovende så langt er
612 <a href="http://ispykee.toyz.org/
">ispykee</a>, som har en
613 BSD-lisensiert linux-daemon som står som mellomledd mellom roboter på
614 lokalnettet og en sentral tjeneste der en iPhone kan koble seg opp for
615 å fjernstyre roboten. Linux-daemonen implementerer deler av
616 protokollen som roboten forstår. Etter å ha knotet litt med å oppnå
617 kontakt med roboten (den oppretter et eget ad-hoc wifi-nett, så jeg
618 måtte gå av mitt vanlige nett for å få kontakt), og kommet frem til at
619 den lytter på IP-port 9000 og 9001, gikk jeg i gang med å finne ut
620 hvordan jeg kunne snakke med roboten vha. disse portene. Robotbiten
621 av protokollen er publisert av produsenten med GPL-lisens, slik at det
622 er mulig å se hvordan protokollen fungerer. Det finnes en java-klient
623 for Android som så ganske snasen ut, men fant ingen kildekode for
624 denne. Derimot hadde iphone-løsningen kildekode, så jeg tok
625 utgangspunkt i den.</p>
627 <p>Daemonen ville i utgangspunktet forsøke å kontakte den sentrale
628 tjenesten som iphone-programmet kobler seg til. Jeg skrev dette om
629 til i stedet å sette opp en nettverkstjeneste på min lokale maskin,
630 som jeg kan koble meg opp til med telnet og gi kommandoer til roboten
631 (act, forward, right, left, etc). Det involverte i praksis å bytte ut
632 socket()/connect() med socket()/bind()/listen()/accept() for å gjøre
633 klienten om til en tjener.</p>
635 <p>Mens jeg har forsøkt å få roboten til å bevege seg har min samboer
636 skrudd sammen resten av roboten for å få montert kamera og plastpynten
637 (armer, plastfiber for lys). Nå er det hele montert, og roboten er
638 klar til bruk. Må få flyttet den over til mitt vanlige trådløsnett
639 før det blir praktisk, men de bitene av protokollen er ikke
640 implementert i ispykee-daemonen, så der må jeg enten få tak i en mac
641 eller en windows-maskin, eller implementere det selv.</p>
643 <p>Vi var tre som kjøpte slike roboter, og vi har blitt enige om å
644 samle notater og referanser på <a
645 href="http://wiki.nuug.no/grupper/robot/
">NUUGs wiki</a>. Ta en titt
646 der hvis du er nysgjerrig.</p>
653 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>.
657 <div class="padding
"></div>
659 <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>
671 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
673 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
675 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
677 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
679 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
681 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
683 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
685 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (7)</a></li>
692 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
694 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
696 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
698 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
700 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
702 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
704 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
706 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
708 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
710 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
712 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
714 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
721 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
723 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
734 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (11)</a></li>
736 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
738 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
740 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (10)</a></li>
742 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (35)</a></li>
744 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (40)</a></li>
746 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (56)</a></li>
748 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (1)</a></li>
750 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (8)</a></li>
752 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (3)</a></li>
754 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (8)</a></li>
756 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (2)</a></li>
758 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
760 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (5)</a></li>
762 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (73)</a></li>
764 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (95)</a></li>
766 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (14)</a></li>
768 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (15)</a></li>
770 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (10)</a></li>
772 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (2)</a></li>
774 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
776 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (11)</a></li>
778 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (3)</a></li>
780 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (13)</a></li>
782 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (1)</a></li>
784 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (10)</a></li>
786 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (1)</a></li>
788 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (7)</a></li>