Archiv der Kategorie 'Praxis'

Festplatten mit dd und netcat übers Netzwerk spiegeln

  • auf beiden Rechnern z.B. Knoppix booten
  • auf Zielrechner: netcat -l -p 9000 | dd of=/dev/sda
  • auf Quellrechner: dd if=/dev/hda | netcat 192.168.1.151 9000

IP-Adresse muss entsprechend an die reale des Zielrechners angepasst werden.
Anmerkung: Das Verfahren sollte natürlich nur in vertrauenswürdigen Umgebungen eingesetzt werden, da keine Authentifizierung stattfindet. Alternativ wäre wohl SSH sinnvoll.

pls-Playlists direkt mit mplayer abspielen

Ein kleines Script

#!/bin/bash
mplayer `wget $1 -O - --quiet | grep http | cut -d"=" -f2`

Kann dann mit URL zu einer Playlist (z.B. von Livestreams) als Parameter aufgerufen werden.
Auf die richtige Schreibweise mit den Backticks (`) achten.

…oder direkt mplayer -playlist (URL)

Ping: Übertragung fehlgeschlagen. Fehlercode 65

oder „Ping: transmit failed, error code 65″ … In der Supportdatenbank des Herstellers des entsprechenden (sogenannten) Betriebssystems ist vermerkt, dass Zone Alarm den Fehler hervorrufen kann. Interessanterweise trifft dies auch zu, wenn Zone Alarm selbst garnicht gestartet ist. Dass es installiert ist reicht schon aus. Abhilfe ist also es wirklich mit dem Uninstaller zu deinstallieren (oder vermutlich es richtig zu konfigurieren). Ich vermute, dass bei der Installation das System erstmal so verstellt wird, dass (fast) alles geblockt wird und erst wenn ZA gestartet und richtig konfiguriert ist Pakete durchgelassen werden.
Bemerkenswert ist noch, dass diese Konfiguration offenbar zur Filterung von ICMP und TCP führt, nicht jedoch von UDP-Paketen. Daher funktionieren einige Dienste wie DNS und Filesharing-Protokolle – Ping und HTTP etc. jedoch nicht.

Subversion per DAV und SSL auf Debian

Installation von Subversion mit Apache-Modul (über SSL). Es wird ein Beispielrepository mit dem Namen „test“ angelegt. Dieses kann dann per https://localhost/test/ ausgecheckt werden. Die Passwörter für die Benutzer werden hier im Beispiel einfach aus der /etc/shadow-Datei genommen, also von den Linux-Systembenutzern. Anstatt /etc/shadow kann (wird normalerweise) eine seperate Datei für die Nutzerdaten verwendet werden. In der authz-Datei (im Repository-Konfigurationsverzeichnis) müssen diese User dann den entsprechenden Repositories bzw. Unterverzeichnissen zugeordnet werden (rw = Leseschreibzugriff; r = nur Lesezugriff). Im Beispiel gibt es einen Benutzer mit dem Namen „user0″.

Zunächst die benötigte Software installieren (wenn noch nicht installiert sollte dabei Apache und Subversion durch die Abhängigkeiten gleich mitinstalliert werden):

aptitude install subversion libapache2-svn

Apache konfigurieren (Vhost anlegen und Port 443 für SSL setzen)

/etc/apache2/sites-available/subversion:

<VirtualHost 127.0.0.1:443>
ServerName localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
DocumentRoot /var/subversion
<Location />
Order allow,deny
Allow from all
DAV svn
SVNParentPath /var/subversion/public
AuthzSVNAccessFile /var/subversion/public/test/conf/authz
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Test Subversion Repository"
AuthUserFile /etc/shadow
</Location>
</virtualhost>

/etc/apache2/ports.conf

Listen 80
Listen 443

Verzeichnis für Repositories anlegen, zugreifbar machen durch www-data (Apache) und test-Repository mit svnadmin erstellen.

mkdir -p /var/subversion/public
chown -R www-data:www-data /var/subversion
su www-data
cd /var/subversion/public
svnadmin create test

Definition der Benutzer

/var/subversion/public/test/conf/authz:

[groups]
admin = root
test-developers = user0

[/]
@admin = rw

[test:/]
@test-developers = rw

Im Beispiel gibt es 2 SVN-Benutzergruppen: admin und test-developers, denen jeweils ein Benutzer, root und user0 zugeordnet ist. Auf alle Repositories und Unterverzeichnisse (/) haben die Benutzer der Gruppe admin Lese- und Schreibzugriff (rw). Außerdem haben die Benutzer der Gruppe test-developers Lese- und Schreibzugriff (rw) auf das Repository „test“ und alle untergeordneten Verzeichnisse.

Vhost per Symlink aktivieren, ggf SSL-Zertifikat anlegen, SSL-Modul aktivieren, Apache neustarten:

ln -s /etc/apache2/sites-enabled/subversion /etc/apache2/sites-available/subversion
mkdir /etc/apache2/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key
a2enmod ssl
/etc/init.d/apache2 restart

Um das Repository auszuchecken muss dann https://localhost/test/ benutzt werden. In einem realen System würde der VHost natürlich nicht auf localhost gesetzt werden.

Debian als NAT-Router (ip-forwarding, masquerading)

Mit einer WLAN-Karte (eth3) habe ich eine Verbindung ins Internet ueber 192.168.178.1. Die Debian-Kiste soll den Rechnern in meinem Netz (192.168.1.0/24) die Route genattet bereitstellen. An sich is das keine komplizierte Sache, aber hier nochmal niedergeschrieben, wie es wohl vorgesehen ist das unter Debian zu machen.

in /etc/network/interfaces:

# (lokal)
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

# (fremdes wlan)
auto eth3
iface eth3 inet static
wireless-mode Managed
wireless-essid netzwerkname
wireless-key off
address 192.168.178.53
netmask 255.255.255.0
broadcast 192.168.178.255
gateway 192.168.178.1

in /etc/sysctl.conf:


net.ipv4.ip_forward = 1

ipmasq installieren:


aptitude install ipmasq

Statt ipmasq zu installieren, koennen auch die folgenden 2 Zeilen z.B. in die /etc/rc.local ergaenzt werden (ipmasq setzt auch nur automatisiert mit iptables die richtigen Regeln). Ich hab jedoch nicht ueberblickt was das, was ipmasq macht, fuer nen Unterschied zur manuellen Variante ist. Aber ipmasq ist wohl eher der Debian-way es zu machen.


iptables -t nat -P POSTROUTING DROP
iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE

Gentoo auf MacBook

Vermischtes / noch existierende Probleme

  • 64 Bit System (amd64) auch möglich. Jedoch teils mehr Stress mit vorkompilierter/propritärer Software. Das System kann zwar 32 bittiges auch laufen lassen. Für das Flash-Plugin muss aber z.B. auch der Firefox 32 bit sein. Ebenso kann es bei ndiswrapper mit den 32bit Windowstreibern Probleme geben. Statt der Durchmischung habe ich lieber erstmal ein 32 Bit System genommen.
  • Beim Beenden von X11 bleibt der Bildschirm oft schwarz und die Konsole ist nicht mehr zu sehen. Es können jedoch noch blind Eingaben gemacht werden (rebooten oder X nochmal starten).
  • Fn-Taste – funktioniert noch nicht – dadurch auch noch kein PageUp/Down Home/End verfügbar :(

Festplatte/Partitionen

Beim MacBook wird eine GUID Partition Table (GPT) verwendet – im Gegensatz zu dem bei PC BIOSs herkömmlichen Verfahren der Speicherung als MBR. Weil jedoch z.B. Grub damit nicht klarkommt kann parallel immernoch eine MBR-Partitionstabelle existieren. Diese kann mit rEFIt angelegt werden und bei einer Änderung der Partitionen anhand der GPT auch im Nachhinein nachsyncrhonisiert werden.

  • rEFIt über OS X installieren
  • Partitionen unter Linux nicht mit (c)fdisk, sondern immer mit parted bearbeiten. Nach Änderung neustarten und über rEFIt den MBR synchronisieren. Dann nochmal (von rEFIt aus) neustarten.
  • Eine /boot Partition (mit Kernels für alle Systeme und der Grub-Config) sollte innerhalb der 4 MBR-Partitionen liegen, denn Grub kann nur auf diese zugreifen. Der Kernel selbst kann jedoch auch dahinter liegende Partitionen benutzen (auch als /). Wird /dev/sda3 für /boot genommen läuft die Grub-Installation also: grub; root(hd0,2) setup(hd0)

2. und 3. Maustaste

Im Kernel:
Device Drivers – Macintosh device drivers – [*] Support for mouse button 2+3 emulation
In /etc/sysctl.conf:

dev.mac_hid.mouse_button_emulation = 1
dev.mac_hid.mouse_button2_keycode = 87
dev.mac_hid.mouse_button3_keycode = 88

(mittlere Maustaste (2): F11; rechte Maustaste(3): F12)

WLAN

Es handelt sich um einen bcm4328 Chip. Dieser funktioniert leider nicht (wie der Name vielleicht erst vermuten ließe) mit dem bcm43xx-Kernelmodul, sondern bisher offenbar nur mit ndiswrapper:

FEATURES="-sandbox" emerge ndiswrapper
emerge wpa_supplicant wireless-tools

Windowstreiber herunterladen und entpacken: http://download297.mediafire.com/czzdjrxtjejg/exuymodkstx/bcm4328.zip

ndiswrapper -i bcmwl5.inf
modprobe ndiswrapper

Evt. dann noch ndiswrapper in /etc/modules.autoload.d/kernel-2.6 eintragen, dass es beim Booten automatisch geladen wird.

Keyboard

Ich möchte eine Belegung haben, die dem normalen QWERTZ-Layout bei PCs entspricht.
Zunächst das de-Layout nehmen und kopieren:

zcat /usr/share/keymaps/i386/qwertz/de.map.gz > /etc/custom.map

Um die „< " und "^" Tasten richtig zu belegen in der Kopie /etc/custom.map die Keycodes 86 und 41 vertauschen. Beim (neuen) Keycode 86 asciitilde durch asciidegree austauschen. (TODO: "ß" fehlt auch noch...) Außerdem für AltGr (rechte Apfeltaste) anhängen:

keycode 126 = AltGr

In /etc/conf.d/keymaps die customized Map nehmen:

KEYMAP="/etc/custom.map"

Sound

Ich benutze die einzelnen alsa-driver statt die im Kernel enthaltenen Module.
Im Kernel: Sound card support als Modul; Advanced Linux Sound Architecture und Open Sound System komplett deaktiviert.
/etc/make.conf:

ALSA_CARDS="hda-intel"

media-sound/alsa-driver-1.0.15 emergen
In /etc/modprobe.d/options:

options snd-hda-intel model=mbp3

Die integrierten Speaker hören sich ziemlich beschissen an (viel schlimmer als unter OSX).

Externer Monitor

Der Anschluss eines externen Monitors und die Aktivierung mittels X-Konfiguration hat aus unklaren Gründen nicht funktioniert. Mit folgendem Workaround lässt sich dennoch ein externer über DVI angeschlossener Monitor betreiben:

Monitor vor dem Anschalten anschließen. Unmittelbar nach dem Anschalten MacBook selbst zuklappen. Das Bild sollte nun auf dem externen Monitor erscheinen. Unter X wird höchstwahrscheinlich eine falsche Auflösung benutzt werden. Diese lässt sich, nachdem X gestartet wurde, mit folgendem Befehl korrigieren:
xrandr --output TMDS-1 --preferred

Manchmal erscheint nach dem Starten von X kein Bild. In dem Fall X-Server abschießen (CTRL+ALT+BACKSPACE) und erneut versuchen.

irclib.py mit SSL

Hier ein Patch, um irclib.py SSL benutzen zu lassen. Leider sind die Klassen (insbesondere die Benutzung des Sockets) nicht so gut gekapselt, dass sich einfach eine Abgeleitete Klasse erstellen ließe. Richtige Sockets unterscheiden sich von den SSL-Objekten auch durch die unterschiedliche Benennung der read/recv bzw. write/send Funktionen.

Python IRClib 0.4.6 SSL Patch

Der ServerConnection-Klasse wird beim Connecten ein SSL-Objekt self.sslsocket gesetzt. Die Funktionen, die bisher direkt auf self.socket.recv() und self.socket.send() zugegriffen haben, benutzen nun self.sslsocket.read() und self.sslsocket.write().

Update (19.01.2009): Seit python-irclib 0.4.7 wurde die SSL-Funktionalität direkt integriert und ist als Flag für connect() verfügbar, womit sich das Patchen erübrigt.