summaryrefslogtreecommitdiff
path: root/Technology/Gentoo/init.md
diff options
context:
space:
mode:
Diffstat (limited to 'Technology/Gentoo/init.md')
-rw-r--r--Technology/Gentoo/init.md141
1 files changed, 0 insertions, 141 deletions
diff --git a/Technology/Gentoo/init.md b/Technology/Gentoo/init.md
deleted file mode 100644
index 4cbded1..0000000
--- a/Technology/Gentoo/init.md
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/bin/busybox sh
-
-rescue_shell() {
- echo "$@"
- echo "Something went wrong. Dropping you to a shell."
- /bin/busybox --install -s
- exec /bin/sh
-}
-
-# allow the use of UUIDs or filesystem lables
-uuidlabel_root() {
- for cmd in $(cat /proc/cmdline) ; do
- case $cmd in
- root=*)
- type=$(echo $cmd | cut -d= -f2)
- echo "Mounting rootfs"
- if [ $type == "LABEL" ] || [ $type == "UUID" ] ; then
- uuid=$(echo $cmd | cut -d= -f3)
- mount -o ro $(findfs "$type"="$uuid") /mnt/root
- else
- mount -o ro $(echo $cmd | cut -d= -f2) /mnt/root
- fi
- ;;
- esac
- done
-}
-
-check_filesystem() {
- # most of code coming from /etc/init.d/fsck
-
- local fsck_opts= check_extra= RC_UNAME=$(uname -s)
-
- # FIXME : get_bootparam forcefsck
- if [ -e /forcefsck ]; then
- fsck_opts="$fsck_opts -f"
- check_extra="(check forced)"
- fi
-
- echo "Checking local filesystem $check_extra : $1"
-
- if [ "$RC_UNAME" = Linux ]; then
- fsck_opts="$fsck_opts -C0 -T"
- fi
-
- trap : INT QUIT
- # using our own fsck, not the builtin one from busybox
- /sbin/fsck -p $fsck_opts $1
-
- ret_val=$?
- case $ret_val in
- 0) return 0;;
- 1) echo "Filesystem repaired"; return 0;;
- 2|3) if [ "$RC_UNAME" = Linux ]; then
- echo "Filesystem repaired, but reboot needed"
- reboot -f
- else
- rescue_shell "Filesystem still have errors; manual fsck required"
- fi;;
- 4) if [ "$RC_UNAME" = Linux ]; then
- rescue_shell "Fileystem errors left uncorrected, aborting"
- else
- echo "Filesystem repaired, but reboot needed"
- reboot
- fi;;
- 8) echo "Operational error"; return 0;;
- 16) echo "Use or Syntax Error"; return 16;;
- 32) echo "fsck interrupted";;
- 127) echo "Shared Library Error"; sleep 20; return 0;;
- *) echo $ret_val; echo "Some random fsck error - continuing anyway"; sleep 20; return 0;;
- esac
-
-# rescue_shell can't find tty so its broken
- rescue_shell
-}
-
-# start for real here
-
-# temporarily mount proc and sys
-mount -t proc none /proc
-mount -t sysfs none /sys
-
-# assemble the raid set(s) - they got renumbered from md1, md5 and md6
-
-# not needed on SSD but we may want to maintain it
-# /boot
-/sbin/mdadm --assemble /dev/md125 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
-# don't care if /boot fails to assemble
-
-# not needed on SSD
-# / (root) I wimped out of root on lvm for this box
-/sbin/mdadm --assemble /dev/md126 /dev/sda5 /dev/sdb5 /dev/sdc5 /dev/sdd5 || rescue_shell
-# if root won't assemble, we are stuck
-
-# LVM for everything else
-# /home and everything portge related
-/sbin/mdadm --assemble /dev/md127 /dev/sda6 /dev/sdb6 /dev/sdc6 /dev/sdd6 || rescue_shell
-# and if the LVM space won't assemble there is no /usr or /var so we are really in a mess
-# TODO could auto cope with degraded raid operation
-
-# lvm runs as whatever its called as
-ln -s /sbin/lvm.static /sbin/vgchange
-
-# everything on the SDD
-/sbin/vgchange -ay ssd | rescue_shell
-
-# start the vg volume group - /home and everything for portage - need not die here
-/sbin/vgchange -ay vg || rescue_shell
-
-# get here with raid sets assembled and logical volumes available
-# mounting rootfs on /mnt/root
-uuidlabel_root || rescue_shell "Error with uuidlabel_root"
-
-# space separated list of mountpoints that ...
-mountpoints="/usr /var"
-
-# ... we want to find in /etc/fstab ...
-ln -s /mnt/root/etc/fstab /etc/fstab
-
-# ... to check filesystems and mount our devices.
-for m in $mountpoints ; do
-
-#echo $m
-
- check_filesystem $m
-
- echo "Mounting $m"
- # mount the device and ...
- mount $m || rescue_shell "Error while mounting $m"
-
- # ... move the tree to its final location
- mount --move $m "/mnt/root"$m || rescue_shell "Error while moving $m"
-done
-
-echo "All done. Switching to real root."
-
-# clean up. The init process will remount proc sys and dev later
-umount /proc
-umount /sys
-
-# switch to the real root and execute init
-exec switch_root /mnt/root /sbin/init