古いカーネルを削除すると、グラフィックドライバが削除されるようです。再起動しても安全ですか?

古いカーネルを削除すると、グラフィックドライバが削除されるようです。再起動しても安全ですか?

古いカーネルを削除すると、グラフィックドライバが削除されるようです。再起動しても安全ですか?

ルーチンの実行中にエラーsudo apt upgradeが発生しますNo space left on device。カーネルが蓄積され、/boot/パーティションにスペースが不足していることがわかりました。

古いカーネルの自動削除は機能しません。

$  sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

だから、タイトルと画像のリストをフィルタリングしました。

$ dpkg --list | grep -E 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }'
linux-headers-5.10.0-20-amd64
linux-headers-5.10.0-20-common
linux-headers-5.10.0-21-amd64
linux-headers-5.10.0-21-common
linux-headers-5.10.0-22-amd64
linux-headers-5.10.0-22-common
linux-headers-5.10.0-23-amd64
linux-headers-5.10.0-23-common
linux-headers-5.10.0-24-amd64
linux-headers-5.10.0-24-common
linux-headers-5.10.0-25-amd64
linux-headers-5.10.0-25-common
linux-headers-amd64
linux-image-5.10.0-18-amd64
linux-image-5.10.0-19-amd64
linux-image-5.10.0-20-amd64
linux-image-5.10.0-21-amd64
linux-image-5.10.0-22-amd64
linux-image-5.10.0-23-amd64
linux-image-5.10.0-24-amd64
linux-image-5.10.0-25-amd64
linux-image-amd64

5.10.0-18からのすべてのタイトルと画像を削除しました5.10.0-23。ただし、画像を消去すると予期しないメッセージが表示されます。

Removing linux-image-5.10.0-23-amd64 (5.10.179-3) ...
/etc/kernel/prerm.d/dkms:
dkms: removing: nvidia 535.98 (5.10.0-23-amd64) (x86_64)

