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

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.

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

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.

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.

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.

Dienstag Jul 14, 2009

Ich habe heute ein Update auf Build 118 gemacht. Anscheint ist das kein Einzelfall, da andere Leute auch Probleme mit dem Build haben. Mir sind folgende 2 Fehler aufgefallen: Das neue System konnte konnte nicht gebootet werden, da Dateisysteme falsch eingehangen wurden und es das System bootete nicht durch.

Update durchführen, sodass alle Dateisysteme korrekt eingehangen werden

rennecke@walhalla ~ $ pfexec pkg image-update
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                              635/635   8617/8617  277.3/277.3

PHASE                                        ACTIONS
Removal Phase                              4271/4271
Install Phase                              5162/5162
Update Phase                             16225/16225
PHASE                                          ITEMS
Reading Existing Index                           8/8
Indexing Packages                            635/635
Optimizing Index...
PHASE                                          ITEMS
Indexing Packages                            789/789
pkg: /tmp/tmpnMsCuH kann nicht entladen werden

---------------------------------------------------------------------------
HINWEIS: Beachten Sie die Versionshinweise unter:

http://opensolaris.org/os/project/indiana/resources/relnotes/200906/x86/
---------------------------------------------------------------------------

rennecke@walhalla ~ $ beadm list
BE          Active Mountpoint     Space   Policy Created          
--          ------ ----------     -----   ------ -------          
opensolaris -      -              383.47M static 2007-01-01 17:54
snv-112     -      -              45.73M  static 2009-04-27 22:10
snv-113     -      -              1.54G   static 2009-06-01 08:47
snv-114     -      -              79.21M  static 2009-06-14 17:01
snv-117     N      /              602.0K  static 2009-06-29 19:12
snv-118     R      /tmp/tmpnMsCuH 29.63G  static 2009-07-14 20:42
rennecke@walhalla ~ $ pfexec beadm umount -f snv-118

Fix von Detlef Drewanz:

Detlef hat die fehlenden Startskripte hinzugefügt. Sie machen nichts und geben nur 0 zurück. Dieser Weg ist sicher etwas schöner. Welche Skripte fehlen steht im log.

Dienste löschen, die hängen

# svccfg delete svc:/system/fcoe_target:default
# svccfg delete svc:/network/fcoe_config:default

Bei mir gab es keine Startmethoden, deswegen gabe ich die Services gelöscht. Es handelt sich Dienste, welche für FibreChannel over Ethernet nötig sind. Da ich persönlich kein FirbeChannel over Ethernet betreibe kann ich damit leben.

Man sollte auch einmal sein zfs wieder updaten, das kann man mit rennecke@walhalla ~ $ pfexec zpool upgrade rpool. Achtung: ältere Builds können unter umständen die neueren zfs-Versionen nicht lesen.

Ich habe inzwischen folgende Packte entfernt:

SUNWqlc@0.5.11-0.118
SUNWfcp@0.5.11-0.118
SUNWfcoeu@0.5.11-0.118
SUNWfcprt@0.5.11-0.118
SUNWfcip@0.5.11-0.118
SUNWfcsm@0.5.11-0.118
SUNWfctl@0.5.11-0.118

Dadurch erhoffe ich mir, dass ich keine Probleme mehr mit  FibreChannel habe. Beim booten bin ich wieder stecken geblieben, deswegen ich den Service npivconfig noch gelöscht.

Ich wollte verschiedene Sparc-Rechner mit Nagios überwachen. Da ich kein passendes Plugin gefunden habe um die Sensoren zu überwachen habe ich mir selbst eins geschrieben.

Es funktioniert ganz gut, wenn jemand Probleme mit dem Plugin hat, dann kann ich versuchen es zu verbessern. Man kann das Plugin auch hier herunter laden. Ich parse die Ausgabe von prtpicl. Wenn die Temperatur HighWarningThreshold - $warn übersteigt, dann wird warning zurück gegeben. Wenn HighWarningThreshold überschritten wird, dann gibt das Plugin critical zurück.

 1 #!/usr/bin/perl -w
 2
 3 # File:    check_solaris_sensors
 4 # Purpose: prtpicl output parser
 5 # Author:  Michael Rennecke michael.rennecke@sun.com
 6 # Date:    2009/07/08
 7 # Version: 0.2
 8
 9 use strict;
