X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=rc.d%2Frc.sysinit;h=c7375feae9db3825c00e10ba8164df82b905a06e;hb=94ec8ca43d5c1ce5d50a36ca4f3d63eb9b28a58c;hp=121e48f91e7fe633369420d2603bd53978db8468;hpb=404f23ce096d6186062f68db607edac4a7068d61;p=rc-scripts.git diff --git a/rc.d/rc.sysinit b/rc.d/rc.sysinit index 121e48f..c7375fe 100755 --- a/rc.d/rc.sysinit +++ b/rc.d/rc.sysinit @@ -123,9 +123,7 @@ init_selinux() { if ! grep -Fq selinuxfs /proc/filesystems; then # no support in kernel, no chance SELINUX=no - fi - - if ! is_fsmounted selinuxfs /selinux; then + elif ! is_fsmounted selinuxfs /selinux; then mount -n -o gid=17 -t selinuxfs selinuxfs /selinux fi @@ -299,63 +297,26 @@ check_root_fs() { fi } -# mdadm - manage MD devices aka Linux Software RAID +# Init software RAID arrays init_mdadm() { - if [ ! -x /sbin/mdadm -o ! -f /etc/mdadm.conf ]; then + local output + + if [ ! -x /sbin/mdadm ]; then return fi modprobe -s md - local rc=0 golvm=0 have_md=0 if [ ! -f /proc/mdstat ]; then return fi - # assume we have md if at least one ARRAY line is present - if grep -qE "^([[:blank:]]|)ARRAY[[:blank:]]" /etc/mdadm.conf; then - have_md=1 - fi - # configured to do auto scanning - if [ $have_md = 0 ] && grep -qE "^([[:blank:]]|)DEVICE[[:blank:]]partitions" /etc/mdadm.conf; then - have_md=1 - fi - - # none found - if [ $have_md = 0 ]; then - return - fi - show "Starting up RAID devices"; busy - /sbin/mdadm --assemble --scan --auto=yes - rc=$? - if [ "$rc" -eq 0 -o "$rc" -eq 2 ]; then - # rc is used later too, so set sane value - rc=0 - deltext; ok - golvm=1 - else - deltext; fail - fi - - # A non-zero return means there were problems - if [ $rc -gt 0 ]; then - [ -e /proc/splash ] && echo "verbose" > /proc/splash - show "Starting up RAID devices"; fail - - PS1="$(nls '(RAID Repair)# ')"; export PS1 - repair_shell "$(nls '*** An error occurred during the RAID startup.')" - fi + output=$(/sbin/mdadm --assemble --scan 2>&1) + ok - # LVM on RAID (keep in sync with LVM init) - if [ "$golvm" -eq "1" ]; then - if [ -x /sbin/vgscan -a -x /sbin/vgchange ]; then - run_cmd "Scanning for LVM volume groups (on RAID)" /sbin/vgscan $lvmignorelocking - run_cmd "Activating LVM volume groups (on RAID)" /sbin/vgchange -a y $lvmsysinit - [ "$lvmversion" = "2" ] && /sbin/vgmknodes - fi + if [ -n "$output" ]; then + echo "$output" fi - show "Starting up RAID devices"; ok - return $rc } # Init LVM @@ -388,8 +349,10 @@ init_lvm() { run_cmd "Scanning for LVM volume groups" /sbin/vgscan $lvmignorelocking run_cmd "Activating LVM volume groups" /sbin/vgchange -a y $lvmsysinit + if [ "$lvmversion" = "2" ]; then - /sbin/vgmknodes $lvmignorelocking + # silently refresh LV /dev nodes (just in case) + /sbin/vgmknodes $lvmignorelocking 1>/dev/null 2>&1 # display VG statistics /sbin/vgdisplay -s $lvmignorelocking fi @@ -597,7 +560,7 @@ if ! is_yes "$VSERVER" && [[ "$container" != lxc* ]]; then _ROOTFS_DEVICE=$(awk '($1 !~ /^#/ && $2 == "/" && NF >= 6) { print $1}' /etc/fstab) _ROOTFS_TYPE=$(awk '$2 == "/" && $3 != "rootfs" { print $3 }' /proc/mounts 2>/dev/null) - if [ -z "$fastboot" -a "$_ROOTFS_TYPE" != "aufs" -a "$_ROOTFS_TYPE" != "nfs" -a "$_ROOTFS_TYPE" != "romfs" -a "$_ROOTFS_TYPE" != "squashfs" -a "$_ROOTFS_PASSNO" != 0 -a -e $_ROOTFS_DEVICE ] && [[ "$container" != lxc* ]]; then + if [ -z "$fastboot" -a "$_ROOTFS_TYPE" != "aufs" -a "$_ROOTFS_TYPE" != "nfs" -a "$_ROOTFS_TYPE" != "romfs" -a "$_ROOTFS_TYPE" != "tmpfs" -a "$_ROOTFS_TYPE" != "squashfs" -a "$_ROOTFS_PASSNO" != 0 -a -e $_ROOTFS_DEVICE ] && [[ "$container" != lxc* ]]; then check_root_fs fi @@ -822,7 +785,10 @@ if ! is_yes "$VSERVER" && [[ "$container" != lxc* ]]; then fi fi - # Init LVM + if ! is_no "$MDADM"; then + init_mdadm + fi + if ! is_no "$LVM2"; then init_lvm fi @@ -834,10 +800,6 @@ if ! is_yes "$VSERVER" && [[ "$container" != lxc* ]]; then [ $delay_cryptsetup = 0 ] && ok || fail fi - if ! is_no "$MDADM"; then - init_mdadm - fi - _RUN_QUOTACHECK=0 # Check filesystems if [ -z "$fastboot" ] && [ -z "$nofsck" ]; then @@ -952,7 +914,7 @@ if ! is_yes "$VSERVER" && [[ "$container" != lxc* ]]; then . /etc/rc.d/rc.serial fi - if [ -n "$PANIC_REBOOT_TIME" -a "$PANIC_REBOOT_TIME" -gt "0" -a -f /proc/sys/kernel/panic ]; then + if [ -n "$PANIC_REBOOT_TIME" ] && [ "$PANIC_REBOOT_TIME" -gt "0" ] && [ -f /proc/sys/kernel/panic ]; then show 'Setting %s seconds for kernel reboot after panic' "$PANIC_REBOOT_TIME"; busy # DEPRECATED: use /etc/sysctl.conf or kernel commandline instead if sysctl -q -w kernel.panic=$PANIC_REBOOT_TIME; then ok; else fail; fi