Если система инициализации - systemd (а в этой версии убунты вроде она) - то можно сделать следующиее
1. добавить к параметрам ядра опцию для большего выхлопа
systemd.log_level=debug
2. При зависании, после перезагрузки использовать journalctl, чтобы просмотреть логи с предыдущей загрузки до выключения:
journalctl -p 0..3 -b 1
-p 0..3 это фильтр по приоритету записей в логах, от ошибок до АДСКИХ ошибок, список возможных вариантов:
emerg(0),
alert(1),
crit(2),
err(3),
warning(4),
notice(5),
info(6),
debug(7).
-b это диапазон загрузок, например
-b 0 покажет только логи за текущую загрузку,
-b 1 за предыдущую,
-b 0..9 за десять последних.
Если хочется более подробных логов, то можно ещё добавить
-o verbose, но тогда в них можно утонуть :D
systemd делает огромную работу по собиранию и агрегации логов в одном месте, и даёт инструменты для работы с ними - глупо этим пренебрегать. Подробнее о том, как решать проблемы с systemd -
тут например.