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

[gentoojp-users 1014] Re: 補: 改: live.gcloopの 作成法



 新年あけましておめでとうございます。MLにはほんとうにお世話になって
おります。感謝の申しようもありません。

>よく分かりませんが十分新しい baselayout (たとえば 1.8.6.12-r3)であれば
>${CDBOOT} という変数を見るようになっており、LiveCD などのように CD か
>ら起動する場合はこれを設定しておけば fsck でエラーは出ないんじゃないで
>しょうか。(これが含まれる baselayout 使わないとだめですが)
>
(中略)

>> /etc/init.d/checkrootを入れ替えたところ、起動中にエラーメッセージが
>>出ることはなくなりましたが、相変わらず
>>...
>>* Activating (possible) swap...
>>* Setting hostname to my_LiveCD.GentooPPC
>>* Calculating module dependencies...
>>
>>とまで画面にメッセージが表示され、そこからはいくら待っても先へと
>>進まない状況に変わりがありません。
>>    
>>
>
>一応それは /etc/init.d/boot/modules が出しているメッセージなので、そこ
>までは進んでいると考えて差し支えありませんが、どこで止まっているのかは
>分かりませんが、/etc/init.d/modules が出すであろうメッセージが出ていな
>いので、たぶんこの中のどこかで止まっているのではないかと思います。
>
 いくつか試してみましたがなかなかエラーメッセージを表示させるところ
まで行かず、小町様に指摘していただいた「十分新しい baselayout」という
点に注目して、新しいliveCDのイメージをダウンロードし、そこにある
/etc/init.d,
/sbin以下のファイルで自分のルートファイルシステムのものを上書きして
みました。問題を理解したことにはなっていませんからほめられたことではない
でしょうけれど、とりあえずこれで対処しておこうと思います。ことが一段落
したらまたいろいろと報告させていただきます。

 おかげさまでどうやらシステムが起動してログインプロンプトが現れる段階に
こぎ着けることができました。いただいたアドバイスの数々に心底感謝して
おります。

 ただ、どうしても理解できず、また突き止める手だてを思いつけないでいる
ことが2点ありまして、それらを質問させてください。
 ひとつには、作成したliveCDからマシンを立ち上げますと、起動時に
Error: runlevel sysinit does not exist: exitting...
というエラーが現れることです。しかし他のルートファイルシステムを調べても
/etc/runlevelsにはboot, default, nonenetworkの三つはありますが、
sysinitというものは見当たりません。ですから調達もできません。なにを
調べたらよいでしょうか。
 ふたつめに、起動時に
modprobe: Can't open dependencies file /lib/modules/2.4.22-ben2/modules.dep
(No such file or directory)
というアラートが出る点です。liveCDから起動したシステム上で調べてみた
ところ、
# ls /lib/modules
2.4.21-ppc-r2 misc
となり、たしかに2.4.22-ben2がありません。しかし自分はたしかにこれを
用意したはずだと思い、HDから通常の起動をしたシステムでliveCDをマウントし
live.gcloopをcloopマウントし中身を見ましたら、/lib/modules/以下に
2.4.22-ben2 misc
のふたつが見えていました。念のためlive.gcloopをCDに焼く際に用意した
image.isoを mount -t iso9660 でマウントしまして、その中にある
live,gcloopについて調べましたが、2.4.22-ben2はきちんと存在します。
 liveCD起動でinitrd中に使用されるlinuxrcファイルを読みますと、
initrdシステムは/mnt/live/以下に実際に使用されるルートファイル
システムを構築し、その際/mnt/live/lib/module/以下にlive.gcloop
に収められている/lib/modules/以下のファイルをコピーします。
ですから自分がCDに焼いたlive.gcloop中に/lib/modules/2.4.22-ben2
がある以上、そのCDから起動したシステムでもそれが見えないとおかしい
と思うのですが、自分はどこを勘違いしているのでしょうか。なお、live.gcloop
の中身はCD起動後、/mnt/iso/以下にマウントされて、見ることができます。
# find / -name 2.4.22-ben2
としてみましたが、他のシステムからは見える2.4.22-ben2が見つかりません。
 念のため、署名の下にlinuxrcの内容を載せておきます。

--
田中 元 BYH01337@xxxxxxxxxxx

linuxrcの中身

#!/bin/sh
#
# Pieter Van den Abeele <pvdabeel@xxxxxxxxxx>
# (C) 2002 Pieter Van den Abeele
# Distributed under the GPL v.2

PATH=/usr/sbin:/usr/bin:/sbin:/bin

mount -o remount,rw /

mount proc -t proc /proc
mount devfs -t devfs /dev
mount tmpfs -t tmpfs /mnt/live

echo "0" >/proc/sys/kernel/printk

findmount() {
    CDROM="/dev/cdroms/${1}"
    mount -t iso9660 -r $CDROM /mnt/live/mnt/cdrom >/dev/null 2>&1
    sleep 5
    if [ -d /mnt/live/mnt/cdrom/live.gcloop ]; then
      umount /mnt/live/mnt/cdrom
      echo "LRC: live.gcloop not found on $CDROM"
      sleep 5
      shift
      findmount $*
    else
      # losetup /dev/loop/0 /mnt/live/mnt/cdrom/live.iso
      # mount -t iso9660 -r /dev/loop/0 /mnt/live/mnt/iso/
      mknod /dev/cloop b 240 0 
      insmod /lib/modules/misc/cloop.o file=/mnt/live/mnt/cdrom/live.gcloop
      mount -o ro -t ext2 /dev/cloop /mnt/live/mnt/iso/
    
    fi
}

cd /mnt/live
mkdir /mnt/live/mnt        
mkdir /mnt/live/mnt/iso    
mkdir /mnt/live/mnt/cdrom  
mkdir /mnt/live/mnt/initrd 
mkdir /mnt/live/mnt/.init.d

findmount cdrom0 cdrom1 cdrom2 cdrom3 cdrom4

ln -s mnt/iso/bin  .
ln -s mnt/iso/lib  .
ln -s mnt/iso/sbin .
ln -s mnt/iso/boot .
ln -s mnt/iso/usr  .
ln -s mnt/iso/opt  .

mount tmpfs -t tmpfs /mnt/live/lib/modules
cp -a /lib/modules/* /mnt/live/lib/modules

mkdir proc etc var
cd mnt/iso
cp -a dev home root tmp etc /mnt/live/
chmod 1777 /mnt/live/tmp

cd /mnt/live/var
ln -s ../mnt/iso/var/db .
ln -s ../mnt/iso/var/empty .
cd ../mnt/iso/var
cp -a cache lib lock log run spool tmp ../../../var/

echo "6" >/proc/sys/kernel/printk

umount /proc
cd /mnt/live
echo "linuxrc: please wait for INIT to start... this could take a while"
pivot_root . mnt/initrd
# /bin/mount -o bind ./mnt/initrd/dev /dev # bug #17009
mount devfs -t devfs /dev
exec chroot . /sbin/init <dev/console >dev/console 2>&1