# Debian XEN-Server via debootstrap auf Server4You Root-Server installieren

Dies ist eine Anleitung um Debian Squeeze und XEN-Server auf einem dedizierten Host der Server4You zu installieren.

Der Server, für den diese Anleitung erstellt wurde, hat folgende Stats:

<div id="bkmrk-fujitsu-primergy-mx1"><div>- <div>Fujitsu PRIMERGY MX130 S2</div>
- <div>AMD Opteron 3280 Octacore</div>
- <div>2x 2000 GB SATA 3,5„ 7.200 rpm (für Softraid)</div>
- <div>16x Gigabyte RAM</div>
- <div>+3 zusätzliche IP Adressen</div>

</div></div>Der Server sollte Virtualisierung unterstützen. Ob das Virtualisierungs-Bit aktiviert ist, läßt sich vor der Installation über dieses Kommando herausfinden: „egrep '(vmx|svm)' /proc/cpuinfo“. Sobald der Server mit einem XEN-Kernel gebootet ist, verschwindet die Anzeige aus /proc/cpuinfo. Die Info taucht dafür aber im dmesg von XEN auf: „xm dmesg | egrep -i '(vmx|svm)'“. Bitte beachten: bei AMD-Prozessoren heißt das Flag SVM, bei Intel hingegen VMX.

Statt vif-bridge verwende ich für meine Server vif-nat. vif-bridge hat den Nachteil, dass man von den 4 IP-Adressen letztlich nur 2 für die VMs verwenden kann.

Ich habe alle öffentlichen IP-Adressen direkt auf dem Xen-Host konfiguriert und natte diese auf die privaten IPs der virtuellen Server. Nach außen wird jede VM auf die zugehörige externe IP genattet. Ich habe das ganze mit Shorewall umgesetzt. Wer sich für meine Regeln interessiert möge mich anschreiben.

1\. Sofern noch nicht geschehen unbedingt Daten sichern. Es handelt sich hier um eine Neuinstallation, alle vorhandenen Daten gehen verloren.

