1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッキングラボの作り方 DC-1マシンが立ち上がらない。

Posted at

ハッキングラボ 2回目の演習にて、DC-1マシンが立ち上がらない。

トラブルシュートしたのでその記録です。

マシンイメージは本書にかかれている通りここから入手する。
ミラーのほうのURLを選択しました。

image.png

VirtualBoxにインポート
ダウンロードして解凍したOVAを選択する。

image.png

起動してみるとGRUBは起動する。一番上を選択する。

image.png

OS起動途中でクラッシュする。
Kernel panic・・・カーネルが回復不能なエラーを検出し、処理を中断。

image.png

ここまでまとめ

GRUBまでは到達 → OS起動途中で失敗

GRUBってなに・・・「どのOSを、どのカーネルで、どんなオプション付きで起動するか」を決める。
Kernel panicが出ている・・・カーネルが死んでいるという切り分けができる。

ログを深堀りする。

Call Trace は「下から読む」
Call Trace は「関数が呼ばれた順番のスタック」

image.png

image.png

Call Trace の分類

Call Trace 関数名 分類 説明
mwait_idle CPU idle CPU を省電力状態(mwait)に入れる処理
cpu_idle CPU idle idle task 本体。CPU が何もすることがない時に実行
apic_write 割り込み APIC を使った割り込み制御
clockevents_* タイマー 次のタイマー割り込みを設定する処理

Call Trace から制御できる機能を特定する

分野 起動オプション 何をしているか なぜ有効か
CPU idle idle=poll CPU idle 時に省電力命令(mwait/hlt)を使わない idle task panic の直接回避策
APIC noapic nolapic I/O APIC / Local APIC を使わない 割り込みを新方式ではなく旧方式(PIC)で処理
ACPI acpi=off ACPI(電源管理・CPU C-state)を無効化 CPU / 電源管理まわりの非互換を回避
タイマー clocksource=pit タイマーに PIT を強制使用 古いカーネル向けの最も安定した方式

起動オプションを設定して起動してみる。

GRUB画面で一番上を選択した状態でeを押す
image.png

起動オプションの設定
linux ~~~ って書いてある行の末尾に次を追加する。

noapic nolapic acpi=off idle=poll clocksource=pit

Ctrl+x 押して起動。

起動できた。
image.png

今回の原因

古い Debian(Linux 3.2 / i486 カーネル)を現代CPUを前提にしたVirtualBoxの仮想マシンで動かそうとしたので、カーネルが想定していない CPU idle/割り込み/タイマーの挙動に遭遇し、Kernel panic が発生した。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?