mcready
Goto Top

Debian 6 unter Hyper-V R2 integrieren

Da die Integrations-Tools nicht für Debian zur Verfügung stehen, backen wir uns selbst einen Kernel

Hinweis vorab: Das Grundgerüst für dieses Tutorial waren mehrere Anleitungen zum gleichen Thema von Jan Kappen auf http://www.hyper-v-server.de.
Leider waren diese in manchen Punkten nicht ganz vollständig oder auch nicht mehr ganz aktuell (Kernel 2.6 vs. 3.2), deshalb auch dieses Tutorial hier mit meinen Erkenntnisse der letzten Tage.
Wer einen Fehler findet (ich hoffe mal nicht) oder einen Verbesserungsvorschlag hat, bitte unten posten.

Ausgangssituation:
Wir haben einen bestehenden Hyper-V Server, ich gehe von Hyper-V R2 aus. Ob Standalone oder Server 2008 (R2) mit Hyper-V Funktionalität ist hierfür egal.
Ziel ist es, einen Debian 6 Server unter Hyper-V zum Laufen zu bekommen. Auf eine grafische Oberfläche bei Debian verzichten wir. Dafür wollen wir aber GBit Netzwerk und SCSI-Festplatten.
Die Anleitung bezieht sich auf den Hyper-V Manager, wer SCVMM verwendet sollte eigentlich schon soweit sein, daß er für die ersten Schritte keine Anleitung mehr benötigt.
Kein Muß, aber eine Empfehlung ist die Verwendung von Putty oder einem anderen SSH-Client statt der Konsole unter Hyper-V. Zum einen ist die Fenstergröße bei Putty nicht fest vorgegeben. Zum anderen empfinde (nicht nur) ich es zumindest so, daß die Textausgabe beim Kompilerlauf an der Hyper-V Konsole sehr langsam ist und das Kompilieren dadurch wesentlich länger dauert als per SSH-Client.

Wir legen erstmal im Hyper-V Manager einen neuen virtuellen Computer an:
Ein paar CPUs, eine IDE-Festplatte an IDE-Controller 0, CD-ROM an IDE1. Der SCSI-Controller und die "Alte Netzwerkkarte" werden ebenfalls noch hinzugefügt, die "Netzwerkkarte" bleibt auch drin.
Beide Netzwerkkarten können auch gleich so verbunden werden, wie es später mal sein soll. Eine Internetverbindung ist für die Einrichtung auf jeden Fall aber erstmal notwendig, da wir noch ein paar Sachen nachziehen müssen.
Das BIOS steht auf "Von CD starten", COM1, COM2 und Floppy brauchen wir i.d.R. nicht mehr. Grundsätzlich gilt: Weniger ist mehr, außer beim RAM und der CPU. Wenn möglich bitte 16GB RAM und 4 Kerne mit 100% Leistung vergeben. Dies kann später auch noch an den tatsächlichen Bedarf angepaßt werden.
Detaillierte Anleitungen zum Einrichten eines virtuellen Computer unter Hyper-V gibt es genug im Netz oder auch in verschiedenen Büchern, das ist aber nicht Sinn und Zweck dieses Tutorials.

Als erstes downloaden wir die aktuelle Debian 6 CD für eine Netzinstallation aus dem Netz und speichern diese auf dem Hyper-V Server ab:
Diese ISO-Datei wird dem neuen Hyper-V Computer auch als Boot-Medium zugewiesen:
Eigenschaften
IDE-Controller 1
Medien
Abbilddatei:
Zum ISO-Image browsen
Alternativ:
Doppelklick auf den virtuellen Computer
Medien
DVD-Laufwerk
Datenträger
Zum ISO-Image browsen

