Suivant: , Précédent: , Monter: Créer des images systèmes   [Table des matières][Index]


16.2 Instancier une image

Imaginons que vous vouliez créer une image MBR avec trois partitions distinctes :

Vous écririez ensuite la définition d’image suivante dans un fichier mon-image.scm par exemple.

(use-modules (gnu)
             (gnu image)
             (gnu tests)
             (gnu system image)
             (guix gexp))

(define Mio (expt 2 20))

(image
 (format 'disk-image)
 (operating-system %simple-os)
 (partitions
  (list
   (partition
    (size (* 40 Mio))
    (offset (* 1024 1024))
    (label "GNU-ESP")
    (file-system "vfat")
    (flags '(esp))
    (initializer (gexp initialize-efi-partition)))
   (partition
    (size (* 50 Mio))
    (label "DATA")
    (file-system "ext4")
    (initializer #~(lambda* (root . rest)
                     (mkdir root)
                     (call-with-output-file
                         (string-append root "/data")
                       (lambda (port)
                         (format port "my-data"))))))
   (partition
    (size 'guess)
    (label root-label)
    (file-system "ext4")
    (flags '(boot))
    (initializer (gexp initialize-root-partition))))))

Remarquez que la première et la troisième partition utilisent les procédure d’initialisation par défaut, respectivement initialize-efi-partition et initialize-root-partition. Initialize-efi-partition installe un chargeur EFI GRUB qui charge le chargeur d’amorçage GRUB situé sur la partition racine. Initialize-root-partition instancie un système complet défini par le système d’exploitation %simple-os.

Vous pouvez maintenant lancer :

guix system image mon-image.scm

pour instancier la définition de l’image. Cela produit une image disque qui a la structure attendue :

$ parted $(guix system image mon-image.scm) print
…
Model:  (file)
Disk /gnu/store/yhylv1bp5b2ypb97pd3bbhz6jk5nbhxw-disk-image: 1714MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  43.0MB  41.9MB  primary  fat16        esp
 2      43.0MB  95.4MB  52.4MB  primary  ext4
 3      95.4MB  1714MB  1619MB  primary  ext4         boot

La taille de la partition boot a été inférée à 1619 Mo pour qu’elle soit assez grande pour héberger le système d’exploitation %simple-os.

Vous pouvez aussi utiliser les définitions d’enregistrements image existantes et hériter d’elles pour simplifier la définition de l’image. Le module (gnu system image) fournit les variables de définition d’image suivantes.

Variable Scheme :efi-disk-image

Une image disque MBR composée de deux partitions : une partition ESP 64 bits et une partition racine de démarrage. Cette image peut être utilisée sur la plupart des machines x86_64 et i686 qui prennent en charge l’amorçage via le BIOS ou l’UEFI.

Variable Scheme :efi32-disk-image

Comme efi-disk-image mais avec une partition EFI 32 bits.

Variable Scheme :iso9660-image

Une image ISO-9660 composée d’une seule partition amorçable. Cette image peut être utilisée sur la plupart des machine x86_64 et i686.

Variable Scheme :docker-image

Une image Docker qui peut être utilisée pour démarrer un conteneur Docker.

En utilisant efi-disk-image nous pouvons simplifier notre précédente déclaration d’image de cette manière :

(use-modules (gnu)
             (gnu image)
             (gnu tests)
             (gnu system image)
             (guix gexp)
             (ice-9 match))

(define Mio (expt 2 20))

(define data
  (partition
   (size (* 50 Mio))
   (label "DATA")
   (file-system "ext4")
   (initializer #~(lambda* (root . rest)
                    (mkdir root)
                    (call-with-output-file
                        (string-append root "/data")
                      (lambda (port)
                        (format port "my-data")))))))

(image
 (inherit efi-disk-image)
 (operating-system %simple-os)
 (partitions
  (match (image-partitions efi-disk-image)
    ((esp root)
     (list esp data root)))))

Cela donnera exactement la même instanciation d’image mas la déclaration de l’image est plus simple.


Suivant: référence de image-type, Précédent: Référence de image, Monter: Créer des images systèmes   [Table des matières][Index]