-------- Uninstall Beginning --------
Module:  nvidia
Version: 535.98
Kernel:  5.10.0-23-amd64 (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

nvidia.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/kernel/drivers/video/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


nvidia-uvm.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/kernel/drivers/video/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


nvidia-modeset.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/kernel/drivers/video/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


nvidia-drm.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/kernel/drivers/video/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


nvidia-peermem.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/kernel/drivers/video/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod...

DKMS: uninstall completed.
dkms: removing: v4l2loopback 0.12.5 (5.10.0-23-amd64) (x86_64)

-------- Uninstall Beginning --------
Module:  v4l2loopback
Version: 0.12.5
Kernel:  5.10.0-23-amd64 (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

v4l2loopback.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-23-amd64/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod...

DKMS: uninstall completed.
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-5.10.0-23-amd64
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.10.0-25-amd64
Found initrd image: /boot/initrd.img-5.10.0-25-amd64
Found linux image: /boot/vmlinuz-5.10.0-24-amd64
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
done
$ dpkg --list | grep -E 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }'
linux-headers-5.10.0-24-amd64
linux-headers-5.10.0-24-common
linux-headers-5.10.0-25-amd64
linux-headers-5.10.0-25-common
linux-headers-amd64
linux-image-5.10.0-24-amd64
linux-image-5.10.0-25-amd64
linux-image-amd64

誤ってグラフィックカードドライバを削除しましたか?それともドライバが最新のカーネルにも存在するので大丈夫ですか?

仮に、initrd残りの2つのコアの画像を手動で再作成しました。

$ sudo rm /boot/initrd.img*
$ sudo update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-5.10.0-24-amd64
update-initramfs: Generating /boot/initrd.img-5.10.0-25-amd64
$ ls /boot/
config-5.10.0-24-amd64  grub                lost+found          vmlinuz-5.10.0-24-amd64
config-5.10.0-25-amd64  initrd.img-5.10.0-24-amd64  System.map-5.10.0-24-amd64  vmlinuz-5.10.0-25-amd64
efi         initrd.img-5.10.0-25-amd64  System.map-5.10.0-25-amd64
$ uname -r
5.10.0-24-amd64

再起動後、コンピュータを5.10.0-25

ベストアンサー1

コンパイルされたカーネルイメージが削除されたときにコンパイルされたdkmsモジュールが削除されるのは完全に正常です。

実行すると、dkms statusクリーンアップしていないカーネルイメージパッケージ用のモジュール(たとえば、linux-image-5.10.0-24-amd64およびlinux-image-5.10.0-25-amd64)がまだインストールされていることがわかります。

そのメッセージが表示されない場合は、nvidia-kernel-dkms誤ってパッケージも削除した可能性があります。回避策は、パッケージを再インストールすることです。


関連するメモとapt-mark holdパッケージを使用し、アップグレードされたカーネルパッケージのみを手動でインストールすることをお勧めします(たとえば、root、rootシェル、または使用)。linux-image-amd64linux-headers-amd64sudo

apt-get -u install linux-image-amd64 linux-headers-amd64 ; \
apt-mark hold linux-image-amd64 linux-headers-amd64

なぜ? dkmsパッケージが最新のカーネルと互換性がない場合があるため、カーネルをアップグレードする前に、最新バージョンのdkmsパッケージがリリースされるまで待つ必要があります。 (ただし、更新されたパッケージがすぐに届く場合があり、数日、数週間、またはそれ以上待つ必要がある場合もあります。しばらくお待ちください。システムを破壊する価値はありません光沢のある最新の製品を入手するために、特に光沢があり、新しくなっても自動的に良くなったり、「実際に使用するものを追加する」ことを意味するわけではありません。必要")。

同じ理由でNVIDIA関連パッケージも保管する必要があります。私は私のシステムlist-nvidia.sh(少なくともまだnvidia GPUがあり、徐々にRadeonカードに移動しているシステム)で次のスクリプト(呼び出し)を使用します。

#!/bin/bash
#
# script: list-nvidia.sh
# author: Craig Sanders <[email protected]>
# license: Public Domain (this script is too trivial to be anything else)

# options:
# default/none    list the packages, one per line
# -v              verbose (dpkg -l) list the packages
# -h              hold the packages with apt-mark
# -u              unhold the packages with apt-mark

# build an array of currently-installed nvidia packages.
PKGS=( $(dpkg -l '*nvidia*' '*cuda*' '*vdpau*' 2>/dev/null| awk '/^[hi][^n]/ && ! /mesa/ {print $2}') )

if [ "$1" == "-v" ] ; then
  dpkg -l "${PKGS[@]}" | cat
elif [ "$1" == "-h" ] ; then
  apt-mark hold "${PKGS[@]}"
elif [ "$1" == "-u" ] ; then
  apt-mark unhold "${PKGS[@]}"
else
  printf "%s\n" "${PKGS[@]}"
fi

すべてのnvidia関連パッケージを保存するために実行し、list-nvidia.sh -hnvidiaドライバをアップグレードしたい場合は、次のように実行します。

apt-get install $(list-nvidia.sh) ; \
  list-nvidia.sh -h

list-zfs.sh同様のZFS dkmsモジュールスクリプトがあります。

#! /bin/bash
#
# script: list-zfs.sh
# author: Craig Sanders <[email protected]>
# license: Public Domain (this script is too trivial to be anything else)

# options:
# default/none    list the packages, one per line
# -v              verbose (dpkg -l) list the packages
# -h              hold the packages with apt-mark
# -u              unhold the packages with apt-mark


# build an array of currently-installed zfs packages.
PKGS=( $(dpkg -l '*libnvpair*linux' '*libuutil*linux*' '*zfs*' '*zpool*' 'spl' 'spl-dkms' 'spl-kernel-modules' 'zfs-kernel-modules' 2>/dev/null | awk '/^[hi][^n]/ && ! /zfsnap|libvirt/ {print $2}') )

if [ "$1" == "-v" ] ; then
  dpkg -l "${PKGS[@]}" | cat
elif [ "$1" == "-h" ] ; then
  apt-mark hold "${PKGS[@]}"
elif [ "$1" == "-u" ] ; then
  apt-mark unhold "${PKGS[@]}"
else
  printf "%s\n" "${PKGS[@]}"
fi

これにはスクリプトもありますがlist-kernels.sh(そのために上記のスクリプトのいずれかを変更することは難しくありません)、およびほとんどdlocate -kのスクリプトがすでにありますdlocate -K。これに対する私の目的の1つは、すべてのカーネルイメージとdkmsモジュールを手動でインストールされたものとしてマークし、apt-mark manual $(dlocate -k)必要に応じて削除/削除することです。


grep最後に、grepができることとそれ以上のことができるawkを使用しているなら、awkawkを使う必要はほとんどありません。たとえば、コマンドは次のようになります。

dpkg --list | grep -E 'linux-image|linux-headers|linux-modules' |
  awk '{ print $2 }'

次のように短縮できます。

dpkg -l | awk '/linux-image|linux-headers|linux-modules/ { print $2 }'

あるいは、より良い方法は、dpkg -l出力の2番目のフィールドのみを一致させることです。

dpkg -l | awk '$2 ~ /^linux-(image|headers|modules)/ { print $2 }'

特定のフィールドの正規表現パターンマッチングをブール式と組み合わせるawkの機能を利用することもできます。たとえば、

dpkg -l | awk '$2 ~ /^linux-(image|headers|modules)/ &&
               $3 ~ /^5\.10\.(1[89]|2[0-3])-/ { print $2 }'

これにより、コマンドに追加できるパッケージのリストが提供されます(上記の例apt-get purgeのようにコマンドの置き換えで可能です)。apt-get install私は以前にインストールされたカーネルを削除する必要があるたびに、このようなものを頻繁に使用します。

おすすめ記事