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

[plamo:15480] INITRDでCD-ROMで起動する手法で行き詰まり?



はじめまして、Tokuda Yoshio です。
目下、Plamo3.0ベーター版で以下のシステムを構築中です。

/  INITRD(.gz) を /dev/ram0 でRAMディスクをルートに常駐
   bin,dev,etc,lib,usr,var,root,home は /mnt/cdrom 以下に移動し、絶対アド
レスのシンボリックリンクした initrd を作り直しました。
+-- /mnt/cdrom 下に /dev/hdc のATA-IDE CD-ROMをマウント
   dev,etc,usr,root,home は CD-ROMfsの/usr/local 以下に移動し、相対アド
レスのシンボリックリンクしたCD-Rに焼き込みます
    +--- /mnt/cdrom/usr/local 下に /dev/hda2 のATA-IDE固定ディスクをマウント
   dev,etc,usr,root,home は最終的に2段階のシンボリックリンクを経て、固定
ディスクに書き込みます。

ブート時は、/mnt/cdrom にマウントするCD-Rだけで立ち上げます。

vmlinuzは独自に作成しました。HDDをreiserにするか悩みましたが、ext3とし、
initrdはext2にしましたので、.configにはext3とext2とiso9660はカーネル組み込
み、他のNICなりfsなどは可能な限りモジュールです。
最終的にはブータブルcd-rを/ルートに昇格させ、起動時のRAMドライブは解放させメ
モリーを有効に利用させたいです。現段階では例えば「 etc 」などディレクトリー
をシンボリックリンクで飛ばしていますが、次のステップでは、書き換えられたり、
PC毎で異なるパラメーターのファイル単位でシンボリックリンクでHDDを参照させ、
あくまでも「 etc 」などのディレクトリーはブータブルCD-R内にあるまま利用する
予定です。つまり複数のPCを同じCD-Rでリブートし、異なるLinuxのファイルとユー
ザー情報だけがHDDにあることを目指しています。今のところSCSIは意識していませ
ん。まあ、バックアップ情報の正確な把握と人為的、お病気、ハードのトラブルから
護ることを目的にしています。(^^)

※ 雛形となる initrd を、どれにしようかと悩んでいます!(自分で一から作成す
るのがいいのでしょう)

で、CD-Rに焼き込む前の、もっと手前の段階で、かなりの時間、頭を痛めています。

1.GRUBに決めてvmlinuzとinitrd.gzを作り始めました。2枚のFDを作成しました。
http://www15.big.or.jp/~yamamori/sun/tech-linux-2/
 手掛かりのヒントは「Linux CD-ROM ゲームシステム」です。この通りの手順で
Plamo3.0を利用して新規インストールし調整中です。grubのFD内のmenu.lstは以下の
通り

---------- menu.lst の抜粋 ---------- start
title = boot 2.2.14 kernel with from this FD root=0x101 ro w/ PAUSE
kernel = (fd0)/vmlinuz root=0x101 rw
pause = change FD to rootdsk and push return
initrd = (fd0)/initrd.gz
---------- menu.lst の抜粋 ---------- end

---------- initrd内の /linuxrc ---------- start
#!/bin/sh
/cdmount /dev/hdc /mnt/cdrom iso9660 || \
/cdmount /dev/hdd /mnt/cdrom iso9660 || \
/cdmount /dev/hdb /mnt/cdrom iso9660 || \
(
    echo 'ERROR at mounting CD-ROM, invoke /bin/sh';\
    /bin/sh
)

/cdmount /dev/hda2 /mnt/cdrom/usr/local ext3 || \
(
    echo 'ERROR at mounting HDD, invoke /bin/sh';\
    /bin/sh
)

mount -t proc none /proc
echo 0x100 > /proc/sys/kernel/real-root-dev
umount /proc
---------- initrd内の /linuxrc ---------- end
で、FD2枚でのブートでは成功しましたが…
CD-RWに実験的に書き出すときに2枚のFDであることに悩みました。

# TZ=UTC mkisofs -R -J -o CD.iso -b images/FD1.img -x /proc /

