unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Brice Waegeneire <brice@waegenei.re>
To: Vagrant Cascadian <vagrant@debian.org>
Cc: guix-devel@gnu.org
Subject: Re: [GSOC 2020] network-boot-service
Date: Thu, 02 Jul 2020 18:59:11 +0000	[thread overview]
Message-ID: <e8052a0ac3baa0e2097b04362cf4f66c@waegenei.re> (raw)
In-Reply-To: <87lfk1anaw.fsf@ponder>

Hello Vagrant,

On 2020-07-02 16:34, Vagrant Cascadian wrote:
> On 2020-07-02, Brice Waegeneire wrote:
>> To support the widest hardware and boot options possible I went with
>> iPXE
>> as a chainloader. Meaning that any machine doing a PXE boot (or with
>> builtin iPXE with restricted feature set) will load the iPXE 
>> bootloader
>> first, which will then properly load the initrd.
> 
> iPXE is really cool! The main downside is I don't think the support for
> non-x86 architectures is there, but would be happy to find out
> otherwise.
> 

It looks like it does support arm 32 and 64 bits EFI:
https://ipxe.org/appnote/buildtargets. Anyway dnsmasq can be configured 
to
provide PXE entries by on the client's architecture or feature it 
support.
For example using network-boot-service, a iPXE client without http 
support
will chainload Guix's iPXE which has http support.

>> Currently I'm working on the initrd part to add NFS mounting 
>> capability
>> to
>> it. At this point I'm blocked by building a lightweight staticly built
>> 'nfs-utils' package to be included in the initrd. It's current total
>> size
>> 219.2 MiB, I manage to reduced it to 162.2 MiB which is still one 
>> order
>> of
>> magnitude larger than my initrd at 19 MiB.
>> 
>> My issue building a static 'nfs-utils' is that it can't find
>> 'getrpcbynumber{,_r}' “configure: error: Neither getrpcbynumber_r nor
>> getrpcbynumber are available”. This function should be provided by the
>> libc
>> or by libtirpc if it's not that first one. The problem is that
>> 'libtirpc'
>> don't build it's own 'getrpcbynumber' because it find one in libc but
>> nfs-utils can't find it...
> 
> Have you looked into using klibc (or maybe busybox) instead? They might
> be smaller and have enough capability to mount NFS.

Non I did not, thanks for the tip. Busybox is smaller that was I
expecting, 1.0 MiB by itself, but it doesn't seems it would follow the
Guix way of doing most of the work in Guile (and using boot-to-Guile™)
and it's unique binary forbid us to extract only the NFS part. As for
klibc, it seems to be what NixOS[1] is using and TIL that it also the
the original source of Arch's mkinitcpio-nfs-utils which is 
unmaintained.
So klibc may work here, I'll try packaging it.

>> Some other distros are using the kernel parameter 'nfsroot'[2], but we
>> probably don't want to use it since it can't be used together with an
>> initrd and it also mean we need built-in modules for NFS and network
>> card
>> driver in the kernel.
> 
> Debian at least implements support for the nfsroot kernel parameter by
> emulating the behavior in the initrd, using kernel modules instead of
> built-ins. Seems like Guix could do the same?

Do you happen to know which package implement it in Debian? Yes, there
will be a need to pass parameters to the initrd so we better use the
common syntax.

> If you're trying to use user-space NFS, I suspect you'll run into a lot
> of issues... Debian at least dropped support for parts of the 
> user-space
> NFS stack years ago as it had huge numbers of bugs and little activity
> upstream.

What do you mean by “user-space NFS”, be it nfs-utils, busybox or klibc,
they all are user-space tools to used to mount NFS shares?
Do you have some reference about this, I would like to learn more about
it. It's true that I did not find anyone trying to build a static
nfs-utils...

> Great to hear about progress on this work!
> 
> 
> live well,
>   vagrant

[1]: 
https://github.com/NixOS/nixpkgs/commit/d25c1a8fdc383b8997f6e7b4e1479875df1f06b2
[2]: 
https://github.com/NixOS/nixpkgs/blob/84cf00f98031e93f389f1eb93c4a7374a33cc0a9/pkgs/os-specific/linux/mkinitcpio-nfs-utils/default.nix

- Brice


      reply	other threads:[~2020-07-02 18:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-02 10:11 [GSOC 2020] network-boot-service Brice Waegeneire
2020-07-02 12:35 ` Danny Milosavljevic
2020-07-02 16:34 ` Vagrant Cascadian
2020-07-02 18:59   ` Brice Waegeneire [this message]

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=e8052a0ac3baa0e2097b04362cf4f66c@waegenei.re \
    --to=brice@waegenei.re \
    --cc=guix-devel@gnu.org \
    --cc=vagrant@debian.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).