On Sat, Sep 10, 2016 at 12:03:38AM +0200, Ludovic Courtès wrote:
Toggle quote (2 lines)
>Good news!
Toggle quote (42 lines)
>
>ludo@gnu.org (Ludovic Courtès) skribis:
>
>> Tomáš Čech <sleep_walker@suse.cz> skribis:
>>
>>> Grub configuration interpretes `linux' as directory where is located
>>> bzImage. If I enter file name instead, result configuration will be
>>> wrong.
>>
>> The solution will be to not automatically append “/bzImage” (and
>> likewise for the initrd.)
>>
>> We could change places where ‘menu-entry’ is instantiated to:
>>
>> #~(string-append #$kernel "/bzImage")
>>
>> However, there’s the problem that the image name appears in the
>> ‘parameters’ file of the system (as seen in the output of ‘guix system
>> build foo.scm’), where it is unevaluated. If we use ‘string-append’ as
>> above, a raw (string-append …) sexp will appear in there, which is not
>> nice.
>>
>> To address this, an idea is to add “expanders” for gexps: gexps already
>> have “compilers”, and expanders would be similar except that they would
>> produce something possibly different from just the derivation’s output
>> file name. For instance, we could write:
>>
>> (file-append kernel "/bzImage")
>>
>> and that would expand directly to:
>>
>> "/gnu/store/…/bzImage"
>
>AFAICS this is finally fixed!
>
> expanders in commit ebdfd776f4504c456d383ee8afa59fc6fdfc6756
> ‘file-append’ in commit a9e5e92f940381e3a4ee828c6d8ff22a73067e17
> kernel file name in commit 44d5f54e31039d78f156bd9562dca293124eaa76
>
>Please let me know how it goes! In particular, does it work for the
>dual-boot scenario you were interested in?
It is almost perfect.
Configuration excerpt...
(bootloader (grub-configuration
(device "/dev/sda")
(menu-entries
(list
(menu-entry
(label "openSUSE")
(linux "(hd0,msdos1)/vmlinuz")
(linux-arguments (list
"root=/dev/venom/opensuse"
"init=/usr/lib/systemd/systemd"))
(initrd "(hd0,msdos1)/initrd"))))))
...transforms into
menuentry "openSUSE" {
search --file --set (hd0,msdos1)/vmlinuz
linux (hd0,msdos1)/vmlinuz root=/dev/venom/opensuse init=/usr/lib/systemd/systemd
initrd (hd0,msdos1)/initrd
}
I think that if linux contains prefix '(.*)/', there should be no
search for kernel.
Thank you very much for fixing this bug (especially when I wasn't
able). I believe that fixing this bug is big step in more friendly
behavior to other OS.
Best regards,
S_W
-----BEGIN PGP SIGNATURE-----
iQIcBAEBCAAGBQJX2XfdAAoJEEoj40+gM0NtbAAP/0PBkrVeMBGrUopWmp5mxcTz
3iuz3mpKLjIzGu9XiLr9XymvKoZVvF2N+/Xp6Mqrt6UFsa4z0kA4d6oEq+8kslgL
/RCFi20kvD7lA0MtGJmZl4VX3xiL8aZimfTVgAR2KdSiz4r1XHdnzoNZ68D+qssq
7NWQmlwJ5MIbUame1txbdOdPW6Zb9vikpH/vcFcKt4P96nCyDakOq0h5MlMrq3p3
y/L8vYu3xt2loPHnUUlUUuHr2qIEjbGLv1ePTslFYNKR21wUTXb4R50k8oxW1maY
wu+xB7N0Tj9mrjnrMcAdMRhYWVpvl9UUHtAgKrEeFgtPwyobNJ1RvFpT38LBkLzl
6UC02CN9eYfl0nBlafsOsnTbsM+5Zrx+SMenANPHOZDCRaj3EHcvn5XWjWk2ptnu
dsslrjVyCBffHmvGqgDV4r2wwWBCC5/q9zz5L40AsBzCsM+Si4/YA1BfaKrgP6AX
BNb8wgZZig0jT7wx37geVKVFOVo+NwID6lBU8QDe6eKN/IlE+8UhPL9zao1gusJo
xDUGjoBQ5FgY7KZoGXDsHcioyMMs/uSWSGZKu+rq4lHgnosX8ZYlVfe+nJ09wn4R
VuXYbKYRPIEPVemqbnP85vX7rDeU3Nj9D6gtxFmjJUiWtjU6v1NzrC3bkpPWNzEg
CoGp9sqlENaRLawtHvCy
=O2b3
-----END PGP SIGNATURE-----