Centosカーネルアップグレードの3つの方法

CentOSプラットフォームに基づく作業プロセスでは、機能の検証、パフォーマンスのデバッグ、またはシステム全体の更新のために、カーネルをアップグレードまたはダウングレードする必要がある場合があります。

カーネルを最初から再コンパイルする場合、カーネルの機能がますます複雑になり、依存するライブラリやツールが多数あり、再コンパイルには時間がかかるため、カーネルを更新する多くの方法を理解する必要があります。

著者の最近の研究に基づいて、参考のために3つの方法を以下に要約します。

**方法1 **

マシンがインターネットに接続されていない場合は、既存のカーネルパッケージをローカルマシンにダウンロードして、ローカルで直接更新できます。

  1. 必要な公布rpmをhttp://ftp.scientificlinux.org/linux/scientific/7.0/x86_64/updates/security/からダウンロードします。

  2. [ root@localhost os2]# scp [email protected]:/home/worker/kernel-3.10.0-123.1.2.el7.x86_64.rpm

[email protected]'s password:

kernel-3.10.0-123.1.2.el7.x86_64.rpm                                         100%   29MB  28.9MB/s   00:00

3.[ root@localhost os2]# yum install kernel-3.10.0-123.1.2.el7.x86_64.rpm

Loaded plugins: fastestmirror, langpacks

Examining kernel-3.10.0-123.1.2.el7.x86_64.rpm: kernel-3.10.0-123.1.2.el7.x86_64

Marking kernel-3.10.0-123.1.2.el7.x86_64.rpm to be installed

Resolving Dependencies

epel/x86_64/metalink                                                                    | 5.2 kB  00:00:00

epel/x86_64                                                                           | 4.3 kB  00:00:01

epel/x86_64/updateinfo                                                                  | 517 kB  00:00:01

epel/x86_64/primary_db                                                                  | 4.0 MB  00:02:36

....

**方法2 **

マシンがインターネットに接続されている場合は、パッケージ管理ツールを直接使用して更新します。3.0以降の現在のカーネルでは署名メカニズムが導入されており、署名キーをインポートする必要があることに注意してください。参照手順は次のとおりです。

1、 インポートキー
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

もちろん、リポジトリのgpgcheck = 0が変更されている場合は、キーをインポートする必要はありません。

2、 elrepoのyumソースをインストールします

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

3、 カーネルをインストールします
yumのELRepoソースには、公布されたメインラインがあり、次のようにインストールできます。
 yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y

もちろん、長期間インストールすることもできます。

yum --enablerepo=elrepo-kernel  install  kernel-lt -y

その他:

http://elrepo.org/linux/kernel/el6/x86_64/RPMS/

[ root@server-mysql yum.repos.d]# yum --enablerepo=elrepo-kernel  list  |grep kernel*
Unable to read consumer identity
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
abrt-addon-kerneloops.x86_64               2.0.8-6.el6                   @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
dracut-kernel.noarch                       004-283.el6                   @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
kernel.x86_64                              2.6.32-279.el6                @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
kernel-devel.x86_64                        2.6.32-279.el6                @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
kernel-firmware.noarch                     2.6.32-279.el6                @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
kernel-headers.x86_64                      2.6.32-279.el6                @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
libreport-plugin-kerneloops.x86_64         2.0.9-5.el6                   @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
abrt-addon-kerneloops.x86_64               2.0.8-40.el6.centos           base   
dracut-kernel.noarch                       004-409.el6_8.2               updates
kernel.x86_64                              2.6.32-642.3.1.el6            updates
kernel-abi-whitelists.noarch               2.6.32-642.3.1.el6            updates
kernel-debug.x86_64                        2.6.32-642.3.1.el6            updates
kernel-debug-devel.i686                    2.6.32-642.3.1.el6            updates
kernel-debug-devel.x86_64                  2.6.32-642.3.1.el6            updates
kernel-devel.x86_64                        2.6.32-642.3.1.el6            updates
kernel-doc.noarch                          2.6.32-642.3.1.el6            updates
kernel-firmware.noarch                     2.6.32-642.3.1.el6            updates
kernel-headers.x86_64                      2.6.32-642.3.1.el6            updates

kernel-lt.x86_64                           3.10.102-1.el6.elrepo         elrepo-kernel
kernel-lt-devel.x86_64                     3.10.102-1.el6.elrepo         elrepo-kernel
kernel-lt-doc.noarch                       3.10.102-1.el6.elrepo         elrepo-kernel
kernel-lt-firmware.noarch                  3.10.102-1.el6.elrepo         elrepo-kernel
kernel-lt-headers.x86_64                   3.10.102-1.el6.elrepo         elrepo-kernel

kernel-ml.x86_64                           4.6.4-1.el6.elrepo            elrepo-kernel
kernel-ml-devel.x86_64                     4.6.4-1.el6.elrepo            elrepo-kernel
kernel-ml-doc.noarch                       4.6.4-1.el6.elrepo            elrepo-kernel
kernel-ml-firmware.noarch                  4.6.4-1.el6.elrepo            elrepo-kernel
kernel-ml-headers.x86_64                   4.6.4-1.el6.elrepo            elrepo-kernel
libreport-plugin-kerneloops.x86_64         2.0.9-32.el6.centos           base   
perf.x86_64                                4.6.4-1.el6.elrepo            elrepo-kernel

