From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Famulari Subject: qemu instructions for manual Date: Mon, 11 Jan 2016 15:03:17 -0500 Message-ID: <20160111200317.GA8686@jasmine> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49002) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIigN-0006gt-Az for guix-devel@gnu.org; Mon, 11 Jan 2016 15:03:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aIigK-0004tv-5F for guix-devel@gnu.org; Mon, 11 Jan 2016 15:03:15 -0500 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:45467) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIigK-0004tq-1F for guix-devel@gnu.org; Mon, 11 Jan 2016 15:03:12 -0500 Received: from localhost (c-69-249-5-231.hsd1.pa.comcast.net [69.249.5.231]) by mail.messagingengine.com (Postfix) with ESMTPA id 2ED3BC016DA for ; Mon, 11 Jan 2016 15:03:11 -0500 (EST) Content-Disposition: inline List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org Hi everyone, I recently started using GuixSD in a virtual machine in advance of getting some dedicated hardware. This process is not well-documented, at least for somebody who is new to QEMU. I don't think our manual should explain how to use QEMU, but I do think it should provide the necessary information to get from `guix system vm-image` to a working GuixSD virtual machine. I'm looking for feedback on my understanding of QEMU so that my contribution to the manual is accurate This is a 'run-vm.sh' script produced by `guix system vm` for a simple system declaration: #!/gnu/store/ibpm6n6706yimzr3967krkxi2ibxq5yh-bash-4.3.39/bin/sh exec /gnu/store/jm6wvkhq87kwr2grlravx6ix3w63p996-qemu-2.4.0.1/bin/qemu-system-x86_64 \ -kernel /gnu/store/lcs3ncjam9xxkczy34rdn7mxn0y912g9-linux-libre-4.3.3/bzImage \ -initrd /gnu/store/1n5q21mc49pkb33ynf6nzrmx11vgp28r-system/initrd \ -append "--system=/gnu/store/1n5q21mc49pkb33ynf6nzrmx11vgp28r-system --load=/gnu/store/1n5q21mc49pkb33ynf6nzrmx11vgp28r-system/boot --root=/dev/vda1 " \ -enable-kvm \ -no-reboot \ -net nic,model=virtio \ -virtfs local,path="/gnu/store",security_model=none,mount_tag="TAG_gnu_store" \ -net user \ -serial stdio \ -vga std \ -drive file=/gnu/store/2azafsay573829m1hynp27kwvmssdp1f-qemu-image,if=virtio,cache=writeback,werror=report,readonly \ -m 256 \ "$@" This appears to be the minimum QEMU invocation that works: $ qemu-system-x86_64 \ -net user \ -net nic,model=virtio \ -m 256 \ ./qemu-image Is there anything else that can be adapted from the run-vm.sh script? After playing around with `guix system vm-image`, this appears to be the minimum list of commands that will successfully boot GuixSD: $ guix system vm-image --image-size=1G ~/guix/doc/os-config-bare-bones.texi $ cp /gnu/store/...-qemu-image ./qemu-image && guix gc -d /gnu/store/...-qemu-image $ chmod 600 ./qemu-image $ qemu-system-x86_64 \ -net user \ -net nic,model=virtio \ -m 256 \ ./qemu-image Annotated version: # System type to emulate. Does this have to match the host hardware? Can # "foreign" arch machine images be built with Guix? $ qemu-system-x86_64 \ # Unprivileged user mode networking. Guest can access host but not vice versa. # If you don't choose a network stack, the boot process will fail. -net user \ # You must create a network interface of a given model. You can get a list of # available NIC types by running `qemu-system-$arch -net nic,model=help`. If # you don't create a NIC, the boot process will fail. -net nic,model=virtio \ # RAM available to the guest OS. Defaults to 128 megabytes, which is not enough # for the Guix daemon. More is better. -m 256 \ OPTIONAL: If your system is x86 with hardware virtualization extensions, enabling the kernel virtual machine will make things go much faster. -enable-kvm \ # Path to the virtual machine image ./qemu-image Any feedback?