カーネルの再構築をしたいのですが、
あまりよくわかりません。

カーネルについてからやさしくおしえてくれませんでしょうか?
本とかを読んでも理解できないので、よろしくお願いします。

カーネルは、2.4.2です。REDHAT7.1です。

今までの自分的な認識は、ウインドウズでいうデバイスマネージャーみたいなものと思い込んでいます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まず/usr/srcに移動します。

作業はrootで行うことを前提としていますが、途中
まではユーザーでも出来るでしょう。
# cd /usr/src
次にすでにlinuxという名前でシンボリックリンクがある場合はそれを削除します。
# rm -f linux
ダウンロードしたカーネルを展開します。
ダウンロードしたソースがkernel-2.4.3.tar gzだった場合
# tar zxvf kernel-2.4.3.tar gz
ダウンロードしたソースがkernel-2.4.3.tar.bz2だった場合
# bzip2 -d -c kernel-2.4.3.tar bz2 | tar xv
これで新たに/usr/src以下にlinuxというディレクトリが生成されます。
ここでこの新しいカーネルを再構築するのに必要なモジュールが自分の環境
に整っているかを確認しましょう。
/usr/src/linux/Documentationの中にあるChangesというファイルを確認しま
す。もしそこに示されたも
のよりもご自分の環境のバージョンが古い場合、あらかじめアップデートしてお
く必要があります。そのためのアップデータが置いてある場所も、更にファイル
を読み進めていくと親切に書いてありますので、そちらからダウンロードして、
アップデートしましょう。ほとんどのアップデータは一般的なconfigure,make,
make installでアップデートできます。またe2fsprogsやmodutilsはsrcファイルが
あるので、それをリビルドすると楽チンです。これらRPMの扱いについてお分か
りにならない場合は、ドキュメントを読むなり参考書を読むなりして下さい。一応
一般的には以下のようにします。
まずダウンロードしたファイルを/usr/src/redhat(turbo)/SRPMSに移します
# cp file(ファイル名).src.rpm /usr/src/redhat(turbo)/SRPMS
次にこれをリビルドします。
# cd /usr/src/redhat(turbo)/SRPMS
# rpm --rebuild file.src.rpm
すると/usr/src/redhat(turbo)/RPMS/i386以下にrpmファイルが生成されます。
# cd /usr/src/redhat(turbo)/RPMS/i386
# rpm -Uvh file.i386.rpm
ここまででエラーがなかった場合、アップデートは完了です。

すべての必要なアップデートが完了したら展開したカーネルをリネームします。
# cd /usr/src
# mv linux linux-2.4.3
リネームしたカーネルにシンボリックリンクを貼ります。
# ln -s linux-2.4.3 linux
次に新しいカーネルディレクトリに移動します。
# cd linux
カーネルをコンパイルする前に、一度カーネルをリセットします。
# make mrproper
カーネルのコンフィグをはじめます。
# make xconfig(X上でGUI)またはmake menuconfig
ここでご自分の環境に合わせてコンフィグレーションして下さい。
分からなければ現在のカーネルを参考にしてもいいでしょう。
その場合は新たにターミナルを起動して
# cd /usr/src/linux.bak
# make xconfig
とすると現在のカーネルの状態が同様にみることが出来ます。ただし見終わっ
たらセーブしないで終了して下さい。
新しいカーネルの方は必ずセーブして終了します。するとmake depしてね、と
言われますので、それを実行していきます。
# make dep
# make clean
----------------------------------
(ここであらかじめ/etc/lilo.confを

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux

image=/boot/vmlinuz-2.2.16-22LL6smp
label=linux22
initrd=/boot/initrd-2.2.16-22LL6smp.img
read-only
root=/dev/hda5

image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda5

のように修正しておけば(あくまで一例です)、
以下の作業は不要になり、かわりに次のコマンドを実行して下さい
# make install
この過程が終了した後に
# make modules
# make modules_install
# /sbin/lilo
を実行し再起動すれば、新しいカーネルになります)
----------------------------------------
# make bzImage(Iは大文字の"アイ"でl"小文字のエル"ではありません)
# make modules
# make modules_install
どのプロセスでもエラーがなかった場合は次に進めます。
もしエラーがないと確信がある場合は
# make dep clean bzImage modules modules_install
と一気にやってしまうことも可能です。
次にinitrdを生成します。
# mkinitrd /boot/initrd-2.4.0 2.4.0(/lib/modulesを参照)
ここでエラーが出た場合はとりあえずinitrdの生成を諦めるか、再度カーネルを
コンフィグしなおして上記をやりなおします。
更に進めます。
# cp -p arch/i386/boot/bzImage /boot/vmlinuz24
# cp -p System.map /boot/System.map24
# cd /boot
# ln -s System.map24 System.map
ここまで順調にきたら、liloを書き換えます。
/etc/lilo.confをエディタで開いて下さい。
こちらに一例を示しました。赤字の部分は書き換え、青字の部分は書き加えます。
なお、initrd=/boot/initrd-2.4.0の部分はinitrd生成に失敗した場合は省いて下さい。
/etc/lilo.confを書き換えたら保存して、
# /sbin/lilo
を実行して下さい。これで再起動後は新しいカーネルで起動できるはずです。
なお、元のカーネルで起動したい場合はboot:と表示されたらlinuxとタイプして
Enterを押して下さい。

あくまで一般例です。
RPMを利用する方法とは違いますのでご注意下さい。
なお、上記は自分のHPに掲載している部分からコピーしてきましたので、若干おかしいところがあるかも知れません。
    • good
    • 0