Nun wird der virtuelle Computer gestartet und Debian 6 in einer Basis-Installation mit den netzwerkspezifischen Angaben gestartet.
Auf den Installations-Prozess werde ich hier nicht näher eingehen, da auch das nicht das Haupt-Thema ist und es dazu einige Tutorials gibt. Außerdem ist dieser Prozess fast selbsterklärend.
Wenn alles richtig durchgeführt wurde, landen wir nun am Login-Prompt und melden uns direkt als "root" mit dem während der Installation vergebenen Paßwort an. Als Root? Böse? Nicht lieber mit SU arbeiten? Nein, erstmal nicht. Fast alles, was jetzt kommt benötigt Root-Rechte. Wirklich etwas beschädigen kann man auch noch nicht, da das System neu aufgesetzt ist. Falls heißt es eben nochmal neu installieren und nächstes Mal besser aufpassen (Lerneffekt). Nachdem wir das System in Hyper-V integriert haben, gilt das natürlich nicht mehr.

Zunächst prüfen wir, daß alle Dateien auch auf dem aktuellen Stand sind:
apt-get update
apt-get upgrade

Danach beziehen wir erstmal ein paar notwendige Pakete:
apt-get install -y build-essential
apt-get install -y ncurses-dev kernel-package fakeroot
apt-get install -y linux-headers-`uname -r`
apt-get install -y linux-source-`uname -r | awk -F"-" '{print $1}'`  

Schon jetzt geben wir den ersten Parameter für Hyper-V aus:
echo -e "hv_vmbus\nhv_storvsc\nhv_blkvsc\nhv_netvsc" >> /etc/initramfs-tools/modules  

Und dann noch ins richtige Verzeichnis ...
cd /usr/src

Alles bis hier müssen wir auf diesem virtuellen Computer nur einmal machen. Sollte eine neue Kernel-Version benötigt oder weitere Treiber in den Kernel einkompiliert werden, geht es ab hier weiter. Die einzigste Ausnahme wird weiter unten noch hervorgehoben.

Zunächst benötigen wir einen aktuellen, stabilen Kernel. Bevorzugt wird ein Kernel ab Version 3, da hier die Hyper-V Unterstützung schon im Kernel möglich ist. Ich nehme den 3.2.7er, da dies zum Zeitpunkt der aktuelle ist.

wget -c ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-3.2.7.tar.xz
xz -d linux-3.2.7.tar.xz
tar xf linux-3.2.7.tar
rm linux-3.2.7.tar
cd linux-3.2.7
cp /boot/config* ./.config

So, nun die oben erwähnte Ausnahme:
Als nächstes starten wir den Befehl
make localmodconfig
Dieser optimiert den Kernel an die gegebene lokale Hardware. Auf gut deutsch: Warum auf einem virtuellen Rechner Grafikkartentreiber von AMD oder nVidia installieren? Oder 20 verschiedene Netzwerkkarten? Das kompilierte Kernel-Image wird dadurch gegenüber der Standard-Debian-Konfiguraion um bis zu 80% kleiner, die Zeit zum Kompilieren wird ebenfalls reduziert. Je nach Hardware dauert dieser Vorgang bis zu 45 Minuten.

Danach kommt das allseits beliebte
make menuconfig

Über dieses Tool wird der Linux-Kern über eine "grafische" Oberfläche noch im Detail etwas angepaßt:

Device Drivers ---> [Enter]
SCSI device support ---> [Enter]
SCSI disk support [Leertaste bis "M" eingetragen ist]
<Exit>

Staging drivers ---> [Enter]
Microsoft Hyper-V virtual storage driver [Leertaste bis "M" eingetragen ist]
Microsoft Hyper-V virtual network driver [Leertaste bis "M" eingetragen ist]
<Exit>

Microsoft Hyper-V client drivers [Leertaste bis "*" eingetragen ist]
Microsoft Hyper-V Utilities driver [Leertaste bis "M" eingetragen ist]
<Exit>

XFS-Dateisystem bei Bedarf:
File-Systems ---> [Enter]
XFS filesystem support [Leertaste bis "M" eingetragen ist]
Unteroptionen außer Debugging mit Leertaste eintragen (geht nur *)
<Exit>
<Exit>
Do you wish to save your new configuration? Yes!

