XEN4LiveCD: Unterschied zwischen den Versionen

Aus Neobikers Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:
cd livexen
cd livexen
cp -r /usr/share/live/build/examples/auto .
cp -r /usr/share/live/build/examples/auto .
vi auto/config
</pre>
</pre>


Zeile 21: Zeile 19:


'''''auto/config'''''
'''''auto/config'''''
<pre>lb config noauto \
<pre>vi auto/config
 
lb config noauto \
--linux-flavours amd64 \
--linux-flavours amd64 \
--distribution wheezy \
--distribution wheezy \
Zeile 37: Zeile 37:


''config/package-lists/'''my.list.chroot'''''
''config/package-lists/'''my.list.chroot'''''
<pre>echo "ssh less pciutils lsbutils network-manager iceweasel gparted" > config/package-lists/my.list.chroot
<pre>lb config
echo "ssh less pciutils usbutils network-manager iceweasel gparted" > config/package-lists/my.list.chroot
echo "xen-utils-4.1 xen-tools syslinux virt-manager virt-what virt-viewer" >> config/package-lists/my.list.chroot</pre>
echo "xen-utils-4.1 xen-tools syslinux virt-manager virt-what virt-viewer" >> config/package-lists/my.list.chroot</pre>


Zeile 43: Zeile 44:
''config/hooks/'''xend.chroot''''' nimmt die XEN-Änderungen innerhalb der chroot Umgebung vor.
''config/hooks/'''xend.chroot''''' nimmt die XEN-Änderungen innerhalb der chroot Umgebung vor.


<pre>echo > config/hooks/xend.chroot <<END
<pre>vi config/hooks/xend.chroot
 
#!/bin/sh
#!/bin/sh


Zeile 112: Zeile 114:
fi
fi
[ -d /usr/lib/xen-default ] || ln -s /usr/lib/xen-4.1 /usr/lib/xen-default
[ -d /usr/lib/xen-default ] || ln -s /usr/lib/xen-4.1 /usr/lib/xen-default
</pre>


END</pre>


''config/hooks/'''xen-syslinux.binary''''' ändert die syslinux Konfiguration zum start von XEN


''config/hooks/'''xen-syslinux.binary''''' ändert die syslinux Konfiguration zum start von XEN
<pre>vi config/hooks/xen-syslinux.binary


<pre>echo > config/hooks/xen-syslinux.binary <<END
#!/bin/sh
#!/bin/sh


Zeile 186: Zeile 188:


# copy syslinux.cfg to isolinux.cfg for USB booting
# copy syslinux.cfg to isolinux.cfg for USB booting
cp ${BOOTIR}/isolinux.cfg ${BOOTDIR}/syslinux.cfg
cp ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/syslinux.cfg
 
</pre>
END</pre>




Zeile 196: Zeile 197:
mkdir -p config/includes.chroot/home/user/.config/autostart
mkdir -p config/includes.chroot/home/user/.config/autostart


echo > config/includes.chroot/home/user/Desktop/virt-manager.desktop << EOF
cat > config/includes.chroot/home/user/Desktop/virt-manager.desktop <<EOF
[Desktop Entry]
[Desktop Entry]
Name=Virtual Machine Manager
Name=Virtual Machine Manager
Zeile 206: Zeile 207:
EOF
EOF


echo > config/includes.chroot/home/user/.config/autostart/lxterminal.desktop << EOF
cat > config/includes.chroot/home/user/.config/autostart/lxterminal.desktop <<EOF
[Desktop Entry]
[Desktop Entry]
Type=Application
Type=Application
Zeile 212: Zeile 213:
EOF
EOF


echo > config/includes.chroot/home/user/.config/autostart/virt-manager.desktop << EOF
cat > config/includes.chroot/home/user/.config/autostart/virt-manager.desktop <<EOF
[Desktop Entry]
[Desktop Entry]
Type=Application
Type=Application
Exec=sudo virt-manager
Exec=sudo virt-manager
EOF
echo > config/includes.chroot/home/user/.bashrc << EOF
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -lF'
alias l='ls $LS_OPTIONS -lA'
alias la='ls $LS_OPTIONS -la'
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
alias psg='ps aux|grep -v grep|grep'
EOF
EOF
</pre>
</pre>
Zeile 253: Zeile 229:
lb build</pre>
lb build</pre>


Anschliessend liegt das ISO-Image '''''binary-hybrid.iso''''' im Verzeichnis. Sämtliche Files befinden sich im Verzeichnis '''''binary/'''''.
Wenn man Änderungen in der Konfiguration der LiveCD vornimmt, aktualisiert man die
LiveCD mit
<pre>lb clean --all # or lb clean --binary
lb config
lb build</pre>
 
 
Anschliessend liegt das ISO-Image '''''binary-hybrid.iso''''' im Verzeichnis.  
 
Sämtliche '''XEN LiveCD''' Files befinden sich im Verzeichnis '''''binary/'''''.




