Next: Používanie bezpečnostných kľúčov, Previous: Prispôsobenie jadra, Up: Nastavenie systému [Contents][Index]
Z dejinného pohľadu je systém Guix sústredený okolo štruktúry
operating-system
. Táto štruktúra obsahuje rôzne polia počínajúc
zadaním zavádzača a jadra až k službám, ktoré sa majú nainštalovať.
Požiadavky na obraz sa môžu značne líšiť v závislosti na cieľovom stroji, čo
môže byť obvyklý x86_64
alebo malý jednodoskový počítač ako
Pine64. Výrobcovia technického vybavenia presadzujú rôzne formáty obrazov s
rôznymi veľkosťami a umiestneniami oddielov.
Na vytváranie obrazov vhodných pre všetky tieto stroje je nevyhnutné ďalšie
zovšeobecnenie, čo je cieľom záznamu image
. Tento záznam obsahuje
všetky potrebné údaje k premene na samostatný obraz, ktorý je možno priamo
zaviesť na hocijakom cieľovom stroji.
(define-record-type* <image>
image make-image
image?
(name image-name ;symbol
(default #f))
(format image-format) ;symbol
(target image-target
(default #f))
(size image-size ;size in bytes as integer
(default 'guess))
(operating-system image-operating-system ;<operating-system>
(default #f))
(partitions image-partitions ;list of <partition>
(default '()))
(compression? image-compression? ;boolean
(default #t))
(volatile-root? image-volatile-root? ;boolean
(default #t))
(substitutable? image-substitutable? ;boolean
(default #t)))
Tento záznam obsahuje operačný systém na zostavenie. Pole format
určuje druh obrazu a medzi jeho platné hodnoty patria efi-raw
,
qcow2
alebo iso9660
. V budúcnosti by sa mohli rozšíriť o
docker
a ďalšie druhy obrazov.
Na zadávanie obrazov bol spomedzi zdrojových súborov Guixu vyhradený nový priečinok. Zatiaľ sa v ňom nachádzajú štyri súbory:
Pozrime sa na pine64.scm. Obsahuje premennú
pine64-barebones-os
predstavujúcu najmenšie možné zadanie operačného
systému určeného pre dosku Pine A64 LTS.
(define pine64-barebones-os
(operating-system
(host-name "vignemale")
(timezone "Europe/Bratislava")
(locale "sk_SK.utf8")
(bootloader (bootloader-configuration
(bootloader u-boot-pine64-lts-bootloader)
(targets '("/dev/vda"))))
(initrd-modules '())
(kernel linux-libre-arm64-generic)
(file-systems (cons (file-system
(device (file-system-label "moj-korenovy-system"))
(mount-point "/")
(type "ext4"))
%base-file-systems))
(services (cons (service agetty-service-type
(agetty-configuration
(extra-options '("-L")) ; bez zisťovania nosného signálu
(baud-rate "115200")
(term "vt100")
(tty "ttyS0")))
%base-services))))
Polia kernel
a bootloader
odkazujú na balíky určené pre túto
dosku.
Tesne pod nimi je zadaná aj premenná pine64-image-type
.
(define pine64-image-type
(image-type
(name 'pine64-raw)
(constructor (cut image-with-os arm64-disk-image <>))))
Využíva záznam, o ktorom sme ešte nehovorili, a teda image-type
,
zadaný nasledovne:
(define-record-type* <image-type> image-type make-image-type image-type? (name image-type-name) ; znak (constructor image-type-constructor)) ; <operating-system> -> <image>
Hlavným účelom tohto záznamu je priradiť názov funkcii pretvárajúcej
operating-system
na obraz. Aby sme pochopili, prečo je to dôležité,
pozrime sa na príkaz vytvárajúci obraz zo súboru nastavení
operating-system
:
guix system image moj-os.scm
Tento príkaz očakáva nastavenie druhu operating-system
, ale ako by
sme mali určiť, že chceme obraz pre dosku Pine64? Musíme poskytnúť
doplňujúci údaj, image-type
, pomocou voľby --image-type
alebo
-t
a to takto:
guix system image --image-type=pine64-raw moj-os.scm
Tento image-type
parameter odkazuje na pine64-image-type
uvedený vyššie. Na operating-system
zadaný v moj-os.scm
sa
teda použije funkcia (cut image-with-os arm64-disk-image <>)
pre
vytvorenie obrazu.
Výsledný obraz vyzerá asi takto:
(image
(format 'disk-image)
(target "aarch64-linux-gnu")
(operating-system moj-os)
(partitions
(list (partition
(inherit root-partition)
(offset root-offset)))))
čo je združenie člena operating-system
zadaného v moj-os.scm
so záznamom arm64-disk-image
.
Stačilo už tohto Scheme šialenstva. Čo toto API prináša používateľom Guixu?
Môžete spustiť:
mathieu@cervin:~$ guix system --list-image-types Dostupné druhy obrazov sú: - unmatched-raw - rock64-raw - pinebook-pro-raw - pine64-raw - novena-raw - hurd-raw - hurd-qcow2 - qcow2 - iso9660 - uncompressed-iso9660 - tarball - efi-raw - mbr-raw - docker - wsl2 - raw-with-offset - efi32-raw
a vytvorením súboru druhu operating-system
, založenom na
pine64-barebones-os
, si môžete váš obraz prispôsobiť v súbore
(moj-pine-os.scm) asi takto:
(use-modules (gnu services linux) (gnu system images pine64)) (let ((base-os pine64-barebones-os)) (operating-system (inherit base-os) (timezone "Europe/Bratislava") (services (cons (service earlyoom-service-type (earlyoom-configuration (prefer-regexp "icecat|chromium"))) (operating-system-user-services base-os)))))
spustite:
guix system image --image-type=pine64-raw moj-os.scm
alebo
guix system image --image-type=hurd-raw moj-hurd-os.scm
pre získanie obrazu, ktorý možno zapísať priamo na pevný disk a zaviesť.
Bezo zmeny v moj-hurd-os.scm
, volanie:
guix system image --image-type=hurd-qcow2 moj-hurd-os.scm
namiesto toho vytvorí Hurd QEMU obraz.
Next: Používanie bezpečnostných kľúčov, Previous: Prispôsobenie jadra, Up: Nastavenie systému [Contents][Index]