# grub2-mkconfig missing parameters?

Hello,

I'm completely inexperienced with grub, so I am confused why this is happening:

I chose to encrypt my root and home partitions when I installed Fedora 28 (now upgraded to 29).

My /etc/sysconfig/grub did not contain anything special, with GRUB_CMDLINE_LINUX="".

Then, I followed this guide on how to uninstall the nvidia driver because it stopped working on my machine with the 4.19.2 kernel.

I deleted the text rd.driver.blacklist=nouveau and a duplicate GRUB_CMDLINE_LINUX= line at the end, and etc. There may be some changes that I mistakenly made.

Edit: to clarify, I had two separate lines: GRUB_CMDLINE_LINUX="" and GRUB_CMDLINE_LINUX=. I simply deleted the latter.

Now, the linux line in grub after running grub2-mkconfig changed from

linux /vmlinuz-<version root=/dev/mapper/fedora_localhost--live-root ro resume/dev/mapper/fedora_localhost--live-swap rd.md.uuid=<uuid> rd.lvm.lv=fedora_localhost-live/root rd.md.uuid=<uuid> rd.luks.uuid=<luks-uuid> rd.lvm.lv=fedora_localhost-live/swap


to

linux /vmlinuz-<version root=/dev/mapper/fedora_localhost--live-root ro


For now, I manually added back the missing parameters in GRUB_CMDLINE_LINUX, but I shouldn't have to do that in the first place (unless my memory is wrong). How would I fix this?

edit retag close merge delete

What is the content of that duplicate GRUB_CMDLINE_LINUX= line?

Or better yet. Copy-paste the entire /etc/default/grub into your question.

( 2018-11-24 02:47:46 -0600 )edit

@villykruse there was an empty GRUB_CMDLINE_LINUX= (verbatim) at the end of the file. Will paste the content when I get access to my computer.

( 2018-11-24 03:21:18 -0600 )edit

... which erases or overrides the earlier GRUB_CMDLINE_LINUX= entry.

( 2018-11-24 05:44:01 -0600 )edit

@villykruse and I had had the line the whole time, and there were no missing boot options. I deleted the line, not added. Prior to deleting the line, I had the boot options that I needed.

( 2018-11-24 09:38:23 -0600 )edit

Sort by » oldest newest most voted

For now, I manually added back the missing parameters in GRUB_CMDLINE_LINUX, but I shouldn't have to do that in the first place (unless my memory is wrong). How would I fix this?

No, that's normal — the kernel command line in grub2.cfg will only contain the parameters that it's told to contain, it can't magically divine what those should be. (_grub_ can't, I should say ­— determining the contents of the kernel command line is anaconda's job.)

The real question is, why _didn't_ you have a line in /etc/default/grub containing:

GRUB_CMDLINE_LINUX="resume/dev/mapper/fedora_localhost--live-swap rd.md.uuid=<uuid> rd.lvm.lv=fedora_localhost-live/root rd.md.uuid=<uuid> rd.luks.uuid=<luks-uuid> rd.lvm.lv=fedora_localhost-live/swap"


Anaconda should've written it there when it installed the system originally. Perhaps something along the way deleted it (some script mangled it during the installation/removal of the nvidia driver, perhaps?

In fact, that uninstall procedure you linked to even contains this:

Remove ‘rd.driver.blacklist=nouveau’ from end of ‘GRUB_CMDLINE_LINUX=”…”‘

 ## Example row ##
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet"


So, as you can see, command-line arguments like the ones you inserted were expected to already be there.

/etc/default/grub is only used when manually regenerating the grub.cfg. The grubby tool that handles kernel updates simply copies existing entries to create new ones, it doesn't use the grub2 tools at all. So, that explains why your GRUB_CMDLINE_LINUX could be missing the proper arguments, without it affecting anything until you ran grub2-mkconfig.

more

The last occurence of a GRUB_CMDLINE_LINUX= line will replace any earlier occurences of the same line. Thus, an empty GRUB_CMDLINE_LINUX="" at the end will make the final command line empty.

more

I had the line this entire time, so this is definitely not the cause. I had two lines, one with GRUB_CMDLINE_LINUX="" and one with GRUB_CMDLINE_LINUX=. I deleted the latter because I know it just overrides the previous one (which doesn't do anything). Plus, before I deleted the line, my boot options were still there.

( 2018-11-24 09:39:14 -0600 )edit