This is a guess, but my thinking is that Linux’s support for something on the motherboard of this computer isn’t perfect. It could be a BIOS/ACPI issue or something else. Since you have a work-around, I’d just make sure your kernel is the latest version. From a terminal:
apt list —upgradeable | tee - ./package-update-list | grep linux-image
will tell you about any kernel updates that are available, while saving the list of all available packages to package-update-list. You might get an error message about using apt in scripts, but the above isn’t making any changes — it’s just showing you what can be upgraded, so no worries.
Maybe a simpler command would be:
apt list —upgradeable linux-image*
Which I’ve just verified works. If you want to upgrade your kernel you’ll need to type:
sudo apt upgrade linux-image-generic
The “generic” gets added so you’re running the most stable/production kernel. There are 100’s of different kernel types if upgrading to the latest generic kernel doesn’t work, one of the other linux-image files might. But I definitely wouldn’t try one at random as it could cause serious problems. Someone with better kernel-fu would have to answer that.
The above command of will probably require updating 100’s of packages. I’m doing it now and 200+ are installing :)
The newest version I see is linux-image-4.15.0-34.37.
jmitchel@MontyPython:~$ uname -a
Linux MontyPython 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
One more thing. The command "dmesg" might provide you with some clues. Look for things in red :)
dmesg | more
dmesg | grep ACPI
dmesg | reboot
Finally, if there's a critical problem when rebooting, it might get logged via syslog. It would probably be in /var/log/syslog. So:
tail -"n" /var/log/syslog | more
Where n is the number of lines you want to see, starting from the end of the /var/log/syslog and going backwards. So
tail -50 /var/log/syslog | more
Will show you the last 50 lines of /var/log/syslog
So if a new kernel doesn't help, do the following
Then, when you get back into the system, log in and type the following
Then press / to search and type in the time when you rebooted. For example
Sep 14 03:00
would take you to the place in the file which has an entry containing an entry containing "Sep 14 03:00". All entries in /var/log/syslog start with a timestamp.
And the command:
ls -alt /var/log | more
will show you which files have been written to recently, with the most recent ones on top.