Garuda GPU passthrough guide?

Is anyone aware of an actual guide written for Garuda for GPU passthough. Not for arch or some derivative, but for Garuda?

The two arch guides reference adding line to files do not exist in Garuda Dragonized KDE. I.E: /etc/mkinitcpio.conf for one example.

I had this working almost perfectly, but reinstalled and trying to get back to my happy "Zen" build.

Two other articles reference the cmds to add to the grub boot loader. But each one has a different version of vfio-pci ids=10de:13c2,10de:0fbb asn and example. Some have vfio_pci.ids=10de:13c2,10de:0fbb and or vfio-pci ids=10de:13c2,10de:0fbb. Confusing some use an underscore, some use a dash, some do not have. prior to ids. I am stuck when adding my 2 nvidia GPU to VIM. When I add it, it never starts and then VIM manager becomes unresponsive.

So just trying to see if someone has a document that goes through using GPU passthrough written specifically for Garuda.

I am not aware of such a guide. Perhaps you can take notes as you go and post one in our FAQ and Tutorials category after you figure it out. :wink:

This kind of sounds like an XY problem, where your actual problem is “I can’t figure out what to do for this one step in the guide” but your proposed solution is “I need to follow an entirely different guide”.

You have not given specific enough information for anyone to fully understand what is happening (for example, you have not posted the guides you tried to follow or the steps you have taken so far), but the one problem you specifically mentioned should be pretty simple to solve. Pretty much any instruction written for mkinitcpio can be done with dracut instead.

Again, you did not say what guide you are working off of but if it is this one, the instructions for dracut are actually printed right below the one for mkinitcpio.


Here’s a closer look:

Loading vfio-pci early

Since Arch’s linux has vfio-pci built as a module, we need to force it to load before the graphics drivers have a chance to bind to the card. There are two methods: modprobe configuration, or adding the modules to initramfs.



Following the same idea, we need to ensure all vfio drivers are in the initramfs. Add the following file to /etc/dracut.conf.d:

force_drivers+=" vfio_pci vfio vfio_iommu_type1 "

Note that we used force_drivers instead the usual add_drivers option, which will ensure that the drivers are tried to be loaded early via modprobe (Dracut#Early kernel module loading).

As with mkinitcpio, you must regenerate the initramfs afterwards. See dracut for more details.

To rebuild the initramfs on Garuda, run sudo dracut-rebuild.

Where are the articles? What are the commands? There is just not enough information for anyone to be able to know if you are on the right track or not.

In general, if there is guidance in the ArchWiki that is going to be one of the most reliable sources available because it is very actively maintained and updated by a relatively large community of very knowledgeable folks. I would say stick with that if you can. If you run into anything you aren’t sure on, open up a support thread with as much detail as possible so the community can take a look and help you figure it out.


Thanks for great response, ill get the articles. Thank you for answering the questions. I guess by commands I ment the VFIo section on the grub line. What is the correct syntax for that. I am on my phone at the moment. I will try the dracut idea as well.

The /etc/mkinitcpio.conf file does not exist. So I am guessing I just create it. And add some lines, the one article I had acted like it should already be there and I just add to it.

Thanks again, I am building my own notes as I get this back to where I had it. It worked so well. I plan on sharing it if I get all the syntax right here someday.

The reason you are seeing different values in the examples you are reading through is they are only examples–that is, you shouldn’t be using these device IDs in your configuration, you should be using the device IDs that belong to your devices. See here:

Binding vfio-pci via device ID

Vfio-pci normally targets PCI devices by ID, meaning you only need to specify the IDs of the devices you intend to passthrough. For the following IOMMU group, you would want to bind vfio-pci with 10de:13c2 and 10de:0fbb, which will be used as example values for the rest of this section.

IOMMU Group 13: 
     06:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1) 
     06:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)}}

All the kernel parameters you are seeing are only meant to be examples, not values suitable for copy/pasting into your own setup.

To find the PCI device IDs for your own stuff, you can run:

lspci -nn

The device IDs are in brackets at the end of each line.

Garuda does not use mkinitcpio anymore. Dracut is used instead of mkinitcpio (they both do the same thing). Check out the article here: Dracut | Garuda Linux wiki

The ArchWiki article is not listing out a bunch of steps that all need to be completed–rather, several different possibilities for that one step are shown, and it is up to the user to decide which method they will choose. See here:

Then it shows an option for that first method (modprobe configuration) in section 3.2.1, and lists out three options for the second method (adding modules to initramfs) in section 3.2.2. The three options described are: mkinitcpio, booster, and dracut. These three choices all do the same thing; only one should be chosen.

All that to say: don’t set up a /etc/mkinitcpio.conf file unless you want to completely switch off of using dracut altogether, and configure your system to use mkinitcpio instead. If you add modules to an /etc/mkinitcpio.conf file but build your initramfs with dracut, the modules won’t be included.


The biggest challenge to get started is to understand all the moving parts, to be able to put things into context and figure out the larger picture to understand the language.

The biggest issues you'll face will probably be hardware-related, and not OS-related. Each hardware setup may require unique tweaks.

I had to figure out a lot of things myself and wrote this guide, not covering the basics but many extra steps missing from those guides.

I divided the process in multiple independent steps because each step brought their own issues. First I setup static binding, just get it to work. Then I set it up with dynamic binding (with dual-graphics laptop). Then once all that is working, performance tweaks. Separating that in smaller projects will make it easier to debug.

If you have a dedicated GPU for passthrough alone, then it's simpler, especially if it's AMD. But as others have noted, all the hardware IDs are unique to your system.


Thank you, yes I do have a dedicated nvidia 1050 to pass thru. I have had it working perfectly prior to reinstalling. So I am just trying to get to that point ;-). I am close but missing one needle in the haystack at the moment. When I add my GPU to VIM now it just hangs, never starts and virt-manager crashes. Removie it and it works. I have been here before, just cant recall what I did to fix it. Thank you again I will go readh what you have.

Can you see the log? If not via virt-manager, can start it from command-line and display the log to a text file. I don't know the exact command.

I am alot further along, sorry went to the lakes for a weekend. Iit now list the vifio driver on the nvidia 1050 and I can add it to my Win10 VM. Still getting the Code 43 after a reboot. Works when the driver installs initially until reboot.

Looking in to XML side of the VM, I think I have added all I can find to add to the VM to work around code 43 etc.. Ill give it some love tonight, its all so odd, I did not have this much trouble on the intial setup, when it use to work.


That infamous code 43, I think NVidia removed the artificial restrictions in the latest drivers. You got the latest drivers?

Yeah latest drivers, ended up it just needed to be powered off, meaning my host for some reason. Came back this Sunday and it works upon boot up.

My last two things to figure out is, after a reboot the GPU pass through works great. My only issue now with it is, if I shutdown my windows 10 machine, when I start it again it does not work. I have to reboot the host to the get the GPU again. After each shutdown of my win10 VM, I have do a full reboot if I want to use the VM with GPU again.

Small but irritating thing if windows updates applies it wont work till I restart garuda.

Other than that the 1050 is working well with VFIO at the moment. Thank you so much for the help, it has been greatly appeaciated.

btw I found the VFIO Discord group to be very useful for issues like that

1 Like

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