Unable to get past "Loading initial Ramdisk"

There are two kernel versions on my machine, 4.4.104-18-44 and 4.4.103-18.41. I am able to boot the machine successfully if I use the older one, but not the more recent one. The machine hangs during boot at the line “Loading initial Ramdisk”.

/boot/grub2 contains these files:

# ls -l /boot
total 55865
-rw-r--r-- 1 root root     1725 Jul 24 22:07 boot.readme
-rw-r--r-- 1 root root   178574 Dec 14 08:10 config-4.4.103-18.41-default
-rw-r--r-- 1 root root   178591 Jan  4 21:01 config-4.4.104-18.44-default
drwxr-xr-x 1 root root        0 Dec 23 00:04 dracut
drwxrwxr-x 4 root root     1024 Jan  1  1970 efi
drwxr-xr-x 1 root root      120 Jan 12 05:31 grub2
lrwxrwxrwx 1 root root       28 Jan  9 17:35 initrd -> initrd-4.4.104-18.44-default
-rw------- 1 root root 11632120 Jan 12 05:30 initrd-4.4.103-18.41-default
-rw------- 1 root root 11632172 Jan 12 05:30 initrd-4.4.104-18.44-default
-rw-r--r-- 1 root root   500736 May 19  2017 message
-rwxr-xr-x 1 root root      169 Feb  7  2016 perl-BL_delayed_exec
-rw-r--r-- 1 root root   357170 Dec 14 08:52 symvers-4.4.103-18.41-default.gz
-rw-r--r-- 1 root root   357351 Jan  4 21:34 symvers-4.4.104-18.44-default.gz
-rw-r--r-- 1 root root      377 Dec 14 08:52 sysctl.conf-4.4.103-18.41-default
-rw-r--r-- 1 root root      377 Jan  4 21:34 sysctl.conf-4.4.104-18.44-default
-rw-r--r-- 1 root root  3201663 Dec 14 08:47 System.map-4.4.103-18.41-default
-rw-r--r-- 1 root root  3204592 Jan  4 21:31 System.map-4.4.104-18.44-default
-rw-r--r-- 1 root root  6916364 Dec 14 08:55 vmlinux-4.4.103-18.41-default.gz
-rw-r--r-- 1 root root  6923326 Jan  4 21:35 vmlinux-4.4.104-18.44-default.gz
lrwxrwxrwx 1 root root       29 Jan  9 17:35 vmlinuz -> vmlinuz-4.4.104-18.44-default
-rw-r--r-- 1 root root  6028984 Dec 14 09:31 vmlinuz-4.4.103-18.41-default
-rw-r--r-- 1 root root       65 Dec 14 09:31 .vmlinuz-4.4.103-18.41-default.hmac
-rw-r--r-- 1 root root  6037176 Jan  4 22:04 vmlinuz-4.4.104-18.44-default
-rw-r--r-- 1 root root       65 Jan  4 22:04 .vmlinuz-4.4.104-18.44-default.hmac

I experienced this problem last in December 2015 on a different computer and was advised to “Try to add dis_ucode_ldr to your boot options.” This makes no difference when I try it now.

When I check the disk to verify that it is not full, I get:

# df
Filesystem     1K-blocks      Used Available Use% Mounted on
devtmpfs         3666748         0   3666748   0% /dev
tmpfs            3675040     34764   3640276   1% /dev/shm
tmpfs            3675040      2448   3672592   1% /run
tmpfs            3675040         0   3675040   0% /sys/fs/cgroup
/dev/sda7       41946112  21131848  19467832  53% /
/dev/sda7       41946112  21131848  19467832  53% /srv
/dev/sda7       41946112  21131848  19467832  53% /tmp
/dev/sda7       41946112  21131848  19467832  53% /var/lib/pgsql
/dev/sda7       41946112  21131848  19467832  53% /var/lib/named
/dev/sda7       41946112  21131848  19467832  53% /var/lib/mailman
/dev/sda7       41946112  21131848  19467832  53% /boot/grub2/x86_64-efi
/dev/sda7       41946112  21131848  19467832  53% /.snapshots
/dev/sda7       41946112  21131848  19467832  53% /var/lib/mariadb
/dev/sda7       41946112  21131848  19467832  53% /var/lib/mysql
/dev/sda7       41946112  21131848  19467832  53% /usr/local
/dev/sda7       41946112  21131848  19467832  53% /opt
/dev/sda7       41946112  21131848  19467832  53% /var/lib/machines
/dev/sda7       41946112  21131848  19467832  53% /boot/grub2/i386-pc
/dev/sda7       41946112  21131848  19467832  53% /var/spool
/dev/sda7       41946112  21131848  19467832  53% /var/opt
/dev/sda7       41946112  21131848  19467832  53% /var/lib/libvirt/images
/dev/sda7       41946112  21131848  19467832  53% /var/log
/dev/sda7       41946112  21131848  19467832  53% /var/tmp
/dev/sda2          98304     60597     37707  62% /boot/efi
/dev/sda7       41946112  21131848  19467832  53% /var/crash
/dev/sda8      723188724 134071824 589116900  19% /home
tmpfs             735012        16    734996   1% /run/user/1000

The grub.cfg file contains this:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set btrfs_relative_path="y"
export btrfs_relative_path
if  -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif  -s $prefix/grubenv ]; then
  load_env
fi

if  "${env_block}" ] ; then
  load_env -f "${env_block}"
fi

if  "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   if  "${env_block}" ] ; then
     save_env -f "${env_block}" next_entry
   fi
   set boot_once=true
else
   set default="${saved_entry}"
fi

if  x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if  "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if  -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
    if  "${env_block}" ] ; then
      save_env -f "${env_block}" saved_entry
    fi

  fi
}