Zeile 266: Zeile 251:
<pre>syslinux -i /dev/sdX1 -d isolinux
<pre>syslinux -i /dev/sdX1 -d isolinux
cp -a binary/live binary/isolinux /media/XEN\ Live/</pre>
cp -a binary/live binary/isolinux /media/XEN\ Live/</pre>
Sollte es Probleme mit dem booten des Sticks geben, kann man einen neuen Bootblock auf den Stick (/dev/sdX; z.B. /dev/sdb) installieren, mittels
<pre>root# apt-get install install-mbr
install-mbr -t 1 -p 1 /dev/sdX</pre>

Aktuelle Version vom 31. Juli 2012, 21:30 Uhr

XEN 4 Live CD mit Debian (Wheezy)

Mit dem Debian Live Projekt ist eine XEN Live CD relativ einfach zu erstellen. Die Installation kann man auch auf einen USB-Stick installieren.

Zum booten wird SYSLINUX bzw. ISOLINUX verwendet. Hierbei ist zu berücksichtigen, dass zum Start von XEN das Bootprogramm mboot.c32 benötigt wird, damit der Kernel mit der Initrd auf dem XEN Hypervisor gestartet werden können. Ansonsten sind optional zusätzliche Anpassungen zum starten vom USB-Stick mit einem beschreibbaren Filesystem (VFAT) anstatt eines Read-Only Filesystems (Iso9660) zu beachten.

Benötigt wird "irgendein" Linux-System, bevorzugt Debian oder Ubuntu, um die vorhandenen Repositories zu verwenden:

root#
apt-get install live-build live-boot live-config

mkdir livexen
cd livexen
cp -r /usr/share/live/build/examples/auto .

Zusammenstellung der LiveCD vorbereiten

Als Basis wird ein Wheezy 64-Bit LXDE Desktop mit deutschem Layout definiert.

auto/config

vi auto/config

lb config noauto \
	--linux-flavours amd64 \
	--distribution wheezy \
	--archive-areas "main contrib non-free" \
	--hostname xen4live \
	--package-lists "lxde" \
	--bootappend-live "locales=de_DE.UTF-8 keyboard-layouts=de" \
	--iso-publisher Neobiker \
	--iso-volume "XEN Live" \
	"${@}"


Die optionalen Programme und XEN Anpassungen werden in den folgenden Konfig-files eingetragen.

config/package-lists/my.list.chroot

lb config
echo "ssh less pciutils usbutils network-manager iceweasel gparted" > config/package-lists/my.list.chroot
echo "xen-utils-4.1 xen-tools syslinux virt-manager virt-what virt-viewer" >> config/package-lists/my.list.chroot


config/hooks/xend.chroot nimmt die XEN-Änderungen innerhalb der chroot Umgebung vor.

vi config/hooks/xend.chroot

#!/bin/sh

echo "I: hooks/xend.chroot"

# modify xend-config.sxp (use NAT because WLAN don't likes bridges)
# enable virt-manager access

FILE=/etc/xen/xend-config.sxp
if test -e $FILE; then
  sed -i \
      -e "s;(vif-script vif-bridge);#(vif-script vif-bridge);g" \
      -e "s;#(vif-script     vif-nat);(vif-script     vif-nat);g" \
      -e "s;#(network-script network-nat);(network-script vif-nat);g" \
      -e "s;#(xend-http-server no);(xend-http-server yes);g" \
      -e "s;#(xend-unix-server no);(xend-unix-server yes);g" \
      -e "s;#(vnc-listen '127.0.0.1');(vnc-listen '0.0.0.0');g" \
      $FILE 
fi

# modify /etc/default/xendomains
# disable VM save/restore

FILE=/etc/default/xendomains
if test -e $FILE; then
  sed -i \
      -e "s;XENDOMAINS_SAVE=/var/lib/xen/save;XENDOMAINS_SAVE=;g" \
      -e "s;XENDOMAINS_RESTORE=true;XENDOMAINS_RESTORE=false;g" \
      $FILE 
fi

# set XEN toolstack to xm

FILE=/etc/default/xen
if test -e $FILE; then
  sed -i \
      -e "s;TOOLSTACK=;TOOLSTACK=xm;g" \
      $FILE 
fi

# XEN optimisation
# wait 10 seconds, check xend
# raise Dom0 prio

FILE=/etc/rc.local
cat >> $FILE <<EOF

# XEN: Dom0 specific settings
sleep 10;
xend status >/dev/null 2>&1 && /etc/init.d/xen restart

