6.RedHat6.2のカーネルをUpdateする(Kernel-2.2.26)
2004年02月26日に約1年ぶりに2.2系のカーネルがUpdateされました。
2.2.系のkernelはRedHat6.2などで使われておりRedHatは既にサポートを終了しているためUpdateされたカーネルは出てくることはありません。
そこで今回は2.2.26のrpmパッケージを作る実験をしたいと思います。
ここに書かれている内容で生じたいかなる問題も責任は負いません。
特にカーネルは核となる部分ですので自己の責任において実施してください。
@ 準備するもの
・RedHat6.2マシン(開発環境が導入済みであること)
・カーネル2.2.26のパッチファイル
・カーネル2.2.24のRedHat6.2 RPMソースファイル
A カーネル2.2.24SRPMファイルの展開
| #rpm -ivh kernel-2.2.24-6.2.3-src.rpm |
/usr/src/redhat以下にSPECファイル、SOURCEファイルが展開されます
B カーネル2.2.26のPatchファイルの展開/移動
/usr/local/srcにpatchファイルが置いてあると仮定します。
$cd /usr/local/src
$gunzip patch-2.2.26.gz |
gz拡張子が取れてpatch-2.2.26になります。
patch-2.2.26を/usr/src/redhat/SOURCEディレクトリへ移動(コピー)します。
| $cp -p patch-2.2.26 /usr/src/redhat/SOURCE/ |
C patch-2.2.26の編集
/usr/src/redhat/SOURCESディレクトリ以下
$cd /usr/src/redhat/SOURCE
$vi patch-2.2.26 |
下記の部分を削除します
diff -Naurp linux-2.2.25/Makefile linux-2.2.26/Makefile
--- linux-2.2.25/Makefile 2004-02-23 12:37:08.000000000 +0100
+++ linux-2.2.26/Makefile 2004-02-24 19:04:07.000000000 +0100
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 2
-SUBLEVEL = 25
+SUBLEVEL = 26
EXTRAVERSION =
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e
s/arm.*/arm/ -e s/sa110/arm/)
107,128d95
diff -Naurp linux-2.2.25/arch/m68k/bvme6000/rtc.c linux-2.2.26/arch/m68k/bvme6000/rtc.c
--- linux-2.2.25/arch/m68k/bvme6000/rtc.c 2001-03-25 18:31:52.000000000
+0200
+++ linux-2.2.26/arch/m68k/bvme6000/rtc.c 2004-02-24 14:48:05.000000000
+0100
@@ -53,6 +53,7 @@ static int rtc_ioctl(struct inode *inode
/* Ensure clock and real-time-mode-register are accessible */
msr = rtc->msr & 0xc0;
rtc->msr = 0x40;
+ memset(&wtime, 0, sizeof(wtime));
do {
wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
wtime.tm_min = BCD2BIN(rtc->bcd_min);
diff -Naurp linux-2.2.25/arch/m68k/mvme16x/rtc.c linux-2.2.26/arch/m68k/mvme16x/rtc.c
--- linux-2.2.25/arch/m68k/mvme16x/rtc.c 2001-03-25 18:31:52.000000000
+0200
+++ linux-2.2.26/arch/m68k/mvme16x/rtc.c 2004-02-24 14:48:05.000000000
+0100
@@ -51,6 +51,7 @@ static int rtc_ioctl(struct inode *inode
cli();
/* Ensure clock and real-time-mode-register are accessible */
rtc->ctrl = RTC_READ;
+ memset(&wtime, 0, sizeof(wtime));
wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
wtime.tm_min = BCD2BIN(rtc->bcd_min);
wtime.tm_hour = BCD2BIN(rtc->bcd_hr); |
D specファイルの編集
/usr/src/redhat/SPECSディレクトリ以下
kernel-2.2.specファイルを編集します。
今回の変更がわかるように下記を変更します
%define release 6.2.3 → 6.2.4
また今回追加するpatchのエントリーを追加します
Patch501: patch-2.2.6
%patch501 -p1
patch500番の後にそれぞれ追加しましょう。
E rpm & srpmファイルの作成
| #rpmbuild --ba --target i386 kernel-2.2.spec・・・i386系 |
作成されるファイル(/usr/src/redhat/RPMS/i386以下)
| kernel-2.2.24-6.2.4.i386.rpm |
kernel-BOOT-2.2.24-6.2.4.i386.rpm |
| kernel-doc-2.2.24-6.2.4.i386.rpm |
kernel-headers-2.2.24-6.2.4.i386.rpm |
| kernel-ibcs-2.2.24-6.2.4.i386.rpm |
kernel-pcmcia-cs-2.2.24-6.2.4.i386.rpm |
| kernel-smp-2.2.24-6.2.4.i386.rpm |
kernel-source-2.2.24-6.2.4.i386.rpm |
| kernel-utils-2.2.24-6.2.4.i386.rpm |
|
/usr/src/redhat/SRPMS以下
| kernel-2.2.24-6.2.4.src.rpm |
|
#rpmbuild --bb --target i586 kernel-2.2.spec・・・i586系
| kernel-2.2.24-6.2.4.i586.rpm |
kernel-smp-2.2.24-6.2.4.i586.rpm |
#rpmbuild --bb --target i686 kernel-2.2.spec・・・i686系
| kernel-2.2.24-6.2.4.i686.rpm |
kernel-smp-2.2.24-6.2.4.i686.rpm |
| kernel-enterprise-2.2.24-6.2.4.i686.rpm |
|
F 作成したカーネルを導入する
#rpm -ivh kernel-2.2.24-6.2.4.iX86.rpm ・・・Xは環境に合せてください
#rpm -Uvh kernel-header-2.2.24-6.2.4.i386.rpm \
kernel-source-2.2.24-6.2.4.i386.rpm \
kernel-utils-2.2.24-6.2.4.i386.rpm \
kernel-ibcs-2.2.24-6.2.4.i386.rpm \
kernel-pcmcia-2.2.24-6.2.4.i386.rpm \
kernel-doc-2.2.24-6.2.4.i386.rpm |
今回はpcmciaやその他部分は変更していません。
単純にカーネルをUpdateしただけになります。
RedHat6.2をどのくらいの方たちが使っているかわからないですが健闘を祈るだワン!
|