KNOWN ISSUE: Linux PE receives a ''badness in do_exit at kernel/exit.c'' on reboot with multiple CIFS shares mounted

Article:TECH29773  |  Created: 2007-05-10  |  Updated: 2010-08-03  |  Article URL http://www.symantec.com/docs/TECH29773
NOTE: If you are experiencing this particular known issue, we recommend that you Subscribe to receive email notification each time this article is updated. Subscribers will be the first to learn about any releases, status changes, workarounds or decisions made.
Article Type
Technical Solution

Issue



Linux PE receives a 'badness in do_exit at kernel/exit.c' on reboot with multiple CIFS shares mounted

Environment



Deployment Server 6.8 SP1

Cause



The root cause is the linux kernel does not cleanly handle unmounting multiple CIFS shares.

Solution



Resolution

This issue has been fixed in DS 6.8 SP2


Workaround

1- The resolution is to switch to the standard init from sysvinit v2.86 instead of smallinit, and create a halt (0) and reboot (6) runlevel that will unmount the CIFS shares using umount instead of making the kernel do it. You will need to modify the existing rootfs file, below is a list of the required changes;

  1. Add the following code to shutdown.c from the sysvinit v2.86 package:

 --- shutdown.c  2004-07-30 07:59:04.000000000 -0400
+++ shutdown.c.new      2007-05-10 12:02:27.000000000 -0400
@@ -503,6 +503,8 @@
                                break;
                        case 'y': /* Ignored for sysV compatibility */
                                break;
+                       case 'q': /* Ignored for ADLAgent compatibility */
+                               break;
                        case 'g': /* sysv style to specify time. */
                                when = optarg;
                                break; 

  1. Removed the symlink for init -> simpleinit
  2. Removed the symlink for halt -> shutdown
  3. Removed the symlink for reboot -> shutdown
  4. Replaced shutdown with the newly compiled shutdown from sysvinit-2.86
  5. Added halt from the sysvinit-2.86 package
  6. Added init from the sysvinit-2.86 package
  7. Created a symlink for reboot -> halt
  8. Created a rc.reboot in /etc with the following contents:

    #!/bin/bash
    echo "Unmounting CIFS shares..."
    /bin/umount -a -t cifs
    echo "Rebooting now."
    /sbin/reboot
  9. Created a rc.shutdown in /etc with the following contents:

#!/bin/bash
echo "Unmounting CIFS shares..."
/bin/umount -a -t cifs
echo "Shutting down."
/sbin/halt –p 

  1. Deleted and created a new /etc/inittab with the following contents:

id:3:initdefault:

si::sysinit:/etc/rc
l0:0:wait:/etc/rc.shutdown
l6:6:wait:/etc/rc.reboot 

c1:2345:respawn:/sbin/agetty -n -l /etc/rc.login 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -n -l /etc/rc.login 38400 tty2 linux

ca:12345:ctrlaltdel:/sbin/shutdown -r now

Attached is an updated rootfs file for Deployment Server 6.8 SP1. Inside the zip is the updated rootfs file. Copy it to %Program Files%\eXpress\Deployment Server\Bootwiz\platforms\Linux\x86\Base. Afterwords, open up PXE Manager and re-generate your Linux preboot environments.

2- It was discovered on another case that the local DHCP server was using a parameter for WINS/NBT node type that was 0x4. This did not work with the linux drive mapping. We changed to 0x8 It was discovered that the local DHCP server was using a parameter for WINS/NBT node type that was 0x4. This did not work with the linux drive mapping. We changed to 0x8

3- Also another case was resolved by  Reset the ILO configurations on the Servers. The machines that were failing were  all connected over a ILO.

Supplemental Materials

SourceDEFECT
ValueLB 53093
DescriptionLogged in Littlebuggy (Altiris - Lindon, Plymouth) database

Legacy ID



34859


Article URL http://www.symantec.com/docs/TECH29773


Terms of use for this information are found in Legal Notices