GithubHelp home page GithubHelp logo

hartl3y94 / quickpassthrough Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hikariknight/quickpassthrough

0.0 0.0 0.0 154 KB

A project to remove the complexity of setting up GPU passthrough for qemu

License: MIT License

Shell 100.00%

quickpassthrough's Introduction

QuickPassthrough

A project to simplify setting up GPU passthrough on your Linux host for QuickEMU(vfio support not developed yet) and libvirt/virt-manager

You can use it by simply running

git clone https://github.com/HikariKnight/quickpassthrough.git
cd quickpassthrough
./vfio-setup

Features

  • General warning and info about what you will be needing
  • Enable and configure vfio modules
  • Configure 2nd GPU for GPU Passthrough
  • Dump the selected GPU rom (as some cards require a romfile for passthrough to work), however no rom patching support planned.
  • Enable and configure the correct kernel modules and load them early (initramfs-tools, dracut and mkinitcpio)
  • Configure kernel arguments for systemd-boot (using kernelstub)
  • Configure kernel arguments for grub2
  • Provides you with the correct kernel arguments to add to your bootloader entry if a supported bootloader is not found

Contributing

I know my bash skills are not great, so help is always welcome! And help is wanted here. If you know bash well, you will be able to help! Just make a pull request to the dev branch with your changes! Just remember to add comments to document the work and explain it for people who are less familiar with the bash syntax or anything else you use. ๐Ÿ˜„

Also if you know English, you can help by just proof reading. English is not my native language, plus I have dyslexia so I often make spelling mistakes. Proof reading is still contribution!

TODO

  • Everything
  • Show general warning to user and inform about making a backup and general expectations
  • Detect if user has an amd or intel CPU and provide the correct IOMMU kernel args based on that
  • Tell user to enable IOMMU (VT-d/AMD-v) on their motherboard and bootloader
  • Integrate ls-iommu and locate graphic cards and see what IOMMU group they are in
  • Enable and configure vfio modules
  • Fetch the ID for the GPUs and generate the correct kernel arguments for grub and systemd-boot
  • Dump the GPU rom, just in case it will be needed for passthrough (no rom patching planned due to complexity)
  • Get help to actually make the scripts better
  • Automatically handle GPUs where parts of it might be in separate IOMMU groups (ex: RX5600XT)
  • A non-hacky menu system? (I will need help by some bash wizards for this)
  • Coloured highlight/text for important information?
  • Install vendor_reset kernel module? (maybe far future, need to detect if user is using a card that needs it, can however mention where to get it)
  • Suggest looking-glass if they are going to run Windows

Why bash?

I wanted the dependencies to be minimal without the need for compilation and to avoid potential breaking changes in the future (like with the transition from python2 to python3).

I know enough bash to make things work, but I am in no way a professional in writing bash scripts as I usually write python and golang.

There is also quite a lot of perl usage as I am quite familiar with the perl regex format over something like sed

quickpassthrough's People

Contributors

hikariknight avatar philclifford avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.