Hello David, initially I wondered if some data type could possibly overflow in Grub :-) Your volume of RAM is not necessarily all that mainstream...
I second Felix Miata's pointer to the launchpad bug entry. It does contain interesting tips. I'm not sure if Grub is a 32bit beast, or 64bit. Its UEFI interface should be ready for 64bit operation, IMO... because almost all modern UEFI "firmwares" are 64bit nowadays. Now... it would be interesting to take a look at your "e820 memory map". Which may be difficult to get, if you cannot boot Linux. Can you, actually? Can you at least start the installer of some distro, and get a copy of the early dmesg? Ahh... Google is telling me that the UEFI Shell contains the MEMMAP command - see here: https://support.hpe.com/hpesc/public/docDisplay?docId=sd00002251en_us& page=GUID-D7147C7F-2016-0901-0A6D-0000000009DD.html Actually it is wrong to still call this the "e820 memory map", as this is a legacy real-mode BIOS service number. The UEFI equivalent is BootServices->GetMemoryMap(). https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/15_System_Address_Map_In terfaces/int-15h-e820h---query-system-address-map.html https://wiki.osdev.org/Detecting_Memory_(x86)#What_about_on_UEFI? Apparently, in Linux booting in UEFI mode, you still get e820 mentioned on the lines related to the memory map :-) Why I'm asking about the memory map: to this day, there seems to be a magical boundary at 4 GB (the 32bit address space). The physical memory space contains not only DRAM, but also many memory-mapped peripheral devices. Such as the IOMEM windows of graphical cards, bits related to the inner workings of PCI and PCI-e, and whatnot. During the years of evolution, the summary volume of memory space needed for these devices keeps growing. Traditionally, this was mapped under 4 GB (from the top of the memory space creeping down). Last time I investigated this, I've seen machines, about 8th-gen Core or thereabouts, that ended up booting with about 2 GB of available DRAM under 4 GB, the rest of the 32bit space being taken for various "IO resources", mostly coming from PCI-e. The rest of your physical DRAM gets mapped in one big chunk above 4 GB. Looking forward, it makes good sense to map the various IO resources above 4 GB, thus making more DRAM accessible under 4 GB (or in fact the 4GB boundary becomes irrelevant / no longer a boundary). Which is a problem for some OS and maybe bootloaders, that are still 32bit. I cannot give you a good example now - most of these could only boot in legacy BIOS mode anyway, and with the departure of the CSM, this would apper no longer to be a relevant issue... What I'm hinting at: even on 64bit x86 PC's, which is almost all nowadays, you can still sometimes find an option in the BIOS/UEFI setup, to boot with resources mapped under 4 GB of physical address space (avoid mapping IOMEM resources above 4 GB = reachable to 64b capable software only). If you can find this in your BIOS, it might make a difference. Then again, if your machine is UEFI-only, perhaps that option is no longer there... Actually, I've just downloaded a BIOS manual for your motherboard (the absolute URL is about 6 lines, not pasting it here). https://www.asus.com/cz/motherboards-components/motherboards/tuf-gamin g/tuf-gaming-z890-plus-wifi/helpdesk_manual?model2Name=TUF-GAMING-Z890 -PLUS-WIFI On page 59, chapter 6.3, there's an entry labeled System Agent (SA) Configuration Memory Configuration Memory Remap Enable/Disable Memory Remap above 4GB ... might be improper wording. They probably actually mean PCI IOMEM resources, rather than DRAM. The point should be, for you to decide, whether the drivers in your OS can cope with PCI-e IOMEM windows mapped above 4 GB. If not, and you allow the high mapping, your kernel probably won't boot. Probably because it's compiled for 32bit mode :-) If you have a 64b kermel, and you permit mapping of IOMEM resources above 4GB, you should end up with more contiguous DRAM mapped *under* 4 GB. Or just the system memory map being stacked in a different way, more casually. Which may or may not alleviate your issue. I recall reading a note, at the link mentioned by Mr. Miata, that GRUB is not good at looking for a bigger chunk of RAM available. That the catch really is, that the UEFI memory map contains some smaller chunks available at the start of the list, that happen to be too small for Grub + initrd... Which would be just a pesky algorithmic laziness, and could bite you even with loads of free RAM and even if your software is all 64bit -- provided that the UEFI happens to map a small chunk at the start of its "map" (a listing of memory blocks). Would you consider trying rEFInd ? https://sourceforge.net/projects/refind/ Apparently it can load a kernel directly = doesn't need grub... Frank
