|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
NETWORK=${NETWORK:-yes}
|
|
|
|
NETWORK_EC2=${NETWORK_EC2:-no}
|
|
|
|
SERVICES=${SERVICES:-one-context-local one-context}
|
|
|
|
|
|
|
|
rm -f /etc/udev/rules.d/70-persistent-cd.rules
|
|
|
|
rm -f /etc/udev/rules.d/70-persistent-net.rules
|
|
|
|
|
|
|
|
# Reload udev rules
|
|
|
|
udevadm control --reload >/dev/null 2>&1 || :
|
|
|
|
|
|
|
|
# Enable services
|
|
|
|
if which systemctl >/dev/null 2>&1 && \
|
|
|
|
[ -d /etc/systemd ] && \
|
|
|
|
[ -f /usr/lib/systemd/system/one-context.service ];
|
|
|
|
then
|
|
|
|
systemctl daemon-reload >/dev/null 2>&1 || :
|
|
|
|
|
|
|
|
for S in ${SERVICES}; do
|
|
|
|
systemctl enable "${S}.service" >/dev/null 2>&1
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
if which chkconfig >/dev/null 2>&1; then
|
|
|
|
for S in ${SERVICES}; do
|
|
|
|
chkconfig --add "${S}" >/dev/null 2>&1
|
|
|
|
done
|
|
|
|
|
|
|
|
# EL6: refresh initramfs via dracut for growroot module
|
|
|
|
if [ -f /usr/share/dracut/modules.d/50growroot/install ]; then
|
|
|
|
for I in $(find /boot -name 'initramfs-*.img'); do
|
|
|
|
KERNEL_VERS=$(echo "${I}" | sed -e 's/.*initramfs-\(.*\)\.img/\1/')
|
|
|
|
dracut -f "${I}" "${KERNEL_VERS}" || :
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif which update-rc.d >/dev/null 2>&1; then
|
|
|
|
for S in ${SERVICES}; do
|
|
|
|
update-rc.d "${S}" enable >/dev/null 2>&1
|
|
|
|
update-rc.d "${S}" defaults >/dev/null 2>&1
|
|
|
|
done
|
|
|
|
|
|
|
|
elif which rc-update >/dev/null 2>&1; then
|
|
|
|
for S in ${SERVICES}; do
|
|
|
|
rc-update add "${S}" boot >/dev/null 2>&1
|
|
|
|
done
|
|
|
|
|
|
|
|
elif [ -f /etc/rc.conf ]; then
|
|
|
|
:
|
|
|
|
|
|
|
|
else
|
|
|
|
echo 'WARNING: Contextualization service not enabled automatically' >&2
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Cleanup network configuration
|
|
|
|
if [ "${NETWORK}" != 'yes' ]; then
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Debian based distros
|
|
|
|
if [ -d /etc/network ]; then
|
|
|
|
# Prepare network files
|
|
|
|
cp /etc/network/interfaces /etc/network/interfaces.$(date "+%s")
|
|
|
|
rm -rf /etc/network/interfaces.d
|
|
|
|
rm -rf /etc/netplan/*
|
|
|
|
|
|
|
|
if [ "${NETWORK_EC2}" = 'yes' ]; then
|
|
|
|
cat > /etc/network/interfaces <<EOT
|
|
|
|
# The loopback network interface
|
|
|
|
auto lo
|
|
|
|
iface lo inet loopback
|
|
|
|
|
|
|
|
auto eth0
|
|
|
|
iface eth0 inet dhcp
|
|
|
|
EOT
|
|
|
|
else
|
|
|
|
cat > /etc/network/interfaces <<EOT
|
|
|
|
# The loopback network interface
|
|
|
|
auto lo
|
|
|
|
iface lo inet loopback
|
|
|
|
EOT
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Do not reconfigure network interfaces on boot
|
|
|
|
# if [ -f /etc/default/networking ]; then
|
|
|
|
# if ! grep -q ^CONFIGURE_INTERFACES /etc/default/networking; then
|
|
|
|
# echo 'CONFIGURE_INTERFACES=no' >> /etc/default/networking
|
|
|
|
# fi
|
|
|
|
# fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# RedHat based distros
|
|
|
|
if [ -d /etc/sysconfig/network-scripts ]; then
|
|
|
|
# Prepare network files
|
|
|
|
find /etc/sysconfig/network-scripts -type f \
|
|
|
|
-name 'ifcfg-*' ! -name 'ifcfg-lo' \
|
|
|
|
-exec rm -f {} \;
|
|
|
|
|
|
|
|
if [ "${NETWORK_EC2}" = 'yes' ]; then
|
|
|
|
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOT
|
|
|
|
DEVICE="eth0"
|
|
|
|
BOOTPROTO="dhcp"
|
|
|
|
ONBOOT="yes"
|
|
|
|
TYPE="Ethernet"
|
|
|
|
USERCTL="yes"
|
|
|
|
PEERDNS="yes"
|
|
|
|
IPV6INIT="no"
|
|
|
|
NM_CONTROLLED="no"
|
|
|
|
PERSISTENT_DHCLIENT="1"
|
|
|
|
EOT
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# openSUSE based distros
|
|
|
|
if [ -d /etc/sysconfig/network ]; then
|
|
|
|
# Prepare network files
|
|
|
|
find /etc/sysconfig/network -type f \
|
|
|
|
\( -name 'ifcfg-*' -o -name 'ifroute-*' -o -name 'ifsysctl-*' \) \
|
|
|
|
! -name 'ifcfg-lo' ! -name 'ifroute-lo' ! -name 'ifsysctl-lo' \
|
|
|
|
-exec rm -f {} \;
|
|
|
|
|
|
|
|
rm -f /etc/sysconfig/network/routes /etc/sysconfig/network/ifsysctl
|
|
|
|
|
|
|
|
sed -i '/^NETCONFIG_DNS_STATIC_SERVERS=/ s/=.*$/="/' /etc/sysconfig/network/config
|
|
|
|
sed -i '/^NETCONFIG_DNS_STATIC_SEARCHLIST=/ s/=.*$/=""/' /etc/sysconfig/network/config
|
|
|
|
|
|
|
|
if [ "${NETWORK_EC2}" = 'yes' ]; then
|
|
|
|
cat >/etc/sysconfig/network/ifcfg-eth0 <<EOT
|
|
|
|
DEVICE=eth0
|
|
|
|
BOOTPROTO=dhcp4
|
|
|
|
STARTMODE=auto
|
|
|
|
USERCONTROL=yes
|
|
|
|
EOT
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# FreeBSD based distros
|
|
|
|
#TODO: pfsense paths?
|
|
|
|
if [ -f /etc/rc.conf ]; then
|
|
|
|
rm -f /etc/rc.conf.d/network /etc/rc.conf.d/routing
|
|
|
|
|
|
|
|
sed -i '' \
|
|
|
|
-e '/^ifconfig_/d' \
|
|
|
|
-e '/^route_/d' \
|
|
|
|
-e '/^static_routes/d' \
|
|
|
|
-e '/^defaultrouter/d' \
|
|
|
|
/etc/rc.conf
|
|
|
|
fi
|