1 # This file implements common functions for all boot methods
8 # grab and set a configuration variable
9 # $1 = variable, [ $2 = default .. error otherwise ]
11 eval $1="$(sed "/^$1=.*/{s|^$1=||;b};d" $CONFIG)"
12 [ -z "$(eval echo "\$$1")" ] || return 0
13 [ $# -lt 2 ] && die "Missing $1=... in $CONFIG"
18 # Unless the subhost already has a private /etc/network/interfaces,
19 # install an "empty" one
21 [ -r $UPPER/etc/network/interfaces ] && return 0
22 [ "$UPPER/etc/network" = "/etc/network" ] && exit 1
23 mkdir -p $UPPER/etc/network
24 cat <<EOF > $UPPER/etc/network/interfaces
25 # Generated for $NAME subhost
27 iface lo inet loopback
32 # Setup the network namespace for the given $CABLES
33 # $1=netns ( $2="br=mac" .. )
35 local NETNS BR IF MAC C i ADD
40 setup_networking || ADD=true
44 [ -z "$MAC" ] || MAC="address $MAC"
45 ip link add $IF type veth peer name eth$i $MAC netns $NETNS
47 $ADD && cat <<EOF >> $UPPER/etc/network/interfaces
50 iface eth$i inet manual
53 [ -z "$BR" ] || brctl addif $BR $IF
58 REAPER=$(dirname $(realpath $0))/reaper/reaper
59 # (name live system root work)
60 # Set up an overlay fmr $name on $live, with a new tmpfs on its /run,
61 # and "install" a "reaper" as the upcoming pid 1
65 mount -t tmpfs -osize=100M tmpfs $4/run
67 grep -q "$1 $2" /proc/mounts || \
68 mount -t overlay -olowerdir=$3,upperdir=$4,workdir=$5 $1 $2 || \
69 die "Cannot set up the overlay mount $2"
70 mount --bind $4/run $2/run
71 cp $REAPER $LIVE/.reaper
75 # Check if $SRV is "live" ; will
77 pgrep -f ".reaper $SRV" > /dev/null