「再構築の方法」については、OSに依存することであり、ackyさんが非常に詳


しく説明されていますし、多くのサイトでも解説されているので、省略します。


カーネルというのは、UNIXのような古典的なOSの場合、通常のプログラム自身
が処理できないような作業をしてくれるプログラムと理解すればいいと思いま
す。OSを起動するというのは、なにはともあれカーネルをメモリ上に置いて、
それを実行することであるという面もあります。

カーネルがやってくれる作業には、入出力(デバイス操作、ネットワーク、割
込み処理を含む)、プロセス管理(最初のプロセスの生成を含む)、ファイル
システム管理、仮想記憶管理、アクセス制御などがあります。通常のプログラ
ムでも、入出力とか、ファイル操作をやってるじゃないかと考えるかもしれま
せんが、通常のプログラムはシステムコールという方法でカーネルにお伺いを
たてるだけで、実際の作業はカーネルがするわけです。


では、どんなときにカーネルを再構築するかというと、バグ修正やバージョン
アップのパッチを当てたいとき、非標準のファイルシステムなどの新しい機能
を付加したいとき、カーネルがサポートしている以外のデバイスを組み込みた
いとき、カーネルのパラメータを調整したいときなどが該当します。

最近のUNIXでは、動いているカーネルに対して、動的にモジュールを追加・削
除できる機能も付加されていますので、以前ほど頻繁にカーネルを再構築する
という状況は減っていますが、まったく不要という具合にもなっていません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QRedHat8.0 カーネル再構築

RedHat8.0 のデフォルトのカーネルの再構築を
しようとしています。

make xconfig で IP multicast を y にしました。
make bzImage は正常に終了しました。
make modules が失敗します。

dummy.c dummy_init内
invalid suffix on integer constant

と言ってますが、このエラーはどうすればなくなるの
でしょうか。

Aベストアンサー

全く自信はないのですが、最初に

make mrproper

しましたか?

7.1 あたりのころで見た情報に、これをやらないとカーネルの
再構築に失敗するというのがありました。
8.0でもあてはまるかどうか…

余談ですが、私も標準カーネルでは VMware に不具合がでて、
2.4.20 をソースからインストールしました。
全く問題無く動いています。

QRedHat Linux7.1初心者です。Netscapeについて

ヤフーメールにログインしてメールの返信や
戻るボタンを使うとブラウザーが落ちてしまいます。
なぜでしょう?

Aベストアンサー

私もよく分からないのです。
RedHat7.1Jには、Mozillaというブラウザがあります。

プログラム -> インターネット -> Mozilla -> マウスの右クリック -> ランチャーをパネルに登録

馬のアイコンです。Netscapeよりはるかに安定して使用できる、ブラウザです。文字エンコードを「日本語」の選択にして、使用ください。

もし、導入されてなければ、

CDROMのRPMSにも、rpmファイルとして、入っています。

参考URL:http://www.mozilla.org/

Qlprコマンドがない(RedHat7.1)

RedHat7.1でサーバを構築しています
かなりパッケージを削ったせいかlprコマンドがありません。。。。

どのパッケージを入れたらlprコマンドが使えるようになるのでしょうか?
分かる方教えて頂きたいです。

宜しくお願いします!!

Aベストアンサー

多分LPRingパッケージです。

QRedhat-Linux7.1J で「zlib」パッケージを正常にインストールしたい

Redhat-Linux7.1JのOSを導入完了しています。

Redhat-Linux7.1JのCDROM(1枚目)から
「zlib」パッケージをインストールしようとすると、
次のようなエラーがでて、結果的にはインストールできません。

このzlibがインストールできないと、
あるパッケージがインストールできないので、とても困っています。

どうすれば、「zlib」パッケージを正常にインストールできるでしょうか?
教えてください!


<コマンド>
 # rpm -ivh zlib-1.1.3-22.i386.rpm

<実行結果>
Preparing... #######################[ 100%]
1:zlib エラー: unpacking of archive failed on file /usr/share/doc/zlib-1.1.3/README: cpio: MD5 sum mismatch

Aベストアンサー

ファイルが壊れています。
Check SumがMismatchで解凍できません。

たとえば、次のftpサイトから、ダウンロードされたらと思います。
"#"を表示するのは、-ivhの"h"を指定したので、ハシュで進行状況をしめしていますが、最後で、チェックサムの不一致です。

http://ftp.dti.ad.jp/pub/OpenBSD/distfiles/rpm/

参考URL:http://ftp.dti.ad.jp/pub/OpenBSD/distfiles/rpm/

QRedHat7.1 でNICが使えない。

RedHat7.1でcoregaのFEther PCI-TXLを使うにはどうしたらよいでしょう?
出来れば、具体的に教えてください。
あと、RedHat7.1ででつかえるNICってどうやって調べればよいですか?
よろしくお願いします。

Aベストアンサー

MELCOのLGY-PCI-XTCやcoregaのFEther PCI-TLなら使えます。
自分もcoregaのサイトからvialine.cをダウンロードして見ましたが
コンパイルの途中でエラーが出てしまいました。

>あと、RedHat7.1ででつかえるNICってどうやって調べればよいですか?
RedHatのHPに対応表があります。

参考URL:http://hardware.redhat.com/hcl/genpage2.cgi?pagename=7.1&statpage=7.1-inic


このカテゴリの人気Q&Aランキング

おすすめ情報