Das Rootserver-Experiment

Erlebnisse eines Rootserver (Beinahe-) Neulings

Verantwortlich für den Inhalt dieser Seite ist Mattias Schlenker, Inhaber Mattias Schlenker IT-Consulting Mattias Schlenker work Kochstraße 21, 04275 Leipzig. Germany work Fon +49 341 3032616. Die Steuernummer beim Finanzamt Leipzig erhalten Sie auf Anfrage. http://www.mattiasschlenker.de

Diese Seite läuft unter Wordpress 2.x.x. News und Kommentare können als RSS-2.0-Feed abonniert werden.

Archiv für 'Tips und Tricks'

Linux zieht OS X um

Monday, August 15th, 2011

Wir haben noch ein altes Powerbook (Unibody, 2008), bei dem die serienmäßige 160GB-Platte arg klein geworden ist. Die sollte nun gegen eine Momentus-Hybrid-Platte ausgetauscht werden. Geplant war, die Platte mit “dd” zu klonen und anschließend mit dem “diskutil” oder dem Festplattendienstprogramm zu strecken. Ging nicht, weil das Festplattendienstprogramm irritiert davon ist, dass die Schattenkopie der GPT nicht am Ende der Platte liegt.

Ich bin dann so vorgegangen:

  1. Beide Platten mit einem SATA2USB-Adapter an den Linux-Desktop-Rechner angeschlossen

  2. Mit
    dd if=/dev/sdx of=/dev/sdy bs=1M
    die alte (sdx) auf die neue (sdy) Platte geklont

  3. Mit
    gdisk /dev/sdy
    die Platte im GPT-Partitionierungstool geöffnet und eine Partition vom Typ 0700 auf dem Rest der Platte angelegt, mit w bestätigt – das korrigiert die Position der Backup-GPT

  4. Die Platte abgestöpselt und in den Mac eingebaut

  5. Den Mac gebootet und dort im Festplattendienstprogramm die leere Partition gelöscht und die OS X Partition etwas gestreckt

Klappte prima und erspart mir eine Neuinstallation von OS X. Ich habe jetzt noch Platz, um demnächst Ubuntu drauf unterzubringen.

Cross compiling uClibc and busybox

Saturday, July 2nd, 2011

There are a few articles from this blog that are old, but still known an read – even outside the small area of people speaking German. Thus this article written in English. My intention is to show how to cross compile uClibc and a BusyBox that is statically linked with this uClibc. The resulting BusyBox can be used to build some minimal Linux system. Around three or four Megabytes if you keep it really small. Nearly five years ago I wrote a tutorial on this topic (in German) on which I still receive feedback quite often. Since this tutorial is very outdated (module loading, initrd vs. initramfs, multiple initramfs), I plan to update it. This tutorial will show a quick alternative to get a working cross compiled BusyBox.

The content of this blog entry is partially based on the “semi official tutorial” how to cross compile BusyBox and partially on my experience with Linux from Scratch, especially Chapter 5 – Constructing a temporary system. At the time of this being written, I tried to make sure that very few patches are necessary – this will not always be the way, maybe GCC 4.7 will need more patches or BusyBox 1.19 does. uClibc 0.9.32 does not yet build cleanly on x86, thus I stay with uClibc 0.9.31.1 for this time:

Needed files

Sources and patches:

Configuration files:

1. Setting up the environment

Very few modifications to the environment are necessary. We just need three variables:

    export TGTARCH=i486
    export INSTDIR=/usr/local/crosstools
    export PATH=${INSTDIR}/bin:${PATH}

$TGTARCH is the targeted architecture, it should be either i486, i586, i686 or x86_64. Of course it is possible to build for several ARM or MIPS targets if you need a statically linked BusyBox for a rooted Android device or a DSL router. There is one drawback however: My configs for uClibc and BusyBox are very x86 specific. For the first build I recommend using the same target architecture as the machine you are building:

    export TGTARCH=` uname -m `

$INSTDIR is the location of the resulting toolchain. When building for different target architectures, you might also include the name of the target arch into the path. This makes deinstallation easier – you just have to delete a branch in the file system. For example:

    export TGTARCH=i486
    export INSTDIR=/usr/local/uclibc-crosstools-${TGTARCH}
    export PATH=${INSTDIR}/bin:${PATH}

2. Building binutils

Unpack the binutils and create a directory binutils-build on the same level of the file system, then configure binutils:

    tar xvjf binutils-2.21.tar.bz2
    mkdir binutils-build
    cd binutils-build
    ../binutils-2.21/configure \
        --target=${TGTARCH}-linux-uclibc \
        --prefix=${INSTDIR} --disable-nls \
        --disable-werror

