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]
Imaginons que vous vouliez créer une image MBR avec trois partitions distinctes :
%simple-os
.
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.
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.
Comme efi-disk-image
mais avec une partition EFI 32 bits.
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
.
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]