Dracut

From DikapediaV2
Jump to: navigation, search

In Red Hat Enterprise Linux (RHEL), dracut typically runs automatically when you install a new kernel. During the kernel installation process, dracut is invoked to create a new initial RAM filesystem (initramfs) image. This initramfs image is necessary for the system to boot with the new kernel, as it contains the drivers and modules required to mount the root filesystem and start the boot process.

The new initramfs image is usually placed in the /boot directory alongside the new kernel. This process ensures that your system has the necessary components to boot properly with the newly installed kernel.

Based on the man pages of 'dracut': "if <kernel version> is omitted, then the version of the actual running kernel is used. If <image> is omitted or empty, then the default location /boot/initramfs-<kernel version>.img is used."

i.e.

$ dracut -f -v

or

$ dracut -f -v /boot/initrd-[kernel-version]-default.img [kernel-version]-default
$ dracut -f -v /boot/initrd-4.12.14-95.51-default.img 4.12.14-95.51-default


https://access.redhat.com/solutions/1958


When is it necessary to rebuild the initramfs?


https://access.redhat.com/solutions/453703


How to rebuild initramfs using rescue instance and chroot


This is how you can rebuild initramfs and add drivers why using a rescue instance, utilizing chroot. This adds the drivers needed to run on EC2, and vmware scsi drivers to boot in vmware/vcenter.

  • Rescue instance: AL2
  • Fixing initramfs for: RHEL7
mount --bind /dev/ ./dev
mount --bind /sys/ ./sys
mount --bind /proc/ ./proc

chroot . /usr/bin/dracut -v --force --add-drivers "xen-blkfront xen-netfront ext4 ena nvme nvme_core vmw_pvscsi virtio_scsi" ./boot/initramfs-3.10.0-957.el7.x86_64.img 3.10.0-957.el7.x86_64 1>&2

chroot . /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg

lsinitrd ./boot/initramfs-3.10.0-957.el7.x86_64.img | egrep -i 'vmw_pvscsi|virtio_scsi'

umount ./dev
umount ./sys
umount ./proc


How to add drivers for SUSE11SP4, SUSE12 SUSE12SP1


mkinitrd -f -v -m "xen-balloon xen-vbd xen-platform-pci xen-vnif xen-scsi" -k vmlinuz-`uname -r` -i /var/lib/aws-replication-agent/aws-launch-initrd-`uname -r`