if [ ! \`xend status\` ]; then
    # give Dom0 preference over DomUs by Faktor x (weight 256 = DomU default)
    xen sched-credit -d Domain-0 -w 1024

    # PowerSave
    xenpm set-scaling-governor ondemand
fi

EOF

# wheezy bugfix: 
# virt-manager fails because of missing links

if [ ! -d /usr/lib64 ]; then
    mkdir /usr/lib64
    ln -s /usr/lib/xen-4.1 /usr/lib64/xen
fi
[ -d /usr/lib/xen-default ] || ln -s /usr/lib/xen-4.1 /usr/lib/xen-default


config/hooks/xen-syslinux.binary ändert die syslinux Konfiguration zum start von XEN

vi config/hooks/xen-syslinux.binary

#!/bin/sh

echo "I: hooks/xen-syslinux.binary"

# insert XEN entries in syslinux bootmenu

# bootdir is syslinux (hdd images) or isolinux (iso images)
BOOTDIR="binary/isolinux/"
[ ! -d "${BOOTDIR}" ] && BOOTDIR="binary/syslinux"

# xen needs multiboot loader mboot.c32 to start
[ -e chroot/usr/lib/syslinux/mboot.c32 ] || (echo "Error: missing mboot.c32 (syslinux)"; exit 1)

# copy multiboot loader to syslinux dir
cp chroot/usr/lib/syslinux/mboot.c32 ${BOOTDIR}

# bugfix live-build: sometime rename boot to live is needed
if [ -d binary/boot ]; then
   echo "W: rename /boot to /live"
   mv binary/boot binary/live
fi

# copy xen.gz hypervisor for booting
if [ -e chroot/boot/xen.gz ]; then
    cp chroot/boot/xen.gz binary/live/xen.gz
else
    for f in chroot/boot/xen?*.gz; do
        cp $f binary/live/xen.gz
    done
fi

# copy kernel/initrd for booting
if [ ! -e binary/live/vmlinuz ]; then
    cp chroot/vmlinuz binary/live/
fi
if [ ! -e binary/live/initrd.img -a -e chroot/initrd.img ]; then
    cp chroot/initrd.img binary/live/initrd.img
elif [ ! -e binary/live/initrd.img ]; then
    cp chroot/boot/initrd.img* binary/live/initrd.img
fi

# create XEN entries für syslinux

cat > ${BOOTDIR}/xen.cfg <<EOF
label xen
  menu label Xen 4 Live
  kernel mboot.c32
  append /live/xen.gz --- /live/vmlinuz boot=live config locales=de_DE.UTF-8 keyboard-layouts=de --- /live/initrd.img

label xen-p
  menu label Xen 4 Live (persistent)
  kernel mboot.c32
  append /live/xen.gz --- /live/vmlinuz boot=live config quiet locales=de_DE.UTF-8 keyboard-layouts=de persistence --- /live/initrd.img

label xen-c
  menu label Xen Live (Console)
  kernel mboot.c32
  append /live/xen.gz --- /live/vmlinuz boot=live config S quiet locales=de_DE.UTF-8 keyboard-layouts=de --- /live/initrd.img
EOF

# insert XEN entries in syslinux boot menu

sed -i -e "s;include live.cfg;include xen.cfg\ninclude live.cfg;g" ${BOOTDIR}/menu.cfg

# fix live_build bug: usb/hdd image uses syslinux instead of isolinux

# copy syslinux.cfg to isolinux.cfg for USB booting
cp ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/syslinux.cfg


Desktop anpassen

mkdir -p config/includes.chroot/home/user/Desktop
mkdir -p config/includes.chroot/home/user/.config/autostart

cat > config/includes.chroot/home/user/Desktop/virt-manager.desktop <<EOF
[Desktop Entry]
Name=Virtual Machine Manager
Icon=/usr/share/virt-manager/pixmaps/virt-manager-icon.svg
Exec=sudo virt-manager
Type=Application
Terminal=false
Encoding=UTF-8
EOF

cat > config/includes.chroot/home/user/.config/autostart/lxterminal.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=lxterminal
EOF

cat > config/includes.chroot/home/user/.config/autostart/virt-manager.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=sudo virt-manager
EOF


XEN Live Image erstellen


Das (Iso-) Image wird erstellt mit Lb config

lb config
lb build

Wenn man Änderungen in der Konfiguration der LiveCD vornimmt, aktualisiert man die LiveCD mit

lb clean --all # or lb clean --binary
lb config
lb build


Anschliessend liegt das ISO-Image binary-hybrid.iso im Verzeichnis.

Sämtliche XEN LiveCD Files befinden sich im Verzeichnis binary/.


Variante 1) Brennen als ISO auf USB-Stick (/dev/sdX; z.B. /dev/sdb):

dd if=binary-hybrid.iso of=/dev/sdX


Variante 2) Installieren auf USB-Stick auf beschreibbare Partition (/dev/sdX1; z.B. /dev/sdb1):

syslinux -i /dev/sdX1 -d isolinux
cp -a binary/live binary/isolinux /media/XEN\ Live/


Sollte es Probleme mit dem booten des Sticks geben, kann man einen neuen Bootblock auf den Stick (/dev/sdX; z.B. /dev/sdb) installieren, mittels

root# apt-get install install-mbr

install-mbr -t 1 -p 1 /dev/sdX