Tag Archives: Debian

Problemchen mit approx beheben

In Zeiten vieler Rechner und dennoch langsamer Internetverbindungen1 kann ein Paketproxy ein wahrer Segen sein. Updates und Pakete für Debian und auf Debian basierenden Betriebssystem werden dann im lokalen Netz zwischengespeichert und es muss nicht jeder einzelne Rechner immer alles von einem Debian-Spiegel aus dem Netz holen. Ich setze dazu approx ein. D.h. ich betreibe keinen eigenen Mirror, sondern halte nur die nötigen Pakete lokal nochmal vor. Ein spezialisierter Proxy wie approx, der über die Struktur des Paketservers bescheid weiß, kann hier meiner Meinung nach bessere Dienste leisten, als ein generischer Proxy.

Während die Idee an sich gut ist, gibt es im Detail ein paar Problemchen. Sowohl approx vermurkst sich manchmal seine Daten als auch clientseitig das apt auf dem Rechner. Auf beiden Seiten kann man das wieder bereinigen und ich zeige kurz wie.

approx

Ein häufiges Problem, das ich bei approx festgestellt habe, sind 0 Byte große Dateien. Sind solche unter /var/cache/approx solche vorhanden, kommt es auf Clientseite zu allerlei komischen Fehlern, heute hatte ich da beispielsweise HTTP 404 für Dateien, die auf dem Mirror vorhanden sind. Auf dem Server, wo approx läuft, habe ich dann zwei Sachen ausgeführt:

sudo find -L /var/cache/approx -empty -exec rm -rf {} +
sudo approx-gc

apt

Die Probleme hier entstehen vermutlich ähnlich wie serverseitig durch unterbrochene Updatevorgänge, nutzer- oder netzwerkseitig, egal, es ist halt was kaputt. Es gibt natürlich aptitude clean und dergleichen und manchmal scheint das aber nicht zu helfen. Zuletzt behalf ich mir dann damit:

sudo rm -rf /var/lib/apt/lists
sudo mkdir -p /var/lib/apt/lists/partial

So sind Updates jetzt wieder möglich. Ich weiß zwar nicht, was genau und warum das ab und zu kracht, aber so kann man’s wenigstens in einen funktionierenden Zustand zurücksetzen.

  1. Breitbandausbau am Arsch! []

HowTo: FreeBSD als HVM-DomU in Xen auf Debian Wheezy

Zu Hause und im Netz39 e.V. läuft je ein Server mit Debian Wheezy auf amd64 und als Virtualisierungssystem wird Xen benutzt. Linux-Gäste werden paravirtualisiert und das läuft schon seit Jahren fluffig. Für bestimmte Zwecke muss es aber auch mal ein anderes System sein und das ist im Hackerspace ein aktuelles FreeBSD 9.1 und zu Hause ein Debian GNU/kFreeBSD, also kein Debian GNU/Linux, sondern eben das Debian mit dem ganzen GNU Userland und einem FreeBSD-Kernel. In beiden Fällen ist auch die VM die 64-Bit-Variante und die Hardwarevirtualisierung der jeweiligen Prozessoren soll genutzt werden. Was fehlt: die initiale Config für die VM und da hab ich gesucht, recherchiert und probiert und präsentiere jetzt, was bei mir funktioniert hat. Zu Hause sieht’s so aus:

vcpus = 2
memory = 1024
name = 'kleopatra'
builder = 'hvm'
kernel = 'hvmloader'
disk =  [
                'phy:/dev/mapper/heaven-kleopatra,hda,w',
                'file:/home/alex/debian-7.1.0-kfreebsd-amd64-netinst.iso,hdc:cdrom,r',
        ]
