Ubuntu 24.04

Prev Next

VPC環境で利用できます。

NAVERクラウドプラットフォーム Ubuntu 24.04サーバのカーネルアップデート方法について説明します。

本ガイドは、NAVERクラウドプラットフォームで新規作成したサーバを基準に作成したため、ユーザーのサーバ環境と異なる場合があります。ユーザーのサーバ環境はセキュリティハードニングや複数の設定などの様々な理由で、カーネルアップデートやサーバの再起動に影響を及ぼすことがあります。したがって、次の事項を熟知した後、カーネルアップデートを実行してください。

  • 実際のサーバのカーネルをアップデートする前に、サーバイメージを使用してレプリカサーバを作成します。作成したレプリカサーバでカーネルアップデートを実行し、正常に再起動できるか確認します。再起動後に運用ステータスに切り替わったら、サービスに問題がないか確認します。十分に検証し、問題がない場合のみカーネルアップデートを実行してください。
  • GPUサーバの場合、カーネルバージョンに合う GPUドライバがインストールされている場合のみ正常に動作します。更新したカーネルが GPUドライバと互換性がない場合、GPUサーバが正常に動作しない場合があります。したがって、GPUドライバの互換性を確認した後、カーネルアップデートを実行してください。関連情報は、GPUドライバガイドをご確認ください。
参考

本カーネルアップデートガイドは、今後定期的なアップデートを提供しません。したがって、最新の情報を確認したり、他のカーネルバージョンをインストールする場合は、当該ガイドを参照して別途でタスクを実行してください。
ガイドに明示されているカーネルバージョンは一例であり、必要に応じて他のカーネルバージョンを十分にテストしてからインストールしてください。

注意
  • ユーザーサーバのカーネルアップデートはユーザーの責任で行う必要があり、カーネルアップデートにより発生するトラブルに対して NAVERクラウドプラットフォームは責任を負いません。
  • カーネルアップデートや再起動中はサーバの正常な使用が不可な場合があり、これによる復旧はサポートしていません。また、カーネルアップデートの失敗時のサーバ復旧はサポートしていません。
  • カーネルを更新する前にマイサーバイメージで作成したバックアップは、バックアップが不要になるまで保存してください。
  • このガイドと関連したトラブルに対しては、別途サポートは提供されません。

アップデート可能なカーネルバージョンの確認

Ubuntu 24.04サーバのカーネルを更新する方法は、次の通りです。

