56 lines
1.4 KiB
Bash
Executable file
56 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
set -eu
|
|
|
|
PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
|
AGENT=/opt/pyro/bin/pyro_guest_agent.py
|
|
|
|
mount -t proc proc /proc || true
|
|
mount -t sysfs sysfs /sys || true
|
|
mount -t devtmpfs devtmpfs /dev || true
|
|
mkdir -p /run /tmp
|
|
hostname pyro-vm || true
|
|
|
|
cmdline="$(cat /proc/cmdline 2>/dev/null || true)"
|
|
|
|
get_arg() {
|
|
key="$1"
|
|
for token in $cmdline; do
|
|
case "$token" in
|
|
"$key"=*)
|
|
printf '%s' "${token#*=}"
|
|
return 0
|
|
;;
|
|
esac
|
|
done
|
|
return 1
|
|
}
|
|
|
|
ip link set lo up || true
|
|
if ip link show eth0 >/dev/null 2>&1; then
|
|
ip link set eth0 up || true
|
|
guest_ip="$(get_arg pyro.guest_ip || true)"
|
|
gateway_ip="$(get_arg pyro.gateway_ip || true)"
|
|
netmask="$(get_arg pyro.netmask || true)"
|
|
dns_csv="$(get_arg pyro.dns || true)"
|
|
if [ -n "$guest_ip" ] && [ -n "$netmask" ]; then
|
|
ip addr add "$guest_ip/$netmask" dev eth0 || true
|
|
fi
|
|
if [ -n "$gateway_ip" ]; then
|
|
ip route add default via "$gateway_ip" dev eth0 || true
|
|
fi
|
|
if [ -n "$dns_csv" ]; then
|
|
: > /etc/resolv.conf
|
|
old_ifs="$IFS"
|
|
IFS=,
|
|
for dns in $dns_csv; do
|
|
printf 'nameserver %s\n' "$dns" >> /etc/resolv.conf
|
|
done
|
|
IFS="$old_ifs"
|
|
fi
|
|
fi
|
|
|
|
if [ -f "$AGENT" ]; then
|
|
python3 "$AGENT" &
|
|
fi
|
|
|
|
exec /bin/sh -lc 'trap : TERM INT; while true; do sleep 3600; done'
|