Hiermit haben wir unsere .config-Datei soweit, daß wir den Kernel kompilieren können. Als nächstes also:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-hyper-v kernel_image kernel_headers
Idealerweise wird der zweite Befehl kurz vor Feierabend gestartet. Je nach Hardware dauert es nämlich mehrere Stunden, bis der Kernel kompiliert ist.

Vorausgesetzt, es tritt kein Fehler auf, gehen wir nach Beendigung des Kompilieren mit "cd .." ein Verzeichnis hoch.
Dann wird der Kernel installiert und der virtuelle Computer neu gestartet:

dpkg -i linux-headers-3.2.7-hyper-v_3.2.7-hyper-v-10.00.Custom_amd64.deb linux-image-3.2.7-hyper-v_3.2.7-hyper-v-10.00.Custom_amd64.deb
shutdown -h now
Dann wird der virtuelle Computer ausgeschalten und die "alte Netzwerkkarte" kann im Hyper-V Manager gleich entfernt werden.
Nun fahren wir den virtuelnne Computer wieder hoch. Im Bootloader (GRUB) sollte nun der neue Kernel auftauchen und auch ausgewählt sein.
Nach dem Login prüfen wir mit
lsmod | grep hv_
ob alle Hyper-V-Treiber geladen wurden. Jetzt sollte in etwa erscheinen:
hv_utils                4148  0
cn                      3557  1 hv_utils
hv_storvsc              6917  0
scsi_mod              161156  2 libata,hv_storvsc
hv_netvsc              13044  0

Nun noch mit ifconfig die Netzwerkkarte konfigurieren. Sollte es hier Probleme geben, bitte in der Datei
/etc/udev/rules.d/70-persistent-net.rules
alle Einträge unterhalb des ersten Kommentar-Blocks löschen und mit
shutdown -r now
das System nochmal neu starten. Danach sollte eth0 unser neuer Freund sein und auch virtuelle SCSI-Festplatten kein Problem mehr darstellen.

Viel Spaß mit dem neuen Server! face-smile

Falls mehrere Debian-Server mit gleicher (oder weniger) virtueller Hardware verwendet werden sollen, muß der Kernel nicht auf jeder Maschine neu kompiliert werden.
Andere Festplattengrößen, RAM-Menge oder Anzahl der CPU-Kerne zählen hier nicht als Änderung!
Es genügt, die zwei neu erstellten .deb-Pakete aus /usr/src auf die neuen Maschinen zu kopieren und mit "dpkg -i" wie oben beschrieben zu installieren.
Wir kopieren dazu die .deb-Pakete ebenfalls nach /usr/src, dann ist das alles einheitlich, auch wenn kein Source-Code hinterlegt wird wie bei einer vollen Kompilierung.
Da außer der Remote-FX Karte bereits alle gängige Hardware im Server drin ist, die Hyper-V bis R2 bietet, können eigentlich nur noch Dateisysteme oder hardwareunabhängige Erweiterungen im Kernel hinzugefügt werden.
In einem Szenario mit mehreren Server würde es sich auch anbieten, alle benötigten Dateisysteme gleich in den einen Kernel einzubauen und dann diesen zu kompilieren und zu verteilen.
Bei eventuellen späteren Änderungen kann dann wieder genau dieser Kernel auf alle Maschinen kopiert werden, was einen Haufen Arbeit spart.