を実行させる前にFD1枚目のmenu.lstを以下の様に書き換えて
---------- menu.lst の抜粋 ---------- start
title = boot 2.2.14 kernel with from this FD root=0x101 ro w/ PAUSE
kernel = (fd0)/vmlinuz root=0x101 rw
pause = change FD to rootdsk and push return
initrd = (hd0,1)/images/initrd.gz
---------- menu.lst の抜粋 ---------- end
とし、CD-RWに書き込んでみましたが、起動しません。

2. LILOにしようとし、HDDにLILOをインストールし
---------- hddの/etc/lilo.conf の抜粋 ---------- start
image = /vmlinuz
  root = /dev/hda2
  label = Linux
  read-only
image = /vmlinuz
  root = /dev/ram0
  label = junk2
  initrd = /images/initrd.gz
image = /vmlinuz
  root = 0x101
  label = junk3
  initrd = /images/initrd.gz
---------- hddの/etc/lilo.conf の抜粋 ---------- start
「Linux」では正常に起動します。ApacheSSL+PHP4+PostgreSQL7+iptablesなどなど元
気です。
ところで「 junk2 」だと正常にラムディスクにマウントされますが、linuxrcを実行
してくれません。実行権利はセットしてます。「 junk3 」だとマウント中にカーネ
ルパニックでマウントしません。grubで root=0x101 で可能なのに何故なのでしょう
? どうすれば、Linuxrcを起動できるでしょう? initrdはPlamo3.0のCDイメージ内
の/boot下のものを利用しています。soシェアードライブラリーでトラブってるので
しょうか?

3. こうなれば、何とか1枚のFDでPlamoのsetupインストールプロセスの無い/procだ
けを実現する軽いinitrdを探しましょうと、slackwareのresque.gzをダウンロードし
ループバックでマウントしようとしますが、ext3,ext2,minix,vfatでのマウントが出
来ません。何故でしょう?

4. どなたか、/procを制御し、/linuxrcを実行してくれるだけの超軽量の initrd の
提供場所を教えては頂けないでしょうか?

5. /etc/mtab の扱いのタイミングが解っていません。
 rc.Sでは起動時に削除されますね。「linux CD-ROM ゲームシステム」では、
/proc/mounts にリンクしないとまずいと書かれています。/procをマウントした直後
に、シンボリックリンクファイルの /etc/mtab を定義すれば良いのでしょうか? 遅
すぎますか?

6. /etc/fstab の扱いのタイミングと最適な定義が解っていません。
 今般は、initrdをルートにマウントした際、CD-R(実験中はCD-RW)をマウントした
直後の/etc/fstabはリードオンリー、で、直後にHDDをマウントし最終的にはrwの
/mnt/cdrom/usr/local/etc/fstab <-- /etc/fstab となります。どうやら、ラムディ
スクの/tmpあたりのrwな場所に、fstab と mtab を置くべきなのでしょう。fstabは
swapの/dev/hda1 と、ルートの/dev/ram0と、/procだけでいいのでしょうか。すると
roなCD-R内でいいのでしょうね。つまり/etc/mtabだけが連続したrwな場所、つまり
最初のルートとなる RAM-DISK 内にシンボリックリンクで向けておけばいいのでしょ
うか、サイズ0のファイルを /tmp/mtab として、initrd に定義?

-----

なんだか、家にも帰らないで、泊まり込んでの作業中に付き、取り止めの無いことで
質問しております。案外、簡単なミスなのだと思います。どなたかの貴重なインパク
トで「あー、なんだ!」(コツコツ←自分の頭を優しくタタク)とミスを見付けたいも
のです。いまだにgrubがいいか、liloにしようか悩んでいます。1枚のブータブルFD
に、mkisofs で限定されますので、initrd.gzの存在で1枚のFDに出来ませんので、
initrdをCD-Rに書き込み、それをgrubで読み込ませるかと思っております。grubは
iso9660fsを読んだのかなあ〜 HDDにinitrdを置いておきますか。vmlinuzをHDDに置
いたほうがメンテ上はメリットが高いかな。

他参照先
http://www.linux.or.jp/JF/JFdocs/ext-root-mini-HOWTO-3.html

******************************* Tokuda
******************************* Yoshio

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/


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