On 8/1/19 1:13 PM, DJ Lucas via blfs-dev wrote:
On 8/1/19 11:40 AM, Bruce Dubbs via blfs-dev wrote:

On 8/1/19 10:49 AM, Pierre Labastie via blfs-dev wrote:
On 31/07/2019 00:44, DJ Lucas via blfs-dev wrote:
On July 30, 2019 3:54:34 PM CDT, Pierre Labastie via blfs-dev <[email protected]> wrote:

IIUC above, this is because we do not have elogind in LFS, so our first build of dbus does not link to libsystemd (unlike in LFS-systemd). The lack of dbus support is inconsequential in that configuration because we are going to rebuild systemd later in BLFS.

There is also another thing, which bothers me: instructions for the
xorg
server are the same in both books (sysv/elogind and systemd). So, when
we add
--enable-install-setuid to xorg-server, we add it in both books. But I
believed it was not needed in the systemd book...

That would be my doing as I had believed that they would be the same (and still believe they should be, but my attempts to find the reason for the differences have failed me thus far), so the two variants got merged down. In fact, I think I am the only one who has demonstrated that a rootless Xorg is even possible with elogind in our group. Five consecutive builds, all slightly different, but logical (apparently only to me), build orders. I'd gotten frustrated trying to track it down, I was simply spinning my wheels, so I put it on the back burner (knowing that a viable workaround exists). I'll be testing noveau on an existing build next week to possibly eliminate hardware/drivers. I want to also say that I've built entirely in chroot already, but I'm not 100% certain on that.

HTH


OK, I've found the error!!!!
On the Xinit page, we have:
---
sed -e '/$serverargs $vtarg/ s/serverargs/: #&/' \
     -i startx.cpp
---
for the Sysv/elogind book, while we do not have this for the systemd book.

Removing the ": #" allows startx to run the server and the usual clients.

I think even the suid-wrapper is not needed! (it drops privilege anyway if
/dev/dri/card0 is KMS compatible). This can be tested by moving
/usr/libexec/Xorg.wrap to /usr/libexec/Xorg.wrap.nouse, and trying again:
startx still works.

So we can:
remove the sed on the Xinit page
remove any enable-xxx-suid switch for xorg-server (well, maybe some drivers do need the wrapper, this has to be tested, but I do not have the hardware (intel
driver works fine without the wrapper)).

Pierre
PS: I've spend almost 24 h running the server, xinit, with gdb, playing with
xauth files, etc, before finding this stupid bug!


I appreciate your hard work in finding the discrepancy.

We added that sed on purpose so Xorg will come up on vt7 instead of vt<current>.  For most users it probably does not make a difference, but it is convenient to be able to switch between vt1 and vt7 when debugging.

My preference is to leave the sed and the suid alone in the sysv book, but as an alternative we could just document the technique in a note.


Apologies if this comes through twice, my work laptop had an old configuration, the first will probably get blocked.

I don't think this is correct, but might be a clue. My build script for xinit has this sed, and it works. http://www.linuxfromscratch.org/~dj/mkbuild.sh/sources/buildscripts/xinit.sh

The proposed sed also does nothing from what I can see (this from Arch, where it would not have been applied, but I can't get to my workstation from here):

[dj@DJ-ARCH-02 ~]$ head -n 137 /usr/bin/startx | tail -n 3
if [ "$have_vtarg" = "no" ]; then
     serverargs="$serverargs $vtarg"
fi
[dj@DJ-ARCH-02 ~]$ sed -e '/$serverargs $vtarg/ s/serverargs/&/' /usr/bin/startx | head -n 137 | tail -n 3
if [ "$have_vtarg" = "no" ]; then
     serverargs="$serverargs $vtarg"
fi

If this is actually the issue, I must have successfully done something wrong multiple times (but I wouldn't put it past me at this point), but then my preference is for opposite Bruce's suggestion. IOW: put the commands on the xinit page to add the suid bit for Xorg along with the sed and put them inside of nodump tags.Like Bruce said, the majority of users won't care one way or the other, but avoiding a suid bit wherever possible is a good thing.

Your sed does nothing:

sed -e '/$serverargs $vtarg/ s/serverargs/&/'

you need

sed -e '/$serverargs $vtarg/ s/serverargs/: #&/'

Which comments out that particular line, but adds the colon because it is in an 'if' construct.

I'm working on a modification to the book now.

  -- Bruce
--
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to