パスワードを忘れた? アカウント作成
635751 journal
スパコン

yuriの日記: 拝啓int20様(カーネル更新編) 2

日記 by yuri
家PC(2.4.20-8)→2.4.25にアプグレードしようとして止まっちゃったときのメッセージ↓

  ds:no socket drivers loaded!
  VFS:Cannot open root device "LABEL=/" or 00:00
  Please append a correct "root=" boot option
  Kernel Panic:VFS:Unable to mount rootfs

会社のサーバ機でも
  VFS:Cannot open root device "LABEL=/" or 00:00
というメッセージが出てパニクっていたのですが、それを見ていた師匠が

・initrd-2.4.25.img を /var/tmp にコピー
・zcat initrd-2.4.25.img > img (解凍)
・losetup /dev/loop0 img (img をディスクとして扱えるよう、/dev/loop0に関連付け)
・mount /dev/loop0 /hoge (マウント)

という技を披露してくれて、その助けを借りて /hoge の中身を確認したところ、
なんだか足りないものが多い感じがしたので、試しに df をとってみたところ、
/boot 領域が 100% 使用中でした。書き込み失敗してたのね。

会社サーバは古くて使わないカーネルを一掃して再度インストールしたところ
簡単にアップデートできました。

家PCは、df してみたら /boot が 16% …
…他に原因がありそうですが、ちゃんと調べるのは来週以降になりそうです。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 使用ディストリビューションは何ですか?Red Hat 7.x だと、カーネルアップデートで具合悪いことが最近ありました。

    カーネルアップデート時に作成される initrd.img の中に入っている、モジュールをロードさせるためのスクリプト(linuxrc)で pivot_root しようとしている為、具合が悪いということがありました。

    mkinitrd が悪いのかとか、なんで不要なコマンドが linuxrc に含まれているのかは、Red Hat には割と見切りを付けちゃっているので細かく調べていません。

    Red Hat 7.x を使っていて、initrd 内部の linuxrc に以下の部分が含まれていたら、削除して initrd を作り直すといい感じだと思われます。

    mount -t proc /proc /proc
    echo Mounting /proc filesystem
    echo Creating root device
    mkrootdev /dev/root
    echo 0x0100 > /proc/sys/kernel/real-root-dev
    umount /proc
    echo Mounting root filesystem
    mount --ro -t ext3 /dev/root /sysroot
    pivot_root /sysroot /sysroot/initrd

    #個人的に作ったカーネルなら initrd が不要なようにビルドした方が使い勝手いいとおもいますがー
    --
    $ set -o vi
  • サーバではinitrdを使ってないのでちょっと安心。
    loopbackマウントですか。一応知ってはいるのですが、使ったことないです。さすが師匠様。

    ちなみに、自宅のマシンはLVMしてるのでinitrdが必要です。
    カーネルがなかなかromfsを読んでくれず苦労しました。

    # カーネルパニックが出てyuriさんもパニクってたわけですね(ぇ
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...