From bbfb41ed9dff845e12ebd597026729f637903ac4 Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Fri, 19 May 2023 14:03:47 +0200 Subject: gnu: gnumach: Support "noide" argument. * gnu/packages/patches/gnumach-support-noide.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/hurd.scm (gnumach-headers): Use it. * doc/guix.texi (Bootloader Configuration): Document it. Signed-off-by: Josselin Poiret --- doc/guix.texi | 24 ++++++++++++++++++++++- gnu/local.mk | 1 + gnu/packages/hurd.scm | 6 ++++++ gnu/packages/patches/gnumach-support-noide.patch | 25 ++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/gnumach-support-noide.patch diff --git a/doc/guix.texi b/doc/guix.texi index 0cdc528c1c..8e4508b237 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -40078,7 +40078,29 @@ For example: @item @code{multiboot-arguments} (default: @code{'()}) The list of extra command-line arguments for the multiboot-kernel. -@item @code{multiboot-modules} (default: @code{'()}) +For example, when running in QEMU it can be useful to use a text-based +console (use options @option{--nographic} @option{--serial mon:stdio}): + +@lisp +'("console=com0") +@end lisp + +To use the new and still experimental +@uref{https://darnassus.sceen.net/~hurd-web/rump_kernel/, rumpdisk +user-level disk driver} instead of GNU@tie{}Mach's in-kernel IDE driver, +set @code{kernel-arguments} to: + +@lisp +'("noide") +@end lisp + +Of course, these options can be combined: + +@lisp +'("console=com0" "noide") +@end lisp + ++@item @code{multiboot-modules} (default: @code{'()}) The list of commands for loading Multiboot modules. For example: @lisp diff --git a/gnu/local.mk b/gnu/local.mk index cf085c9c38..30dd32fdce 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1287,6 +1287,7 @@ dist_patch_DATA = \ %D%/packages/patches/gnome-settings-daemon-gc.patch \ %D%/packages/patches/gnome-session-support-elogind.patch \ %D%/packages/patches/gnome-tweaks-search-paths.patch \ + %D%/packages/patches/gnumach-support-noide.patch \ %D%/packages/patches/gnupg-default-pinentry.patch \ %D%/packages/patches/gnupg-1-build-with-gcc10.patch \ %D%/packages/patches/gnutls-skip-trust-store-test.patch \ diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 419d12939f..3a9797009b 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -253,6 +253,12 @@ Hurd-minimal package which are needed for both glibc and GCC.") (package (inherit gnumach-headers) (name "gnumach") + (source (origin + (inherit (package-source gnumach-headers)) + (patches + (append + (search-patches "gnumach-support-noide.patch") + (origin-patches (package-source gnumach-headers)))))) (arguments (substitute-keyword-arguments (package-arguments gnumach-headers) ((#:make-flags flags ''()) diff --git a/gnu/packages/patches/gnumach-support-noide.patch b/gnu/packages/patches/gnumach-support-noide.patch new file mode 100644 index 0000000000..723d4bcac4 --- /dev/null +++ b/gnu/packages/patches/gnumach-support-noide.patch @@ -0,0 +1,25 @@ +Upstream status: Taken from Debian/upsream. + + https://salsa.debian.org/hurd-team/gnumach/-/blob/master/debian/patches/90_noide.patch + +This supports using `noide' on the gnumach command line, disabling +gnumach IDE support and thus forcing use of rumdisk. + +--- + linux/dev/glue/block.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/linux/dev/glue/block.c ++++ b/linux/dev/glue/block.c +@@ -207,7 +207,10 @@ int + blk_dev_init () + { + #ifdef CONFIG_BLK_DEV_IDE +- ide_init (); ++ extern char *kernel_cmdline; ++ if (strncmp(kernel_cmdline, "noide", 5) && ++ !strstr(kernel_cmdline, " noide")) ++ ide_init (); + #endif + #ifdef CONFIG_BLK_DEV_FD + floppy_init (); -- cgit 1.4.1