= 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 = [[https://www.debian.org/distrib/|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 === {{attachment:01-Example-OS-Install-Screen.png|Debian Buster Install Screen|align="middle"}} === 02) Example Guest OS Grub2 Boot Screen === {{attachment:02-Example-Guest-OS-Grub2-Boot-Screen.png|Installed Debian Buster Grub2 Boot Screen|align="middle"}} == 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: {{{ #!/bin/sh 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.