summaryrefslogtreecommitdiff
path: root/source/installer/sources/initrd/etc/rc.d/rc.S
diff options
context:
space:
mode:
Diffstat (limited to 'source/installer/sources/initrd/etc/rc.d/rc.S')
-rwxr-xr-xsource/installer/sources/initrd/etc/rc.d/rc.S250
1 files changed, 250 insertions, 0 deletions
diff --git a/source/installer/sources/initrd/etc/rc.d/rc.S b/source/installer/sources/initrd/etc/rc.d/rc.S
new file mode 100755
index 00000000..38317b4d
--- /dev/null
+++ b/source/installer/sources/initrd/etc/rc.d/rc.S
@@ -0,0 +1,250 @@
+#!/bin/sh
+# rc.S: Basic system initialization.
+
+# Any /etc/mtab that exists here is old, so we start with a new one:
+/bin/rm -f /etc/mtab{,~,.tmp} && /bin/touch /etc/mtab
+
+# Add (fake) entry for / to /etc/mtab:
+/sbin/mount -f -w /dev/initramfs / -t tmpfs 1> /dev/null
+
+# Mount /proc:
+/sbin/mount -v proc /proc -t proc 1> /dev/null
+
+# Mount sysfs next:
+/sbin/mount -v sysfs /sys -t sysfs 1> /dev/null
+
+# Activate swap:
+/sbin/swapon -a 1> /dev/null
+
+if [ -x /sbin/ldconfig ]; then
+ /sbin/ldconfig 1> /dev/null
+fi
+
+## Detect serial console from kernel command line:
+#if cat /proc/cmdline | grep console=ttyS 1> /dev/null 2> /dev/null ; then
+# SERIAL_CONSOLE="true"
+#fi
+
+# System logger (mostly to eat annoying messages):
+/sbin/syslogd 2> /dev/null
+sleep 1
+/sbin/klogd -c 3 1> /dev/null
+
+# Try to load the loop module:
+modprobe loop 1> /dev/null 2> /dev/null
+
+# Run udev:
+if ! grep -wq noudev /proc/cmdline ; then
+ /bin/bash /etc/rc.d/rc.udev start
+
+ # Re-assemble RAID volumes:
+ /sbin/mdadm -E -s > /etc/mdadm.conf
+ /sbin/mdadm -S -s
+ /sbin/mdadm -A -s
+ # This seems to make the kernel see partitions more reliably:
+ fdisk -l /dev/md* 1> /dev/null 2> /dev/null
+else
+ # Run our old detection routines:
+
+ # Look for USB keyboard or storage:
+ /etc/rc.d/rc.usb start
+ sleep 3
+
+ # Look for IEEE1394 devices:
+ if grep 1394 /proc/pci 1> /dev/null 2> /dev/null ; then
+ /etc/rc.d/rc.ieee1394 start
+ #sleep 3
+ fi
+
+ # Load additional install floppies:
+ for NEWDISK in 2 ; do
+ if [ ! -r /etc/disk${NEWDISK} ]; then
+ while [ 0 ]; do
+ echo
+ echo -n "Insert install.${NEWDISK} floppy disk to be loaded into RAM disk and press ENTER"
+ read readfoo;
+ if [ "$readfoo" = "Q" -o "$readfoo" = "q" ]; then
+ break;
+ fi
+ echo -n "Loading install.${NEWDISK} floppy into RAM disk... "
+ ( cd / ; cat /dev/fd0 | zcat 2> /dev/null | tar xf - )
+ if [ -r /etc/disk${NEWDISK} ]; then
+ echo "done."
+ echo
+ break;
+ else
+ echo "Error. (reload or enter Q)"
+ echo
+ continue;
+ fi
+ done
+ fi
+ done
+
+ ### PROBABLY USELESS WITHOUT SOME TIMED DELAY ABOVE
+ ## Start USB again (in case we missed a USB keyboard)
+ #/etc/rc.d/rc.usb start
+
+ # Make detected partitions:
+ /dev/makedevs.sh
+
+ ## Not needed with CONFIG_SCSI_MULTI_LUN=y
+ #unset SCAN
+ ## Now we should rescan the "SCSI" bus to look for new USB or firewire devices
+ ## that look like SCSI devices:
+ #if [ -r /proc/bus/usb/devices ]; then
+ # if cat /proc/bus/usb/devices | grep -w usb-storage 1> /dev/null 2> /dev/null ; then
+ # SCAN="true"
+ # fi
+ #fi
+ #if [ -r /proc/bus/ieee1394/devices ]; then
+ # if cat /proc/bus/ieee1394/devices | grep -w SBP2 1> /dev/null 2> /dev/null ; then
+ # SCAN="true"
+ # fi
+ #fi
+ #if [ "$SCAN" = "true" ]; then
+ # if ! cat /proc/cmdline | grep -q noscanluns 2> /dev/null ; then
+ # echo "Detected new USB/IEEE1394 storage devices... scanning all LUNs."
+ # echo "(to skip, give a 'noscanluns' kernel option at boot)"
+ # #sleep 5
+ # sh /sbin/rescan-scsi-bus -l
+ # #sleep 1
+ # fi
+ #fi
+ #unset SCAN
+
+ # Re-assemble RAID volumes:
+ /sbin/mdadm -E -s > /etc/mdadm.conf
+ /sbin/mdadm -S -s
+ /sbin/mdadm -A -s
+ # This seems to make the kernel see partitions more reliably:
+ fdisk -l /dev/md* 1> /dev/null 2> /dev/null
+
+ # Check /proc/partitions again:
+ /dev/makedevs.sh
+
+ # Create LVM nodes:
+ /dev/devmap_mknod.sh
+
+fi # End Run udev:
+
+# Here's the situation. Because of the practice of keeping the local
+# time (rather than UTC) in the system's clock, at any given time half
+# of the people doing an install will be creating files that upon
+# reboot will appear to have been created in the future.
+#
+# There are a lot of things that aren't happy when that happens. The
+# one that screams the most loudly is e2fsck, and we don't want to
+# anger that! Sometimes it even proceeds to check the partitions just
+# to be sure the user is fully punished.
+#
+# But, there's a simple solution. If we set the (temporary) Linux clock
+# to yesterday (-24h), then there's no way that could occur. Everything
+# on the system will be in the past (but not too far in the past).
+# Since files will quickly be put into use and given the correct after
+# reboot, this really shouldn't have a negative impact. Plus, it affects
+# only newly created files during installation -- any file shipped in a
+# package will have an accurate time of creation. (for its timezone ;-)
+#
+# Update: We have to use 2 days ago, or chroot()+timezone offset might
+# still be in the future... <sigh>
+#
+touch /.today
+/bin/sh /sbin/fakedate
+
+if [ -x /etc/rc.d/rc.inet1 ]; then
+ /bin/sh /etc/rc.d/rc.inet1
+fi
+
+# pcmciautils is installing rc.pcmcia as chmod 644, so we'll change that.
+# It won't be run at boot time, but it'll make it easy for the pcmcia script
+# or to run it from the command line.
+chmod 755 /etc/rc.d/rc.pcmcia
+
+# Scan for existing LVM partitions:
+# We will run 'vgscan -ay' in the setup to prevent a 10 second sleep;
+vgscan --mknodes 2> /tmp/foo
+cat /tmp/foo | uniq
+rm -f /tmp/foo
+
+if [ -x /etc/rc.d/rc.font ]; then
+ /bin/sh /etc/rc.d/rc.font
+fi
+
+# Don't automatically blank the screen, or it will go black during the install
+# process when stray keystrokes might be dangerous:
+/bin/setterm -blank 0
+
+echo > /etc/motd
+echo "`/bin/uname -a | /bin/cut -d\ -f1,3`." >> /etc/motd
+echo >> /etc/motd
+cat << EOF >> /etc/motd
+If you're upgrading an existing Slackware system, you might want to
+remove old packages before you run 'setup' to install the new ones. If
+you don't, your system will still work but there might be some old files
+left laying around on your drive.
+
+Just mount your Linux partitions under /mnt and type 'pkgtool'. If you
+don't know how to mount your partitions, type 'pkgtool' and it will tell
+you how it's done.
+
+To partition your hard drive(s), use 'cfdisk' or 'fdisk'.
+To start the main installation (after partitioning), type 'setup'.
+
+EOF
+
+# Dropbear seems to handle the $PATH correctly now...
+#echo > /etc/motd.net
+#echo "First command to run is 'source /etc/profile'." >> /etc/motd.net
+#echo "This will setup the PATH for you." >> /etc/motd.net
+#echo >> /etc/motd.net
+
+# If possible, figure out what kernel we just booted with:
+unset SLACK_KERNEL
+for ARG in `cat /proc/cmdline` ; do
+ if [ "`echo $ARG | cut -f 1 -d =`" = "SLACK_KERNEL" ]; then
+ IMAGE="`echo $ARG | cut -f 2 -d =`"
+ SLACK_KERNEL=$IMAGE
+ fi
+done
+export SLACK_KERNEL
+
+. /etc/profile
+
+clear
+if ! cat /proc/cmdline | grep -q 'kbd=' 2> /dev/null ; then
+ echo
+ echo
+ echo "<OPTION TO LOAD SUPPORT FOR NON-US KEYBOARD>"
+ echo
+ echo "If you are not using a US keyboard, you may now load a different"
+ echo "keyboard map. To select a different keyboard map, please enter 1"
+ echo "now. To continue using the US map, just hit enter."
+ echo
+ echo -n "Enter 1 to select a keyboard map: "
+ read ONE
+ if [ "$ONE" = "1" ]; then
+ /usr/lib/setup/SeTkeymap
+ fi
+else
+ for ARG in `cat /proc/cmdline` ; do
+ if [ "`echo $ARG | cut -f1 -d=`" = "kbd" ]; then
+ BMAP="`echo $ARG | cut -f2 -d=`.bmap"
+ fi
+ done
+ tar xzOf /etc/keymaps.tar.gz $BMAP | loadkmap
+ unset BMAP
+fi
+clear
+
+# Provision for unattended network configuration:
+/usr/lib/setup/SeTnet boot
+# Start dropbear ssh server (only if a configured interface is present):
+/etc/rc.d/rc.dropbear start
+
+# Fake login: (fooled ya! ;^)
+
+cat /etc/issue
+echo -n "slackware login: "
+read BOGUS_LOGIN
+cat /etc/motd