From: Danny Milosavljevic <dannym@scratchpost.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 29932@debbugs.gnu.org
Subject: [bug#29932] [PATCH 0/2] Clean up operating-system-kernel-arguments.
Date: Tue, 9 Jan 2018 09:21:33 +0100 [thread overview]
Message-ID: <20180109092133.3f740ba3@scratchpost.org> (raw)
In-Reply-To: <878td8k8f5.fsf@gnu.org>
Hi Ludo,
On Mon, 08 Jan 2018 10:26:54 +0100
ludo@gnu.org (Ludovic Courtès) wrote:
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
> > Previously, the accessor for the field "kernel-arguments" in the structure
> > <operating-system> was called "operating-system-user-kernel-arguments".
> >
> > The procedure "operating-system-kernel-arguments" made sure to add arguments
> > that made the system boot from a given device.
> >
> > After some reflection I think I was mistaken in that.
> >
> > It's nicer if the accessor is called "operating-system-kernel-argmuents"
> > and if the users just use "bootable-kernel-arguments" on their own in order to
> > amend them.
> >
> > That's what this patch does.
>
> I find ‘bootable-kernel-arguments’ to be quite unusual for a public
> interface.
>
> It’d feel more idiomatic to me if, instead, we had an
> ‘operating-system-boot-kernel-arguments’ procedure that takes an OS and
> returns (list --root --system …). Then it’d be up to the caller to
> append that to what ‘operating-system-kernel-arguments’ returns.
Yeah, but looking at it some more, it doesn't really need an OS. It needs the system derivation (and root device).
Do we still call it "operating-system-..." when it won't get an OS (or anything from it) as parameter?
What it does now is
(define (bootable-kernel-arguments kernel-arguments system.drv root-device)
"Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be
booted from ROOT-DEVICE"
(cons* (string-append "--root="
(if (uuid? root-device)
;; Note: Always use the DCE format because that's
;; what (gnu build linux-boot) expects for the
;; '--root' kernel command-line option.
(uuid->string (uuid-bytevector root-device) 'dce)
root-device))
#~(string-append "--system=" #$system.drv)
#~(string-append "--load=" #$system.drv "/boot")
kernel-arguments))
We could make it do
(define (bootable-kernel-arguments* system.drv root-device)
"Return extra boot arguments that allow SYSTEM.DRV to be
booted from ROOT-DEVICE"
(list (string-append "--root="
(if (uuid? root-device)
;; Note: Always use the DCE format because that's
;; what (gnu build linux-boot) expects for the
;; '--root' kernel command-line option.
(uuid->string (uuid-bytevector root-device) 'dce)
root-device))
#~(string-append "--system=" #$system.drv)
#~(string-append "--load=" #$system.drv "/boot")))
But then it doesn't take anything from <operating-system>.
The current users are:
(define (operating-system-kernel-arguments os system.drv root-device)
"Return all the kernel arguments, including the ones not specified
directly by the user."
(bootable-kernel-arguments (operating-system-user-kernel-arguments os)
system.drv
root-device))
Of that, the current users are:
(define (operating-system-boot-parameters os system.drv root-device)
"Return a monadic <boot-parameters> record that describes the boot parameters
of OS. SYSTEM.DRV is either a derivation or #f. If it's a derivation, adds
kernel arguments for that derivation to <boot-parameters>."
(mlet* %store-monad
((initrd (operating-system-initrd-file os))
(store -> (operating-system-store-file-system os))
(bootloader -> (bootloader-configuration-bootloader
(operating-system-bootloader os)))
(bootloader-name -> (bootloader-name bootloader))
(label -> (kernel->boot-label (operating-system-kernel os))))
(return (boot-parameters
(label label)
(root-device root-device)
(kernel (operating-system-kernel-file os))
(kernel-arguments
(if system.drv
(operating-system-kernel-arguments os system.drv root-device)
(operating-system-user-kernel-arguments os)))
(initrd initrd)
(bootloader-name bootloader-name)
(store-device (ensure-not-/dev (fs->boot-device store)))
(store-mount-point (file-system-mount-point store))))))
(define* (system-qemu-image/shared-store-script os
#:key
(qemu qemu)
(graphic? #t)
(memory-size 256)
(mappings '())
full-boot?
(disk-image-size
(* (if full-boot? 500 70)
(expt 2 20)))
(options '()))
...
(define kernel-arguments
#~(list #$@(if graphic? #~() #~("console=ttyS0"))
#+@(operating-system-kernel-arguments os os-drv "/dev/vda1")))
...
next prev parent reply other threads:[~2018-01-09 8:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-01 13:22 [bug#29932] [PATCH 0/2] Clean up operating-system-kernel-arguments Danny Milosavljevic
2018-01-01 13:27 ` [bug#29932] [PATCH 1/2] system: Inline operating-system-kernel-arguments Danny Milosavljevic
2018-01-01 13:27 ` [bug#29932] [PATCH 2/2] system: Rename operating-system-user-kernel-arguments to operating-system-kernel-arguments Danny Milosavljevic
2018-01-08 9:26 ` [bug#29932] [PATCH 0/2] Clean up operating-system-kernel-arguments Ludovic Courtès
2018-01-09 8:21 ` Danny Milosavljevic [this message]
2018-01-09 8:52 ` Ludovic Courtès
2018-01-09 10:34 ` Danny Milosavljevic
2018-01-09 11:53 ` Ludovic Courtès
2018-01-09 10:39 ` Danny Milosavljevic
2018-01-09 18:59 ` Danny Milosavljevic
2018-01-11 16:43 ` Ludovic Courtès
2018-01-12 10:59 ` [bug#29932] [PATCH v2 1/2] system: Split up operating-system-kernel-arguments into operating-system-boot-kernel-arguments and operating-system-user-kernel-arguments Danny Milosavljevic
2018-01-12 11:01 ` [bug#29932] [PATCH v2 2/2] system: Rename operating-system-user-kernel-arguments to operating-system-kernel-arguments Danny Milosavljevic
2018-01-12 14:06 ` Ludovic Courtès
2018-01-12 14:43 ` Danny Milosavljevic
2020-10-08 17:50 ` Maxim Cournoyer
2021-07-13 11:56 ` bug#29932: [PATCH 0/2] Clean up operating-system-kernel-arguments Maxim Cournoyer
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180109092133.3f740ba3@scratchpost.org \
--to=dannym@scratchpost.org \
--cc=29932@debbugs.gnu.org \
--cc=ludo@gnu.org \
/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 public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).