▼インストール-基本システム -

基本システムまで

  1. kernel 2.4.18-bf2.4のresucue disk から起動
  2. kernel 2.4.18-bf2.4のboot disk をいれる
  3. 言語選択(日本語)
  4. キーボード選択(US)
  5. 「フロッピーから重要なモジュールをプリロード」を選択
  6. "MOMO_MODULES"を挿入。"dpt_i2o"・"e1000"を選択。ロード。
  7. 「ハードディスクのパーティションを切る」を選択
     
    Name	Flags	Part Type 	Fs Type		[Label]		Size(MB)
    ------------------------------------------------------------------------
    sda1	Boot	 Primary	Linux				25202.26
    sda2		 Primary	Linux				10001.95
    sda3		 Primary	Linux				  500.97
    sda4		 Primary	Linux swap			 1028.16
    
    [Quit]でcfdiskを抜けた後、
    
    
  8. 「Linux パーティションの初期化」を選択。Ext3を選択。
  9. "/dev/sda1"を選択。初期化。
  10. 「他のファイルシステムマウントの前に"/"でマウントしなければ、 とくるので、いわれた通り("/")をルートファイルシステムとしてマウント。
  11. 「Linuxパーティションの初期化」を選択。Ext3を選択。
  12. "/dev/sda2"を選択。初期化
  13. "/var"をマウントポイントに選択。
  14. 「Linuxパーティションの初期化」を選択。Ext2を選択。
  15. "/dev/sda3"を選択。初期化
  16. "/boot"をマウントポイントに選択。
  17. "/boot"でマウント
  18. 「スワップパーティションの初期化と有効化」を選択。
  19. カーネルとドライバモジュールのインストールを選択。
  20. networkを選択。設定。DHCPではなくIP指定。
    
    備忘
    IP:133, gefault gateway:01, DNS:130
    
    
  21. カーネルとドライバモジュールのインストール recue.bin drivers.tgz
  22. デバイスモジュールの設定を選択。すぐ Exit
  23. 基本システムのインストールを選択(network経由)

chroot /target上での話 (kernel のイメージ変更)

  1. # ALT+F2
  2. # Enter
  3. # mount -t proc proc /target/proc
  4. # chroot /target
  5. sh-20.5a# vi /etc/apt/sources.list
    
    deb http://ftp.jp.debian.org/debian/ stable main contrib non-free
    deb-src http://ftp.jp.debian.org/debian/ stable main contrib non-free
    deb http://ftp.jp.debian.org/debian-non-US/ stable/non-US main contrib non-free
    deb-src http://ftp.jp.debian.org/debian-non-US/ stable/non-US main contrib non-free
    
    deb http://security.debian.org/ stable/updates main contrib non-free
    
    
  6. sh-20.5a# apt-get update
  7. sh-20.5a# apt-get upgrade
  8. sh-20.5a# apt-get install less
  9. sh-20.5a# apt-get install lynx
  10. sh-20.5a# apt-get install initrd-tools
  11. lynx http://packages.debian.org/stable/devel/
    
    ここから後で組み込む ethnet(e1000) のため
    http://packages.debian.org/stable/devel/ から
    
    • kernel-headers-2.4-18-1-686-smp
      (kernel-headers-2.4-18-1-686-smp_2.4.18-13.1_i386.deb)
    /usr/src/ に落しておく
  12. sh-20.5a# apt-cache search kernel-image | less
  13. sh-20.5a# apt-get install kernel-image-2.4.18-1-686-smp
    
    The following extra packages will be installed:
    	ash cramfsprogs initrd-tools
    The following NEW packages will be installed:
    	ash cramfsprogs initrd-tools kernel-image-2.4.18-1-686-smp
    0 packages upgrade, 4 newly installed, 0 to remove and 0 not upgradeed
    Need to get 9066kB of archives. After unpacking 25.0MB will be used.
    Do you want to continue? [Y/n] => ENTER
    
    
    
    You attempting to install an initrd kernel image (version 2.4.18-1-686)
    This will not work unless you have configured your boot loader to use
    initrd.(An initrd image is a kernel image that expects to use an INITial
    Ram Disk to mount a minimal root file system into RAM and use that for
    booting).
    As a reminder, in order to configure lilo, you need to
    add an 'initrd=/initrd.img' to the image=/vmlinuz
    stanza of your /etc/lilo.conf
    I repeat, You need to configure your boot loader. If you have already done
    so, and you wish to get rid of this message, please put
    	'do_initrd = Yes'
    in /etc/kernel-img.conf. Note that this is optinal, but if you do not,
    you'll contitune to see this message whenever you install kernel
    image usign initrd.
    Do you want to stop now? [Y/n} => n
    
    
    
    Setting up kernel-image-2.4.18-1-686 (2.4.18-13-1)...
    /boot/initrd.img does not exit. Installing from scratch, eh?
    Or maybe you don't want a symbolic link here. Hmm? Lets See.
    I notice that you do not have initrd.img symbolic
    link. I can create one for you, and it shall be
    updated by newer kernel image packages. This is
    useful if you use a boot loader like lilo.
    Do you want me to create a link from 
    /boot/initrd.img-2.4.18-686 to initrd.img?  [Yn] => n
    
    
    
    Do you wish to set up Linux to boot from the hard disk? [Yes]
    => Enter
    
    
    
    Hmm... I can't determine which partition to put the
    partition boot record on. I'm defaulting to the /dev/sda1
    which is where th root file system lives.
    Install a partition boot block on partition /dev/sda1? [Yes]
    => Enter
    
    
    
    Testing lilo.conf...
    An error occurred while running lilo in test mode, a log is 
    available in /var/log/lilo_log.6453. Please edit /etc/lilo.conf
    manually and re-run lilo, or make other arrangemnets ot boot
    your machine.
    	please hit return to continue
    
    