Now build and install binutils:

    make && make install

3. Building GCC

As far as I tested, GCC needs a small patch to result in a properly working cross compiler. Besides this, GMP, MPFR and MPC must be present:

    tar xvjf gcc-4.6.0.tar.bz2
    tar xvjf mpfr-3.0.1.tar.bz2
    tar xvjf gmp-5.0.2.tar.bz2
    tar xvzf mpc-0.9.tar.gz
    mv mpfr-3.0.1 gcc-4.6.0/mpfr
    mv gmp-5.0.2 gcc-4.6.0/gmp
    mv mpc-0.9 gcc-4.6.0/mpc
    mkdir gcc-build
    cd gcc-4.6.0
    cat ../gcc-4.6.0-cross_compile-1.patch | patch -p1
    cd ../gcc-build

Now configure, build and install GCC:

    ../gcc-4.6.0/configure \
        --target=${TGTARCH}-linux-uclibc \
        --prefix=${INSTDIR} \
	--disable-nls --disable-shared --disable-multilib \
        --disable-libmudflap --disable-libssp --disable-libgomp \
        --disable-libquadmath --disable-target-libiberty \
        --disable-target-zlib --disable-decimal-float \
        --disable-threads --enable-languages=c \
	--without-ppl --without-cloog
    make && make install

4. Installing kernel headers

