https://wiki.qemu.org/api.php?action=feedcontributions&user=Iggy&feedformat=atomQEMU - User contributions [en]2024-03-29T08:01:05ZUser contributionsMediaWiki 1.39.1https://wiki.qemu.org/index.php?title=User:Iggy&diff=4414User:Iggy2014-10-27T17:18:07Z<p>Iggy: "obfuscate" my email... it's got to be increasing my spam</p>
<hr />
<div>== About ==<br />
<br />
IRC Tech Support and occasional contributor.<br />
<br />
email: iggy[shift+2]theiggy.com<br />
<br />
IRC nick: iggy<br />
<br />
IRC networks: OFTC, Freenode</div>Iggyhttps://wiki.qemu.org/index.php?title=Features/KVM&diff=3379Features/KVM2013-02-17T18:42:50Z<p>Iggy: change status of KVM to merged upstream</p>
<hr />
<div>'''KVM''' (Kernel Virtual Machine) is a Linux kernel module that allows a user space program to utilize the hardware virtualization features of various processors. Today, it supports recent Intel and AMD processors (x86 and x86_64), PPC 440, PPC 970, S/390, and ARM (Cortex A15) processors.<br />
<br />
QEMU can make use of KVM when running a target architecture that is the same as the host architecture. For instance, when running ''qemu-system-x86'' on an x86 compatible processor, you can take advantage of the KVM acceleration - giving you benefit for your host and your guest system.<br />
<br />
== qemu-kvm fork for x86 (deprecated, use upstream QEMU now) ==<br />
The KVM project is maintaining a fork of QEMU called qemu-kvm. Currently (close to the 1.1 release) it still provides the best performance and certain additional features for using KVM with QEMU on x86. Any other architecture is already fully supported by QEMU itself. The goal is to merge all remaining feature differences into QEMU upstream, provide a migration path from qemu-kvm and suspend the development of this fork. The status of this work is:<br />
<br />
=== QEMU 1.1 ===<br />
* support for in-kernel irqchips, not enabled by default, use <tt>-machine accel=kvm,kernel_irqchip=on</tt> to activate it<br />
* no support of MSI with in-kernel irqchip (will be disabled for all device when the in-kernel irqchip is enabled)<br />
* no PCI device assignment<br />
<br />
=== QEMU 1.2 (planned) ===<br />
* full support for MSI with in-kernel irqchip, including fast MSI injection for vhost-net<br />
* PCI device assignment using KVM kernel interfaces (VFIO-based assignment will follow)<br />
* resolve differences in VGA BIOS and resolution<br />
<br />
=== QEMU 1.3 ===<br />
* as of the 1.3 release all qemu-kvm features have been merged into upstream QEMU<br />
<br />
=== Broken features in qemu-kvm ===<br />
* CPU hot-plugging, used to work via monitor command <tt>cpu_set</tt>, will be added to upstream via hot-plugging of CPUs as a devices (monitor commands <tt>device_add/del</tt>)<br />
<br />
=== Remaining differences ===<br />
* historic command line switches<br />
** <tt>-no-kvm</tt> (use <tt>-machine accel=...</tt>)<br />
** <tt>-no-kvm-irqchip</tt> (use <tt>-machine kernel_irqchip=...</tt>)<br />
** <tt>-no-kvm-pit</tt> (ignored by recent qemu-kvm, switch off irchip completely)<br />
** <tt>-no-kvm-pit-reinjection</tt> (use <tt>-global kvm-pit.lost_tick_policy=discard</tt>)<br />
** <tt>-tdf</tt> (ignored by recent qemu-kvm, drift compensation for userspace timer devices will be re-introduced generically)<br />
** <tt>-drive ...,boot=on</tt> (BIOS can boot from IDE, AHCI and virtio natively, use proprietary option ROM to boot from LSI SCSI controller)<br />
* testdev (helper device to test QEMU/KVM internals)<br />
<br />
== Links ==<br />
* [http://www.linux-kvm.org KVM Wiki]<br />
* Avi Kivity's [http://git.kernel.org/?p=virt/kvm/qemu-kvm.git QEMU KVM repository]</div>Iggyhttps://wiki.qemu.org/index.php?title=User:Iggy&diff=2805User:Iggy2012-03-07T17:28:50Z<p>Iggy: Created</p>
<hr />
<div>== About ==<br />
<br />
IRC Tech Support and occasional contributor.<br />
<br />
email: iggy@theiggy.com<br />
<br />
IRC nick: iggy<br />
<br />
IRC networks: OFTC, Freenode</div>Iggyhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2804Google Summer of Code 20122012-03-07T17:26:36Z<p>Iggy: Updated user info</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
'''Details:'''<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Iggy|Brian Jackson (Iggy)]], [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Iggy|Brian Jackson (Iggy)]]<br />
<br />
== In-process NBD server ==<br />
<br />
'''Summary:''' Integrate qemu-nbd server functionality into qemu so disk images can be accessed remotely while the VM is running<br />
<br />
The qemu-nbd utility is a stand-alone Network Block Device server which exports disk images (qcow2, qed, vmdk, etc). Linux has an NBD driver, this makes it possible to attach NBD devices like iSCSI or ATA-over-Ethernet volumes and operate on them like local block devices using mkfs, mount, and other common tools.<br />
<br />
It is not safe to run qemu-nbd while the VM is running because the disk image could be corrupted by simultaneous updates or read access could give inconsistent results. The goal of this project is to make the qemu-nbd functionality available for a running VM by integrating it into qemu proper.<br />
<br />
New QEMU monitor commands must be added to allow disk images to be exported from inside qemu while the VM is running. For safety the in-process NBD server would only allow read access. It should be possible to export not just top-level image files but also backing files.<br />
<br />
This new feature will enable online backup, data migration, and other interesting scenarios.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Network_block_device<br />
* http://blog.vmsplice.net/2011/02/how-to-access-virtual-machine-image.html<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi<br />
<br />
== Partial device emulation in KVM ==<br />
<br />
'''Summary:''' Add support for and benchmark partial device emulation in KVM<br />
<br />
When using KVM, almost all device emulation is done in user space (QEMU). While this is really nice from an architecture point of view, it's not the greatest thing when it comes to latencies. Some devices like IDE, VGA, HPET have very hot path registers that can be easily emulated in the kernel (KVM), with all heavier operations going to user space.<br />
<br />
This project is about prototyping such partial device emulation to see if it actually does give us speedups. If you manage to show great performance improvements with it, we would then work on finding clean solutions to integrate this upstream and also push it upstream.<br />
<br />
With a bit of luck, we might end up getting significant speedups to KVM!<br />
<br />
<br />
Mid-term goal: Implement prototype for one of the 3 mentioned devices, do benchmarks<br />
<br />
Final goal: If the prototype was successful, work on upstreaming it, if not, pick another device and implement a prototype for that<br />
<br />
<br />
'''Links:'''<br />
* [http://suif.stanford.edu/~csapuntz/ide.html IDE specs]<br />
* [ftp://ftp.sas.ewi.utwente.nl/Outgoing/TM_2300_4000_4500/Manuals/Specification/Hpet/Intel_HPET_Specification.pdf HPET spec]<br />
* [http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf VGA spec]<br />
<br />
'''Details:'''<br />
* Component: QEMU, KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]<br />
<br />
== IA64 emulation ==<br />
<br />
'''Summary:''' Add support for IA64 system emulation in QEMU<br />
<br />
The KVM project had a working IA64 port that was able to run a virtualized system with KVM and QEMU as it was back in those times. If we take the hardware emulation from that and add CPU emulation to the mix, we should get a workable solution for IA64 emulation.<br />
<br />
Because most applicants won't own their own IA64 box, I will provide access to one so that we can rule out the CPU emulation bits of the equation and focus on getting the device model working well enough to at least run the firmware as a first target milestone. CPU emulation comes second.<br />
<br />
Mid-term goal: Make (current) QEMU work on IA64 with KVM<br />
<br />
Final goal: Implement CPU emulation to a point where TianoCore works<br />
<br />
<br />
'''Links:'''<br />
* [http://qemu.mercurysquad.com/ Last year's attempt at IA64 emulation]<br />
* [http://www.mjmwired.net/kernel/Documentation/ia64/kvm.txt KVM help text in the kernel for IA64]<br />
* [http://www.linux-kvm.org/wiki/images/1/12/KvmForum2007$KVM-IA64_forum_083107.pdf Talk on IA64 KVM]<br />
* [http://ski.sourceforge.net/ SKI - a working IA64 emulator]<br />
* [http://tianocore.sourceforge.net/ TianoCore - the open source EFI firmware]<br />
* [http://lists.xen.org/archives/html/xen-ia64-devel/ Xen IA64 ML]<br />
* [http://pdub.net/proj/usenix08boston/xen_drive/resources/xensummit/slides/Xenia64_HP_DMagenheimer.pdf Talk on IA64 Xen]<br />
<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate/advanced<br />
* Language: C, IA64 asm<br />
* Mentor: [[User:Agraf|Alexander Graf]], Jakub Jermar<br />
* Suggested by: Jakub Jermar<br />
<br />
== Live migration with new GET_DIRTY_LOG ==<br />
<br />
'''Summary:''' Improve QEMU's live migration with a new GET_DIRTY_LOG which makes dirty page logging more flexible.<br />
<br />
Dirty page logging is a technique used for tracking modified guest memory during live migration or VGA emulation. KVM has an API, called GET_DIRTY_LOG, which can be used for this: the caller gets the logged information in a bitmap that indicates which pages have become dirty since the last call.<br />
<br />
One problem we are facing about this is that this API needs to hold a lock, which is needed to do some mmu related work, too long if a lot of guest pages are dirty and this may cause noticeable latency in the guest.<br />
<br />
A new API being proposed now can limit the range of memory from which we take the log information and thus makes it possible to control the latency by not trying to handle too many pages at once.<br />
<br />
Note: this is not a simple task that you can do by simply following my instructions. Actually I am not 100 percent sure whether this approach will work well because I have not used the new API yet. So applicants need to understand QEMU's live migration correctly by themselves and think whether this proposal can be achieved in 12 weeks before applying for this.<br />
<br />
I am offline from March 23 to March 28.<br />
<br />
'''Links:'''<br />
* [http://www.spinics.net/lists/kvm/msg66976.html dirty-log-perf test in kvm-unit-tests]<br />
* [http://www.spinics.net/lists/kvm/msg68916.html GET_DIRTY_LOG development using dirty-log-perf]<br />
* [http://lkml.org/lkml/2010/5/4/115 Attempt to implement new GET_DIRTY_LOG API]<br />
* [http://lkml.org/lkml/2012/2/2/236 Next generation kvm api being proposed now]<br />
<br />
'''Details:'''<br />
* Component: KVM, kvm-unit-tests, QEMU<br />
* Skill level: intermediate/advanced<br />
* Language: C, C++<br />
* Mentor: Takuya Yoshikawa <takuya.yoshikawa__AT__gmail.com><br />
* Suggested by: Takuya Yoshikawa<br />
<br />
== Tegra2 emulation ==<br />
<br />
'''Summary:''' Emulate the Nvidia Tegra2 SoC sufficiently for Linux to boot.<br />
<br />
QEMU can already emulate ARM Cortex-A9 cores. What's missing is Tegra-specific devices (like framebuffer), glueing them together to a [[Features/QOM|QOM]] System-on-Chip object and some machine function that instantiates this SoC (e.g., Toshiba AC100). This may involve some reading of Linux/U-Boot/etc. source code and/or debugging in QEMU what memory addresses the binaries are trying to access and what devices that corresponds to.<br />
<br />
Ubuntu and openSUSE have Linux images for the AC100 that could be used for testing.<br />
<br />
'''Links:'''<br />
* [http://developer.nvidia.com/tegra-resources NVIDIA Developer Zone Tegra resources]<br />
* [http://git.denx.de/?p=u-boot/u-boot-tegra.git;a=summary u-boot-tegra.git]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree;f=arch/arm/mach-tegra linux.git arch/arm/mach-tegra]<br />
* [https://wiki.ubuntu.com/ARM/TEGRA/AC100 Ubuntu AC100 port Wiki]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: advanced<br />
* Language: C, possibly ARM assembler<br />
* Mentor: Andreas Färber <afaerber@suse.de> (IRC: afaerber)<br />
* Suggested by: Andreas Färber<br />
<br />
== Tracepoint support for the gdbstub ==<br />
<br />
'''Summary:''' Implement basic gdb tracepoint support in the gdbstub for x86 targets.<br />
<br />
Recent gdb versions allow to define ad-hoc tracepoints that are able to record memory content or register states whenever the target code hits them. This is supposed to happen non-intrusively, while the target is executing (almost) as normal. QEMU could serve as a nice backend for gdb when it comes to using such dynamic tracepoints for (guest) kernel debugging. In contrast to approaches like [http://code.google.com/p/kgtp kgtp] running inside the guest kernel, QEMU is able to perform this in hypervisor context, at most requiring to insert breakpoints into guest visible memory.<br />
<br />
In this project, the QEMU gdbstub shall be extended with support for tracepoints. Architecture specific parts shall at least support x86 guests. Tracepoints shall be usable both in emulation and KVM mode. Extending the KVM kernel services to accelerate tracepoints is not required in this first step.<br />
<br />
'''Links:'''<br />
* [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html gdb documentation]<br />
* [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoint-Packets.html gdb remote protocol]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Rework user space TCP/IP stack ==<br />
<br />
'''Summary:''' Modernize and document QEMU's user space TCP/IP stack Slirp.<br />
<br />
One of the most disliked QEMU subsystems is its user space networking stack. It allows to create zero-config unprivileged guest networks that are automatically confined to the privileges of the user who starts the virtual machine.<br />
<br />
The stack is derived from the Slirp project but has been extended and fixed in various ways over the years. Still, it doesn't comply to QEMU's coding style and comes with various code obfuscations, mostly once introduced to keep the delta to the original project small. But as the source project is dead by now and QEMU's version evolved significantly, a rework of the stack is appropriate and more than overdue.<br />
<br />
The goal of this project is to perform a careful step-wise rework of QEMU's Slirp. It shall be backed by regression tests and maintain the bisectability for each change, i.e. each step can be built and executed, and none breaks available tests. The following aspects shall be addressed in this project:<br />
* create regression test suite, consisting e.g. of unit tests and KVM autotest extensions<br />
* identify and remove dead code /wrt QEMU usage<br />
* refactor and document packet queues<br />
* refactor timer handling, converting it from polling to a truly time-driven scheme<br />
* adjust source files to QEMU coding style<br />
* document basic principles and typical control flows of the Slirp stack<br />
<br />
'''Links:'''<br />
* [http://git.qemu.org/?p=qemu.git;a=tree;f=slirp Slirp subsystem in QEMU]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de></div>Iggyhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2734Google Summer of Code 20122012-02-10T21:41:04Z<p>Iggy: </p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy/agraf__<br />
* Suggested by: iggy</div>Iggyhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2733Google Summer of Code 20122012-02-10T21:40:04Z<p>Iggy: Project: Finish OS X Virtualization Support</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy/agraf__<br />
* Suggested by: iggy</div>Iggyhttps://wiki.qemu.org/index.php?title=Links&diff=692Links2010-12-09T20:13:09Z<p>Iggy: Changed IRC channel location</p>
<hr />
<div>'''Development'''<br />
*[http://savannah.gnu.org/projects/qemu Savannah project page]<br />
*[http://patchwork.ozlabs.org/project/qemu-devel/list/ QEMU patches] from the mailing list<br />
*IRC channel: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
<br />
'''Unofficial QEMU binaries'''<br />
* [http://www.h7.dion.ne.jp/~qemu-win/ QEMU on Windows] provides precompiled QEMU versions (< 0.9.0) for Windows.<br />
* [http://homepage3.nifty.com/takeda-toshiya/ TAKEDA Toshiya] provides precompiled QEMU versions (> 0.9.1) for Windows.<br />
* [http://atrpms.net/name/kqemu/ RPMs for Fedora and RHEL]<br />
* [http://www.slackware.com/~alien/slackbuilds/qemu/ Slackware packages]<br />
<br />
'''Alternate QEMU repositories'''<br />
*[http://svn.openmoko.org/trunk/src/host/qemu-neo1973/ Openmoko (Neo1973) target]<br />
*[http://www.opensolaris.org/os/project/qemu/ OpenSolaris support]<br />
*[http://repo.or.cz/w/qemu/malc.git Malc's GIT repository] including audio improvements, an x86 interpreter (useful for MSDOS demos heavily using self modifying code), full A/V capture<br />
*[http://repo.or.cz/w/qemu/ar7.git/ AR7 routers, TCG interpreter] (maintained by [[User:Stefan_Weil|Stefan Weil]])<br />
*[http://svn.kju-app.org/ Q repository] (Mac OS X port)<br />
*[http://homepage.ntlworld.com/wholehog/stuart/qemu/z80.html Z80 target]<br />
*[http://hppaqemu.sourceforge.net/ PA-RISC target]<br />
*[http://dev.openbossa.org/trac/mamona/ Mamona project]<br />
*[http://meego.gitorious.org/qemu-maemo/qemu MeeGo QEMU]<br />
<br />
'''GUI Front Ends'''<br />
*[http://sourceforge.net/projects/aqemu/ AQEMU] GUI for QEMU and KVM (Linux), [http://qemu-buch.de/d/Managementtools/_AQEMU documentation (German)]<br />
*[http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows#Qemu-Manager_f.C3.BCr_Windows Qemu Manager for Windows (and Wine)]<br />
*[http://www.kju-app.org/ Q is a Mac OS X port] of QEMU 0.9.1 with a nice GUI<br />
*[http://qemoon.org QEMoon], a QEMU gui frontend for Linux and Windows in Java using the Eclipse framework<br />
*[http://qemudo.sourceforge.net/ qemudo], QEMU Web Interface<br />
*[http://qtemu.org/ QtEmu], a graphical user interface for QEMU written in Qt4 for Linux and Windows<br />
* [http://www.davereyn.co.uk/ QEMU Manager] on Windows by Dave Reynolds.<br />
<br />
'''Other management tools/systems'''<br />
*[http://libvirt.org libvirt] provides an API for managing QEMU/KVM (and other hypervisors) exposed in C, Perl, Python, OCaml, Ruby, and Java, with bridges to AMQP/QMF and DMTF CIM.<br />
*[http://virt-manager.org virt-install, virt-clone, virt-convert] a set of command line tools for provisioning new VMs from install media, existing VMs and appliances, respectively. See also 'virsh' command line shell with libvirt.<br />
*[http://virt-manager.org virt-manager], Virtual Machine Manager. A graphical desktop management app using [http://libvirt.org/ libvirt]. Can manage a single local host, or securely multiple remote hosts. Support QEMU, KVM, Xen and more<br />
* [http://code.google.com/p/ganeti/ Ganeti], a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other Open Source software.<br />
<br />
'''BIOSes and firmware used by QEMU'''<br />
*The PC BIOS from the [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*The [http://www.nongnu.org/vgabios LGPL VGA BIOS project]<br />
*The [http://openbios.info/Welcome_to_OpenBIOS OpenBIOS] project, an open source Open Firmware implementation<br />
*The [http://perso.magic.fr/l_indien/OpenHackWare/index.htm OpenHackWare] Open Firmware implementation<br />
*[http://www.etherboot.org/ Etherboot images] from [http://rom-o-matic.net/ ROM-o-matic]<br />
*The EFI BIOS comes from the [http://www.tianocore.org/ TianoCore Project]. The QEMU port is available [http://xenbits.xensource.com/ext/efi-vfirmware.hg here]<br />
<br />
'''Projects using the QEMU code'''<br />
*The [http://www.xen.org Xen] virtual machine monitor<br />
*[http://www.linux-kvm.org KVM], Kernel-based Virtual Machine for Linux<br />
*[http://www.virtualbox.org/ VirtualBox], an open source x86 virtualizer.<br />
*[http://www.serialice.com/ SerialICE], a system software debugger<br />
<br />
'''External Documentation'''<br />
*Book "''qemu-kvm & libvirt''", 4. Edition 2010, [http://qemu-buch.de/english/order.php ISBN 978-3-8370-0876-0], http://qemu-buch.de<br />
*[http://qemu-buch.de/cgi-bin/moin.cgi/ #qemu the (unofficial) wiki of QEMU]<br />
*Wiki about the [http://www.linux-mips.org/wiki/Qemu QEMU MIPS target]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvminstall/liaaikvminstallstart.htm Quick Start Guide for installing and running KVM]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvmadv/kvmadvstart.htm The Developer's Approach to Installing and Managing KVMs]<br />
*[http://qemu-forum.ipi.fi/ The QEMU forum]<br />
<br />
'''Related Links'''<br />
*[http://free.oszoo.org/ Free Operating System Zoo]: many disk images with free OSes (very old)<br />
*The [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*[http://developer.kde.org/~sewardj/ Valgrind], an open-source memory debugger for x86-GNU/Linux<br />
*[http://www.ptlsim.org/ PTLsim], a cycle accurate x86 microprocessor simulator<br />
*The [http://www.cs.rose-hulman.edu/~donaldlf/em86/index.html EM86 x86 emulator] on Alpha-Linux<br />
*The [http://www.complang.tuwien.ac.at/schani/bintrans/ bintrans] Dynamic Binary Translator<br />
*[http://www.boblycat.org/~malc/minde/ MINDE], an emulator for some old x86 demos<br />
*[http://www.microlib.org/ MicroLib], a simulator for computer architecture research (PowerPC and Alpha simulation)<br />
*[http://www.skyeye.org SkyEye], an ARM simulator<br />
*[http://softgun.sourceforge.net/ Softgun], an ARM simulator<br />
*[http://simh.trailing-edge.com/ SIMH], The Computer History Simulation Project<br />
*The [http://pearpc.sourceforge.net/ PearPC] PowerPC Architecture Emulator (development stalled)</div>Iggyhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2010&diff=185Google Summer of Code 20102010-03-09T16:46:59Z<p>Iggy: Add Mentors section and add myself to it</p>
<hr />
<div>This is a page for collecting ideas to present to Google Summer of Code 2010.<br />
<br />
Ideas by Natalia Portillo:<br />
* Add Macintosh to 68k system emulation.<br />
* Boot Mac OS X (x86 and x86-64) without hacking it.<br />
* Boot Mac OS >= 8.5 on PowerPC system emulation (Toolbox is included with system so no need for Mac's ROM dump)<br />
* Add a more common VGA, like the S3 Trio (more guests have native drivers for that card than for Cirrus GD5446)<br />
* Enhance, update and integrate Acorn Archimedes system emulation (it was available for 0.9.0 or so)<br />
* BeBox system emulation<br />
* NeXT machines system emulation<br />
<br />
Ideas by Cam Macdonell<br />
* Shared memory transport between guest(s) and host.<br />
* Pass through file systems (9p, CIFS)<br />
<br />
<br />
Mentors<br />
* Brian Jackson<br />
** IRC Nick: iggy<br />
** Areas Of Specialty: Jack of all trades<br />
** I'm not a hardcore qemu dev, but I know my way around, I know who knows what, my time is probably less valuable than some of the other devs, and I have the available time to do it</div>Iggy