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

Support for booting more guest operating systems #19

Open
ijc opened this issue May 18, 2016 · 14 comments
Open

Support for booting more guest operating systems #19

ijc opened this issue May 18, 2016 · 14 comments

Comments

@ijc
Copy link
Collaborator

ijc commented May 18, 2016

Linux is the only “first class” operating system supported at the moment. FreeBSD does boot, but requires running the installer and so isn’t as seamless.

UEFI support exists (#10) to add UEFI BIOS support to boot Windows, OpenBSD, or NetBSD, but this requires more testing.

@jpsim
Copy link

jpsim commented May 18, 2016

Is Darwin / OS X as a guest OS completely out of the question here?

@thebsdbox
Copy link

There is a grub2 implementation to allow booting of disk images, however i'm not sure how portable it is.. I also looked for the ability to kernel exec (kexec) into a boot loader instead of a kernel, which is how hyper kit starts virtual machines currently.

@ijc
Copy link
Collaborator Author

ijc commented May 19, 2016

Is Darwin / OS X as a guest OS completely out of the question here?

TL;DR: It would be possible (and very cool), but an awful lot of work ;-)

I wouldn't say completely out of the question, but I'd expect it to be a significant amount of work to add emulations for the minimal set of h/w requirements that OS X would tolerate running on top of. If there were OS X virtio drivers that'd be a much smaller concern, but I don't know if they exist or not.

I'd be particularly concerned about what its minimum demands in terms of a video device were.

In terms of booting AIUI (modern) Apple hardware uses UEFI (or UEFI-like?) firmware so presumably (and I'm speculating wildly here) UEFI (EDK2) via the support added in #10 and stuff like the hackintosh guides would get you a reasonable portion along that path. I'd guess that h/w support would be the larger body of work.

@grehan-freebsd
Copy link

Windows 2008r2 reported to boot under hyperkit: https://twitter.com/jdmulloy/status/733196551015829506

@ijc
Copy link
Collaborator Author

ijc commented May 20, 2016

Indeed, would be interesting to know what the graphics stack used there is, perhaps it is just running headless with VNC or RDP or something.

@grehan-freebsd
Copy link

That's headless with RDP, though bhyve has work in the pipe for native graphics so that may trickle through to xhyve at some point https://twitter.com/nahannisys/status/659517013027454978

@ijc
Copy link
Collaborator Author

ijc commented May 20, 2016

@grehan-freebsd Awesome! We should certainly wait for that to land in bhyve rather than repeating that work over here!

@thebsdbox
Copy link

Is there any plans to merge over the framebuffer/vnc work that has just landed in bhyve? https://lists.freebsd.org/pipermail/freebsd-virtualization/2016-May/004471.html

@ijc
Copy link
Collaborator Author

ijc commented Jun 1, 2016

@thebsdbox the framebuffer/vnc stuff would be great to have, as far as I know nobody is working on that so feel free to pick it up, since it looks to all be on the bhyve userspace side I hope the port should be reasonably easy! I guess we wouldn't want to merge into hyperkit master until it is in FreeBSD HEAD rather than a feature branch, but there no harm in getting a headstart on the port and preparing an initial PR to track the progress to HEAD.

@thebsdbox
Copy link

There will be some fiddly work to pull in all of the missing usb /xhci code from https://github.com/freebsd/freebsd/tree/master/sys/dev/usb, along with again removing all of the vmctx requirement.

@pnasrat
Copy link
Contributor

pnasrat commented Jun 23, 2016

What is the status here. I just got the UEFI shell to boot and it looks like others have got further in this thread.

build/com.docker.hyperkit -A -m 1G -s 0:0,hostbridge -s 31,lpc -l com1,autopty=/tmp/tty -U deadbeef-dead-dead-dead-deaddeafbeef -f bootrom,test/BHYVE_UEFI_20160526.fd,,

If help is still wanted before I dive in to much l suggest a write up design proposal doc. I suspect once a design/scoping is written breaking the work down into individual issues with help-wanted might be an effective way to tackle things in parallel and incrementally work towards.

@rkazak
Copy link

rkazak commented Jun 29, 2016

Sorry for the simplistic question, is the lineage for this - 'bhyve -> xhyve -> hyperkit'

@ijc
Copy link
Collaborator Author

ijc commented Jun 29, 2016

@pnasprat: The scope here is really just:

while not(more oses to try)
    pick an $OS (random, own pet OS, etc)
    while not(that $OS boots and works well with hyperkit)
        fix issues
    done
done

(Or perhaps s/fix issues/report issues/ as anyone contributing prefers).

I don't think we need to get too bogged down with design proposals at this step, lets defer that to specific issues which arise iff it is appropriate for that issue. I expect most to either be minor and easily solvable or to have an obvious path forward.

@rkazak: Yes, that lineage is correct.

@pnasrat
Copy link
Contributor

pnasrat commented Jun 29, 2016

👍 I'm fine for lighter weight - I was just basing this on the documented contributors process. I'll hopefully have sometime next week to look at a few guests.

Related I'm wondering about tools/utils to make eg disk setup/partitioning easier for eg setting up a UEFI boot partition disk and putting images onto particularly on OS X. For some hyperkit users this may not matter too much but I'd love it to be easy for non-os hacker people who just want to get an OS running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants