Linux Distros That Suck at Multiple Hard Drives

Some Linux distros really suck at dealing with multiple hard drives. Too many “maintainers” only have a laptop.

Background

You need a wee bit of background before we jump in. Hopefully you can see the featured image. Recently picked up this Lenovo M93p ThinkCentre from eBay. I specifically bought an M93p instead of M83 because I wanted two hard drives. I had a 480 GB SSD I wanted to transfer the Windows 10 over to and I had a 6TB Western Digital Black I wanted to use for the other operating systems.

Why did I buy this particular M93p?

Lenovo M93p Ports

I actually added the PS/2 ports today. The little cable showed up to do that. It already had both serial ports, wifi, and the NVIDIA add-on video card. If your eyes are real good you will notice that on the other side of that Wifi antenna is a parallel port.

Software engineers need a lot of ports. If book sales start picking up I may even have to break down and buy another dot matrix printer to print shipping labels with. Yes, parallel port dot matrix printers are still made. You can buy them from newegg.com today. There are lots of legal requirements to print with impact printers on multi-part forms in various shipping and transport industries. They also do a more economic and reliable job on mailing labels . . . if you buy the right one . . . and you have the proper printer stand.

Printer stand back

The best ones from days of old have both a center feed slot and a rear feed slot to accommodate either type of printer. Long time readers of this blog will remember I started work on a Qt and USB series and then life got in the way. That was all USB serial ports talking to real serial ports. My Raspberry Qt series also involved quite a bit of serial port work. My How Far We’ve Come series also involved quite a bit of serial port stuff as well.

Putting it mildly, I still do a fair bit of serial port work from time to time. If I get done with RedDiamond and RedBug without life getting in the way I’m going to start a new post series using CopperSpice and serial ports. The makers of Qt have honked off their installed base with the new “subscription licensing” for Qt 6.x and beyond. Even more honkable, if that is possible, is the chatter that they are trying to license the OpenSource QtCreator as well. Yeah, people are making a hasty exit from the Qt world and many are headed to CopperSpice.

Sadly Needed Windows

Unlike every other machine in this office, I needed to have Windows on this machine. There is some stuff coming up that will require it. There is no way in Hell I was going to try writing my serial port code using Linux in a VM. I may edit it there, but testing is a completely different story.

You’ve never spent days trying to track down why some characters don’t get through. Worse yet, the serial port just “stops working.” After you do a bunch of digging you find that someone baked in some super secret control strings to do special things in the interface driver of the VM. Nothing nefarious. Usually to support “remoting in” via cable connection.

Boot Managers

In the days of DOS and GUI DOS that Microsoft insisted on calling Windows, this was no big deal. BootMagic and about a dozen other competitors existed to help Noobies and seasoned pros alike install multiple operating systems onto the same computer. Honestly, I can’t even remember all of the different products that had a brief life helping with this very task.

OS/2 had Boot Manager backed in. Those of us needing to develop for multiple operating systems usually ran OS/2 as our primary. It just made life so much easier.

Early floppy based Linux distributions came with Lilo. It was generally pretty good at realizing Linux wasn’t going to be on the primary disk. SCSI controllers could support six drives and distributions were different enough you had to boot and build on each.

Grub

Later many distros went with Grub. To this day Grub has issues. The biggest issue is that each Linux distro adopts new versions of Grub at their own pace and Grub has a bit of history when it comes to releasing incompatible versions.

Adding insult to injury is the fact many Linux distros like to hide files Grub needs in different places. When you run your distros version of “update-grub” (as it is called in Ubuntu) it has to be a real good guesser when it wants to add a Grub menu line for a different distro.

Your second fatal injury happens during updates. Say you have an RPM based distro but have Ubuntu as the primary Grub OS. When your RPM based distro updates and changes the boot options for its own Grub menu entry in its own little world it has no way of informing the Grub that is actually going to attempt booting. Sometimes an “update-grub” will fix it and sometimes it won’t. A bit heavier on won’t that will.

Drives got too big

That’s the real problem. During the SCSI days when 80MEG was a whopper we put each OS on its own disk and just changed the boot device. That was our “boot manager.” Every OS existed in its own little universe.

As drives got bigger various “boot manager” type products could play games with MBR based partitions. Only one partition could be “active” so a tiny little boot manager got stuff into the MBR and it changed the active partition to match the requested OS.

Cheap but effective trick as long as you didn’t need more than four partitions. Only a primary partition could be flagged for active booting. Lilo and the other Linux boot managers started allowing Linux distros to boot from Extended partitions.

Today we have GPT and UEFI

I’m not intimate with how these work. The Unified Extensible Firmware Interface (UEFI) created the spec for GUID Partition Table (GPT). {A GUID is a Globally Unique Identifier for those who don’t know. That’s really more than you need to know.}

Theoretically we can have an unlimited number of partitions but Microsoft and Windows have capped support at 128. The UEFI should be replacing Grub, Lilo, and all of these other “boot manager” type techniques.

We shouldn’t have all of these problems

As you install each OS it should obtain its partition GUID then find the boot device and locate the UEFI partition on it. Then it should look for a matching GUID to update and if not found, create an entry. There is a spec so every entry should be following the same rules.

(If you read up on the OS/2 boot manager you will see that from the 10,000 foot level UEFI and the OS/2 boot manager conceptually have a lot in common.)

When any computer boots from UEFI and there are multiple operating systems in the UEFI partition, UEFI should show the menu and let the user select. This should all be in hardware and firmware now. We shouldn’t have Microsoft trying to lock us into their buggy insecure OS and Linux distros shouldn’t be trying to ham-fist Grub into UEFI.

The Split

I wanted all Linux distros to boot from the 6TB drive. I wanted Windows and UEFI to stay on the tiny SSD. This isn’t unreasonable. As all of the background should tell you, I’ve been doing things like this for decades. I did not want to try and stuff everything on the 6TB.

Each Linux distro would get 500 GB – 800 GB depending on how much I thought I would be doing in them. This means I should be able to put up to 12 different distros on the drive.

That may sound like a lot, but it’s not. You’ve never written code that worked perfectly on a Ubuntu LTS and failed rather bad on some of the YABUs supposedly using that LTS as their base . . . I have. The only way to know things for certain is to have a bunch of test systems. When you are testing serial port (or other device stuff) you need to be running on hardware, not in a VM.

Manjaro was the first failure

Manjaro kernel 5.9.16-1 was actually a double failure. I have this distro running on a pair of machines, but it is the only OS on them. Rather like what they’ve done with the KDE desktop. I rather hate the fact PostgreSQL cannot access the /tmp directory bulk import to restore a database doesn’t work on that platform. There are a few other odd Manjaro bugs as well.

I wanted to do some pacman packaging and some testing of the future serial port code in CopperSpice on Manjaro so it was first on the list. It booted fast and seemed to install clean. Rebooted the computer and boom, Windows came up. Navigated to the Advanced Settings under Settings in Control panel and tried to switch the boot OS. Boom! Windows is the only entry.

