Install Windows Server 2008 on KVM/VirtIO

An example how to install a Windows Server 2008 guest on KVM with VirtIO (on a LVM volume in the example). Besides the installation medium you need the VirtIO drivers for windows in order to be able to access the disk device. You can get signed binary drivers here. Then set up a Windows VM with a command like this:

$ virt-install --connect qemu:///system --arch=x86_64 -n win2k8 -r 1024 --vcpus=2 
--disk pool=vmstore,size=50,bus=virtio,cache=none -c /path/to/win2k8.iso --vnc 
--noautoconsole --os-type windows --os-variant win2k8 --network network=subnet,model=e1000 
--disk path=/path/to/virtio-win-1.1.16.iso,device=cdrom,perms=ro

When the guest is running, shut it down and edit the os section of the XML file to look like this (otherwise Windows setup won’t let you install on the disk):

$ virsh destroy win2k8
$ virsh edit win2k8

Change the XML as follows:

<os>
  ...
  <boot dev='cdrom'/>
  <boot dev='hd'/>
</os>

Start the guest again:

$ virsh start win2k8

Connect to the VNC console and start the installation process. When you reach the form to select a disk device you won’t see any devices available. Click on “Load drivers” at the bottom left and load the drivers from E:\viostor\wlh{amd64|x86}. After the drivers are installed, you’ll see a disk device and can continue with the installation.

Sources

Windows 2000 48-Bit-LBA

Mich hätte gerade fast der Schlag getroffen. Ein Fileserver hier läuft trotz recht aktueller Hardware (Gigabyte GA-P35-DS3, C2D E4500) noch unter Windows 2000, weils das einfach noch tut. Da der Platz auf den momentan via Software gespiegelten 400GB IDE-Platten langsam recht knapp wird, wurden zwei 1TB SATA-Platten angeschafft, die ich gerade einbauen und über das onboard RAID des Mainboards laufen lassen wollte. Im Prinzip ja kein Problem. Neue Platten rein, den Controller (und zwar nur den Controller, an dem die neuen Platten hängen) auf RAID umgestellt, ins RAID-Setup und ab geht die Post. Denkste. Bis zum RAID-Setup hat alles problemlos gelappt. Als ich dann Windows bootete poppten auf einmal jede Menge Treiberinstallationsfenster für IDE-Kanäle und alles andere mögliche auf. Hab das mal durchlaufen lassen, aber nach einem Blick in die Datenträgerverwaltung war zwar das neue RAID-Array da, jedoch wurden die 2 alten Platten als unformatiert und mit nur 128GB Kapazität dargestellt. Habe dann auf Verdacht mal die Mainboard-CD rausgekramt und alle Chipsatztreiber nochmals drübergebügelt, nach einem Reboot jedoch das selbe Bild. Über big Google habe ich dann das hier gefunden, was eigentlich nur für Win2k kleiner SP3 gilt. Habs aber trotzdem versucht und als nach dem mittlerweile 3ten Reboot das auf der IDE-Platte liegende Hintergrundbild erschien war die Welt wieder in Ordnung. Jetz läuft gemütlich robocopy, der die alten Daten hoffentlich über Nacht auf die neuen Platten schiebt…ich hasse Computer(probleme) ;)

Windows 7 RC auf älterem PC installieren: Code Error 5

Als ich den Windows 7 RC gerade auf einem älteren PC (S. 939) installieren wollte, brach die Installation bzw. der Bootvorgang von der DVD mit folgendem Fehler ab: Cannot boot from CD - Code error: 5. Das Problem liegt anscheinend an einem zu alten BIOS, das den Bootsektor der DVD nicht korrekt auslesen kann. Nach etwas Recherche bin ich auf diesen Beitrag gestoßen, der erklärt, wie man die DVD dennoch mittels einem zusätzlichen Bootloader namens gujin booten kann – mit einer Boot-Diskette. Als Alternative zur Boot-Diskette wird auf ein Tutorial zur Konvertierung des Floppy-Images in eine Boot-CD mittels Nero verwiesen.

Da ich hier weder ein Floppy-Laufwerk (glaub das wär noch in irgendeinem Schrank aufzutreiben gewesen), funktionierende Disketten (die schon schwieriger) oder Nero installiert hatte, habe ich mich nach einer Alternativlösung umgesehen. Abhilfe schafft hier wieder mal Linux und mkisofs, mit dem sich das Floppy-Image einfach in ein CD-ISO umwandeln lässt. Diese Lösung setzt natürlich voraus, dass man in dem zu installierenden PC 2 optische Laufwerke hat, eines für die Windows7-DVD und eines für die Bootloader-CD. Also flugs eine Ubuntu-VM gebootet und darin das gujin-ISO gebastelt. Dazu lädt man sich in der VM zuerst die standard-Version von gujin herunter und entpackt das Archiv. In dem Archiv befindet sich eine Datei full.img.gz, die man wiederum entpackt. Die darin befindliche Datei floppy.144 schiebt man in einen Arbeitsordner (bei mir z.B. /tmp/floppyimage) und öffnet anschließend ein Terminal. Darin macht man dann ca. folgendes:

