debian, grub, kernelupdate, falsches root-device

Grad mit Thomas drueber gesprochen und er meinte ich sollte mal nen Blogeintrag schreiben, weil sich das keiner durch liesst. Das Problem ist, dass bei einem Debian System, in diesem Fall Lenny auf einem Dell Poweredge 1950/2950 bei einem Kernelupdate immer automatisch auch die /boot/grub/menu.lst geupdated wird, und da dann immer ein falsches root-device genommen wird, so dass das booten scheitert. Die Ursache bei den Poweredge Systemen ist, dass sie eine Broadcom NetXtreme II Netzwerkkarte verbaut haben mit einer propietaeren Firmware, die man beim installieren via USB-Stick nachliefern muss. Der USB-Stick wird als /dev/sda und die Festplatten dann als /dev/sdb etc. erkannt. Das root-device ist danach in der fstab und menu.lst /dev/sdb. Nach dem manuellen aendern bleibt die fstab auch den rest Ihres lebens so, die menu.lst wiegesagt nicht. Das ganze kann man aendern, indem man in der /boot/grub/menu.lst die Zeile

#kopt=root=/dev/sdb1 ro

sucht und entsprechend abaendert in das _richtige_ root-device. Wichtig ist, dass man das ganze auskommentiert laesst. Wenn man ein bisschen drueber liesst, steht das da auch, aber wie Thomas schon richtig anmerkte: das liest ja eh keiner. Bei mir hat es auch mehrere Stunden gedauert ;-)

An welchem Port befindet sich der Host?

Diese Frage muss natuerlich beantwortet sein, wenn ich Rechner die einen Virus haben automatisch in ein VLAN packen moechte. Gestern habe ich geschrieben, wie man auf den FSM726v2 einen Port via SNMP automatisch in ein VLAN setzt. Heute geht es nun darum, basierend auf einer MAC-Adresse, in unserem Wohnheim herauszufinden, auf welchem Switch und an welchem Port darauf ein Rechner sitzt, bzw. DER vireninfizierte Rechner sitzt. Es gab dafuer bei uns im Tutorium ein perl-Skript, das fuer diese Aufgabe gute 4 1/2 Minuten benoetigte.  Wir haben so um die 45 Switche bei uns im Wohnheim.

Meine erste Loesung in bash dauerte ca. doppelt so lange wie das perl Skript, aber nachdem ich das ganze noch einmal ueberdacht hatte bekomme ich die gewuenschte Information nun in Sekunden. Das Skript in dieser Form funktioniert fuer FSM726v2 und FSM7328 Switche, sollte aber ohne Probleme wenn man die OIDs anpasst auch fuer alle anderen Switchtypen funktionieren.  Hier das Skript:

#!/bin/bash
 
##
# sucht nach mac-adressen auf den switchen und
# gibt den port aus, auf dem sie zu finden ist
#
# syntax: ./mac-port.sh 00:11:22:33:44:55
#
# 04/2009 - Jan Toenjes - jan@atw.goe.net
##
 
