Opened 4 years ago
Last modified 4 years ago
#4848 closed task
make /lib, /bin, /sbin symlinks to their conterpart in /usr — at Version 5
Reported by: | Xi Ruoyao | Owned by: | lfs-book |
---|---|---|---|
Priority: | normal | Milestone: | 11.0 |
Component: | Book | Version: | git |
Severity: | normal | Keywords: | |
Cc: |
Description (last modified by )
Support of "split-usr" configuration is deprecated in systemd-248, and likely to be removed in systemd-249.
Fedora and Arch have already made the move.
Specific to LFS, the main advantage of the move is we can delete all mv /usr/lib/libfoo.so.* /lib && ln -sfv ../../lib/$(...) /usr/lib/libfoo.so
stuff. The main disadvantage is we'll have to use an initramfs if /usr
is somewhere on network (but I doubt if there is really someone using LFS/BLFS this way).
It's planned to make the move only for systemd, for now. The steps:
- [x] rewrite section 4.2 and section 7.5. In section 4.2 we'll set up
{/usr,}/{lib,lib64,bin,sbin}
, and the references to them should be removed in 7.5. For consistency both sysv and systemd should be changed: the revisions share a same section 7.5, but section 4.2 would be different - [x] modify section 4.3 for the changes of 4.2
- [x] remove
-Dsplit-usr=true
in systemd - [x] mark all
mv /usr/lib/libfoo.so.* /lib ...
commands withrevision="sysv"
, in LFS - [x] build and test LFS
- [ ] mark all
mv /usr/lib/libfoo.so.* /lib ...
commands withrevision="sysv"
, in BLFS
Change History (5)
comment:1 by , 4 years ago
Description: | modified (diff) |
---|
comment:2 by , 4 years ago
Description: | modified (diff) |
---|
comment:3 by , 4 years ago
A clarification: systemd stops to support split-usr does *not* mean you can't use a separate partition for /usr. It means /bin, /sbin, /lib, and /lib64 have to be a symlink to its counterpart in /usr, to be supported.
If you want a separate /usr partition, you can use an initramfs anyway.
For example, "ProtectSystem=true" makes systemd bind-mounts /usr, /bin, /sbin, /lib, and /lib64 for a service. In future systemd releases it will only consider /usr, so if /bin or /lib is not a symlink to /usr/bin or /usr/lib, its content will *not* be protected anymore.
comment:4 by , 4 years ago
Another clarification: it won't break any scripts hardcoding /usr/bin or /bin. Every utilitiy is in /usr/bin, and /bin is a symlink to /usr/bin. So you can use the utilities with both path.
comment:5 by , 4 years ago
Description: | modified (diff) |
---|---|
Summary: | make /lib, /lib64, /bin, /sbin symlinks to their conterpart in /usr → make /lib, /bin, /sbin symlinks to their conterpart in /usr |
We'll keep /lib64 there: the existence of /usr/lib64
causes meson trying to install every library into it.
As /lib64 only contains two symlinks, it should be OK.
Initial changes are staged in branch xry111/usr-move now.
I think we can keep options like
--libdir=/lib
or--bindir=/bin
there. Removing them for only systemd will cost too much work, and won't give significant improve (to readers) like removing explicitmv -v
s.I'll rebuild the system as a test, when GCC 11 is released.
And I hope I didn't introduce something breaking jhalfs...