{ "info": { "author": "Andy Lutomirski", "author_email": "luto@amacapital.net", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: POSIX :: Linux" ], "description": "What is virtme?\n===============\n\nVirtme is a set of simple tools to run a virtualized Linux kernel that\nuses the host Linux distribution or a simple rootfs instead of a whole\ndisk image.\n\nVirtme is tiny, easy to use, and makes testing kernel changes quite simple.\n\nSome day this might be useful as a sort of sandbox. Right now it's not\nreally configurable enough for that.\n\nVirtme is hosted at kernel.org in utils/kernel/virtme/virtme.git ([web][korg-web] | [git][korg-git]). It's mirrored [on github][github].\n\n[korg-web]: https://git.kernel.org/cgit/utils/kernel/virtme/virtme.git \"virtme on kernel.org\"\n[korg-git]: git://git.kernel.org/pub/scm/utils/kernel/virtme/virtme.git \"git address\"\n[github]: https://github.com/amluto/virtme\n\nHow to use virtme\n=================\n\nYou'll need a Linux kernel that has these options (built-in or as modules)\n\n CONFIG_VIRTIO\n CONFIG_VIRTIO_PCI\n CONFIG_NET_9P\n CONFIG_NET_9P_VIRTIO\n CONFIG_9P_FS\n\nFor networking support, you also need CONFIG_VIRTIO_NET.\n\nFor script support, you need CONFIG_VIRTIO_CONSOLE.\n\nFor disk support, you need CONFIG_SCSI_VIRTIO.\n\nThat kernel needs to be sane. Your kernel is probably sane, but allmodconfig and allyesconfig generate insane kernels. Sanity includes:\n\n CONFIG_CMDLINE_OVERRIDE=n\n CONFIG_BINFMT_SCRIPT=y\n CONFIG_TMPFS=y\n\nYou may also have better luck if you set:\n\n CONFIG_EMBEDDED=n\n CONFIG_EXPERT=n\n CONFIG_MODULE_SIG_FORCE=n\n CONFIG_DEVTMPFS=y\n\nAn easy, somewhat-reliable way to generate a working config is to append\nthe `prereqs.config` file to your .config and then run `make defconfig`.\n\nYour host system will need to satisfy some prerequisites:\n\n* You need Python 3.3 or higher.\n* QEMU 1.6 or higher is recommended. QEMU 1.4 and 1.5 are partially supported using a rather ugly kludge.\n * You will have a much better experience if KVM is enabled. That means that you should be on bare metal with hardware virtualization (VT-x or SVM) enabled or in a VM that supports nested virtualization. On some Linux distributions, you may need to be a member of the \"kvm\" group. Using VirtualBox or most VPS providers will fall back to emulation.\n* Depending on the options you use, you may need a statically linked `busybox` binary somewhere in your path.\n\nOnce you have such a kernel, run one of:\n\n* virtme-run --kimg PATH_TO_BZIMAGE\n* virtme-run --installed-kernel\n* virtme-run --installed-kernel VERSION\n\nOn x86, you can usually find a bzImage in `arch/x86/boot/bzImage` once you've\ncompiled your kernel.\n\nNote that the --kimg mode does not support modules.\n\nYou can then do things like `cd /home/username` and you will have readonly\naccess to all your files.\n\nVirtme gives you console input and output by default. Type ctrl-a x to exit.\nType ctrl-a c to access the QEMU monitor.\n\nFor now, the virtme console is a serial console -- virtconsole seems to be unusably buggy. I don't know of any way to keep the tty state in sync between the host and guest, so resizing the host window after starting the guest may confuse guest libraries like readline.\n\nGraphics\n========\n\nIf you want graphical output instead of console output, pass --graphics. Note that this is the opposite of QEMU's default behavior.\n\nArchitecture support\n====================\n\nBy default, virtme will use whatever architecture would be shown by `uname -m`. You can override this with `--arch`. Note that you may need to do some poorly documented fiddling for now to get non-native architectures working, and you will almost certainly need to set `--root` to a root that matches the architecture.\n\nx86\n---\n\nx86 (both x86_64 and i386) is fully supported, although some odd KVM configurations may cause problems.\n\nARM\n---\n\nARM is supported using qemu's `versatilepb` machine. This is an unfortunate choice: that's a rather outdated machine, and virtme should be using a different system (`vexpress-a15` or `virt`) that is more modern and does not depend on PCI. There is no built-in KVM support for ARM right now, although it might work by accident -- I don't own a real KVM-capable ARM machine to test it on.\n\nAarch64\n-------\n\nAarch64 works out of the box if you have a new enough version of QEMU.\n\nPPC64\n-----\n\nPPC64 appears to be reasonably functional.\n\nOthers\n------\n\nOther architectures may or may not work. Adding support is trivial, so ping me if you need another architecture. Unrecognized architectures use a set of maybe-acceptable defaults.\n\nUpcoming features\n=================\n\nIn the near term, the high-priority features are:\n\n* Support for modular virtfs and 9p for non-installed kernels.\n* Some way to configure writable mounts.\n* A clean way to run a script in the guest for testing.", "description_content_type": null, "docs_url": null, "download_url": "https://www.kernel.org/pub/linux/utils/kernel/virtme/releases/virtme-0.0.1.tar.xz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://git.kernel.org/cgit/utils/kernel/virtme/virtme.git", "keywords": null, "license": "GPLv2", "maintainer": null, "maintainer_email": null, "name": "virtme", "package_url": "https://pypi.org/project/virtme/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/virtme/", "project_urls": { "Download": "https://www.kernel.org/pub/linux/utils/kernel/virtme/releases/virtme-0.0.1.tar.xz", "Homepage": "https://git.kernel.org/cgit/utils/kernel/virtme/virtme.git" }, "release_url": "https://pypi.org/project/virtme/0.0.1/", "requires_dist": null, "requires_python": null, "summary": "Virtualize the running distro or a simple rootfs", "version": "0.0.1" }, "last_serial": 1219739, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "aa932a80e5e3c1a5d0544b334882b9f1", "sha256": "ef3dc92e782901f6416ddc8830c791353887ab4d9377d3e09fd0b5548465bed7" }, "downloads": -1, "filename": "virtme-0.0.1.tar.gz", "has_sig": false, "md5_digest": "aa932a80e5e3c1a5d0544b334882b9f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24644, "upload_time": "2014-09-10T18:05:28", "url": "https://files.pythonhosted.org/packages/a3/a6/83dfe4e387075387f029dd471ce922149303846cb9ce001689055ea68d00/virtme-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aa932a80e5e3c1a5d0544b334882b9f1", "sha256": "ef3dc92e782901f6416ddc8830c791353887ab4d9377d3e09fd0b5548465bed7" }, "downloads": -1, "filename": "virtme-0.0.1.tar.gz", "has_sig": false, "md5_digest": "aa932a80e5e3c1a5d0544b334882b9f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24644, "upload_time": "2014-09-10T18:05:28", "url": "https://files.pythonhosted.org/packages/a3/a6/83dfe4e387075387f029dd471ce922149303846cb9ce001689055ea68d00/virtme-0.0.1.tar.gz" } ] }