Booting Manjaro from M2 NVMe SSD, connected through a PCIe adapter

Hello everyone!
I am at my wit's end, so I decided to post here to save myself from further headaches, in case I'm missing something obvious.

I decided to purchase a 512 GB M2 NVMe SSD (the Samsung P981), but since my kinda-outdated Motherboard (Gigabyte GA-970A-D3) doesn't have such a port, I decided to connect it via a PCI-e 2x4 to M2 NVMe adapter (MAKKI-M2-PCIE-VE1). And proceeded to install Manjaro on it. The installation went well, no errors. However, my motherboard can't seem to see the adapter as a bootable drive, and neither can GRUB. Both of my installed operating systems (linux and windows) have no trouble seeing and writing to the drive, as does the Manjaro Live USB image (obviously)

-Attempt 1: Installed Manjaro, with the bootloader (grub) all on the SSD. Not bootable, so this attempt ended there.
-Attempt 2: Installed Windows 10 on the SSD, with the bootloader of my other windows. Gave me an error about system32/boot.efi being corrupt or missing. Tried to copy the one from my working windows installation (a bad idea, but still worth a shot) to no avail.
-Attempt 3: The previous attempt gave me an idea, what if I were to install grub to a bootable drive? I installed it in a 512MB partition on my other drive, and it was visible as a boot option, however, GRUB threw an error about not being able to find the drive it's supposed to boot from.

