[OSGeoLive] #2250: Installing tomcat breaks iso live session
OSGeoLive
trac_osgeolive at osgeo.org
Wed Aug 26 07:08:38 PDT 2020
#2250: Installing tomcat breaks iso live session
-----------------------+---------------------------
Reporter: kalxas | Owner: kalxas
Type: defect | Status: assigned
Priority: blocker | Milestone: OSGeoLive14.0
Component: OSGeoLive | Keywords: tomcat9
-----------------------+---------------------------
While reviewing the tomcat installer for OSGeoLive 14, I have noticed that
by enabling the tomcat installer, the live iso boot process breaks so I
had to disable tomcat until a solution can be found.
https://github.com/OSGeo/OSGeoLive/commit/25fbe20f5d07978e77eba4887de1386dab29122a
https://github.com/OSGeo/OSGeoLive/commit/5665abb2818f8801936486454092ec0f0840a956
In order to figure out what the problem is, I managed to get a snapshot
during the iso booting process (tomcat-boot-failure.png). The error is:
{{{
adduser: The UID 999 is already in use
usermod: user 'user' does not exist
install: invalid user 'user'
}}}
The system (casper) fails to create the 'user' account as the live system
user, leaving the system hanging.
Digging a bit deeper, I see the following:
On build 37 (without tomcat) right after the startup this is how the
/etc/passwd file looks like (live_system_users.png):
{{{
...
postgres:x:122:131:PostgreSQL
administrator,,,:/var/lib/postgresql:/bin/bash
user:x:999:999:Live session user,,,:/home/user:/bin/bash
systemd-coredump:x:998:998:systemd Core Dumper:/:/usr/sbin/nologin
}}}
By manually creating the build chroot environment, right after tomcat
installation, this is how the /etc/passwd file looks like
(tomcat_user_chroot.png):
{{{
...
user:x:1000:1000:user,,,:/home/user:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
tomcat:x:998:998:Apache Tomcat:/:/usr/sbin/nologin
}}}
My understanding of the problem is that tomcat user occupies UID 998 and
this makes systemd-coredump user to pick up UID 999, leaving no UID
available for the live session user (has to be < 1000). Casper then fails
to create the user 'user' leaving the iso hanging on boot.
I see some possible solutions:
1. delete tomcat user in setdown script (as we currently do with user
https://github.com/OSGeo/OSGeoLive/blob/master/bin/inchroot.sh#L252 ) and
find a way to create the tomcat user during boot time.
2. patch tomcat debian package to create the tomcat user with another UID.
Any proposals for other solutions?
--
Ticket URL: <https://trac.osgeo.org/osgeolive/ticket/2250>
OSGeoLive <https://live.osgeo.org/>
self-contained bootable DVD, USB thumb drive or Virtual Machine based on Lubuntu, that allows you to try a wide variety of open source geospatial software without installing anything.
More information about the osgeolive
mailing list