[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:16833] Re: SiS900&カーネルの再構築



From: hfujii <hfujii@auecc.aichi-edu.ac.jp>
Message-Id: <3DEC214E.1040101@auecc.aichi-edu.ac.jp>

> 以前は、/usr/src/linux というディレクトリだったと思うのですが、
> 今は、/usr/src/linux2.x.xというディレクトリになっていますよね。

物好きな人は、複数バージョンのカーネルソースを持ちたがるので、このよう
にしておくと都合がいいのです。

> 再構築して、新しいカーネルをインストールする場合に、
> どうやってインストールすればよいのでしょうか?

方法はいろいろありますので、お好きになさって結構です。

例を挙げると、

・普通に /usr/src で展開すれば、/usr/src/linux に新しいバージョンのソー
  スが展開されるので、初めから入っている /usr/src/linux2.x.y とは干渉
  しない。初めから入っているカーネルソースを使うのであれば、何も考えず
  に cd /usr/src/linux2.x.y としてから作業してよい。

・ものによっては、カーネルソースの在処を /usr/src/linux であると仮定し
  ているツールがあるので、
    # cd /usr/src
    # rm -f linux
    # ln linux2.x.y linux
  としておけば、/usr/src/linux で作業できる。新しく拾ってきた場合には、
  これに準じて、
    # cd /usr/src
    # rm -f linux
    # tar jxvf linux-2.z.w.tar.bz2
    # mv linux linux2.z.w
    # ln -s linux2.z.w linux
  のように、ディレクトリの移動とリンクの張り直しをすればいい。

カーネルをよく作るのであれば、後者のようにしておくと、バージョンごとの
管理がやりやすくて便利です。

> Grubは、MBRを更新しなくてよいとなっているのですが、
> 新しいカーネルをgrubにどう認識させるのでしょうか?

GRUB は、ext2/ext3 や ReiserFS などのファイルシステムを理解しますので、
直接 menu.lst とか grub.conf とかを読んで、そこに指定されていたカーネ
ルのファイルを探すことができます。

ですので、カーネルを入れ替えても GRUB を再設定する必要がないのです。
仮に設定がおかしくても、コマンドプロンプトモードやGRUBのブートFD から
直接カーネルを指定して起動することもできるので、トラブルに強いのです。

ちなみに、HDDインストールの場合、stage2(GRUB本体)の位置だけはセクタで
持ってないと GRUB そのものが読めないですので、これを置き換えた場合には
再インストールが必要です。menu.lst の位置(パーティションとパス)を変え
ても再インストールが必要でしょうね。

> それから、新しいカーネルはどうやってインストールすればよいのでしょうか?

/usr/src/linux/arch/i386/boot/bzImage をどこかにコピーするだけでいいで
す。ようは、lilo の場合に最後に必要だった /sbin/lilo の実行が不要なだ
けで、あとは変わりません。

ちなみに、/sbin/installkernel というスクリプトがあると、make install
時の処理を置き換えることができるので、ここに lilo の実行を除いた処理を
記述しておくというのも手です。

手元で使っているスクリプトを添付しておきます(Makefile から切り出しただ
けですが)。これを /sbin/installkernel として置くと、make install で、
カーネルや System.map のコピーだけをして、/sbin/lilo の実行を行なわな
いようになります。

> インストールが終わったら、古いカーネルのディレクトリは削除してしまっても
> よいのでしょうか?

これは藤井さん次第です。不要だと思ったら消してもらってもいいですし。

> 新しいカーネルはどうやって試せばよいのでしょうか?

make bzlilo でも、make install でも、今ある vmlinuz は vmlinuz.old に
リネームされます(添付の /sbin/installkernel も同様の処理をします)。

なので、GRUB のエントリに、/vmlinuz.old からブートできるようなエントリ
を追加してやれば、もしおかしくなったときに、古いカーネルから起動できま
す。

何度も構築して繰り返し試したいときには、元のカーネルを vmlinuz.orig み
たいに、別の名前とかでもコピーしておくと、間違えて連続して make
install して元のカーネルを失う事故を防げますね。これをしない場合は、う
まくいかなくて古いカーネルから起動した後、もう一度カーネルを作る前に
vmlinuz.old を vmlinuz にコピーしておかないと、make install で元のカー
ネルを失ってしまいますからね。

どちらにしても、lilo と違って、仮にエントリを追加し忘れても、起動時に
その場で別のカーネルファイルを指定することができるので、とても便利です。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#!/bin/sh
#
# /sbin/installkernel
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1995 by Linus Torvalds
#
# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
#
# "make install" script for i386 architecture
#
# Arguments:
#   $1 - kernel version
#   $2 - kernel image file
#   $3 - kernel map file
#   $4 - default install path (blank if root directory)
#

if [ -f $4/vmlinuz ]; then
	echo "mv $4/vmlinuz $4/vmlinuz.old"
	mv $4/vmlinuz $4/vmlinuz.old
fi

if [ -f $4/System.map ]; then
	echo "mv $4/System.map $4/System.map.old"
	mv $4/System.map $4/System.map.old
fi

echo "cat $2 > $4/vmlinuz"
cat $2 > $4/vmlinuz
echo "cp $3 $4/System.map"
cp $3 $4/System.map

References
[plamo:16822] Re: SiS315 SiS900, hfujii
[plamo:16828] Re: SiS315 SiS900, Shigeo Sagai
[plamo:16831] Re: SiS900 &カーネルの再構築, hfujii

[検索ページ] [メール一覧]
Plamo ML 公開システム