Post by JoeOn Sun, 21 Jul 2024 12:43:58 +0100
Hi all,
I have a TV card in one of my boxen, which requires a kernel module to
be built. I've got that all nicely scripted and so I can kick it off
with relative ease.
The issue is detecting when it needs to be done. ie after a change in
the running kernel. At the moment, it's detected by the TV guide
running out of data and triggering an Icinga alert, which then causes
me to investigate and rebuild the kernel module. I was hoping for
something a little more automated. I'm envisioning something which
starts on boot checking if the kernel has changed and if so, kicking
off the kernel module rebuild script.
The question is: how to detect if the kernel has changed. Off the top
1) lsmod | grep <driver>
I conceed that doesn't actually indicate the kernel has changed, just
that the kernel module is missing. However, so far, it being missing
has consistent indicated a kernel change and rebuilding the driver on
a false positive isn't really an issue
2) last | grep "system boot" | head -n 2; then diff the values
Probably a bit of a faff to extract the necessary information and
probably not wholey robust either.
I thought that I'd just run it past the hive mind and see if anyone
has any better ideas?
I always get a notification of a new kernel and therefore necessary
reboot during an apt upgrade. needrestart -k can be parsed to detect a
newer kernel available, though obviously only until the next reboot.
I did not know needrestart could be manually run (shows my ignorance and laziness). I have been using need restart for many years.
Thanks heaps for pointing this out !
man can be helpful, if used, wow ! Who would have thought?. I am feeling a little embarrassed right now.
# needrestart -vlk
[main] eval /etc/needrestart/needrestart.conf
[main] needrestart v3.6
[main] running in root mode
[Core] Using UI 'NeedRestart::UI::stdio'...
[main] systemd detected
[Core] #719 is a NeedRestart::Interp::Python
[Python] #719: source=/usr/share/unattended-upgrades/unattended-upgrade-shutdown
[Core] #1535 is a NeedRestart::Interp::Perl
[Perl] #1535: could not get a source file, skipping
[Core] #1637 is a NeedRestart::Interp::Perl
[Perl] #1637: could not get a source file, skipping
[Kernel] Linux: kernel release 6.1.0-23-amd64, kernel version #1 SMP PREEMPT_DYNAMIC Debian 6.1.99-1 (2024-07-15)
[Kernel/Linux] /boot/vmlinuz-6.1.0-23-amd64 => 6.1.0-23-amd64 (debian-***@lists.debian.org) #1 SMP PREEMPT_DYNAMIC Debian 6.1.99-1 (2024-07-15) [6.1.0-23-amd64]*
[Kernel/Linux] /boot/vmlinuz-6.1.0-22-amd64 => 6.1.0-22-amd64 (debian-***@lists.debian.org) #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) [6.1.0-22-amd64]
[Kernel/Linux] Expected linux version: 6.1.0-23-amd64
Running kernel seems to be up-to-date.
No services need to be restarted.
Post by JoeWhen apt installs a new kernel, it will typically not remove the
current oldest. apt autoremove will remove all but the current and last
kernels, so when it finds a kernel which can be removed, a new one will
have been installed since its last invocation.
Is this a Debian only feature?
How autoremove leaves ' the current and last kernels' is something I really like Debian for.
Debian looks after me, even when I am too lazy to do this myself.
Some distros run into issues because they do not do autoremoves of previous kernels.
George