boot = 'dc'
vif = [ 'mac=00:16:3E:XX:XX:XX,bridge=xenbr0' ]
vfb = [ 'type=vnc' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

Und im Space:

vcpus       = 1
memory      = 512
name        = 'hydrogen'
builder     = 'hvm'
kernel      = 'hvmloader'
disk        = [
            'phy:/dev/mapper/vgmarx-wasserstoff,hda,w',
            'file:/media/images/FreeBSD-9.1-RELEASE-amd64-disc1.iso,hdc:cdrom,r',
          ]   
boot        = 'dc'
vif     = [ 'mac=00:16:3E:XX:XX:XX,bridge=xenbr0' ]
vfb     = [ 'type=vnc' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

In beiden Fällen hatte ich zuvor Xen nach der Anleitung im Debian-Wiki aufgesetzt. Die XX in den Mac-Adressen sind durch zufällige Werte zwischen 00h und FFh zu ersetzen. Die Erzeugung von Zufallszahlen und die Umrechnung ins Hexadezimalsystem überlasse ich als Hausaufgabe.

Nach dem Start der DomU macht man einen SSH-Tunnel auf für den VNC-Port und verbindet sich mit seinem bevorzugten VNC-Client1 auf localhost:

ssh -L 5900:localhost:5900 yourxenhost

Nach der Installation in der Config die Bootreihenfolge anpassen bzw. das CD-Image rausnehmen, fertig.

  1. unter KDE benutze ich krdc, auch wenn ich den Namen grauslig finde []

echo echo echo

Der Netzwerkdienst echo ist laut allwissender Müllhalde im inetd implementiert. Muss man wissen. Und dann muss man noch wissen, wie der aktiviert wird, ist er per default logischerweise nicht. Unter Debian Wheezy mit dem inetd aus dem Paket openbsd-inetd fügt man an geeigneter Stelle folgende Zeile zu /etc/inetd.conf hinzu:

echo    stream  tcp     nowait  root    internal

Links klicken in Icedove Mail

Debian Stable und aktuell Wheezy ist das System, was ich auf meinen Rechnern benutze und die Thunderbird-Variante Icedove ist da auf Version 17.x und damit gibt es ein Problem: Icedove hält sich so gar nicht an eine der üblichen Varianten um einzurichten welche Anwendung sich öffnen soll, wenn man einen Link anklickt, nicht an die KDE-Mechanisem (eigentlich logisch), nicht an die vom System und nicht mal an seine eigenen. Konkret muss man über preferences → advanced → general → config editor an die Innereien ran. In den Optionen network.protocol-handler.app.http[s] steht hier x-www-browser was üblicherweise ein symbolischer Link ist, der auf /etc/alternatives/x-www-browser zeigt und das bedeutet auf Debian-basierten Systemen, dass man das über

sudo update-alternatives --config  x-www-browser

einstellen kann. Bei mir steht das auf iceweasel, aber Icedove öffnete alle Links mit Google Chrome. :-(

Ich hatte das vor längerer Zeit mal auf der deutschen Debian User Mailingsliste gefragt, aber die passende Antwort da im Archiv zu finden, ist umständlich und ich stand jetzt auf einem anderen Rechner vor dem selben Problem und hab’s ohne im Archiv zu suchen dann genauso gemacht:

network.protocol-handler.warn-external.http[s]

hab ich dann auf true gesetzt und bekam dann einen Auswahldialog. Was ich da auswähle taucht dann in den Preferences unter attachments → incoming auf, wo es vorher jedoch nicht stand. WTF?!

Also ganz ehrlich, egal wer sich das ausgedacht hat bei den Entwicklern, den würde ich gern mal persönlich sprechen! *motz*

HowTo: DSL-Router loggt zu rsyslog auf Debian Wheezy

Gestern schrieb ich, wie ich mal eben schnell Daten sammle wie oft mein Router sich neu verbindet. So ganz elegant ist das nicht, weil es quasi am Router vorbei geschieht und der Router ja selbst am besten weiß, was er tut. Das vorliegende Modell kann den Output seines syslog an einen anderen Server schicken und da wertet man dann direkt die Logs aus, nur wie macht man das, wenn der Server ein rsyslog auf einem Debian Wheezy ist?

Zunächst aktiviert man mal die Funktion, dass der syslog überhaupt Nachrichten von anderen annehmen soll. Das passiert in /etc/rsyslog.conf und es sind die Zeilen auszukommentieren, die die entsprechenden Module laden.

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Ich hab der Einfachheit mal beide aktiviert, weil ich nicht wusste, was der Router probieren wird. Dann wollte ich, dass alle Logmeldungen des Routers in einer Datei landen und nicht zwischen die normalen Log-Dateien des Systems mit dem rsyslog geraten. Wichtig ist, dass hier rsyslog 5.8.11 arbeitet und daher die Änderungen an der Config-File-Syntax bei v6 und höher, die upstream in der Doku beschrieben sind, noch nicht gelten. Mit ein bisschen manpage, HowTo, Wiki und dergleichen lesen und etwas Rumprobieren, habe ich dann folgendes in die neu angelegte Datei /etc/rsyslog.d/remote.conf geschrieben:

$template PathWithHostName, "/var/log/remote/%HOSTNAME%.log"
:source, !isequal, "falbala"    -?PathWithHostName
& ~

Ich schmeiße quasi alles, was nicht vom loghost “falbala” kommt, auf dem der rsyslog läuft, in einen Unterordner remote und in nach dem Host getrennt, wo es herkommt. Jetzt muss ich nur noch ein paar Tage Daten sammeln und dann hab ich ein bisschen Statistik in der Hand, die hoffentlich ausreicht damit mein ISP eine sofortige Kündigung akzeptiert …

Nachtrag: Damit das Log nicht irgendwann überläuft, empfiehlt es sich auch noch logrotate anzupassen. Ich habe dazu /etc/logrotate.d/rsyslog als Beispiel für eine separate /etc/logrotate.d/rsyslog-custom genommen und das dort eingetragen:

/var/log/remote/*.log {
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

Deactivate Nautilus automount in KDE

Auf meinem Laptop (Samsung NC10) läuft zu meiner vollen Zufriedenheit ein Debian Squeeze mit KDE. Seit einiger Zeit wurde beim Anstecken externer Datenträger (USB-Stick, SD-Karte, …) derselbe automatisch gemountet und es wurde Nautilus geöffnet, der Dateimanager von Gnome. Dieses Verhalten hat mich ziemlich genervt, weil ich a) selbst entscheiden möchte, ob ich was mounten will oder nicht, so wie das bei KDE auch default ist und weil b) ein Dateimanager geöffnet wird, den ich eigentlich gar nicht benutze (bzw. benutzen will).

Bei der Recherche im Netz stieß ich auch folgenden Foreneintrag: newly installed KDE: don’t want Nautilus window when USB memory inserted. Die dort beschriebene Lösung funktioniert im Prinzip, nur halt wie dort bereits erwähnt, nicht genau so.

Ich habe dann das Paket gconf-editor installiert und den entsprechenden Editor gestartet. Die Keys hatten sich tatsächlich geändert, aber waren auffindbar:

Ich habe die Haken bei den Keys media_automount und media_automount_open entfernt und damit das von mir gewünschte Verhalten wieder hergestellt. :-)

Debian Squeeze Release Kuchen

Debian Squeeze ist veröffentlicht worden und zur Feier des Tages hab ich mal einen Kuchen mit Debian-Logo gebacken:

img_2503

Okay, war schon letztes Wochenende und ich war bisschen enttäuscht, dass niemand auf der Geburtstagsparty einer guten Freundin das Debian-Logo erkannt hat, aber der Kuchen war lecker und Debian rockt einfach und ist es wert mit Kuchen gefeiert zu werden!

IPv6 in Debian und Ubuntu deaktivieren

In Netzen, wo jemand anderes Admin ist, kann man sich nicht alles aussuchen, unter anderem nicht, wann auf IPv6 umgestellt wird. In einem speziellen Netz, bekam ich kürzlich die Bitte IPv6 bis auf weiteres zu deaktivieren. Was bei Windows XP ein Häkchen ist, erfordert unter Debian und Ubuntu je nach Version unterschiedliche Schritte. Die Informationen dazu im Netz sind vielfältig und widersprüchlich, daher hier nochmal meine Lösungen. Ob das jeweils geklappt hat, kann man mit `ifconfig` oder `ip addr show` überprüfen, auch ein `netstat -lt` sollte dann keine Dienste mehr zeigen, die auf IPv6 lauschen.

Debian 5.0 Lenny

‘ipv6’ ist hier noch ein Kernelmodul, es genügt ein Eintrag in der Datei /etc/modprobe.d/blacklist – vorausgesetzt, man verwendet den Distributionskernel 2.6.26, bei einem neueren Kernel aus den Backports sieht das ggf. schon aus wie bei Squeeze, hab ich jetzt hier nicht extra geprüft.

# ipv6
blacklist ipv6

Debian 6.0 Squeeze

IPv6 ist hier direkt in den Kernel kompiliert. Es kann über sysctl deaktiviert werden. Laut /etc/sysctl.d/README.sysctl trägt man das am besten in /etc/sysctl.d/local.conf ein. Der Eintrag lautet wie folgt:

net.ipv6.conf.all.disable_ipv6=1

Ubuntu 10.04 Lucid

Hier verhält es sich ähnlich wie bei Debian Squeeze. Allein die Datei in /etc/sysctl.d bekommt hier einen anderen Namen. Laut /etc/sysctl.d/README soll sie so heißen:

End-users can use 60-*.conf and above

Ich hab die Datei 60-disableipv6.conf genannt, der Inhalt ist ebenso:

net.ipv6.conf.all.disable_ipv6=1

Logitech-HID mit Debian Sid

Nutzer der Unstable-Variante von Debian (auch als Debian Sid bekannt) bekommen ja bekanntlich regelmäßig Gratisabenteuer aus dem Bereich der Systemadimistration geschenkt; sozusagen ein Quest-Abo.

Problem des Tages: Einen Systemstart nach dem letzten Update funktionierten Bluetooth-Tastatur und -Maus von Logitech nicht mehr, in meinem Fall konkret das Dinovo-Set.

Ich habe häufiger Ärger mit Logitech unter Linux, meistens ließ sich das aber mit einem Reset des Bluetooth-Dongles1 beheben. Dieses Mal nicht, der Fehler war persistent.
dmesg, logs und Modulliste waren soweit korrekt, es war alles da, was für die Geräte gebraucht würde und es wurde laut lsusb auch alles erkannt. Nur funktionierte einfach nichts. $SUCHMASCHINE lieferte dafür auch keine weiteren Ergebnisse.

Letztendlich habe ich das Problem in den udev-Regeln2, speziell der Datei 70-hid2hci.rules gefunden. Dort steht in Zeile 15:

RUN+="hid2hci --method=logitech-hid --devpath=%p"

Ein kurzer Blick auf die Manpage zeigt, dass der Aufruf nicht korrekt ist. Ich habe die Zeile so abgeändert:

RUN+="hid2hci --method=logitech --mode=hid --devpath=%p"

Seit dem funktionieren Tastatur und Maus wieder einwandfrei.

Die Regel deckt einen großen Bereich von Logitech-Produkten ab, das Problem tritt also wohl auch dort auf. Debian-Bugreport kommt dann später noch.

  1. Abziehen und wieder dranstecken. ;) []
  2. zu finden unter /lib/udev/rules.d/ []

HowTo: Auf Kanal 13 funken mit Debian

Unter uns sind neue Nachbarn eingezogen. Im Gegensatz zu den alten Nachbarn, verfügen diese über WLAN. Damit sind sie nicht die einzigen, im Funkspektrum tummeln sich hier ständig mindestens ein halbes Dutzend Funkzellen – kennt man vermutlich heutzutage aus jedem deutschen Mietshaus.

Grund genug für meinen Mitbewohner, den Kanal unseres WLAN-Access-Points mal in eine bisher wenig genutzte Region zu verschieben: Kanal 13. Nachtigall ick hör Dir trapsen, war da nicht mal was, mit Kanälen, die in den USA verboten sind, in Europa aber nicht? Muss wohl so sein, und da Debian ja fürsorglich ist, ist die Einstellung für USA default – obwohl, wenn man sich die Lösung ansieht, kann man Debian vermutlich nicht mal die Schuld in die Schuhe schieben.

Was also, wenn das Notebook jetzt nur Netze bis Kanal 11 anzeigt? Dann legt man unter Debian eine Datei in /etc/modprobe.d/ an. Wie die heißt, ist nicht so wichtig, bei mir heißt die wlan_EU.conf, auf .conf sollte sie wohl enden. Drin steht bei mir folgendes:

options cfg80211 ieee80211_regdom=EU

Eine Zeile, reicht aus. Die übergibt dem Kernelmodul cfg80211 beim Laden die passende Option und dann sind alle Kanäle sichtbar. An einigen Stellen im Weltnetz steht das “EU” noch in Anführungszeichen, also wenn’s ohne nicht klappt, dann vielleicht mit.