Benutzer-Werkzeuge

Webseiten-Werkzeuge


lxc-container_zu_90_mit_einem_skript_erstellen_und_einrichten

LXC-Container zu 90% mit einem Skript erstellen und einrichten

Alles was man ausserhalb des Containers durch ein Skript erledigen kann, wird von diesem Skript erledigt. Sicherlich wäre es möglich noch ein paar weitere Dinge durch das Skript zu erledigen aber das würde dann doch zu viele Gegebenheiten voraussetzen, die besonders bei Systemen Probleme bereiten können, die von Neulingen aufgesetzt wurden.

Alles was im Anschluss noch von Hand erledigt werden muss, wird am Ende vom Skript auf dem Bildschirm ausgegeben.

LXC-Container-Erstellungs-Skript

#!/bin/bash

AUFLOESG="1152x864"        # größe des VNC-Fensters
CONTNAME="schule"          # Container-Name
BENUTZER="schule"          # User-Name
UPASSWORT="Kinder"         # User-Passwort
RPASSWORT="Meister"        # Root-Passwort

lxc-create -n ${CONTNAME} -t ubuntu -- -a i386
cp /etc/apt/apt.conf /var/lib/lxc/${CONTNAME}/rootfs/etc/apt/

#------------------------------------------------------------------------------#
# Anfang
# Schul-CD-Images im Container mounten
#
cd /var/lib/lxc/${CONTNAME}/rootfs/home/
mkdir Zahlenbuch_1 Zahlenbuch_2 Zahlenbuch_3 Zahlenbuch_4 Tobi_Deutsch_lesen_lernen_1 Pusteblume_2
cd -

echo "
/home/schule/Pusteblume_2.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Pusteblume_2 auto auto,ro,loop 0 0
/home/schule/Tobi_Deutsch_lesen_lernen_1.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Tobi_Deutsch_lesen_lernen_1 auto auto,ro,loop 0 0
/home/schule/Zahlenbuch_1.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_1 auto auto,ro,loop 0 0
/home/schule/Zahlenbuch_2.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_2 auto auto,ro,loop 0 0
/home/schule/Zahlenbuch_3.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_3 auto auto,ro,loop 0 0
/home/schule/Zahlenbuch_4.iso /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_4 auto auto,ro,loop 0 0
" >> /etc/fstab

mount /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_1
mount /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_2
mount /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_3
mount /var/lib/lxc/${CONTNAME}/rootfs/home/Zahlenbuch_4
mount /var/lib/lxc/${CONTNAME}/rootfs/home/Tobi_Deutsch_lesen_lernen_1
mount /var/lib/lxc/${CONTNAME}/rootfs/home/Pusteblume_2
#
# Schul-CD-Images im Container mounten
# Ende
#------------------------------------------------------------------------------#

echo "rm /etc/localtime;ln -s /usr/share/zoneinfo/MET /etc/localtime" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash
echo "userdel -r ubuntu" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash
echo "useradd -s /bin/bash -m ${BENUTZER}" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash
echo "echo -e '${UPASSWORT}\n${UPASSWORT}\n' | passwd ${BENUTZER}" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash
echo "echo -e '${RPASSWORT}\n${RPASSWORT}\n' | passwd" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash
echo "/usr/bin/icewm-session"> /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.xinitrc
chmod 0755 /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.xinitrc

echo '
LANGUAGE="de_DE.UTF-8"
' > /var/lib/lxc/${CONTNAME}/rootfs/etc/profile.d/deutsch.sh
chmod 0755 /var/lib/lxc/${CONTNAME}/rootfs/etc/profile.d/deutsch.sh

mkdir /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.icewm
echo "
# This is an example for IceWM's menu definition file.
#
# Place your variants in /etc/X11/icewm or in $HOME/.icewm
# since modifications to this file will be discarded when you
# (re)install icewm.
#
prog xterm xterm xterm
separator
menu Schule folder {
     menu \"1. Klasse\" folder {
         prog \"Zahlenbuch 1\" app wine \"c:\\\\Program Files\\Klett\\Zahlenbuch1\\Zahlenbuch1.exe\"
         prog \"Tobi: Deutsch lesen lernen 1\" app wine /home/Tobi_Deutsch_lesen_lernen_1/tobi.exe
     }
     menu \"2. Klasse\" folder {
         prog \"Zahlenbuch 2\" app wine \"c:\\\\Program Files\\Klett\\Zahlenbuch2\\Zahlenbuch2.exe\"
         prog \"Pusteblume 2\" app wine \"c:\\\\Program Files\\PBLD2\\prog\\WIN\\PBLD2.exe\"
     }
     menu \"3. Klasse\" folder {
         prog \"Zahlenbuch 3\" app wine \"c:\\\\Program Files\\Klett\\Zahlenbuch3\\Zahlenbuch3.exe\"
     }
     menu \"4. Klasse\" folder {
         prog \"Zahlenbuch 4\" app wine \"c:\\\\Program Files\\Klett\\Zahlenbuch4\\Zahlenbuch4.exe\"
     }
}
" > /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.icewm/menu

echo "* * * * * ${BENUTZER} vncserver -geometry ${AUFLOESG} :1 > /dev/null 2>&1" >> /var/lib/lxc/${CONTNAME}/rootfs/etc/crontab
echo "chown -R ${BENUTZER}:${BENUTZER} /home/${BENUTZER}/" | chroot /var/lib/lxc/${CONTNAME}/rootfs/ /bin/bash

echo "
Für ein paar Dinge muss man sich allerdings doch noch in den Container einloggen

lxc-start -n ${CONTNAME} -d
lxc-console -n ${CONTNAME}
    => login: root
        apt-get install aptitude
        aptitude update
        aptitude -y safe-upgrade
        aptitude install xorg xserver-xorg icewm vnc4server ntp mc wine
        aptitude clean
        ip addr
        exit

    => login: ${BENUTZER}
        vncpasswd
        exit

        [Strg]+[A]+[Q]
lxc-stop -n ${CONTNAME}

echo -e '#!/bin/sh\n\n[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup\n[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources\nxsetroot -solid grey\nx-window-manager &\n' > /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.vnc/xstartup
chmod 0755 /var/lib/lxc/${CONTNAME}/rootfs/home/${BENUTZER}/.vnc/xstartup

lxc-start -n ${CONTNAME} -d

Jetzt kann man eine Verbindung per VNC aufbauen,
allerdings muss man dafür die IP des Containers kennen.
Um die zu ermitteln, wurde oben der Befehl 'ip addr'
aufgeruffen.
Hier wurde beispielhaft '10.0.3.1' an die richtige Stelle eingesetzt:
vncviewer -AutoSelect=0 -FullColour 10.0.3.1:1
"

Aus der lxc-console kommt man mit [Strg]+[A]+[Q] wieder raus.

/home/http/wiki/data/pages/lxc-container_zu_90_mit_einem_skript_erstellen_und_einrichten.txt · Zuletzt geändert: von 127.0.0.1