Puppy-4.2でSCSIモジュール入りのカーネルを作る

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
mika-j
記事: 38
登録日時: 08/05/23(金) 22:20
連絡する:

Puppy-4.2でSCSIモジュール入りのカーネルを作る

投稿記事 by mika-j »

こんにちは。
mika-jです。

viewtopic.php?f=12&t=1258#p7847

ここで、SCSIモジュールを4.1.2からコピーする方法を書きましたが、
参考にカーネルを作り直す方法もここに書いておきます。

やり方はただ、カーネルコンフィグ時にSCSIモジュールを組み込むようにして、
カーネルを作り直すだけです。

カーネルの再構築方法はPuppy日本語wikiも出ているので、参考にしてみてください。

http://puppylinux.jp/w/index.php?Puppy% ... B%E7%AF%89

●1.準備

まずは、コンパイルするので、開発環境を用意してください。

次にカーネルソースを取得します。
カーネルソースは割と色んなところにあるのですが、
以下をローカルディスクに保存します。保存する場所はpup_save.2fsの中よりも
ハードディスクのパーティションとかの方がいいでしょう。

サイト:
http://puppylinux.com/sources/kernel-2.6.25.16/
ファイル:
linux-2.6.25.16-src-patched_squashfs_unionfs_aufs_lzma_mt.tar.gz
linux-2.6.25.16-src-patched_squashfs_unionfs_aufs_lzma_mt.tar.gz.md5.txt
DOTconfig-K2.6.25.16-26AUG08-STANDARD

カーネルのバージョンはかならず、作りたいPuppyバージョンと
合うようにしてください。

ダウンロードしたら展開し、/usr/src/linuxにシンボリックリンクします。
多分、シンボリックリンクは要らない気がしていますが、
用心のため、やっておきます。

/mnt/sdd3/test/scsi_kern/pup420/linux-2.6.25.16/
に展開したなら、以下の様にします。

コード: 全て選択

# cd /usr
# make src
# cd src
# ln -s /mnt/sdd3/test/scsi_kern/pup420/linux-2.6.25.16 linux
あと、最後にもう一つ。wikiに書いてあるのですが、LZMAという圧縮ツールを
インストールしておかないと、作ったカーネルでブート出来ませんでしたので
これを入れておきます。パッケージマネージャにあるそうなので、
簡単にインストール出来ます。

ただ、私の場合はなぜだか、パッケージマネージャに表示されなかったので、
ftp://ibiblio.org/pub/linux/distributio ... packages-4
に行って、lzma-458.petをクリックしてインストールしました。

●2.コンパイル

以上で準備が整ったので、カーネルをコンパイルします。

コード: 全て選択

# cd /usr/src/linux
# make mrproper
これを実行すると、.configがクリアされてしまうので、注意。

次に、カーネルコンフィグファイルを置きます。
ダウンロードしたDOTconfig-K2.6.25.16-26AUG08-STANDARDがPuppyの
元となるカーネルコンフィグファイルなので、これを.configとして/usr/src/linuxに
置きます。

コード: 全て選択

# cp /mnt/sdd3/test/scsi_kern/pup420/DOTconfig-K2.6.25.16-26AUG08-STANDARD .config

コード: 全て選択

# make oldconfig
# make menuconfig
make menuconfigでテキストメニューが表示されるので、必要なSCSIドライバを
組み込みにします。

私の場合は、aic7xxxがあれば幸せになれるので、

コード: 全て選択

Device Drivers  --->
SCSI device support  --->
SCSI low-level drivers  --->                                 
  Adaptec AIC7xxx Fast -> U160 support (New Driver)
  Adaptec AIC7xxx support (old driver)                       
の二つを組み込みにしました。
ちなみに組み込みにするのには、モジュールを選択して
スペースキーでかっこの中を`<*>`アスターにすれば良いのです。

腕に自信のある方は、menuなんか使わないで、.configを直接いじっちゃっても
いいかもしれないです。

自分がどのドライバを組み込みにすればよいか分からない場合は、
バリーさんの開発者ブログの記事を参考にして、いくつかまとめて
組み込みにして試してみてください。

http://www.puppylinux.com/blog/?viewDetailed=00230

一般的にはSCSI1の設定でうまくいくんじゃないでしょうか?


ここまで出来たら、コンパイルします。

コード: 全て選択

# make bzImage
サボって、bzImageターゲットを指定しないとカーネル本体以外に、
カーネルモジュールもコンパイルしてしまうので、すごい時間がかかってしまいます。
できれば、bzImageを指定する方が良いでしょう。

コンパイル時間はPentium4 2.53GHz/メモリ1Gで15分〜20分程度です。
頑張って待ちましょう。

カーネルが完成するとmakeが作ったカーネルの在り処を教えてくれますが、
自分の場合を一応書いておくと、

/usr/src/linux/arch/x86/boot/bzImage

に出来ました。これをvmlinuzとリネームして、bootディレクトリにコピーすれば
めでたくSCSIブートが出来るようになります。もちろん、extlinuxやらgrubの設定は
新しいカーネルに向けてください。

これは、完全に好みの話ですが、自分の場合は、完全に差し替えないで、
vmlinuz-scsiとして、vmlinuzの横に置いてあります。

最後に参考として、私が使っているextlinux.confのサンプル。

コード: 全て選択

default pup420
display boot.msg
prompt 1
label pup420
kernel /pup420/vmlinuz.scsi
append initrd=/pup420/initrd.gz pmedia=scsihd psubdir=pup420
timeout 50
pmediaは嘘っこでidehdとしても4.20は動きます。
(IDEドライバがSCSIエミュレートになったため?)
最近のinitrdはよく把握していませんが、pmedia=scsihdは
デフォルトルートに落ちるだけ(指定しないのと同じ)だった気がするので、
場合によっては、idehdを指定した方がよい場合があるかもしれません。

以上ですが、参考になれば、幸いです。
最後までお読みくださり有難う。
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: Puppy-4.2でSCSIモジュール入りのカーネルを作る

投稿記事 by みのむし »

>kernel /pup420/vmlinuz.scsi

前の記述に合わせるなら

kernel /pup420/vmlinuz-scsi
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
でこぱっち
記事: 10
登録日時: 15/05/10(日) 09:24

Re: Puppy-4.2でSCSIモジュール入りのカーネルを作る

投稿記事 by でこぱっち »

こんにちは。有用な情報ありがとうございます。
当方、puppy4.3.1でカーネル再構築やってみましたが、あまりのお粗末に
あきれました。
まず、make mrproperでエラーが出て止まります。
ディレクトリ名の下に、同名のディレクトリが入れ子になっていて、エラー吐いて
いたようでしたので、rm -rfで消してなんとかmake bzImageへ。
と思ったら今度もまたエラー。vmlinux.bin.lzmaがない、とのこと。きちんと
LZMAはインストールずみで、手作業で、lzma e vmlinux.bin vmlinux.bin.lzmaとやったら
圧縮ファイルができています。これもどうやら同名ディレクトリが入れ子になっている
のが原因のような気がします。

plamoの時代からカーネル再構築何度かやっていますが、エラーで止まったという記憶は
ありません。よくこんなソース出せるな、というのが感想です。

それとも私の勘違いなのでしょうか?
返信する