MandrivaThis Forum is for the discussion of Mandriva (Mandrake) Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
# Rerun ourselves through initlog
if [ -z "$IN_INITLOG" -a -x /sbin/initlog ]; then
exec /sbin/initlog $INITLOG_ARGS -r /etc/rc.d/rc.sysinit
fi
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
HOSTNAME=`/bin/hostname`
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
else
NETWORKING=no
fi
# Read in config data.
if [ -f /etc/sysconfig/usb ]; then
. /etc/sysconfig/usb
fi
if [ -f /etc/sysconfig/system ]; then
. /etc/sysconfig/system
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
. /etc/init.d/functions
# This must be done before anything else because now most messages
# are translated so we need correct system font very early
# This must be done before Aurora is started too, since screenchars
# --tty=foo is broken
# Note that if setting of system font fails here boot messages
# may be unreadable so we may need to reset LANGUAGE to C in this case
# Load system font
if [ -x /sbin/setsysfont ]; then
[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
if [ -n "$SYSFONT" ]; then
[ -f /etc/sysconfig/console/consolefonts/$SYSFONT.psf.gz -o \
-f /etc/sysconfig/console/consolefonts/$SYSFONT.psf ] || \
DELAYED_FONT=yes
fi
if [ -n "$SYSFONTACM" ]; then
[ -f /etc/sysconfig/console/consoletrans/$SYSFONTACM \
-o -f /etc/sysconfig/console/consoletrans/$SYSFONTACM.acm.gz \
-o -f /etc/sysconfig/console/consoletrans/$SYSFONTACM.acm ] || \
DELAYED_FONT=yes
fi
if [ -n "$UNIMAP" ]; then
[ -f /etc/sysconfig/console/consoletrans/$UNIMAP \
-o -f /etc/sysconfig/console/consoletrans/$UNIMAP.sfm.gz \
-o -f /etc/sysconfig/console/consoletrans/$UNIMAP.sfm ] || \
DELAYED_FONT=yes
fi
# We have to set font before printing message, so we cannot
# use ``action message command'' directly because it prints
# message before executing command
[ "$DELAYED_FONT" != "yes" -o -r /usr/lib/kbd/consolefonts ] && \
case "$LC_ALL$LC_CTYPE$LANG" in
*.utf8*|*.UTF-8*)
action "Setting default font ($SYSFONT): " /bin/unicode_start $SYSFONT
# this is done by unicode_start, but apparently "action"
# filters the output, so it has to be redone again
echo -n -e '\033%G'
;;
*)
CHbum bumT=${CHbum bumT=`locale charmap 2> /dev/null`}
case "$CHbum bumT" in
UTF-8)
action "Setting default font ($SYSFONT): " /bin/unicode_start $SYSFONT
# this is done by unicode_start, but apparently
# "action" filters the output, so it has to be redone
echo -n -e '\033%G'
;;
*)
action "Setting default font ($SYSFONT): " /sbin/setsysfont
;;
esac
;;
esac
fi
# Mount /proc (done here so volume labels can work with fsck)
action "Mounting proc filesystem" mount -n -t proc none /proc
# Do the following while waiting for an 'I' from the user...
{
# Print a banner.
# C-like escape sequences don't work as 2nd and up parameters of gprintf,
# so real escap chars were written
PRODUCT=`sed "s/.*release \([0-9.]*\).*/\1/g" /etc/mandrake-release 2> /dev/null`
SYSTEM=${SYSTEM=Mandrakelinux}
if [ "$BOOTUP" != "serial" ]; then
gprintf "\t\t\tWelcome to %s" "`echo -en '\\033[1;36m'`$SYSTEM`echo -en '\\033[0;39m'` $PRODUCT"
else
gprintf "\t\t\tWelcome to %s" "$SYSTEM $PRODUCT"
fi
echo -en "\r"
echo
if [ "$PROMPT" != "no" ]; then
gprintf "\t\tPress 'I' to enter interactive startup."
echo -en "\r"
echo
sleep 1
fi
# for 2.5 - mount sysfs if it is available
if [[ -d /sys ]] && grep -q sysfs /proc/filesystems; then
action "Mounting sysfs on /sys" mount -t sysfs none /sys
fi
# Try to get devfsd
if [ -c /dev/.devfsd ]; then
if [ -x /sbin/devfsd ]; then
action "Running DevFs daemon" devfsd /dev
else
if ! grep -q "nodevfsd" /proc/cmdline;then
# devfs is used but devfsd isn't installed
gprintf " #### your system is currently using devfs but devfsd isn't available"
gprintf " #### you should disable devfs (add 'devfs=nomount' to the paramaters"
gprintf " #### that your bootloader gives to the kernel"
# Let devfs being tested, but disable it on /dev
action " Disabling devfs (was mounted on /dev)" umount /dev
fi
fi
fi
# If brltty exist start it
[ -x /bin/brltty ] && action "Starting braille terminal" /bin/brltty
# If user was not fast enough he gets another chance
# before exiting rc.sysinit
kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1
} &
if [ "$PROMPT" != "no" ]; then
/sbin/getkey i && export CONFIRM=yes
fi
wait
# Fix console loglevel
/bin/dmesg -n $LOGLEVEL
# Unmount the initrd, if necessary
# (pixel) do not unmount if /initrd/loopfs is mounted (happens for root loopback)
if LC_ALL=C grep -q /initrd /proc/mounts && ! LC_ALL=C grep -q /initrd/loopfs /proc/mounts ; then
if [ -e /initrd/dev/.devfsd ]; then
umount /initrd/dev
fi
action "Unmounting initrd: " umount /initrd
/sbin/blockdev --flushbufs /dev/ram0 >/dev/null 2>&1
fi
if [ -f /etc/sysconfig/clock ]; then
. /etc/sysconfig/clock
# convert old style clock config to new values
if [ "${CLOCKMODE}" = "GMT" ]; then
UTC=true
elif [ "${CLOCKMODE}" = "ARC" ]; then
ARC=true
fi
fi
CLOCKDEF=""
if [ "$ARCH" = "ppc" ];then
CLOCKFLAGS="$CLOCKFLAGS -s"
else
CLOCKFLAGS="$CLOCKFLAGS --hctosys"
fi
case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --utc";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac
case "$ARC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --arc";
CLOCKDEF="$CLOCKDEF (arc)";
;;
esac
case "$SRM" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --srm";
CLOCKDEF="$CLOCKDEF (srm)";
;;
esac
if [ "$ARCH" = "alpha" -a -f /lib/modules/$(uname -r)/modules.dep ];then
/sbin/hwclock $CLOCKFLAGS
elif [ "$ARCH" != "alpha" ];then
/sbin/hwclock $CLOCKFLAGS
fi
action "Setting clock %s: %s" "$CLOCKDEF" "`date`" date
rc_splash clock 3
if [ "`/sbin/consoletype`" = "vt" -a -x /bin/loadkeys ]; then
KEYTABLE=
KEYMAP=
if [ -f /etc/sysconfig/console/default.kmap ]; then
KEYMAP=/etc/sysconfig/console/default.kmap
else
if [ -f /etc/sysconfig/keyboard ]; then
. /etc/sysconfig/keyboard
fi
if [ -n "$KEYTABLE" -a -d /usr/lib/kbd/keymaps -o -d /lib/kbd/keymaps ]; then
KEYMAP=$KEYTABLE
fi
fi
if [ -n "$KEYMAP" ]; then
# Since this takes in/output from stdin/out, we can't use initlog
if [ -n "$KEYTABLE" ]; then
gprintf "Loading default keymap (%s): " $KEYTABLE
else
gprintf "Loading default keymap: "
fi
loadkeys $KEYMAP < /dev/tty0 > /dev/tty0 2>/dev/null && \
success "Loading default keymap" || failure "Loading default keymap"
echo
fi
fi
# Set the hostname.
action "Setting hostname %s: " ${HOSTNAME} hostname ${HOSTNAME}
# Set the NIS domain name
if [ -n "$NISDOMAIN" ]; then
action "Setting NIS domain name %s: " $NISDOMAIN nisdomainname $NISDOMAIN
fi
# Load usb now to be able to use an usb keyboard to answer questions
if ! LC_ALL=C grep -iq "nousb" /proc/cmdline 2>/dev/null && ! LC_ALL=C grep -iq "usb" /proc/devices 2>/dev/null ; then
/etc/init.d/usb start
fi
if [ -f /fastboot ] || LC_ALL=C grep -iq "fastboot" /proc/cmdline 2>/dev/null ; then
fastboot=yes
else
fastboot=
fi
if [ -r /etc/sysconfig/init ]; then
. /etc/sysconfig/init
fi
if [ "$FSCKOPTIONS" ]; then
fsckoptions="$FSCKOPTIONS"
else
fsckoptions=
fi
if [ -f /forcefsck ]; then
fsckoptions="-f $fsckoptions"
elif [ -f /.autofsck ]; then
rc_splash verbose
gprintf "Your system appears to have shut down uncleanly\n"
AUTOFSCK_TIMEOUT=5
[ -f /etc/sysconfig/autofsck ] && . /etc/sysconfig/autofsck
if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
AUTOFSCK_OPT=-f
fi
if [ "$PROMPT" != "no" ]; then
if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
MSG=`gprintf "Press N within %%d seconds to not force file system integrity check..."`
KEYS=`gprintf "nN"`
if /sbin/getkey -c $AUTOFSCK_TIMEOUT -m "$MSG" "$KEYS" ; then
AUTOFSCK_OPT=
else
echo
fi
else
MSG=`gprintf "Press Y within %%d seconds to force file system integrity check..."`
KEYS=`gprintf "yY"`
if /sbin/getkey -c $AUTOFSCK_TIMEOUT -m "$MSG" "$KEYS" ; then
AUTOFSCK_OPT=-f
else
echo
fi
fi
echo
else
# PROMPT not allowed
if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
gprintf "Forcing file system integrity check due to default setting\n"
else
gprintf "Not forcing file system integrity check due to default setting\n"
fi
fi
fsckoptions="$AUTOFSCK_OPT $fsckoptions"
fi
if [ "$BOOTUP" = "color" ]; then
fsckoptions="-C $fsckoptions"
else
fsckoptions="-V $fsckoptions"
fi
Fsck()
{ initlog -c "/sbin/fsck $*"
rc=$?
if [ $rc -gt 3 ]; then
rc_splash verbose
gprintf "Failed to check filesystem. Do you want to repair the errors? (Y/N)\n"
gprintf "(beware, you can lose data)\n"
read answer
if strstr "yY" "$answer" ; then
opts=`echo "$* " | sed 's/-a //'`
initlog -c "/sbin/fsck $opts -y"
rc=$?
fi
fi
if [ "$rc" = "0" ]; then
echo_success
echo
elif [ "$rc" = "1" ]; then
echo_passed
echo
if [ -x /sbin/quotacheck ]; then
_RUN_QUOTACHECK=1
fi
# A return of 2 or higher means there were serious problems.
elif [ $rc -gt 1 ]; then
if [ $rc -gt 3 ]; then
rc_splash verbose
echo_failure
echo
echo
gprintf "*** An error occurred during the file system check.\n"
gprintf "*** Dropping you to a shell; the system will reboot\n"
gprintf "*** when you leave the shell.\n"
str=`gprintf "(Repair filesystem)"`
PS1="$str \# # "; export PS1
sulogin
else
echo_passed
fi
gprintf "Unmounting file systems\n"
umount -a
mount -n -o remount,ro /
gprintf "Automatic reboot in progress.\n"
reboot -f
fi
}
_RUN_QUOTACHECK=0
ROOTFSTYPE=`awk '/ \/ / && ($3 !~ /rootfs/) { print $3 }' /proc/mounts`
if [ -z "$fastboot" -a "X$ROOTFSTYPE" != "Xnfs" ]; then
gprintf "Checking root filesystem\n"
Fsck -T -a $fsckoptions /
fi
rc_splash fsck 4
# Possibly update quotas if fsck was run on /.
LC_ALL=C grep -E '[[:space:]]+/[[:space:]]+' /etc/fstab | \
awk '{ print $4 }' | \
LC_ALL=C grep -q quota
_ROOT_HAS_QUOTA=$?
if [ X"$_RUN_QUOTACHECK" = X1 -a \
"$_ROOT_HAS_QUOTA" = "0" -a \
-x /sbin/quotacheck ]; then
if [ -x /sbin/convertquota ]; then
if [ -f /quota.user ]; then
action "Converting old user quota files: " \
/sbin/convertquota -u / && rm -f /quota.user
fi
if [ -f /quota.group ]; then
action "Converting old group quota files: " \
/sbin/convertquota -g / && rm -f /quota.group
fi
fi
action "Checking root filesystem quotas: " /sbin/quotacheck -nug /
fi
if [ -x /sbin/isapnp -a -f /etc/isapnp.conf -a ! -f /proc/isapnp ]; then
# check for arguments passed from kernel
if ! LC_ALL=C grep -iq nopnp /proc/cmdline >/dev/null 2>&1 ; then
PNP=yes
fi
if [ -n "$PNP" ]; then
action "Setting up ISA PNP devices: " /sbin/isapnp /etc/isapnp.conf
else
action "Skipping ISA PNP configuration at users request: " /bin/true
fi
fi
# LVM initialization
if [ -f /etc/lvm/lvm.conf -a -x /sbin/lvm2 ]; then
grep -q -s 'device-mapper' /proc/devices /proc/misc || modprobe dm-mod >/dev/null 2>&1
if grep -q -s 'device-mapper' /proc/devices /proc/misc; then
if [ -c /dev/.devfsd ]; then
_vgscan_cmd=/bin/true
else
_vgscan_cmd="/sbin/lvm2 vgmknodes"
fi
_vgchange_cmd="/sbin/lvm2 vgchange -a y"
fi
fi
if [ -z "${_vgscan_cmd}" -a -f /etc/lvmtab ] ; then
[ -e /proc/lvm ] || modprobe lvm-mod >/dev/null 2>&1
if [ -e /proc/lvm -a -x /sbin/lvm1-vgchange ]; then
_vgscan_cmd="/sbin/lvm1-vgscan"
_vgchange_cmd="/sbin/lvm1-vgchange -a y"
elif [ -e /proc/lvm -a -x /sbin/vgchange ]; then
_vgscan_cmd="/sbin/vgscan"
_vgchange_cmd="/sbin/vgchange -a y"
fi
fi
if [ -n "${_vgscan_cmd}" ]; then
action "Setting up Logical Volume Management:" ${_vgscan_cmd} && ${_vgchange_cmd}
fi
# Start up swapping. #we don't do encryted swap now since
# (pixel) it was done between setting keytable and setting hostname
# but it can't be done before "vgchange -a y",
# which can't be done before "vgscan" (which writes to /etc/lvmtab)
# which can't be done before re-mounting rw /
action "Activating swap partitions: " swapon -a -e
rc_splash swap 5
# Clear mtab
>/etc/mtab
# Remove stale backups
rm -f /etc/mtab~ /etc/mtab~~
# Enter root, /proc and (potentially) /proc/bus/usb and devfs into mtab.
# (pixel) also added /initrd/loopfs for loopback root
mount -f /initrd/loopfs 2>/dev/null
mount -f /
mount -f /proc
if [ -f /proc/bus/usb/devices ]; then
if grep -q usbfs /proc/mounts; then
mount -f -t usbfs none /proc/bus/usb
elif grep -q usbdevfs /proc/mounts; then
mount -f -t usbdevfs none /proc/bus/usb
fi
fi
[ -e /dev/.devfsd ] && mount -f -t devfs none /dev
# add /sys if mounted
[ -d /sys/devices ] && mount -f -t sysfs none /sys
# The root filesystem is now read-write, so we can now log
# via syslog() directly..
if [ -n "$IN_INITLOG" ]; then
IN_INITLOG=
fi
if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/modules ]; then
USEMODULES=y
fi
# Our modutils don't support it anymore, so we might as well remove
# the preferred link.
rm -f /lib/modules/preferred /lib/modules/default
# tweak isapnp settings if needed.
if [ -n "$PNP" -a -f /proc/isapnp -a -x /sbin/sndconfig ]; then
/sbin/sndconfig --mungepnp >/dev/null 2>&1
fi
# Load sound modules if and only if they need persistent DMA buffers
if LC_ALL=C /sbin/modprobe -c | grep -q "^[^#]*options sound dmabuf=1" 2>/dev/null ; then
RETURN=0
alias=`/sbin/modprobe -c | awk '/^alias sound / { print $3 }'`
if [ -n "$alias" -a "$alias" != "off" ]; then
action "Loading sound module (%s): " $alias modprobe sound
RETURN=$?
fi
alias=`/sbin/modprobe -c | awk '/^alias sound-slot-0 / { print $3 }'`
if [ -n "$alias" -a "$alias" != "off" ]; then
action "Loading sound module (%s): " $alias modprobe sound-slot-0
RETURN=$?
fi
fi
if [ -f /proc/sys/kernel/modprobe ]; then
if [ -n "$USEMODULES" ]; then
sysctl -n -w kernel.modprobe="/sbin/modprobe" >/dev/null 2>&1
sysctl -n -w kernel.hotplug="/sbin/hotplug" >/dev/null 2>&1
else
# We used to set this to NULL, but that causes 'failed to exec' messages"
sysctl -n -w kernel.modprobe="/bin/true" >/dev/null 2>&1
sysctl -n -w kernel.hotplug="/bin/true" >/dev/null 2>&1
fi
fi
# Load modules (for backward compatibility with VARs)
if [ -x /etc/rc.d/rc.modules ]; then
/etc/rc.d/rc.modules
fi
# If they asked for ide-scsi, load it
# This must come before hdparm call because if hdd=ide-scsi
# /dev/hdd is inaccessible until ide-scsi is loaded
if grep -q "ide-scsi" /proc/cmdline ; then
modprobe ide-cd >/dev/null 2>&1
modprobe ide-scsi >/dev/null 2>&1
fi
if [ -f /etc/raidtab ]; then
# Add raid devices
[ -f /proc/mdstat ] || modprobe md >/dev/null 2>&1
elif grep -q -s '^[[:space:]]*ARRAY[[:space:]]' /etc/mdadm.conf; then
# Add raid devices
[ -f /proc/mdstat ] || modprobe md >/dev/null 2>&1
if [ -f /proc/mdstat -a -x /sbin/mdadm ]; then
gprintf "Starting up RAID devices: "
/sbin/mdadm -A -s
if [ $? -gt 0 ]; then
echo
gprintf "*** An error occurred during the RAID startup\n"
gprintf "*** If it is critical the boot process will stop\n"
gprintf "*** when trying to mount filesystems. Else check\n"
gprintf "*** /etc/mdadm.conf for obsolete ARRAY entries\n"
else
echo OK
fi
fi
fi
if [ -f /etc/raidtab -a -f /proc/mdstat ]; then
gprintf "Starting up RAID devices: "
rc=0
for i in `awk '{if ($1=="raiddev") print $2}' /etc/raidtab`
do
RAIDDEV=`basename $i`
RAIDSTAT=`LC_ALL=C grep "^$RAIDDEV : active" /proc/mdstat`
if [ -z "$RAIDSTAT" ]; then
# First scan the /etc/fstab for the "noauto"-flag
# for this device. If found, skip the initialization
# for it to avoid dropping to a shell on errors.
# If not, try raidstart...if that fails then
# fall back to raidadd, raidrun. If that
# also fails, then we drop to a shell
RESULT=1
INFSTAB=`LC_ALL=C grep -c "^$i" /etc/fstab`
if [ $INFSTAB -eq 0 ] ; then
RESULT=0
RAIDDEV="$RAIDDEV(skipped)"
fi
NOAUTO=`LC_ALL=C grep "^$i" /etc/fstab | LC_ALL=C grep -c "noauto"`
if [ $NOAUTO -gt 0 ]; then
RESULT=0
RAIDDEV="$RAIDDEV(skipped)"
fi
if [ $RESULT -gt 0 -a -x /sbin/raidstart ]; then
/sbin/raidstart $i
RESULT=$?
fi
if [ $RESULT -gt 0 -a -x /sbin/raid0run ]; then
/sbin/raid0run $i
RESULT=$?
fi
if [ $RESULT -gt 0 -a -x /sbin/raidadd -a -x /sbin/raidrun ]; then
/sbin/raidadd $i
/sbin/raidrun $i
RESULT=$?
fi
if [ $RESULT -gt 0 ]; then
rc=1
fi
echo -n "$RAIDDEV "
else
echo -n "$RAIDDEV "
fi
done
echo
# A non-zero return means there were problems.
if [ $rc -gt 0 ]; then
local str=
echo
echo
gprintf "*** An error occurred during the RAID startup\n"
gprintf "*** Dropping you to a shell; the system will reboot\n"
gprintf "*** when you leave the shell.\n"
gprintf "Unmounting file systems\n"
umount -a
mount -n -o remount,ro /
gprintf "Automatic reboot in progress.\n"
reboot -f
fi
fi
# LVM initialization, take 2 (it could be on top of RAID)
if [ -n "${_vgscan_cmd}" ]; then
action "Setting up Logical Volume Management:" ${_vgscan_cmd} && ${_vgchange_cmd}
fi
if [ -x /sbin/devlabel ]; then
/sbin/devlabel restart
fi
_RUN_QUOTACHECK=0
# Check filesystems
# (pixel) do not check loopback files, will be done later (aren't available yet)
if [ -z "$fastboot" ]; then
gprintf "Checking filesystems\n"
Fsck -T -R -A -a -t noopts=loop $fsckoptions
fi
# (stew) since we're defaulting to ext3 now, and kernel22 doesn't
# support it yet - mount ext3 partitions as ext2 for kernel22
# mkinitrd covers the case for rootfs as ext3
IS22=$(/bin/uname -r | /bin/grep '^2\.2')
if [ -n "$IS22" ]; then
for i in `grep ext3 /etc/fstab | grep defaults | awk '{print $1}'`
do
mntpt=`grep "^$i" /etc/fstab | awk '{print $2}'`
if [ "$mntpt" != "/" ]; then
gprintf "Mount $i on $mntpt as ext2 for kernel22"
mount $i $mntpt -text2
if [ "$rc" = "0" ]; then
echo_success
echo
elif [ "$rc" = "1" ]; then
echo_passed
echo
fi
fi
done
fi
# Mount all other filesystems (except for NFS and /proc, which is already
# mounted). Contrary to standard usage,
# filesystems are NOT unmounted in single user mode.
# (pixel) also do not mount loopback, will be done later
action "Mounting local filesystems: " mount -a -t nonfs,smbfs,ncpfs -O no_netdev,noloop,noencrypted
#Mounting Encrypted filesystem
encrypted_swap=
if [[ ! -f /fastboot ]];then
encrypted=
while read -a entry;do
device=${entry[0]}
mountpoint=${entry[1]}
options=${entry[3]}
type=${entry[2]}
if [[ $options == *encryption=* || $options == *encrypted* ]];then
[[ $options == *noauto* ]] && continue
if [[ $type == *swap* ]];then
encrypted_swap="$encrypted_swap $device"
continue
fi
encrypted="$encrypted $mountpoint"
fi
done < /etc/fstab
if [[ -n $encrypted ]];then
rc_splash verbose
echo "We have discovered Encrypted filesystems, do you want to mount them now ?"
MSG=`gprintf "Press Y within %d seconds to mount your encrypted filesystems..."`
KEYS=`gprintf "yY"`
if /sbin/getkey -c $AUTOFSCK_CRYPTO_TIMEOUT -m "$MSG" "$KEYS"; then
echo -e '\n'
for i in ${encrypted};do
echo -n "${i} "; mount ${i}
done
else
echo -e '\n'
fi
fi
fi
# (pixel) Check loopback filesystems
if [ ! -f /fastboot ]; then
gprintf "Checking loopback filesystems"
Fsck -T -R -A -a -t opts=loop $fsckoptions
if [ "$rc" = "0" ]; then
echo_success
echo
elif [ "$rc" = "1" ]; then
echo_passed
echo
fi
# A return of 2 or higher means there were serious problems.
if [ $rc -gt 1 ]; then
rc_splash verbose
echo_failure
echo
echo
gprintf "*** An error occurred during the file system check.\n"
gprintf "*** Dropping you to a shell; the system will reboot\n"
gprintf "*** when you leave the shell.\n"
PS1="(Repair filesystem) \#"; export PS1
sulogin
gprintf "Unmounting file systems\n"
umount -a
mount -n -o remount,ro /
gprintf "Automatic reboot in progress.\n"
reboot -f
elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then
action "Checking filesystem quotas: " /sbin/quotacheck -v -R -a
fi
fi
# Mount loopback
action "Mounting loopback filesystems: " mount -a -O loop
# at this point everything should be mounted; if the loading
# of the system font failed, try again
if [ "$DELAYED_FONT" = "yes" ]; then
if [ -x /sbin/setsysfont ]; then
[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
CHbum bumT=`locale charmap`
case "$CHbum bumT" in
UTF-8)
action "Setting default font ($SYSFONT): " /bin/unicode_start $SYSFONT
;;
*)
action "Setting default font ($SYSFONT): " /sbin/setsysfont
;;
esac
fi
fi
for i in 2 3 4 5 6; do
> /dev/tty$i 2> /dev/null
done
if [ -x /etc/rc.d/init.d/keytable -a -d /usr/lib/kbd/keymaps ]; then
/etc/rc.d/init.d/keytable start
fi
# check remaining quotas other than root
if [ X"$_RUN_QUOTACHECK" = X1 -a -x /sbin/quotacheck ]; then
if [ -x /sbin/convertquota ]; then
# try to convert old quotas
for mountpt in `awk '$4 ~ /quota/{print $2}' /etc/mtab` ; do
if [ -f "$mountpt/quota.user" ]; then
action "Converting old user quota files: " \
/sbin/convertquota -u $mountpt && \
rm -f $mountpt/quota.user
fi
if [ -f "$mountpt/quota.group" ]; then
action "Converting old group quota files: " \
/sbin/convertquota -g $mountpt && \
rm -f $mountpt/quota.group
fi
done
fi
action "Checking local filesystem quotas: " /sbin/quotacheck -aRnug
fi
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.