<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><font size="+1"><tt>Hi there,</tt></font></p>
    <p><font size="+1"><tt>I built/d a bunch of RHEL, Centos and other
          'clones' clusters. First of all, if you need a disk to start a
          cluster node, well, it's not diskless. Typically, you'd boot a
          node using PXE. (also, local disks in a diskless environment
          always causes weird trouble).<br>
        </tt></font></p>
    <p><font size="+1"><tt>After that there are several routes you can
          take. You can do something straight forward, like use
          DHCP/tftp or for example use perceus and vnfs for creating
          your boot images (or something similar). Perceus and vnfs are
          older, but very manageable, especially on larger scale
          clusters (dozens/hundreds/thousands) and are still used.</tt></font></p>
    <p><font size="+1"><tt>Since you're trying to netboot a RPI, I'd
          probably keep the initram disk very small and actually use
          something like perceus and vnfs.  (with vnfs you can actually
          build your whole image, deciding what needs to be on the
          ramdisk, and what are links to an nfs mount). Using Perceus
          you'd boot the RPI using a kernel for handling the vnfs
          image/capsule, and after all of that is taken care of, it
          switches (kexec) to the kernel you actually want to run.</tt></font></p>
    <p><font size="+1"><tt>The stateless part; maybe, but depending on
          what sort of cluster you want to setup up, you'd start
          changing "the state" of an image right after boot, before you
          re-connect, or use different vnfs capsules all together.</tt></font></p>
    <p><font size="+1"><tt>It might be easier to start with dhcp/tftp,
          to get things going. If what you want to accomplish is more
          elaborate then just bring up a few networked diskless nodes,
          you probably want to look into something like perceus or so.</tt></font></p>
    <p><font size="+1"><tt>If you want to "run" a complete distro, you'd
          probably have to since the RPI only has 2Gb, and you can't
          stick a complete filesystem into that.<br>
        </tt></font></p>
    <p><font size="+1"><tt><br>
        </tt></font></p>
    <p><font size="+1"><tt>Ron<br>
        </tt></font></p>
    <p><font size="+1"><tt></tt></font><br>
    </p>
    <div class="moz-cite-prefix">On 6/4/19 12:16 PM, Seth Meyer wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CABLfHeomj+2m23mi9LoZ=3CvnrSq_g9D_Xq=gn+qsSzdY8S7tQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hello,<br>
        <br>
        A colleague and I are trying to get an ARM server to boot
        stateless (i.e. diskless).  Has anyone had any success with
        this?  Our primary source of inspiration is the documentation
        for the Pegasus cluster:  <br>
        <br>
        <a href="http://web.mst.edu/~vojtat/pegasus/administration.htm"
          moz-do-not-send="true">http://web.mst.edu/~vojtat/pegasus/administration.htm</a><br>
        <br>
        Basically, the idea is to have the kernel load a custom
        initramfs that decompresses a file system image onto a tmpfs at
        boot time (along with some other setup), then execute a
        `switch_root` to said tmpfs.<br>
        <br>
        We have succeeded in getting an x86_64 machine to boot (mostly)
        diskless, using the disk only for the boot process by creating a
        GRUB entry.  However, when we try this with my ARM (ThunderX)
        server, the kernel panics during the boot process because it
        cannot find init.  We have also tried passing `init=/init` as a
        kernel parameter with no luck.   The error message is <br>
        <br>
        Kernel panic - not syncing: No working init found. Try passing
        init= option to kernel. See Linux Documentation/init.txt for
        guidance.<br>
        <br>
        We looked at the referenced documentation and it's not a ton of
        help for my specific case.  The initramfs environment is based
        on Busybox, which we compiled on a ThunderX machine (the same
        one we are trying to boot from, in fact).<br>
        <br>
        We have considered compiling my own kernel with the initramfs
        built in, but we are trying to avoid doing that.  Further, we
        have tried with the 3.10 and 4.4 kernels on x86, and with 4.5
        and 4.14 kernels on aarch64.  <br>
        <br>
        Does anyone have any guidance?  Also, please let us know if you
        need more information.<br>
        <div><br>
        </div>
        <div>Best regards,<br>
          <br>
          Marc Patton and Seth Meyer<br>
          ARC-TS - <a href="https://arc-ts.umich.edu/"
            moz-do-not-send="true">https://arc-ts.umich.edu/</a><br>
          University of Michigan<br>
          <br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Arm-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Arm-dev@centos.org">Arm-dev@centos.org</a>
<a class="moz-txt-link-freetext" href="https://lists.centos.org/mailman/listinfo/arm-dev">https://lists.centos.org/mailman/listinfo/arm-dev</a>
</pre>
    </blockquote>
  </body>
</html>