Skip to content

Commit

Permalink
archlinux: Code cleanups (v2)
Browse files Browse the repository at this point in the history
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 <lisaev@umail.iu.edu>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  • Loading branch information
Leonid Isaev authored and stgraber committed Apr 4, 2014
1 parent 25c3f42 commit e89ed2a
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions templates/lxc-archlinux.in
Expand Up @@ -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"
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

0 comments on commit e89ed2a

Please sign in to comment.