diff mbox series

[bug#63527,v5,10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide".

Message ID cde5c5fc1af0eca456ca1463bffc871a90acae7d.1684855847.git.janneke@gnu.org
State New
Headers show
Series [bug#63527,v5,01/11] gnu: Add libpciaccess-0.17. | expand

Commit Message

Janneke Nieuwenhuizen May 23, 2023, 3:47 p.m. UTC
* gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
arguments, use device name "wd0" rather than "hd0".
---
 gnu/bootloader/grub.scm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Ludovic Courtès May 24, 2023, 9:32 a.m. UTC | #1
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> * gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
> arguments, use device name "wd0" rather than "hd0".

[...]

> +        (let* ((kernel (menu-entry-multiboot-kernel entry))
> +               (arguments (menu-entry-multiboot-arguments entry))
> +               (disk (if (member "noide" arguments) "w" "h"))

Could you add a comment like:

  ;; Choose between device names as understood by Mach's built-in IDE
  ;; driver and those understood by rumpdisk (in the "noide" case).

(It’s a bit of an abstraction leak, but hey, we’ll worry about it when
we have another multiboot-compliant kernel.)

Ludo’.
Janneke Nieuwenhuizen May 24, 2023, 9:37 a.m. UTC | #2
Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
>> arguments, use device name "wd0" rather than "hd0".
>
> [...]
>
>> +        (let* ((kernel (menu-entry-multiboot-kernel entry))
>> +               (arguments (menu-entry-multiboot-arguments entry))
>> +               (disk (if (member "noide" arguments) "w" "h"))
>
> Could you add a comment like:
>
>   ;; Choose between device names as understood by Mach's built-in IDE
>   ;; driver and those understood by rumpdisk (in the "noide" case).

Added as

               ;; Choose between device names as understood by Mach's built-in
               ;; IDE driver ("hdX") and those understood by rumpdisk ("wdX"
               ;; in the "noide" case).
               (disk (if (member "noide" arguments) "w" "h"))

> (It’s a bit of an abstraction leak, but hey, we’ll worry about it when
> we have another multiboot-compliant kernel.)

(Yeah, ok!)
diff mbox series

Patch

diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index ecd44e7f3c..af46d76380 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -3,7 +3,7 @@ 
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
@@ -404,17 +404,20 @@  (define* (make-grub-configuration grub config entries
                     #$linux (string-join (list #$@arguments))
                     #$initrd)))
        (multiboot-kernel
-        (let ((kernel (menu-entry-multiboot-kernel entry))
-              (arguments (menu-entry-multiboot-arguments entry))
-              (modules (menu-entry-multiboot-modules entry))
-              (root-index 1))            ; XXX EFI will need root-index 2
+        (let* ((kernel (menu-entry-multiboot-kernel entry))
+               (arguments (menu-entry-multiboot-arguments entry))
+               (disk (if (member "noide" arguments) "w" "h"))
+               (modules (menu-entry-multiboot-modules entry))
+               (root-index 1))          ; XXX EFI will need root-index 2
           #~(format port "
 menuentry ~s {
-  multiboot ~a root=device:hd0s~a~a~a
+  multiboot ~a root=part:~a:device:~ad0~a~a
 }~%"
                     #$label
                     #$kernel
-                    #$root-index (string-join (list #$@arguments) " " 'prefix)
+                    #$root-index
+                    #$disk
+                    (string-join (list #$@arguments) " " 'prefix)
                     (string-join (map string-join '#$modules)
                                  "\n  module " 'prefix))))
        (chain-loader