Monatsarchiv für April, 2006
Erstmal wünsche ich allen LeserInnen frohe Ostern!
Heute geht es weiter mit dem Einrichten der Desktop Umgebung. Erst wird ein Upgrade auf Dapper durchgeführt, dann die nötigen Desktop Pakete installiert und am Schluss wird ein zusätzlicher X-Server auf dem Host System konfiguriert um die Ausgabe des UML Ubuntus zu übernehmen.
Jetzt führen wir erstmal das geplant Upgrade auf Dapper Drake durch. Dazu müssen nur die apt sourcen angepasst werden (natürlich im Ubuntu UML)
/etc/apt/sources.list:
deb http://archive.ubuntulinux.org/ubuntu dapper main
Dann noch “schnell” apt-get update && apt-get dist-upgrade ausführen und schon hat man Dapper installiert.
Das komplette Ubuntu wie man es von einer CD installieren würde, gibts per:
aptitude -y install ubuntu-standard ubuntu-desktop
Es werden ca. 550 MB runtergeladen und 900 Pakete installiert, das kann also dauern. Ich installiere hier absichtlich die Gnome Variante, weil ich KDE schon unter Gentoo benutze. Wenn man KDE installieren möchte, einfach kubuntu-desktop verwenden. Ich würde noch empfehlen per apt-get install ssh ssh Client und Server zu installieren, kann immer praktisch sein, s. weiter unten.
Nachdem die Installation nun durchgelaufen ist, sollten erstmal die Runlevel Links aufgeräumt werden:
for x in `echo acpi-support acpid alsa-utils apmd \
avahi-daemon bittorrent bluez-utils \
brltty cupsys evms festival gdm lvm \
hdparm hplip mdadmn mdadm-raid pcmcia \
pcmciautils postfix powernowd \
powernowd.early ppp pppd-dns uplsash \
vbesave x11-common`
do
update-rc.d -f $x remove
done
Einen Kommentar zu diesem Chaos erspar ich mir mal… man sollte einer neue Distribution ja unvoreingenommen gegenüber treten
Wenn man noch irgendwelche Einstellungen zu machen hat, z.B. ssh keys, vi Feintuning, User anlegen etc, ist jetzt der richtige Zeitpunkt. Als nächstes wäre ein “reboot” nicht verkehrt, nur zur Sicherheit. Ansonsten kann man sich jetzt als User einloggen, entweder über die Konsole oder über SSH. Auf dem Host System sollte man jetzt einen 2. XServer starten, z.B. per:
Xorg :1 -ac -fullscreen &
Hinweise: Das -ac ist böse, ich weiß. Es erlaubt jedem X-Client sich mit dem X-Server zu verbinden, ähnlich xhost +. Zum testen aber ideal. Man könnte den X Server natürlich auch in einem Fenster starten, da ist der aha Effekt besonders groß. Allerdings werden Hotkeys wie ALT+TAB vom ersten X-Server abgefangen und sind in Ubuntu nicht benutzbar.
Zwischen den beiden XServern kann man dann Mithilfe von STRG+ALT+F7 und STRG+ALT+F8 wechseln. Aktuell sollte man auf dem 2. XServer aber noch nichts sehen, das kommt erst jetzt. Auf dem Gastsystem starten wir jetzt z.B:
DISPLAY=192.168.100.1:1 xterm &
ein xterm sollte erscheinen. Wenn das soweit funktioniert kann man auch schwere Geschütze auffahren, z.B.
DISPLAY=192.168.100.1:1 gnome-session &
Tada. Ubuntu. Vermutlich mit Fehlermeldungen bzgl. alsa, sound, acpi etc, das kann man später noch korrigieren.
Jetzt folgt nur noch fein Arbeit. Es empfiehlt sich z.B. die DISPLAY Variable Global zu exportieren:
echo "export DISPLAY=192.168.100.1:1" >> /etc/profile
Zum starten des Ubuntu Systems, verwende ich folgendes Script:
#!/bin/bash
Xorg :1 &
screen -dmS ubuntu linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty con0=null,fd:2 con1=fd:0,fd:1 mem=256M eth0=tuntap,,,192.168.100.1
sleep 60
ssh christian@192.168.100.2 DISPLAY=192.168.100.1:1 gnome-session &
Vorallem den username und das sleep 60 kann und sollte man natürlich an seine Bedürfnisse anpassen.
Fertig. Viel Spaß mit dem so eben installierten Ubuntu! Demnächst folgt noch ein Beitrag mit weiterenführenden Gedanken (ich denke da gerade an XGL, per NFS geteiltes homedir, SKAS Kernel Patch fürs Host System, etc), Links und Screenshots.
So, 16. Apr 2006 um 19:59 Uhr
Christian
Die Einrichtung des Netzwerks für UML ist verhältnismäßig komplex, weswegen ich diesem Thema ein eigenen Abschnitt widme. Grundsätzlich gibt es zwei Möglichkeiten, das UML System ins Netz zu bringen, per Masquerade oder per Bridge des Host Systems. Die Variante mit Bridge ist flexibler, da das Gastsystem über eine eigene IP im Lokalen Netzwerk ansprechbar ist, ist aber nicht immer realisierbar und deutlich komplexer als die Masquerade Variante, weshalb ich diese hier beschreiben werde. Beim Masquerade arbeitet das Host System als NAT Router und bringt das Gastsystem so ins Netzwerk, das sollte ausreichen. Außerdem muss man sich so keine Gedanke über die Dienste die im Gastsystem laufen, machen da sie eh nicht von aussen erreichbar sind.
Als erstes muss das Hostsystem für Masquerading vorbereitet werden:
modprobe ip_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Wenn die Module nicht gefunden werden, müssen sie nach kompiliert werden. Gleiches gilt für net-firewall/iptables. Automatisch kann man das Modul per /etc/init.d/modules.autoload.d/kernel-2.6 laden. Die iptables Regel fügt man am besten in /etc/conf.d/local.start ein.
Hinweis: Damit das Netzwerk funktioniert, ist es nötig, dass sys-apps/usermode-utilities installiert ist.
als nächstes wird das Gastsystem mit Parametern fürs Netzwerk gestartet:
linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty con0=null,fd:2 con1=fd:0,fd:1 mem=256M eth0=tuntap,,,192.168.100.1
192.168.100.1 wird die virtuelle IP des Host Systems sein.
nach einloggen in das Gastsystem vergeben wir eine private IP, versuchen das Hostsystem zu erreichen und wenn das klappt, wird die default route gesetzt und die DNS Informationen kopiert.
ifconfig eth0 192.168.100.2 up
ping 192.168.100.1
route add default gw 192.168.100.1
scp root@192.168.100.1:/etc/resolv.conf /etc/resolv.conf
nun noch die /etc/hosts anpassen:
127.0.0.1 localhost
192.168.100.1 master
192.168.100.2 ubuntu-uml
Wenn das soweit funktioniert, kann man mit dem UML Ubuntu ins Internet und z.B.
apt-get update && apt-get upgrade
ausführen, um das System zu aktualisieren.
Natürlich sollte man die Netzwerkkonfiguration noch in den entsprechenden Ubuntu files eintragen, damit man es nicht bei jedem start des UML manuell konfigurieren muss. /etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.100.2
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255
gateway 192.168.100.1
Weitere Infos: http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html
Fortsetzung: Ubuntu in Gentoo installieren (Folge 4 – Desktop)
Sa, 15. Apr 2006 um 11:17 Uhr
Christian
Sodele, das frisch installierte Ubuntu läuft schonmal in einer chroot Umgebung. Aber das ist natürlich nicht sehr sinnvoll, weil sich so Prozesse des Hosts Systems (in unserem Fal Gentoo) und des Gast Systems (Ubuntu) in die Quere kommen. Also wird ein Usermode Linux für Ubuntu eingerichtet, darin kann man dann alles ausprobieren ohne das Hostsystem zu beeinträchtigen.
Dazu muss erstmal der Usermode-Kernel installiert werden, das passiert per:
echo "sys-kernel/usermode-sources ~x86" >> /etc/portage/packages.keywords
USE="-symlink" emerge sys-kernel/usermode-sources
emerge sys-apps/usermode-utilities
USE=”-symlink” deshalb, damit der link von /usr/src/linux nicht auf die usermode sources umgeändert wird, die sollen ja nicht der Standardkernel werden. Als nächstes wird der usermode kernel kompiliert und als binary installiert. Ich habe hier für folgendes verwendet:
genkernel --no-bootsplash --no-gensplash \
--kerneldir=/usr/src/linux-2.6.15-usermode-r1 --arch-override=um kernel
Wenn man mit der Kernel Konfiguration nicht zufrieden ist, kann man noch –menuconfig hinzufügen. Allerdings ist die Konfiguration die genkernel für UML verwendet soweit okay, denke ich. Also nächstes wird das gebaute Kernel Binary noch eine per PATH erreichbare Stelle, bei mir ist das ~/bin, und die module ins Ubuntu Image kopiert.
mount /ubuntu.file /mnt/ubuntu -o loop
cp /usr/src/linux-2.6.15-usermode-r1/linux ~/bin/
cp -R /lib/modules/2.6.15-usermode-r1-bs2 /mnt/ubuntu/lib/modules/
Sollte beim kompilieren etwas schief gehen, ich hatte z.B. Probleme mit einer aktuellen glibc Version, kann man einen Binary Kernel runterladen, z.B. von hier: http://www.user-mode-linux.org/~blaisorblade/
im weiteren Verlauf müssen noch ein paar Konfigurationsdateien des Gastsystems angepasst werden, damit UML einwandfrei läuft. Das Dateisystem sollte noch unter /mnt/ubuntu gemountet sein, also liegen dort auch die entsprechenden Dateien.
Die /etc/fstab des Gastsystems:
/dev/ubd0 / ext3 defaults 0 0
/dev/ubd1 none swap sw 0 0
proc /proc proc defaults 0 0
sys /sys sysfs defaults 0 0
/etc/inittab: Alle bis auf eine konsole auskommentieren:
1:2345:respawn:/sbin/getty 38400 tty1
# 2:23:respawn:/sbin/getty 38400 tty2
# 3:23:respawn:/sbin/getty 38400 tty3
# ...
zusätzlich
echo "vc/0" >> etc/securetty
ein entsprechendes swap file wie oben in der fstab erwähnt sollte noch angelegt werden, z.B mit:
dd if=/dev/zero of=/ubuntu.swap bs=1024k count=500
mkswap /ubuntu.swap
ACHTUNG: Vorher auf jeden Fall /mnt/ubuntu mit umount /mnt/ubuntu unmounten. Sonst fliegt einem das Dateisystem um die Ohren (Ja, ich spreche aus Erfahrung
)
Als letzten Schritt für heute können wir das UML mit ubuntu dann booten:
linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty \
con0=null,fd:2 con1=fd:0,fd:1 mem=32M
mem=32M ist die Speichergröße, die dem UML zugewiesen wird, zum testen reichen erstmal 32MB. Wenn man aber richtig arbeiten will, sind 256 MB schon empfehlenswert. Natürlich abhängig davon, wie groß der RAM des Host System ist (in meinem Fall 1 GB, da sind 256 MB für das Gastsystem kein Problem).
Weitere Infos:
http://www.gentoo.org/doc/en/uml.xml
http://user-mode-linux.sourceforge.net
Fortsetzung: Ubuntu in Gentoo installieren (Folge 3 – Netzwerk)
Fr, 14. Apr 2006 um 21:24 Uhr
Christian
Da mich immer mehr Leuten mit Fragen zu Ubuntu bombardieren, ich da aber kaum mitreden kann, hab ich mir mal Ubuntu Dapper zusätzlich in Gentoo installiert. Realisiert wird das ganze per UML, UserModeLinux. Damit ist es möglich ein Linux in einem anderen zu starten, ohne das sich beide stören.
Diese Anleitung richtet sich an erfahrene Linux bzw. Gentoo User, die die Befehle falls nötig auch auf andere Versionen, IPs oder Verzeichnisse übertragen können und falls nötig einen deplatzierten Zeilenumbruch erkennen 
Kommentare, Verbesserungen und auch Kritik sind natürlich erwünscht.
Der erste Teil beschreibt die Installation des Ubuntu Basis Systems per debootstrap.
Zu allererst mal die aktuelle debootstrap Version installieren:
echo dev-util/debootstrap ~x86 >> /etc/portage/package.keywords
emerge debootstrap
Dann ein Loopback Dateisystem vorbereiten (man kann natürlich auch eine extra Partition benutzen) Die 4000 entspricht der Größe der Datei in MB. Das Basis System benötigt ca 300 MB, eine Komplettinstallation 2,5 GB. Also 4 GB ist ein guter Wert.
dd if=/dev/zero of=/ubuntu.file bs=1024k count=4000
mkfs.ext3 /ubuntu.file
mkdir /mnt/ubuntu
tune2fs -c 0 -i 0 /ubuntu.file
mount /ubuntu.file /mnt/ubuntu -o loop
Jetzt einfach per
/usr/sbin/debootstrap --arch i386 breezy /mnt/ubuntu http://archive.ubuntulinux.org/ubuntu
Das Basissystem von Ubuntu installieren.
Hinweis:Zum aktuellen Zeitpunkt enthält das debootstrap ebuild noch kein Script für ubuntu Dapper Drake, weshalb hier erstmal Breezy installiert wird. Ein dist-upgrade zu einen späteren Zeitpunkt ist kein Problem.
Als nächstes sollte man proc und sysfs mounten per
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
Jetzt kann man schon per
chroot /mnt/ubuntu /bin/bash
ins neu installierte Ubuntu wechseln.
Weiter geht es also mit der Einrichtung des Grundsystems, zu empfehlen wäre da:
dpkg-reconfigure passwd
echo ubuntu-uml > /etc/hostname
/usr/sbin/base-config new
Do, 13. Apr 2006 um 17:39 Uhr
Christian
Sodele. Letztes Wochenende war die Operationlan 6. Diesmal hatten wir 15 “baugleiche” Server von der wwcl. Ich als Linuxfreak im Team durfte die natürlich einrichten. Also erstmal einen komplett mit allem drum und dran mit Gentoo aufgesetzt, sprich Apache, MySQL, PowerDNS, Teamspeak, unrealircd, Steam, Source, Quake4, UT2004 etc eingerichtet. Dazu noch ein Anwender taugliches Webinterface geschrieben, zum Starten und Beenden der Dienste. Das war an einem Tag getan. Ich hab mal den Gentoo Installer benutzt, sonderlich überzeugt hat er mich allerdings nicht.
Danach also per
tar cpf /freigabe/backup.tar / –exclude=/tmp –exclude=/dev –exclude=/proc –exclude=/sys –exclude=/mnt –exclude=/freigabe –exclude=/usr/portage
Ein backup machen, unkomprimiert deshalb, damit das entpacken nicht so lange dauert. Ich hab mich dann dazu entschieden die anderen Server per LiveCD zu booten und per Script folgendes zu machen: per dd die Partitionstabelle einzuspielen, dann mit sfdisk -R die Partitionstabelle neu einlesen, die Dateisysteme erstellen und mounten, ein stage1 tarball laden und entpacken (damit die Devices Nodes erstellt werden) und dann das backup laden und entpacken.
Danach musste ich dann noch manuell grub-install hd0 ausführen, IP und hostname ändern und fertig. Klingt einfach? war’s auch. Aber ein paar Details hatte ich dann doch nicht bedacht. Manche Server hatten 2 Netzwerkkarten bei der eth0 und eth1 die Plätze mit dem normalen Kernel im Vergleich zum LiveCD Kernel getauscht hatten. Aber kein großes Problem, Kabel um stecken und fertig. Dazu kam noch, dass ein Server einen Raidcontroller hatte, der kam bei booten gar nicht hoch. Die Anzahl der Server hatte am Ende doch noch gereicht, auch wenn einer einen Hardwaredefekt hatte und der mit dem Raidcontroller nicht booten wollte. Interessant wurde es aber erst als alle Server soweit liefen. Dann saß ich erst etwas ratlos vor dem Mainserver, der Intranet, DNS, IRC und Teamspeak zur Verfügung stellen sollte. Ein nmap -A -v ergab, das alle entsprechenden Ports offen waren. Jedoch verbinden ging nicht, Connection refused oder nach kurzer Zeit Connection Timeout. Nach einer halben Stunde hab ich den Server entnervt gewechselt. Bis mir aufgefallen ist, dass nmap bei Hardware Adress AsusTek anzeigt, obwohl überall Intel Karten verbaut waren. Was war passiert? ein User hatte doch glatt die IP des Server bei sich eingetragen. Wohl die Felder IP Adresse und DNS Server vertauscht. Naja kann man nichts machen, Problem erkannt, Problem gebannt. Hatte uns natürlich aber um 2 Stunden mit den Turnieren zurück geworfen, den ohne Intranet ging natürlich keine Turnier Verwaltung.
Das nächste Problem waren die CS: Source Server aus irgendeinem Grund hatten alle einen Ping von 2000-4000. die anderen Server wie CS 1.6 und Q4 gingen aber einwandfrei. Also mal per screen auf die Konsole geschaut, selbst auf Tasteneingaben reagierten sie träge. Also hab ich mal den deamon ge’strace’t und gesehen, dass er sich mit verschiedenen IPs im Internet verbinden wollte, und das trotz “-nomaster +sv_lan 1 -insecure”. Naja also alle Server ins Internet gebracht und das ging dann auch einwandfrei. Das Letzte Problem war dann noch, dass die Leute vom Team Turnier die Server die nicht auf dem Standardport liefen, nicht administrieren konnten. Das lag aber an HLSW, ingame ging’s.
Wollte ich nur mal schriftlich festhalten, vielleicht hilfts ja wem.
Mo, 03. Apr 2006 um 12:58 Uhr
Christian