I tried both BIOS and UEFI mode with GPT partitioning table, nothing changed. Also tried fiddling with some settings in the bios like the secure boot option to no avail.
My guess is that the adapter I used is not a bootable one (doesn't have the firmware to tell the bios what it is), but the OS's have some kind of driver for it, so they can access the SSD.

Someone suggested I try Clover bootloader, which I tried installing onto a USB, but I was unable to boot from it (and I had a headache at that point anyway), and I'm not about to replace my system's bootloaders with something I have no guarantee it works. I could give it another shot if someone thinks it would work. I tried using SuperGRUB CD instead, but it couldn't see the SSD either.

Does anyone have any suggestions before I lose it and return both the SSD and the adapter to the seller for a refund?

1 Like

:+1: Welcome to Manjaro! :+1:

TL;DR version:

The long version:

What you're running into is that your (Old) BIOS / UEFI frimware does not recognise this controller as a bootable controllerยน and no matter what you do, you cannot do anything without a BIOS / UEFI Firmware update (or writing your own BIOS / UEFI Firmware driver).

But, you can still use this controller to install Manjaro on! Your swap,/and /home can reside there, just not grub nor /boot as the BIOS / UEFI Firmware cannot boot from that drive!

So you're indeed missing something obvious and this is a return to the 80s CP/M time for me where HDDs were incapable of booting a PC so you still had to boot CP/M off a floppy and then could use the HDD to store your applications and documents.

So when you use the system above, you will have a very small (<1second) delay when the kernel gets loaded in RAM from your old HDD and then all the rest of the "boot" process will come from the SSD still improving your "boot" speed. (It's actually not the boot any more, so the init of the OS will still benefit from the SSD)

:+1:

Note 1: Or you haven't dug deep enough into your BIOS...
Note 2: Don't try doing that to Windows though: that will totally mess up the system as it's extremely hard to separate boot from init as both reside on C:... Manjaro rulez! :crazy_face:

2 Likes

No problem - I am booting of a older Kingston HyperX Predator PCIe card with a 480G disk.

No Windows is involved - your mileage will vary.

EDIT: And of course you need to verify the compatibility of the chosen hardware components - but that goes for any combination of hardware for Custom Builds.

And for future references - the ability to boot from - roughly any device - requires the system to be using the EFI firmware not BIOS/MBR.

1 Like

First of all, thank you a lot for tackling my problem, it means a lot to me :slight_smile:

Basically, the thing you suggested (installing the bootloader to my other drive) is what I did in attempt #3. The thing is, even grub isn't sure what the thing attached to my PCIe slot really is (because it's not an OS that has drivers for such things I suppose)

Here is the error it throws:

error: no such device: 4b8b733c-2e9f-49ba-8c2d-d343ecea7722.
error: file '/boot/vmlinuz-5.4-x86_64' not found.
error: you need to load the kernel first.

Press any key to continue...

I might have screwed up something during the install though. You speak like /boot and GRUB bootloader are two different things, are they?
All I did was create a FAT32 EFI partition on my other drive and flagged it as such, while mounting it in /boot/efi
Is there more to it?

I've even tried using the GRUB of my portable USB linux (it has linux lite on it, and it sees my other linux installations, namely Mint and Manjaro). Same error.

The other possibilities are: either the controller (adapter) is not bootable, or the SSD is faulty and non-bootable (I've read about such when researching my problem). Sadly I can't test the latter, since I don't have a motherboard that natively has a NVMe M2 port.
Also a suspicious thing is, most of the topics created for problems like mine all mention some variation of Samsung 9xx SSD (mostly 970). It may be a native problem of this series SSD. It's something to consider.

Could you post the output of

sudo parted -l
(that is lowercase L)

with your drives attached form your Manjaro live Usb?

This would be needed if we are dealing with an installation in UEFI mode which I doubt it is the case here. Threfore:

Which means that you would need to create a separtare partition for the boot directory on your internal drive. This has to be EXT4 and I guess 1 GB is an adequate size for it. In the installer you will mount it at /boot and flagged as boot.

And the location for the instalation of Manjaros bootloader would be your internal drive. Not any particular partition.

Important >> Please make sure to have a Windows recovery Disk made beforehand, in case things go awry and you would need to restore Windows boot manager.

1 Like

Hey. :slight_smile:
Well, first of all, we ARE dealing with UEFI. My mobo might be old, but it supports both BIOS and UEFI. I could try the bios route if you think it would be more successful, however I don't see this as being the case, since bios is the more primitive of the two.

Screenshot_2020-03-14_16-10-05

Here is the output. To clarify things:
I have 4 drives in my PC:

  1. ADATA SSD - 128GB. Tons of partitions, for dual-booting Windows 10 and Linux Mint.
    -Also partition number 8 there (the 512mb FAT32 thing) was the EFI partition for Manjaro (/boot/efi), which I destroyed trying to install Clover (unsuccessfully), which is why it's not flagged. Also I'm not sure how good it is for one disk to have 2 EFI partitons.
    -The 2 EXT4 partitions is where my Linux Mint is (the root and home), along with their swap.
    -The rest is Windows and its bloatware. (Also, I care not for it nor its bootloader, since I'm going to reinstall it (or rather a HEAVILY debloated version of it) aswell, once I clear Mint off this disk.

  2. Hitachi HDD (1TB)
    -I have a 900GB NTFS partition and a 100MB EXT4 backup partition, nothing flashy.

  3. Ofcourse, the Manjaro live USB, lol.

  4. SAMSUNG NVMe-PCIe M2 512GB SSD. The cause of all of our problems. Has a vanilla manjaro installed on it.

EDIT: Also, another thing to consider. A post I found in another forum suggested removing all other disks from the system, so the bios can somehow install NVMe drivers. I don't think that's a good idea, since there are no such things as bios drivers, and it still has no idea what is the thing attached to my PCIe slot. I could try it if you think it could help though...

My apologies for overlooking this:

You might consider this as a suggestion and if it makes sense to you then you could proceed to action:

Format the partition number 8 as EXT4, mount it at /boot. This is where the kernel(s) will reside.

Use the existing EFI System Partition as the location for the installation of Manjaro's bootloader. Mount it at /boot/efi and flagged as boot.

For the rest, point the installer to your external drive. As there are two EXT4 partitions there so pehaps you want a seperate root and home. Mount them at / and /home respectively.

I believe this is what @Fabby had in mind in his post.

Edit: I saw your edit now. I am afraid I am doubtful if it will work that way. Perhaps others will have some thoughts about that.

3 Likes

Sounds promising. See you in another install's time :smiley:
Hopefully from within Manjaro this time.

Also, I found another resource that might help:
https://www.dell.com/support/article/en-bg/sln308883/how-to-resolve-an-pcie-nvme-m-2-ssd-ubuntu-kubuntu-installation-problem-on-your-dell-pc?lang=en
They say to change AHCI back to RAID. I did that and it did see a weird thing in my boot menu, but since I wiped Partition 8 (Manjaro's bootloader), it couldn't boot. Maybe that's the key we're missing. Will experiment around with it.

Also, a question. What's the downside of using RAID over AHCI? I remember everyone recommended I switch to AHCI when I first got my 128 GB SSD, saying it would be way faster. I just switched back to RAID and benchmarked that same SSD, and its speeds are unchanged - around 500mb/s, which is what you would expect from a SATA SSD. (from within linux though, windows might be a different story, and the windows speeds ARE more important, as this will be its own disk.)

I think we're close to the conclusion of the mystery! Thanks for helping out <3

I don't think the installer would see any of your drives if you set the controller to RAID. The recommendation is the AHCI.

Croosing fingers here!

:crossed_fingers:t3:

1 Like

Guess where I'm writing from?

That's right, Manjaro 19.0.2 XFCE! :smiley:
Thanks a ton for your suggestion, I had no idea Linux stores its kernel in the /boot folder. Sure enough, once loaded, it did recognize the NVMe SSD and booted straight into it.

That being said, it was a little anticlimatic that I got the same "could not find drive" error as before (I died inside a little when I saw it), but it spit me back into the GRUB menu, and selecting Manjaro, it booted right up! Seems like a minor nitpick though, atleast it works now!

Also, RAID or AHCI seemed to make no difference, since I could see and install to all the drives I normally can (except that weird entry in my boot menu under RAID). I would guess that if I use RAID, I could technically boot from a bootloader on my new SSD, but that's a theory I'm not willing to test. Still, it could be worth a shot if someone in the future (yes you, stumbling along this post in 2023) has the same problem.

Thanks again for the help, everyone, love y'all <3

That's great! So glad you got it installed, up and running!

And welcome to Manjaro Forum!

ps. Thanks for marking my post as the solution! I think the credit should go to @Fabby . I just fleshed out a bit what they had suggested. That said, it was a pleasure assist you further and see you succeed at the end.

  1. Ah, it's already solved by @Marte from the Avengers Team (Captain Geek). In that case, please keep all the below in mind for next install! :wink:

  2. Please don't post pictures of text as we cannot copy-paste and search from pics, therefore, please read this, edit yout post and copy-paste the text of the output in there.
    Thank you for helping us help you.

  3. Yes, /boot and grub are not the same thing. :innocent:

  4. Please define "other drive": The bootable HDD? If yes: correct, if no: incorrect. :sob:

    Please be specific: What is obvious to you on your system is not obvious to us as the Manjaro telepathy module is still under heavy development by the Manjaro team and therefore our ability to link our brains directly to your computer is severely limited for the moment. :grin:

:innocent:

2 Likes

Thanks for all the help and these tips too, you're both awesome :3

  1. Yeah, my bad. Strange how it didn't occur to me to just copy and paste the text instead of screenshotting :smiley:
  2. That was the key knowledge that I was missing. My approach was the right one, but I had no idea the kernel was in /boot.
  3. Yeah, I did mean the bootable drive (or more specifically my bootable SSD, not HDD)

I actually figured out why it was giving me error messages still - GRUB was trying to load the default theme set by manjaro, and since the files are in /usr/share (which is on the NVMe drive), it can't read them and uses the default theme (while notifying me and slowing down my boot process). Nothing a quick spin in GRUB customizer couldn't fix (also putting the themes in the actualy /boot/grub/themes seems to work)

2 Likes
  1. My bad: I can't be arsed bothered to type 6 characters in https://startpage.com: I just highlight the word, right-click and Search startpage.com and when I see pics, I just copy-paste that canned comment you got from Kate as that's just 4 keypresses and a click...

:sunglasses: :wink:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by