# Marking some block devices as read-only to ensure that nothing
# gets written as linux still writes to 'only' read-only mounted filesystems.
- LIVE_READ_ONLY_DEVICES="${LIVE_READ_ONLY_DEVICES:-/dev/sd* /dev/vd*}"
+ LIVE_READ_ONLY_DEVICES="${LIVE_READ_ONLY_DEVICES:-/dev/* /dev/*/*}"
for _DEVICE in $(echo ${LIVE_READ_ONLY_DEVICES} | sed -e 's|,| |g')
do
+ # ignore symlinks like /dev/cdrom, /dev/block/* which point to actual devices
+ if [ -L "${_DEVICE}" ]
+ then
+ continue
+ fi
+
+ # only consider actual block devices
if [ ! -b "${_DEVICE}" ]
then
continue
fi
- echo -n "live-boot: Setting ${_DEVICE} read-only..." > /dev/console
+ if ! blockdev --getsz "${_DEVICE}" >/dev/null 2>&1
+ then
+ printf " * live-boot: Ignoring '%-10s' (not present?)\n" "${_DEVICE}" > /dev/console
+ continue
+ fi
+
+ printf " * live-boot: Setting %-10s read-only..." "${_DEVICE}" > /dev/console
- blockdev --setro ${_DEVICE}
+ blockdev --setro "${_DEVICE}"
_RETURN="${?}"
case "${_RETURN}" in
0)
- echo " done, use 'blockdev --setrw ${_DEVICE}' to set read-write." > /dev/console
+ printf " done, use 'blockdev --setrw %-10s' to set read-write.\n" "${_DEVICE}" > /dev/console
;;
*)
- echo " failed." > /dev/console
+ printf " failed.\n" > /dev/console
;;
esac
done