$ cd /tmp/floppyimage
$ mkisofs -pad -b floppy.144 -R -o /tmp/gujin.iso floppy.144

Und schon liegt in dem Ordner eine Datei gujin.iso, die sich auf CD brennen und booten lässt. Anschließend legt man die Bootloader-CD in das eine, die Win7-DVD in das andere Laufwerk und bootet von der soeben gebrannten CD. Nach kurzer Erkennungszeit lassen sich in gujin die verschiedenen zur Verfügung stehenden Bootoptionen auswählen. Wählt man hier das Laufwerk mit der Win7-DVD, bootet die DVD ohne Probleme und man kann sich daran machen, (wieder mal) ein neues System auf die Platte zu packen. Ist zumindest bei mir so, auf der doch recht betagten Hardware ist der Installer durchgelaufen, während ich diesen Post hier verfasst habe.

ATI Catalyst Setup stürzt bei Installation ab

ATI Catalyst Setup stürzt bei Installation ab

Ich wollte gerade auf meinem Vista 64 System den neuen 9.7er Catalyst Treiber für meine Radeon 4870 installieren. Leider quittierte der Installer den Dienst sowohl beim Treiber selbst als auch beim CCC mit obigem Bild. Kurze Suche im Internet brachte mich auf benedikts Blog, wo eine simple Lösung für das Problem beschrieben wird: einfach via Commandline installieren. Wer öfter in diesem Blog stöbert, wird wahrscheinlich gemerkt haben, dass ich Commandlines nicht ganz abgeneigt bin – also los gehts ;)

Zuerst die heruntergeladenen Dateien ausführen, wodurch die Installer entpackt werden. Im meinem Fall waren das die 2 Dateien 9-7_vista64_win7_64_dd.exe (display driver) und 9-7_vista32-64_ccc_lang2.exe (control center). Danach befinden sich in C:\ATI die entsprechenden Setup-Dateien in Unterordnern, die gleich benannt sind wie die heruntergeladenen Dateien. Um jetzt den display driver zu installieren sind folgende Schritte nötig:

  1. Im Startmenü nach Zubehör, Rechtsklick auf Eingabeaufforderung und dann “Als Administrator ausführen”. Dadurch öffnet sich eine CMD mit administrativen Rechten
  2. cd C:\ATI
  3. cd 9-7_vista64_win7_64_dd (je nach Treiberversion, Sprache und Betriebssystem)
  4. cd Bin64 (bei 64-Bit Betriebssystemen, bei 32-Bit Systemen heißt der Ordner wahrscheinlich Bin)
  5. ATISetup.exe -install -output screen

Analog funktioniert das auch mit dem CCC und dem Avivo Video Converter (Hydravision hab ich nicht getestet, da ichs nicht brauche).

Build a FlashMessenger system in ASP.NET MVC

Build a FlashMessenger system in ASP.NET MVC

Usually, I’m using PHP for web projects, but currently I’m working on an application using ASP.NET’s MVC framework. In many frameworks (e.g. Zend Framework or CakePHP) there is some kind of messaging system (flash messages), which allows to save a message to the session and to display it on the next request. This is useful in many situations, but mostly used after saving forms. So for example you recieve a POST request to create a new record, you save the record, redirect the user to the overview page and inform him about successful creation through a flash message which you saved before doing the redirect. As I didn’t find a way how to achieve this in ASP.NET MVC, I started to build an own solution. The result is a combination of a base controller, an action filter and a flashmessenger object which is stored in the session. Please note that I’m not too familiar neither with ASP.NET nor with C#/.NET in general, so if there are things to improve please feel free to correct me.

read more »

VPN-Verbindungen mit VBS automatisiert erstellen

Da ich meine Rechner relativ oft neu aufsetze, ist es ziemlich nervig, jedes Mal diverse VPN-Verbindungen per Hand einrichten zu müssen. Deshalb hab ich eine Runde im Netz gesucht und bis auf ein VB-Script in einem Forumpost nicht viel gefunden. Da das Script aber tut, was es soll, habe ich es schnell auf ein deutsches Windows umgeschrieben und um die Möglichkeit mehrerer Verbindungen erweitert. Einfach das Connections-Array anpassen, als dateiname.vbs abspeichern und ausführen. Macht Spaß dabei zuzusehen ;)

