USBメモリからのPuppy Linux起動
急に思い立って、USBメモリからのLinuxの起動を試してみました。
予備調査として少しググってみたところでは、Puppy LinuxがUSBメモリ起動に向いたディストリビューションらしい。ということで、Puppy LinuxをUSBメモリに入れて、そこからの起動を試しました。
USBメモリからのブートで一般に難しいとされる点、
に加えて、
- Puppy Linuxを触ったことがない
- USBメモリからのブートを試したことがない
という固有の状況により、問題の切り分けが難しいのが最大の問題でした。
結果的には、多少の試行錯誤を要したものの、大きなトラブルなく起動に成功しました。さすがにPuppy Linuxは最初からUSBメモリからのブートを対象に含めているだけはありますね。
以下、作業メモです。
情報源
予備知識
- syslinuxは、DOS/WindowsのFATファイルシステムに対応したブートローダーである (同シリーズに、ISOLINUX, EXTLINUXなど)。
- Puppy LinuxはISOイメージとして配布されており、これ自体はISOLINUXを介してブートすることを前提としている。
作業環境
- PC本体: K8MM-V (Socket754)+Sempron 3100+
- HDDにインストール済みのOS (USBメモリ作成用): Ubuntu Linux 7.10
- USBメモリから起動するOS: Puppy Linux 日本語版 4.00.3-JP
- USBメモリ: ELECOM MF-AU202 2GB
手順1: Puppy Linux ISOイメージの入手&マウント
適当なミラーサイトからPuppy LinuxのISOイメージをダウンロードし、適当なディレクトリ上にループバックマウントする。ここでは、/mnt/puppylinux/ と仮定する。
# mount /tmp/puppy-4.00.3-JP.iso /mnt/puppylinux -o ro,loop
手順2: USBメモリのフォーマット
SYSLINUXはFAT (FAT16/32) パーティションからの起動を前提としているので、必要に応じてUSBメモリをFATでフォーマットする必要がある。
fdiskで確認した限りでは、今回使用したUSBメモリは事前にFAT16でフォーマットされているようなので、特に作業は行わなかった。
手順3: Puppy Linux ISOイメージ上のファイルのコピー
「手順1」でマウントしたディレクトリ (/mnt/puppylinux/) 上の全ファイルを、「手順2」のUSBメモリにコピーする。今回の作業環境では、USBメモリは /media/disk/ にマウントされるので、コマンドラインとしては以下のようになる。
# cp /mnt/puppylinux/* /media/disk
手順4: syslinux設定ファイルの作成&編集
USBメモリ上に、syslinux経由で起動するカーネルの情報を記述する (grub.confに相当)。ここでの記述方法について、一次情報には当たっていないが、検索でヒットしたブログ記事を参考にして以下の作業を行った。
- /media/disk/ 直下のisolinux.cfgを、syslinux.cfg にリネーム
- syslinux.cfg中の pmedia=cd の部分を、pmedia=usbflash に修正
手順5: USBメモリへのsyslinuxインストール
念のためUSBメモリをアンマウントした後で、以下のコマンドでUSBメモリにsyslinuxをインストールした。ここで、-s オプションを外してもOKかどうかは未確認。
# syslinux -s /dev/sda1
ここで、/dev/sda1 は、USBメモリを指すデバイスファイルである。今回の作業環境では、USBメモリを差したときに自動的にマウントされるので、その後でmountコマンドを実行してデバイスファイル名を取得した。一般にどうやって取得できるかについては未調査。
なお、syslinuxコマンドは、Synapticを用いて事前にインストールしておいた。
手順6: 再起動→BIOS上での起動順序の設定
ブートデバイスとして内蔵HDDよりもUSBメモリを優先するように設定する。
今回の作業環境であるK8MM-Vでは、ブートデバイスとしてUSBメモリに相当するものが選択肢に現れないので、多少はまった。
試行錯誤の結果、以下のような仕掛けと判明した。
- ブートデバイス優先順位とは別に「Hard Disk Boot Priotity」というメニューがあり、この中で接続したHDD間での優先順位を指定する。
- USBメモリを接続した状態で起動すると、上記メニュー内に「USB 2.0 Flash Disk」という選択肢が現れる。
通常ではHDDがブートデバイスなので、Hard Disk Boot Priority の中で USB 2.0 Flash Disk を最優先に指定することで、期待通りPuppy Linuxが起動した。
まだPuppy Linux自体初めてなので、パッケージ追加などのカスタマイズは、Puppy Linuxの操作に慣れてから行う予定。