all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Chris Marusich <cmmarusich@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: GuixSD bootable ISO-9669 image (was: Re: GuixSD on servers [Fwd: [rtracker.1984.is #131647] A question about VServer system specific requirements])
Date: Sun, 23 Apr 2017 22:11:04 -0700	[thread overview]
Message-ID: <87k26afl07.fsf_-_@gmail.com> (raw)
In-Reply-To: <87pog3u3ms.fsf@gmail.com> (Chris Marusich's message of "Sat, 22 Apr 2017 21:52:43 -0700")

[-- Attachment #1: Type: text/plain, Size: 4745 bytes --]

Chris Marusich <cmmarusich@gmail.com> writes:

> ludo@gnu.org (Ludovic Courtès) writes:
>
>>> There appear to be (at least) two problem that prevent this naive
>>> solution from working, which might point us in the right direction:
>>>
>>> First, the GRUB menu is trying to find a file system with label
>>> "gnu-disk-image" (via "search --label --set gnu-disk-image"), which
>>> won't work because there is no file system with that label in the
>>> resulting image.
>>
>> So it seems that the crux of the problem is that ISO9660 lacks file
>> system labels, which breaks the whole thing, right?
>
> Yes, probably.  It seems we can set a "volume id", but not a label like
> in EXT file systems.  For example, see here:
>
> https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/cd-dvd/iso-image.nix

I discovered that grub-mkrescue also lets you pass through options to
xorriso.  So, you can set the volume ID as follows:

--8<---------------cut here---------------start------------->8---
$ sudo grub-mkrescue -V gnu-disk-image -v -o /tmp/test-img.iso /mnt/disk-image-partition-1
...
grub-mkrescue: info: enabling BIOS support ....
grub-mkrescue: info: grub-mkimage --directory '/gnu/store/2hxz9cpipsbf2hkiz5aq70k73wjj0fw1-grub-2.02rc1/lib/grub/i386-pc' --prefix '/boot/grub' --output '/tmp/grub.zilpbK/boot/grub/i386-pc/eltorito.img' --format 'i386-pc-eltorito' --compression 'auto'  --config '/tmp/grub.N4OuA5' 'biosdisk' 'iso9660' 
...
grub-mkrescue: info: executing xorriso -as mkisofs -graft-points --modification-date=2017042404413800 -b boot/grub/i386-pc/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info --grub2-mbr /gnu/store/2hxz9cpipsbf2hkiz5aq70k73wjj0fw1-grub-2.02rc1/lib/grub/i386-pc/boot_hybrid.img --protective-msdos-label -o /tmp/test-img.iso -r /tmp/grub.zilpbK --sort-weight 0 / --sort-weight 1 /boot -V gnu-disk-image /mnt/disk-image-partition-1.
...
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
...
Writing to 'stdio:/tmp/test-img.iso' completed successfully.
--8<---------------cut here---------------end--------------->8---

Looks like setting the volume ID worked (despite the warning above):

--8<---------------cut here---------------start------------->8---
$ sudo blkid /tmp/test-img.iso
/tmp/test-img.iso: UUID="2017-04-24-04-41-38-00" LABEL="gnu-disk-image" TYPE="iso9660" PTTYPE="dos"
--8<---------------cut here---------------end--------------->8---

>>> Second, the init process from the initrd (I think that's what it's
>>> called?) is trying to look for a file system with label
>>> "gnu-disk-image", which it never finds.  It just sits there waiting to
>>> find it, and it never shows up, so it freaks out.  Possible solution:
>>> modify the behavior of our initrd's init process.  I'm not sure how to
>>> customize the init process here, but there must be a way.  We'll
>>> probably also need the kernel module that enables reading of iso9660
>>> file systems, if it wasn't present already.
>>
>> So we could try detecting the root partition by a mechanism other than
>> partition labels/UUIDs, but I don’t know which mechanism.  Ideas?  How
>> do people address this?
>
> Volume ID seems like the right thing to try first.  What do we need to
> change to support this, I wonder?  I'm not familiar with the initrd
> stuff but would be willing to poke around in there and experiment.  I
> just don't really know where to begin.

Unfortunately, even after setting the volume ID, booting as follows does
not work.  The init process still doesn't find the partition with the
label "gnu-disk-image":

--8<---------------cut here---------------start------------->8---
$ sudo qemu-system-x86_64 -machine type=pc-i440fx-2.5,accel=kvm -boot order=dc,menu=on -m size=4G -k en-us -name guixsd -cdrom /tmp/test-img.iso /tmp/test
--8<---------------cut here---------------end--------------->8---

Judging by the contents of gnu/build/file-systems.scm, we don't have any
support for ISO-9669 file systems.  Perhaps if we add support here, the
machinery to find the partition labeled "gnu-disk-image" will work.
What do you think?

> By the way, do you think it's possible to build an ISO image from a
> manifest of files?

I'm still curious to hear your answer regarding this.  It isn't clear to
me whether we need to generate a disk image first, just to create the
ISO-9669 image.  It seems redundant.  I'm just playing around with the
disk image because it's an easy way to get at all the files.  If we can
put all the files in a single place without creating a disk image, then
we can probably invoke xorriso or grub-mkrescue directly on them.

-- 
Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  reply	other threads:[~2017-04-24  5:11 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-18 14:17 GuixSD on servers [Fwd: [rtracker.1984.is #131647] A question about VServer system specific requirements] ng0
2017-04-18 15:16 ` Chris Marusich
2017-04-19 20:59   ` Ludovic Courtès
2017-04-23  4:52     ` Chris Marusich
2017-04-24  5:11       ` Chris Marusich [this message]
2017-04-27 13:42         ` GuixSD bootable ISO-9669 image Ludovic Courtès
2017-04-27 17:08         ` GuixSD bootable ISO-9669 image (was: Re: GuixSD on servers [Fwd: [rtracker.1984.is #131647] A question about VServer system specific requirements]) Danny Milosavljevic
2017-04-27 20:00           ` Danny Milosavljevic
2017-04-28  8:18             ` Danny Milosavljevic
2017-05-02 12:37               ` GuixSD bootable ISO-9669 image Ludovic Courtès
2017-05-02 12:53                 ` ng0
2017-05-03  6:26                   ` Mark H Weaver
2017-05-02 20:09                 ` Danny Milosavljevic
2017-05-02 21:11                   ` Ludovic Courtès
2017-05-07 19:37                     ` Danny Milosavljevic
2017-05-08 14:14                       ` Ludovic Courtès
2017-05-11 23:30                         ` Danny Milosavljevic
2017-05-12 15:33                           ` Ludovic Courtès
2017-05-14 21:25                             ` Danny Milosavljevic
2017-05-16  8:31                               ` Ludovic Courtès
2017-06-06  9:35                                 ` Danny Milosavljevic
2017-06-08 12:25                                   ` Ludovic Courtès
2017-05-02 20:12                 ` Danny Milosavljevic

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k26afl07.fsf_-_@gmail.com \
    --to=cmmarusich@gmail.com \
    --cc=guix-devel@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 external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.