<< Back to man.lupaworld.com


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス
第 7 章 - Debian での Linux kernel


Debian には独自の kernel と関連モジュールの再構築方法があります。 Debian と kernel, 第 2.7 節 をご覧ください。


7.1 Kernel 再構築

最新の Linux kernel をコンパイルする場合、unstable から gccbinitulsmodutils をインストールして使用すると役に立つかもしれません。 公式の情報を得るには、/usr/share/doc/kernel-package/README.gz、特に最後尾を ご覧ください。

常に変更が発生しているので、kernel のコンパイルは最も称賛される開発者 でさえも混乱を招きかねない難しい事項です。

Manoj Srivastava の発言
--initrd は Debian のみ cramfs パッチを必要とする。
Herbert Xu の発言
間違っている。CRAMFS 以外のファイルシステムを使うならば /etc/mkinitrd/mkinitrd.conf に MKIMAGE を必ず設定する必要がある。

常に注意して Manoj と Kent による /usr/share/doc/kernel-package/README.gz に頼ってください。最新版の kernel をコンパイルしようとしている場合、 最新の unstable 版の kernel-package パッケージを 確実にインストールしてください。

1 台のマシンのためにしか kernel をコンパイルする必要がないなら、 initrd は必要ありません。kernel-image パッケージにより供給される kernel とほとんど同じにしたいため、私は initrd を用います。 もし initrd を使用するなら、initrd(8)mkinitrd.conf(5) をご覧ください。 また、http://bugs.debian.org/149236 もご覧ください。


7.1.1 Debian 標準の方法

kernel-package, gcc, binutils, そして modutils へのバグレポートに気を付けてください。 これらの最新版を使うことが必要です。

Debian system 上でソースから カスタム kernel をコンパイルするには、 特別な注意が必要です。複数の kernel-image を作成するには、 --append_to_version オプション付きで make-kpkg を用いてください。

     # apt-get install debhelper modutils kernel-package libncurses5-dev
     # apt-get install kernel-source-2.4.18   # 最新版を使用
     # apt-get install fakeroot
     # vi /etc/kernel-pkg.conf                # 名前と email アドレスを入力
     $ cd /usr/src                            # 構築ディレクトリ
     $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
     $ cd kernel-source-2.4.18            # これがあなたの kernel ソースの場合
     $ cp /boot/config-2.4.18-386 .config # 現在の config をデフォルトにする
     $ make menuconfig                    # 希望どおりカスタマイズする
     $ make-kpkg clean                    # 必ず実行 (man make-kpkg による)
     $ fakeroot make-kpkg --append_to_version -486 --initrd \
             --revision=rev.01 kernel_image \
             modules_image # pcmcia-cs などのためのモジュールイメージ
     $ cd ..
     # dpkg -i kernel-image*.deb pcmcia-cs*.deb # インストール

make dep を行います。initrd を使用しない場合は、--initrd を使わないでください。

pcmcia-cs からのモジュールを使う場合、又は pcmcia を使いたくない場合、 make menuconfig にて "General setup —>" -> "PCMCIA/CardBus support —>" を選び、 "< > PCMCIA/CardBus support" を設定(すなわちチェックボックスを外す) してください。

SMP の場合は、kernel-pkg.conf(5) に従い、 CONCURRENT_LEVEL を設定してください。


7.1.2 古典的な方法

オリジナルソースを以下から取得してください。

又は Debian での 同等の kernel source を用いて次の手順を実行してください。

     # cd /usr/src
     # tar xfvz linux-whatever.tar.gz
     # rm -rf linux
     # ln -s linux-whatever linux
     # tar xfvz pcmcia-cs-whatever.tar.gz
     # ln -s pcmcia-cs-whatever pcmcia
     # cd linux
     # make menuconfig
     ... 設定を行う
     # make dep
     # make bzImage
     ... lilo / grub の設定 ...
     ... /usr/src/linux/arch/i386/boot/bzImage を boot に移動...
     ... /sbin/lilo 又は grub のための好みの方法を実行
     # make modules; make modules_install
     # cd ../pcmcia
     # make config
     # make all
     # make install
     ... 必要なモジュール名を /etc/modules に追加
     # shutdown -r now
     ... 新しい kernel を boot

7.1.3 Kernel ヘッダ

ほとんどの "normal" なプログラムには kernel ヘッダは必要なく、実際直接 使用した場合動かなくなるかもしれません。その代わり、glibc を構築するのに使った ヘッダに対してコンパイルすべきです。それらは Debian システムの /usr/include/linux/usr/include/asm にあるバージョンのものです。

それゆえ、いくつかの古びたドキュメントが推奨しているように /usr/include/linux および /usr/include/asm から /usr/src/linux にあるディレクトリに symlink を張らないでください。