function load_video {
  if  x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if  x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod btrfs
set root='hd0,gpt7'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
else
  search --no-floppy --fs-uuid --set=root 5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
fi
    font="/usr/share/grub2/unicode.pf2"
fi

if loadfont $font ; then
echo "Please press t to show the boot menu on this console"
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_GB
  insmod gettext
fi
terminal_output gfxterm
insmod part_gpt
insmod btrfs
set root='hd0,gpt7'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
else
  search --no-floppy --fs-uuid --set=root 5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
fi
insmod gfxmenu
loadfont ($root)/boot/grub2/themes/openSUSE/ascii.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans10.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans12.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans-Bold14.pf2
insmod png
set theme=($root)/boot/grub2/themes/openSUSE/theme.txt
export theme
if  x${boot_once} = xtrue ]; then
  set timeout=0
elif  x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=8
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=8
fi
if  -n "$extra_cmdline" ]; then
  submenu "Bootable snapshot #$snapshot_num" {
    menuentry "If OK, run 'snapper rollback' and reboot." { true; }
  }
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/00_tuned ###
set tuned_params=""
### END /etc/grub.d/00_tuned ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'openSUSE Leap 42.2'  --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-5b8f13a8-0511-4aa4-ad5a-b6819e382a4b' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod btrfs
    set root='hd0,gpt7'
    if  x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
    else
      search --no-floppy --fs-uuid --set=root 5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
    fi
    echo    'Loading Linux 4.4.104-18.44-default ...'
    linuxefi /boot/vmlinuz-4.4.104-18.44-default root=UUID=5b8f13a8-0511-4aa4-ad5a-b6819e382a4b ro  ${extra_cmdline} resume=/dev/disk/by-uuid/73229ef7-df65-4f6a-848c-ef99a4bbf47d splash=silent quiet showopts
    echo    'Loading initial ramdisk ...'
    initrdefi /boot/initrd-4.4.104-18.44-default
}
submenu 'Advanced options for openSUSE Leap 42.2' --hotkey=1 $menuentry_id_option 'gnulinux-advanced-5b8f13a8-0511-4aa4-ad5a-b6819e382a4b' {
    menuentry 'openSUSE Leap 42.2, with Linux 4.4.104-18.44-default' --hotkey=2 --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.104-18.44-default-advanced-5b8f13a8-0511-4aa4-ad5a-b6819e382a4b' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod btrfs
        set root='hd0,gpt7'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
        else
          search --no-floppy --fs-uuid --set=root 5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
        fi
        echo    'Loading Linux 4.4.104-18.44-default ...'
        linuxefi /boot/vmlinuz-4.4.104-18.44-default root=UUID=5b8f13a8-0511-4aa4-ad5a-b6819e382a4b ro  ${extra_cmdline} resume=/dev/disk/by-uuid/73229ef7-df65-4f6a-848c-ef99a4bbf47d splash=silent quiet showopts
        echo    'Loading initial ramdisk ...'
        initrdefi /boot/initrd-4.4.104-18.44-default
    }
    menuentry 'openSUSE Leap 42.2, with Linux 4.4.103-18.41-default'  --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.103-18.41-default-advanced-5b8f13a8-0511-4aa4-ad5a-b6819e382a4b' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod btrfs
        set root='hd0,gpt7'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
        else
          search --no-floppy --fs-uuid --set=root 5b8f13a8-0511-4aa4-ad5a-b6819e382a4b
        fi
        echo    'Loading Linux 4.4.103-18.41-default ...'
        linuxefi /boot/vmlinuz-4.4.103-18.41-default root=UUID=5b8f13a8-0511-4aa4-ad5a-b6819e382a4b ro  ${extra_cmdline} resume=/dev/disk/by-uuid/73229ef7-df65-4f6a-848c-ef99a4bbf47d splash=silent quiet showopts
        echo    'Loading initial ramdisk ...'
        initrdefi /boot/initrd-4.4.103-18.41-default
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-1442-E6D0' {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt2'
    if  x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  1442-E6D0
    else
      search --no-floppy --fs-uuid --set=root 1442-E6D0
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if  -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif  -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
if  -f "/.snapshots/grub-snapshot.cfg" ]; then
  source "/.snapshots/grub-snapshot.cfg"
fi
### END /etc/grub.d/80_suse_btrfs_snapshot ###

### BEGIN /etc/grub.d/90_persistent ###
### END /etc/grub.d/90_persistent ###

### BEGIN /etc/grub.d/95_textmode ###

    # On EFI systems we can only have graphics *or* serial, so allow the user
    # to switch between the two
    hiddenentry 'Text mode' --hotkey 't' {
    set textmode=true
    terminal_output console
    }
### END /etc/grub.d/95_textmode ###

Can anyone advise me what to do? I am frightened to do another “zypper up” in case it throws away the only Ramdisk that actually works.

Known problem with the recent security updates on some systems.

Try the “nopti” and/or “nospec” kernel options, or maybe “noefi”.

See boot hangs with kernel 4.4.104 - Install/Boot/Login - openSUSE Forums

I am frightened to do another “zypper up” in case it throws away the only Ramdisk that actually works.

As long as you boot the older kernel, it will never get removed.
That only may happen if you (successfully) boot a newer one. (older kernels are only removed during boot, not during installation)

You could edit /etc/zypp/zypp.conf though to make sure that kernel is kept.
Modify this line:

multiversion.kernels = latest,latest-1,running

You could e.g. add a “latest-2” or “oldest”, or the specific version number you want to keep.

Standard recommendation is to test current development kernel (https://build.opensuse.org/package/binaries/Kernel:openSUSE-42.2/kernel-default?repository=standard) and if it still does not work, open bug report.