Using Ubuntu 19.10, I am unable to boot into a ISO image located on my SSD.
I've added an entry to my Grub menu called "Install", and I've setup 40_custom to point to an ISO image located in one of my partitions.
After I select this new "Install" entry in the Grub menu, the screen just goes blank. In some time, my laptop fan spins up, but noting else happens. The only thing I can do at this point is restart by pressing CTRL-ALT-DELETE.
It seems like the kernel is not loaded / bootstrapped, but I get no error messages.
The following setup has always worked for me on previous releases of Ubuntu. At first I thought it might be a corrupt ISO image, so I tried other images, and the results were disappointingly the same.
Can you suggest how to resolve this problem, or suggest how I might debug this? Is anyone else experiencing this on an Ubuntu 19.10 install with UEFI boot?
Below is the contents of /etc/grub.d/40_custom. This file adds an additional entry to the grub menu called "Install".
As I mentioned above, I do get this entry in Grub, but when I select it, my screen goes blank, and noting happens.
#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry "Install" {
set isofile="/ubuntu.iso"
loopback loop (hd0,2)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd
}
I have confirmed that both vmlinuz and initrd are in the casper directory in the ISO file.
Contents of directory /etc/grub.d/
-rwxr-xr-x 1 root root 10627 Oct 11 09:57 00_header
-rwxr-xr-x 1 root root 6258 Oct 11 09:57 05_debian_theme
-rwxr-xr-x 1 root root 17123 Oct 11 09:57 10_linux
-rwxr-xr-x 1 root root 37613 Oct 11 09:57 10_linux_zfs
-rwxr-xr-x 1 root root 12894 Oct 11 09:57 20_linux_xen
-rwxr-xr-x 1 root root 1992 Jan 28 2016 20_memtest86+
-rwxr-xr-x 1 root root 12059 Oct 11 09:57 30_os-prober
-rwxr-xr-x 1 root root 1418 Oct 11 09:57 30_uefi-firmware
-rwxr-xr-x 1 root root 423 Oct 30 21:44 40_custom
-rwxr-xr-x 1 root root 216 Oct 11 09:57 41_custom
-rw-r--r-- 1 root root 483 Oct 11 09:57 README
Here are my SSD partitions. The 4.7G partition (/dev/nvme0n1p2) is referenced as (hd0,2) in my 40_custom file. If I change (hd0,2) to something else, I get an error message that the kernel was not found. (hd0,2) has worked on this laptop in the past, so I am petty confident that (hd0,2) is the correct value to use in 40_custom.
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 405503 403456 197M EFI System
/dev/nvme0n1p2 405504 10172415 9766912 4.7G Linux filesystem
/dev/nvme0n1p3 10172416 242595839 232423424 110.8G Linux filesystem
/dev/nvme0n1p4 242595840 2000409230 1757813391 838.2G Linux filesystem
Below is the contents of directory /mnt/install/. This directory is mounted on /dev/nvme0n1p2.
total 4128792
drwx------ 2 root root 16384 Oct 30 22:27 lost+found
-rw-r--r-- 1 root root 4227858432 Oct 31 00:24 ubuntu-19.10.0-2019.10.30-desktop-amd64.iso
-rw-r--r-- 1 root root 77 Oct 31 00:24 ubuntu-19.10.0-2019.10.30-desktop-amd64.md5
lrwxrwxrwx 1 root root 43 Oct 30 23:04 ubuntu.iso -> ubuntu-19.10.0-2019.10.30-desktop-amd64.iso
Notice that ubuntu.iso is a symlink to the actual iso image, and the 40_custom file refers to ubuntu.iso. I have used this symlink approach for many years, and it has always worked in the past.
However, to eliminate possible causes of this issue:
I have tried not using a simlink, and referencing the iso image directly.
I have tried using other official Ubuntu ISOs, such as 18.10, 19.04, and the official 19.10 ISO.
Of course, I made the necessary changes in the 40_custom file, and I ran update-grub.
Below is the contents of /etc/default/grub. Notice that I blacklisted nouveau, and I give myself 1 second to press ESC to show the grub menu. (If I don't blacklist nouveau, I get a blank screen on my HP laptop during a normal boot).
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
GRUB_INIT_TUNE="480 440 1"