mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
system: Provide a new VM image configuration.
* gnu/system/examples/vm-image.tmpl: Rewrite. * doc/guix.texi (Running Guix in a VM): Adjust accordingly.
This commit is contained in:
parent
504a0fc636
commit
538b99f31f
2 changed files with 79 additions and 42 deletions
|
@ -24576,13 +24576,23 @@ example graph.
|
|||
@section Running Guix in a Virtual Machine
|
||||
|
||||
@cindex virtual machine
|
||||
To run Guix in a virtual machine (VM), one can either use the
|
||||
pre-built Guix VM image distributed at
|
||||
To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image
|
||||
distributed at
|
||||
@indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-vm-image-@value{VERSION}.@var{system}.xz}
|
||||
, or build their own virtual machine image using @command{guix system
|
||||
vm-image} (@pxref{Invoking guix system}). The returned image is in
|
||||
qcow2 format, which the @uref{http://qemu.org/, QEMU emulator} can
|
||||
efficiently use.
|
||||
This image is a compressed image in QCOW format. You will first need to
|
||||
decompress with @command{xz -d}, and then you can pass it to an emulator such
|
||||
as QEMU (see below for details).
|
||||
|
||||
This image boots the Xfce graphical environment and it contains some
|
||||
commonly-used tools. You can install more software in the image by running
|
||||
@command{guix package} in a terminal (@pxref{Invoking guix package}). You can
|
||||
also reconfigure the system based on its initial configuration file available
|
||||
as @file{/etc/config.scm} (@pxref{Using the Configuration System}).
|
||||
|
||||
Instead of using this pre-built image, one can also build their own virtual
|
||||
machine image using @command{guix system vm-image} (@pxref{Invoking guix
|
||||
system}). The returned image is in qcow2 format, which the
|
||||
@uref{http://qemu.org/, QEMU emulator} can efficiently use.
|
||||
|
||||
@cindex QEMU
|
||||
If you built your own image, you must copy it out of the store
|
||||
|
@ -24595,7 +24605,7 @@ vm-image} on x86_64 hardware:
|
|||
@example
|
||||
$ qemu-system-x86_64 \
|
||||
-net user -net nic,model=virtio \
|
||||
-enable-kvm -m 256 /tmp/qemu-image
|
||||
-enable-kvm -m 512 /tmp/qemu-image
|
||||
@end example
|
||||
|
||||
Here is what each of these options means:
|
||||
|
@ -24621,7 +24631,7 @@ If your system has hardware virtualization extensions, enabling the
|
|||
virtual machine support (KVM) of the Linux kernel will make things run
|
||||
faster.
|
||||
|
||||
@item -m 256
|
||||
@item -m 512
|
||||
RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB,
|
||||
which may be insufficient for some operations.
|
||||
|
||||
|
|
|
@ -1,58 +1,85 @@
|
|||
;;; This is an operating system configuration template for a "bare-bones" setup,
|
||||
;;; suitable for booting in a virtualized environment, including virtual private
|
||||
;;; servers (VPS).
|
||||
;; This is an operating system configuration for a VM image.
|
||||
;; Modify it as you see fit and instantiate the changes by running:
|
||||
;;
|
||||
;; guix system reconfigure /etc/config.scm
|
||||
;;
|
||||
|
||||
(use-modules (gnu))
|
||||
(use-package-modules bootloaders disk nvi)
|
||||
(use-modules (gnu) (srfi srfi-1))
|
||||
(use-service-modules xorg desktop)
|
||||
(use-package-modules bootloaders nvi wget xorg)
|
||||
|
||||
(define vm-image-motd (plain-file "motd" "
|
||||
This is the GNU system. Welcome!
|
||||
\x1b[1;37mThis is the GNU system. Welcome!\x1b[0m
|
||||
|
||||
This instance of Guix System is a bare-bones template for virtualized environments.
|
||||
This instance of Guix is a template for virtualized environments.
|
||||
You can reconfigure the whole system by adjusting /etc/config.scm
|
||||
and running:
|
||||
|
||||
You will probably want to do these things first if you booted in a virtual
|
||||
private server (VPS):
|
||||
guix system reconfigure /etc/config.scm
|
||||
|
||||
\x1b[1;33mConsider setting a password for the 'root' and 'guest' \
|
||||
accounts.\x1b[0m
|
||||
"))
|
||||
|
||||
(define this-file
|
||||
(local-file "./vm-image.tmpl" "config.scm"))
|
||||
|
||||
* Set a password for 'root'.
|
||||
* Set up networking.
|
||||
* Expand the root partition to fill the space available by 0) deleting and
|
||||
recreating the partition with fdisk, 1) reloading the partition table with
|
||||
partprobe, and then 2) resizing the filesystem with resize2fs.\n"))
|
||||
|
||||
(operating-system
|
||||
(host-name "gnu")
|
||||
(timezone "Etc/UTC")
|
||||
(locale "en_US.utf8")
|
||||
(keyboard-layout (keyboard-layout "us" "altgr-intl"))
|
||||
|
||||
(firmware '())
|
||||
|
||||
;; Assuming /dev/sdX is the target hard disk, and "my-root" is
|
||||
;; the label of the target root file system.
|
||||
;; Below we assume /dev/vda is the VM's hard disk.
|
||||
;; Adjust as needed.
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader grub-bootloader)
|
||||
(target "/dev/sda")
|
||||
(target "/dev/vda")
|
||||
(terminal-outputs '(console))))
|
||||
(file-systems (cons (file-system
|
||||
(device (file-system-label "my-root"))
|
||||
(mount-point "/")
|
||||
(device "/dev/vda1")
|
||||
(type "ext4"))
|
||||
%base-file-systems))
|
||||
|
||||
;; This is where user accounts are specified. The "root"
|
||||
;; account is implicit, and is initially created with the
|
||||
;; empty password.
|
||||
(users %base-user-accounts)
|
||||
(users (cons (user-account
|
||||
(name "guest")
|
||||
(comment "GNU Guix Live")
|
||||
(password "") ;no password
|
||||
(group "users")
|
||||
(supplementary-groups '("wheel" "netdev"
|
||||
"audio" "video")))
|
||||
%base-user-accounts))
|
||||
|
||||
;; Globally-installed packages.
|
||||
(packages (append (list nvi fdisk
|
||||
;; mostly so xrefs to its manual work
|
||||
grub
|
||||
;; partprobe
|
||||
parted)
|
||||
%base-packages))
|
||||
(packages (append (list nvi wget) %base-packages))
|
||||
|
||||
(services (modify-services %base-services
|
||||
(services
|
||||
(append (list (service xfce-desktop-service-type)
|
||||
|
||||
;; Copy this file to /etc/config.scm in the OS.
|
||||
(simple-service 'config-file etc-service-type
|
||||
`(("config.scm" ,this-file)))
|
||||
|
||||
;; Choose SLiM, which is lighter than the default GDM.
|
||||
(service slim-service-type
|
||||
(slim-configuration
|
||||
(auto-login? #t)
|
||||
(default-user "guest")
|
||||
(xorg-configuration
|
||||
(xorg-configuration
|
||||
(keyboard-layout keyboard-layout))))))
|
||||
|
||||
;; Remove GDM.
|
||||
(remove (lambda (service)
|
||||
(eq? gdm-service-type (service-kind service)))
|
||||
(modify-services %desktop-services
|
||||
(login-service-type config =>
|
||||
(login-configuration
|
||||
(inherit config)
|
||||
(motd vm-image-motd))))))
|
||||
(motd vm-image-motd)))))))
|
||||
|
||||
;; Allow resolution of '.local' host names with mDNS.
|
||||
(name-service-switch %mdns-host-lookup-nss))
|
||||
|
|
Loading…
Reference in a new issue