Raimo Niskanen <[email protected]> writes:
> You can always "mount -t ffs / /dev/sd1a".
Thanks for that! I didn't want to mess the real /etc/rc so I end up with
the following script that I put in /bin.
#!/bin/ksh
set_kbd() {
local _layout _resp _default=1
[[ -x /sbin/kbd ]] || return
while :; do
echo -n "Keyboard layout (1: fr; 2: fr.dvorak; 3: us)? [$_default] "
read _resp && : ${_resp:=$_default}
case $_resp in
1) _layout=fr ;;
2) _layout=fr.dvorak ;;
3) _layout=us ;;
esac
[[ -z $_layout ]] || { /sbin/kbd $_layout && break; }
done
}
# Set ROOT and RAID global var
get_devname() {
local _str _arr
_str=`ed -s !dmesg <<EOF
/^root on/,p
q
EOF`
set -A _arr $_str
ROOT=${_arr[2]}
RAID=${ROOT%%a*}d
}
build_fstab() {
cat <<EOF > /etc/fstab
/dev/${ROOT} / ffs rw 1 1
swap /tmp mfs rw,nodev,nosuid,-s=40960 0 0
/dev/${DECRYPT}f /home ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/${DECRYPT}e /usr ffs rw,nodev,noatime,softdep 1 2
/dev/${DECRYPT}d /var ffs rw,nodev,nosuid,noatime,softdep 1 2
EOF
}
decrypt() {
local _str _arr
bioctl -c C -l /dev/$RAID softraid0
# Reads revelant bioctl line
_str=`ed -s !"bioctl -i softraid0" <<EOF
/CRYPTO/,p
q
EOF`
(( $? )) && return 1
# Split it
set -A _arr $_str
DECRYPT=${_arr[4]}
return 0
}
# ed needs a /tmp
mount -t mfs -o rw,nodev,nosuid,-s=1000 swap /tmp
get_devname
mount -t ffs /dev/${ROOT} /
set_kbd
decrypt && build_fstab
fsck -p
--
Manuel Giraud