add_bootentry() {
    grubby --add-kernel=/boot/vmlinuz-upgrade.x86_64 --initrd=/boot/initramfs-upgrade.x86_64.img --title="RHEL Upgrade RAMDISK" --copy-default --args="enforcing=0 rd.plymouth=0 plymouth.enable=0 debug"
}

remove_bootentry() {
    grubby --remove-kernel=/boot/vmlinuz-upgrade.x86_64
}

add_bootentry_cmdline() {
    grubby --update-kernel=/boot/vmlinuz-upgrade.x86_64 --args="$@"
}

remove_bootentry_cmdline() {
    grubby --update-kernel=/boot/vmlinuz-upgrade.x86_64 --remove-args="$@"
}

get_kernel_version()
{
    rpm -qa | grep kernel-modules | cut -d- -f3- | sort | tail -n 1
}

upd () 
{ 
    modir="/usr/lib/dracut/modules.d/";
    for folder in $(find . -name "*sys-upgrade*");
    do
        /bin/cp -fa $folder $modir;
    done;
    chown -R "root:root" "$modir";
    restorecon -r "$modir"
}

dracutcall () 
{ 
    dracut -vvvv --conf /dev/null --confdir /var/empty --force --add "sys-upgrade" --no-hostonly --nolvmconf --nomdadmconf --force --verbose "${1%.img}.img" --kver=$2 --kernel-image=/lib/modules/$2/vmlinuz
}

dracutprep () 
{ 
    upd;
    mkdir -p /boot/drak
    pushd /boot/drak;
    rm -i -f /boot/drak/*-upgrade.x86_64.img;
    KERNEL_VERSION=$(get_kernel_version)
    /bin/cp -f /lib/modules/$KERNEL_VERSION/vmlinuz vmlinuz-upgrade.x86_64
    dracutcall initramfs-upgrade.x86_64.img $KERNEL_VERSION
    tar -czf /boot/drak/upgrade-boot-files.tgz initramfs-upgrade.x86_64.img vmlinuz-upgrade.x86_64;
    popd
}

dracutbuild() {
    dracutprep;
    mv /boot/drak/upgrade-boot-files.tgz .	
}

pprep () 
{ 
    dracutprep;
    /bin/cp -a /boot/drak/*-upgrade* /boot
}