chroot /target上での話 (module の設定)

  1. sh-20.5a# vi /etc/modutiles/aliases
    
    # Alias to tell insmod/modprobe which modules to use
    alias scsi_hostadapter dpt_i2o
    alias eth0 e1000
    options e1000 Speed = 0 Duplex = 0
    	
  2. sh-20.5a# depmod -a -C /etc/modules.conf
  3. sh-20.5a# update-modules
  4. 確認する(駄目ならもう一度 update-modules)
    sh-20.5a# cat /etc/modules.conf
    
    ### update-modules: start procesing /etc/modutils/aliases
    # Aliases to tell insmod/modprobe which modules to use(直下に)
    alias scsi_hostadapter dpt_i2o
    alias eth0 e1000
    options e1000 Speed = 0 Depulex = 0
    
    
  5. sh-20.5a# vi /etc/modules
    
    dpt_i20
    e1000
    
    
  6. sh-20.5a# update-modules

chroot /target上での話 (initrd の設定)

  1. sh-20.5a# vi /etc/mkinitrd/mkinitrd.conf
    
    MODULES=most
    #DELAY=0
    DELAY=5
    #ROOT=probe
    ROOT=/dev/sda1
    UMASK=022
    MKIMAGE='mkcramfs %s %s > /dev/null'
    
    
  2. sh-20.5a# vi /etc/mkinitrd/modules
    
    dpt_i2o
    e1000
    
    
  3. sh-20.5a# cd /boot
  4. sh-20.5a# mkinitrd -o initrd.img-2.4.18-1-686-smp -d /etc/mkinitrd/ /lib/modules/2.4.18-1-686-smp/

chroot /target上での話 (lilo の設定)

  1. sh-20.5a# vi /etc/lilo.conf
    
    lba32
    boot=/dev/sda
    root=/dev/sda1
    install=/boot/boot-menu.b
    map=/boot/map
    vga=normal
    delay=20
    default=Linux
    image=/boot/vmlinuz-2.4.18-1-686-smp
    label=Linux
    initrd=/boot/initrd.img-2.4.18-1-686-smp
    read-only	
    
    
  2. sh-20.5a# /sbin/lilo
    
    Added Linux *
    
    
  3. ALT+F1

完成

  1. ブートフロッピーの作成
  2. システムのリブート

LANカードを認識させる

