guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#26544: [PATCH] system: Move "--load" and other guix-specific paramet


From: Danny Milosavljevic
Subject: bug#26544: [PATCH] system: Move "--load" and other guix-specific parameters from the grub module to the generic system module.
Date: Tue, 18 Apr 2017 16:51:59 +0200

Hi Ludo,

> Could you explain the “big picture”, the rationale behind this change?

Currenly, (gnu system grub) prepends the "--system", "--load" and "--root" on 
its own.  But that's something specific to the guix system and has nothing to 
do with bootloaders (it's not even a bootloader option - it's just passing it 
through to the Linux kernel and *that* is passing some through to Shepherd).

In connection with the effort to support other bootloaders we could of course 
copy such a prepension-block to each of the bootloader modules, but in my 
opinion it's better if it's moved to (bootloader-independent) boot-parameters 
so everyone just automatically uses the correct kernel arguments, including 
which guix system guix should boot.

I suspect that this wasn't done before because the boot-parameters are 
serialized to a file "parameters" in the "system" directory.  But then 
"--system=<system>" in that file would have to contain the hash value of the 
system, which is ... impossible (or at least very very hard to do).

Therefore, this patch makes sure the in-memory <boot-parameters> instances do 
contain "--system" with the correct hash value, but the stored "parameters" 
doesn't.

I think that that's the best of both worlds.  Clients in guix can use data read 
from <boot-parameters> without second-guessing everything and the stored file 
still doesn't have to solve a 
hash-functions-really-try-to-prevent-you-from-doing-that problem - the stored 
file doesn't contain the hash value of itself (and now doesn't need to).

I've successfully tested it by "guix system reconfigure" on my machine and also 
by "guix system vm" (full-boot and non-full-boot) on my machine, starting from 
master.

> Danny Milosavljevic <address@hidden> skribis:
> 
> > +(define (bootable-kernel-arguments kernel-arguments system root-device)

> Please add a docstring to top-level procedures:

Something like this?

"Prepend extra arguments to KERNEL-ARGUMENTS that allow the guix system to boot 
SYSTEM on ROOT-DEVICE."

> So I suggest stick to this convention and thus have:
> 
>   operating-system-user-kernel-arguments     ;arguments specified by the user
>   operating-system-kernel-arguments          ;all the arguments

Hmm, I don't think it's really directly specified by the user, is it?  I'm just 
trying to avoid having to store the file's (more or less) own hash value into 
the file.

> > -(define (operating-system-parameters-file os)
> > +(define (operating-system-boot-parameters os system root-device)  
> 
> I think it would be clearer to rename in a separate patch.

I'll try.

> > +(define (read-boot-parameters-file sysgen)
> > +  "Read boot parameters from SYSGEN's (system or generation) 
> > \"parameters\"  
> 
> Please use full words in variable names, typically ‘system’ here.

Ok.  Should the docstring say "SYSTEM (system or generation)" or just "SYSTEM"?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]