From: Vincent Legoll <vincent.legoll@gmail.com>
To: Tobias Geerinckx-Rice <me@tobias.gr>, 40579@debbugs.gnu.org
Subject: [bug#40579] [PATCH v3] gnu: Add iPXE.
Date: Tue, 14 Apr 2020 17:11:29 +0200 [thread overview]
Message-ID: <edb0edbd-22f4-2aeb-1410-eee15c067919@gmail.com> (raw)
In-Reply-To: <20200412232831.5876-1-me@tobias.gr>
[-- Attachment #1: Type: text/plain, Size: 1260 bytes --]
Hello,
On 13/04/2020 01:28, Tobias Geerinckx-Rice wrote:
> The image still isn't reproducible, but it has much fewer dates in it
> now and it actually boots ;-) [citation needed].
I tried it in qemu, got confused by its own ipxe stack, but I
think it then went to isolinux which is from the ipxe.iso image...
> I've silenced some other annoying warnings during the build, and
> applied some of my suggestions from my previous mail (not all though —
> please do send a V3).
This new patch has the following changes:
* used git-file-name
* build everything, as I didn't know what subset to choose
* install everything in ...-ipxe-1.20.1/lib/ipxe with subdirs
for per-arch binaries: bin-i386, etc. You spoke about lib
but put them in share, so I choose to change to the former
* do the install phase in scheme, as it was easier to handle
the above item than to generate a proper makefile target
* only install files with specified extensions, this will get rid
of the .a and other irrelevant files
> Neither mtools nor XZ were ever used. Why were they there?
I initially added the inputs in bulk from the build instructions
on the website, and forgot to check their usefulness before
sending the patch RFC.
--
Vincent Legoll
[-- Attachment #2: 0001-gnu-Add-iPXE.patch --]
[-- Type: text/x-patch, Size: 5242 bytes --]
From a9313c42e8e07c501f1991ff98001bb3fc908584 Mon Sep 17 00:00:00 2001
From: Vincent Legoll <vincent.legoll@gmail.com>
Date: Mon, 13 Apr 2020 01:28:31 +0200
Subject: [PATCH] gnu: Add iPXE.
* gnu/packages/bootloaders.scm (ipxe): New variable.
Co-authored-by Tobias Geerinckx-Rice <me@tobias.gr>
---
gnu/packages/bootloaders.scm | 82 +++++++++++++++++++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index cadcc937e1..23dda99b2a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -7,10 +7,11 @@
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 nee <nee@cock.li>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -834,6 +835,85 @@ to Novena upstream, does not load u-boot.img from the first partition.")
`(("firmware" ,arm-trusted-firmware-rk3399)
,@(package-native-inputs base))))))
+(define-public ipxe
+ (package
+ (name "ipxe")
+ (version "1.20.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ipxe/ipxe")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0w7h7y97gj9nqvbmsg1zp6zj5mpbbpckqbbx7bpp6k3ahy5fk8zp"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list "ECHO_E_BIN_ECHO=echo"
+ "ECHO_E_BIN_ECHO_E=echo -e"
+
+ ;; cdrtools' mkisofs will silently ignore a missing isolinux.bin!
+ ;; Luckily xorriso is more strict.
+ (string-append "ISOLINUX_BIN=" (assoc-ref %build-inputs "syslinux")
+ "/share/syslinux/isolinux.bin")
+
+ ;; Build reproducibly.
+ "BUILD_ID_CMD=echo -n 0x78697547"
+ "everything")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'enter-source-directory
+ (lambda _ (chdir "src") #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (ipxe (string-append out "/lib/ipxe"))
+ (exts-re
+ "\\.(efi|efirom|iso|kkpxe|kpxe|lkrn|mrom|pxe|rom|usb)$")
+ (dirs '("bin" "bin-i386-linux" "bin-x86_64-pcbios"
+ "bin-x86_64-efi" "bin-x86_64-linux" "bin-i386-efi"))
+ (files (apply append
+ (map (lambda (dir)
+ (find-files dir exts-re)) dirs))))
+ (for-each (lambda (file)
+ (let* ((subdir (dirname file))
+ (fn (basename file))
+ (tgtsubdir (cond
+ ((string=? "bin" subdir) "")
+ ((string-prefix? "bin-" subdir)
+ (string-drop subdir 4)))))
+ (install-file file
+ (string-append ipxe "/" tgtsubdir))))
+ files))
+ #t))
+ (add-before 'configure 'use-xorriso
+ ;; Use xorriso's mkisofs emulation, which is better maintained and
+ ;; respects SOURCE_DATE_EPOCH to create a reproducible image.
+ (lambda _
+ (substitute* "util/geniso"
+ ((" genisoimage ") " \"xorriso -as mkisofs\" "))
+ #t))
+ (delete 'configure) ; no configure script
+ (add-after 'install 'leave-source-directory
+ (lambda _ (chdir "..") #t)))
+ #:tests? #f)) ; no test suite
+ (native-inputs
+ `(("perl" ,perl)
+ ("syslinux" ,syslinux)
+ ("xorriso" ,xorriso)))
+ (home-page "https://ipxe.org")
+ (synopsis "PXE-compliant network boot firmware")
+ (description "iPXE is a network boot firmware. It provides a full PXE
+implementation enhanced with additional features such as booting from: a web
+server via HTTP, an iSCSI SAN, a Fibre Channel SAN via FCoE, an AoE SAN, a
+wireless network, a wide-area network, an Infiniband network. It allows to
+control the boot process with a script. You can use iPXE to replace the
+existing PXE ROM on your network card, or you can chainload into iPXE to obtain
+the features of iPXE without the hassle of reflashing.")
+ (license license:gpl2+)))
+
(define-public vboot-utils
(package
(name "vboot-utils")
--
2.26.0
next prev parent reply other threads:[~2020-04-14 16:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-12 17:59 [bug#40579] [RFC PATCH] add iPXE Vincent Legoll
2020-04-12 18:47 ` Tobias Geerinckx-Rice via Guix-patches via
2020-04-12 18:58 ` Tobias Geerinckx-Rice via Guix-patches via
2020-04-12 19:46 ` Danny Milosavljevic
2020-04-12 21:18 ` Tobias Geerinckx-Rice via Guix-patches via
2020-04-12 23:28 ` [bug#40579] [PATCH v2] gnu: Add iPXE Tobias Geerinckx-Rice via Guix-patches via
2020-04-14 15:11 ` Vincent Legoll [this message]
2020-04-15 20:41 ` Danny Milosavljevic
2020-04-15 20:55 ` Vincent Legoll
2020-06-09 19:31 ` Brice Waegeneire
2020-06-09 19:58 ` Vincent Legoll
2020-06-09 20:11 ` Brice Waegeneire
2021-01-12 21:01 ` Vincent Legoll
2021-01-12 21:44 ` [bug#40579] [PATCH 1/2] " Vincent Legoll
2021-01-12 21:44 ` [bug#40579] [PATCH 2/2] gnu: ipxe: Update to 1.21.1 Vincent Legoll
2021-01-12 21:47 ` [bug#40579] [PATCH 1/2] gnu: Add iPXE Vincent Legoll
2021-01-14 0:53 ` Danny Milosavljevic
2021-01-14 8:33 ` bug#40579: [RFC PATCH] add iPXE Vincent Legoll
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=edb0edbd-22f4-2aeb-1410-eee15c067919@gmail.com \
--to=vincent.legoll@gmail.com \
--cc=40579@debbugs.gnu.org \
--cc=me@tobias.gr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.