本サイトは、マルチコア トータルソリューションカンパニー -フィックスターズの技術者有志が運営するサイトです。

Kbootからシステムが起動しなくなった時

出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう

kboot.confの編集を間違えるなどすると、kbootからシステムを起動できなくなります。 この場合でも、カーネルを消去していなければ、kexecを直接使うことでシステムを起動することができます。

このページでは、kexecを直接使ってシステムを起動させる方法について説明します。

起動方法

"kboot:"プロンプトが出ている状態になったら、shと入力して、シェルを立ち上げましょう。

まずは、パーティションがマウントされているか調べます。

# mount 

と入力すればマウントの状態を調べることができます。/mnt/rootに期待したパーティションがマウントされているかどうか調べましょう。

マウントされていない場合は、

# mount -o ro /dev/ps3da1 /mnt/root

これでエラーが出る場合は、

# mount -o ro /dev/sda1 /mnt/root

と入力してください。

次に、起動に使われるカーネルのファイル名と、必要なら(多分必要です)initrdのファイル名を調べます。

# ls /mnt/root 

もしくは

# ls /mnt/root/boot

と入力すると、

System.map                        System.map-vmlinux                vmlinux-2.6.16
System.map-2.6.16                 config-2.6.24                     vmlinux-2.6.23
System.map-2.6.23                 grub                              vmlinux-2.6.23-2

このような感じのファイル名が並んでいるはずです。この中から、動きそうなバージョンのvmlinux, initrdを選び、ファイル名を覚えておきます。

次に選んだファイルをロードします。カーネルが2.6.16以外の場合は、

# kexec -l /mnt/root/boot/vmlinux-x.x.x --initrd=/mnt/root/boot/initrd-x.x.x --append=root=/dev/ps3da1

カーネルのバージョンが2.6.16の場合は、

# kexec -l /mnt/root/boot/vmlinux-x.x.x --initrd=/mnt/root/boot/initrd-x.x.x --append=root=/dev/sda1

と入力すればロードできます。(vmlinux-x.x.x,initrd-x.x.xは上で選んだファイル名に置き換えてください)

最後に、

# kexec -e 

と入力して新しいカーネルでシステムを再起動します。なお、このコマンドを実行すると、その場でシステムがシャットダウンされますので、 書き込み可能なパーティションをマウントしている場合は、アンマウントしたあとにこのコマンドを実行してください。

kexecについて

kexec は実行中の Linux カーネルを別のカーネルに置き換えるというLinuxのコマンドです。

kbootは、このkexecを使って、HDD上にインストールされたLinuxシステムを起動しています。

また、kexecはkboot以外でも、クラッシュしたシステムを解析する場面等で利用されています。 クラッシュしたシステムの解析についての詳しい情報は、Linuxカーネルのソースに付属のドキュメント、"Documentation/kdump/kdump.txt"を参照してください。

パーティションのブートフラグについて

古いkbootでFC5をインストールすると、パーティションにboot flagが付かず、kbootを新しくした際に、kbootから起動できなくなることがあるようです。

何回kboot.confを見直してもkbootから起動できない場合は、fdisk等を使ってパーティションのboot flagを確認してみてください。

表示
個人用ツール
オープンソースプロジェクト
ツールボックス