CentOSプラットフォームに基づく作業プロセスでは、機能の検証、パフォーマンスのデバッグ、またはシステム全体の更新のために、カーネルをアップグレードまたはダウングレードする必要がある場合があります。
カーネルを最初から再コンパイルする場合、カーネルの機能がますます複雑になり、依存するライブラリやツールが多数あり、再コンパイルには時間がかかるため、カーネルを更新する多くの方法を理解する必要があります。
著者の最近の研究に基づいて、参考のために3つの方法を以下に要約します。
**方法1 **
マシンがインターネットに接続されていない場合は、既存のカーネルパッケージをローカルマシンにダウンロードして、ローカルで直接更新できます。
必要な公布rpmをhttp://ftp.scientificlinux.org/linux/scientific/7.0/x86_64/updates/security/からダウンロードします。
[ 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
Running transaction check
Package kernel.x86_64 0:3.10.0-123.1.2.el7 will be installed
Finished Dependency Resolution
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を例にとると、一般的な手順は次のとおりです。
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コマンドを使用します。対応するパッチをカーネルに配置します。
システムの現在の構成ファイルを取得するか、x86_64_defconfigなどのデフォルトの構成ファイルを使用できます。
cp /boot/config-3.10.0-123.el7.x86_64.configは、makeoldconfigによって生成された構成と一致しています。
次に、makemenuconfigを使用して構成します。
デフォルトでは、カーネルとinitrdは/ bootの下にインストールされ、ドライバーモジュールは/ lib / modules / uname -r
の下にインストールされます。両方をデフォルトの場所にインストールできる場合は、次のコマンドを実行するだけです。
make -j8;make modules; make modules_install;make install;
指定されたパスにインストールする必要がある場合は、次の環境変数を設定してください。
export INSTALL_PATH=….
export INSTALL_MOD_PATH=
initrd.imgは、初期化されたramdiskファイルであり、メモリイメージファイルです。最も基本的なドライバーとコマンドツールのいくつかがパッケージ化されており、その機能は、ルートパーティションがシステムにマウントされる前に、システムが基本的な初期化を実行し、scsiドライバーのマウントなどのいくつかの基本的なドライバーをロードできるようにすることです。 initrdを作成する従来の方法は、システムツールであるmkinitramfsを使用することです。これで、mkinitrdはdracutを呼び出して、実際の作業を完了します。たとえば、次のコマンド:
mkinitrd3.0.4 -o /boot/initrd.img-3.0.4
次に、生成されたinitrdイメージを/ bootにコピーします。
ブートローダーが新しく生成されたカーネルと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.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