ホーム > GNU/Linux > USBメモリからブート不可能なマシンをごり押しでブートする

USBメモリからブート不可能なマシンをごり押しでブートする

問:HDDが故障して交換できないノートPCを起動したい。どのようにすれば良いか。ただし、以下の制約がある。
・FDDエミュレーション、HDDエミュレーションを問わず、USBメモリから直接ブートすることはできない。
・BIOSはUSBメモリを認識しない。
・ハードディスクは完全に故障しており、いかなる用途にも使用できない。
・ハードディスクを交換することはできない。
・光学メディアは存在しない。
・内蔵・外付けを問わずフロッピードライブは存在しない。
・純粋なBIOSを持ち、UEFIは存在しない。

解:PXEを使用し、grubをtftpでロードしてUSBメモリを認識させ、USBメモリ内のgrubをチェインロードし、USBメモリ内のlinuxをロードした。

というわけで手順はこちら。特に記載がなければすべて母艦側での操作。
1. tftpサーバーのセットアップ

# yum install tftp-server

依存関係でxinetdが入ります。
/etc/xinetd.d/tftpでdisabled=noに設定。
iptablesで69/udpをACCEPTするように設定。

2. dhcpサーバーの設定
既存のdhcpサーバーの設定を一部変更する。追加したエントリはこちら。

Host (ホスト名) {
hardware ethernet (macアドレス);
fixed-address 192.168.1.199(起動するマシンのIPアドレス);
filename "/grldr";
next-server 192.168.1.137(tftpサーバーのIPアドレス);
}

3. grub4dosをダウンロード。そのうち、grldrを/var/lib/tftpboot/以下にコピー。
本来grub2-mkimageで同様のイメージを作成できるはずですが、なぜかfedora19の環境にpxecmd.modが存在しないためイメージの作成ができません。
pxe.modだけを組み込んでgrub2-mkimageしたところ、disk ‘pxe’ not foundのエラーが発生し、grub rescueコンソールに落ちてしまいました。

4. /var/lib/tftpboot/menu.lst/以下の設定

# mkdir /var/lib/tftpboot/menu.lst

PXEで起動した場合、grubはtftpサーバー上のmenu.lstディレクトリ(ファイルではありません!)以下のファイルを特定の順番で参照します。
順序はpxelinuxの設定ファイルの命名規則と同様です。
今回は特定1台を起動したいので、一番上の01-(MACアドレスをハイフン区切りしたもの)を採用します。
中身はこちら。hd0として認識されるusbメモリのMBRをチェインロードします。

default 0
timeout 20

title chainloader
chainloader (hd0)+1
rootnoverify (hd0)

5. USBメモリに通常通り適当なOSをインストール

この状態でネットワークブートするとtftpでサーバー上のgrubが読み込まれ、続けてUSBメモリ内のgrubが読み込まれ、最後にカーネルがロードされます。

6. オチ
USBメモリにScientific Linux 6.5を入れて起動→「お前のマシンPAE対応してねーから起動できねーよバーカ(意訳)」

広告
カテゴリー:GNU/Linux
  1. まだコメントはありません。
  1. 2014年4月4日1:20 AM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。