SCSI RAIDカード(dpt_i2o)は認識されるが、Ethernetカード(e1000)は認識されない。 別途のDebian kernel-source 2.4.18-686-1-smpに対応した e1000.debと kernel-headersを取って来て再度組み込む。
  1. (floppy に momo e1000 2.4.18-1-686-smp を入れる)
  2. # mount /floppy/
  3. # cp /floppy/e1000-module-2.4.18-1.-686-smp_5.2.39-1_i386.deb /usr/src/
  4. # umount /floppy/
  5. # cd /usr/src
  6. # dpkg -i kernel-headers-2.4.18-1-686-smp_2.4.18-13.1_i386.deb
  7. # dpkg -i e1000-module-2.4.18-1.-686-smp_5.2.39-1_i386.deb
  8. # modconf
    
    (で、kernel/drivers/net に e1000 が追加されているはず。これを組み込む)
    Installing module e1000. 
    If the device isnt's there, or isn't configuredcorrectly, 
    this could your system to pause for up to a minute.
    
    Intel (R) PRO/1000 Network Driver - version 5.2.39
    Copyright (c) 1999-2004 Intel Corporation.
    eth0: Interl(R) PRO/1000 Network Connection
    Speed and duplex autonegotiation enabled
    eth1: Intel(R) PRO/1000 Network Connection
    
    Installation succeeded.
    
    Please press ENTER when you are ready to continue.
    
    
  9. # reboot (次はモジュールを実際に起動時に読み込ませる)
  10. # cp /etc/modules.conf /home/hogehoge/ <=modules.confのバックアップ
  11. # vi /etc/modules.conf
    
    (下記を追加)
    alias eth0 e1000
    options e1000 Speed=0 Duplex=0 <=スピードは10/100/1000で自動調整
    
    
  12. # reboot

ファイバーチェンネルのカード(qla2300)を認識させる

カーネルを最新版にすることで対処。
その際、Debianプロジェクトからaptでとってくる のではなく、kernel.orgからオリジナルソースをコンパイルしてインストールする。

下準備

  1. vi /etc/apt/sources.list
    
    (一時的にapt sources.listをtestingにあげる)
    deb http://ftp.jp.debian.org/debian/ testing main contrib non-free
    deb-src http://ftp.jp.debian.org/debian/ testing main contrib non-free
    deb http://ftp.jp.debian.org/debian-non-US/ testing/non-US main contrib non-free
    deb-src http://ftp.jp.debian.org/debian-non-US/ testing/non-US main contrib non-free
    
    deb http://security.debian.org/ testing/updates main contrib non-free
    
    
  2. # apt-get install autoconf automake binutils gcc gettext kernel-package libncurses5-dev libtool linux-kernel-headers make module-init-tools procps e2fsprogs util-linux bzip2
  3. kernel.orgで、モジュール qla2300.oが組み込まれたパッチを探し、カーネル本体と パッチを落す
    1. カーネルソース本体を落す カーネルソース本体を落す

    2. パッチ最新版の本体と説明がある パッチ最新版の本体と説明がある

    3. 問題のモジュールを探す 問題のモジュールを探す

    4. 問題のモジュールを探す 問題のモジュールを探す

    5. パッチを落す パッチを落す

カーネルのアップグレード

  1. # LANG=c
  2. # cd /usr/src
  3. # tar jxvf /home/hujioka(kernel本体ある場所)/linux-2.6.7.tar.bz2
  4. # cd linux-2.6.7
  5. # cp /home/hujioka(patchのある場所)/patch-2.6.8.1.bz2 .
  6. # bzip2 -d patch-2.6.8.1.bz2
  7. # patch -p1 < patch-2.6.8.1
  8. # cp /home/hujioka/config-2.6.8.1-picure .config
    
    通常であれば、
    cp /boot/config-2.4.18-1-686-smp .config
    
    既に出来ているものがあったので、scpで/home/hujiokaに移動しておいた
    
    
  9. # make oldconfig
    
    かなりの項目になるが、基本的にはCPU等基本情報以外はデフォルトで
    (気になるようなら"?"でチェックしながら)。
    当該で問題になっているモジュールは  ないし  で対応。
    今回の場合はqla2300(scsi), e1000(net)に。
    	
  10. # make menuconfig
    
    再度、"make oldconfig"での決定が反映されているかをチェック
    	
  11. # rm -f /usr/src/linux (過去にカーネルのアップグレードした場合)
  12. # ln -s /usr/src/linux-2.6.8.1 /usr/src/linux
  13. # cd /usr/src/linux
  14. # make-kpkg --revision=20040910 kernel-image
  15. # cd /usr/src
  16. # dpkg -i kernel-image-2.6.8.1_20040910.deb
  17. # cd /boot/
  18. # mkinitrd -o initrd.img-2.6.8 /lib/modules/2.6.8/
    
    cpio: /etc/modprobe.conf : No such file or directory
    cpio: /lib/modules/modprobe.conf : No such file or directory
    …といって叱られたので
    
    
  19. # touch /etc/modprobe.conf
  20. # touch /lib/modules/modprobe.conf
  21. # mkinitrd -o initrd.img-2.6.8 /lib/modules/2.6.8/
  22. # vi /etc/lilo.conf
    
    lba32
    boot=/dev/sda
    root=/dev/sda1
    instll=/boot/boot-menu.b
    map=/boot/map
    vga=normal
    delay=20
    default=picure
    image=/boot/vmlinuz-2.6.8
    label=picure
    initrd=/boot/initrd-2.6.8
    read-only
    
    
  23. # lilo -t
    
    …なんか叱られたけど…
    
    
  24. # lilo -v
    
    …なんか叱られたけど… Add Linux*	
    
    
  25. # /sbin/lilo
    
    …念のため
    
    
  26. # reboot