# Ueberpruefen ob uns eine gueltige MAC-Adresse uebergeben wurde
VALID=$( echo $1 | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p" )
 
if [ -z $VALID ]; then
  echo ""
  echo " syntax: $0 00:11:22:33:44:55"
  echo ""
  echo ""
  echo " Dem Skript muss eine gueltige MAC-Adresse als Parameter uebergeben werden."
  echo ""
  echo " Version: 0.1 von Jan Toenjes - jan@atw.goe.net "
  echo ""
 
else
 
# SWITCHE1 = FSM726v2 ; SWITCHE2 = FSM7328
SWITCHE1="1.1.1.1 1.1.1.2 1.1.1.3 "
SWITCHE2="1.1.2.1 1.1.2.2"
 
# Zeugs
OID1=".1.3.6.1.2.1.17.4.3.1.2"
OID2="SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.1"
MACDEC=""
 
# Doppelpunkte aus MAC-Adresse entfernen
MACSPLIT=`echo $1 | sed 's/:/ /g'`
 
# MAC-Adresse von HEX in DEC konvertieren
for i in $MACSPLIT ; do
  MACDEC=$MACDEC.$(echo "ibase=16; $i"| bc) ;
done
 
# Gucken ob die MAC-Adresse auf dem Switch FSM726v2 vorhanden ist und wenn ja welcher Port
for i in $SWITCHE1 ; do
  RESULT1=`snmpget -v1 -c tutrw $i $OID1$MACDEC 2>&1 | head -1 | grep INTEGER`;
  # Port extrahieren
  RESULT2=`echo $RESULT1 | sed 's/.*INTEGER: //g'` ;
  # Wenn kein Uplink-Port dann Info ausgeben
  if ([ "$RESULT2" != "25" ] && [ "$RESULT2" != "26" ]  && [ -n "$RESULT2" ]); then
    echo Mac-Adresse: $1 gefunden auf Switch $i und Port $RESULT2
  fi
done
 
# und das gleiche auch noch einmal fuer die FSM7328
for i in $SWITCHE2 ; do
  RESULT1=`snmpget -v1 -c tutrw $i $OID2$MACDEC 2>&1 | head -1 | grep INTEGER`;
  RESULT2=`echo $RESULT1 | sed 's/.*INTEGER: //g'` ;
 
  if ([ "$RESULT2" != "25" ] && [ "$RESULT2" != "26" ] && [ "$RESULT2" != "27" ] && [ "$RESULT2" != "28" ] && [ -n "$RESULT2" ]); then
    echo Mac-Adresse: $1 gefunden auf Switch $i und Port $RESULT2
  fi
done
 
fi

auvisio DVB-T Receiver WhiteStar II unter Ubuntu-EEE

ACHTUNG: LAUT w-sky IST DIESE ANLEITUNG OBSOLET UND SEIT UBUNTU 10.04 LTS FUNKTIONIERT ALLES PLUG&PLAY. SIEHE KOMMENTARE UNTEN.

Der Onlineverstandanbieter Pearl hat zur Cebit als Promotionsangebot einen auvisio DVB-T USB-Stick fuer 3,90€ verkauft. Dank meines Vaters habe ich den Mindestumsatz von 20€ zusammenbekommen und heute ist der Stick mit der Post gekommen. Das ganze hab ich mir geholt, um damit mobil auf meinem Asus EEE 1000H Netbook TV zu schauen. Damit das ganze unter Ubuntu-EEE funktioniert (ich habe immer noch nicht auf EasyPeasy geupdated, es funktioniert alles so schoen… ;-) ) hier nun einige Informationen:

Der auvisio DVB-T Mini Receiver WhiteStar II kommt aus China und hat die Modell No: DM21T.Die Vendor und Device ID lauten: 15a4:9016. Der Kernel (2.6.24-21-eeepc) erkennt das Geraet standartmaessig als  NEWMI USB2.0 DVB-T TV Stick.

Nach kurzem Suchen hatte ich dann herausgefunden, dass der Chipsatz (AfaTech) AF9015 verbaut ist. Um das entsprechende Kernelmodul zu erstellen muss sudo aptitude install mercurial installiert werden. Um allgemein zu kompilieren muessen noch einige Hilfstools und fuer den Kernel die Headerfiles installiert werden (danke an baer fuer den hinweis): sudo aptitude install build-essential linux-headers-$(uname -r). Anschliessend die Treiber mit hg clone http://linuxtv.org/hg/~anttip/af9015 herunterladen und mit cd af9015 ; make ; sudo make install installieren. Nun muss noch die richtige Firmware heruntergeladen werden  wget http://jusst.de/manu/fw/AFA/dvb-usb-af9015.fw_a-link und diese verschoben und umbenannt ab nach mv dvb-usb-af9015.fw_a-link /lib/firmware/dvb-usb-af9015.fw .

Das wars! Mein Tip zum DVB-T schauen ist sudo aptitude install kaffeine, deswegen, weil es eine integrierte Sendersuche hat, und man sich nicht mit dem erstellen einer channels.conf rumaergern muss… Leider musste ich zum Sendersuchlauf rausgehen, mein Kelleratelier macht sich da nicht so gut vom Empfang her ;-) . Hier noch der obligatorische Screenshot…

kaffeeine-dvbt

Was ist der Unterschied zwischen XEN und KVM?

KVM macht den Kernel selbst zum Hypervisor und greift dabei auf die Infrastruktur des Kernels (Scheduler, Speicherverwaltung, Treiber) zurück, während bei der Xen-Hypervisor dem Linux-Kernel vorgeschaltet ist.

KVM erfordert für seine Arbeit CPUs mit Virtualisierungsfunktionen wie AMD-V oder Intel VT. Xen kann diese Funktionen ebenfalls nutzen, um unmodifizierte Gastsysteme zu virtualisieren. An Xen angepasste Betriebssysteme laufen unter dem Xen-Hypervisor allerdings mit Hilfe von Paravirtualisierung auch als Gast, wenn die CPU keine solchen Funktionen bietet.

SnipSnap via heiseOpen