Code: Difference between revisions

From KVM
(Remove completely outdated information about building the external module etc.)
 
(25 intermediate revisions by 14 users not shown)
Line 1: Line 1:
[[Category:Architechture]]
=Code=
 
== kernel git tree ==
== kernel git tree ==
The kvm kernel code is available through a git tree.  To create a repository using git, type


  git clone git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git
The kvm kernel code is available through a git tree (like the kernel itself).  To create a repository using git, type
 
  git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git


Alternatively, it is also accessible through the kernel.org gitweb interface:               
Alternatively, it is also accessible through the kernel.org gitweb interface:               
[http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git;a=summary]
[http://git.kernel.org/?p=virt/kvm/kvm.git;a=summary]


For subsequent upgrades use the command
For subsequent upgrades use the command
                                        
                                        
  git-pull
  git pull
in the git working dir.


== userspace git tree ==
in the git working directory.
The kvm userspace code (libkvm and qemu) is available through a git tree. To create a repository using git, type
                                                                                     
git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-userspace.git


Alternatively, it is also accessible through the kernel.org gitweb interface:       
== kernel git workflow ==
[http://git.kernel.org/?p=virt/kvm/kvm-userspace.git;a=summary]


== linux guest drivers kit ==
See [[Kvm-Git-Workflow]]
This kit converts a virtio-capable kernel into a package that can generate linux guest drivers for older kernels.                                                                                               


git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-guest-drivers-linux.git
== userspace git tree ==


The corresponding kernel tree can found in the <code>virtio</code> branch of <code>kvm.git</code>.
As of QEMU 1.3, the KVM userspace code is in mainline QEMU. Please use and develop with


== building an external module with older kernels ==
git clone https://gitlab.com/qemu-project/qemu.git


'''This only works for the x86 architecture.'''
'''If you want to contribute code''', please see the [http://wiki.qemu.org/Contribute guidelines] and submit patches to qemu-devel@nongnu.org.


* If you wish to use a distribution kernel (or just some random kernel you like) with kvm,
If you are interested in the history of KVM in the QEMU codebase, the old qemu-kvm.git fork repository is still available (but completely outdated nowadays):
you can get both the userspace and kernel (via git).  In the userspace                 
                                                                                     
toplevel directory, type:
  git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git
                                                                                       
  ./configure [--kerneldir=/path/to/kernel/dir]


* If you are using a released kvm-XX.tar.gz, skip to step 3. If you got the source from git, you need to run the following commands:
Alternatively, it is also accessible through the kernel.org gitweb interface:        
 
[http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=summary]
cd kernel
make sync LINUX=/path/to/kvm/git/tree
cd ..
 
* Finally, build KVM and the KVM modules:
 
make
 
 
There are three important directories in this scenario:
{|
! kvm-userspace
| Contains a <code>kernel</code> subdirectory. If you got the source from git, it needs to be populated with files from the kvm.git repository (using <code>make sync</code>).
|-
! host kernel tree
| Older kernel you want to use newer KVM modules with. Refer to it with <code>configure --kerneldir</code>.
You need to point to a '''configured''' kernel source tree corresponding to the kernel you are building modules for. The default is to look for the sources of the running kernel at <code>/lib/modules/`uname -r`/build</code>.
|-
! kvm kernel tree (from git)
| A clone of the kvm.git repository. Used as the source of the KVM modules. Refer to it with <code>LINUX=path</code> in <code>make sync</code>.
|}
 
== release tags ==
 
kvm releases are tagged with <code>kvm-nn</code> where ''nn'' is the release number.
 
== Binary Packages ==
=== CentOS / RHEL ===
 
Unofficial packages of latest releases can be found at
http://www.lfarkas.org/linux/packages/centos/5/
 
== nightly snapshots ==


Nightly snapshots, for those who are uncomfortable with git, are [http://people.qumranet.com/avi/snapshots available].  When reporting a problem with a snapshot, please quote the snapshot name (which includes the date) and the contents of the SOURCES file in the snapshot tarball.
[[Category:Docs]][[Category:HowTo]]

Latest revision as of 03:16, 3 August 2023

Code

kernel git tree

The kvm kernel code is available through a git tree (like the kernel itself). To create a repository using git, type

git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git

Alternatively, it is also accessible through the kernel.org gitweb interface: [1]

For subsequent upgrades use the command

git pull

in the git working directory.

kernel git workflow

See Kvm-Git-Workflow

userspace git tree

As of QEMU 1.3, the KVM userspace code is in mainline QEMU. Please use and develop with

git clone https://gitlab.com/qemu-project/qemu.git

If you want to contribute code, please see the guidelines and submit patches to qemu-devel@nongnu.org.

If you are interested in the history of KVM in the QEMU codebase, the old qemu-kvm.git fork repository is still available (but completely outdated nowadays):

git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git

Alternatively, it is also accessible through the kernel.org gitweb interface: [2]