From c7f1933cab6a4da2f201da741003ba2449c8bbde Mon Sep 17 00:00:00 2001 From: rjones Date: Fri, 20 Mar 2009 16:00:04 +0000 Subject: [PATCH] Added guestfs example. --- examples/.cvsignore | 3 +++ examples/Makefile.am | 4 ++- examples/guestfs-test.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100755 examples/guestfs-test.sh diff --git a/examples/.cvsignore b/examples/.cvsignore index dd87bfc..bef3f0d 100644 --- a/examples/.cvsignore +++ b/examples/.cvsignore @@ -1,5 +1,8 @@ Makefile.in Makefile +guestfs +guestfs-initrd.img +guest-image minimal minimal-initrd.img vmlinuz diff --git a/examples/Makefile.am b/examples/Makefile.am index dae53af..08fb42b 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -18,4 +18,6 @@ # Written by Richard W.M. Jones EXTRA_DIST = \ - README minimal-filesystem.sh + README \ + minimal-filesystem.sh \ + guestfs-test.sh diff --git a/examples/guestfs-test.sh b/examples/guestfs-test.sh new file mode 100755 index 0000000..b45c1f4 --- /dev/null +++ b/examples/guestfs-test.sh @@ -0,0 +1,67 @@ +#!/bin/sh - + +# Before running, make sure 'vmlinuz' in this examples directory is a +# bootable Linux kernel or a symlink to one. You can just use any +# kernel out of the /boot directory for this. +# +# eg: +# cd examples +# ln -s /boot/vmlinuz-NNN vmlinuz +# +# Also make 'guest-image' be a symlink to a virtual machine disk image. + +# This is a realistic example for 'libguestfs', which contains a +# selection of command-line tools, LVM, NTFS and an NFS server. + +if [ $(id -u) -eq 0 ]; then + echo "Don't run this script as root. Read instructions in script first." + exit 1 +fi + +if [ ! -e vmlinuz -o ! -e guest-image ]; then + echo "Read instructions in script first." + exit 1 +fi + +../febootstrap \ + -i bash \ + -i coreutils \ + -i lvm2 \ + -i ntfs-3g \ + -i nfs-utils \ + -i util-linux-ng \ + -i MAKEDEV \ + fedora-10 ./guestfs $1 + +echo -n "Before minimization: "; du -sh guestfs +../febootstrap-minimize --all ./guestfs +echo -n "After minimization: "; du -sh guestfs + +# Create the /init which will scan for and enable all LVM volume groups. + +( cd guestfs && cat > init <<'__EOF__' +#!/bin/sh +PATH=/sbin:/usr/sbin:$PATH +MAKEDEV mem null port zero core full ram tty console fd \ + hda hdb hdc hdd sda sdb sdc sdd loop sd +mount -t proc /proc /proc +mount -t sysfs /sys /sys +mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts +modprobe sata_nv pata_acpi ata_generic +lvm vgscan --ignorelockingfailure +lvm vgchange -ay --ignorelockingfailure +/bin/bash -i +__EOF__ +chmod +x init +) + +# Convert the filesystem to an initrd image. + +../febootstrap-to-initramfs ./guestfs > guestfs-initrd.img + +# Now run qemu to boot this guestfs system. + +qemu-system-$(arch) \ + -m 128 \ + -kernel vmlinuz -initrd guestfs-initrd.img \ + -hda guest-image -boot c -- 1.8.3.1