The kernel headers used should ressemble the version you intend to run the BusyBox on. Unpack and install them – the sanitizing step is taken from Linux from Scratch:

    tar xvjf linux-2.6.39.2.tar.bz2
    cd linux-2.6.39.2
    make INSTALL_HDR_PATH=dest headers_install
    find dest/include \( -name .install -o -name ..install.cmd \) -delete
    mkdir -p ${INSTDIR}/${TGTARCH}-linux-uclibc/include
    cp -rv dest/include/* ${INSTDIR}/${TGTARCH}-linux-uclibc/include

In the next steps ${INSTDIR}/${TGTARCH}-linux-uclibc will become more populated with headers, libraries and other development files for our build target.

5. Installing uClibc

Unpack uClibc and copy the config into the resulting directory. Since uClibc uses the same configuration scheme as the Linux kernel, some parameters in the config have to be changed with sed, and a run of make oldconfig is needed if you do not run my exact version of uClibc:

    unxz -c uClibc-0.9.31.1.tar.xz | tar xvf -
    cp uClibc-0.9.31.1.config uClibc-0.9.31.1/.config
    cd uClibc-0.9.31.1
    # This fixes the path of the linux headers
    sed -i 's%/usr/local/crosstools/i486-linux-uclibc/include%'${INSTDIR}/${TGTARCH}-linux-uclibc/include'%g' .config
    # This fixes the path to GCC and binutils:
    sed -i 's%/usr/local/crosstools/bin/i486-linux-uclibc-%'${INSTDIR}/bin/${TGTARCH}-linux-uclibc-'%g' .config
    make oldconfig

When building for x86_64 instead of i486-i686, replace the target as well:

    sed -i 's%TARGET_i386=y%#TARGET_i386 is not set%g' .config
    sed -i 's%# TARGET_x86_64 is not set%TARGET_x86_64=y%g' .config
    make oldconfig

Now build and install uClibc:

    make
    make install PREFIX=${INSTDIR}/${TGTARCH}-linux-uclibc/

Everything is in place now. In the next step we are building the statically linked BusyBox:

6. Building BusyBox

Our BusyBox will be statically linked. Since BusyBox also uses the configuration scheme from the Linux kernel, configuration is done by copying the .config file:

    tar xvjf busybox-1.18.5.tar.bz2
    cp busybox-1.18.5.config busybox-1.18.5/.config
    cd busybox-1.18.5
    make oldconfig CROSS_COMPILE=${TGTARCH}-linux-uclibc-

Build BusyBox and install it to the subdirectory _install:

    make CROSS_COMPILE=${TGTARCH}-linux-uclibc-
    make install CROSS_COMPILE=${TGTARCH}-linux-uclibc-

If your build system is x86_64, any i486 to i686 or x86_64 can be directly run. There will be no hassle with libraries since our binary is statically linked:

    # Should result in: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
    file _install/bin/busybox
    # Should print the BusyBox applets contained
    ./_install/bin/busybox

That’s it. Have fun with your BusyBox. In a short time I will tell you how to configure and build a minimal Linux system that just consists of a kernel, BusyBox and Dropbear for SSH logins – that is just enough Linux to do imaging and restoring tasks.

Ubuntu 10.04 als DomU (Xen) “debootstrappen”

Wednesday, September 1st, 2010

Nach vier Jahren ist es mal wieder Zeit für ein kleines Tutorial zur Installation von Ubuntu-domUs via debootstrap. Dank Aufnahme der pvops-DomU in den Vanilla-Kernel bringt Ubuntu einen Kernel mit, der lediglich kleine Anpassungen am Initramfs benötigt, um sauber auf einem aktuellen Xen 4.0 zu starten.

Installation von Debootstrap

Zuerst muss debootstrap vorhanden sein, am einfachsten natürlich mit apt-get install debootstrap. Unter Ubuntu kann mit debootstrap auch die Folgeversion installiert werden. Debian-User können das Ubuntu-Debootstrap direkt von http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/ herunterladen und mit dpkg -i installieren. Nutzer von RPM-Distributionen sollten ein Konvertierungstool installieren oder Debootstrap direkt aus dem .tar.gz installieren.

Vorbereitung eines Images

Für Xen DomUs haben Sie die Möglichkeit, physikalische Festplatten oder deren Partitionen zu nutzen oder Festplattenimages zu verwenden. Bei den Images wiederum gibt es zwei Möglichkeiten: Tap-Disks, die wachsen können und beispielsweise VMware VMDK-Format unterstützen oder “Plain-Images”, die als Loopback-Device gemountet werden können. Ich empfehle bei Testkonfigurationen grundsätzlich und bei Produktivsystemen für die Systempartitionen Images von Partitionen. Die Gründe: (more…)

Installation von Xen 4.0.1 mit pvops-Dom0 auf Ubuntu 10.04

Monday, August 30th, 2010

Xen 4.0 hat einige interessante Features eingeführt. Am Auffälligsten dürfte die Umstellung des vom Xen-Projekt gepflegten Dom0-Kernels auf “pvops” sein. Es handelt sich dabei um eine Technologie, mithilfe derer ein Kernel erkennt, ob er auf “nacktem Metall” (“bare metal” = direkt auf Hardware) oder auf dem Xen-Hypervisor läuft. Für unpriviligierte Domains (domU) ist dieses Feature bereits seit geraumer Zeit im Linux-Kernel enthalten, für dom0s is es neu und muss über den Kernel des Xen-Projektes installiert werden.

Ich habe einmal testweise ein Setup auf einer AMD64-Maschine erstellt, auf 32-Bit-Systemen sind lediglich einige Kleinigkeiten anders: Der Kernel muss PAE-Support haben und es muss zwingend ein Prozessortyp ausgewählt werden, der über Virtualisierungserweiterungen verfügt. Da heutzutage kaum Rechner als Xen-Host zum Einsatz kommen dürften, die nicht 64-Bit-tauglich sind, sollte sich die Frage nach pvops-Dom0s auf 32-Bit-Hardware kaum stellen. (more…)

Welchen Bootloader verwende ich?

Wednesday, August 25th, 2010

Ich arbeite an Rootservern, bei denen die verschiedensten Bootloader installiert sind. Mal Grub 0.9x, mal Grub 2, oft Extlinux (oh, ja, ich muss mal ein Tutorial zu Syslinux 4.0 machen…). Böse ist, wenn sowohl eine extlinux.conf als auch ein Ordner /boot/grub vorhanden sind. Was tun? Einfach im MBR nachschauen:

root@caesium:~#  dd if=/dev/sda bs=448 count=1 | strings
1+0 Datensätze ein
1+0 Datensätze aus
448 Bytes (448 B) kopiert, 4,2288e-05 s, 10,6 MB/s
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
 Error

Das ist wohl GRUB, beim Syslinux-MBR (Extlinux) sieht die Ausgabe so aus:

RPf1
Missing operating system.
f`f1
|fRfP
Ht[y9Y[
Multiple active partitions.
Operating system load error.

Xen-Nachtrag, Setup mit Routing

Friday, March 19th, 2010

Mir ist aufgefallen, dass mein gestriges Setup mit Dummy-Adapter und Vergabe der ersten IP-Adresse des Netzes auf das Interface dummy0 nicht die optimale Konfiguration darstellt: Hier wird das alte Setup mit separatem Router 1:1 nachgebaut, was zur Folge hat, dass die drei Adressen für Broadcast, Netz und Gateway nicht für Produktivsysteme nutzbar sind. Das beschriebene Setup ist daher nur sinnvoll, wenn ein Server in zwei Stufen von bridged auf routed umgestellt werden soll.

Beim Neuaufsetzen eines Servers ist es besser, gleich eine PointToPoint-Lösung mit 255.255.255.255-Maske aufzusetzen. Damit können bei einer 29-Bit-Maske (255.255.255.248) acht statt fünf IP-Adressen genutzt werden — satte 60% mehr (bei vier, fünf, oder sechs Bit Masken fällt der Gewinn natürlich kleiner aus). Die Änderungen gegenüber dem Setup von gestern sind, dass dummy0 in der /etc/network/interfaces der dom0 entfällt. In der /etc/xen/xend-config.sxp wird das extern erreichbare Interface eingetragen (in der Regel eth0):

(network-script 'network-route netdev=eth0')
(vif-script     'vif-route netdev=eth0')

Die Netzwerkkonfiguration der domU bekommt nun die primäre IP-Adresse der dom0 als Gateway eingetragen, dazu das Schlüsselwort pointopoint (nur ein ‘t’!) und die “dichte” Netzmaske:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 172.16.16.114
        netmask 255.255.255.255
        gateway 192.168.1.2
        pointopoint 192.168.1.2
        post-up ethtool -K eth0 tx off

Vielen Dank an…

  • Umstellung Debian Etch mit XEN 3 auf routed …die fleissigen Dokumentatoren im Hetzner-Wiki
  • …den Admin bei 1&1, dessen Default-Setup mit pointopoint auf der primären IP mich dazu anregte, hier nochmal nachzuforschen

Ein Tag mit Xen: Vanilla-Xen und -Kernel auf Ubuntu Karmic installieren

Thursday, March 18th, 2010

Bislang laufen alle unsere Dom0s entweder auf Ubuntu 8.04 oder openSUSE 11.1 oder 11.2. Für einen neuen alten Server wollte ich Ubuntu 9.10 als Basis nehmen, auch um im Mai leichter auf 10.04 wechseln zu können. Bei Ubuntu ist die Xen-Situation nicht besonders rosig: Laut halboffizieller Doku steht weder ein aktueller Xen, noch ein brauchbarer Kernel bereit. Immerhin ein Xend (der Verwaltungsdaemon) in Version 3.3. Erfahrungen seit 3.2 haben gezeigt, dass sich die Schnittstellen kaum noch ändern, so dass der 3.3er Daemon mit dem 3.4er Xen zusammen arbeiten sollte. Denkste.

Ziel waren zwei Server: Ein 64-Bit-System fürs Büro und ein 32-Bit-System für einen alten (AMD Athlon XP 2000, 512MB, 80GB) Hetzner Rootie (Presse-Testsystem). Beide Systeme wurden zunächst mit einem Ubuntu Minimalsystem ausgestattet. Bei Hetzner geschah dies aus dem Notfall-System per debootstrap (fertige OS-Images werden nur einmal am Tag aufgespielt, was stört, wenn man nach einer abgeschossenen Installation neu aufsetzen möchte) und der Server zuhause wurde per Debian-Installer per PXE-Netboot eingerichtet. Die zwei Möglichkeiten, einen Hetzner-Server mit Ubuntu oder Debian auszustatten — debootstrap und den Debian-Installer im SSH-Modus — erkläre ich bei Gelegenheit im Detail. (more…)

Linux auf dem Asus A52JR

Monday, March 1st, 2010

Seit einigen Tagen steht ein Asus A52JR (konkret: das A52JR-SX109V der aktuellen Saturn-Aktion) im Büro und wartet darauf, zum “Alltagsnotebook” (und zur schnelleren Ergänzung zu den von mir so geliebten Netbooks) mit Linux beglückt zu werden, konkret soll Ubuntu 9.10 zum Einsatz kommen, vor einem selbst kompilierten Kernel und einer manuellen Installation von Grafiktreibern schrecke ich nicht zurück. Bislang gibt es lediglich Teilerfolge zu berichten, diese sollten aber immerhin anderen interessierten bei der Kaufentscheidung helfen. Wegen der verwandten Innereien dürften die hier beschriebenen Vorgehensweisen auch beim A72JR, beim K52J und beim K72J sowie bei X52JR und X72JR anzuwenden sein (die K-Modelle werden über den regulären Fachhandel vertrieben und sind etwas eleganter und mit hübscherer Tastatur ausgestattet). (more…)

Ubuntu 9.10 Karmic Koala und VMware Player

Sunday, October 25th, 2009

Ich hatte seit Wochen ein Mainboard nebst zugehörigem Quadcore-Opteron Phenom nebst 8GB RAM herumliegen. Das war ursprünglich ein Build-/Testsystem, sollte aber jetzt meinen doch schon etwas älteren (zweieinhalb Jahre) Desktop ablösen, der nun als Testsystem weiter dienen wird. Auf einen neuen Rechner installiert man natürlich ein neues OS — statt bislang Ubuntu 8.04.x sollte 9.10 RC zum Einsatz kommen.

Probleme bereitete die Installation und Nutzung des VMware-Players, den ich gerne als recht flexible Virtualisierungslösung einsetze.

(more…)

Linux: Verschlüsselte und komprimierte Backups auf DVD

Wednesday, February 4th, 2009

Ich sichere nach wie vor geschäftsrelevante Daten auf DVD, allerdings stellte mich keine der fertigen Lösungen vollkommen zufrieden. Meine Anforderungen:

  • Starke Verschlüsselung: Das Backup muss sicherer sein als diese unsägliche ZIP-Verschlüsselung hinreichend sicher sein und ein statistischer Angriff soll keinen Erfolg versprechen.

  • Gute Komprimierung: Ich möchte in kurzer Zeit das Backup klein eindampfen können und beim Zugriff effizient entpacken, also nur die Dateien, die ich benötige.

  • Mountbares Backup: Ganz ohne vorheriges Entpacken soll ein sofortiger Zugriff auf alle Dateien im Backup möglich sein.

  • Keine unverschlüsselten temporären Dateien: Weder beim Packen noch beim Entpacken sollen unverschlüsselte temporäre Dateien anfallen, einerseits aus Sicherheitsgründen, andererseits weil eine temporäre Datei auf einem zufällig verschlüsselten Dateisystem Prozessorlast erzeugt.

Bis vor kurzem habe ich einfach Archive mit Tarballs mit Twofish verschlüsselt (openssl bietet ein komfortables Subkommando) und diese auf DVD gebrannt. Neben den oben genannten Nachteilen kam das Problem dazu, dass auf einem ISO-9660-Dateisystem die Dateigrößengrenze bei 2GB lag.

Meine Lösung sah eine Kombination aus bekannten Technologien vor: Eine Containerdatei sollte per losetup zum blockorientierten Gerät mutieren, dort wiederum sollte mit cryptsetup ein verschlüsselter Datenträger entstehen, der wiederum ein komprimiertes Squashfs-Dateisystem aufnehmen sollte. Klingt kompliziert? Ist es aber nicht:

Benötigt werden die im Tutorial /home reisetauglich verschlüsselt erwähnten Pakete und die squashfs-tools sowie SquashFS-Module für den laufenden Kernel. (more…)

Dreimal Windows — und keines weiss vom anderen

Saturday, January 24th, 2009

OK, ein beinahe reines Windows-Thema ist ungewöhnlich hier. Aber ich habe gerade viele Leser aus dem Windows-Umfeld, denen es weiterhilft, wenn Sie wissen, wie man mit einer Linux-Live-CD und dem Bootloader GRUB seine Windows-Installationen besser in den Griff bekommt. Darum im Tool der Woche: GRUB und fdisk.

Wer Windows in der von Microsoft vorgesehenen Reihenfolge — erst XP, dann Vista, dann 7 — installiert, wird selten Probleme bekommen: Jedes Windows erkennt seine Vorgänger und bindet diese in den eigenen Bootloader ein. Trickserei ist aber gefragt, wenn kein Windows vom anderen Kenntnis haben soll oder man zu jeder Zeit ein beliebiges Windows durch eine Neuinstallation ersetzen möchte. Der Standard-Bootmanager von Windows scheitert hieran, Abhilfe schafft der kostenlose und von Linux-Distributionen bekannte GRUB. Netter Nebeneffekt meiner Lösung: Jedes Windows hat den Laufwerksbuchstaben C: für die Systempartition.

Im folgenden b eschreibe ich, wie man Windows XP, Windows Vista und Windows 7 unabhängig voneinnader installiert. Je nach Bedarf können Sie auch zweimal XP und einmal 7 installieren oder die Reihenfolge variieren. Einzige Einschränkung ist die Limitation bootfähiger Windows-Versionen auf drei, was durch die maximale Anzahl an primären Partitionen bedingt ist. Wer GRUB auf eine zweite Festplatte, Diskette, USB-Stick oder CD auslagert, kommt auf vier.

Als Werkzeugkiste kommt eine Sidux-Live-CD in Version 2008-04 zum Einsatz. Im Prinzip sollte es jede Live-CD tun, die Gparted und fdisk mitbringt. Schlimmstenfalls sind auf Grund anderer Mountpoints etc. einige Parameter anders einzugeben.

(more…)

Akoya E1210: Ubuntu 8.04.1 Alternate Install von USB-Stick

Friday, July 4th, 2008
Dieser Beitrag dürfte für viele Nutzer mit Erscheinen der finalen Version von Ubuntu 8.10 hinfällig sein. Installieren Sie Ubuntu 8.04.1 nur, wenn Sie auf Long Term Support angewiesen sind. Siehe Das perfekte Netbook-Setup: 1. Installation von Ubuntu/Xubuntu 8.10

So, nach den Startschwierigkeiten gestern klappte nun die Installation von Ubuntu 8.04.1 auf dem Akoya E1210. Als Installationsmedien verwendete ich einen USB-Stick (SD-Karten funktionieren ebenfalls). Bootfiles hierfür habe ich so zusammengestellt, dass auch unbedarfte Nutzer schnell zur Alternate Install kommen dürften:

(more…)

Tool der Woche: tar

Tuesday, June 10th, 2008

Klar kennen Sie tar. Wer hat den “Tape Archiver” etwa noch nicht benutzt, um Archive zu ver- oder entpacken. Der typische Einsatz beim Entpacken eines (zumeist Quellcode-) Archives ist (gegebenenfalls mit “z” statt “j”, wenn es sich um ein mit gzip komprimiertes Archiv handelt):

tar xvjf archiv.tar.bz2

Oder wenn stattdessen ein oder mehrere Ordner oder Dateien zu einem Archiv zusammengefasst werden sollen:

tar cvjf archiv.tar.bz2 ordner/

Doch tar kann einiges mehr. Als erster Einsatzbereich sei da das Archivieren auf Bandlaufwerke zu nennen. Statt dem Archivnamen gibt man einfach den Namen der Gerätedatei an, auf dem die Sicherung landen soll. Im Zeitalter der Sicherung auf optische Datenträger oder des Off-Site-Backups auf irgendwelche Remote-Server schwindet der Nutzen dieser Funktion von tar aber immer mehr und Tools wie rsync, auf das ich später eingehen möchte oder mksquashfs (für’s Backup auf optische Medien) gewinnen an Bedeutung. Dennoch gibt es genügend Einstzbereiche für tar:

(more…)

Produktivitätsbooster Squid

Tuesday, May 27th, 2008

Ihr kennt das Problem: Manchmal sitzt man einfach da und lenkt sich surfenderweise ab. Blogs sind besonders beliebt, aber auch Spiegels “Panorama” hat als eine Art “Edel-Bild” immer interessantes zu bieten. Nur den Stecker der FRITZ!Box zu ziehen wäre kontraproduktiv, denn ab und an muss man auch im Netz recherchieren.

Es geht einfacher mit Squid als Proxy, der nebenbei noch den Zugang für mehrere Rechner beschleunigt und dabei hilft, Statistiken der Netznutzung im Unternehmen zu generieren.

Der relevante Abschnitt meiner /etc/squid/squid.conf:

(more…)

Durchgereicht: PCI passthrough bei Xen 3.2rc

Monday, December 31st, 2007

Update, 17. Januar 2008: Xen 3.2 final wurde heute veröffentlicht. Golem berichtet darüber.

Ein großes Problem bei vielen Virtualisierungstechnologien ist die fehlende Möglichkeit, in einem Gastsystem “rohen” Zugriff auf einzelne Hardwarekomponenten zu erhalten. Zwar bieten VMware und andere das Durchreichen von USB-Geräten, doch das ist eine Lösung, die für physikalisch vom Netz des Wirts getrennte Firewalls oder RAID-Subsysteme nicht wirklich akzeptabel ist. Eine interessante Abhilfe bietet Xen, wo mit vertretbarem Aufwand Gäste direkten Zugriff auf PCI-Karten bekommen.

(more…)

Praktisches Archiv-Filesystem: SQUASHFS

Sunday, October 14th, 2007

Auf Single-Layer-DVDs passen bekanntlich nur 4,7 Mrd. Bytes, was verglichen mit aktuellen Festplattengrößen nicht besonders viel ist. Wer häufig Projektdateien (oder Logdateien) in einer Form archivieren muss, die später einen leichten Zugriff erlaubt, wird zudem schnell an die Grenzen der typischen CD- und DVD-Dateisysteme stoßen:

  • ISO 9660 erlaubt nur Dateigrößen bis 2GB
  • UDF benutzt viel Platz fürs Dateisystem selbst
  • ISO 9660 mit Komprimierungserweiterungen packt nur einzelne Dateien und ist nicht standardkonform
  • komprimierte Archive müssen bei vielen Formaten komplett entpackt werden um an den Inhalt heranzukommen

Früher habe ich mich damit beholfen, komprimierte Tar-Archive direkt (!) auf CDs und später DVDs zu schreiben. Der Nachteil dieser für Datenträger mit sequentiellem Zugriff konzipierten Lösung liegt auf der Hand: Um an einzelne Dateien heranzukommen muss der gesamte Datenträger eingelesen und das gesamte Archiv entpackt werden.

Eine bessere Lösung liegt nahe: SQUASHFS kommt vor allem bei Live-Distributionen für den Container zum Einsatz, wird deshalb bei vielen Distributionen mitgeliefert. Dieses Dateisystem kann gemountet werden: So findet man schnell Einzeldateien ohne sich /tmp/ volllaufen zu lassen. Dank der Duplikatserkennung ist die Komprimierung zudem äußerst effizient. Ein SQUASHFS-Dateisystem wird wie ein ISO-Dateisystem erstellt:

mksquashfs /mein/projekt /tmp/projekt.sqfs

Gebrannt wird dieses als wäre es ein ISO9660-Dateisystem

growisofs -dvd-compat -speed=8 -Z/dev/scd0=/tmp/projekt.sqfs

So erstellte Datenträger können auf jedem Linux mit geladenem SQUASHFS-Modul gemountet werden:

mount -t squashfs /dev/scd0 /media/cdrom0

Fehlt das Kernelmodul, können Userspace-Tools zum Entpacken wie unsquashfs zum Einsatz kommen.

Nachtrag, 9. November 2007:

Schrott wird flott (X-Link)

Monday, September 24th, 2007

In meinem privaten Blog entsteht derzeit eine kleine Serie zum Wiedernutzbarmachen eines alten Subnotebooks (im konkreten Fall geht es um ein Fujitsu-Siemens Lifebook B142). Die Installation auf dem Gerät ohne CD-Laufwerk und Netzwerkkarte dürfte auch den einen oder anderen Rootserveradmin interessieren, der für unterwegs ein billiges, leichtes “Admin-Frontend” sucht und darauf Linux installieren möchte:

Der Büro-Bootserver: PXELINUX im Praxiseinsatz

Monday, September 17th, 2007

Mit dem Umzug unseres büroweiten DHCP-Servers auf eine eigene Xen-Instanz haben wir die Gelegenheit genutzt, auch den Bootserver neu aufzusetzen: Für Distributionstests, Arbeiten an Kundenrechnern oder Backups — die leichter durchzuführen sind, wenn keine geöffneten Dateien vorliegen — leisten wir uns schon seit einer Weile eine Xen-Instanz, die PXE fähige Clients mit einer Auswahl verschiedener via Netzwerk gestarteter Systeme und Linux-Installer zu versorgen. Viel Aufwand ist das Aufsetzen eines Bootservers nicht: Es genügt ein richtig konfigurierter DHCP-Server und ein TFTP-Daemon. Hilfreich, aber keinesfalls zwingend erforderlich ist ein NFS-Server. Linux-Distributionen und BSDs, die einen NFS-Server benötigen, werde ich deshalb zu gegebener Zeit separat behandeln.

Erster Schritt: DHCP-Server

Erster Schritt bei der Konfiguration ist der DHCP-Server, ideal ist die weit verbreitete und extrem konfigurable Version des Internet Software-Consortiums, die bei debianesken Distributionen als dhcp3-server verfügbar ist. Sollte ein DHCP-Server im DSL-Router vorhanden sein, deaktivieren Sie diesen dauerhaft: Zwei DHCP-Server, von denen einer Boot-Informationen ausliefert und der andere nicht, können ganz schön Verwirrung stiften. Eine kompakte, aber für den Start per PXE ausreichende Konfigurationsdatei /etc/dhcp3/dhcpd.conf kann wie folgt aussehen: (more…)

uClibc-Chroot-Umgebung

Thursday, June 21st, 2007

Wer das 4MB Mini-Linux bauen möchte oder einfach ein kompaktes statisches Binary beispielsweise der BusyBox oder des Dropbear-SSH-Servers benötigt, sollte das in einer uClibc-Chroot-Umgebung tun. Denn uClibc führt nicht nur zu kompakteren Binaries, sondern vermeidet jegliche dynamisch gelinkten Bibliotheken — beim Bauen einiger Tools gegen glibc, die Login-Funktionen nutzten, werden einige glibc-Komponenten immer dynamisch verwendet. (more…)

USB-Stick für Admins

Thursday, February 15th, 2007

Für Wartungsaufgaben habe ich immer ein Knoppix auf USB-Stick am Schlüsselbund, mit dem sich beim Kunden vor Ort auch mal schnell havarierte Server flott machen oder Datensicherungen erstellen lassen. Ich habe “meinen” Stick nun mit Bootmenü versehen und zusätzlich den openSUSE-Installer darauf untergebracht (erspart Windows-Support im Freundeskreis).

Ihr könnt das “Komplettpaket” unter news.mattiasschlenker.de herunterladen.

Die FRITZ!Box als Rootserver

Saturday, January 27th, 2007
Die hier beschriebene Vorgehensweise lässt sich mit aktueller Firmware nicht mehr durchführen. Ich rate daher zur Verwendung von Freetz zur Erstellung modifizierter Firmware-Images.

Ich gebe es zu: So ganz passt die FRITZ!Box nicht in das übliche Beuteschema dieses Blogs. Doch neuere Boxen mit USB-Anschluss lassen sich in einen per DynDNS ständig erreichbaren Server umbauen. Als Webserver kann sogar ein Apache mit PHP dienen und auf Wunsch lädt der Bittorrent-Client ctorrent auch nachts ohne aktivem PC im Netz selbständig Linux-ISOs aus dem Netz.

Wie es funktioniert? Eine uClibc-Chroot-Umgebung auf USB-Festplatte und ein Script, das die Umgebung mountet und einen Dropbear SSH-Server in ihr startet, genügt. Ich habe alle Komponenten vorbereitet und biete sie zum Download an.

Gehen Sie wie folgt vor, um die Chroot-Umgebung zu starten: (more…)

openSUSE 10.1 erhältlich

Thursday, May 11th, 2006

Zumindest auf dem FTP-Server der “Gesellschaft für wissenschaftliche Datenverarbeitung Göttingen” ist openSUSE 10.1 angekommen (Golem): (more…)

Alles ganz einfach

Wednesday, February 22nd, 2006

In Kundenbeständen habe ich noch einige Warenwirtschaftsserver, die seit ein paar Jahren ohne große Updates laufen. Auf einem tut S.u.S.E. (damals noch mit Punkten) 6.3 seinen Dienst. Diese Rechner wurden nie groß aktualisiert, doch gelegentlich erfordert die sie umgebende Infrastruktur ihren Tribut: mal ist ein neuer Kernel fällig, weil eine Netzwerkkarte gestorben ist und die neue von 2.2.5 nicht erkannt wird, mal will ein RSYNC-Backup in die sich fortentwickelnde Infrastruktur eingebunden werden.

Ich bin nach vielen Problemen dazu übergegangen, die behutsamsten aller Updates vorzunehmen um Seiteneffekte möglichst auszuschließen. Mein Favorit sind derzeit statisch gegen uClibc und die beim Kunden installierten Kernel-Header gelinkte Binaries, die ich per Softlink gegen die alten austausche. Diese sind kompakt und bereiten praktisch keinen Ärger.

Beim Kompilieren hilft das uClibc-RootFS-Image (lässt sich Loopback mounten) und ein gutes Dutzend Configure-Flags sowie ein paar nachträglich installierte Bibliotheken (zlib, openssl…).

Solch eine Aktion mag vordergründig betrachtet dem Kunden teurer kommen als die Lizenzkosten für ein simples Windows-Update. Unterm Strich dürfte jedoch das Unix- oder Linux-System, das einfach mal sieben oder acht Jahre durchläuft mehr Punkte sammeln.

PS: Der betreffende Host ist nur wenigen Kassenterminals “ausgesetzt”. Das mit dem Hacken braucht Ihr gar nicht erst zu probieren…

Rohrleitungsbau

Wednesday, January 25th, 2006

Ih habt Euch schon öfters die Frage gestellt, wie Ihr alle Tabellen und Inhalte einer MySQL-Datenbank schnell und unkompliziert auf einen anderen Server kopiert? Mit einer kleinen Pipeline geht das ganz schnell:

mysqldump -u mattias –password=’geheim’ sourcedb | \
ssh -C mattias@ziel.xyz \
“mysql -u mattias –password=’geheim’ draindb”

(more…)