Announcement

Collapse
No announcement yet.

FreeBSD Making Progress On Wayland Support, The Basics Are Working

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • FreeBSD Making Progress On Wayland Support, The Basics Are Working

    Phoronix: FreeBSD Making Progress On Wayland Support, The Basics Are Working

    FreeBSD is making some progress on supporting Wayland/Weston as an alternative to running the X.Org Server...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    Respect for FBSD rising.

    Lol for usual GNOME's systemd dependencies issues.

    Comment


    • #3
      I expected GDM to be something of a non-starter until FreeBSD's systemd-like solution is up and running.

      As near as I can tell, FreeBSD is still quite a ways away from that.

      Comment


      • #4
        Originally posted by Duve View Post
        I expected GDM to be something of a non-starter until FreeBSD's systemd-like solution is up and running.

        As near as I can tell, FreeBSD is still quite a ways away from that.
        Umm, what does a display protocol have to do with an init system anyway?

        EDIT: no wait, read that wrong. You meant Gnome Display Manager right?

        Comment


        • #5
          Originally posted by Duve View Post
          I expected GDM to be something of a non-starter until FreeBSD's systemd-like solution is up and running.

          As near as I can tell, FreeBSD is still quite a ways away from that.
          It doesn't matter. FreeBSD isn't going for a systemd-like init system (Launchd is adopted by NextBSD and TrueOS, but not FreeBSD) and it isn't going for a systemd-stub type system either, as far as I'm aware.

          Wayland on FreeBSD will be nice, I just hope it can run without dbus being a dependency - Sway shouldn't need it.

          Comment


          • #6
            Neither the article nor the email even mention systemd init (only logind APIs) and the idiots here still freak out. Pathetic.

            Comment


            • #7
              TrueOS is actually moving onto OpenRC, not launchd.

              Comment


              • #8
                Originally posted by starshipeleven View Post
                Umm, what does a display protocol have to do with an init system anyway?
                It doesn't, I am referring to Gnome Display Manager.
                Originally posted by TeamBlackFox View Post

                It doesn't matter. FreeBSD isn't going for a systemd-like init system (Launchd is adopted by NextBSD and TrueOS, but not FreeBSD) and it isn't going for a systemd-stub type system either, as far as I'm aware.
                It's going to be different to some degree since there is a urge in FreeBSD to build their own system from the ground up, but both systemd and launchd have been named as inspirations to such. I would expect some similarities to them when the solution does appear. It's not like they have anything else to work with...

                OpenRC is more or less a non-starter due to the lack of documentation.
                All efforts to simply port launchd have ended in failure to some degree, mostly on the issue of licensing and binding.
                And with systemd using the LGPL, it too has licensing complications for a core system component on top of FreeBSD developers feeling that systemd pushes itself out of scope for the things that it does manage. Oh, and systemd being limited to linux and linux only.

                That said, there is a feeling that they need something to replace old SysV init since there are ways to do it better. I would expect something similar at this point since most of the research has headed in the direction of systemd, with it being one of the few things that they can openly look at in it's entirety. That said, assuming that it would be like OpenBSD's systembsd effort would be rather naive at this point, since copying systemd wholesale isn't really a good idea.

                Comment


                • #9
                  Originally posted by Duve View Post
                  That said, there is a feeling that they need something to replace old SysV init since there are ways to do it better. I would expect something similar at this point since most of the research has headed in the direction of systemd, with it being one of the few things that they can openly look at in it's entirety. That said, assuming that it would be like OpenBSD's systembsd effort would be rather naive at this point, since copying systemd wholesale isn't really a good idea.
                  Well for one none of the mainstream BSDs use sysvinit. There's no /etc/inittab, no runlevels etc. You have /etc/rc.d for system init scripts, /usr/local/etc/rc.d for installed init scripts, /etc/rc.conf to enable/disable services and configure services/kernel on startup, and /etc/ttys to manage display managers like xdm and the ttys. It's a BSD init system and while it's far from feature-rich it has far less of the issues that sysvinit has - namely bsd init has a simpler start up, more intuitive configuration and it's far more reliable. Is it great? Hell to the no.

                  I'd personally say OpenRC is not worth it. I've used it, it's fine - but it is a Gentoo project. Runit is good. System XVI was promising, jobd is okay I guess. Ultimately I'd probably like a system that works similarly to SMF, keeps the current rc.conf syntax and avoids the pitfalls that launchd (which is designed around macOS and XNU, it is unsuitable for freebsd) and systemd (whose design makes dangerous assumptions).

                  I've educated myself on systemd's architecture, and I have three main complaints:

                  Over-reliance on dbus/kdbus. We already have sockets, shared memory, and on System V and BSD, STREAMS. Linux could have adopted STREAMS and that would have ended this crap long ago.

                  The PID 1 (Process manager and init) design makes unsafe assumptions: That all code running on the system is trusted. That any untrusted attacks will be caught by SELinux, namespaces, or privilege separation systems. That race conditions affecting the process manager are unlikely. The latter is troubling because in the event I exploit a race condition that allows me access to a process running with root privileges, I am in control. I can steal any data, bring down the system, destroy all of the data, or bring the server/desktop into a botnet.

                  Tight integration of all these system services leaves you with a monolithic, if modular architecture. It doesn't matter if I can compile it without what I need - the fact is most Linux distributions don't have ports trees, don't have some system you can use to customize software before it's installed - which means you have to build it out of the package manager. And that kind of defeats the purpose of having something like a package manager. At least, as of the systemd that got merged into Arch back in 2013 you couldn't specify what to install directly from pacman. That may have changed. But as long as I've had X, all the way back to the Xfree86 days, I remember that even then I could opt out of installing any part of the X package.

                  Comment


                  • #10
                    Originally posted by TeamBlackFox View Post
                    The PID 1 (Process manager and init) design makes unsafe assumptions: That all code running on the system is trusted.
                    Uhm, wait, what? Then why the fuck does it offer its own compartimentalization, access restriction, and so on features (basically exposing kernel features, btw)? Sure you can decide to not use them, but that's your (server admin or distro mantainer) responsibility.

                    That race conditions affecting the process manager are unlikely. The latter is troubling because in the event I exploit a race condition that allows me access to a process running with root privileges, I am in control.
                    The process manager running at PID1 has the minimum functionality necessary for its function, all other stuff like say logind and friends are run as daemons with other PID and non-root privileges.

                    Afaik the script-based init systems have far more issues about random shit happening (not just race conditions, just about anything can happen in a script) and giving root access to everyone doing a simple exploit to a fucking database that was supposed to have no outside access (but is accessed by a website, of course).
                    True story, btw.

                    Tight integration of all these system services leaves you with a monolithic, if modular architecture.
                    Aah, the same old bullshit again. You are wrong, see above, or below.

                    It doesn't matter if I can compile it without what I need - the fact is most Linux distributions don't have ports trees, don't have some system you can use to customize software before it's installed - which means you have to build it out of the package manager.
                    This is a distro issue, only binaries that are actually fused together are the init and the logger, everything else is a separate binary. If your distro decides to ship them as a package, complain with your distro's mantainers.

                    This is the full content of the "systemd" package here on OpenSUSE, note how there is around 15 different binaries in there. (redacted a ton of systemd service or unit files, manuals and translations from the list as it was getting kinda long, and they are not needed to prove my point anyway)

                    Code:
                    systemd - A System and Session Manager
                    
                    /bin/systemctl
                    /bin/systemd
                    /bin/systemd-ask-password
                    /etc/X11/xinit
                    /etc/X11/xinit/xinitrc.d
                    /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
                    /etc/X11/xorg.conf.d
                    /etc/X11/xorg.conf.d/00-keyboard.conf
                    /etc/binfmt.d
                    /etc/dbus-1
                    /etc/dbus-1/system.d
                    /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
                    /etc/dbus-1/system.d/org.freedesktop.import1.conf
                    /etc/dbus-1/system.d/org.freedesktop.locale1.conf
                    /etc/dbus-1/system.d/org.freedesktop.login1.conf
                    /etc/dbus-1/system.d/org.freedesktop.machine1.conf
                    /etc/dbus-1/system.d/org.freedesktop.systemd1.conf
                    /etc/dbus-1/system.d/org.freedesktop.timedate1.conf
                    /etc/locale.conf
                    /etc/machine-id
                    /etc/machine-info
                    /etc/modules-load.d
                    /etc/pam.d/systemd-user
                    /etc/sysctl.d
                    /etc/systemd
                    /etc/systemd/bootchart.conf
                    /etc/systemd/coredump.conf
                    /etc/systemd/journald.conf
                    /etc/systemd/logind.conf
                    /etc/systemd/system
                    /etc/systemd/system.conf
                    /etc/systemd/system/runlevel2.target
                    /etc/systemd/system/runlevel3.target
                    /etc/systemd/system/runlevel4.target
                    /etc/systemd/system/runlevel5.target
                    /etc/systemd/timesyncd.conf
                    /etc/systemd/user
                    /etc/systemd/user.conf
                    /etc/tmpfiles.d
                    /etc/vconsole.conf
                    /etc/xdg/systemd
                    /etc/xdg/systemd/user
                    /lib64/security/pam_systemd.so
                    /usr/bin/bootctl
                    /usr/bin/busctl
                    /usr/bin/coredumpctl
                    /usr/bin/hostnamectl
                    /usr/bin/journalctl
                    /usr/bin/kernel-install
                    /usr/bin/localectl
                    /usr/bin/loginctl
                    /usr/bin/machinectl
                    /usr/bin/systemctl
                    /usr/bin/systemd-analyze
                    /usr/bin/systemd-ask-password
                    /usr/bin/systemd-cat
                    /usr/bin/systemd-cgls
                    /usr/bin/systemd-cgtop
                    /usr/bin/systemd-delta
                    /usr/bin/systemd-detect-virt
                    /usr/bin/systemd-escape
                    /usr/bin/systemd-firstboot
                    /usr/bin/systemd-inhibit
                    /usr/bin/systemd-journalctl
                    /usr/bin/systemd-loginctl
                    /usr/bin/systemd-machine-id-setup
                    /usr/bin/systemd-notify
                    /usr/bin/systemd-nspawn
                    /usr/bin/systemd-path
                    /usr/bin/systemd-run
                    /usr/bin/systemd-stdio-bridge
                    /usr/bin/systemd-sysusers
                    /usr/bin/systemd-tmpfiles
                    /usr/bin/systemd-tty-ask-password-agent
                    /usr/bin/timedatectl
                    /usr/lib/binfmt.d
                    /usr/lib/kernel
                    /usr/lib/kernel/install.d
                    /usr/lib/kernel/install.d/50-depmod.install
                    /usr/lib/kernel/install.d/90-loaderentry.install
                    /usr/lib/modules-load.d
                    /usr/lib/modules-load.d/sg.conf
                    /usr/lib/sysctl.d
                    /usr/lib/sysctl.d/50-coredump.conf
                    /usr/lib/systemd
                    /usr/lib/systemd/boot
                    /usr/lib/systemd/boot/efi
                    /usr/lib/systemd/boot/efi/linuxx64.efi.stub
                    /usr/lib/systemd/boot/efi/systemd-bootx64.efi
                    /usr/lib/systemd/catalog
                    /usr/lib/systemd/catalog/systemd.be.catalog
                    /usr/lib/systemd/catalog/[email protected]
                    /usr/lib/systemd/catalog/systemd.catalog
                    /usr/lib/systemd/catalog/systemd.fr.catalog
                    /usr/lib/systemd/catalog/systemd.it.catalog
                    /usr/lib/systemd/catalog/systemd.pl.catalog
                    /usr/lib/systemd/catalog/systemd.pt_BR.catalog
                    /usr/lib/systemd/catalog/systemd.ru.catalog
                    /usr/lib/systemd/catalog/systemd.zh_CN.catalog
                    /usr/lib/systemd/catalog/systemd.zh_TW.catalog
                    /usr/lib/systemd/fix-machines-subvol-for-rollbacks.sh
                    /usr/lib/systemd/import-pubring.gpg
                    /usr/lib/systemd/ntp-units.d
                    /usr/lib/systemd/system
                    /usr/lib/systemd/system-generators
                    /usr/lib/systemd/system-generators/systemd-cryptsetup-generator
                    /usr/lib/systemd/system-generators/systemd-dbus1-generator
                    /usr/lib/systemd/system-generators/systemd-debug-generator
                    /usr/lib/systemd/system-generators/systemd-fstab-generator
                    /usr/lib/systemd/system-generators/systemd-getty-generator
                    /usr/lib/systemd/system-generators/systemd-gpt-auto-generator
                    /usr/lib/systemd/system-generators/systemd-hibernate-resume-generator
                    /usr/lib/systemd/system-generators/systemd-insserv-generator
                    /usr/lib/systemd/system-generators/systemd-rc-local-generator
                    /usr/lib/systemd/system-generators/systemd-system-update-generator
                    /usr/lib/systemd/system-generators/systemd-sysv-generator
                    /usr/lib/systemd/system-preset
                    /usr/lib/systemd/system-preset/99-default.preset
                    /usr/lib/systemd/system-shutdown
                    /usr/lib/systemd/system-sleep
                    /usr/lib/systemd/system/-.slice
                    ...
                    /usr/lib/systemd/systemd
                    /usr/lib/systemd/systemd-ac-power
                    /usr/lib/systemd/systemd-activate
                    /usr/lib/systemd/systemd-backlight
                    /usr/lib/systemd/systemd-binfmt
                    /usr/lib/systemd/systemd-bootchart
                    /usr/lib/systemd/systemd-bus-proxyd
                    /usr/lib/systemd/systemd-cgroups-agent
                    /usr/lib/systemd/systemd-coredump
                    /usr/lib/systemd/systemd-cryptsetup
                    /usr/lib/systemd/systemd-export
                    /usr/lib/systemd/systemd-fsck
                    /usr/lib/systemd/systemd-hibernate-resume
                    /usr/lib/systemd/systemd-hostnamed
                    /usr/lib/systemd/systemd-import
                    /usr/lib/systemd/systemd-importd
                    /usr/lib/systemd/systemd-initctl
                    /usr/lib/systemd/systemd-journald
                    /usr/lib/systemd/systemd-localed
                    /usr/lib/systemd/systemd-logind
                    /usr/lib/systemd/systemd-machined
                    /usr/lib/systemd/systemd-modules-load
                    /usr/lib/systemd/systemd-pull
                    /usr/lib/systemd/systemd-quotacheck
                    /usr/lib/systemd/systemd-random-seed
                    /usr/lib/systemd/systemd-remount-fs
                    /usr/lib/systemd/systemd-reply-password
                    /usr/lib/systemd/systemd-rfkill
                    /usr/lib/systemd/systemd-shutdown
                    /usr/lib/systemd/systemd-sleep
                    /usr/lib/systemd/systemd-socket-proxyd
                    /usr/lib/systemd/systemd-sysctl
                    /usr/lib/systemd/systemd-timedated
                    /usr/lib/systemd/systemd-timesyncd
                    /usr/lib/systemd/systemd-update-done
                    /usr/lib/systemd/systemd-update-utmp
                    /usr/lib/systemd/systemd-user-sessions
                    /usr/lib/systemd/systemd-vconsole-setup
                    /usr/lib/systemd/user
                    /usr/lib/systemd/user-generators
                    /usr/lib/systemd/user-generators/systemd-dbus1-generator
                    /usr/lib/systemd/user-preset
                    /usr/lib/systemd/user/basic.target
                    /usr/lib/systemd/user/bluetooth.target
                    /usr/lib/systemd/user/busnames.target
                    /usr/lib/systemd/user/default.target
                    /usr/lib/systemd/user/exit.target
                    /usr/lib/systemd/user/paths.target
                    /usr/lib/systemd/user/printer.target
                    /usr/lib/systemd/user/shutdown.target
                    /usr/lib/systemd/user/smartcard.target
                    /usr/lib/systemd/user/sockets.target
                    /usr/lib/systemd/user/sound.target
                    /usr/lib/systemd/user/systemd-bus-proxyd.service
                    /usr/lib/systemd/user/systemd-bus-proxyd.socket
                    /usr/lib/systemd/user/systemd-exit.service
                    /usr/lib/systemd/user/timers.target
                    /usr/lib/sysusers.d
                    /usr/lib/sysusers.d/basic.conf
                    /usr/lib/sysusers.d/systemd.conf
                    /usr/lib/tmpfiles.d
                    /usr/lib/tmpfiles.d/etc.conf
                    /usr/lib/tmpfiles.d/home.conf
                    /usr/lib/tmpfiles.d/journal-nocow.conf
                    /usr/lib/tmpfiles.d/legacy.conf
                    /usr/lib/tmpfiles.d/systemd-nologin.conf
                    /usr/lib/tmpfiles.d/systemd-nspawn.conf
                    /usr/lib/tmpfiles.d/systemd.conf
                    /usr/lib/tmpfiles.d/tmp.conf
                    /usr/lib/tmpfiles.d/var.conf
                    /usr/lib/tmpfiles.d/x11.conf
                    /usr/lib/udev/rules.d/70-uaccess.rules
                    /usr/lib/udev/rules.d/71-seat.rules
                    /usr/lib/udev/rules.d/73-seat-late.rules
                    /usr/lib/udev/rules.d/99-systemd.rules
                    /usr/sbin/systemd-sysv-convert
                    /usr/share/dbus-1
                    /usr/share/dbus-1/services
                    /usr/share/dbus-1/services/org.freedesktop.systemd1.service
                    /usr/share/dbus-1/system-services
                    /usr/share/dbus-1/system-services/org.freedesktop.hostname1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.import1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.locale1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.login1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.machine1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.systemd1.service
                    /usr/share/dbus-1/system-services/org.freedesktop.timedate1.service
                    /usr/share/doc/packages/systemd
                    /usr/share/doc/packages/systemd/CODING_STYLE
                    /usr/share/doc/packages/systemd/DIFFERENCES
                    /usr/share/doc/packages/systemd/DISTRO_PORTING
                    /usr/share/doc/packages/systemd/GVARIANT-SERIALIZATION
                    /usr/share/doc/packages/systemd/LICENSE.GPL2
                    /usr/share/doc/packages/systemd/LICENSE.LGPL2.1
                    /usr/share/doc/packages/systemd/NEWS
                    /usr/share/doc/packages/systemd/PORTING-DBUS1
                    /usr/share/doc/packages/systemd/README
                    /usr/share/factory
                    /usr/share/factory/etc
                    /usr/share/factory/etc/nsswitch.conf
                    /usr/share/factory/etc/pam.d
                    /usr/share/factory/etc/pam.d/other
                    /usr/share/factory/etc/pam.d/system-auth
                    ...

                    Comment

                    Working...
                    X