カーネルの再構築上の注意

その後、ファイバチャンネル越しのストレージシステムが何故か1.3TBしか 認識しなかったため、カーネルを組み直さなければならなくなった。 (具体的には "Device Drivers => Block devices => Support for Large Block Devices"にチェックが入っていないためだと思われる)

しかし、カーネルソースを最新(08/27現在:2.6.8.1)にしようとすると LILOは読みにいくが原因不明のエラーで止まる、という事態に陥る。

この問題は、カーネルのバージョンを一度下げた状態 (今回の場合、kernel 2.6.8.rc4 から kernel 2.4.18-1-686-smp におとして) で起動させ、そのバージョン上でカーネルのアップグレード(前章の最初から) を行うことで回避できた。

[作業後記]

率直なところ(お世話になったところも絡めて)

奇特な(尖った)マザーボードに今回、3つの奇特な(尖った、最新の)カードが 刺さっていた(一つはオンボード)わけだが、こいつを一つ一つ潰していった。
できれば一つの方針でクリアしたかったんだが、気づけば、3種3様のやり方で クリアしていったことになる…んだなぁ。

  1. モジュールをプレリロードしてインストールする方法
    これにはminus-9さん の手法が大変参考になった。
    肝は二つある。
    一つは "/boot"というディレクトリを作って、モジュール"hoge.o"を ブチ込んで.imgをwindowsのCDライティングソフトかなんかで作るという手法。 注意点としては、そこにブチ込むモジュールがきちんとこれから入れようとしている カーネルのバージョンと整合性を保っていること。そうしないとせっかく作っても 読んでくれない。
    ここのモジュールは救いの神だったね ( (ここ。そのままダウソ)
    ここの"ALL 2.4.18-bf2.4 modules"とかいうところにいたってはあらゆるモジュールを置いてくれていて 涙でそうになったよな…
    もう一つの肝は RedHat の mkinitrd というツール。Debian にもある。 initrd-toolsというツールだ。
    これによってブート時に読み込まれる"/boot/initrd.img-xx.yy.zz"が作られる。
    こいつの本体は"/lib/modules/xx.yy.zz/kernel/drivers/"以下にある (場合によっては同じ場所にある"/boot/vmlinuz-xx.yy.zz"に書かれてる場合も(?) ある。

  2. Debianノーマルな.debとdpkg -iを用いてインストールする方法
    これは今更説明する余地無し。
    ただ、これもDebianのバージョンに整合性を保ったモジュール.debを探すことが大切。
    探すのが面倒だが、見付けちまえば、Debianが勝手にきれーに入れてくれる。
    ここのこの.debを使わせてもらったなぁ。
    この場合、カーネルのバージョンが違う(そもそも使ったフロッピは 2.4.18-bf2.4 というDebianバージョンだったけど、これは 2.4.18-1-686-smp というバージョン。 だからカーネルも kernel-image-2.4.18-1-686-smp に入換えてやった。 この場合、そのkernel-headersが必要だというのも知ったな。

  3. カーネルからめて総入換えする方法
    これが最強なのは知ってるけど、あのコンパイル時間の長さには参る。まじで。
    だが、どうやっても最後のカード (ファイバチャンネルのモジュール・qla2300というやつ)を 認識させるのは上の二つのやり方がまったく通用しなかったので仕方ない。
    RedHatでは、少なくとも7.2から組み込まれているのに、Debianでは2.6系のdebでも まだ対応していなかったんよ。
    結局ここまでたどり着くのにとても時間がかかってしまった。
    最後の一撃が オリジナルのカーネルソースに頼ることだった。
    ここでは こことかにはお世話になったけど、なんといっても『日経リナックス2004/03号』 にのっかっらせてもらった。ベタベタやね、わし。
    でも、ま、そのままではうまくいかなかったから、やはり最後の方は Debian's way だったんだけどね(make-kpkg,dpkg -i,mkinitrd -o,lilo.conf)。

[備忘録]