1 <?xml version=
"1.0" encoding=
"utf-8"?>
2 <rss version='
2.0' xmlns:lj='http://www.livejournal.org/rss/lj/
1.0/' xmlns:
atom=
"http://www.w3.org/2005/Atom">
4 <title>Petter Reinholdtsen
</title>
5 <description></description>
6 <link>http://people.skolelinux.org/pere/blog/
</link>
7 <atom:link href=
"http://people.skolelinux.org/pere/blog/index.rss" rel=
"self" type=
"application/rss+xml" />
10 <title>Skolelinux i Osloskolen
</title>
11 <link>http://people.skolelinux.org/pere/blog/Skolelinux_i_Osloskolen.html
</link>
12 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Skolelinux_i_Osloskolen.html
</guid>
13 <pubDate>Thu,
26 Aug
2010 22:
25:
00 +
0200</pubDate>
15 <p
>Denne høsten skal endelig alle Osloskolene få mulighet til å bruke
16 <a href=
"http://www.skolelinux.org/
">Skolelinux
</a
>. Ny IT-løsning
17 har vært rullet ut i noen måneder nå, og så vidt jeg fikk vite før
18 sommeren skulle alle skoler ha nytt opplegg på plass før oppstart nå i
19 høst. På alle skolene skal en kunne velge ved installasjon om en skal
20 ha Windows eller Skolelinux på maskinene, og en kan i tillegg
21 PXE-boote maskinene over nett som tynne klienter eller diskløse
22 arbeidsstasjoner. Jeg er spent på hvor mange skoler som velger å ta i
23 bruk Skolelinux, og gleder meg til å se hvordan dette utvikler seg.
25 <a href=
"http://www.logica.no/
">Logica
</a
> med
26 <a href=
"http://www.slxdrift.no/
">Skolelinux Drift AS
</a
> som
27 underleverandør, og jeg har vært involvert i utviklingen av løsningen
28 via Skolelinux Drift AS siden prosjektet starter. Jeg synes det er
29 fantastisk at Skolelinux er kommet så langt siden vi startet i
2001 at
30 alle elevene i Osloskolene nå skal få mulighet til å bruke
31 løsningen. Jeg håper de vil sette pris på alle de
32 <a href=
"http://www.skolelinux.no/linux-signpost/
">fantastiske
33 brukerprogrammene
</a
> som er tilgjengelig i Skolelinux.
</p
>
38 <title>Broken umask handling with sshfs
</title>
39 <link>http://people.skolelinux.org/pere/blog/Broken_umask_handling_with_sshfs.html
</link>
40 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Broken_umask_handling_with_sshfs.html
</guid>
41 <pubDate>Thu,
26 Aug
2010 13:
30:
00 +
0200</pubDate>
43 <p
>My file system sematics program
44 <a href=
"http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">presented
45 a few days ago
</a
> is very useful to verify that a file system can
46 work as a unix home directory,and today I had to extend it a bit. I
'm
47 looking into alternatives for home directory access here at the
48 University of Oslo, and one of the options is sshfs. My friend
49 Finn-Arne mentioned a while back that they had used sshfs with Debian
50 Edu, but stopped because of problems. I asked today what the problems
51 where, and he mentioned that sshfs failed to handle umask properly.
52 Trying to detect the problem I wrote this addition to my fs testing
56 mode_t touch_get_mode(const char *name, mode_t mode) {
58 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
62 if (-
1 != fstat(fd,
&statbuf)) {
63 retval = statbuf.st_mode
& 0x1ff;
70 /* Try to detect problem discovered using sshfs */
71 int test_umask(void) {
72 printf(
"info: testing umask effect on file creation\n
");
74 mode_t orig_umask = umask(
000);
76 if (
0666 != (newmode = touch_get_mode(
"foobar
",
0666))) {
77 printf(
" error: Wrong file mode %o when creating using mode
666 and umask
000\n
",
81 if (
0660 != (newmode = touch_get_mode(
"foobar
",
0666))) {
82 printf(
" error: Wrong file mode %o when creating using mode
666 and umask
007\n
",
90 int main(int argc, char **argv) {
97 <p
>Sure enough. On NFS to a netapp, I get this result:
</p
>
100 Testing POSIX/Unix sematics on file system
101 info: testing symlink creation
102 info: testing subdirectory creation
103 info: testing fcntl locking
104 Read-locking
1 byte from
1073741824
105 Read-locking
510 byte from
1073741826
106 Unlocking
1 byte from
1073741824
107 Write-locking
1 byte from
1073741824
108 Write-locking
510 byte from
1073741826
109 Unlocking
2 byte from
1073741824
110 info: testing umask effect on file creation
113 <p
>When mounting the same directory using sshfs, I get this
117 Testing POSIX/Unix sematics on file system
118 info: testing symlink creation
119 info: testing subdirectory creation
120 info: testing fcntl locking
121 Read-locking
1 byte from
1073741824
122 Read-locking
510 byte from
1073741826
123 Unlocking
1 byte from
1073741824
124 Write-locking
1 byte from
1073741824
125 Write-locking
510 byte from
1073741826
126 Unlocking
2 byte from
1073741824
127 info: testing umask effect on file creation
128 error: Wrong file mode
644 when creating using mode
666 and umask
000
129 error: Wrong file mode
640 when creating using mode
666 and umask
007
132 <p
>So, I can conclude that sshfs is better than smb to a Netapp or a
133 Windows server, but not good enough to be used as a home
136 <p
>Update
2010-
08-
26: Reported the issue in
137 <a href=
"http://bugs.debian.org/
594498">BTS report #
594498</a
></p
>
139 <p
>Update
2010-
08-
27: Michael Gebetsroither report that he found the
140 script so useful that he created a GIT repository and stored it in
141 <a href=
"http://github.com/gebi/fs-test
">http://github.com/gebi/fs-test
</a
>.
</p
>
146 <title>Elektronisk stemmegiving er ikke til å stole på - heller ikke i Norge
</title>
147 <link>http://people.skolelinux.org/pere/blog/Elektronisk_stemmegiving_er_ikke_til____stole_p_____heller_ikke_i_Norge.html
</link>
148 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Elektronisk_stemmegiving_er_ikke_til____stole_p_____heller_ikke_i_Norge.html
</guid>
149 <pubDate>Mon,
23 Aug
2010 19:
30:
00 +
0200</pubDate>
151 <p
>I Norge pågår en prosess for å
152 <a href=
"http://www.e-valg.dep.no/
">innføre elektronisk
153 stemmegiving
</a
> ved kommune- og stortingsvalg. Dette skal
154 introduseres i
2011. Det er all grunn til å tro at valg i Norge ikke
155 vil være til å stole på hvis dette blir gjennomført. Da det hele var
156 oppe til høring i
2006 forfattet jeg
157 <a href=
"http://www.nuug.no/dokumenter/valg-horing-
2006-
09.pdf
">en
158 høringsuttalelse fra NUUG
</a
> (og EFN som hengte seg på) som skisserte
159 hvilke punkter som må oppfylles for at en skal kunne stole på et valg,
160 og elektronisk stemmegiving mangler flere av disse. Elektronisk
161 stemmegiving er for alle praktiske formål å putte ens stemme i en sort
162 boks under andres kontroll, og satse på at de som har kontroll med
163 boksen er til å stole på - uten at en har mulighet til å verifisere
164 dette selv. Det er ikke slik en gjennomfører demokratiske valg.
</p
>
166 <p
>Da problemet er fundamentalt med hvordan elektronisk stemmegiving
167 må fungere for at også ikke-krypografer skal kunne delta, har det vært
168 mange rapporter om hvordan elektronisk stemmegiving har sviktet i land
170 <a href=
"http://wiki.nuug.no/uttalelser/
2006-elektronisk-stemmegiving
">liten
171 samling referanser
</a
> finnes på NUUGs wiki. Den siste er fra India,
172 der valgkomisjonen har valgt
173 <a href=
"http://www.freedom-to-tinker.com/blog/jhalderm/electronic-voting-researcher-arrested-over-anonymous-source
">å
174 pusse politiet på en forsker
</a
> som har dokumentert svakheter i
175 valgsystemet.
</p
>
177 <p
>Her i Norge har en valgt en annen tilnærming, der en forsøker seg
178 med teknobabbel for å få befolkningen til å tro at dette skal bli
179 sikkert. Husk, elektronisk stemmegiving underminerer de demokratiske
180 valgene i Norge, og bør ikke innføres.
</p
>
182 <p
>Den offentlige diskusjonen blir litt vanskelig av at media har
183 valgt å kalle dette
"evalg
", som kan sies å både gjelde elektronisk
184 opptelling av valget som Norge har gjort siden
60-tallet og som er en
185 svært god ide, og elektronisk opptelling som er en svært dårlig ide.
186 Diskusjonen gir ikke mening hvis en skal diskutere om en er for eller
187 mot
"evalg
", og jeg forsøker derfor å være klar på at jeg snakker om
188 elektronisk stemmegiving og unngå begrepet
"evalg
".
</p
>
193 <title>Robot, reis deg...
</title>
194 <link>http://people.skolelinux.org/pere/blog/Robot__reis_deg___.html
</link>
195 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Robot__reis_deg___.html
</guid>
196 <pubDate>Sat,
21 Aug
2010 22:
10:
00 +
0200</pubDate>
198 <p
>I dag fikk jeg endelig tittet litt på mine nyinnkjøpte roboter, og
199 har brukt noen timer til å google etter interessante referanser og
200 aktuell kildekode for bruk på Linux. Det mest lovende så langt er
201 <a href=
"http://ispykee.toyz.org/
">ispykee
</a
>, som har en
202 BSD-lisensiert linux-daemon som står som mellomledd mellom roboter på
203 lokalnettet og en sentral tjeneste der en iPhone kan koble seg opp for
204 å fjernstyre roboten. Linux-daemonen implementerer deler av
205 protokollen som roboten forstår. Etter å ha knotet litt med å oppnå
206 kontakt med roboten (den oppretter et eget ad-hoc wifi-nett, så jeg
207 måtte gå av mitt vanlige nett for å få kontakt), og kommet frem til at
208 den lytter på IP-port
9000 og
9001, gikk jeg i gang med å finne ut
209 hvordan jeg kunne snakke med roboten vha. disse portene. Robotbiten
210 av protokollen er publisert av produsenten med GPL-lisens, slik at det
211 er mulig å se hvordan protokollen fungerer. Det finnes en java-klient
212 for Android som så ganske snasen ut, men fant ingen kildekode for
213 denne. Derimot hadde iphone-løsningen kildekode, så jeg tok
214 utgangspunkt i den.
</p
>
216 <p
>Daemonen ville i utgangspunktet forsøke å kontakte den sentrale
217 tjenesten som iphone-programmet kobler seg til. Jeg skrev dette om
218 til i stedet å sette opp en nettverkstjeneste på min lokale maskin,
219 som jeg kan koble meg opp til med telnet og gi kommandoer til roboten
220 (act, forward, right, left, etc). Det involverte i praksis å bytte ut
221 socket()/connect() med socket()/bind()/listen()/accept() for å gjøre
222 klienten om til en tjener.
</p
>
224 <p
>Mens jeg har forsøkt å få roboten til å bevege seg har min samboer
225 skrudd sammen resten av roboten for å få montert kamera og plastpynten
226 (armer, plastfiber for lys). Nå er det hele montert, og roboten er
227 klar til bruk. Må få flyttet den over til mitt vanlige trådløsnett
228 før det blir praktisk, men de bitene av protokollen er ikke
229 implementert i ispykee-daemonen, så der må jeg enten få tak i en mac
230 eller en windows-maskin, eller implementere det selv.
</p
>
232 <p
>Vi var tre som kjøpte slike roboter, og vi har blitt enige om å
233 samle notater og referanser på
<a
234 href=
"http://wiki.nuug.no/grupper/robot/
">NUUGs wiki
</a
>. Ta en titt
235 der hvis du er nysgjerrig.
</p
>
240 <title>2 Spykee-roboter i hus, nå skal det lekes
</title>
241 <link>http://people.skolelinux.org/pere/blog/
2_Spykee_roboter_i_hus__n___skal_det_lekes.html
</link>
242 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/
2_Spykee_roboter_i_hus__n___skal_det_lekes.html
</guid>
243 <pubDate>Wed,
18 Aug
2010 13:
30:
00 +
0200</pubDate>
245 <p
>Jeg kjøpte nettopp to
246 <a href=
"http://www.spykee-robot.com/
">Spykee
</a
>-roboter, for test og
247 leking. Kjøpte to da det var så billige, og gir meg mulighet til å
248 eksperimentere uten å være veldig redd for å ødelegge alt ved å bytte
249 ut firmware og slikt. Oppdaget at lekebutikken på Bryn senter hadde
250 en liten stabel på lager som de ikke hadde klart å selge ut etter
251 fjorårets juleinnkjøp, og var villig til å selge for en femtedel av
252 vanlig pris. Jeg, Ronny og Jarle har skaffet oss restbeholdningen, og
253 det blir morsomt å se hva vi får ut av dette.
</p
>
255 <p
>Roboten har belter styrt av to motorer, kamera, høytaler, mikrofon
256 og wifi-tilkobling. Det hele styrt av en GPL-lisensiert databoks som
257 jeg mistenker kjører linux. Firmware-kildekoden ble visst publisert i
258 mai. Eneste utfordringen er at kontroller-programvaren kun finnes til
259 Windows, men det må en kunne jobbe seg rundt når vi har kildekoden til
260 firmwaren. :)
</p
>
263 <li
><a href=
"http://en.wikipedia.org/wiki/Spykee
">Wikipedia-oppføring
</a
></li
>
264 <li
><a href=http://www.spykeeworld.com/spykee/US/freeSoftware.html
">Nedlasting av firmware-kilden
</a
></li
>
265 <li
><a href=
"http://wiki.nuug.no/grupper/robot
">prosjektwiki hos NUUG
</a
></li
>
271 <title>Rob Weir: How to Crush Dissent
</title>
272 <link>http://people.skolelinux.org/pere/blog/Rob_Weir__How_to_Crush_Dissent.html
</link>
273 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Rob_Weir__How_to_Crush_Dissent.html
</guid>
274 <pubDate>Sun,
15 Aug
2010 22:
20:
00 +
0200</pubDate>
276 <p
>I found the notes from Rob Weir on
277 <a href=
"http://feedproxy.google.com/~r/robweir/antic-atom/~
3/VGb23-kta8c/how-to-crush-dissent.html
">how
278 to crush dissent
</a
> matching my own thoughts on the matter quite
279 well. Highly recommended for those wondering which road our society
280 should go down. In my view we have been heading the wrong way for a
286 <title>No hardcoded config on Debian Edu clients
</title>
287 <link>http://people.skolelinux.org/pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html
</link>
288 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/No_hardcoded_config_on_Debian_Edu_clients.html
</guid>
289 <pubDate>Mon,
9 Aug
2010 20:
15:
00 +
0200</pubDate>
291 <p
>As reported earlier, the last few days I have looked at how Debian
292 Edu clients are configured, and tried to get rid of all hardcoded
293 configuration settings on the clients. I believe the work to be
294 mostly done, and the clients seem to work just fine with dynamically
295 generated configuration.
</p
>
297 <p
>What is the point, you might ask? The point is to allow a Debian
298 Edu desktop to integrate into an existing network infrastructure
299 without any manual configuration.
</p
>
301 <p
>This is what happens when installing a Debian Edu client here at
302 the University of Oslo using PXE. With the PXE installation, I am
303 asked for language (Norwegian Bokmål), locality (Norway) and keyboard
304 layout (no-latin1), Debian Edu profile (Roaming Workstation), if I
305 accept to reformat the hard drive (yes), if I want to submit info to
306 popcon.debian.org (no) and root password (secret). After answering
307 these questions, the installer goes ahead and does its thing, and
308 after around
50 minutes it is done. I press enter to finish the
309 installation, and the machine reboots into KDE. When the machine is
310 ready and kdm asks for login information, I enter my university
311 username and password, am told by kdm that a local home directory has
312 been created and that I must log in again, and finally log in with the
313 same username and password to the KDE
4.4 desktop. At no point during
314 this process did it ask for university specific settings, and all the
315 required configuration was dynamically detected using information
316 fetched via DHCP and DNS. The roaming workstation is now ready for
319 <p
>How was this done, you might wonder? First of all, here is the
320 list of things that need to be configured on the client to get it
321 working properly out of the box:
</p
>
324 <li
>IP address/netmask and DNS server.
</li
>
325 <li
>Web proxy URL.
</li
>
326 <li
>LDAP server for NSS directory information (user, group, etc).
</li
>
327 <li
>Kerberos server for PAM password checking.
</li
>
328 <li
>SMB mount point to access the network home directory. (*)
</li
>
329 <li
>Central syslog server to send syslog messages to. (*)
</li
>
330 <li
>Sitesummary collector URL to submit info to central server. (*)
</li
>
333 <p
>(Hm, did I forget anything? Let me knew if I did.)
</p
>
335 <p
>The points marked (*) are not required to be able to use the
336 machine, but needed to provide central storage and allowing system
337 administrators to track their machines. Since yesterday, everything
338 but the sitesummary collector URL is dynamically discovered at boot
339 and installation time in the svn version of Debian Edu.
</p
>
341 <p
>The IP and DNS setup is fetched during boot using DHCP as usual.
342 When a DHCP update arrives, the proxy setup is updated by looking for
343 http://wpat/wpad.dat and using the content of this WPAD file to
344 configure the http and ftp proxy in /etc/environment and
345 /etc/apt/apt.conf. I decided to update the proxy setup using a DHCP
346 hook to ensure that the client stops using the Debian Edu proxy when
347 it is moved outside the Debian Edu network, and instead uses any local
348 proxy present on the new network when it moves around.
</p
>
350 <p
>The DNS names of the LDAP, Kerberos and syslog server and related
351 configuration are generated using DNS information at boot. First the
352 installer looks for a host named ldap in the current DNS domain. If
353 not found, it looks for _ldap._tcp SRV records in DNS instead. If an
354 LDAP server is found, its root DSE entry is requested and the
355 attributes namingContexts and defaultNamingContext are used to
356 determine which LDAP base to use for NSS. If there are several
357 namingContexts attibutes and the defaultNamingContext is present, that
358 LDAP subtree is used as the base. If defaultNamingContext is missing,
359 the subtrees listed as namingContexts are searched in sequence for any
360 object with class posixAccount or posixGroup, and the first one with
361 such an object is used as the LDAP base. For Kerberos, a similar
362 search is done by first looking for a host named kerberos, and then
363 for the _kerberos._tcp SRV record. I
've been unable to find a way to
364 look up the Kerberos realm, so for this the upper case string of the
365 current DNS domain is used.
</p
>
367 <p
>For the syslog server, the hosts syslog and loghost are searched
368 for, and the _syslog._udp SRV record is consulted if no such host is
369 found. This algorithm works for both Debian Edu and the University of
370 Oslo. A similar strategy would work for locating the sitesummary
371 server, but have not been implemented yet. I decided to fetch and
372 save these settings during installation, to make sure moving to a
373 different network does not change the set of users being allowed to
374 log in nor the passwords required to log in. Usernames and passwords
375 will be cached by sssd when the user logs in on the Debian Edu
376 network, and will not change as the laptop move around. For a
377 non-roaming machine, there is no caching, but given that it is
378 supposed to stay in place it should not matter much. Perhaps we
379 should switch those to use sssd too?
</p
>
381 <p
>The user
's SMB mount point for the network home directory is
382 located when the user logs in for the first time. The LDAP server is
383 consulted to look for the user
's LDAP object and the sambaHomePath
384 attribute is used if found. If it isn
't found, the home directory
385 path fetched from NSS is used instead. Assuming the path is of the
386 form /site/server/directory/username, the second part is looked up in
387 DNS and used to generate a SMB URL of the form
388 smb://server.domain/username. This algorithm works for both Debian
389 edu and the University of Oslo. Perhaps there are better attributes
390 to use or a better algorithm that works for more sites, but this will
391 do for now. :)
</p
>
393 <p
>This work should make it easier to integrate the Debian Edu clients
394 into any LDAP/Kerberos infrastructure, and make the current setup even
395 more flexible than before. I suspect it will also work for thin
396 client servers, allowing one to easily set up LTSP and hook it into a
397 existing network infrastructure, but I have not had time to test this
400 <p
>If you want to help out with implementing these things for Debian
401 Edu, please contact us on debian-edu@lists.debian.org.
</p
>
403 <p
>Update
2010-
08-
09: Simon Farnsworth gave me a heads-up on how to
404 detect Kerberos realm from DNS, by looking for _kerberos TXT entries
405 before falling back to the upper case DNS domain name. Will have to
406 implement it for Debian Edu. :)
</p
>
411 <title>Testing if a file system can be used for home directories...
</title>
412 <link>http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
</link>
413 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
</guid>
414 <pubDate>Sun,
8 Aug
2010 21:
20:
00 +
0200</pubDate>
416 <p
>A few years ago, I was involved in a project planning to use
417 Windows file servers as home directory servers for Debian
418 Edu/Skolelinux machines. This was thought to be no problem, as the
419 access would be through the SMB network file system protocol, and we
420 knew other sites used SMB with unix and samba as the file server to
421 mount home directories without any problems. But, after months of
422 struggling, we had to conclude that our goal was impossible.
</p
>
424 <p
>The reason is simply that while SMB can be used for home
425 directories when the file server is Samba running on Unix, this only
426 work because of Samba have some extensions and the fact that the
427 underlying file system is a unix file system. When using a Windows
428 file server, the underlying file system do not have POSIX semantics,
429 and several programs will fail if the users home directory where they
430 want to store their configuration lack POSIX semantics.
</p
>
432 <p
>As part of this work, I wrote a small C program I want to share
433 with you all, to replicate a few of the problematic applications (like
434 OpenOffice.org and GCompris) and see if the file system was working as
435 it should. If you find yourself in spooky file system land, it might
436 help you find your way out again. This is the fs-test.c source:
</p
>
440 * Some tests to check the file system sematics. Used to verify that
441 * CIFS from a windows server do not work properly as a linux home
443 * License: GPL v2 or later
445 * needs libsqlite3-dev and build-essential installed
446 * compile with: gcc -Wall -lsqlite3 -DTEST_SQLITE fs-test.c -o fs-test
449 #define _FILE_OFFSET_BITS
64
450 #define _LARGEFILE_SOURCE
1
451 #define _LARGEFILE64_SOURCE
1
453 #define _GNU_SOURCE /* for asprintf() */
455 #include
&lt;errno.h
>
456 #include
&lt;fcntl.h
>
457 #include
&lt;stdio.h
>
458 #include
&lt;string.h
>
459 #include
&lt;stdlib.h
>
460 #include
&lt;sys/file.h
>
461 #include
&lt;sys/stat.h
>
462 #include
&lt;sys/types.h
>
463 #include
&lt;unistd.h
>
467 * Test sqlite open, as done by gcompris require the libsqlite3-dev
468 * package and linking with -lsqlite3. A more low level test is
470 * See also
&lt;URL: http://www.sqlite.org./faq.html#q5
>.
472 #include
&lt;sqlite3.h
>
473 #define CREATE_TABLE_USERS \
474 "CREATE TABLE users (user_id INT UNIQUE, login TEXT, lastname TEXT, firstname TEXT, birthdate TEXT, class_id INT );
"
475 int test_sqlite_open(void) {
477 char *name =
"testsqlite.db
";
480 int rc = sqlite3_open(name,
&db);
482 printf(
"error: sqlite open of %s failed: %s\n
", name, sqlite3_errmsg(db));
488 rc = sqlite3_exec(db,CREATE_TABLE_USERS, NULL,
0,
&zErrMsg);
489 if( rc != SQLITE_OK ){
490 printf(
"error: sqlite table create failed: %s\n
", zErrMsg);
494 printf(
"info: sqlite worked\n
");
498 #endif /* TEST_SQLITE */
501 * Demonstrate locking issue found in gcompris using sqlite3. This
502 * work with ext3, but not with cifs server on Windows
2003. This is
503 * done in the sqlite3 library.
505 *
&lt;URL:http://www.cygwin.com/ml/cygwin/
2001-
08/msg00854.html
> and the
506 * POSIX specification
507 *
&lt;URL:http://www.opengroup.org/onlinepubs/
009695399/functions/fcntl.html
>.
509 int test_gcompris_locking(void) {
511 char *name =
"testsqlite.db
";
513 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE,
0644);
514 printf(
"info: testing fcntl locking\n
");
516 fl.l_whence = SEEK_SET;
518 printf(
" Read-locking
1 byte from
1073741824");
519 fl.l_start =
1073741824;
522 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
524 printf(
" Read-locking
510 byte from
1073741826");
525 fl.l_start =
1073741826;
528 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
530 printf(
" Unlocking
1 byte from
1073741824");
531 fl.l_start =
1073741824;
534 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
536 printf(
" Write-locking
1 byte from
1073741824");
537 fl.l_start =
1073741824;
540 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
542 printf(
" Write-locking
510 byte from
1073741826");
543 fl.l_start =
1073741826;
545 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
547 printf(
" Unlocking
2 byte from
1073741824");
548 fl.l_start =
1073741824;
551 if (
0 != fcntl(fd, F_SETLK,
&fl) ) printf(
" - error!\n
"); else printf(
"\n
");
558 * Test if permissions of freshly created directories allow entries
559 * below them. This was a problem with OpenOffice.org and gcompris.
560 * Mounting with option
'sync
' seem to solve this problem while
561 * slowing down file operations.
563 int test_subdirectory_creation(void) {
565 char *path = strdup(
"test
");
568 printf(
"info: testing subdirectory creation\n
");
569 for (level =
0; level
&lt; LEVELS; level++) {
570 char *newpath = NULL;
571 if (-
1 == mkdir(path,
0777)) {
572 printf(
" error: Unable to create directory
'%s
': %s\n
",
573 path, strerror(errno));
576 asprintf(
&newpath,
"%s/%s
", path,
"test
");
584 * Test if symlinks can be created. This was a problem detected with
587 int test_symlinks(void) {
588 printf(
"info: testing symlink creation\n
");
589 unlink(
"symlink
");
590 if (-
1 == symlink(
"file
",
"symlink
"))
591 printf(
" error: Unable to create symlink\n
");
595 int main(int argc, char **argv) {
596 printf(
"Testing POSIX/Unix sematics on file system\n
");
598 test_subdirectory_creation();
601 #endif /* TEST_SQLITE */
602 test_gcompris_locking();
607 <p
>When everything is working, it should print something like
611 Testing POSIX/Unix sematics on file system
612 info: testing symlink creation
613 info: testing subdirectory creation
615 info: testing fcntl locking
616 Read-locking
1 byte from
1073741824
617 Read-locking
510 byte from
1073741826
618 Unlocking
1 byte from
1073741824
619 Write-locking
1 byte from
1073741824
620 Write-locking
510 byte from
1073741826
621 Unlocking
2 byte from
1073741824
624 <p
>I do not remember the exact details of the problems we saw, but one
625 of them was with locking, where if I remember correctly, POSIX allow a
626 read-only lock to be upgraded to a read-write lock without unlocking
627 the read-only lock (while Windows do not). Another was a bug in the
628 CIFS/SMB client implementation in the Linux kernel where directory
629 meta information would be wrong for a fraction of a second, making
630 OpenOffice.org fail to create its deep directory tree because it was
631 not allowed to create files in its freshly created directory.
</p
>
633 <p
>Anyway, here is a nice tool for your tool box, might you never need
636 <p
>Update
2010-
08-
27: Michael Gebetsroither report that he found the
637 script so useful that he created a GIT repository and stored it in
638 <a href=
"http://github.com/gebi/fs-test
">http://github.com/gebi/fs-test
</a
>.
</p
>
643 <title>Autodetecting Client setup for roaming workstations in Debian Edu
</title>
644 <link>http://people.skolelinux.org/pere/blog/Autodetecting_Client_setup_for_roaming_workstations_in_Debian_Edu.html
</link>
645 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Autodetecting_Client_setup_for_roaming_workstations_in_Debian_Edu.html
</guid>
646 <pubDate>Sat,
7 Aug
2010 14:
45:
00 +
0200</pubDate>
648 <p
>A few days ago, I
649 <a href=
"http://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html
">tried
650 to install
</a
> a Roaming workation profile from Debian Edu/Squeeze
651 while on the university network here at the University of Oslo, and
652 noticed how much had to change to get it operational using the
653 university infrastructure. It was fairly easy, but it occured to me
654 that Debian Edu would improve a lot if I could get the client to
655 connect without any changes at all, and thus let the client configure
656 itself during installation and first boot to use the infrastructure
657 around it. Now I am a huge step further along that road.
</p
>
659 <p
>With our current squeeze-test packages, I can select the roaming
660 workstation profile and get a working laptop connecting to the
661 university LDAP server for user and group and our active directory
662 servers for Kerberos authentication. All this without any
663 configuration at all during installation. My users home directory got
664 a bookmark in the KDE menu to mount it via SMB, with the correct URL.
665 In short, openldap and sssd is correctly configured. In addition to
666 this, the client look for http://wpad/wpad.dat to configure a web
667 proxy, and when it fail to find it no proxy settings are stored in
668 /etc/environment and /etc/apt/apt.conf. Iceweasel and KDE is
669 configured to look for the same wpad configuration and also do not use
670 a proxy when at the university network. If the machine is moved to a
671 network with such wpad setup, it would automatically use it when DHCP
672 gave it a IP address.
</p
>
674 <p
>The LDAP server is located using DNS, by first looking for the DNS
675 entry ldap.$domain. If this do not exist, it look for the
676 _ldap._tcp.$domain SRV records and use the first one as the LDAP
677 server. Next, it connects to the LDAP server and search all
678 namingContexts entries for posixAccount or posixGroup objects, and
679 pick the first one as the LDAP base. For Kerberos, a similar
680 algorithm is used to locate the LDAP server, and the realm is the
681 uppercase version of $domain.
</p
>
683 <p
>So, what is not working, you might ask. SMB mounting my home
684 directory do not work. No idea why, but suspected the incorrect
685 Kerberos settings in /etc/krb5.conf and /etc/samba/smb.conf might be
686 the cause. These are not properly configured during installation, and
687 had to be hand-edited to get the correct Kerberos realm and server,
688 but SMB mounting still do not work. :(
</p
>
690 <p
>With this automatic configuration in place, I expect a Debian Edu
691 roaming profile installation would be able to automatically detect and
692 connect to any site using LDAP and Kerberos for NSS directory and PAM
693 authentication. It should also work out of the box in a Active
694 Directory environment providing posixAccount and posixGroup objects
695 with UID and GID values.
</p
>
697 <p
>If you want to help out with implementing these things for Debian
698 Edu, please contact us on debian-edu@lists.debian.org.
</p
>
703 <title>Debian Edu roaming workstation - at the university of Oslo
</title>
704 <link>http://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html
</link>
705 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Debian_Edu_roaming_workstation___at_the_university_of_Oslo.html
</guid>
706 <pubDate>Tue,
3 Aug
2010 23:
30:
00 +
0200</pubDate>
708 <p
>The new roaming workstation profile in Debian Edu/Squeeze is fairly
709 similar to the laptop setup am I working on using Ubuntu for the
710 University of Oslo, and just for the heck of it, I tested today how
711 hard it would be to integrate that profile into the university
712 infrastructure. In this case, it is the university LDAP server,
713 Active Directory Kerberos server and SMB mounting from the Netapp file
716 <p
>I was pleasantly surprised that the only three files needed to be
717 changed (/etc/sssd/sssd.conf, /etc/ldap.conf and
718 /etc/mklocaluser.d/
20-debian-edu-config) and one file had to be added
719 (/usr/share/perl5/Debian/Edu_Local.pm), to get the client working.
720 Most of the changes were to get the client to use the university LDAP
721 for NSS and Kerberos server for PAM, but one was to change a hard
722 coded DNS domain name in the mklocaluser hook from .intern to
725 <p
>This testing was so encouraging, that I went ahead and adjusted the
726 Debian Edu scripts and setup in subversion to centralise the roaming
727 workstation setup a bit more and avoid the hardcoded DNS domain name,
728 so that when I test this tomorrow, I expect to get away with modifying
729 only /etc/sssd/sssd.conf and /etc/ldap.conf to get it to use the
730 university servers.
</p
>
732 <p
>My goal is to get the clients to have no hardcoded settings and
733 fetch all their initial setup during installation and first boot, to
734 allow them to be inserted also into environments where the default
735 setup in Debian Edu has been changed or as with the university, where
736 the environment is different but provides the protocols Debian Edu