Skip to main content

Boot process hangs at dracut: Switching root

Environment

  • Red Hat Enterprise Linux 6

Issue

device-mapper: ioctl: 4.33.1-ioctl (2015-8-18) initialised: xx-xxxx@redhat.com
udev: starting version 147
dracut: Starting plymouth daemon
dracut: rd_NO_DM: removing DM RAID activation
dracut: rd_NO_MD: removing MD RAID activation
scsi0 : ata_piix
scsi1 : ata_piix
ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc120 irq 14
ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc128 irq 15
Refined TSC clocksource calibration: 2599.999 MHz.
virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, high) -> IRQ 11
virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10
virtio-pci 0000:00:07.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, high) -> IRQ 11
virtio-pci 0000:00:08.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
 vda: vda1 vda2
dracut: Scanning devices vda2  for LVM logical volumes vg_unused/lv_swap vg_unused/lv_root 
dracut: inactive '/dev/vg_unused/lv_root' [8.51 GiB] inherit
dracut: inactive '/dev/vg_unused/lv_swap' [1.00 GiB] inherit
EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: 
dracut: Remounting /dev/mapper/vg_unused-lv_root with -o noatime,ro
EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: 
dracut: Mounted root filesystem /dev/mapper/vg_unused-lv_root
dracut: Loading SELinux policy
type=1404 audit(1479934528.427:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295
type=1403 audit(1479934529.195:3): policy loaded auid=4294967295 ses=4294967295
dracut: 
dracut: Switching root

Resolution

  • Check and confirm that all of the upstart initscripts under /etc/init/ are intact and correct.
  • The main script to confirm is /etc/init/rcS.conf, this script executes /etc/rc.d/rc.sysinit which prints text to the console after switch root.
  • An fsck from rescue mode can be run to see if the issue is file corruption based.
  • If fsck doesn't correct the initscripts, the initscripts package needs to be reinstalled via rescue mode.

Root Cause

When the boot process switches root from the initramfs loaded in memory to the mounted storage, it executes the upstart initscripts in /etc/init/, which in turn continue the boot process to the login screen. So if any of those scripts are corrupted by file corruption or from a bad update, then there is a chance the boot process will halt at dracut: Switching root.

Comments

Popular posts from this blog

Interpreting the output of lspci

On Linux, the lspci command lists all PCI devices connected to a host (a computer). Modern computers and PCI devices communicate with each other via PCI Express buses instead of the older Conventional PCI and PCI-X buses since the former buses offer many advantages such as higher throughput rates, smaller physical footprint and native hot plugging functionality. The high performance of the PCI Express bus has also led it to take over the role of other buses such as AGP ; it is also expected that SATA buses too will be replaced by PCI Express buses in the future as solid-state drives become faster and therefore demand higher throughputs from the bus they are attached to (see this article for more on this topic). As a first step, open a terminal and run lspci without any flags (note: lspci may show more information if executed with root privileges): lspci   This is the output I get on my laptop: 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRA...

How to Remove a Storage Device (LUN)

Before removing access to the storage device itself, it is advisable to back up data from the device first. Afterwards, flush I/O and remove all operating system references to the device. Stop all access to the device that has to be removed. Unmount the device. Remove the device from any md and LVM volume that is using it. If a multipath device is being removed, run  multipath -l  and take note of all the paths to the device. When this has been done, remove the multipath device: # multipath -f device   Use the following command to flush any outstanding I/O to all paths to the device: # blockdev –flushbufs device   Remove any reference to the device's path-based name, like  /dev/sd  or  /dev/disk/by-path  or the major:minor number, in applications, scripts, or utilities on the system. This is important to ensure that a different device, when added in the future, will not be mistaken for the current device. The fi...