Meine Sun Campus Ambassador Aktivitäten an der Martin-Luther-Universität Halle-Wittenberg Blog von Michael Rennecke

Freitag Okt 30, 2009

Jeder kennt bestimmt VirtualBox. Damit kann man virtuelle Gastsysteme booten, z.B. ein Windows XP. VirtualBox ist bei OpenSolaris im extra-Repository. Dabei handelt es sich um die nicht OpenSource-Version. Sie hat den Vorteil, dass man im virtuellen Gast auch USB-Geräte nutzen kann. Das benötigt man, wenn man einen Scanner hat, welcher nur mit Windows zusammen arbeitet.

Dieser USB-Support wollte bei mir gar nicht funktionen, weil VirtualBox nicht auf das USB-Subsystem zugreifen konnte. Das hat sich u.a. in den folgenen Fehlermeldungen geäußert:

  • VERR_ACCESS_DENIED
  • NS_ERROR_INVALID_ARG (0x80070057)
  • NS_ERROR_FAILURE

Man kann das ganze Quick&Dirty fixen und somit VirtualBox den Zugriff auf das USB-Subsystem zu erlauben.

  1. die letzten beiden Zeilen in der Datei /etc/logindevperm wie folgt ändern (wenn es nicht letzten sind, dann findet man sie schnell)
    /dev/vt/active    0666    /dev/usb/hid[0-9]+    # hid devices should have the same permission with conskbd and consms
    /dev/vt/active    0666    /dev/usb/[0-9a-f]+[.][0-9a-f]+/[0-9]+/* driver=scsa2usb,usb_mid,usbprn,ugen    #libusb/ugen devices
  2. Die Kernelmodule von VirtualBox enladen
    rennecke@walhalla ~ $ pfexec /opt/VirtualBox/vboxdrv.sh stopall
    VirtualBox USB kernel module not loaded.
    VirtualBox NetAdapter kernel module not loaded.
    VirtualBox NetFilter kernel module not loaded.
    VirtualBox Host kernel module unloaded.


    Das klappt mitunter nicht beim ersten mal. Den Befehl wiederholt man so lange, bis man die obige Ausgabe hat.
  3. Kernelmodule für VirtualBox laden
    rennecke@walhalla ~ $ pfexec /opt/VirtualBox/vboxdrv.sh startall
    VirtualBox Host kernel module loaded.
    VirtualBox NetFilter kernel module loaded.
    VirtualBox NetAdapter kernel module loaded.
    VirtualBox USB kernel module loaded.

Donnerstag Okt 29, 2009

Seit einigen Minuten steht Build 126 zum download bzw. zur Installation bereit. Viel Spaß damit.

Ich habe mal im grafischen Paketmanager herum gestöbert und nach ein paar Klicks gab es für alle Packete ein Update :-) Ich habe schon auf Build 126 gewartet und täglich auf der Konsole geschaut ob was neues im Repo drin ist.

Da ich zu faul war, zu warten bis mein update fertig war, habe ich es abgebrochen und heute früh weiter gemacht. Als das Update fertig war, dachte ich Mist Du musst neu booten. Normalerweise mache ich so etwas nicht, weil mir booten zu lange dauert (RAM, SCSI-Controller, IDE-Controller, ...) Ich habe dann einmal den Neu starten-Knopf probiert. Darauf hin wurde nur der neue Kernel gebootet. Ich war zuerst überrascht, aber dann erinnerte ich mich, an einen Vortrag von Jörg Möllenkamp. Dieser hat schon auf dieses Feature hingewiesen. Es sind auch die kleinen Dinge, wie dieses fastreboot, die Solaris groß machen.

Dienstag Okt 27, 2009

Ich hatte vor ein paar Tagen eine Begegnung der besonderen Art. Ich wollte skriptgesteuert Zonen erstellen und ich war am verzweifeln, da OpenSolaris (Build 125) einfach nicht die Dateisysteme erstellen wollte. Nach einer Weile habe ich die Zonen in mein Standart-Zonen-Verzeichnis gemacht und plötzlich ging es. Mein Fehler war, dass ich Dateien in dem Verzeichnis hatte, wo die Zonen herein sollten.

Ich weiß jetzt nicht, ob dieses "Problem" nur bei Build 125 besteht. Es ist aber zu empfehlen, dass man für Zonen eine leeres Verzeichnis (zfs-Dateisystem) benutzt, welches ausschließlich für Zonen ist.

Donnerstag Sep 10, 2009

Manchmal verliert bei den verschiedenen Distributionen von Solaris den Überblick. Ich möchte hier nur auf die von Sun eingehen. Inzwischen gibt es Solaris 10, Solaris Express Community Edition (SXCE), Open Solaris und die OpenSolaris-Developer Builds.

Solaris 10 ist das stabile Solaris von Sun. Es gibt Support und Patches und regelmäßig neue Versionen. Der größte Vorteil von Solaris 10, ist dass es sehr viel zertifizierte Software gibt. Also eignet sich Solaris 10 sehr gut für unternehmenskritsche Server/Bereiche. Das ganze hat auch einen Nachteil. In Solaris 10 sind nicht die neusten Features und es werden auch nicht alle Features nach Solaris 10 zurück portiert.

SXCE ist abgekündigt. Den letzten Build wird es im Oktober 2009 geben. Für SXCE gibt es keine Patches, Updates und Support, dafür alle 14 Tage einen neuen Build. Diesen kann man via LiveUpgrade installieren. Interessant ist diese Distribution, da sie (noch) auch UltraSparc IIi-Prozessoren läuft. Wenn man die neusten Features testen möchte oder ein altes Sparc-System als Spielwiese hat, dann ist man bei SXCE gut aufgehoben. Die Build haben eine gewisse Qualitätskontrolle hinter sich, es ist nicht sicher gestellt, dass jeder Build stabil läuft oder überhaupt funktioniert. Es handelt sich um eine Entwickler-Version.

OpenSolaris ist die neue Distribution von Sun. Mit OpenSolaris 2009.06 gibt es auch Support. Es werden auch Security-Patches kostenfrei bereit gestellt. In einem halbjährlichen Zyklus gibt es ein neues Release. Für Sparc würde ich OpenSolaris 2009.06 nur bedingt einsetzten, da der Installer noch etwas Überarbeitung bedarf. OpenSolaris bekommt mit einiger Zeitverzögerung alle Features, welche in der Entwicklerversion verfügbar sind. Wenn man OpenSolaris auf dem Server betreibt sollte man genauer nachdenken. Es ist stabil, aber man kann es nicht ohne weiteres mit einem Install-Server verteilen. Mit zertifizierter Software sieht es viel schlechter aus, als bei Solaris 10. Dafür kann man auf einen größeren Pool an freier Software zurückgreifen. Diese ist zum Teil im Repository verfügbar. Man kann OpenSolaris ohne bedenken auf dem Desktop/Laptop einsetzten. Auf x86-Servern kann man OpenSolaris einsetzten, wenn man nicht auf eine zertifizierte Umgebung angewiesen ist.

Die OpenSolaris Developer Builds sind ein eigenes Repository, auf dieses muss man wechseln, wenn man OpenSolaris installiert hat. Es gibt hier auch keine Patches. Dafür sind regeläßig neue Builds verfügbar. Es kommt vor, dass diese Builds fehlerhaft sind. Hier ist jeder gut aufgehoben, der die neusten Features testen möchte. Es kommt relativ selten vor, das ein Build nicht läuft. Über die Stabilität kann ich mich nicht beschweren. Man darf aber nicht vergessen es ist und bleibt eine Entwicklerversion. Man hat keine Garantie, dass es stabil läuft. Dafür kann man mit durch die Bootumgebungen immer einen alten Stand booten.

Sonntag Sep 06, 2009

⁞Manchmal möchte man wissen, was Open Solaris beim booten eigenlich macht, vielleicht weil es Probleme gibt oder man einfach nur neugierig ist. Bei x86 kann man das ganze als Kerneloption mit geben. Es gib:
  1. -v zeigt die Devices an
  2. -m verbose zeigt an welche Dienste starten (siehe smf)
Man kann die Kerneloptionen direkt beim booten mitgeben. Dazu muss man bei grub e drücken um den aktuellen Eintrag zu editieren. Alternativ kann man auch die /rpool/boot/grub/menu.lst anpassen:
title Open Solaris snv-122
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/snv-122
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS -v
module$ /platform/i86pc/$ISADIR/boot_archive

Samstag Sep 05, 2009

Manchmal ist erforderlich, dass man einer Zone den Zugriff auf ein Device gewährt. Ich habe z.B. einer Zone mein externes LTO-2 Bandlaufwerk gegeben. Dieses ist über SCSI mit dem Rechner verbunden. Da ich Strom sparen möchte und SCSI hotplugfähig ist, schalte ich das Bandlaufwerk nur ein wenn ich es benötige.

Damit man das Device unter Solaris in der global-Zone ansprechen kann, muss es wie folgt einbinden (mein Laufwerk ist an Controller c17 angeschlossen):

root@walhalla ~ $ cfgadm -c configure c17
root@walhalla ~ $ cfgadm -a c17
p_Id                          Type         Receptacle   Occupant     Condition
c17                            scsi-bus     connected    configured   unknown
c17::rmt/0                     tape         connected    configured   unknown

Wenn man in einer nonglobal-Zone ist geht dieses Verfahren nicht. Solaris sagt aber einen woran es liegt:

cfgadm: Configuration administration not supported: cfgadm can only be run from the global zone

Also muss man Devices, die eine nonglobal-Zone benötigt immer in der global-Zone einbinden bzw. tauschen. Ich vertrete die Auffassung, das man in einer nonglobal-Zone, so weit es möglich ist, keine Devices gibt. Das kann unter Umständen zu Probleme bei der Migration der Zonen führen.

Freitag Sep 04, 2009

Langsam macht mir Open Solaris noch mehr Spaß. Seit gestern Nacht gibt es Build 122. Ich hatte leider mit einen Stromausfall zu kämpfen und konnte ihn nicht ehr testen.

Beim ersten Updateversuch stürzte das pkg-Komando ab. Mit einer der recht typischen nichtssagenden Fehlermeldungen. Ich habe es erst einmal auf den Repository-Server geschoben und es etwas später wieder probiert und dann ging alles fast ohne Probleme. Die neu erstellte Bootumgebung konnte nicht abgemountet werden. Ich habe sicherheitshalber mit einem beadm unmount -f snv-122 nachgeholfen. Auch das Updaten der Zonen verlief ohne Probleme.

Auf meinen anderen Rechner gab es keine Probleme beim update auf Build 122.

Mittwoch Sep 02, 2009

Ich habe heute endlich mein Projekt Bacula in einer Zone zu ende gebracht. Bacula ist eine Backup-Software, die recht mächtig ist und noch viel schwieriger zu konfigurieren. Ich möchte darauf eingehen, wie ich Bacula installiert habe. Es soll nur ein grober Abriss sein.

Folgende Packte muss man in der Zone installieren: SUNWapch22, SUNWmysql51, SUNWgccruntime, SUNWmysql51lib, SUNWperl584usr, SUNWgd2, SUNWgawk. Ich habe in der backup-Zone das Netzwerk konfiguriert und das Device mein es LTO-2 Bandlaufwerk übergeben. Auf den sollen die Sicherungen gemacht werden.

root@walhalla ~ $  zonecfg -z backup
zonecfg:backup> add device
zonecfg:backup:device> set match=/dev/rmt/*
zonecfg:backup:device> end
zonecfg:backup> info device
device:
            match: /dev/rmt/*
zonecfg:zone1> commit
zonecfg:zone1> exit

Da ich backup-Zone schlank halten möchte, habe ich Bacula in der global-Zone übersetzt. Auf der Bacula-Seite findet man auch welche Packte zum übersetzen notwendig sind. Da Bacula sehr viele configure-Parameter hat, habe ich mir ein wrapper-Skript zum übersetzen geschrieben. Darin kommentiere ich das aus was ich nicht benötigte. Mein Skript sieht wie folgt aus:

#!/bin/bash

export PATH=/usr/bin:/usr/ccs/bin:/etc:/usr/openwin/bin:/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/usr/ucb:/usr/sbin
LDFLAGS="-L/usr/mysql/5.1/lib/mysql -R/usr/mysql/5.1/lib/mysql"
export LDFLAGS;

make distclean

export HO=/opt
export USER=bacula
export GROUP=bacula

# create bacula-user and group
groupadd $GROUP
useradd  -g $GROUP -d "/
CFLAGS="-g -O2" ./configure \
--prefix=/opt/bacula \
--with-mysql=/usr/mysql/5.1 \
--enable-smartalloc \
--with-dir-user=$USER \
--with-dir-group=$GROUP \
--with-sd-user=$USER \
--with-sd-group=$GROUP \
--with-fd-user=$USER \
--with-fd-group=$GROUP


# --enable-bat \
# --enable-gnome \
# --enable-tray-monitor \
# --sbindir=$HO/bacula/bin \
# --sysconfdir=$HO/bacula/etc \
# --with-pid-dir=$HO/bacula/var/pid \
# --with-subsys-dir=$HO/bacula/var/subsys \
# --with-working-dir=$HO/bacula/working \

  make
  make install

mkdir -p $HO/bacula/var/pid
mkdir -p $HO/bacula/var/subsys

chown -R $USER:$GROUP $HO/bacula

Nachdem man Bacula übsetzt hat kann man es mit tar packen und in der backup-Zone wieder entpacken. Das geht ganz einfach, da das Filesystem der backup-Zone auch in der global-Zone gemountet ist. Hier ist manchmal Geduld gefragt. Ich müsste öfter Packte in der backup-Zone nachinstallieren, damit Bacula lief. Ich hoffe ich habe oben alle nötigen Packte aufgeschrieben.

Wenn man auf die Weboberfläche verzichen möchte, dann muss man den Apache, Perl und gd nicht installieren. In der global-Zone habe ich dann noch einmal Bacula übsersetzt um bat zu haben. bat muss nicht in der backup-Zone laufen, ich greife über das Netzwerk auf den Director-Daemon von Bacula zu. Durch einen Fehler im Makefile wird bat nicht installiert. Das übersetze bat liegt unter <download-dir>/bacula-3.0.2/src/qt-console. Zum starten muss man angeben, wo sich das config-File, bat.conf befindet.

Wenn man die Weboberfläche bweb nutzen möchte muss man einige Perl-Module per Hand bzw. mit CPAN übersetzten. Dafür ist es notwendig, dass man die Sun Studio-Compiler installiert hat. Eine Fehlermeldung, die drauf hinweißt würde wie folgt lauten:

Ich habe für Bacula noch das folgende Manifest geschrieben:

<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!--

        Michael Rennecke 2009-09-01
        Service manifest for bacula (both server and client)
 -->

<service_bundle type='manifest' name='bacula:bacula'>

<service
name='application/bacula'
type='service'
version='1'>
<create_default_instance enabled='false' />
<single_instance />


<dependency name='fs'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>

<dependency name='net'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>

<exec_method
type='method'
name='start'
exec='/opt/bacula/sbin/bacula start'
timeout_seconds='-1'>
</exec_method>

<exec_method
type='method'
name='stop'
exec='/opt/bacula/sbin/bacula stop'
timeout_seconds='-1'>
</exec_method>

<exec_method
type='method'
name='restart'
exec='/opt/bacula/sbin/bacula restart'
timeout_seconds='-1'>
</exec_method>

</service>

</service_bundle>

Wenn man Bacula zum ersten mal startet, sollte man die Datenbanken erstellen. Die passenden Skripte liegen sinnvollerweise bei mir unter /opt/bacula/etc. Die Namen sind selbsterklärend. Wenn nun Bacula arbeitet kann man es konfigurieren. Die Konfiguration ist etwas kompliziert. Für die ersten Schritte kann man sich die Kurzanleitung ansehen, das folgende pdf ist auch ganz gut. Mein Client verschlüsselt seine Daten, wie das geht kann man hier erfahren. Wenn man die Kompression nutzen möchte muss das FileSet z.B so aussehen:

FileSet {
Name = "Test"
  Include {
    Options {
      signature = MD5
      noatime = yes
      mtimeonly = yes
      compression=gzip
    }   
    File = /export/test
  }
}

Ich hoffe, dass ich an alles gedacht habe. Ich wünsche allen viel Spaß und vor allem Erfolg, wenn sie Bacula mit rumspielen.

P.S.: Wenn es Probleme gibt lohnt es sich, die Daemons einzeln zu starten, sie haben noch zahlreiche Parameter.

Montag Aug 31, 2009

Ich war ab Freitag offline und habe mich heute gefreut, als ich gesehen habe, dass Build 121 für Open Solaris verfügbar ist. Ich bin jetzt fleißig am updaten und blogge über evtl. Probleme.

Das Update hat keine Probleme gemacht. Ich hatte zwischendurch die folgende Meldung:
The 'pcieb' driver shares the alias 'pciexclass,060400' with the 'pcie_pci'
driver, but the system cannot determine how the latter was delivered.
Its entry on line 2 in /etc/driver_aliases has been commented
out.  If this driver is no longer needed, it may be removed by booting
into the 'snv-121' boot environment and invoking 'rem_drv pcie_pci'
as well as removing line 2 from /etc/driver_aliases or, before
rebooting, mounting the 'snv-121' boot environment and running
'rem_drv -b <mountpoint> pcie_pci' and removing line 2 from
<mountpoint>/etc/driver_aliases.
The 'pcieb' driver shares the alias 'pciexclass,060401' with the 'pcie_pci'
driver, but the system cannot determine how the latter was delivered.
Its entry on line 3 in /etc/driver_aliases has been commented
out.  If this driver is no longer needed, it may be removed by booting
into the 'snv-121' boot environment and invoking 'rem_drv pcie_pci'
as well as removing line 3 from /etc/driver_aliases or, before
rebooting, mounting the 'snv-121' boot environment and running
'rem_drv -b <mountpoint> pcie_pci' and removing line 3 from
<mountpoint>/etc/driver_aliases.

Man sollte diese Meldung nicht ignorieren, wenn man das macht braucht man zumindest viel mehr CPU-Last. Hier findet man eine Liste der Änderungen. Am auffälligsten ist sicher Netbeans 6.7 oder der überarbeitete Packetmanager. Es gibt auch eine neue zfs-Version.

Mittwoch Aug 12, 2009

Für manche Dinge wie nfs ist es wichtig eine korrekte Uhrzeit auf allen Rechnern zu haben. Dies kann man durch die Sychronisation mit einem Zeit-Server erreichen. Unter Open Solaris müssen in der Datei /etc/inet/ntp.conf die Zeitserver stehen mit den man sich synchronisieren möchte. Anschließend muss man den ntp-Server neu starten. Unten steht meine Konfiguration:

root@walhalla ~ $ cat /etc/inet/ntp.conf
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org
root@walhalla ~ $ svcadm restart svc:/network/ntp:default
root@walhalla ~ $ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+wikisquare.de   129.69.1.153     2 u   58   64  377   28.259  -20.970   2.549
*dexter.wzw.tum. 130.149.17.21    2 u   63   64  377   13.108  -17.224   1.370
+dnscache-frankf 131.188.3.222    2 u   56   64  377   25.993  -20.031   2.900
-draco.fivemile. 192.53.103.108   2 u   63   64  377   20.565  -15.292   1.181

Hier findet man noch einige Information über die verwendeten Zeitserver.

Dienstag Aug 11, 2009

Ich habe es öfter, dass ich unter Windows erstellte Open Office- / Microsoft Office Dokumente öffnen muss. Da kann es passieren, dass die Schrift mitunter recht seltsam aussehen, da Solaris nicht die passende Schrift hat. Das Problem kann man zum Teil lösen indem man das Packet ttf-fonts-core nachinstalliert.

Es befindet sich im extra-Repository. Wie man das Repository einfügt kann man hier erfahren. Man muss sich auch noch ein gültigtes Zertifikat von Sun holen, welches man hier bekommt.

Eigene Schriften installieren

Man muss einfach die entsprechende Schrift in ein selbst erstelltes Unterverzeichnis in /usr/X11/lib/X11/fonts kopieren.

root@walhalla ~ $ cd /usr/X11/lib/X11/fonts/
root@walhalla fonts $ mkdir myttf
root@walhalla fonts $ mkdir myotf
root@walhalla fonts $ cp ~/Downloads/KittyPrint.ttf myttf/
root@walhalla fonts $ cp /opt/texlive/2008/texmf-dist/fonts/opentype/public/kurier/KurierHeavy-Italic.otf myotf/

Ich habe es in OpenOffice und in Gnome getestet, es waren beide Schriften verfügbar. Es ist darauf zu achten, dass jeder User die Dateien lesen kann.

Sonntag Aug 09, 2009

Die Konfiguration für das Powermanagement befindet sich bei Open Solaris in der Datei /etc/power.conf. Damit sich meine CPU herunter taket, wenn sie nicht so viel machen muss, habe ich die Zeile
cpupm  enable
in
cpupm  enable poll-mode
geändert. Nun muss man mit pmconfig die neue Konfiguration aktivieren. Das ganze muss man als root bzw. mit pfexec machen. Ich empfehle jeden die Manpage von power.conf zu lesen (man power.conf).

Um zu sehen, wie sich die CPU herunter tacktet, kann man
kstat -m cpu_info -s current_clock_Hz
oder
powertop
benutzen. powertop ist im Packet SUNWpowertop. powertop benötigt dtrace, deswegen muss man root sein, oder die passenden Privilegien besitzen.

Donnerstag Jul 23, 2009

Ich habe mich öfter etwas geärgert, dass ich bei OpenSolaris Software selbst übersetzen musste, die ich mal schnell benötigte und dann ließ sich die Software nicht mal schnell übersetzten - wegen diverser Abhängigkeiten.

Man kann die Packtetverwaltung von NetBSD  auch unter Solaris nutzen. Hier sind sehr viele Packte enthalten, die man in den verschiedenen Repositories nicht findet. Eine vollständige Liste der verfügbaren Packete findet man hier. Im folgenden möchte ich beschreiben, wie man pkgsrc bei OpenSolaris installiert. Wer mehr wissen möchte, den verweise ich auf die Onlinedokumentation.

  1. Packte installieren
    root@walhalla / $ pkg install SUNWcvs SUNWgccruntime SUNWgcc SUNWbinutils SUNWbtool SUNWggrp SUNWxcu4 SUNWcs SUNWsprot SUNWlibm SUNWloc SUNWsndm SUNWgpch
  2. pkgsrc installieren
    root@walhalla / $ export CVSROOT=anoncvs@anoncvs.NetBSD.org:/cvsroot
    root@walhalla / $ export CVS_RSH=ssh
    root@walhalla / $ mkdir  /usr/pkgsrc
    root@walhalla / $ mkdir  /usr/pkg
    root@walhalla / $ cd /usr
    root@walhalla usr $ cvs checkout -P pkgsrc
    root@walhalla usr $ export PATH=$PATH:/usr/sfw/bin:/usr/ccs/bin

    root@walhalla usr $ echo CC=gcc > /etc/mk.conf
    root@walhalla usr $ cd /usr/pkgsrc/bootstrap
    root@walhalla bootstrap$ ./bootstrap
  3. Warten und einen Kaffee trinken
  4. Path-Variable erweitern
    root@walhalla bootstrap$ export PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin
  5. Software installieren
    root@walhalla bootstrap$ cd /usr/pkgsrc/pkgtools/pkgfind
    root@walhalla pkgfind$ bmake install
Man könnte noch viel mehr schreiben, aber das ist ein kleiner Einstieg in pkgsrc.

Dienstag Jul 21, 2009

Unter http://homepage2.nifty.com/mrym3/taiyodo/eng/ kann man sich verschiedene Netzwerktreiber herunter laden, unter anderen auch die Broadcom-Treiber (bge). Diese Chips werden häufig bei Laptops verbaut.

Mittwoch Jul 15, 2009

Als CA ist man immer erreichbar, so wurde ich eben gefragt wie man Seitenzahlen in OpenOffice einfügt. Das folgende Bild zeigt wie es geht.