Getestet unter Windows XP Pro, sollte aber auch unter Windows 2000 funktionieren. Keine Ahnung wie es unter Vista aussieht, wenn es jemand probiert wäre ein kurzes Feedback super.

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")

Dim Connections
Connections = Array(Array("Verbindung 1", "127.0.0.1"), Array("Verbindung 2", "localhost"), Array("Verbindung 3", "192.168.1.1"))

With objShell
        .Run "Control ncpa.cpl"
        wscript.sleep 2000
End With 

For i = 0 To UBound(Connections)
  With objShell
          .AppActivate "Netzwerkverbindungen"
          wscript.sleep 500
          .SendKeys "%DN"
          wscript.sleep 500
          .SendKeys "%W"
          wscript.sleep 500
          .SendKeys "%NW"
          wscript.sleep 500
          .SendKeys "%VW"
          wscript.sleep 500
          .SendKeys "%N" & Connections(i)(0) & "%W"
          wscript.sleep 500
          .SendKeys "%KW"
          wscript.sleep 500
          .SendKeys "%H" & Connections(i)(1) & "%W"
          wscript.sleep 500
          .SendKeys "{TAB}{TAB}{ENTER}"
          wscript.sleep 500
          .SendKeys "{ESC}"
    wscript.sleep 500
  End With 
Next
Update: habe die Sleep-Zeiten auf 500ms erhöht, da ich teilweise Probleme hatte, wenn viele Verbindungen erstellt werden sollten.

Daten verschlüsseln mit TrueCrypt

Daten verschlüsseln mit TrueCrypt

Da ich mir kürzlich einen neuen USB-Stick zugelegt habe, habe ich heute mal ein paar Portable Apps (unter anderem PuTTY, Firefox, Thunderbird und Notepad++) daraufkopiert, um auch unterwegs an fremden Rechnern Zugriff auf gewohnte Tools zu haben. Da auch einige sensible Daten dabei sind (private Keys, gespeicherte Firefoxpasswörter, …) und sich meine Freude, sollte der Fall eintreten, dass ich es in einem Zustand geistiger Abstinenz schaffe den Stick zu verlieren, über besagte Daten in fremden Händen in Grenzen halten würde, habe ich die PortableSuite einfach komplett in einen TrueCrypt-Container gesteckt, der auf dem Stick liegt. Somit sind bei Verlust zwar die Daten auf dem Stick futsch, aber ich kann zumindest sicher sein, dass auch niemand anderes daran kommt. Wie das funktioniert, werde ich in den folgenden Schritten kurz erklären.

read more »

copymoveto.reg

Hab ich gerade in einem Unterordner gefunden: copymoveto.reg. Durch Hinzufügen der folgenden Registrykeys werden die Kontextmenüeinträge In Ordner kopieren... und In Ordner verschieben... aktiviert. Dafür einfach folgenden Code in ein Textfile kopieren, mit der Dateiendung .reg abspeichern und ausführen.

REGEDIT4

[HKEY_CLASSES_ROOTAllFileSystemObjectsshellexContextMenuHandlers]

[HKEY_CLASSES_ROOTAllFileSystemObjectsshellexContextMenuHandlersCopy To]
@="{C2FBB630-2971-11D1-A18C-00C04FD75D13}"

[HKEY_CLASSES_ROOTAllFileSystemObjectsshellexContextMenuHandlersMove To]
@="{C2FBB631-2971-11D1-A18C-00C04FD75D13}"

Set up multiple virtual hosts on XAMPP for windows

As I work on many projects and experiments on my local Windows development environment (XAMPP), I normally put all web stuff in the htdocs directory and usually I’m happy with it. For several projects (like CMS installations or experiments with frameworks) it’s very handy to have a separated virtual host in order to be able to have an own document root for that application. You just don’t have to bug with different paths and subdirectories and can focus on developing instead of setting base URLs etc.

For example, if I develop MVC applications which are meant to run in a host’s document root, I want to work with paths like http://<host>/<controller>/<action> without having to deal with subdirectories like http://<host>/directory/subdirectory/public/<controller>/<action>.

It just facilitates developing and even tough it’s a little more work at setting up a new project, usually it’s worth it. Here’s a quick and dirty how to achieve this in two steps.

read more »

Unglaublich…

…Windows Vista schaffts doch tatsächlich immer noch, A:\ als Defaultlaufwerk für die Treiberinstallation vom Datenträger zu wählen und dadurch das Öffnen des Dialogs durch die erfolglose Suche nach dem schon vor Jahren gewichenen Diskettenlaufwerk erheblich zu verlangsamen. Ein “Feature”, das mich immer schon genervt hat…