| Normally, a minimal initrd is created automatically by the rcutorture |
| scripting. But minimal really does mean "minimal", namely just a single |
| root directory with a single statically linked executable named "init": |
| |
| $ size tools/testing/selftests/rcutorture/initrd/init |
| text data bss dec hex filename |
| 328 0 8 336 150 tools/testing/selftests/rcutorture/initrd/init |
| |
| Suppose you need to run some scripts, perhaps to monitor or control |
| some aspect of the rcutorture testing. This will require a more fully |
| filled-out userspace, perhaps containing libraries, executables for |
| the shell and other utilities, and soforth. In that case, place your |
| desired filesystem here: |
| |
| tools/testing/selftests/rcutorture/initrd |
| |
| For example, your tools/testing/selftests/rcutorture/initrd/init might |
| be a script that does any needed mount operations and starts whatever |
| scripts need starting to properly monitor or control your testing. |
| The next rcutorture build will then incorporate this filesystem into |
| the kernel image that is passed to qemu. |
| |
| Or maybe you need a real root filesystem for some reason, in which case |
| please read on! |
| |
| The remainder of this document describes one way to create 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" |
| https://www.landley.net/writing/rootfs-howto.html |
| https://en.wikipedia.org/wiki/Initrd |
| https://en.wikipedia.org/wiki/Cpio |
| http://wiki.libvirt.org/page/UbuntuKVMWalkthrough |