10
11 my $warn        = 15;
12 my $prtpicl     = "/usr/sbin/prtpicl";
13 my @diag        = ();
14 my @sensor_data = ();
15 my $state       = 0;
16 my $output      = "";
17
18 unless(open(DIAG, "$prtpicl -v -c temperature-sensor | ")) {
19 print STDERR "Initialization error - Can't execute  $prtpicl -v -c temperature-sensor!\n";
20 exit(3);
21 }
22
23 while(<DIAG>){
24 push(@diag, $_);
25 }
26 close(DIAG);
27
28 unless( @diag > 0) {
29 print STDERR "Can't find any temperature-sensor!\n";
30 exit(3);
31 }
32
33 sub change_state {
34 if ($_[0] > $state) {
35 $state = $_[0];
36     }
37 }
38
39 my $sensor      = undef;
40 my $warning     = undef;
41 my $critical    = undef;
42 my $temperature = undef;
43 my $get_temp    = 0;
44
45 foreach my $line (@diag) {
46
47 $get_temp = 0;
48
49 if ($line =~ /\s*([a-zA-Z0-9_]+)\s*\(temperature-sensor/) {
50 $sensor = $1;
51     } elsif ($line =~ /:HighWarningThreshold\s*(\d+)/) {
52 $warning = $1;
53     } elsif ($line =~ /:Temperature\s*(\d+)/) {
54 $temperature = $1;
55 $get_temp = 1;
56     }
57
58 if ($get_temp == 1) {
59 if ($temperature <= $warning - $warn) {
60 &change_state(0);
61         } elsif ($temperature <= $warning) {
62 &change_state(1);
63         } else {
64 &change_state(2);
65         }
66 $output = "$output $sensor: ${temperature}°C ";
67     }
68
69 }
70
71 if ($state == 0) {
72 $output = "Temperature OK --$output \n";
73 } elsif ($state == 1) {
74 $output = "Temperature WARNING --$output \n";
75 } elsif ($state == 2) {
76 $output = "Temperature CRITICAL --$output \n";
77 } else {
78 $output = "Temperature UNKNOWN --$output \n";
79 }
80
81 print STDOUT "$output";
82 exit ($state);

Andere Nagios-Plugins für Solaris

Mittwoch Jul 01, 2009

Ich habe mir einiger Zeit eine neue Grafikkarte gekauft, eine GeForce 9400 GT. Ich habe mich für eine Grafikkarte von Nvidia entschieden, da es Treiber für Solaris gibt. So weit die Theorie, denn die Nvidia-Treiber in OpenSolaris 2009.06 bzw. bis Build 111b wollten nicht mit meiner Grafikkarte zusammen arbeiten.

Die Tage kam Build 117 im dev-Repository heraus. Ich habe diesen gleich installiert und siehe da die Grafikkarte arbeitet wie sie soll. Ein Update auf Build 117 hat noch einige andere Vorteile, u.a. gibt es eine neue zfs-version die quotas untersützt.

Donnerstag Mai 28, 2009

Ich habe mir einmal die Frage gestellt wie man einen erstellten zpool nachträchlich umbennen kann. Das kann nötig sein, da der Name eines zpool auf einen System eindeutig sein muss. So kann es vorkommen, dass man 2 usb-Sticks hat mit einem zpool, der tank heißt. 

  1. zpool der umbenannt werden soll exportieren: zpool export <poolname>
  2. zpool importieren und umbennen: zpool import <alter poolname> <neuer poolname>

Man sollte aber dafür sorgen, dass beim import der Name aller zpools eindeutig ist (ggf. Platten/sticks abmounten)

Dienstag Mai 05, 2009

Meine regelmäßigen Blogleser wissen, dass mehrere Repositories in meiner Open Solaris Installation habe. Das war bis jetzt unproblematisch. Es gibt aber Packte, welche im contrib-Zweig sind und im pending-Zweig. Bei mir ist es z.B. das Packet python-pysqlite2 Wenn man dieses einzeln über den Update-Manager updatet, dann bekommt man das falsche Packet!

Diese Bastelei mit dem pending-Zweig machen sicher nur erfahrene Nutzer und die wissen nun was passiert ist, wenn etwas nicht mehr geht. Ich weise noch einmal darauf hin, dass der pending-Zweig nicht für stabilen Betrieb ausgelegt ist. Er ist das Repo für Entwickler, d.h. alles was hier enthalten ist, muss nicht wie gewöhnt funktionieren!

Sonntag Apr 05, 2009

Ich habe mal wieder Liveupgrade gemacht den workaround, den ich beschrieben habe, der ist nicht mehr nötig.

lucreate erzeugt betrachtet jetzt alle Dateisysteme unter rpool/ROOT/<BU>. Es ist aber absolut notwendig, dass alle Dateisysteme die Eigenschaft canmount=noauto gesetzt haben.