I just let it happen automatically and don't think about it too much.
In case of a kernel bug, I downgrade to the last known working version (but it was probably 15 years ago since I needed that).
I only update manually to a newer version if hardware is too new to be recognized by an older kernel (had to do that once, about 10 years ago).
Yes, it is called "pinning" but be careful. Only do it when you really need it.
Since I'm a lazy person I use 'synaptic' to pin packages.
Synaptic needs an extra link to be able to cooperate with apt with respect to pinning. This is what you do before anything else (and only the first time):
sudo touch /var/lib/synaptic/preferences
sudo ln -s /var/lib/synaptic/preferences /etc/apt/preferences.d/locked_in_synaptic
In Synaptic you can now select your kernelversion an lock it (see picture):
Just leave it to the packetmanager. You actually don't even have to think about it.
In the bootloader (Grub) there is always a menu entry to boot the previous kernel.
When during boot the manufacturer logo shows up, press Esc. and you are in the grub bootmenu. Choose "Advanced options for ubuntu" and press enter.
You will be able to choose the current kernel and the previous kernel in either normal or recovery mode.
Boot the older kernel, pin/lock the older kernel in synaptic and maybe remove the newer one that didn't work.
sudo pluma /etc/default/grub
Just change the the following line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Into this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=strict"
Save it and then run:
sudo update-grub
If you want the bootmenu to always show, you might as well change this line:
GRUB_TIMEOUT_STYLE=hidden
Either comment it out by prepending it with a '#' or change it into this:
GRUB_TIMEOUT_STYLE=menu
(and afterwards run 'sudo update-grub' again)
Some extra info, just for the sake of completeness:
You can also enter the kerneloption during pre-boot which will only last until powerdown or the next reboot:
Enter Grub bootmenu like you did before, select kernel and press 'e'.
You can now manually temporarily change the bootmenu option.
The line to edit starts with 'Linux'. You can append your kerneloption there.
Also good to know is this:
ACPI is a standard to communicate with hardware.
Microsoft Windows has an incompatible implementation.
Result: A part of the hardware manufacturers changed their own implementation to appease Microsoft thereby deviating from (and corrupting) the standard.
So you will often see some non-important pre boot errors due to a buggy or otherwise non standard compliant ACPI implementation