Newer versions of screen don't work by default with a read-only root partition
Check-list
- I did not find the issue in the existing issues
- I can reproduce the issue with unmodified Buildroot from this repository, not from a fork somewhere else
- I can reproduce the issue on the latest commit of the branch I'm using:
- master
- stable (i.e. 20NN.MM.x - please specify)
- LTS 2025.02.3
- I can reproduce the issue after running
make clean; make - I attached the full build log file (e.g.
make 2>&1 |tee build.log) - I attached a minimal defconfig file that can reproduce the issue (
make BR2_DEFCONFIG=$(pwd)/issue_defconfig savedefconfig) - I also attached the configuration for kconfig-based packages that are enabled (and necessary to reproduce the issue), most notably:
- busybox
- linux
- uclibc
- uboot
- …
What I did
- Buildroot commit sha1: 2025.02.3
- Distribution of the build machine: Ubuntu 22.04
With the root partition mounted read-only (BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW not set) I am unable to use the screen package without providing a socket path via the SCREENDIR environment variable. In version 4.9.0 (prior to updating to version >=5.0) the default sockets directory was /tmp/screens/S-<user>. Now I believe it is expected to be in $HOME/.screen. It appears that there is the --enable-socket-dir option in configure.ac which sets the the global socket directory. This can either be a flag which sets it to /run/screen or any desired path. That variable sets the SOCKET_DIR macro, which if defined is used as the socket directory, otherwise $HOME/.screen is used.
# screen
Cannot access /root/.screen: No such file or directoryDuring building the autoconf configure output shows that the global socket directory is not specified:
Configuration:
PAM support: .............................. yes
telnet support: ........................... no
utmp support: ............................. no
global socket directory: .................. no
system screenrc location: ................. /etc/screenrc
pty mode: ................................. 0620
pty group: ................................ 5
pty on read only file system: ............. noWhat happens
When trying to run the screen command on a system with a read-only root partition and without the SCREENDIR environment variable set you receive an error similar to Cannot access /root/.screen: No such file or directory.
What was expected
Being able to run the screen command without getting a similar error to Cannot access /root/.screen: No such file or directory and ideally without having to set the SCREENDIR environment variable.