KernelNewbies
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Kernel Hacking

  • Frontpage

  • Kernel Hacking

  • Kernel Documentation

  • Kernel Glossary

  • FAQ

  • Found a bug?

  • Kernel Changelog

  • Upstream Merge Guide

Projects

  • KernelJanitors

  • KernelMentors

  • KernelProjects

Community

  • Why a community?

  • Regional Kernelnewbies

  • Personal Pages

  • Upcoming Events

References

  • Mailing Lists

  • Related Sites

  • Programming Links

Wiki

  • Recent Changes

  • Site Editors

  • Side Bar

  • Tips for Editors

  • Hosted by WikiWall

Navigation

  • RecentChanges
  • FindPage
  • HelpContents

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

KernelNewbies:
  • OutreachyfirstpatchAlt_qemu_draft

Running Linux in a VM

Hardware Requirements

You need a system with virtualization (VT-d), at least 4GB of RAM, and 40GB of free hard drive space in order to run Linux in a VM. If you want to download and compile the kernel, you may need additional space of up to 20GB.

Download Debian

Download link to Get a recent version of Debian.

Install Qemu Virtualizer

Instructions for Debian OS

sudo apt-get install qemu-kvm qemu-system-x86

Setup Qemu

You need a space for VM either a file image or disk block.

Example with using a file for VM.

Create a 50GB qcow2 format image file for VM Note qcow2 grows in space as needed. In the start it is not 50GB in size.

qemu-img create -f qcow2 debian-vm.img 50G

Simple way to start Qemu

Get a suitable iso image file for distro installation.

qemu-system-x86_64 -enable-kvm -smp 2 -boot menu=on -m 2048m -vga std -cdrom debian-install-iso.img -hda debian-vm.img

Qemu Screenshots

01) Example OS Install Screen

Debian Buster Install Screen

02) Example Guest OS Grub2 Boot Screen

Installed Debian Buster Grub2 Boot Screen

Advanced Qemu

Create a script file qemu.sh with executable permissions:

touch qemu.sh;
chmod +x qemu.sh

Edit the qemu.sh and add lines like this:

MEM="2048m"
BOOT="menu=on"

[ ! -z "$1" ] && MEM="$1"
[ ! -z "$2" ] && BOOT="$2"

MACH="-machine q35"
CPU="-cpu host"

CDROM_IMG="/path/to/debian-install-iso.img"
HDA_IMG="/path/to/debian-vm.img"

CDROM="-cdrom ${CDROM_IMG}"
HDA="-hda ${HDA_IMG}"

VGA="-vga std"

SSH_ENABLE="hostfwd=tcp:127.0.0.1:10101-:22"

NET="-netdev user,id=n1,${SSH_ENABLE} -net nic,netdev=n1,model=virtio-net-pci"

PATH_9P="~/9p/shared"

P9="-fsdev local,id=p9d1,path=${PATH_9P},security_model=none"
P9="${P9} -device virtio-9p-pci,fsdev=p9d1,mount_tag=p9_mnt"

USB="-usb"
USB_MICE="-usbdevice tablet"

SOUNDHW="-device intel-hda,msi=auto -device hda-duplex"

qemu-system-x86_64 -enable-kvm ${MACH} ${CPU} -smp 2 -boot "${BOOT}" \
-m "${MEM}" ${CDROM} ${HDA} ${NET} ${P9} ${USB} ${USB_MICE} ${SOUNDHW} \
${VGA} -rtc base=utc

Put qemu.sh in PATH directory if needed. E.g. ~/bin.

Above script sets up network, usb, sound, video, 9p, and ssh access to Qemu VM Guest OS.

SSH Access

Install ssh (rsync) in both Host and Guest OS

Debian/Ubuntu install instructions:

apt-get install ssh rsync

For SSH access to Guest OS run:

ssh -p 10101 guest_user@127.0.0.1

9P Access for Host and Guest

9p can be used for easy transfer of files to and from host and guest OS.

Create 9p shared directory in host:

mkdir ~/9p/shared

And in guest load the 9p module if neccessary.

modprobe 9p

And run in guest to create 9p shared directory and to mount 9p filesystem on it:

mkdir /tmp/shared
sudo mount -t 9p -o trans=virtio 9p_mnt /tmp/shared

Now put things in host 9p directory and see it in guest 9p directory and vice-versa.

Some Tips

While running Qemu Virtualizer you can press:

Ctrl+Alt+F for Fullscreen view and back.

Ctrl+Alt+G for mouse grab and release.

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01