--- Begin Message ---
Subject: |
Re: Store on separate partition |
Date: |
Wed, 31 Aug 2016 14:48:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
>>> I am trying to move the store to a separate partition, but this is
>>> problematic as you need the store at boot time for the system
>>> utilities (and to mount partitions, actually).
>>>
>> I tried to do it recently but failed. My understanding is that it's
>> impossible, but I may be wrong.
>
> It would be interesting to fix it. In theory there’s no reason why it
> shouldn’t work (you need to mark the /gnu/store file system as
> ‘needed-for-boot?’.)
>
> If you or Carlos could try it and report details to address@hidden, we
> could start from there.
I got it more-or-less working. What I did is a plain 0.11 install, but
before the "herd start cow-store /mnt" step I had prepared the target
filesystems so I had:
/dev/sda1 mount as /mnt
/dev/sdb1 mounted as /mnt/gnu
To make the store go into /dev/sdb1
My system definition included:
--8<---------------cut here---------------start------------->8---
(file-systems (cons* (file-system
(device "my-root")
(title 'label)
(mount-point "/")
(type "ext4"))
(file-system
(device "/dev/sdb1")
(mount-point "/gnu")
(type "ext4")
(needed-for-boot? #t))
%base-file-systems))
--8<---------------cut here---------------end--------------->8---
When rebooting the installed system, I have to edit GRUB command line
(pressing 'e'), which was:
--8<---------------cut here---------------start------------->8---
search --file --set
/gnu/store/2qh58nr4sxc5jwv2ng9sqq06niab8sjp-linux-libre-4.7/bzImage
linux /gnu/store/2qh58nr4sxc5jwv2ng9sqq06niab8sjp-linux-libre-4.7/bzImage
--root=my-root --system=/gnu/store/4ji3d5v5ci91l69fgi4hdi73kc558whp-system
--load=/gnu/store/4ji3d5v5ci91l69fgi4hdi73kc558whp-system/boot
initrd /gnu/store/4ji3d5v5ci91l69fgi4hdi73kc558whp-system/initrd
--8<---------------cut here---------------end--------------->8---
By:
1) removing "/gnu" from search command, so GRUB root (not kernel root)
is correctly set as (hd1,msdos1), i.e. /dev/sdb1
2) removing "/gnu" from linux command, so the kernel is correctly loaded
by GRUB (/gnu is not removed from --system or --load, as those
commands are interpreted by gnu/build/linux-boot.scm after all
needed-for-boot filesystems have been mounted in their correct mount
points).
3) changing initrd path. Removing "/gnu" is not enough, as the path in
grub.cfg is a symlink to the real initrd, pointing into /gnu/store
which is not available at initrd-loading time. So I placed the
synlink destination there, removing "/gnu", so:
initrd /store/<hash>-base-initrd/initrd
And voilá, I can boot into my newly installed GuixSD with /gnu/store in
a separate partition.
Some other files (modules, background image) fail to be accesses by GRUB
as well with generated grub.cfg, but those are not essential to make the
system boot, in my system at least.
BR
Carlos
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#24346: [PATCH] Generate grub.cfg with correct paths when store is not in root partition |
Date: |
Mon, 26 Sep 2016 17:53:54 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
address@hidden (Carlos Sánchez de La Lama) skribis:
>> I ended up pushing a slightly modified version of this patch as
>> 0f65f54ebd76324653fd5506a7dab42ee44d9255.
>
> Great! Your version looks definitely better :-)
>
>> I verified the grub.cfg that ‘guix system reconfigure’ generates and it
>> seems to work fine. If you can confirm that it still works for you,
>> please say so to address@hidden :-)
>
> Works on my system which has store on a separate partition. I have
> checked grub module and image gets correctly found as well as kernel and
> initrd.
Great!
Ludo’.
--- End Message ---