From: Pekka Enberg <penberg@kernel.org>
To: kvm@vger.kernel.org
Cc: Pekka Enberg <penberg@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Asias He <asias.hejun@gmail.com>,
Cyrill Gorcunov <gorcunov@gmail.com>, Ingo Molnar <mingo@elte.hu>,
Prasad Joshi <prasadjoshi124@gmail.com>,
Sasha Levin <levinsasha928@gmail.com>
Subject: [PATCH] kvm tools: Boot to host /bin/sh via 9p by default
Date: Tue, 9 Aug 2011 18:33:34 +0300 [thread overview]
Message-ID: <1312904014-3538-1-git-send-email-penberg@kernel.org> (raw)
This patch updates 'kvm run' to boot to host filesystem via 9p '/bin/sh' by
default:
$ ./kvm run
# kvm run -k ../../arch/x86/boot/bzImage -m 320 -c 2 --name guest-3462
[ 0.000000] Linux version 3.1.0-rc1+ (penberg@tiger) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #7 SMP PREEMPT Tue Aug 9 16:39:20 EEST 2011
[ 0.000000] Command line: notsc noapic noacpi pci=conf1 reboot=k panic=1 console=ttyS0 earlyprintk=serial init=/bin/sh root=/dev/vda rw root=/dev/root rootflags=rw,trans=virtio,version=9p2000.u rootfstype=9p
[snip]
[ 1.803261] VFS: Mounted root (9p filesystem) on device 0:13.
[ 1.805153] devtmpfs: mounted
[ 1.808353] Freeing unused kernel memory: 924k freed
[ 1.810592] Write protecting the kernel read-only data: 12288k
[ 1.816268] Freeing unused kernel memory: 632k freed
[ 1.826030] Freeing unused kernel memory: 1448k freed
sh: cannot set terminal process group (-1): Inappropriate ioctl for device
sh: no job control in this shell
sh-4.1#
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Asias He <asias.hejun@gmail.com>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Prasad Joshi <prasadjoshi124@gmail.com>
Cc: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
---
tools/kvm/builtin-run.c | 57 +++++-----------------------------------------
1 files changed, 7 insertions(+), 50 deletions(-)
diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c
index fa51850..fa5de27 100644
--- a/tools/kvm/builtin-run.c
+++ b/tools/kvm/builtin-run.c
@@ -447,46 +447,6 @@ static const char *find_vmlinux(void)
return NULL;
}
-static int root_device(char *dev, long *part)
-{
- struct stat st;
-
- if (stat("/", &st) < 0)
- return -1;
-
- *part = minor(st.st_dev);
-
- sprintf(dev, "/dev/block/%u:0", major(st.st_dev));
- if (access(dev, R_OK) < 0)
- return -1;
-
- return 0;
-}
-
-static char *host_image(char *cmd_line, size_t size)
-{
- char *t;
- char device[PATH_MAX];
- long part = 0;
-
- t = malloc(PATH_MAX);
- if (!t)
- return NULL;
-
- /* check for the root file system */
- if (root_device(device, &part) < 0) {
- free(t);
- return NULL;
- }
- strncpy(t, device, PATH_MAX);
- if (!strstr(cmd_line, "root=")) {
- char tmp[PATH_MAX];
- snprintf(tmp, sizeof(tmp), "root=/dev/vda%ld rw ", part);
- strlcat(cmd_line, tmp, size);
- }
- return t;
-}
-
void kvm_run_help(void)
{
usage_with_options(run_usage, options);
@@ -500,7 +460,6 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
unsigned int nr_online_cpus;
int exit_code = 0;
int max_cpus, recommended_cpus;
- char *hi;
int i;
void *ret;
@@ -635,14 +594,14 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
if (kernel_cmdline)
strlcat(real_cmdline, kernel_cmdline, sizeof(real_cmdline));
- hi = NULL;
if (!using_rootfs && !image_filename[0]) {
- hi = host_image(real_cmdline, sizeof(real_cmdline));
- if (hi) {
- image_filename[0] = hi;
- readonly_image[0] = true;
- image_count++;
- }
+ if (virtio_9p__init(kvm, "/", "/dev/root") < 0)
+ die("Unable to initialize virtio 9p");
+
+ using_rootfs = 1;
+
+ if (!strstr(real_cmdline, "init="))
+ strlcat(real_cmdline, " init=/bin/sh ", sizeof(real_cmdline));
}
if (!strstr(real_cmdline, "root="))
@@ -660,8 +619,6 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
virtio_blk__init_all(kvm);
}
- free(hi);
-
printf(" # kvm run -k %s -m %Lu -c %d --name %s\n", kernel_filename, ram_size / 1024 / 1024, nrcpus, guest_name);
if (!kvm__load_kernel(kvm, kernel_filename, initrd_filename,
--
1.7.0.4
next reply other threads:[~2011-08-09 15:33 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-09 15:33 Pekka Enberg [this message]
2011-08-09 15:36 ` [PATCH] kvm tools: Boot to host /bin/sh via 9p by default Pekka Enberg
2011-08-09 15:37 ` Ingo Molnar
2011-08-09 16:59 ` Avi Kivity
2011-08-09 17:33 ` Pekka Enberg
2011-08-09 20:06 ` Sasha Levin
2011-08-09 20:15 ` Pekka Enberg
2011-08-09 20:30 ` Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1312904014-3538-1-git-send-email-penberg@kernel.org \
--to=penberg@kernel.org \
--cc=asias.hejun@gmail.com \
--cc=gorcunov@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=levinsasha928@gmail.com \
--cc=mingo@elte.hu \
--cc=prasadjoshi124@gmail.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.