# Write the initial dmesg log into /var/log/dmesg after boot
# This may be useful if you need the kernel boot log afterwards
log_dmesg="YES"
+
+# Save the previous dmesg log to dmesc.old
+# This may be useful if you need to compare the current boot to the
+# previous one.
+#previous_dmesg=no
--- /dev/null
+# The interfaces setting controls which interfaces the net-online
+# service considers in deciding whether the network is active. By
+# default, it is all ethernet or wireless LAN interfaces.
+#interfaces=""
+
+# This setting controls whether a ping to the default gateway is
+# included in the test for network connectivity after all interfaces
+# are active.
+#ping_default_gateway=no
+
+# The timeout setting controls how long the net-online service waits
+# for the network to be configured.
+# The default is 120 seconds.
+# if this is set to 0, the wait is infinite.
+#timeout=120
#rc_need="net.eth1 net.eth2"
#
# If you are using a dynamic network management tool like
-# networkmanager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to
+# NetworkManager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to
# manage the network interfaces with the routes to your netmounts, you
# should list that tool.
#
-#rc_need="networkmanager"
+#rc_need="NetworkManager"
#rc_need="dhcpcd"
#rc_need="wicd"
#
case "$RC_SYS" in
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
*)
+ if yesno ${previous_dmesg:-no}; then
+ mv /var/log/dmesg /var/log/dmesg.old
+ fi
dmesg > /var/log/dmesg
chmod 640 /var/log/dmesg
;;
--- /dev/null
+#!/sbin/openrc-run
+# Copyright (C) 2015 William Hubbs <w.d.hubbs@gmail.com>
+# Released under the 2-clause BSD license.
+
+description="Delays until the network is online or a specific timeout"
+
+depend()
+{
+ after modules
+ need sysfs
+ keyword -jail -lxc -openvz -prefix -systemd-nspawn -uml -vserver
+}
+
+get_interfaces()
+{
+ local ifname iftype
+ for ifname in /sys/class/net/*; do
+ read iftype < ${ifname}/type
+ [ "$iftype" = "1" ] && printf "%s " ${ifname##*/}
+ done
+}
+
+get_default_gateway()
+{
+ local cmd gateway
+ if command -v ip > /dev/null 2>&1; then
+ cmd="ip route show"
+ else
+ cmd=route
+ fi
+ set -- $($cmd | grep default)
+ [ "$2" != via ] && gateway="$2" || gateway="$3"
+ printf "%s" $gateway
+}
+
+start ()
+{
+ local carriers configured dev gateway ifcount infinite interfaces
+ local rc state timeout x
+
+ ebegin "Checking to see if the network is online"
+ rc=0
+ interfaces=${interfaces:-$(get_interfaces)}
+ timeout=${timeout:-120}
+ [ $timeout -eq 0 ] && infinite=true || infinite=false
+ while $infinite || [ $timeout -gt 0 ]; do
+ carriers=0
+ configured=0
+ ifcount=0
+ for dev in ${interfaces}; do
+ : $((ifcount += 1))
+ read x < /sys/class/net/$dev/carrier
+ [ $x -eq 1 ] && : $((carriers += 1))
+ read x < /sys/class/net/$dev/operstate
+ [ "$x" = up ] && : $((configured += 1))
+ done
+ [ $configured -eq $ifcount ] && [ $carriers -ge 1 ] && break
+ sleep 1
+ : $((timeout -= 1))
+ done
+ ! $infinite && [ $timeout -eq 0 ] && rc=1
+ if [ $rc -eq 0 ] && yesno ${ping_default_gateway:-no}; then
+ gateway="$(get_default_gateway)"
+ if [ -n "$gateway" ] && ! ping -c 1 $gateway > /dev/null 2>&1; then
+ rc=1
+ fi
+ fi
+ eend $rc "The network is offline"
+}
fi
fi
- # set up kernel support for cgroups
- if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
- if grep -qs cgroup /proc/filesystems; then
- ebegin "Mounting cgroup filesystem"
- local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}"
- mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
- eend $?
- fi
- fi
-
# set up kernel support for fusectl
if [ -d /sys/fs/fuse/connections ] \
&& ! mountinfo -q /sys/fs/fuse/connections; then
mount_cgroups()
{
+ # set up kernel support for cgroups
+ if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
+ if grep -qs cgroup /proc/filesystems; then
+ ebegin "Mounting cgroup filesystem"
+ local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}"
+ mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
+ eend $?
+ fi
+ fi
+
mountinfo -q /sys/fs/cgroup || return 0
if ! mountinfo -q /sys/fs/cgroup/openrc; then