Linux カーネルのコンパイル手順と新しいカーネルの有効化

1. 準備作業
(1) システムがサポートする必要があるハードウェア、ファイルシステムの種類、およびネットワークプロトコルを整理します。 (2) システムのバージョン番号を確認するには、コマンド uname –r を使用することをお勧めします。システムのバージョンがコンパイルするカーネルのバージョンと一致している場合は、 /lib/modules
内容をバックアップすることをお勧めします。そうしないと、今後 make modules_install ステップによって生成されるファイルが、このパスのコンテンツを上書きします。 (3) A: Linux カーネルをダウンロードして解凍します。システムのインストール時にインストールされるソース コードは、多くのデバイスをサポートしているため、http://www.kernel.org/pub/linux/kernel/
からカーネルをダウンロードすることをお勧めします。 カーネルのプルーニングはさらに困難を増します。以下では、カーネルを linux-xyz.tar.gz としてダウンロードしたことを前提としています。一般に、Linux カーネルのソース コードは /usr/src の下に配置され、この習慣がここでも踏襲されています。このバージョンのカーネルがパスに既に存在する場合は、既存のカーネルの名前を変更することをお勧めします。               B: カーネルがインストールされている場合 (/usr/src/ ディレクトリに linux サブディレクトリがある)、それをスキップします。そうでない場合は、Linux インストール CD を CD-ROM に入れて、kernel-source-2.xx.xx を見つけます。 .rpm ファイル (xx は番号を表し、カーネルのバージョン番号を示します)。たとえば、RedHat Linux の RPMS ディレクトリは /RedHat/RPMS/ ディレクトリであり、コマンド rpm -ivh kernel-source-2 を使用します。 xx.xx.rpm で カーネル .o ファイルと不要な関連付けを  インストールします。 cd /usr/src/linux  make mrproper 






    ソース コード ディレクトリに不正な .o ファイルやファイルの依存関係がないことを確認してください。このコマンドを実行すると、カーネル オプションがデフォルトの状態に戻ります。カーネル ソース コードをダウンロードして初めてコンパイルする場合は、この手順を実行する必要はありません。3.
カーネルを構成し、関連するパラメーターを変更します。他の情報を参照してください。 
グラフィカル インターフェイスで、make xconfig; inキャラクタ インターフェイス、make menuconfig を 
入力します。 カーネル設定メニューでカーネル オプションを正しく設定し、保存して終了します。 
4. 関連するファイル 
make dep を正しく設定し
    、前の手順で選択したオプションに従ってファイルの依存関係を確立します。
5. Make clean
で不要なファイルをクリーンアップします。最後のコンパイルに基づいていくつかのオプションを削除した場合は、この手順を実行することをお勧めします。それ以外の場合は、この手順は不要です。
6. カーネルをコンパイルします。 
大きなカーネルの場合 (SCSI サポートが必要な場合など)、bzImage を作成します。 
小さなカーネルの場合は、zImage を作成します 
。 7. モジュールの コンパイル ロード可能なモジュールをコンパイルするための
モジュールを作成します 
(つまり、カーネル オプションで M として選択されたオプション) 、コンパイル時間は M オプションの数量関連の時間と同じです。
8. モジュールをインストールします。 
make modules_install 
   は、コンパイルされたモジュールを /lib/modules にコピーしようとしています。そのため、「準備」の 3 番目のステップでバックアップするように求められます。
9. 新しいカーネルを使用する
方法 1: 
(1) カーネルを置き換えます: A, mv /usr/src/linuxX.XX/system.map    /boot/system.map
                 B, mv /usr/src/linuxX.XX/arch/i386/boot/bzImage    /boot/vmlinuz
(2) 次に、/etc/lilo.conf ファイルを変更し、起動オプションを追加して、新しいカーネル bzImage/zImage が開始します。形式は次のとおりです。 
boot=/dev/hda 
map=/boot/map 
install=/boot/boot.b 
プロンプト 
タイムアウト=50 
リニア 
デフォルト=linux-new ### 新しいカーネルを使用して Linux を起動するように lilo に指示します。デフォルト ### 
append= "mem=256M" 
image=/boot/vmlinuz-2.2.14-5.0 
        label=linux 
        読み取り専用 
        root=/dev/hda5 
image=/boot/bzImage(zImage) 
        label=linux-new 
        read -only 
        root=/dev /hda5 は、 
新しいカーネルをブートできないようにするために古いブート オプションを保持し、他の操作のために Linux に入ることができます。 
保存して終了したら、/sbin/lilo を実行して変更を有効にする最も重要な手順を忘れないでください。 
方法二:使用GRUB(修改grub.conf文件)
(1)更换内核:A、mv /usr/src/linuxX.X.X/system.map    /boot/system.map
                 B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage   /boot/vmlinuz
(2)修改引导管理程序Grub,/etc/grub.conf
内容如下:
#boot =/dev/had
default =0
timeout =10
splashimage =(hd0, 0)/grub/splash.xpm.gz
title Red Hat Linux(2.4.20-8)
   root(hd0, 0)
   kernel /vmlinuz -2.4.20-8  ro root =LABEL =/
   initrd /initrd-2.4.20-8.img
方法三: 修改启动配置文件
现在大多数使用的都是grub启动,需要修改/boot/grub/grub.conf,添加相应的启动信息,添加内容的最简单格式如下:
title 显示在启动菜单上的名称
root 根文件系统挂载分区
kernel 压缩过的内核文件名
initrd 根文件系统文件名
              如:
              title My new kernel
              root (hd0,2)
              kernel /boot/vmlinuz-x.y.z
              initrd /boot/initrd-x.y.z.img
10、重新生成ram磁盘 
如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过 
如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd, 
使用mkinitrd initrd-内核版本号 内核版本号命令重新生成ram磁盘文件,例如我的Redhat 6.2: 
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0 
之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件: 
initrd=/boot/initrd-2.2.14-5.0 
ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件 
11、重新启动,OK!

おすすめ

転載: blog.csdn.net/cliffordl/article/details/9198525