78 lines
1.3 KiB
Bash
Executable File
78 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
PATH=/bin
|
|
export PATH
|
|
QUITE=${QUITE:-false}
|
|
NOSEC=false
|
|
|
|
log() {
|
|
[ "X$QUITE" != "Xtrue" ] && echo "$*"
|
|
}
|
|
|
|
err() {
|
|
echo "$*" >&2
|
|
}
|
|
|
|
if [ "x${1}x" != "x-rx" ]
|
|
then
|
|
exec </dev/console >/dev/console 2>&1
|
|
log "### ISIRD ###"
|
|
cd /
|
|
|
|
log " mount proc and sysfs and / as rw"
|
|
mount -t proc proc /proc
|
|
mount -t sysfs sysfs /sys
|
|
mount -o remount,rw /
|
|
|
|
log " mdev"
|
|
mdev -s
|
|
log " activate volume groups"
|
|
lvm vgscan --mknodes --sysinit
|
|
lvm vgchange --sysinit -P -a y
|
|
|
|
if cmdline -c NOSEC
|
|
then
|
|
NOSEC=true
|
|
fi
|
|
|
|
if [ Xtrue = "X$NOSEC" ] && cmdline -c isirdsh
|
|
then
|
|
log " start shell"
|
|
exec sh
|
|
fi
|
|
|
|
else
|
|
log " returned"
|
|
fi
|
|
|
|
ROOT="$(cmdline -c root)"
|
|
FLAGS="$(cmdline -c rootflags)"
|
|
if cmdline -c ro
|
|
then FLAGS="${FLAGS},ro"
|
|
elif cmdline -c rw
|
|
then FLAGS="${FLAGS},rw"
|
|
fi
|
|
FSTYPE="$(cmdline -c rootfstype)"
|
|
FSTYPE="${FSTYPE:-auto}"
|
|
log " umount sysfs"
|
|
umount /sys
|
|
FLAGS="${FLAGS#,}"
|
|
log " mount ${ROOT} as ${FSTYPE} with ${FLAGS}"
|
|
if ! mount -o "${FLAGS}" -t "${FSTYPE}" "${ROOT}" /mnt
|
|
then
|
|
err "Can't mount root!"
|
|
[ Xtrue = "X$NOSEC" ] && exec sh
|
|
fi
|
|
|
|
# ISIRDSH -> shell for debugging, testing, what ever...
|
|
if [ Xtrue = "X$NOSEC" ] && cmdline -c ISIRDSH
|
|
then
|
|
exec sh
|
|
fi
|
|
|
|
INIT="$(cmdline -c init)"
|
|
INIT="${INIT:-/sbin/init}"
|
|
cd /mnt
|
|
log " Change to new root"
|
|
exec switch_root /mnt "$INIT"
|