mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
gnu: Add ipxe-qemu.
* gnu/packages/bootloaders.scm (ipxe-qemu): New variable.
This commit is contained in:
parent
040c43d78a
commit
2f2a9aca4b
1 changed files with 57 additions and 1 deletions
|
@ -3,7 +3,7 @@
|
||||||
;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;; Copyright © 2016, 2017, 2018, 2021 Marius Bakke <marius@gnu.org>
|
;;; Copyright © 2016-2018, 2021-2022 Marius Bakke <marius@gnu.org>
|
||||||
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
|
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
|
||||||
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
|
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
|
||||||
;;; Copyright © 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
|
;;; Copyright © 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
|
||||||
|
@ -1532,3 +1532,59 @@ existing PXE ROM on your network card, or you can chainload into iPXE to obtain
|
||||||
the features of iPXE without the hassle of reflashing.")
|
the features of iPXE without the hassle of reflashing.")
|
||||||
(license license:gpl2+))))
|
(license license:gpl2+))))
|
||||||
|
|
||||||
|
(define-public ipxe-qemu
|
||||||
|
(package/inherit ipxe
|
||||||
|
(name "ipxe-qemu")
|
||||||
|
(native-inputs
|
||||||
|
(modify-inputs (package-native-inputs ipxe)
|
||||||
|
(prepend edk2-tools)))
|
||||||
|
(arguments
|
||||||
|
(let ((roms
|
||||||
|
;; Alist of ROM -> (VID . DID) entries. This list and below
|
||||||
|
;; build steps are taken from QEMUs roms/Makefile.
|
||||||
|
'(("e1000" . ("8086" . "100e"))
|
||||||
|
("e1000e" . ("8086" . "10d3"))
|
||||||
|
("eepro100" . ("8086" . "1209"))
|
||||||
|
("ne2k_pci" . ("1050" . "0940"))
|
||||||
|
("pcnet" . ("1022" . "2000"))
|
||||||
|
("rtl8139" . ("10ec" . "8139"))
|
||||||
|
("virtio" . ("1af4" . "1000"))
|
||||||
|
("vmxnet3" . ("15ad" . "07b0")))))
|
||||||
|
(substitute-keyword-arguments (package-arguments ipxe)
|
||||||
|
((#:modules modules)
|
||||||
|
`((ice-9 match) ,@modules))
|
||||||
|
((#:make-flags flags)
|
||||||
|
#~(append (delete "everything" #$flags)
|
||||||
|
'("CONFIG=qemu")
|
||||||
|
(map (match-lambda
|
||||||
|
((_ . (vid . did))
|
||||||
|
(string-append "bin/" vid did ".rom")))
|
||||||
|
'#$roms)
|
||||||
|
(map (match-lambda
|
||||||
|
((_ . (vid . did))
|
||||||
|
(string-append "bin-efi/"
|
||||||
|
vid did ".efidrv")))
|
||||||
|
'#$roms)))
|
||||||
|
((#:phases phases)
|
||||||
|
#~(modify-phases #$phases
|
||||||
|
(replace 'install
|
||||||
|
(lambda _
|
||||||
|
(let ((firmware (string-append #$output "/share/firmware")))
|
||||||
|
(mkdir-p firmware)
|
||||||
|
(for-each
|
||||||
|
(match-lambda
|
||||||
|
((name . (vid . did))
|
||||||
|
(let ((rom (string-append "bin/" vid did ".rom")))
|
||||||
|
(copy-file rom
|
||||||
|
(string-append firmware
|
||||||
|
"/pxe-" name ".rom"))
|
||||||
|
(invoke "EfiRom"
|
||||||
|
"-b" rom
|
||||||
|
"-l" "0x02"
|
||||||
|
"-f" (string-append "0x" vid)
|
||||||
|
"-i" (string-append "0x" did)
|
||||||
|
"-ec" (string-append "bin-efi/"
|
||||||
|
vid did ".efidrv")
|
||||||
|
"-o" (string-append firmware
|
||||||
|
"/efi-" name ".rom")))))
|
||||||
|
'#$roms)))))))))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue