3

Note: this is kind of follow-up of this post: https://superuser.com/questions/1318478/booting-nvme-drive-with-a-bootloader, but I decided to post here since I'm trying to install and boot Ubuntu.

Summary: I'm installing Ubuntu on a NVMe drive, on a mainboard that doesn't support NVMe boot. I'm doing this by:

  1. Having a SATA drive.
  2. Booting the installation pendrive in UEFI mode.
  3. Creating an EFI partition on the SATA drive.
  4. Installing the / filesystem on the NVMe drive.
  5. Installing the boot loader on the SATA drive.

The system is correctly installed, but as it reboots, it goes in grub rescue, saying that the volume is unknown.

Note that as I create the main partition on the NVMe drive, the installer leaves 1 Mb of "free space" at the beginning, so I suspect that the true EFI boot partition goes there.

Suggestions? Thanks.

4
  • If an UEFI system, I would expect it to support NVMe, otherwise you would not have the connectors for it on motherboard. What motherboard? Many systems have needed NVMe firmware updates & UEFI updates also. New 4K drives have that space normally whether 35 year old MBR or newer gpt partitioning. Post this above & preserve formatting. lsblk -f
    – oldfred
    Sep 10 '18 at 23:25
  • 1
    I have no M.2 connectors on the mb. I use the nvme drive on a PCIe 4x card. It's a Lenovo S30 workstation. Should I run lsblk -f at grub rescue prompt? I'll do it as soon as I get home. Thanks!
    – MadHatter
    Sep 11 '18 at 7:18
  • Grub only has a few terminal commands related to booting. Many NVMe drives have needed firmware updates.
    – oldfred
    Sep 11 '18 at 15:32
  • 1
    ubuntuforums.org/… Had the same ordeal, I thoroughly explained my issue and after some great help from some great folks got it sorted. Happy reading. :) Apr 4 '19 at 15:32
2

Had the same ordeal. It was found that the fix required multiple steps to get working correctly. I'll briefly explain, while the exact and thorough steps can be found below via link to the official ubuntu forums.

Basically you have to locate your /boot on a seperate drive along with installing grub to the same drive. The "boot" drive is SATA and obviously seen and bootable through BIOS with a GPT Partition and scheme like so:

Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:


Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1075MB  1074MB  ext4               legacy_boot
 2      1075MB  1085MB  10.5MB                     bios_grub
 3      1085MB  500GB   499GB   ext4

You MUST include the legacy_boot on the /boot partition (partition 1), and bios_grub on the unknown partition 2.

Your NVMe drive mus be GPT partitioned as well. During install you must choose to do "SOMETHING ELSE" when installing and tell the installer to mount your previously defined /boot partition and to install grub onto that same drive.

Source:

1
  • I had given up until I ran across this q&a. Many thanks. Sep 25 at 14:06
2

After a couple of weeks of screwing around (make sure you are booting off the right device!), I found the following worked for me:

  1. With GPartEd erase the SATA drive and create a GPT partition table on it.
  2. If there's already an EFI partition on any device, delete it.
  3. In the installer set up to boot from the SATA drive (creates the bios_grub & EFI partitions), then create a 500MB (maybe less?) partition for /boot, and another partition for the OS. This system directory is here mainly as a backup in case the NVME drive dies.
  4. Optionally set up another partition (could even be on the NVME device) for /home.
sdb                 
├─sdb1              bios_grub
├─sdb2              EFI System Partition
├─sdb3              boot
└─sdb4              system
  1. Run the installer again, with the same settings as the first time. Set a partition on the NVME device as /, and /dev/sdb3 set to /boot again. Make sure that the SATA drive is the boot device. I have 2 partitions on the NVME device... the first is mounted as /home, the second is mounted as / for the OS. This has a GPT partition table as well.
nvme0n1             
├─nvme0n1p1 home    home
└─nvme0n1p2         sys
1
  • I had given up until I ran across this q&a. Many thanks. Sep 25 at 14:06
0

I have used Ubuntu Server 20.04.3 LTS on HP Z800 Workstation (similar to HP Z400 Workstation and HP Z600 Workstation) with INTEL SSDSC2KW24 SATA SSD and Samsung NVMe M.2 970 EVO Plus mounted to PCIe Asus Hyper M.2 X4 Mini.

Of course the BIOS is pretty old, so it doesn't recognize the NVMe drive, but Ubuntu installation from a USB drive does. Which means, that Ubuntu have all the needed drivers to recognize and work with the NVMe.

The steps are pretty simple and straight forward:

  1. Create Ubuntu boot USB.

  2. Set boot order in BIOS to boot from USB and then from SATA.

  3. Insert the USB stick into the machine and start the installation.

  4. When reached to a point when it asks where to install the OS, choose manual configuration.

  5. If you don't see your NVMe drive there, you probably have some hardware issues. At this point, there is nothing to do and you need to figure out why it is not being recognized. But this screen is a good indication whether your machine can recognize your drive or not.

  6. Assuming you can see the NVMe drive, format or reformat both drives (NVMe and SATA) - Proceed with caution as it wipes out all the data on both drives!

  7. Make sure you create LVM for both drives and add the following new partitions in the partition table for each drive (Assuming /dev/nvme0n1 is NVMe and /dev/sda is SATA):

    Device          Size    Filesystem  Mount
    ------          ----    ----------  -----
    /dev/sda1       1M      EFI
    /dev/sda2       200M    ext4        /boot
    /dev/sda3       223.4G  ext4        /home
    
    /dev/nvme0n1p1  232.9G  ext4        /
    

    Notes:

    • /dev/sda2 can be any size above 200M. I think 200M for server configuration is more than enough. If you use it for desktop setup, you can set it to 1G.
    • /dev/sda1 is the EFI partition, it is created automatically once you create the /boot partition. It is needed for BIOS to start the OS.
    • /dev/sda3 is optional and can be mounted to any folder in the system. In my case it is classic to use it for /home, as all user's data will be stored there and the performance for such data usage is less significant.
    • /dev/nvme0n1p1 is the only volume in the NVMe drive and it must be mounted to /, in order to achieve the performance of the NVMe speed with the OS.
  8. That's it, you may begin the installation. The installation process will do all the magic needed to make them work together.

  9. When the installation is complete, disconnect the USB drive and restart the machine.

Good Luck!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.