Sollte ein neuerer Kernel verwendet werden oder sich etwas an der .config ändern, so müssen wir nicht ganz von vorne anfangen:
Bei Änderungen am Kernel und Beibehaltung der Version ist der Einstieg bei "make menuconfig" im Tutorial.
Sollt nur ein aktuellerer Kernel mit gleicher Konfiguration verwendet werden, dann geht es etwas weiter oben los mit wget und dann natürlich der neueren Version als Download.
Danach muß aber auch noch die .config des vorherigen Kernels übernommen werden, bei dem heute erschienenen 3.2.8 wäre dies dann von /usr/src ausgehend:
wget -c ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-3.2.8.tar.xz
xz -d linux-3.2.8.tar.xz
tar xf linux-3.2.8.tar
rm linux-3.2.8.tar
cd linux-3.2.7
cp .config ../linux-3.2.8
"make localconfig" muß beim Recycling der alten .config nicht erneut durchgeführt werden, im Gegenteil!
"make menuconfig" muß dann ebenfalls nur noch aufgerufen werden, wenn noch etwas im Kernel dazu oder weg soll. Die Einstellungen zu Hyper-V sind aber gespeichert und müssen nicht nochmals getätigt werden.
Im reinen Update-Fall geht es also schon mit "make-kpkg clean" weiter.

Content-Key: 181181

Url: https://administrator.de/contentid/181181

Printed on: April 25, 2024 at 00:04 o'clock

Member: falscher-sperrstatus
falscher-sperrstatus Aug 19, 2012 at 22:46:07 (UTC)
Goto Top
Hi,

Da die Plattform von Aktuallität lebt:

Update Kernel 3.5.2
Device Drivers --->
Microsoft Hyper-V guest support --->
<M> Microsoft Hyper-V client drivers


Device Drivers --->
Network device Support --->
<M> Microsoft Hyper-V virtual network driver

Mehr habe ich auf die schnelle mal nicht mehr gefunden. Fakt ist: unter den Staging Treibern findet man nichts mehr zu Hyper-V, liegt wohl an den Linuxbemühungen von MS.

VG
Member: mcready
mcready Aug 20, 2012 at 06:14:31 (UTC)
Goto Top
Da hast Du Recht. Ab 3.4 ist ein Großteil, ab 3.5 sind alle MS Hyper-V-Treiber aus dem Staging-Bereich in den regulären Bereich gewandert. Mit den o.g. sollte auch alles "erschlagen" sein, da wohl ein Teil zusammengelegt wurde, was durchaus Sinn ergibt. Ansonsten bleibt das o.g. Prozedere aber identisch.
Member: falscher-sperrstatus
falscher-sperrstatus Aug 20, 2012 at 08:38:56 (UTC)
Goto Top
Sieht zumindestens Installationstechnisch mal sehr gut aus.

Nur der Durchsatz der VM-NIC lässt noch ein wenig zu wünschen über.
Member: mcready
mcready Aug 20, 2012 at 10:02:35 (UTC)
Goto Top
Zitat von @falscher-sperrstatus:
Sieht zumindestens Installationstechnisch mal sehr gut aus.

Nur der Durchsatz der VM-NIC lässt noch ein wenig zu wünschen über.

Soweit ich informiert bin, hat Microsoft aktuell zwei Vollzeitprogrammierer nur für die Hyper-V-Linux-Integration abgestellt. Vermutlich wird erstmal Stabilität vor Leistung gelten, was im Server-Umfeld IMHO durchaus gerechtfertigt scheint. Da die Treiber jetzt aber den Staging-Bereich verlassen haben und MS auch irgendwie die (bis zu) 1500% Preiserhöhung bei den 2012er Servern rechtfertigen muß, wird sich da vermutlich in absehbarer Zeit noch Einiges tun.
Member: karlos88
karlos88 Oct 11, 2012 at 15:20:58 (UTC)
Goto Top
Wer sich das alles ersparen will der geht einfach unter

http://docs.homelinux.org/doku.php?id=using_linux_ic_with_debian_squeez ...

und ladet sich den Kernel 3.2.23 runter, der ist aus dem offiziellen Debian Backport und enthält die Hyper-V Treiber in der neusten version 3.4. Wer mag kann sich auch gleich den KVP Daemon installieren damit der Hostname, LIC Version usw. zwischen Host und Hoster korrekt ausgetauscht werden. Ich hab das bei mir getestet und rennt 1A.

Gruss
Karlos