lxc-container_zu_90_mit_einem_skript_erstellen_und_einrichten
Inhaltsverzeichnis
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