2\. Recovery System über [https://my.server4you.de](https://my.server4you.de "https://my.server4you.de") aktivieren und per SSH verbinden

3\. Im Recovery System den alten Server löschen, d.h:

<div id="bkmrk-mdadm-raids-aufl%C3%B6sen"><div>- <div>mdadm raids auflösen und löschen</div>
- <div>per fdisk alle Partitionen löschen</div>

</div></div>4\. neue Partitionen erstellen:

neue Partitionen auf beiden Disks exakt gleich konfigurieren (z.B.: 500MB /boot, 8GB SWAP, 100GB System, Rest für LVM + XEN)

5\. md-raids konfigurieren:

<div id="bkmrk-%2Fdev%2Fsda1-%2B-%2Fdev%2Fsdb"><div>- <div>/dev/sda1 + /dev/sdb1 → md0 (boot)</div>
- <div>/dev/sda3 + /dev/sdb3 → md1 (XEN dom0)</div>
- <div>/dev/sda4 + /dev/sdb4 → md2 (Daten)</div>

```
# in neueren mdadm Versionen: 
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

# alt:
mdadm --create /dev/md0 --raid-level=1 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --raid-level=1 /dev/sda3 /dev/sdb3
mdadm --create /dev/md2 --raid-level=1 /dev/sda4 /dev/sdb4
```

</div></div>6\. Partitionen formatieren

<div id="bkmrk-mkfs.ext2--l-boot-%2Fd"><div>```
mkfs.ext2 -L boot /dev/md0
mkfs.ext4 -L system /dev/md1

mkswap -L swap-sda /dev/sda2
mkswap -L swap-sdb /dev/sdb2
```

</div></div>7\. Partitionen für debootstrap mounten

<div id="bkmrk-mkdir-%2Fmnt%2Fdebinst-m"><div>```
mkdir /mnt/debinst
mount /dev/md1 /mnt/debinst
mkdir /mnt/debinst/boot /mnt/debinst/work
mount /dev/md0 /mnt/debinst/boot
cd /mnt/debinst/work
```

</div></div>8\. debootstrap besorgen:

<div id="bkmrk-wget-http%3A%2F%2Fftp.us.d"><div>```
wget http://ftp.us.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.26+squeeze1_all.deb
ar -xf debootstrap_1.0.26+squeeze1_all.deb
```

</div></div>9\. Installation starten

<div id="bkmrk-cd-%2F-%2Fusr%2Fsbin%2Fdeboo"><div>```
cd / 
/usr/sbin/debootstrap --arch amd64 squeeze /mnt/debinst http://ftp.de.debian.org/debian
```

</div></div>10\. nötiges Zeugs mounten

<div id="bkmrk-mount-sysfs-%2Fmnt%2Fdeb"><div>```
mount sysfs /mnt/debinst/sys -t sysfs
mount proc /mnt/debinst/proc -t proc
mount -o bind /dev /mnt/debinst/dev
```

</div></div>11\. ins neue System chrooten

<div id="bkmrk-cd-%2F-lang%3D-chroot-%2Fm"><div>```
cd /
LANG= chroot /mnt/debinst /bin/bash
```

</div></div>12\. ggf. /etc/apt/sources.list anpassen:

<div id="bkmrk-deb-http%3A%2F%2Fftp.de.de"><div>```
deb http://ftp.de.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
```

</div></div>13\. eventuell vorhandene Updates installieren

<div id="bkmrk-aptitude-update-apti"><div>```
aptitude update
aptitude full-upgrade
```

</div></div>14\. vim installieren

<div id="bkmrk-aptitude-install-vim"><div>```
aptitude install vim
```

</div></div>15\. /etc/fstab anpassen

<div id="bkmrk-%23-%2Fetc%2Ffstab%3A-static"><div>```
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0

/dev/md0	/boot		ext2	defaults,noatime,ro,nosuid,nodev	0	2
/dev/md1	/		ext4	defaults,noatime			0	1

LABEL=swap-sda	none		swap	sw,pri=1	0	0
LABEL=swap-sdb	none		swap	sw,pri=1	0	0
```

</div></div>16\. proc mounten

<div id="bkmrk-mount--t-proc-proc-%2F"><div>```
mount -t proc proc /proc
```

</div></div>17\. Konsolenoptionen

<div id="bkmrk-aptitude-install-con"><div>```
aptitude install console-setup
```

</div></div>folgendes auswählen: Germany - Eliminate dead keys UTF-8 . Combined - Latin; Slavic Cyrillic; Greek

18\. Netzwerkkonfiguration

in /etc/network/interfaces folgendes eintragen (entsprechend für deinen Server anpassen!):

<div id="bkmrk-%23-%2Fetc%2Fnetwork%2Finter"><div>```
# /etc/network/interfaces - network interfaces configuration

# loopback interface
auto lo
iface lo inet loopback

# ethernet interface
auto eth0
iface eth0 inet static
  address XXX.XXX.XXX.XXX
  network XXX.XXX.XXX.XXX
  netmask 255.255.255.XXX
  broadcast XXX.XXX.XXX.XXX
  gateway XXX.XXX.XXX.XXX
```

</div></div>in /etc/resolv.conf folgendes eintragen (eigene Domains einsetzen):

<div id="bkmrk-nameserver-8.8.8.8-n"><div>```
nameserver 8.8.8.8
nameserver 8.8.4.4
search meinserver.de
domain meinserver.de
options rotate
options timeout:3
```

</div></div>den Hostnamen in /etc/hostname eintragen

<div id="bkmrk-xen1.meinserver.de"><div>```
xen1.meinserver.de
```

</div></div>die Hosts-Datei anpassen (/etc/hosts)

<div id="bkmrk-xxx.xxx.xxx.xxx-xen1"><div>```
XXX.XXX.XXX.XXX    xen1.meinserver.de xen1

127.0.0.1	localhost
::1			localhost ip6-localhost ip6-loopback
fe00::0		ip6-localnet
ff00::0		ip6-mcastprefix
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters
```

</div></div>19\. Sprachpaket installieren

<div id="bkmrk-aptitude-install-loc"><div>```
aptitude install locales
dpkg-reconfigure locales
```

</div></div>Auswählen: de\_DE.UTF-8

<div id="bkmrk-en_us.utf-8"><div>```
         en_US.UTF-8
```

</div></div>Danach je nach gewünschter Systemsprache englisch oder deutsch auswählen

20\. Systemzeit konfigurieren

<div id="bkmrk-dpkg-reconfigure-tzd"><div>```
  dpkg-reconfigure tzdata
```

1. <div>&gt; Europe / Berlin auswählen</div>

</div></div>21\. SSH für den späteren Remote-Zugriff installieren

<div id="bkmrk-aptitude--y-install-"><div>```
aptitude -y install ssh
```

</div></div>22\. Kennwörter und SSH-Keys verteilen

Root-Kennwort setzen:

<div id="bkmrk-passwd-root"><div>```
passwd root
```

</div></div>und SSH-Key verteilen

<div id="bkmrk-mkdir-%2Froot%2F.ssh-vi-"><div>```
  mkdir /root/.ssh
  vi /root/.ssh/authorized_keys  
```

</div></div>deinen SSH-Pubkey reinkopieren

23\. mdadm + mta installieren

<div id="bkmrk-aptitude-install-mda"><div>```
  aptitude install mdadm postfix
```

</div></div>Postfix Einstellungen: Internet site, System mail name: &lt;FQDN&gt;

24\. mdadm-Settings anpassen und überprüfen, ob das Raid korrekt erkannt wurde

<div id="bkmrk-mdadm---detail---sca"><div>```
  mdadm --detail --scan # und mit /etc/mdadm/mdadm.conf vergleichen
```

</div></div>sollte etwa so aussehen:

<div id="bkmrk-%23-mdadm.conf-%23-%23-ple"><div>```
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR info@meinserver.de

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=0ae98489:3d0011dd:422ef339:7c089e1f name=disk1176:0
ARRAY /dev/md/1 metadata=1.2 UUID=d89a438e:7f0f2925:dfc1dd45:59788ac8 name=disk1176:1
ARRAY /dev/md/2 metadata=1.2 UUID=bbab94a1:003343e6:6b2629ab:2f8193f7 name=disk1176:2

# This file was auto-generated on Sun, 23 Sep 2012 14:39:40 +0200
# by mkconf 3.1.4-1+8efb9d1+squeeze1
```

</div></div>25\. Kernel installieren

<div id="bkmrk-aptitude-install-lin"><div>```
aptitude install linux-image-2.6-amd64 firmware-linux-nonfree
```

</div></div>26\. Boot-Loader installieren

<div id="bkmrk-aptitude-install-gru"><div>```
aptitude install grub2
```

1. <div>&gt; Command line: „quiet“</div>

```
grub-install /dev/md0
update-grub
```

</div></div>27\. alles sauber unmounten und Recovery-Modus beenden:

<div id="bkmrk-%2Fetc%2Finit.d%2Fpostfix-"><div>```
/etc/init.d/postfix stop
/etc/init.d/mdadm stop
exit # (jetzt wieder in der Recovery shell
umount /mnt/debinst/dev /mnt/debinst/sys /mnt/debinst/proc /mnt/debinst/boot
umount /mnt/debinst
<code>

Recovery-Modus über https://my.server4you.de beenden und das System rebooten.

28. Aufräumen

jetzt sollte der Server hoffentlich ordentlich gebootet wieder hochkommen

einloggen und das /work-Verzeichnis löschen
<code>
ssh xen.meinserver.de
rm -rf /work
```

</div></div>29\. mdadm Resync beenden lassen

<div id="bkmrk-nach-dem-reboot-werd"><div>```
nach dem Reboot werden unmounted md-Raids üblicherweise als "active (auto-read-only)" angezeigt und der Resync steht auf "PENDING". Sobald schreibend darauf zugegriffen wird, läuft der Resync weiter. Das kann man aber auch manuell triggern:
<code>
mdadm --readwrite /dev/md0
mdadm --readwrite /dev/md2
```

</div></div>md1 ist bereits rw, da das unser root-Filesystem ist. md0 ist /boot (per fstab read-only gemounted) und auf md2 kommt gleich unser LVM

30\. nützliche Tools installieren

&lt;/code&gt; aptitude install htop tcpdump mtr-tiny strace sysstat lshw &lt;/code&gt;

31\. LVM konfigurieren (kommt auf das freie md-Raid md2)

<div id="bkmrk-aptitude-install-lvm"><div>```
aptitude install lvm2
pvcreate /dev/md2
vgcreate lvm-raid /dev/md2
```

</div></div>32\. XEN installieren

<div id="bkmrk-mount--o-remount%2Crw-"><div>```
mount -o remount,rw /boot
aptitude install xen-hypervisor-amd64 xen-linux-system-2.6-xen-amd64 xen-tools
```

</div></div>33\. XEN-Kernel höher priorisieren und ein paar Boot-Optionen setzen

<div id="bkmrk-dpkg-divert---divert"><div>```
dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
update-grub
```

</div></div>folgendes ab Zeile 10 in /etc/default/grub einfügen (nicht mehr als 1GB RAM für dom0):

<div id="bkmrk-%23-xen-boot-parameter"><div>```
# Xen boot parameters for all Xen boots
GRUB_CMDLINE_XEN="dom0_mem=1024M"
```

</div></div>und in /etc/xen/xend-config.sxp die Einträge wie folgt aktivieren/ändern:

<div id="bkmrk-%28network-script-netw"><div>```
(network-script network-nat)
(vif-script vif-nat)
(dom0-min-mem 512)
(enable-dom0-ballooning no)
(total_available_memory 0) 
(dom0-cpus 0)
(vncpasswd '')
```

</div></div>34\. in den XEN-Kernel rebooten, wieder einloggen und XEN prüfen

<div id="bkmrk-uname--a"><div>```
uname -a
```

</div></div>sollte so aussehen:

<div id="bkmrk-linux-xen1.meinserve"><div>```
  Linux xen1.meinserver.de 2.6.32-5-xen-amd64 #1 SMP Sun May 6 08:57:29 UTC 2012 x86_64 GNU/Linux
```

</div></div>„xm info“ sollte auch jede Menge Infos liefern

35\. /etc/xen-tools/xen-tools.conf anpassen bzw. nach eigenen Vorlieben konfigurieren:

<div id="bkmrk-lvm-%3D-lvm-raid-arch-"><div>```
lvm = lvm-raid
arch = amd64
install-method = debootstrap
vcpus  = 4        # number of cores
size   = 50Gb     # Disk image size.
memory = 1024Mb   # Memory size
swap   = 128Mb    # Swap size
noswap = 1        # Don't use swap at all for the new system.
fs     = ext4     # use the EXT3 filesystem for the disk image.
dist   = squeeze  # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway    = XXX.XXX.XXX.1
netmask    = 255.255.255.0
broadcast  = XXX.XXX.XXX.255
genpass = 0
hash_method = sha512
passwd = 1
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
arch = amd64
mirror = http://ftp2.de.debian.org/debian/
```

</div></div>33\. die erste virtuelle Maschine erzeugen:

<div id="bkmrk-xen-create-image---h"><div>```
xen-create-image --hostname=vm1.myserver.de --ip=XXX.XXX.XXX.123
```

</div></div>sollte dann so aussehen:

<div id="bkmrk-general-information-"><div>```
  General Information
--------------------
Hostname       :  vm1.myserver.de
Distribution   :  squeeze
Mirror         :  http://ftp2.de.debian.org/debian/
Partitions     :  /               50Gb  (ext4)
Image type     :  full
Memory size    :  1024Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
----------------------
IP Address 1   : XXX.XXX.XXX.123 [MAC: 00:16:3E:B4:09:6A]
Netmask        : 255.255.255.0
Broadcast      : XXX.XXX.XXX.255
Gateway        : XXX.XXX.XXX.1


Creating ext4 filesystem on /dev/lvm-raid/vm1.myserver.de-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

No role scripts were specified.  Skipping

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
All done


Logfile produced at:
	 /var/log/xen-tools/vm1.myserver.de.log

Installation Summary
---------------------
Hostname        :  vm1.myserver.de
Distribution    :  squeeze
IP-Address(es)  :  XXX.XXX.XXX.123
RSA Fingerprint :  24:29:f0:67:60:f1:4e:f6:41:7b:ad:0a:8e:88:87:8f
Root Password   :  N/A
```

</div></div>36\. die VM starten und beim Booten mit Hochfahren

<div id="bkmrk-mkdir-%2Fetc%2Fxen%2Fauto-">```
mkdir /etc/xen/auto
mv /etc/xen/vm1.myserver.de.cfg /etc/xen/auto/
xm create /etc/xen/auto/vm1.myserver.de.cfg
```

</div>