vine-users ML アーカイブ



[vine-users:058577] Re: rebuild kernel-2.4.20 by make rpm

  • From: Masa Takahashi <masa@xxxxxxxxxxxxxxxxxxx>
  • Subject: [vine-users:058577] Re: rebuild kernel-2.4.20 by make rpm
  • Date: Sat, 22 Feb 2003 12:45:08 +0900
こんばんわ、政です。


KIKUCHI Junichi wrote:
> 菊池@春日部です。
> 
> At Sat, 22 Feb 2003 19:12:54 +0900 (JST),
> Tsunehiro Hayashi wrote:
> 
>>のようにやっていたのですが、ここで教えてもらったrpmを作成するやりかた
>>でした。
>>
>># make dep clean rpm
>># rpm -Uvh --force ***.rpm
>>
>>とすれば更新はできるようになりました。しかし何故か、上記のように
>>--forceオプションをつけないと、「競合しています」といったエラーが出て更
>>新してくれませんでした。
> 
> 
> rpm -ivh kernel-***.rpm でインストールできませんか?
> 
> # もしかしたら、--force が必要な場合もあるかも。

想像の範囲ですが、makeの前にmake mrproperを実行しているのでは
ないでしょうか?  なので、リビジョンNo.等が全て同一になるので
"競合しています"というエラーが出るのだと思います。  なので
--forceが必要なのでは?


> 
> rpm -Uvh してしまうと、現在のカーネルをアップグレードしてしまう
> ので、新カーネルで起動しなかった場合困ってしまいます。
> 起動 FD があればとりあえずブートできますが。
> 
> -ivh でインストールし、旧カーネルでも起動できるように lilo.conf
> なり、grub.conf を編集しておくべきです。
> 

私も同感です。


> 
>>ビルドの作業を行っていたのは、/usr/src/linuxディレクトリだったのですが、
> 
> 
> 素のカーネルの tar ボールは、/usr/src/linux に展開されますね。
> 

素のtarballを展開すると2.4.20等の場合は/usr/src/linux-2.4.20になります。


> 
>>どうも最初にrpmファイルを作ったときに
>>
>>/usr/src/redhat/BUILD/kernel-2.4.20
> 
> 
> root の rpm の builddir が、/usr/src/redhat/BUILD だからです。
> 

rootの.rpmmacrosにrootを指定していると/root/rpm/BUILDで作成されます。


> 
>>以下にソースツリーが新たに作られていたようで、そこには.versionと言うファ
>>イルができていました。rpmは、このファイルを見てリビジョン番号の更新を
>>しているのではないかと思います。このことに気づいてからリビルドしていま
>>せんので推測ですが。
> 
> 
> rpm が見ているファイルのバージョン・リリース番号は、
> 
>  hoge-1.0-0vl1.rpm
>       ^^^ ^^^^
>       (1)  (2)
> 
> (1)がバージョン番号、(2)がリリース番号です。
> 
> カーネル自体のバージョン・リリース番号は、
> 
>  Makefile , include/linux/version.h
> 
> に書いてあると思います。make xconfig なりをしたあとかな…。
> 
> # というか、変えたい場合は編集してから make だと思う。
> 

上記の内容は詳しくはないですが、素のkernelをmake rpmすると
私の経験ではkernel-2.4.20-1.i386.rpmという具合になります。
菊池さんのおっしゃる(2)リリース番号はmakeの度に自動的に
加算されます。make mrproperを実行してしまうとリリース番号が
-1に戻ってしまうので最初に書いてあるような問題が出るのでは
ないかと想像されます。