カーネル特有のアプリケーションプログラムに特定の kernel ヘッダが 必要 ならば、include path が dir-of-particular-kernel-headers/include/linuxdir-of-particular-kernel-headers/include/asm を 指すように makefile を変更してください。


7.2 モジュール化された 2.4 kernel

kernel-image-2.4.NN により供給されている 新しい Debian 2.4 kernel は非常にモジュール化されています。 意図したとおりに kernel が動くように必要なモジュールが有効になっているかを 確認する必要があります。

次の章で応急手段として /etc/modules の多くの例を挙げていますが、 モジュール関連のこれらの問題を修正するための正しい方法は、現在の kernel で得られる充分な alias が存在するので、/etc/modutils/ にある デバイスへの alias を設定することだと聞いています。いくつかのモジュールは discover などのハードウェア自動検知プログラムにより 自動で有効化されるかもしれません。X 用のハードウェア検出, 第 9.4.2 節 もご覧ください。

正確な情報は モジュールを扱うための特別な準備, 第 2.7.5 節 や Linux source にある Documentation/*.txt をご覧ください。


7.2.1 PCMCIA

PCMCIA を動かすには、/etc/modules に次に示す内容を含める必要 があるかもしれません。

     # ISA PnP ドライバ
     isa-pnp
     # 新しい低レベル PCMCIA ドライバ
     # yenta_socket # 私の場合、必要ないようです

残りは PCMCIA スクリプト (pcmcia-cs パッケージのもの)、 depmodkmod がやってくれます。 私のノート PC は古い ISA-PCMCIA なので、isa-pnp が必要と 考えています。最近の CardBus/PCMCIA を使ったノート PC にはこれは 必要ないかもしれません。

genius Miquel van Smoorenburg miquels@cistron.nl の発言を 次に示します。

"ノート PC から cardmgr などの pcmcia 関連全体を単に削除して、 cardbus をサポートした 2.4 kernel をインストールしました。 そして woody から新しい hotplug パッケージを インストールしました。

32-bit カードしか持っていない限り、pcmcia パッケージは必要ありません。 Linux 2.4 は組込みの PC カードサービスを持っています。そして標準の tulip ドライバは dlink カードでもうまく動きます。

—Mike."

Linux PCMCIA HOWTOネットワーク設定と PCMCIA, 第 10.10.5 節 をご覧ください。


7.2.2 SCSI

[NOT TESTED] SCSI を動かすには /etc/modules に次の内容を 追加する必要があります。

     # SCSI コアドライバ
     scsi_mod
     # SCSI 汎用ドライバ
     generic driver
     sg
     # SCSI disk
     sd_mod
     # 他に必要なハードウェアモジュール全て
     ...

上記モジュールのうちいくつかは depmod が対処してくれるかも しれません。


7.2.3 Network 機能

特別なネットワーク機能のためには、次に示す内容を /etc/modules に追加する必要があります。

     # net/ipv-4
     ip_gre
     ipip
     
     # net/ipv-4/netfilter
     # iptable (in order)
     ip_tables
     ip_conntrack
     ip_conntrack_ftp
     iptable_nat
     iptable_filter
     iptable_mangle
     #
     ip_nat_ftp
     ip_queue
     #
     ipt_LOG
     ipt_MARK
     ipt_MASQUERADE
     ipt_MIRROR
     ipt_REDIRECT
     ipt_REJECT
     ipt_TCPMSS
     ipt_TOS
     ipt_limit
     ipt_mac
     ipt_mark
     ipt_multiport
     ipt_owner
     ipt_state
     ipt_tcpmss
     ipt_tos
     ipt_unclean
     #
     #ipchains
     #ipfwadm

これらの記述は最適化されていません。上記モジュールのいくつかは、 depmod が対処してくれるかもしれません。


7.2.4 EXT3 filesystem ( > 2.4.17)

EXT3 FS によりジャーナリングファイルシステムを有効化するには、Debian の プリコンパイルされた kernel-image ( > 2.4.17) パッケージを用いると、 次の手順が発生します。

     # cd /etc; mv fstab fstab.old
     # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab
     # vi /etc/fstab
     ... root filesystem type を "ext3,ext2" の代わりに "auto" に設定
     # cd /etc/mkinitrd
     # echo jbd >>modules
     # echo ext3 >>modules
     # echo ext2 >>modules
     # cd /
     # apt-get update; apt-get install kernel-image-2.4.17-686-smp
     ... 最新の kernel をインストールし boot の設定を行う (ここでは lilo を用いる)
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... 全ての EXT2 FS を EXT3 に変換するため
     # shutdown -r now

ついに EXT3 ジャーナルが有効化されました。 fstab の "type" エントリに ext3,ext2 を用いると 非 root パーティションに対して kernel が EXT3 をサポートしていない場合、 EXT2 に safe fallback するのを保証してくれます。

以前 2.4 kernel をインストールしており、再インストールしたくない場合、 上記の手順を apt-get まで行い、そして次の手順を行ってください。

     # mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp
     # lilo
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... 全 EXT2 FS を EXT3 に変換するため
     # shutdown -r now

EXT3 ジャーナルが有効化されました。

mkinitrd を起動した時に /etc/mkinitrd/modules が設定されていなく、ブート時にモジュールを追加したいなら、initrd プロンプトで RETURN を押せば shell を実行できます。

     # insmod jbd
     # insmod ext3 # modprobe ext3 の実行には注意が必要
     # insmod ext2
     # ^
     ...ブートを継続

システムブートスクリーン (dmesg) において、 "cramfs: wrong magic" が表示されるかもしれませんが、これは害がないことが わかっています。本件は Sarge において 2002 年 10 月に解決しています。 詳細は http://bugs.debian.org/135537EXT3 File System mini-HOWTO 並びに /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz" をご覧ください。

EXT3 を有効にして深刻な kernel lockup を経験したという報告が 数例有りますが、私は問題ありません (2.4.17 kernel を使用)


7.2.5 2.4 における Realtek RTL-8139 のサポート

なんらかの理由で、現在 RTL-8139 モジュールは rtl8139 ではなく、8139too と呼ばれます。2.2 kernel から 2.4 kernel に更新する場合、 /etc/modules を編集してこの変更を反映してください。


7.2.6 パラレルポートのサポート

kernel-image-2.4.* では、パラレルポートのサポートは モジュールとして供給されています。次の手順で有効化できます。

     # modprobe lp
     # echo lp >> /etc/modules

Linux source の Documentation/parport.txt をご覧ください。


7.3 proc filesystem により Linux kernel をチューニングする

Linux kernel の挙動は proc ファイルシステムを用いるとオンザフライで変更できます。

/proc ファイルシステムを通して kernel パラメータを変更すること に関する基本的な情報は Linux source の Documentation/sysctl/* をご覧ください。

/etc/init.d/networkingいくつかのウェブサイトにアクセスした時の奇妙な挙動, 第 3.7.5 節 には kernel パラメータの操作方法の例がいくつかあります。

通常 /etc/rcS.d/S30procps.sh から起動される /etc/init.d/procps.sh を用いた /proc ファイルシステムを通じたブート時の kernel 設定手順については See sysctl.conf(5) をご覧ください。


7.3.1 Too many open files

Linux kernel が "Too many open files" とエラーを出力することがあります。 これは file-max の標準値が小さい (8096) ためです。 この問題を解決するには、root で次のコマンドを実行してください。

     # echo "65536"  > /proc/sys/fs/file-max  # 2.2 と 2.4 kernel の両方で有効
     # echo "131072" > /proc/sys/fs/inode-max # 2.2 kernel のみ

変更をずっと有効にしたい場合は、/etc/sysctl.conf に次の行を追加してください。

     file-max=65536   # 2.2 と 2.4 kernel の両方で有効
     inode-max=131072 # 2.2 kernel のみ

7.3.2 Disk flush 間隔

proc ファイルシステムを通じて disk flush 間隔を変更できます。 次のコマンドにより、間隔をデフォルトの 5 秒 から 1 秒 に変更されます。

     # echo "40 0 0 0 100 30000 60 0 0"  > /proc/sys/vm/bdflush

本変更はファイル I/O 性能にほんの少し悪影響を与えるかもしれません。しかし、 本変更により、デフォルトの 5 秒より短い最後の 1 秒の間を除き、ファイル内容を 安全に保たれます。


7.3.3 鈍くて古い少メモリ容量マシン

古い少メモリ容量マシンの場合、proc ファイルシステムを通じて メモリの over-commit を有効にするとまだ役に立つかもしれません。

     # echo 1 > /proc/sys/vm/overcommit_memory

7.4 2.6 カーネルと udev

udev は /dev/ のダイナミックな置き換えです。 デバイス名は非常に短い物にもできます。 2.4 カーネルで使われた devfs は今や過去の物となりました。

udev パッケージを kernel-image-2.6.NN で提供される新たな Debian 2.6 カーネルとともにインストールすると、 本機能が実現します。


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス

CVS, 2005年 4月 3日 月曜日 22時59分00秒 UTC時間

Osamu Aoki (青木 修) osamu@debian.org
翻訳: 角田 慎一 tsuno@ngy.1st.ne.jp
著者, 第 A.1 節