diff options
Diffstat (limited to 'debian/local/runsystem')
-rwxr-xr-x | debian/local/runsystem | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/local/runsystem b/debian/local/runsystem new file mode 100755 index 00000000..198c0f84 --- /dev/null +++ b/debian/local/runsystem @@ -0,0 +1,71 @@ +#!/bin/sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin +export PATH + +umask 022 + +# Create a minimal subset of device and server nodes +/usr/lib/hurd/setup-translators -m -k -p + +/hurd/mach-defpager + +mem=`vmstat-hurd --size -k` +if [ "$mem" -lt 240000 ] +then + echo "You only have ${mem}KiB memory." + echo "Debian GNU/Hurd installation has not been optimized for memory usage yet, and thus currently needs at least 256MiB memory, sorry." + while true + do + sleep 60 + done +fi + +# Get all kernel parameters that can be exported as environment variables +envvars="$(echo $* | tr ' ' '\012' | egrep '^[-_/[:alnum:]]+=.*$')" + +# Invoke init as linuxrc to work around pid != 1 +init='/bin/busybox linuxrc' + +# Parse kernel parameters +for i in $envvars ; do + case "$i" in + init="/sbin/init"|init="init") + # Avoid endless loop + : ;; + init=*) + init=${i#init=} + ;; + noshell=*) + sed -i '/^tty[12]/s/^/#/' /etc/inittab + ;; + TERM=*) + term=yes + ;; + esac +done + +if [ "$term" != yes ] +then + # No terminal type set, assume we can start the Hurd console + + # Touch the first tty so that the Hurd console is certain to pick it + # and not some random other tty. + sleep 1 + touch /dev/tty1 + + echo -n "Starting the Hurd console..." + console -d vga -g -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -c /dev/vcs & + sleep 1 + + # Switch over + envvars="$envvars TERM=hurd" + exec < /dev/tty1 > /dev/tty1 2>&1 + echo "Console started, initializing installer environment, please wait..." + + # Set the console device used by /sbin/reopen-console + echo /dev/tty1 >/var/run/console-device +fi + +# Preset the terminal type for /lib/debian-installer/detect-console +eval exec env - $envvars TERM_TYPE=virtual $init |