Ich gehe hier davon aus, dass folgende Pakete bereits in einem der vorherigen Schritte Einzug auf dem Server gefunden haben:
# aptitude install lxc
Ich gehe hier davon aus, dass folgende Voraussetzungen bereits in einem der vorherigen Schritte konfiguriert wurden:
# lvcreate -L2G -n lxc_template sys
# mkfs.xfs -L template /dev/sys/lxc_template # mkdir /var/lib/lxc/template # mount /dev/mapper/sys-lxc_template /var/lib/lxc/template
# lxc-create -n template -t debian -- -r jessie
In der letzten Ausgabe des Befehls, erfährt man das root-Passwort für den Container.
Wer mag, kann es sich aufschreiben, in wenigen Minuten werden wir es jedoch selber „von außen“ ändern.
# cat <<EOF >> /var/lib/lxc/template/config lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.ipv4 = 192.168.0.254/24 lxc.network.ipv4.gateway = 192.168.0.1 lxc.network.hwaddr = 02:34:56:78:90:fe EOF
# cat <<EOF > /var/lib/lxc/template/rootfs/etc/apt/sources.list deb http://ftp.de.debian.org/debian jessie main contrib non-free deb http://ftp.de.debian.org/debian jessie-updates main contrib non-free deb http://security.debian.org/ jessie/updates main contrib non-free EOF
# wget https://raw.githubusercontent.com/casualscripter/debian-stuff/master/usr/local/sbin/clean_upgrade \ -O /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade # chown root:root /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade # chmod 700 /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade
# echo "192.168.0.254 template.domain template" > /var/lib/lxc/template/rootfs/etc/hosts.tmp # cat /var/lib/lxc/template/rootfs/etc/hosts" >> /var/lib/lxc/template/rootfs/etc/hosts.tmp # mv /var/lib/lxc/template/rootfs/etc/hosts{.tmp,}
# mv /var/lib/lxc/template/rootfs/root/.bashrc{,_DEBIAN} # cp /var/lib/lxc/template/rootfs/etc/skel/.bashrc /var/lib/lxc/template/rootfs/root/.bashrc
# sed 's/HISTSIZE=1000/&0/' /var/lib/lxc/template/rootfs/root/.bashrc > /var/lib/lxc/template/rootfs/root/.bashrc.tmp # mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed 's/HISTFILESIZE=2000/&0/' /var/lib/lxc/template/rootfs/root/.bashrc > /var/lib/lxc/template/rootfs/root/.bashrc.tmp # mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed 's/#force_color_prompt=yes/force_color_prompt=yes/' > /var/lib/lxc/template/rootfs/root/.bashrc.tmp # mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
Die Zeile
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
durch
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\[\033[01;35m\](lxc)\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
ersetzten (z. B. mit „nano“).
# sed "s/#alias grep='grep --color=auto'/alias grep='grep --color=auto'/" > /var/lib/lxc/template/rootfs/root/.bashrc.tmp # mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed "s/#alias ll='ls -l'/alias ll='ls -lisa'/" > /var/lib/lxc/template/rootfs/root/.bashrc.tmp # mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# echo 'HISTTIMEFORMAT="%F %T "' >> /var/lib/lxc/template/rootfs/root/.bashrc
# echo "Change password for root in the LXC template:" # passwd -R /var/lib/lxc/template/rootfs
Wenn man für root auf dem Host noch keinen SSH-Schlüsselpaar erzeugt hat, muss man es wie folgt nachholen:
# ssh-keygen -b 2048 -t rsa -N "" -f /root/.ssh/id_rsa
Danach kopieren wir den öffentlichen Schlüssel in den LXC, damit wir uns später per SSH vom Host aus im Gast anmelden können:
# cp /root/.ssh/id_rsa /var/lib/lxc/template/rootfs/root/.ssh/authorized_keys