tests: Add extlinux gpt test.
* gnu/tests/install.scm (%test-installed-extlinux-os): New exported variable. (%minimal-extlinux-os, %minimal-extlinux-os-source): New variables. (%extlinux-gpt-installation-script): New variable. (run-install)[packages]: New argument. The packages specified are appended to the installation image.master
parent
dbaef95aab
commit
a48a20fb98
|
@ -18,12 +18,14 @@
|
||||||
|
|
||||||
(define-module (gnu tests install)
|
(define-module (gnu tests install)
|
||||||
#:use-module (gnu)
|
#:use-module (gnu)
|
||||||
|
#:use-module (gnu bootloader extlinux)
|
||||||
#:use-module (gnu tests)
|
#:use-module (gnu tests)
|
||||||
#:use-module (gnu tests base)
|
#:use-module (gnu tests base)
|
||||||
#:use-module (gnu system)
|
#:use-module (gnu system)
|
||||||
#:use-module (gnu system install)
|
#:use-module (gnu system install)
|
||||||
#:use-module (gnu system vm)
|
#:use-module (gnu system vm)
|
||||||
#:use-module ((gnu build vm) #:select (qemu-command))
|
#:use-module ((gnu build vm) #:select (qemu-command))
|
||||||
|
#:use-module (gnu packages bootloaders)
|
||||||
#:use-module (gnu packages ocr)
|
#:use-module (gnu packages ocr)
|
||||||
#:use-module (gnu packages qemu)
|
#:use-module (gnu packages qemu)
|
||||||
#:use-module (gnu packages package-management)
|
#:use-module (gnu packages package-management)
|
||||||
|
@ -34,6 +36,7 @@
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:export (%test-installed-os
|
#:export (%test-installed-os
|
||||||
|
%test-installed-extlinux-os
|
||||||
%test-separate-store-os
|
%test-separate-store-os
|
||||||
%test-separate-home-os
|
%test-separate-home-os
|
||||||
%test-raid-root-os
|
%test-raid-root-os
|
||||||
|
@ -77,6 +80,38 @@
|
||||||
(guix combinators)))))
|
(guix combinators)))))
|
||||||
%base-services))))
|
%base-services))))
|
||||||
|
|
||||||
|
(define (operating-system-add-packages os packages)
|
||||||
|
"Append PACKAGES to OS packages list."
|
||||||
|
(operating-system
|
||||||
|
(inherit os)
|
||||||
|
(packages (append packages (operating-system-packages os)))))
|
||||||
|
|
||||||
|
(define-os-with-source (%minimal-extlinux-os
|
||||||
|
%minimal-extlinux-os-source)
|
||||||
|
(use-modules (gnu) (gnu tests) (gnu bootloader extlinux)
|
||||||
|
(srfi srfi-1))
|
||||||
|
|
||||||
|
(operating-system
|
||||||
|
(host-name "liberigilo")
|
||||||
|
(timezone "Europe/Paris")
|
||||||
|
(locale "en_US.UTF-8")
|
||||||
|
|
||||||
|
(bootloader (bootloader-configuration
|
||||||
|
(bootloader extlinux-bootloader-gpt)
|
||||||
|
(device "/dev/vdb")))
|
||||||
|
(kernel-arguments '("console=ttyS0"))
|
||||||
|
(file-systems (cons (file-system
|
||||||
|
(device "my-root")
|
||||||
|
(title 'label)
|
||||||
|
(mount-point "/")
|
||||||
|
(type "ext4"))
|
||||||
|
%base-file-systems))
|
||||||
|
(services (cons (service marionette-service-type
|
||||||
|
(marionette-configuration
|
||||||
|
(imported-modules '((gnu services herd)
|
||||||
|
(guix combinators)))))
|
||||||
|
%base-services))))
|
||||||
|
|
||||||
(define (operating-system-with-current-guix os)
|
(define (operating-system-with-current-guix os)
|
||||||
"Return a variant of OS that uses the current Guix."
|
"Return a variant of OS that uses the current Guix."
|
||||||
(operating-system
|
(operating-system
|
||||||
|
@ -121,23 +156,51 @@ guix system init /mnt/etc/config.scm /mnt --no-substitutes
|
||||||
sync
|
sync
|
||||||
reboot\n")
|
reboot\n")
|
||||||
|
|
||||||
|
(define %extlinux-gpt-installation-script
|
||||||
|
;; Shell script of a simple installation.
|
||||||
|
;; As syslinux 6.0.3 does not handle 64bits ext4 partitions,
|
||||||
|
;; we make sure to pass -O '^64bit' to mkfs.
|
||||||
|
"\
|
||||||
|
. /etc/profile
|
||||||
|
set -e -x
|
||||||
|
guix --version
|
||||||
|
|
||||||
|
export GUIX_BUILD_OPTIONS=--no-grafts
|
||||||
|
guix build isc-dhcp
|
||||||
|
parted --script /dev/vdb mklabel gpt \\
|
||||||
|
mkpart ext2 1M 1G \\
|
||||||
|
set 1 legacy_boot on
|
||||||
|
mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1
|
||||||
|
mount /dev/vdb1 /mnt
|
||||||
|
df -h /mnt
|
||||||
|
herd start cow-store /mnt
|
||||||
|
mkdir /mnt/etc
|
||||||
|
cp /etc/target-config.scm /mnt/etc/config.scm
|
||||||
|
guix system init /mnt/etc/config.scm /mnt --no-substitutes
|
||||||
|
sync
|
||||||
|
reboot\n")
|
||||||
|
|
||||||
(define* (run-install target-os target-os-source
|
(define* (run-install target-os target-os-source
|
||||||
#:key
|
#:key
|
||||||
(script %simple-installation-script)
|
(script %simple-installation-script)
|
||||||
|
(packages '())
|
||||||
(os (marionette-operating-system
|
(os (marionette-operating-system
|
||||||
;; Since the image has no network access, use the
|
|
||||||
;; current Guix so the store items we need are in
|
|
||||||
;; the image.
|
|
||||||
(operating-system
|
(operating-system
|
||||||
(inherit (operating-system-with-current-guix
|
;; Since the image has no network access, use the
|
||||||
installation-os))
|
;; current Guix so the store items we need are in
|
||||||
|
;; the image and add packages provided.
|
||||||
|
(inherit (operating-system-add-packages
|
||||||
|
(operating-system-with-current-guix
|
||||||
|
installation-os)
|
||||||
|
packages))
|
||||||
(kernel-arguments '("console=ttyS0")))
|
(kernel-arguments '("console=ttyS0")))
|
||||||
#:imported-modules '((gnu services herd)
|
#:imported-modules '((gnu services herd)
|
||||||
(guix combinators))))
|
(guix combinators))))
|
||||||
(target-size (* 1200 MiB)))
|
(target-size (* 1200 MiB)))
|
||||||
"Run SCRIPT (a shell script following the GuixSD installation procedure) in
|
"Run SCRIPT (a shell script following the GuixSD installation procedure) in
|
||||||
OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
|
OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
|
||||||
the installed system."
|
the installed system. The packages specified in PACKAGES will be appended to
|
||||||
|
packages defined in installation-os."
|
||||||
|
|
||||||
(mlet* %store-monad ((_ (set-grafting #f))
|
(mlet* %store-monad ((_ (set-grafting #f))
|
||||||
(system (current-system))
|
(system (current-system))
|
||||||
|
@ -232,6 +295,23 @@ build (current-guix) and then store a couple of full system images.")
|
||||||
(run-basic-test %minimal-os command
|
(run-basic-test %minimal-os command
|
||||||
"installed-os")))))
|
"installed-os")))))
|
||||||
|
|
||||||
|
(define %test-installed-extlinux-os
|
||||||
|
(system-test
|
||||||
|
(name "installed-extlinux-os")
|
||||||
|
(description
|
||||||
|
"Test basic functionality of an OS booted with an extlinux bootloader. As
|
||||||
|
per %test-installed-os, this test is expensive in terms of CPU and storage.")
|
||||||
|
(value
|
||||||
|
(mlet* %store-monad ((image (run-install %minimal-extlinux-os
|
||||||
|
%minimal-extlinux-os-source
|
||||||
|
#:packages
|
||||||
|
(list syslinux)
|
||||||
|
#:script
|
||||||
|
%extlinux-gpt-installation-script))
|
||||||
|
(command (qemu-command/writable-image image)))
|
||||||
|
(run-basic-test %minimal-extlinux-os command
|
||||||
|
"installed-extlinux-os")))))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Separate /home.
|
;;; Separate /home.
|
||||||
|
|
Reference in New Issue