トップ «前の日記(2004-03-09) 最新 次の日記(2004-03-12)» 編集

muneda's diary


2004-03-10 曇り,傘持って行ったけど雨降らず [長年日記]

_1 ふつうのコンソールとシリアルコンソールに同時に出力

特にKernelなどで設定する必要はなくgrub.confをいじるだけでOK.会社の先輩にキーワードだけを教えてもらって,実際に参考にしたのはここ.実際にはこんな感じ.

image=vmlinuz-2.6.3-xxx
        label=2.6.3-xxx
        read-only
        append="root=/dev/sda3 console=tty0 console=ttyS1,19200n8"

append の後半にある console がポイント.前者はいわゆるふつうのコンソールへの出力を,後者はシリアルコンソールへの出力を宣言.

Tags: Gentoo Linux

_2 Re: Kernel-update

先日

起動には何の問題もないのだがdfすると / が2回マウントされているように見える.

と書いた.machuさんとこでも同じことが起きているようだ.なんかオレの調査待ちみたいな感じになっているのでカーネルコンパイル中にえいやっと調べてみた.

前回の調査で二重マウントの原因はgenkernelによってインストールされているlinuxrcというファイルが原因らしいところまでは突き止めた.今回はその続きから.

/var/log/emerge.log によると今使っているバージョンは3.0.1でその前は1.8.この間で何かが変わっているに違いない.genkernel-1.8のlinuxrcとgenkernel-3.0についているlinuxrcでそれっぽいところが見つかった.

genkernel-1.8 の linuxrc
11  #mount -o remount,rw /
12  mount /proc
genkernel-3.0 の linuxrc
8  mount -o remount,rw /
9  mount /proc

となっている.問題はこれか?それとも genkernel-3.0 の linuxrc には以下のこの部分か?

echo "STEP 4: Determining root device"

while true
do
        while [ "${got_good_root}" != "1" ]
        do

                if [ "${REAL_ROOT}" = "shell" ]
                then
                        /bin/ash

                        #set REAL_ROOT to "" so we get a prompt for the real root after the shell exits.
                        REAL_ROOT=""
                        got_good_root=0
                        continue
                elif [ "${REAL_ROOT}" = "" ]
                then
                        #no REAL_ROOT determined/specified. Prompt user for root block device.
                        echo "Root block device unspecified or not detected."
                        echo "Please specify a device to boot, or \"shell\" for a shell."
                        echo -n ": "
                        read REAL_ROOT
                        got_good_root=0
                elif [ -b "${REAL_ROOT}" ]
                then
                        got_good_root=1
                else
                        REAL_ROOT=""
                        got_good_root=0
                fi
        done


        if [ "${CDROOT}" -eq "1" -a "${got_good_root}" = "1" ]
        then
                break
        else
                echo "STEP 4a: Mounting root"

                mount -o rw ${REAL_ROOT} /newroot
                if [ "$?" = "0" ]
                then
                        break
                else
                        echo "Could not mount specified ROOT, try again"
                        got_good_root=0
                        REAL_ROOT=""
                fi
        fi
done

grub などのオプションで real_root が指定されていると上のルーチンが走り指定したディスクをマウントするようだ.どちらにしても genkernel-3.0 についている linuxrc はディスクのマウント処理を行っている.

このあと initrc 内でも root をマウントするので二重マウントになるんだろう.linuxrcはgentoo固有のモノなので修正するならこちらだな.なんとなく原因はわかったので実際にlinuxrcをいじってのテストを次のマシン再起動時にやってみよう.

追記 : gentooのbugzillaに登録されているみたい.二重マウントによって正しくshutdownされないことのほうが問題になっているみたい.やはり今日試してみるか.

Tags: Gentoo

過去の日記
2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|
トップ «前の日記(2004-03-09) 最新 次の日記(2004-03-12)» 編集