Automatically choosing a VT for DRM compositor?
Ucan, Emre (ADITG/ESB)
eucan at de.adit-jv.com
Mon Oct 30 13:45:24 UTC 2017
Hello Matt and Pekka,
Actually, we are OK with running weston with a static tty within a systemd service file, but launcher_direct_connect() function is failing when user is not root.
Therefore, we patched weston to remove the expilicit check for root user. I am planning to send this patch to the mailing list.
We also updated ownership of drm and tty devices accordingly, so that weston can run as non-root user.
Best regards
Emre Ucan
Engineering Software Base (ADITG/ESB)
Tel. +49 5121 49 6937
> -----Original Message-----
> From: wayland-devel [mailto:wayland-devel-
> bounces at lists.freedesktop.org] On Behalf Of Matt Hoosier
> Sent: Montag, 30. Oktober 2017 14:28
> To: Pekka Paalanen
> Cc: wayland mailing list
> Subject: Re: Automatically choosing a VT for DRM compositor?
>
> On Mon, Oct 30, 2017 at 5:10 AM, Pekka Paalanen <ppaalanen at gmail.com>
> wrote:
>
>
> On Fri, 27 Oct 2017 09:10:02 -0500
>
> Matt Hoosier <matt.hoosier at gmail.com> wrote:
>
> > On Fri, Oct 27, 2017 at 8:05 AM, Pekka Paalanen
> <ppaalanen at gmail.com> wrote:
> >
> > > On Fri, 27 Oct 2017 07:05:13 -0500
> > > Matt Hoosier <matt.hoosier at gmail.com> wrote:
> > >
> > > > HI Pekka,
> > > >
> > > > On Thu, Oct 26, 2017 at 2:06 AM, Pekka Paalanen
> <ppaalanen at gmail.com>
> > > wrote:
> > > >
> > > > > On Tue, 24 Oct 2017 08:26:04 -0500
> > > > > Matt Hoosier <matt.hoosier at gmail.com> wrote:
> > > > >
> > > > > > On Tue, Oct 24, 2017 at 1:33 AM, Pekka Paalanen
> <ppaalanen at gmail.com
> > > >
> > > > > wrote:
> > > > > > > On Mon, 23 Oct 2017 14:37:37 -0500
> > > > > > > Matt Hoosier <matt.hoosier at gmail.com> wrote:
> > > > > > >
> > > > > > >> It would be nice for non-session uses of Weston
> (embedded
> > > systems) if
> > > > > > >> the controlling TTY didn't need to be manually supplied.
> > > > > > >>
> > > > > > >> Has anybody suggested using something like
> VT_OPENQRY in the
> > > > > > >> weston-launcher code to pick a TTY if one wasn't
> manually given?
> > > (Or
> > > > > > >> if that's too auto-magic for taste here, then only do that
> if a
> > > > > > >> specific command-line option is supplied.)
> > > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > I do not recall such proposals. I'd like to hear more about
> your
> > > use
> > > > > > > case.
> > >
> > > > > You're right in that Weston shouldn't care, but I would expect
> the
> > > > > system designer or administrator to care, usually.
> > > > >
> > > >
> > > > I think that it would only typically be important if the designer
> has
> > > some
> > > > use-case for actively hopping among more than one VT. That is,
> at least,
> > > > not my case. Weston is the only DRM user -- it just needs some
> valid VT
> > > to
> > > > use. I would be interested to hear counterexamples though.
> Are you
> > > thinking
> > > > that some program like Plymouth would get used early during
> boot, and it
> > > > would need to persist and occasionally show itself during the
> main body
> > > of
> > > > the runtime?
> > >
> > > Nope. My rationale is simply: if you don't care which VT is being
> used,
> > > why not hardcode tty0 in a systemd unit and be done with it?
> > >
> >
> > I appreciate that though. In practice, it's difficult to guarantee that
> > there won't be some transient early splash type program squatting
> on the
> > first TTY which is just waiting to die until somebody comes along
> and
> > VT_ACTIVATE's away from it.
> >
> > I hope that doesn't sound like a bait-and-switch argument. I'm not
> denying
> > that there may be some random little graphical program that uses
> VT's. My
> > claim is just that these are usually not relevant to the main runtime
> of
> > the system. Once Weston get running, it owns the foreground
> graphics
> > permanently.
>
>
> Hi,
>
> I'm afraid that sound quite much like you don't actually know what
> runs
> in the (embedded) system you are developing.
>
>
>
> For any one specific device, I do do know the fine-grained details. The
> logistical trouble is in trying to harmonize the Weston configuration across
> numerous devices (from different chip vendors), all of which differ in ways
> which (to me) seem incidental. There is always a surplus of VT's compared to
> the zero (or one) early-boot users of DRM, so it doesn't cause me much
> worry that Weston will fail to select an available TTY.
>
> It seems like there's a small mismatch of expectations. The existing weston-
> launch implementation already uses VT_OPENQRY to select whatever free
> VT happens to be available, if you do 'weston-launch -u <new_user>'. I'm not
> really seeing the reason for that being okay, but regarding similar automatic
> selection in the direct launcher as sloppy design.
>
>
>
> > > > I think I'd just like to float the original question again: would
> anybody
> > > > be receptive to a very limited patch that does nothing more
> than narrowly
> > > > allow Weston to survive the TTY selection phase in the absence
> of any
> > > > external hint such as --tty=, logind, or being spawned from a
> process
> > > whose
> > > > stdin is already a VT?
> > > >
> > > > If that seems contrary to the direction you'd like to take
> Weston, that's
> > > > okay. It's not a huge burden to do explicit TTY selection at
> > > system-design
> > > > time. That just seems a bit unnecessary for devices whose only
> raw DRM
> > > user
> > > > is Weston.
> > >
> > > If someone writes the patch and someone else reviews and lands
> it, I
> > > suppose I'm ok with that. We have two non-logind launchers:
> direct and
> > > weston-launch the suid binary.
> > >
> >
> > I'll volunteer to be the first 'someone'. Maybe I can convince
> daniels to
> > be the second. ;)
> >
> > Because the weston-launch approach is centered around the
> notion of
> > executing from some session, I think I'd be inclined not to touch
> the suid
> > binary. Do you think that would be objectionably unsymmetric?
>
> Does this mean you would only cater for the "run weston as root"
> case? ;-)
>
>
>
> No, that wasn't the intent. Running a DRM instance of Weston as a non-root
> user doesn't require anything really more than adjusting ownership on the
> /dev/tty* character devices so that the VT can be configured. I.e. a user
> 'weston' would need added to the 'tty' Unix group to have permission to run
> ioctl(/dev/tty0, VT_OPENQRY) and would also need assigned ownership of
> /dev/tty[0...7] in order to do KDSETMODE. Nobody would want to do that on
> the desktop because of the security implications, but that seems fine to do
> on an embedded system.
>
>
>
> If the aim is to make it easier to test during development, that's fine
> by me. But if the aim is to use that for production, then I'd be
> disappointed. Of course, we cannot know what people will use it for.
>
> I don't think I could NAK the patch only because of adding
> differences
> between the launchers.
>
>
>
>
> Okay, I appreciate that. If you find the replies (including the bit about
> VT_OPENQRY already getting used in weston-launch) above unconvincing,
> let's just drop the thought then.
>
>
>
>
> > > I do know people have struggled with starting weston via ssh or a
> > > serial terminal. Would this make that simply work? I think that
> would
> > > be a good justification.
> > >
> >
> > Yes, serial and ssh terminal usage is (in addition to formal systemd
> usage)
> > one of the clunky situations that demands the --tty command line
> option
> > right now. This is typical for iterative development of Weston on
> embedded
> > devices. And because the preceding instance of the Weston
> process may well
> > have crashed and not cleaned up the VT it was on, you always have
> to be
> > changing the value of that --tty parameter. Automatic selection
> would be
> > extremely convenient for this case too. (Note, I'm not talking about
> > unbounded growth in the numeric value of the -tty= parameter.
> Just toggling
> > back and forth between '1' and '2', for example.)
>
> Right, so this is the underlying true reason for the suggestion.
>
>
>
> Well, as I said above in the thought about making it less difficult to deploy
> Weston across a fleet of devices which have varying configurations of other
> small DRM/VT programs, this is just an additional reason. I don't deny the
> usefulness during development too though.
>
>
>
> Does something eventually clean up the VTs where weston/direct
> crashed,
> or will you run out of VTs soon?
>
>
> If you did not run weston directly as root, then there would always
> be
> something, either weston-launch or logind, to reset the VT to a sane
> state, I believe... weston-launch should, I presume logind as well?
>
>
> > > OTOH, I would always recommend relying on logind if it is present
> in a
> > > system because that is the most appropriate way to use weston:
> logind
> > > handles the privilege separation, session multiplexing, revoking
> input
> > > devices and DRM master, etc. However, I have no idea how to
> launch with
> > > logind via ssh or serial aside from writing a systemd service unit.
> > >
> > > I wonder, if VT_OPENQRY picks, say, tty2, and then Weston VT-
> switches
> > > there, does something prevent it from clashing with the getty
> that
> > > systemd would launch there on the first switch to tty2? Or is it a
> > > non-issue?
> > >
> >
> >
> > I'm not certain about that. In order to prevent ugly text console
> prompts
> > from appearing transiently on-screen prior to Weston's launch, I (as
> the
> > system designer) typically mask all getty@ unit instances which
> would
> > operate on VT's.
>
> I was more thinking about input devices. The launchers intend to
> block
> input from the TTY when weston starts, but there have been issues
> where
> it somehow failed and when you typed in a weston session the same
> typing would go into the TTY (text login, shell, ...) as well.
>
>
> Thanks,
> pq
>
>
>
> Cheers,
> Matt
More information about the wayland-devel
mailing list