(*&^)(*&)(*

Let’s Install Ubuntu!

I had real dread when I reached for Ubuntu. That installer has had a lot of assumptions baked into it over the years. I was pleasantly surprised and slightly disturbed.

Installation went smooth and when I rebooted I was greeted with a Grub menu. Both Windows and Manjaro were on the Grub menu, but, should we really be seeing Grub on a UEFI system with multiple operating systems? Shouldn’t there be a UEFI menu that just has an entry for Ubuntu and when you select Ubuntu shouldn’t that be when you see a Ubuntu Grub menu?

Let’s See if Manjaro Boots Now!

Once I verified Ubuntu could boot and apply updates I rebooted and selected Manjaro. That’s as far as you get. The Lenovo logo stays on the screen and nothing else happens. HP owners have the same problem according to Reddit.

Fedora 33 Was Next

The Fedora installer was the worst of the lot. If you chose the second drive via one of the manual methods, it looked for a UEFI partition on that drive. It wasn’t smart enough to determine what the boot device was and go look there. You couldn’t get out of the screen either. There was no back or cancel, you had to power down.

Summary

Manjaro at least tried to install. It failed to create anything in the UEFI partition of the boot disk and it failed to show any error with respect to UEFI creation failure. It refuses to boot from the entry Ubuntu created for it in Grub. Double failure. I suspect this is due to a combination of super secret stuff needed on the menu entry, Manjaro using a different version of Grub, and Manjaro potentially hiding the files in a place Ubuntu doesn’t know to look.

Fedora failed to get out of the starting blocks. That graphical installer needs a whole lot of work!

Ubuntu worked despite my expectations of abject failure.

Just because Ubuntu worked doesn’t mean every YABU will. Most tend to write their own installers. If the developer working on the installer only has a laptop, they are going to take unreasonable shortcuts.

Related posts:

Fedora 33 Black Screen Again

How to Install PostgreSQL on Fedora 33

Fedora 32 – Black Screen After Login

How to Install PostgreSQL on Manjaro

How to install PostgreSQL on Manjaro (really any Arch distro) is not straight forward. Worse yet, most of the information you find online about how to do it is outdated fifteen minutes after it is published. You have to be sure the versions match before following the instructions.

My version

You really need to do this one from the terminal.

sudo pacman -Ss postgres

That will show you lots of stuff. If you just want to jump, run these two commands.

sudo pacman -Sy postgresql
sudo pacman -Sy libpqxx

The second one many will argue is not needed. Just install it. Technically it is for C/C++ users doing server development, but quite a few programs using PostgreSQL as their back end need it. Don’t rely on packagers being smart enough to include it as a dependency.

Oh, don’t get all happy and giddy. This is an Arch based distro, nothing is easy despite the “simplicity” motto.

It’s still not going to work

Most other distros would be really nice and simple. After you installed the server, they would enable and start it for you. Not Arch based distros. Being kind to the user isn’t in the development mantra.

Part of the reason is you cannot have “One package to rule them all!” This desktop thing is kind of an afterthought in the Arch world. A cute little thing to be passed along as a promotional item like a pen with a company name on it. The bulk of Arch based packaging and development appears to be focused on server markets. Here’s a good example.

sudo -u postgres -i
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/'
exit

You should see something like this:

Initializing PostgreSQL

Most desktop distros just do that (or something like it) for you as part of the POSTINST step. While some super desktop users will have multiple disk drives in their system and now how to automount NAS at boot, John and Jane Q. Public don’t.

Those of you who happen to have a spare 6TB Western Digital Black internal disk drive in your machine will want to change the directory path because you probably installed that drive just for database use . . . unless you really like funny cat videos.

A Debian Detour

On Debian and most other desktop friendly distros, they choose to make the expert users suffer.

sudo mkdir /media/db_data/postgres_data
sudo chown postgres:postgres /media/db_data/postgres_data
psql -d postgres -c " create tablespace bigspace location '/media/db_data/postgres_data' "

Then you have to explicitly create your tables in that tablespace.

createdb --tablespace bigspace tax_$tax_year 'Tax information for $tax_year'

Yes, parking my PostgreSQL data out on a second disk was painful. Most ordinary users only have one disk. Adding insult to injury, if I had to re-install my OS due to drive failure and no current backup, there was actually no way to recover the data in the tablespace. At least there wasn’t back then. I’m very religious about backing up, but that failure caught me at the right time.

OS/2 Still Lives

There is a method to the madness with the way Manjaro/Arch distros choose to do this. It just doesn’t work well for the average user. Server focused distros are pushing LVM.

I’m not really trusting this particular history of OS/2 and its statements about LVM. The reason for my distrust is I ran OS/2 as my primary desktop for years. The reason is that I never ran a server edition of OS/2, but I ran LVM for years.

Logical Volume management was way more important in the OS/2 days. You have to remember that an 80MEG hard drive was huge then. Depending on what flavor of DOS you were running, you couldn’t even partition that entire drive as a single partition. According to this post my memory is wrong, but I physically remember running into the partition size limit issue more than once. First time was with my first 40MEG drive and he second time was with my first 80MEG drive.

With LVM and a SCSI controller allowing for up to six drives you didn’t have these issues. OS/2 had a drive preparation that would let you dynamically add another drive to the LVM. Is that 80MEG drive getting full? Just add another. Once IBM ripped out most of the really bad Microsoft code, OS/2Warp 4.5 was a really stable and capable OS. So naturally they abandoned it.

Pieces of OS/2 keep showing up because it was ahead of its time. It had better memory management and networking than any Microsoft product of the day or many years to follow. In particular, LVM was something of a crown jewel. As a parting thumb in the eye of Microsoft, IBM OpenSourced LVM and it found its way into Linux.

The Method to the Madness

Some Linux distros are defaulting to LVM for the primary installation target, others are not. I will leave it up to the reader to click the links and do the research.

This long winded tale is explaining why opted to not be nice to the user. A sysadmin is going to want to point PostgreSQL to an LVM or network storage appliance providing hundreds, perhaps thousands of Terabytes of storage. An ordinary desktop user has one disks.

Your Final Step

sudo systemctl enable --now postgresql.service

You should be good to go!

Add yourself as a super user

There are those who offer up the argument for adding yourself to the postgres group. I’ve never done it. If you are really bothered by the createuser command not being able to change directory to your home then I guess you can. Just don’t forget to also change the group on your directory.

groups and permissions

If you want to understand more about Linux groups and file permissions, start here.

The Arch Bug

When you install PostgreSQL on Manjaro you run into the Arch bug. Manjaro is Arch Linux based. When you hear about Linux being an “expert friendly” operating system with an uninviting community, you are most likely hearing a story about someone’s adventure into Arch. Just signing up for the user forum should tell you what you are in for.

Arch forum registration greeting

Basically, the bug is Arch deciding to change a default from false to true. So, if you’ve been using my xpnsqt application to keep track of your expenses for filing taxes; (Tax season is just around the corner people!) you will see something like this when you try to load your CSV backup files.

'/home/roland/postgres_tax_backups/tax_2019_payees.csv' -> '/tmp/tax_2019_payees.csv'
 '/home/roland/postgres_tax_backups/tax_2020_categories.csv' -> '/tmp/tax_2020_categories.csv'
 '/home/roland/postgres_tax_backups/tax_2020_expenses.csv' -> '/tmp/tax_2020_expenses.csv'
 '/home/roland/postgres_tax_backups/tax_2020_payees.csv' -> '/tmp/tax_2020_payees.csv'
 ;;;;;
 ;;;;;
 ;;;;;   Loading 1992
 ;;;;;
 ;;;;;
 creating tax tables
    Importing …  1992
 psql:import_it.sql:1: ERROR:  could not open file "/tmp/tax_1992_payees.csv" for reading: No such file or directory
 HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
 psql:import_it.sql:2: ERROR:  could not open file "/tmp/tax_1992_categories.csv" for reading: No such file or directory
 HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
 psql:import_it.sql:3: ERROR:  could not open file "/tmp/tax_1992_expenses.csv" for reading: No such file or directory
 HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
  setval 

Since roughly the 1970s /tmp has been that unprotected no-mans land where you didn’t leave stuff sit for long. Most distros point temp environment variables for each user to /tmp/user-name and make that a directory owned by the user. This gives you some protection.

You know, the average schmoe using Linux at home or work doesn’t know much about Linux really. They’ve always used a desktop and only open a terminal when it is absolutely necessary.

Sysadmins on the other hand, should know all about systemctl overrides. They also would have been the only one who wanted this turned on. Seriously, there is no account information with my xpnsqt thing. I suspect there is no account information in your recipe database. How about the database you created to keep track of your music collection? DVDs?

When you install PostgreSQL on Manjaro – The Schmoe Tactic

At some point everyone is a schmoe because he universe likes to laugh at people. The schmoe approach will do just enough research to find out what value they need to change.

cd /usr/lib/systemd/system
sudo cp postgresql.service postgresql.service_original
sudo jed postgresql.service

You may not have jed installed. You should, but you probably didn’t install it. Use nano or whatever terminal emulator you have installed.

PrivateTmp needs to be false

Save an exit. The dutiful schmoe will then do the following:

sudo cp postgresql.service postgresql.service_fixed

Why? Because every update will probably walk on this file. The dutiful schmoe can use a diff utility like Meld to compare the before and after so they can remember what needed to be fixed.

When you install PostgreSQL on Manjaro – Shoulda Done

sudo systemctl edit postgresql.service
Override file

The dark lore of the override file won’t be immediately obvious. You cannot just override the value. You have to override the value under a tag/section whatever the name is this week.

Yeah, Arch did this to you. Every other distro I’ve used realizes your typical desktop user won’t know how to fix this. Far too many will be a schmoe, constantly fixing that file.

No Matter Which Approach

No matter which approach you take, your changes will not take effect until you either reboot or restart PostgreSQL.

sudo systemctl restart postgresql

Related posts:

How to install JED from AUR on Manjaro

How to make Manjaro KDE work with NAS

How to Install Jed from AUR on Manjaro Linux

One of the things most new (and even seasoned) users of Linux find frustrating is the organization of repositories. Linux is supposed to be the same yet when you want to install the jed text editor on Manjaro you have to go on a mining expedition and learn about the AUR (Arch User Repository).

Arch based distributions are notoriously difficult to use. Hopefully you read my earlier post about getting Boinc to run? With the Debian and RPM based distros it mostly kinda-sorta just works. Their package maintainers are incredibly remiss when it comes to including Oracle VirtualBox as a dependency, leaving people to scrounge. At least YABU distros have a custom Oracle VirtualBox package for Boinc, just the package maintainer for Boinc hasn’t been polite enough to flag as a dependency.

AUR

The Jed story is even worse. Arch based distros have created the concept of AUR (Arch User Repository). On the site it contains the following statement in bold.

DISCLAIMER: AUR packages are user produced content. Any use of the provided files is at your own risk.

If one believes all developers to be of good and decent making, this is a place for an industrious package developer to post the fruits of their labor and suddenly have it available to all ARCH based distributions. If one believes Russian/Chinese/insert-group-here hackers are out to distribute malicious code any way they can, then this is a cesspit from which there is no return.

The truth is found somewhere between those two goal posts. Most (possibly all) AUR packages must be built. If you had nothing better to do with your life you could reach and analyze each line of code before actually installing. You do that, right?

AUR is a community based thing. There are submission rules and if something is found to be malicious or non-conforming the moderators (or whatever they prefer to be called) will nuke it from AUR. Somebody, of course, must first be a victim that complains.

Given the build requirement, the very first time you install a package from AUR you get a lot of other stuff installed.

Jed command line install

AUR requires what Debian users would call “build-essentials” to be installed. Even if you never use jed as a text editor in a terminal, a new user of an Arch based distro should open a terminal window and install it first thing. You will then have most of the build environment you could ever want.

For those who just wanted the command without the knowledge, here:

sudo pamac build jed

For those who just want to search for a package in the AUR

sudo pamac search -a jed

Be warned that if you search for something common you will get a long list.

Manjaro KDE and NAS

You know, I really hate updates.

What I really hate is how the Linux world thinks a major (&)(&*ing change should go in a minor update. Not long ago I wrote this post on getting Manjaro to work with NAS and all was beautiful. Manjaro worked much like other mainstream Linux distros when it came to NAS.

Well we can’t have that!

One of the more annoying things about Manjaro KDE and NAS is the network discovery. Actually it is the support/development staff. One person fixes it so it works very main stream. Then someone else changes it back to an expert friendly hack.

If your one and only target market is a corporate desktop, I guess I can understand this. Department IT people will email you the server name(s) you have access to and tell you the credentials you should use. There could be thousands of network shares in a sizeable corporation.

You shouldn’t be seeking out regular users if you are really writing for the corporate market. First go read the post I linked to. It will provide you some frame of reference for this rant.

Fedora 33

Pictures will help explain my current rant.

Fedora 33 – Other Locations
Fedora 33 – WORKGROUP
Fedora 33 – Network sources

As you can see with Fedora 33, finding the NAS you want to use is a nice graphical progression. That assumes you have applied this hack so your Buffalo devices show up. You apply that same hack to Ubuntu for a more direct approach.

Ubuntu 20.04 LTS

Ubuntu – Other Locations

Manjaro 20.2.1

With Manjaro (KDE at least, haven’t tried others) you have to click on Network, then double click “Add Network Folder.”

Manjaro KDE – Network
You need to select Execute
Select Windows network drive
Now you have to enter all of the information

I think you are starting to see the “expert friendly” portion of this. Most mere mortal users won’t know how to find this information.

Various lookup commands part 1
various lookup commands part 2
Various lookup commands part 3

I’m sure there are hundreds of other ways. I’m also certain most GUI users aren’t going to did deep enough to find such obscure commands. They are just going to install Ubuntu, Fedora, etc.

Note, you still have to identify which shares are on the server.

show shares for server

If you have NAS on your network that supports the new standard, but your routers and some of your other NAS don’t support the SMB2 protocol this is what you have to do. None of your WORKGROUP drives will show up in the GUI because the router hosting your WORKGROUP doesn’t directly support the newer protocol.

Yes, we now have to apply the hack previously applied to Ubuntu and Fedora. It looks a little different here though.

sudo nano /etc/samba/smb.conf
smb.conf

Change the “client min protocol” line from SMB2 to NT1. Once you save that, if you are using the smbclient command in a terminal, you don’t even have to reboot. You do have to reboot so the GUI notices the change.

Once you reboot things will seem a bit more normal.

You can now see WORKGROUP in “Shared Folders”
All is right with the world

I know one thing for certain; not going to upgrade my router until my Buffalo NAS dies.

ERROR: resume: hibernation device not found

You gotta love a cryptic error message during boot like: “ERROR: resume: hibernation device ‘UUID=long number here’ not found.” Love even more the fact you need roughly ten minutes of patience to get past it.

The thing about having quite a few machines you experiment with is you stumble across the really stupid stuff. I had stuck a 6Gb/s 1TB drive in this i5 to experiment with Manjaro. Eventually I was going to be building CopperSpice or something like that. I thought really fast hard drive would make life better.

For those of you who haven’t followed along

For those of you who haven’t followed along, I always thought this was a 4th gen i5, then I actually looked at the system info during Manjaro experiment. Yep, it is just a gen-3.

So, I shrunk the partition down to about 200Gig because I was going to stick in one of my oldest drives to return this machine to the “BOINC Rack.” Did an image backup, Stuck in a 300Gig ATA-150, restored, then booted GParted CD to resize.

I don’t want to wait for GParted to move the swap partition all the way to the end of the drive.

Admit it, you’ve all said that. Most of you have done what I did. You just deleted the existing 9Gig swap and created a new one at the end of the drive. It took mere seconds. Then you had GParted expand the primary partition to consume all space in between.

Then you suffer through the boot you think will never complete. Much of that time you get to see the above error message on the screen. Then you wonder if you are going to have a roughly 20 minute reboot each time or if you can fix it.

Linux, over the past five or so years, has been doing a lot of work on hibernation. It has to. Microsoft absolutely sucks at it. Go into any pre-pandemic company and you will see managers carrying laptops open down the hall between meetings. Why? Because Microsoft blows when it comes to hibernation. Something always gets corrupted. Not every time and not with any predictable pattern, but something always gets corrupted.

Hibernation has been forced on the world by so-called “modern” browsers. Chromium, Firefox, Opera, and others will launch upwards of 100 processes when you start the browser. Many of these will never get used. They are “just there in case.”

Some Linux distros have opted to Hibernate in RAM

The phrase causes a lot of confusion when people read it. “Hibernate in RAM” sounds so unsafe. It is. This type of hibernation is basically storing compressed versions of these hundred or so unused processes off in some corner of RAM until they are actually needed. They aren’t supposed to survive a boot.

Some Linux distros use a hibernate partition

Basically they create a partition about the size of what they think they will need to store a compressed image of RAM (or most of it) while the machine is going into hibernation. This makes a little more sense to most people because the system theoretically should recover from hibernation. At startup the system can look for some certain value in the hibernation partition and choose to load the contents based on that certain value.

Some Linux distros use swap

The original intent of swap was to provide virtual memory to an over taxed system. Most of you reading this aren’t old enough to remember trying to run Linux from floppy on a PC with 640K. Things didn’t really get much better when we could finally address 2MEG. Being able to swap processes in and out of precious RAM allowed a computer to do more.

Guess what?

RAM has gotten cheap. Even the Raspberry Pi 2 comes with 1Gig. When I started in IT we couldn’t get a Gig of storage without filling a room full of tape reels.

That’s why companies bought computer operators roller skates. I kid you not.

Even this old i5 gen-3 came with 4Gig of RAM initially. As you can see I boosted it to 24Gig. As such, the swap partition, created by default in most installation scripts for most distros, rarely, if ever, gets used. For over a decade the rule of thumb was at least one byte of disk for each byte of RAM.

Back when a 20MEG hard drive was big and PC RAM was capped at 640K this meant we allocated at least 1/20th of our storage (usually way more) to swap. Today many distros just use a file or directory in root. Standard “corporate issue” desktops come with 8-16Gig of RAM and 1TB disk. They have stopped trying to “get by” with smaller hard drives because it is just not worth it.

You end up wasting quite a bit of disk trying to create a small partition. Sectors have to be skipped so it is properly aligned. Creating a directory with files that can expand to however much you need is a much more efficient use of disk . . . provided the reason for hibernation wasn’t a “disk full” condition.

What has that got to do with the error?

I’m glad you asked!

resume UUID in Grub

Long ago Linux moved to using UUID to identify disks so they could find them if they moved around. This was particularly important during the days of SCSI. It remained important during the days of IDE when master/slave jumpers could be changed.

For Manjaro (and probably many other Linux distros) they identify the resume location in Grub. When you (I) nuked the swap partition the new partition I created got a new UUID. For swap, Linux looks around for all of them and just uses them. For resume, not so much.

The first step at fixing this is identifying the new UUID.

blkid output

You need the UUID, not the PARTUUID.

On Manjaro you can just use nano and edit this file directly as a cheap hack to test your ideas.

sudo nano /boot/grub/grub.cfg

Note: The next time something forces grub to update your cheap hack will be gone.

You really need to edit /etc/default/grub then run update-grub.

sudo nano /etc/default/grub
sudo update-grub

After that this particular problem will be solved.