方法3

実際の作業では、カーネル構成の変更、ドライバーのコンパイル、関連パラメーターの調整などが必要になることがよくあります。これには、カスタマイズされたカーネルが必要であり、そのためには、新しいカーネルを手動で生成する必要があります。 3.10.0-123.el7を例にとると、一般的な手順は次のとおりです。

  1. 最初にカーネルをダウンロードします。

wget http://vault.centos.org//7.0.1406/os/Source/SPackages/kernel-3.10.0-123.el7.src.rpm

次に、関連するコードを解凍します。

rpm2cpio kernel-3.10.0-123.el7.src.rpm |cpio -div

デフォルトでは、/ usr / srcにカーネルヘッダーファイルがあるため、カーネルソースコード全体をダウンロードせずに独自のカーネルモジュールをコンパイルできます。再生する必要のあるパッチがある場合は、patch -p1 * .patchコマンドを使用します。対応するパッチをカーネルに配置します。

  1. 構成ファイル.configを更新します

システムの現在の構成ファイルを取得するか、x86_64_defconfigなどのデフォルトの構成ファイルを使用できます。

cp /boot/config-3.10.0-123.el7.x86_64.configは、makeoldconfigによって生成された構成と一致しています。

次に、makemenuconfigを使用して構成します。

  1. コンパイルしてインストール

デフォルトでは、カーネルとinitrdは/ bootの下にインストールされ、ドライバーモジュールは/ lib / modules / uname -rの下にインストールされます。両方をデフォルトの場所にインストールできる場合は、次のコマンドを実行するだけです。

make -j8;make modules; make modules_install;make install;

指定されたパスにインストールする必要がある場合は、次の環境変数を設定してください。

export INSTALL_PATH=….

export INSTALL_MOD_PATH=

  1. initrd.imgを作成します

initrd.imgは、初期化されたramdiskファイルであり、メモリイメージファイルです。最も基本的なドライバーとコマンドツールのいくつかがパッケージ化されており、その機能は、ルートパーティションがシステムにマウントされる前に、システムが基本的な初期化を実行し、scsiドライバーのマウントなどのいくつかの基本的なドライバーをロードできるようにすることです。 initrdを作成する従来の方法は、システムツールであるmkinitramfsを使用することです。これで、mkinitrdはdracutを呼び出して、実際の作業を完了します。たとえば、次のコマンド:

mkinitrd3.0.4 -o /boot/initrd.img-3.0.4

次に、生成されたinitrdイメージを/ bootにコピーします。

  1. グラブを更新する

ブートローダーが新しく生成されたカーネルとinitrdイメージを見つけるには、grubを変更する必要があります。 grub2を使用している場合は、/ boot / grub2 / grub.cfgファイルを直接変更するのではなく、grub2構成ファイルを変更する必要があることに注意してください。 grub2のデフォルトの構成ファイルは/etc/grub2.cfgにあります。このファイルを更新した後、次のファイルを実行する必要があります。

grub2-mkconfig

どのLinuxミラーを開始するかについては、GRUB_DEFAULT = / etc / default / grubに保存されていることによって決定されます。

前回使用した値を意味します。

カーネルのデフォルトの起動項目を変更する

grub2-set-default 0

この方法では、カーネルとモジュールの署名の問題に注意を払う必要があります。モジュールの署名がカーネルチェックに合格しない場合、ロードされないため、生成システムの起動に失敗する可能性があります。

全体として、エンジニアと保守担当者は、実際の状況に基づいてカーネルを更新するための適切な方法を柔軟に選択する必要があります。


デフォルトを0に変更

grubブートを変更し、再起動します###

インストールが完了したら、Grubのブートシーケンスを変更して、新しくインストールしたカーネルをデフォルトのカーネルにする必要があります。
grub.confファイルを編集します。

vi /etc/grub.conf
# boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS(3.10.58)root(hd0,0)

( adsbygoogle = window.adsbygoogle || []).push({});

Recommended Posts

Centosカーネルアップグレードの3つの方法
Centos7アップグレードカーネル
CentOS7.5-1804システムカーネルのアップグレード
CentOS6.5はカーネルを3.10.28にアップグレードします
Centosカーネルバージョンのアップグレード
Linux:Centos7は元のカーネルをアップグレードします
セントス7カーネルのアップグレード事故を覚えておいてください
CentOS7アップグレードpython3
CentOS6.Xアップグレードカーネルカーネル
Centos6.5opensshアップグレード
centos6.9rabbitmq3.6.8アップグレード3.8.2
Centos 6.4 python2.6を2.7にアップグレード
Centos 6.4 python2.6を2.7にアップグレード
Centosカーネルコンパイル構成
CentOS8のグラフィカルインストール
Centos7は役に立たないカーネルを削除します
Centosは冗長カーネルを削除します
CentOS8システムにKernel5.xカーネルバージョンをインストールする詳細な方法
Centosのデフォルトのpython2.6のアップグレード
CentOSはpython2をpythにアップグレードします
centos7へのグラファイトの展開
Oracle11gのCentos7サイレントインストール
Centosでカーネルパニックをデバッグする
CentOS8.0ネットワーク構成の実装
DockerのCentOS環境インストール
centos6.5:gccアップグレード(5.2.0)プロセスレコード
centos7とcentos6の違い(カーネル、コマンドなど)の最初の理解