mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-18 21:46:35 +01:00
gnu: grub: Support loading files from TFTP if the root filesystem is NFS.
* gnu/bootloader/grub.scm (grub-root-search): Set the root to "(tftp)" if the searched-for file is stored on NFS.
This commit is contained in:
parent
f6807498be
commit
8c4f1aa85f
1 changed files with 27 additions and 0 deletions
|
@ -295,6 +295,33 @@ (define (grub-root-search device file)
|
|||
((? file-system-label? label)
|
||||
(format #f "search --label --set ~a"
|
||||
(file-system-label->string label)))
|
||||
((? (lambda (device)
|
||||
(and (string? device) (string-contains device ":/"))) nfs-uri)
|
||||
;; This assumes that if your root file system is on NFS, then
|
||||
;; you also want to load your grub extra files, kernel and initrd
|
||||
;; from there.
|
||||
;;
|
||||
;; We explicitly set "root=(tftp)" here even though if grub.cfg
|
||||
;; had been loaded via TFTP, Grub would have set "root=(tftp)"
|
||||
;; automatically anyway. The reason is if you have a system that
|
||||
;; used to be on NFS but now is local, root would be set to local
|
||||
;; disk. If you then selected an older system generation that is
|
||||
;; supposed to boot from network in the Grub boot menu, Grub still
|
||||
;; wouldn't load those files from network otherwise.
|
||||
;;
|
||||
;; TFTP is preferred to HTTP because it is used more widely and
|
||||
;; specified in standards more widely--especially BOOTP/DHCPv4
|
||||
;; defines a TFTP server for DHCP option 66, but not HTTP.
|
||||
;;
|
||||
;; Note: DHCPv6 specifies option 59 to contain a boot-file-url,
|
||||
;; which can contain a HTTP or TFTP URL.
|
||||
;;
|
||||
;; Note: It is assumed that the file paths are of a similar
|
||||
;; setup on both the TFTP server and the NFS server (it is
|
||||
;; not possible to search for files on TFTP).
|
||||
;;
|
||||
;; TODO: Allow HTTP.
|
||||
"set root=(tftp)")
|
||||
((or #f (? string?))
|
||||
#~(format #f "search --file --set ~a" #$file)))))
|
||||
|
||||
|
|
Loading…
Reference in a new issue