Tag Archives: OpenSolaris

The hunt for /etc/.pwd.lock

After upgrade Debian to kernel 3.0.0, I saw a hidden file called .pwd.lock in /etc which I didn’t noticed before. Checking other machines gave the same result as shown below, but both without a matching Debian-package or manpage.

$ ls -l /etc/.pwd.lock
-rw-------. 1 root root 0 feb 27  2009 /etc/.pwd.lock
$ ls -l --time=atime /etc/.pwd.lock
-rw-------. 1 root root 0 apr 10  2010 /etc/.pwd.lock
$ ls -l --time=ctime /etc/.pwd.lock
-rw-------. 1 root root 0 aug 14  2010 /etc/.pwd.lock

As time match at least the installation date of the machine and exists on other machines it appears to be a valid file, but with what purpose? After reading the Linux Programmer’s Manual two functions called lckpwdf and ulckpwdf where candidates for using this file. Checking the source code at Sourceware confirmed that both lckpwdf and ulckpwdf are using the file. And reading the manpage about these functions also confirms it’s purpose, a lock file the commands like passwd.

The lckpwdf() function is intended to protect against multiple simulta‚Äź
neous accesses of the shadow password database. It tries to acquire a
lock, and returns 0 on success, or -1 on failure (lock not obtained
within 15 seconds). The ulckpwdf() function releases the lock again.
Note that there is no protection against direct access of the shadow
password file. Only programs that use lckpwdf() will notice the lock.
 
These were the functions that formed the original shadow API. They are
widely available.

This is another example why open source matters. You can get the evidence when you want and/or need instead of trusting some manual to explain things. Verification will become more important as systems get more complex. It was/is also a big advantage when OpenSolaris was created with it’s web accessible source repository.

Is CDDL genoeg of niet?

Op de NLOSUG-mailinglist is een discussie ontstaan over het voortbestaan van OpenSolaris nu Oracle eigenaar is geworden van Sun Microsystems. Het meest interessante punt is dat mensen denken dat een licentie automatisch hun investering kan beschermen, maar is dat wel zo? Geeft CDDL die garantie zoals GPL bijvoorbeeld?

3.1. Availability of Source Code.
Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.

Dit lijkt minder strikt dan de voorzieningen in GPL, maar juristen kunnen dit mogelijk beter beantwoorden. Het meest interessante wat kan gebeuren als Oracle besluit als 100% eigenaar van de code om de licentie te veranderen en OpenSolaris laat voor wat het is. Dit kan misschien weleens de belangrijkste gebeurtenis in de FOSS-wereld zijn van de afgelopen 10 jaar. Zoals ook besproken is bij DebConf 6 bijvoorbeeld.

Het laat misschien ook zien hoe open sommige bedrijven echt (kunnen) zijn en dat het altijd verstandig is om een kopie te hebben de broncode. Wat het ook laat zien hoe lastig het is om voor een groot bedrijf om te veranderen van bedrijfs- en verdienmodel waarbij je iedereen tevreden wilt houden. Zeker in een wereld die heel snel aan het veranderen is waarbij het model gaat van voornamelijk aanschafkosten naar een subscribermodel, zodat de kosten alleen daar zijn waar je ze ook verbruikt.

ZFS vs Btrfs

Solaris 10 ZFS EssentialsIn 2006 integreerde Sun Microsystems een nieuw filesystem onder de naam ZFS in Solaris 10 en vele waren skeptisch. Ook was er voldoende commentaar vanwege de gekozen licentie en het commentaar is er nog steeds nu ZFS ook ontbreekt in Snow Leopard van Apple. Met de overname door Oracle wordt het er mogelijk niet beter op, maar toch staat er een boek voor ZFS op de roadmap.

In dezelfde periode is Oracle begonnen aan Btrfs voor Linux welke in de kernel is op genomen sinds Linux 2.6.29. Nu begint ZFS redelijk volwassen te worden en het heeft wat jaren geduurt, maar hoe staat Btrfs ervoor. Een virtuele testmachine met een paar lege disken en de laatste versie van Debian Testing zou dus voldoende moeten zijn. Helaas is dit nog geen succesvolle combinatie en geeft aan dat Btrfs misschien nog niet helemaal volwassen is.

Als we naar de techniek en implementatie kijken dan zijn er nog meer verschillen tussen ZFS en Btrfs. Waar ZFS beschikt over RAID 0, 1, 10 maar ook over verschillende RAIDZ generaties en combinaties hiervan waarmee RAID 5 en 6 worden geimplementeerd. Dit terwijl Btrfs voorlopig alleen beschikt over RAID0, RAID1 en RAID10 zonder enige uitbreidingen hierop. Ook blijft Btrfs vertrouwen op bv andere RAID- en LVM-oplossingen, maar ook op de hardware die altijd correct is. Een mooi punt van oa ZFS is dat het de hardware meeneemt in de beslissingen waar het snelst te lezen is bv.

Op bijna alle punten lijkt ZFS volwassen te zijn en behoeft Btrfs nog vele jaren ontwikkeling terwijl ZFS al in 2006 productierijp was. En hoewel ZFS strict in Solaris verweven is en een niet GPL-licentie heeft is het zeer zeker de moeite waard om te gebruiken. Het is misschien ook de vraag of met de komt van Solaris 11 en de uitkomst van de Sun-Oracle merger het nog wel interessant is naar Btrfs te kijken. Zeker als je kijkt naar hoe volwassen OpenSolaris nu is tov wat Linux niet biedt. Alleen een licentie is vaak niet voldoende of het moet de moeite waard zijn om te wachten, maar live upgrade met ZFS is tegenwoordig echt de moeite waard en een verademing.

Bug ID 6843138: can not boot off of a 2.2TB and zfs root

Bij het upgraden van OpenSolaris naar build 125 werd mijn aandacht getrokken door meldingen die ik kon negeren zo bleek later. Maar mijn aandacht werd getrokken door bug ID 6843138 en met de komst van 2.5TB disken wordt deze bug werkelijkheid als GRUB wordt gebruikt.

Installed snv_144 on an about 2.2 TB disk, using zfs for root.
First reboot after install, I can boot from the disk. However
issuing a reboot while booted from the hard disk, I get the grub prompt.
doing a findroot (pool_rpool,0,a) results in

zio_read_data failed
Error 15: File not found.

I saw the problem originally with opensol 0906 111b.

One problem here is that grub has total_sectors as unsigned long instead
of unsigned long long. So if a file we need for booting falls after
the chopped off total sectors (ulong) we won’t even attempt to read
the file in rawread().
Even when I modify total_sectors to be unsigned long long and
not to chop it in get_diskinfo() I can not fully boot. Problem is
that bios is not reporting correct capacity. Based on int 13 fn 48
data, it is reporting 0x199fb000 instead of 0x1199fb000.

Removing some checks, I can boot. details in a bit.

De vraag is natuurlijk of je nu een bootdisk van 2.5TB wilt hebben, maar denkende aan een opmerking over 640kB ken ik het antwoord wel.