#!/bin/sh
exec >/dev/console 2>&1
echo "rcS: mounting pseudo-filesystems"
mount -t proc proc /proc 2>/dev/null || true
mount -t sysfs sys /sys 2>/dev/null || true
mount -t devtmpfs devtmpfs /dev 2>/dev/null || true
mkdir -p /dev/pts 2>/dev/null || true
mount -t devpts devpts /dev/pts -o gid=5,mode=620 2>/dev/null || mount -t devpts devpts /dev/pts 2>/dev/null || true
[ -c /dev/ptmx ] || mknod /dev/ptmx c 5 2 2>/dev/null || true
chmod 666 /dev/ptmx 2>/dev/null || true
mkdir -p /run 2>/dev/null || true
if [ -f /etc/hostname ]; then
  hostname -F /etc/hostname 2>/dev/null || hostname unos 2>/dev/null || true
  echo "rcS: hostname $(hostname 2>/dev/null || cat /etc/hostname)"
fi
echo "rcS: bringing up loopback"
ip link set lo up 2>/dev/null || ifconfig lo up 2>/dev/null || true
echo "rcS: bringing up eth0"
ip link set eth0 up 2>&1 | head -1
sleep 1
# qemu user-mode net: dhcp via udhcpc if available, else static fallback
if command -v udhcpc >/dev/null 2>&1; then
  udhcpc -i eth0 -q 2>&1 || true
  # fallback if dhcp left no address
  ip addr show eth0 2>/dev/null | grep -q "inet " || {
    echo "rcS: dhcp failed, using static 10.0.2.15/24"
    ip addr add 10.0.2.15/24 dev eth0 2>/dev/null || ifconfig eth0 10.0.2.15 netmask 255.255.255.0 2>/dev/null || true
    ip route add default via 10.0.2.2 2>/dev/null || route add default gw 10.0.2.2 2>/dev/null || true
    echo "nameserver 10.0.2.3" > /etc/resolv.conf 2>/dev/null || true
  }
else
  ip addr add 10.0.2.15/24 dev eth0 2>/dev/null || ifconfig eth0 10.0.2.15 netmask 255.255.255.0 2>/dev/null || true
  ip link set eth0 up 2>/dev/null || true
  ip route add default via 10.0.2.2 2>/dev/null || true
fi
echo "rcS: network ready"
ip addr show 2>&1 | head -20
# start supervision (runsvdir manages /etc/sv/*)
if [ -d /etc/sv ]; then
  echo "rcS: starting runsvdir"
  runsvdir /etc/sv &
fi
if [ -x /etc/sv/tinyssh/run ]; then
  echo "rcS: tinyssh will be supervised"
else
  echo "rcS: no tinyssh service found"
fi
