Donnerstag, 18. April 2013

Langsame USB Sticks unter Kubuntu beschleunigen

Unter Kubuntu werden USB-Sticks mit der Option "sync" gemountet. Dies hat auf meinem System zur Folge, dass nur mit ca. 150kB/s auf den Stick geschrieben wird. Man erkennt einen solchen Mount, an der Ausgabe des Befehls mount:


/dev/sdc1 on /media/disk type vfat (rw,nosuid,nodev,sync,gid=46,umask=002,uhelper=hal)

Um das Verhalten umzustellen, muss man in der Datei

/etc/halevt/halevt.xml

alle 4 Stellen mit "-o sync" entfernen und danach mit

service halevt restart

die Änderungen aktivieren. Danach werden USB-Sticks so gemountet:

/dev/sdc1 on /media/disk type vfat (rw,nosuid,nodev,gid=46,umask=002,uhelper=hal)

und die Geschwindigkeit ist deutlich höher. Aber Vorsicht! Durch das fehlende Sync wird der Schreib-Cache aktiviert, so dass Schreibzugriffe den Eindruck erwecken, sie währen abgeschlossen, aber in Wirklichkeit schreibt Linux im Hintergrund noch auf den USB-Stick. Deshalb den Stick nach einem Schreibvorgang nicht abziehen, sondern sauber aushängen.

Mittwoch, 3. April 2013

VMware Server 2.0 auf Ubuntu 12.04 LTS installieren

Ich habe (mal wieder) einen Ubuntu 12.04 LTS-Server mit einem VMware Server 2.0.2 versorgt. Dieses Produkt ist seit 2010 eingestellt, funktioniert aber immer noch prächtig. Allerdings ist die Installation unter einem neueren Linux nicht so einfach. Die Vorgehensweise ist für Fedora hier beschrieben. Unter Ubuntu macht man Folgendes:

Zuerst die notwendigen Pakete installieren:
apt-get -y install linux-headers-$(uname -r) build-essential patch unp module-assistant
Dann das Paket VMware-server-2.0.2-203138.x86_64.tar.gz auspacken und installieren:

unp VMware-server-2.0.2-203138.x86_64.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Hierbei alle Werte auf den Vorgaben belassen, aber 'vmware-config.pl' noch nicht starten lassen. In der Datei '/etc/default/grub' diesen Eintrag setzen, um den NMI Watchdog zu deaktivieren:

GRUB_CMDLINE_LINUX="nmi_watchdog=0"

und die Änderung mit

update-grub2

aktivieren und rebooten. Danach diese Befehle eingeben, um VMware auf den neueren Kernel vorzubereiten:

cd ~
m-a prepare
ln -s /usr/src/linux-headers-`uname -r`/include/generated/autoconf.h /usr/src/linux-headers-`uname -r`/include/linux/autoconf.h
ln -s /usr/src/linux-headers-`uname -r`/include/generated/utsrelease.h /usr/src/linux-headers-`uname -r`/include/linux/utsrelease.h

Die obigen Befehle muss man auch eingeben, nachdem ein neuer Kernel installiert wurde.
wget http://www.jlbond.com/downloads/vmware-server-2.0.2-203138-linux_2.6.42+.tar.bz2
tar xvjf vmware-server-2.0.2-203138-linux_2.6.42+.tar.bz2
patch -d /usr/bin -p0 < vmware-config.pl.patch
pushd /usr/lib/vmware/modules/source
mkdir backups; cp -a *.tar backups/
mkdir working; ls *.tar | xargs -n 1 tar -C working/ -xf
pushd working
patch -p1 < ~/vmware-server-2.0.2-203138-linux-2.6.42.patch
tar cf ../vmci.tar vmci-only
tar cf ../vmmon.tar vmmon-only
tar cf ../vmnet.tar vmnet-only
tar cf ../vsock.tar vsock-only
popd; rm -rf working/ ;popd
pushd /usr/lib/vmware/lib; mv libxml2.so.2 SKIP-libxml2.so.2 ; popd

Danach kann VMware konfiguriert werden

vmware-config.pl

Hierzu benötigt man einen gültigen Lizenzschlüssel. Er beschwert sich auch über die Version des GCC Compilers - hier einfach die Frage, ob der Compiler ok ist, mit "yes" beantworten. Nach dem Ende des Skriptes läuft der Server schon und kann unter

http://<server>:8222/

oder

https://<server>:8333/

erreicht werden. Anmelden kann man sich mit den Zugangsdaten von Root, sprich Benutzername "root" und dessen Passwort. Hat er noch keines, muss eines mit

passwd root

vergeben werden. Sinnvollerweise erlaubt man als erstes einem anderen die Administration und entfernt dann wieder das Passwort für root beispielsweise mit

passwd -l root

Standardmäßig sind die Ports 902/TCP, 8222/TCP und 8333/TCP für alle offen. Sollte der Server am Internet betrieben werden, dann am besten über die Firewall sperren, z.B. so alle Zugriffe über eth0:

iptables -A INPUT -i eth0 -p tcp --dport 902 -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 8222 -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 8333 -j DROP

Will man dann selbst zugreifen kann man beispielsweise einen SSH-Tunnel aufbauen:

ssh -L 8222:localhost:8222 <server>

dann kann man über

http://localhost:8222/

auf den Server zugreifen.