コマンドラインで実行中のカーネルをインストールしたい。
たとえば、カスタムカーネルlinux-image-4.0-1-xyz
をインストールし、このカーネルで起動したとします(uname -r
を実行すると、カーネルバージョンより上になります。
次に、汎用カーネルに切り替えることなく、このカーネルを削除します。
apt purge -y linux-image-4.0-1-xyz
を試してみましたが、これは実行されますが、Package Configuration
ダイアログが表示されます。
Do you want to abort removal now?
2つのオプションがあります
<Yes> <No>
コマンドラインから<No>
を選択するにはどうすればよいですか?
使用 TAB セレクタを移動するキー。つかいます ENTER 選ぶ。
ビスタへの注意:可能ですが、実行中のカーネルを削除することは非常にお勧めできません。そのカーネルがインストールされている唯一のものであり、アンインストールまたは削除後に再起動または電源が失われた場合、システムは起動できず、おそらく再インストールする必要があります。回復モードは機能しません。これが発生した場合、ライブシステムから起動してデータを救出し、カーネルファイルを適切な場所にコピーすることができます。通常、実行中のカーネルをアンインストールする理由はありません。したがって、おそらくこの答えに従うべきではありません:)
コメントで、パッケージ管理ツールを使用して実行中のカーネルを削除するときに表示されるダイアログを避けたいと述べました。これを達成するために考えられる唯一の方法は、実行中のカーネルに属するすべてのファイルを削除することです。
locate
を使用して、カーネルのファイルを検索します。最初にデータベースを更新します。
Sudo updatedb
何らかの理由でカーネルのdpkg
データベースレコードを削除したくない場合は、上記の代わりに次のコマンドを実行します。
Sudo updatedb --prunepaths=/var/lib/dpkg
実行中のカーネルとそのモジュールなどを見つけます。
locate -be $(uname -r)
リストを確認してください。 /usr/src
内の多くの小さなファイルであっても、カーネルに属するすべてのファイルを削除するには、locate
から-b
フラグを省略します。必要なリストができたら、結果をxargs
にパイプしてファイルを削除します。
locate -be $(uname -r) -0 | xargs -0 Sudo rm -r
xargs
をインタラクティブにするために、-p
フラグを追加すると、リスト内の各ファイルで本当にrm
を実行することを本当に確認するよう求められます。 locate
から-b
を省略し、xargs
に-p
を追加すると、長い間確認されます。
-0
フラグを使用してnullで区切られた出力を取得する必要はありません。これらのファイルはすべて、あなたまたは他の誰かがそれらをいじっていない限り、正しい名前を持っているからです。ただし、xargs
でヌル区切りを使用することをお勧めします。ファイル名にスペースが含まれていると間違えるためです。
GRUBがブートを試行したり、存在しないカーネルをブートするオプションを提供したりするのを防ぐには、構成を更新します。
Sudo update-grub
私はこれをテストしましたが、今、この方法で実行中のカーネルを削除したシステムからこれを入力しています(これを行うために古いUbuntuカーネルから起動しました。通常、dpkg
は知らないので、削除してコンパイルし直したくありません。
カーネルはRAMにあります。ブート時にRAMにロードされるため、今はファイルを必要としません。ただし、次のコマンドを使用してカーネルを再インストールします。
Sudo apt update
Sudo apt install --reinstall linux-image-$(uname -r) \
linux-modules-extra-$(uname -r) \
linux-headers-$(uname -r) \
linux-modules-$(uname -r)
非対話型プロセスに関心があるように見えるので、後で使用するために出力をファイルにキャプチャする場合は、apt
よりもapt-get
を優先して使用できることに言及します。