Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP further updates to the QEMU driver. #10035

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

WIP further updates to the QEMU driver. #10035

wants to merge 1 commit into from

Conversation

angrycub
Copy link
Contributor

Looking for someone to take over this work. Please reach out to me if interested.

Current PR Efforts

Support ports list

Implementing the group level network stanza support also requires that we support mapping the ports into the VMs using the same ports list that the Docker driver does.

Current Status: There are some cases where the selected IP used in the forwarding rules is incorrect. (This is last I recall. I had to shelve this for a while and I am uncertain if this was a thing that I was able to sort out before that.)

Create VNC stanza

The new VNC stanza will enable a user to configure the VNC display driver such that properly configured VMs would be accessible either by a sidecar VNC server/proxy or forwarded to the client.

Allow virtual NIC type to be selected

Certain VMs require the use of specific virtual NICs. This PR creates the configuration elements necessary to pass in an alternative NIC.

Begin support for non-x86-64 emulation

Being able to use alternative system binaries really opens up the possibilities provided by the QEMU driver; however, it's not quite as simple as just making the binary name configurable.

  • Provided values that use non-default emulators will need to wipe out the bulk of the provided defaults, since they were built for qemu-system-x86_64 and there is no guarantee that they are valid for the requested emulator.

  • Ideally, there would be a fingerprinting mechanism for the system binaries, so that nodes that do not contain the proper binaries are already determined to be infeasible.

- Support ports list
- Create VNC stanza
- Allow virtual NIC type to be selected
- Begin support for non-x86-64 emulation
@tgross tgross linked an issue Feb 16, 2021 that may be closed by this pull request
Base automatically changed from master to main March 8, 2021 19:25
@davemay99
Copy link
Contributor

@angrycub It looks like your changes to support non-x86-64 emulation may help with some of the issues @onlyjob and @lanefu encountered in #4684. Is anybody interested in picking back up on this?

@lanefu
Copy link

lanefu commented Mar 31, 2021

Ooh this is exciting.... i'm 10000 terrible at golang, but I can help with testing...

Naturally i'm mostly concerned about just getting native arm support.. but emulation is great too....

@davemay99 @angrycub In your opinions, what's the MVP-level amount of work needed to revise and get merged... even if that means remove some functionality for now.

@tgross
Copy link
Member

tgross commented Mar 31, 2021

@lanefu this is on our roadmap but not scheduled for a release. @angrycub posted the PR because he had some of the work done but we haven't assigned the resources to bring it home yet. We'd of course be happy to review contributions to this PR if you feel like picking it up.

@lanefu
Copy link

lanefu commented Mar 31, 2021

@tgross k trying to understand what's needed.. little new to this..

Should I try to cross-reference requirements defined in roadmap to this PR in order what's needed? Any other resources you can recommend?

@tgross
Copy link
Member

tgross commented Mar 31, 2021

The list of open qemu issues will be the place to look for any more details on this work. It'd probably be better to get anything you contribute on those features as entirely separate PRs.

@hashicorp-cla
Copy link

hashicorp-cla commented Mar 12, 2022

CLA assistant check
All committers have signed the CLA.

@phreakocious
Copy link
Contributor

phreakocious commented Apr 28, 2022

@angrycub - I have been looking through this a bit. Is it just the details around multiple architectures that needs to be wrapped up? Does the fingerprinting system provide enough flexibility to register the presence of the various qemu-system-$ARCH binaries (there are at least 30)? Fixing up the -machine command line option may be as simple as making it optionally configurable. Was there more that I'm not seeing?

@mvgijssel
Copy link

Sorry for the scope creep, but would it maybe be possible to enable volume_mounts using 9p in the Qemu driver as well? More context #10053 (comment)

@phreakocious
Copy link
Contributor

@angrycub - Any thoughts on the questions above? Thanks!

@XVilka
Copy link

XVilka commented Jul 15, 2022

I could try to help on this, as we need it to orchestrate multiple QEMU instances for different architectures. Is there any list of things missing today from already mentioned QEMU bugs?

@tgross tgross added the stage/needs-rebase This PR needs to be rebased on main before it can be backported to pick up new BPA workflows label May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stage/needs-rebase This PR needs to be rebased on main before it can be backported to pick up new BPA workflows theme/driver/qemu type/enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Qemu Ports Not Mapping
8 participants