基本的に Repository URLは NCP Repo(http://repo.ncloud.com)に設定されます。ただし、パブリック IPアドレスを保有していたり NATが構成された Private Subnet環境では、NCP Repoの代わりに外部 Public Mirrorサイトを使用できます。

参考

NCP Repoは、外部アクセスが制限される VPC Private Subnetなどのユーザー環境をサポートするために、NAVERクラウドプラットフォームが提供するリポジトリです。
NCP Repoは年4回しか同期されないので、最新のパッチを素早く適用するには、外部 Public Mirrorサイトに変更することをお勧めします。詳細は、Linux OS Repository設定点検ガイドをご参照ください。

  1. カーネルアップデートを適用するサーバにリモートアクセスします。

  2. サーバに適用するカーネルバージョンを確認します。

    root@ubuntu2404:~# apt-cache search linux-image-6.8.0 | grep generic
    linux-image-6.8.0-31-generic - Signed kernel image generic
    linux-image-6.8.0-35-generic - Signed kernel image generic
    linux-image-6.8.0-36-generic - Signed kernel image generic
    linux-image-6.8.0-38-generic - Signed kernel image generic
    linux-image-6.8.0-39-generic - Signed kernel image generic
    linux-image-6.8.0-40-generic - Signed kernel image generic
    linux-image-6.8.0-41-generic - Signed kernel image generic
    linux-image-6.8.0-44-generic - Signed kernel image generic
    linux-image-6.8.0-45-generic - Signed kernel image generic
    linux-image-6.8.0-47-generic - Signed kernel image generic
    linux-image-6.8.0-48-generic - Signed kernel image generic
    linux-image-6.8.0-49-generic - Signed kernel image generic
    linux-image-6.8.0-50-generic - Signed kernel image generic
    linux-image-6.8.0-51-generic - Signed kernel image generic
    linux-image-6.8.0-52-generic - Signed kernel image generic
    linux-image-6.8.0-53-generic - Signed kernel image generic
    linux-image-6.8.0-54-generic - Signed kernel image generic
    
    参考

    最新カーネル情報がアップデートされない場合、 apt update コマンドを実行した後に再試行してください。
    当該コマンドは OSリポジトリのメタ情報を更新するロールを担い、aptコマンドの実行前に行うことをお勧めします。

カーネルアップデート

Ubuntu 24.04サーバのカーネルを更新する方法は、次の通りです。

参考

このガイドでは、Ubuntu 24.04サーバでカーネルバージョンを 6.8.0-54-generic にアップグレードする例を提供します。
ガイドを参照する時点でインストール可能なカーネルバージョンが異なる場合がありますので、他のバージョンも十分にテストしてからインストールしてください。

  1. カーネルアップデートを適用するサーバにリモートアクセスします。

  2. サーバのカーネルバージョンを確認します。

    root@ubuntu2404:~# uname -r
    6.8.0-52-generic
    
  3. サーバに接続されたリポジトリ情報を確認します。

    root@ubuntu2404:~# cat /etc/apt/sources.list.d/ubuntu.sources
    Types: deb
    URIs: http://repo.ncloud.com/ubuntu/
    Suites: noble noble-updates noble-backports
    Components: main restricted universe multiverse
    Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
    
    Types: deb
    URIs: http://repo.ncloud.com/ubuntu/
    Suites: noble-security
    Components: main restricted universe multiverse
    Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
    
  4. リポジトリで提供するカーネルバージョンを確認します。

    root@ubuntu2404:~# rm -rf /var/cache/apt/archives/*
    root@ubuntu2404:~# rm -rf /var/lib/apt/lists/*
    root@ubuntu2404:~# apt clean
    root@ubuntu2404:~# apt update 
    Get:1 http://repo.ncloud.com/ubuntu noble InRelease [256 kB]
    Get:2 http://repo.ncloud.com/ubuntu noble-updates InRelease [126 kB]
    Get:3 http://repo.ncloud.com/ubuntu noble-backports InRelease [126 kB]
    Get:4 http://repo.ncloud.com/ubuntu noble-security InRelease [126 kB]
    Get:5 http://repo.ncloud.com/ubuntu noble/main amd64 Packages [1,401 kB]
    
    ... 省略 ...  
    
    Get:59 http://repo.ncloud.com/ubuntu noble-security/multiverse Translation-en [4,308 B]
    Get:60 http://repo.ncloud.com/ubuntu noble-security/multiverse amd64 Components [212 B]
    Get:61 http://repo.ncloud.com/ubuntu noble-security/multiverse amd64 c-n-f Metadata [356 B]
    Fetched 35.2 MB in 6s (5,890 kB/s)                                       
    Reading package lists... Done 
    
    root@ubuntu2404:~# apt policy linux-image-6.8.0-54-generic
    linux-image-6.8.0-54-generic:
      Installed: (none)
      Candidate: 6.8.0-54.56
      Version table:
         6.8.0-54.56 500
            500 http://repo.ncloud.com/ubuntu noble-updates/main amd64 Packages
            500 http://repo.ncloud.com/ubuntu noble-security/main amd64 Packages
    
  5. 確認したバージョンのカーネルをインストールします。
    新規インストールパッケージ、アップデートパッケージ、削除パッケージのリストを詳細に確認した後、異常がない場合 Yを入力してインストールを完了します。

    root@ubuntu2404:~# apt install linux-{image,headers}-6.8.0-54-generic
    Reading package lists... Done
    Building dependency tree... Done
    The following additional packages will be installed:
      linux-headers-6.8.0-54 linux-libc-dev linux-modules-6.8.0-54-generic linux-tools-common
    Suggested packages:
      fdutils linux-tools linux-modules-extra-6.8.0-54-generic
    The following NEW packages will be installed:
      linux-headers-6.8.0-54 linux-headers-6.8.0-54-generic linux-image-6.8.0-54-generic linux-modules-6.8.0-54-generic
    The following packages will be upgraded:
      linux-libc-dev linux-tools-common
    2 upgraded, 4 newly installed, 0 to remove and 192 not upgraded.
    Need to get 74.3 MB of archives.
    After this operation, 169 MB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
    
    ... 省略 ...   
    
    Pending kernel upgrade!
    Running kernel version:
      6.8.0-52-generic
    Diagnostics:
      The currently running kernel version is not the expected kernel version 6.8.0-54-generic.
    
    Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting.
    
    No services need to be restarted.
    
    No containers need to be restarted.
    
    No user sessions are running outdated binaries.
    
    No VM guests are running outdated hypervisor (qemu) binaries on this host.
    
  6. インストールが完了したら、起動可能なすべてのカーネルバージョンを確認します。

     root@ubuntu2404:~# dpkg -l | grep linux-image | grep ii
     ii  linux-image-6.8.0-48-generic         6.8.0-48.48                             amd64        Signed kernel image generic
     ii  linux-image-6.8.0-52-generic         6.8.0-52.53                             amd64        Signed kernel image generic
     ii  linux-image-6.8.0-54-generic         6.8.0-54.56                             amd64        Signed kernel image generic
    
  7. 起動時に最新カーネルバージョンをデフォルト値として選択できるように設定します。

    root@ubuntu2404:~# sed -i 's/GRUB_DEFAULT=.*/GRUB_DEFAULT=saved/g' /etc/default/grub
    
    root@ubuntu2404:~# grep "GRUB_DEFAULT" /etc/default/grub
    GRUB_DEFAULT=saved
    
    root@ubuntu2404:~# grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-54-generic"
    
    root@ubuntu2404:~# grub-editenv list
    saved_entry=Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-54-generic
    
    root@ubuntu2404:~# update-grub
    Sourcing file `/etc/default/grub'
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-6.8.0-54-generic
    Found initrd image: /boot/initrd.img-6.8.0-54-generic
    Found linux image: /boot/vmlinuz-6.8.0-52-generic
    Found initrd image: /boot/initrd.img-6.8.0-52-generic
    Found linux image: /boot/vmlinuz-6.8.0-48-generic
    Found initrd image: /boot/initrd.img-6.8.0-48-generic
    Warning: os-prober will not be executed to detect other bootable partitions.
    Systems on them will not be added to the GRUB boot configuration.
    Check GRUB_DISABLE_OS_PROBER documentation entry.
    Adding boot menu entry for UEFI Firmware Settings ...
    done
    
  8. 最新カーネルバージョンを有効にするには、サーバを再起動します。

    root@ubuntu2404:~# sync;reboot
    
    参考

    サーバの再起動に失敗した場合、カーネルアップデートが正常に行われなかったことを意味します。この場合は、カーネルアップデートの復元を参照して以前のカーネルバージョンに戻してください。

  9. サーバに再ログインして新しいカーネルが有効になっているか確認します。

    root@ubuntu2404:~# uname -r
    6.8.0-54-generic
    
    参考

    アップデートしたカーネルが正常に適用されたか確認するには、カーネルアップデートの確認を参照してカーネルのインストール状況をご確認ください。

カーネルアップデートの確認

アップデートしたカーネルが正常に適用されたか確認する方法は、次の通りです。

  1. サーバへリモートアクセスします。
  2. カーネルパッケージがインストールされているかを確認します。
    root@ubuntu2404:~# dpkg -l | grep linux-image-6.8.0-54-generic
    ii  linux-image-6.8.0-54-generic         6.8.0-54.56                             amd64        Signed kernel image generic
    
  3. /bootディレクトリに initramfsファイルと vmlinuzファイルが作成されているかを確認します。
    root@ubuntu2404:~# ls -l /boot/initrd.img-6.8.0-54-generic
    -rw-r--r-- 1 root root 43681971 Mar  5 18:49 /boot/initrd.img-6.8.0-54-generic
    
    root@ubuntu2404:~# ls -l /boot/vmlinuz-6.8.0-54-generic
    -rw------- 1 root root 14985608 Feb  8 07:01 /boot/vmlinuz-6.8.0-54-generic
    
  4. grub.cfgファイルに最新カーネル設定が登録されているかを確認します。
    root@ubuntu2404:~# awk -F"--class" '/menuentry/ && /with Linux/ {print $1}' /boot/grub/grub.cfg | awk '{print i++ " : " $5,$6,$7,$8}' | sed -e "s/'/ /g"
    0 : 6.8.0-54-generic    
    1 : 6.8.0-54-generic (recovery mode)  
    2 : 6.8.0-52-generic    
    3 : 6.8.0-52-generic (recovery mode)  
    4 : 6.8.0-48-generic    
    5 : 6.8.0-48-generic (recovery mode)
    

カーネルアップデートの復元

カーネルのアップデート後にサーバの再起動が正常に行われない場合、更新する前のカーネルに戻す必要があります。インストールされたカーネルのうち、複数のバージョンに復元できます。また、このガイドではカーネルアップデートの直前に使用したカーネルバージョンに復元する方法を使っています。

参考

サーバの再起動問題を解決するために Single modeに入り、サーバの復旧を試行することもできます。Single modeの起動方法は、サーバ復旧ガイドをご参照ください。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 i_menu > Services > Compute > Serverメニューを順にクリックします。

  2. Server メニューをクリックします。

  3. サーバリストから復旧するサーバを選択した後、 [サーバアクセスコンソール] ボタンを選択します。

  4. grub起動画面でブートカーネルを以前のバージョンに選択して再起動します。

    • Ubuntu 24.04 grub起動画面
      kernel-update-kvm-ubuntu24_console01

      kernel-update-kvm-ubuntu24_console02

  5. 起動が完了したら、サーバのカーネルバージョンを確認します。

    root@ubuntu2404:~# uname -r
    6.8.0-52-generic
    
  6. 現在有効になっているカーネルバージョンを確認します。

    root@ubuntu2404:~# awk -F"--class" '/menuentry/ && /with Linux/ {print $1}' /boot/grub/grub.cfg | awk '{print i++ " : " $5,$6,$7,$8}' | sed -e "s/'/ /g"
    0 : 6.8.0-54-generic    
    1 : 6.8.0-54-generic (recovery mode)  
    2 : 6.8.0-52-generic    
    3 : 6.8.0-52-generic (recovery mode)  
    4 : 6.8.0-48-generic    
    5 : 6.8.0-48-generic (recovery mode)
    
  7. 起動時にデフォルトのカーネルバージョンを以前のバージョンのカーネルバージョンにリセットします。

    root@ubuntu2404:~# sed -i 's/GRUB_DEFAULT=.*/GRUB_DEFAULT=saved/g' /etc/default/grub
    
    root@ubuntu2404:~# grep "GRUB_DEFAULT" /etc/default/grub
    GRUB_DEFAULT=saved
    
    root@ubuntu2404:~# grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-52-generic"
    
    root@ubuntu2404:~# grub-editenv list
    saved_entry=Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-52-generic
    
    root@ubuntu2404:~# update-grub
    Sourcing file `/etc/default/grub'
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-6.8.0-54-generic
    Found initrd image: /boot/initrd.img-6.8.0-54-generic
    Found linux image: /boot/vmlinuz-6.8.0-52-generic
    Found initrd image: /boot/initrd.img-6.8.0-52-generic
    Found linux image: /boot/vmlinuz-6.8.0-48-generic
    Found initrd image: /boot/initrd.img-6.8.0-48-generic
    Warning: os-prober will not be executed to detect other bootable partitions.
    Systems on them will not be added to the GRUB boot configuration.
    Check GRUB_DISABLE_OS_PROBER documentation entry.
    Adding boot menu entry for UEFI Firmware Settings ...
    done
    
  8. (オプション)変更されたカーネルバージョンが正常に起動するか確認するために、サーバを再起動します。

    root@ubuntu2404:~# sync;reboot
    
  9. (オプション)サーバに再ログインして起動有無とカーネルバージョンを確認します。

    root@ubuntu2404:~# uname -r
    6.8.0-52-generic