GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Conversation

Notices

  1. Embed this notice
    Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:24 JST Lennart Poettering Lennart Poettering

    Fun little thing I have been working on: teach systemd to boot directly into a disk image downloaded via HTTP within the initrd.

    In v257 systemd learnt the ability to download disk images at boot via systemd-import-generator, both DDIs and tarballs, and place them in /var/lib/machines/, /var/lib/portables/, /var/lib/confexts, /var/lib/extensions/. The goal was to provide a way to provision any of these resources automatically at boot. But now that we have this, we can take it a step further:

    In conversation about 4 months ago from mastodon.social permalink
    • Embed this notice
      Account: Computers (pro@mu.zaitcev.nu)'s status on Thursday, 13-Feb-2025 09:02:21 JST Account: Computers Account: Computers
      in reply to
      @pid_eins It all sounded very good until the last moment. The whole point if downloading the whole thing is to let the thing be stored compressed or shared in unlimited ways. Once you start downloading block-by-block, you're throwing it all out the window. Might was well just back the root with that image on a translucent (CoW) filesystem or something.
      In conversation about 4 months ago permalink
      Haelwenn /элвэн/ :triskell: likes this.
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:22 JST Lennart Poettering Lennart Poettering
      in reply to

      So, two take-aways here:

      1. Really nice test loop now for testing immutable, modern OSes on physical devices, with onboard tooling

      2. Yeah, you can frickin' boot into a damn tarball now, with just an UKI.

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:22 JST Lennart Poettering Lennart Poettering
      in reply to

      WIP PR for all of this is here:

      https://github.com/systemd/systemd/pull/36314

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:22 JST Lennart Poettering Lennart Poettering
      in reply to

      oh, and one more comment: this will only work on systems that are relatively high on the systemd adoption scale: you definitely need a systemd-based initrd for this. For deriving the rootfs URL from the UEFI network boot URL you need a systemd-stub based UKI.

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:22 JST Lennart Poettering Lennart Poettering
      in reply to

      and even one more comment:

      next steps: instead of downloading root fs via http, access it via nvme-over-tcp.

      Benefit: better performance (no ahead of time download, but download as needed), and even better: persistency!

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:23 JST Lennart Poettering Lennart Poettering
      in reply to

      Net result of this: I can now point my UEFI to a single URL where it will load the UKI from. A few seconds later the initrd will pick up the rootfs from the same source, and boot it up. Magic!

      Why all this though?

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:23 JST Lennart Poettering Lennart Poettering
      in reply to
      • Gerd Hoffmann

      It's mostly to tighten my test loop a bit, for physical devices. So here's what this entails:

      1. You build your image with mkosi one your development machine, and ask it to serve your image as HTTP. In other words: `mkosi -f serve`.

      2. You boot into the target machine once, and register an EFI variable that enables HTTP boot from your development machine. Simply do `kernel-bootcfg --add-uri=http://192.168.47.11:8081/image.efi --title=testloop --boot-order=0`, using @kraxel's wonderful tool.

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:23 JST Lennart Poettering Lennart Poettering
      in reply to

      3. You simply reboot that target machine. It will now fetch the UKI kernel, which then fetches the root disk image. And everytime you reboot this happens again. The target's machine#s local disks are unnaffected.

      4. …

      5. Profit!!

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:23 JST Lennart Poettering Lennart Poettering
      in reply to

      Sounds simple? That's because it is.

      (Well of course, you wonder where the magic sauce is. It's here: you need to build your UKIs a certain way: i.e. add to the kernel cmdline: `rd.systemd.pull=verify=no,machine,blockdev,bootorigin,raw:root:image.raw rootflags=x-systemd.device-timeout=infinity ip=any`)

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:24 JST Lennart Poettering Lennart Poettering
      in reply to

      download the root disk image itself with this. There were a bunch of missing bits to make this nice though:

      First of all, for raw disk images we need to attach them to a loopback block device, to make them mountable. Easy-peasy, systemd-dissect --attach already delivers that.

      Then, for tar disk images we need to bind mount the downloaded and unpacked image to /sysroot/ (which is where the rootfs goes before we transition into it).

      In conversation about 4 months ago permalink
    • Embed this notice
      Lennart Poettering (pid_eins@mastodon.social)'s status on Thursday, 13-Feb-2025 09:02:24 JST Lennart Poettering Lennart Poettering
      in reply to

      Then, to make this nicer, it makes sense to allow deriving the URL to download the rootfs image from directly from the UEFI HTTP boot URL. Or in other words: if you point your UEFI to boot a UKI from some URL (i.e. http://example.com/somedir/myimage.efi), then that UKI's initrd is smart enough to derive from that same URL a different URL for the rootfs (by replacing the final component, so that it becomes http://example.com/somedir/myimage.raw.xz).

      In conversation about 4 months ago permalink

      Attachments



Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.