Note:
- I did the test by curiosity w/ Artful/17.10 (systemd-234) and it works, so it's possibly something between v234 and v237 which introduced the behaviour for tmp.mount, a change in mount, ...
- Problem is also reproducible in Cosmic, and journalctl was a little bit more verbose in Cosmic than it was for Bionic in my testing :
$ journalctl -a -u tmp.mount
-- Logs begin at Wed 2018-10-10 20:15:36 UTC, end at Wed 2018-10-10 20:15:43 UTC. --
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
Oct 10 20:15:36 ubuntu systemd[1]: Mounting /tmp...
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Mount process finished, but there is no mount.
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Failed with result 'protocol'.
Oct 10 20:15:36 ubuntu systemd[1]: Failed to mount /tmp.
# src/core/mount.c
802 static void mount_enter_dead(Mount *m, MountResult f) {
803 assert(m);
804
805 if (m->result == MOUNT_SUCCESS)
806 m->result = f;
807
808 if (m->result != MOUNT_SUCCESS)
809 log_unit_warning(UNIT(m), "Failed with result '%s'.", mount_result_to_string(m->result));
...
1282 switch (m->state) {
1283
1284 case MOUNT_MOUNTING:
1285 /* Our mount point has not appeared in mountinfo. Something went wrong. */
1286
1287 if (f == MOUNT_SUCCESS) {
1288 /* Either /bin/mount has an unexpected definition of success,
1289 * or someone raced us and we lost. */
1290 log_unit_warning(UNIT(m), "Mount process finished, but there is no mount.");
1291 f = MOUNT_FAILURE_PROTOCOL;
1292 }
and m->result is indeed equalt to "MOUNT_FAILURE_PROTOCOL" ^
1955 [MOUNT_FAILURE_PROTOCOL] = "protocol",
I'll try to instrument things and create a custom ISO for further debugging/testing. This is where am at the moment.
I started to look at this problem from scratch since it's been a while since I have reported it....
It seems to go into emergency mode due to a failed attempt to start unit "tmp.mount" :
# /var/log/boot.log target/ start as 159
65 emergency.target: Enqueued job emergency.
66 tmp.mount: Unit entered failed state.
Adding "systemd. mask=tmp. mount" in /tftpboot/ pxelinux. cfg/default as a parameter did the trick to workaround the behaviour :
APPEND initrd= bionic- desktop- amd64/initrd root=/dev/nfs boot=casper netboot=nfs nfsroot= 192.168. 100.2:/ bionic- desktop- amd64 splash systemd. mask=tmp. mount systemd. debug-shell= 1 systemd. log_level= debug systemd. log_target= console console=ttyS0,38400 console=tty1 --
Note:
- I did the test by curiosity w/ Artful/17.10 (systemd-234) and it works, so it's possibly something between v234 and v237 which introduced the behaviour for tmp.mount, a change in mount, ...
- Problem is also reproducible in Cosmic, and journalctl was a little bit more verbose in Cosmic than it was for Bionic in my testing :
$ journalctl -a -u tmp.mount
-- Logs begin at Wed 2018-10-10 20:15:36 UTC, end at Wed 2018-10-10 20:15:43 UTC. --
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
Oct 10 20:15:36 ubuntu systemd[1]: Mounting /tmp...
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Mount process finished, but there is no mount.
Oct 10 20:15:36 ubuntu systemd[1]: tmp.mount: Failed with result 'protocol'.
Oct 10 20:15:36 ubuntu systemd[1]: Failed to mount /tmp.
# src/core/mount.c dead(Mount *m, MountResult f) { warning( UNIT(m) , "Failed with result '%s'.", mount_result_ to_string( m->result) ); warning( UNIT(m) , "Mount process finished, but there is no mount."); PROTOCOL;
802 static void mount_enter_
803 assert(m);
804
805 if (m->result == MOUNT_SUCCESS)
806 m->result = f;
807
808 if (m->result != MOUNT_SUCCESS)
809 log_unit_
...
1282 switch (m->state) {
1283
1284 case MOUNT_MOUNTING:
1285 /* Our mount point has not appeared in mountinfo. Something went wrong. */
1286
1287 if (f == MOUNT_SUCCESS) {
1288 /* Either /bin/mount has an unexpected definition of success,
1289 * or someone raced us and we lost. */
1290 log_unit_
1291 f = MOUNT_FAILURE_
1292 }
and m->result is indeed equalt to "MOUNT_ FAILURE_ PROTOCOL" ^
1955 [MOUNT_ FAILURE_ PROTOCOL] = "protocol",
I'll try to instrument things and create a custom ISO for further debugging/testing. This is where am at the moment.
- Eric