#!/bin/sh

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/

# mount volatile filesystems
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs udev /dev
mkdir /dev/pts
mount -n -t devpts -o newinstance,ptmxmode=666,gid=5,mode=620 none /dev/pts
rm /dev/ptmx
ln -s /dev/pts/ptmx /dev/ptmx
mount -t cgroup cgroup /sys/fs/cgroup

# / needs permissions!?
chmod a+rx /

# minimega needs
modprobe loop
modprobe tun
modprobe virtio_console
modprobe virtio_pci

# swath of network drivers that might be used
modprobe e1000
modprobe e1000e
modprobe virtio_net
modprobe vmxnet3

# settle :(
sleep 10

ifconfig lo up

# ssh
mkdir /var/run/sshd
/usr/sbin/sshd

# arp tuning
echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 65536 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo 32768 > /proc/sys/net/ipv6/neigh/default/gc_thresh1
echo 32768 > /proc/sys/net/ipv6/neigh/default/gc_thresh2
echo 65536 > /proc/sys/net/ipv6/neigh/default/gc_thresh3

# create symlinks for virtio devices
mkdir /dev/virtio-ports

for d in $(ls /sys/class/virtio-ports); do
	name=$(cat /sys/class/virtio-ports/$d/name)
	ln -s -T /dev/$d /dev/virtio-ports/$name
done

# enable IP forwarding by default
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv4.ip_forward=1

/miniccc -v=false -serial /dev/virtio-ports/cc -logfile /miniccc.log &
/minirouter -v=false -logfile /minirouter.log &

# attach a real tty to the console
setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
