rcutorture: Add KVM-based test framework
This commit adds the test framework that I used to test RCU under KVM. This consists of a group of scripts and Kconfig fragments. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Greg KH <gregkh@linuxfoundation.org>
这个提交包含在:
@@ -0,0 +1,90 @@
|
||||
This document describes one way to create the initrd directory hierarchy
|
||||
in order to allow an initrd to be built into your kernel. The trick
|
||||
here is to steal the initrd file used on your Linux laptop, Ubuntu in
|
||||
this case. There are probably much better ways of doing this.
|
||||
|
||||
That said, here are the commands:
|
||||
|
||||
------------------------------------------------------------------------
|
||||
zcat /initrd.img > /tmp/initrd.img.zcat
|
||||
mkdir initrd
|
||||
cd initrd
|
||||
cpio -id < /tmp/initrd.img.zcat
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Interestingly enough, if you are running rcutorture, you don't really
|
||||
need userspace in many cases. Running without userspace has the
|
||||
advantage of allowing you to test your kernel independently of the
|
||||
distro in place, the root-filesystem layout, and so on. To make this
|
||||
happen, put the following script in the initrd's tree's "/init" file,
|
||||
with 0755 mode.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
#!/bin/sh
|
||||
|
||||
[ -d /dev ] || mkdir -m 0755 /dev
|
||||
[ -d /root ] || mkdir -m 0700 /root
|
||||
[ -d /sys ] || mkdir /sys
|
||||
[ -d /proc ] || mkdir /proc
|
||||
[ -d /tmp ] || mkdir /tmp
|
||||
mkdir -p /var/lock
|
||||
mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
|
||||
mount -t proc -o nodev,noexec,nosuid proc /proc
|
||||
# Some things don't work properly without /etc/mtab.
|
||||
ln -sf /proc/mounts /etc/mtab
|
||||
|
||||
# Note that this only becomes /dev on the real filesystem if udev's scripts
|
||||
# are used; which they will be, but it's worth pointing out
|
||||
if ! mount -t devtmpfs -o mode=0755 udev /dev; then
|
||||
echo "W: devtmpfs not available, falling back to tmpfs for /dev"
|
||||
mount -t tmpfs -o mode=0755 udev /dev
|
||||
[ -e /dev/console ] || mknod --mode=600 /dev/console c 5 1
|
||||
[ -e /dev/kmsg ] || mknod --mode=644 /dev/kmsg c 1 11
|
||||
[ -e /dev/null ] || mknod --mode=666 /dev/null c 1 3
|
||||
fi
|
||||
|
||||
mkdir /dev/pts
|
||||
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
|
||||
mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
|
||||
mkdir /run/initramfs
|
||||
# compatibility symlink for the pre-oneiric locations
|
||||
ln -s /run/initramfs /dev/.initramfs
|
||||
|
||||
# Export relevant variables
|
||||
export ROOT=
|
||||
export ROOTDELAY=
|
||||
export ROOTFLAGS=
|
||||
export ROOTFSTYPE=
|
||||
export IP=
|
||||
export BOOT=
|
||||
export BOOTIF=
|
||||
export UBIMTD=
|
||||
export break=
|
||||
export init=/sbin/init
|
||||
export quiet=n
|
||||
export readonly=y
|
||||
export rootmnt=/root
|
||||
export debug=
|
||||
export panic=
|
||||
export blacklist=
|
||||
export resume=
|
||||
export resume_offset=
|
||||
export recovery=
|
||||
|
||||
for i in /sys/devices/system/cpu/cpu*/online
|
||||
do
|
||||
case $i in
|
||||
'/sys/devices/system/cpu/cpu0/online')
|
||||
;;
|
||||
'/sys/devices/system/cpu/cpu*/online')
|
||||
;;
|
||||
*)
|
||||
echo 1 > $i
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
while :
|
||||
do
|
||||
sleep 10
|
||||
done
|
@@ -0,0 +1,42 @@
|
||||
This document describes one way to created the rcu-test-image file
|
||||
that contains the filesystem used by the guest-OS kernel. There are
|
||||
probably much better ways of doing this, and this filesystem could no
|
||||
doubt be smaller. It is probably also possible to simply download
|
||||
an appropriate image from any number of places.
|
||||
|
||||
That said, here are the commands:
|
||||
|
||||
------------------------------------------------------------------------
|
||||
dd if=/dev/zero of=rcu-test-image bs=400M count=1
|
||||
mkfs.ext3 ./rcu-test-image
|
||||
sudo mount -o loop ./rcu-test-image /mnt
|
||||
|
||||
# Replace "precise" below with your favorite Ubuntu release.
|
||||
# Empirical evidence says this image will work for 64-bit, but...
|
||||
# Note that debootstrap does take a few minutes to run. Or longer.
|
||||
sudo debootstrap --verbose --arch i386 precise /mnt http://archive.ubuntu.com/ubuntu
|
||||
cat << '___EOF___' | sudo dd of=/mnt/etc/fstab
|
||||
# UNCONFIGURED FSTAB FOR BASE SYSTEM
|
||||
#
|
||||
/dev/vda / ext3 defaults 1 1
|
||||
dev /dev tmpfs rw 0 0
|
||||
tmpfs /dev/shm tmpfs defaults 0 0
|
||||
devpts /dev/pts devpts gid=5,mode=620 0 0
|
||||
sysfs /sys sysfs defaults 0 0
|
||||
proc /proc proc defaults 0 0
|
||||
___EOF___
|
||||
sudo umount /mnt
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
References:
|
||||
|
||||
http://sripathikodi.blogspot.com/2010/02/creating-kvm-bootable-fedora-system.html
|
||||
https://help.ubuntu.com/community/KVM/CreateGuests
|
||||
https://help.ubuntu.com/community/JeOSVMBuilder
|
||||
http://wiki.libvirt.org/page/UbuntuKVMWalkthrough
|
||||
http://www.moe.co.uk/2011/01/07/pci_add_option_rom-failed-to-find-romfile-pxe-rtl8139-bin/ -- "apt-get install kvm-pxe"
|
||||
http://www.landley.net/writing/rootfs-howto.html
|
||||
http://en.wikipedia.org/wiki/Initrd
|
||||
http://en.wikipedia.org/wiki/Cpio
|
||||
http://wiki.libvirt.org/page/UbuntuKVMWalkthrough
|
在新工单中引用
屏蔽一个用户