From e89ed2acface38ada52cb3900e26cb64cfc34fcd Mon Sep 17 00:00:00 2001 From: Leonid Isaev Date: Mon, 31 Mar 2014 22:24:31 -0400 Subject: [PATCH] archlinux: Code cleanups (v2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cleanups: 1. Do not modify container's /etc/hosts (archlinux uses /etc/nsswitch.conf) 2. Remove duplicate lines from config 3. Print a nicer final message 4. Get rid of some grep's Signed-off-by: Leonid Isaev Acked-by: Stéphane Graber --- templates/lxc-archlinux.in | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/templates/lxc-archlinux.in b/templates/lxc-archlinux.in index b01ccfe50b..1bd13f3614 100644 --- a/templates/lxc-archlinux.in +++ b/templates/lxc-archlinux.in @@ -71,9 +71,10 @@ split_string() { # Arch-specific preconfiguration for container configure_arch() { - # read locale and timezone defaults from system rc.conf if running on Arch + # on ArchLinux, read defaults from host systemd configuration if [ "${is_arch}" ]; then - cp -p /etc/vconsole.conf /etc/locale.conf /etc/locale.gen "${rootfs_path}/etc/" + cp -p /etc/vconsole.conf /etc/locale.conf /etc/locale.gen \ + "${rootfs_path}/etc/" else echo "LANG=${default_lang}" > "${rootfs_path}/etc/locale.conf" echo "KEYMAP=us" > "${rootfs_path}/etc/vconsole.conf" @@ -89,22 +90,25 @@ EOF fi fi fi + + # hostname and nameservers echo "${name}" > "${rootfs_path}/etc/hostname" - cat > "${rootfs_path}/etc/hosts" << EOF -127.0.0.1 localhost.localdomain localhost ${name} -::1 localhost.localdomain localhost -EOF - grep nameserver /etc/resolv.conf > "${rootfs_path}/etc/resolv.conf" + while read r; do + [ "${r#nameserver}" = "$r" ] || echo "$r" + done < /etc/resolv.conf > "${rootfs_path}/etc/resolv.conf" + # chroot and configure system arch-chroot "${rootfs_path}" /bin/bash -s << EOF mkdir /run/lock locale-gen ln -s /usr/share/zoneinfo/${default_timezone} /etc/localtime # disable services unavailable for container -ln -s /dev/null /etc/systemd/system/systemd-udevd.service -ln -s /dev/null /etc/systemd/system/systemd-udevd-control.socket -ln -s /dev/null /etc/systemd/system/systemd-udevd-kernel.socket -ln -s /dev/null /etc/systemd/system/proc-sys-fs-binfmt_misc.automount +for i in systemd-udevd.service \ + systemd-udevd-control.socket \ + systemd-udevd-kernel.socket \ + proc-sys-fs-binfmt_misc.automount; do + ln -s /dev/null /etc/systemd/system/\$i +done # set default systemd target ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target # initialize pacman keyring @@ -141,7 +145,6 @@ lxc.cgroup.devices.allow = c 1:5 rwm lxc.cgroup.devices.allow = c 1:7 rwm lxc.cgroup.devices.allow = c 1:8 rwm lxc.cgroup.devices.allow = c 1:9 rwm -lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 4:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 5:1 rwm @@ -319,4 +322,8 @@ if [ -n "${root_passwd}" ]; then echo "root:${root_passwd}" | chroot "${rootfs_path}" chpasswd fi -echo "container config is ${config_path}/config" +cat << EOF +ArchLinux container ${name} is successfully created! The configuration is +stored in ${config_path}/config. Please refer to https://wiki.archlinux.org for +information about configuring ArchLinux. +EOF