1台のPCで複数のOSを起動する場合には、例えば以下のようにいくつかの方法が考えられます。
ここでは、CD/DVD/BD(Blu-ray Disk)/USB(Universal Serial Bus)などの外部メディアからのブート(起動)を考えてみたいと思います。
これらをブートデバイスとして使う場合には、当初ハードウェアの違いを吸収する(移植時の利便性の)為に考案され、デバイスドライバ的な役割を持ち、ブートローダともいえるBIOS設定でHDDよりも先に読み込むように設定しておく必要があります。
しかし、あるデバイスの利用は可能でもブート(起動)には使えないというケースに遭遇することがあり得ます。
例えば、技術の進化と変遷により、カセットテープ/FDD/PO/MO/ZIP/CD/DVD/BD/USB...etc.と各種補助記憶メディアの栄枯盛衰も様々、近年カセットテープの流用はもちろん、FDD(フロッピーディスクドライブ)のないPCが一般的ですし、POやMOは影が薄く、ZIPは・・・USBは1.1/2.0・・・マシンやWindows 9x(95/98/98SE/Me)など旧タイプのOSはまだまだ現役、CDブートが可能となる以前から存在したUSB1時代の対応マシンでは、当然USBブートという発想もあるはずもなく・・・といったケースがあります。
そうした中で物理的な故障は別としてPCでUSBポートがあるのにUSBでブートができないケースというのは、PCやOS、USBという規格やマシンのUSBポートがブートに対応していないというわけではなく、BIOSの起動順設定の選択肢にUSBメモリがないからブートできないというケースがあります。
これは、逆に見ると手動(メニュー選択)など何らかの方法でUSBを選択さえできれば、起動できるということになります。
その何らかの方法の中でも比較的安全な方法の1つがチェーンローダ(chain loader)を使ったマルチブートです。
この方法は、冒頭のリストの[...etc.]にあたる(リストにない)ものでパーティション設定はしないけどマルチブートにするというものです。
そんな時、Plop Boot Manager というチェインローダが重宝しますが、PlopとGrub4Dosを併用(Grub4DosメニューからPlopメニューを呼んでUSBを選択)するのもありでしょう。
尤もファイルシステムが読み込まれる前の時点におけるUSBデバイスの識別子を簡単に特定できる人にとっては、Plop Boot Managerを使う必要は特になく、これを意識しなくても設定してくれるのでUSBデバイスの識別子を特定できない場合に重宝するということです。
[追記]
下記事例は、ハードディスクの起動ドライブにブートローダを設定する方法ですが、USBポートはあるけどUSBブートはできない一方、CD/DVDドライブもあってCD/DVDドライブからならブートできるんだよねという場合には、Plop Boot Managerの入ったCD/DVDからUSBを起動することができます。
その場合、Plop Boot Manager単体もしくは、これが入ったLinuxディストロやレスキューLiveCD/DVD用isoファイルをImgBurnなどで(ImgBurnなら[イメージファイルをディスクに書き込む]で)CD/DVDに焼き、CD/DVDから起動(後者ならブートメニューからPlop Boot Managerを選んで)Plop Boot Managerのメニューから[USB]を選択すればOKです。
一見、遠回りに思えるかもしれませんが、作業は極めてシンプルなのでブートマネージャをいじるのが初めてという場合には、起動ドライブに仕込むよりは、わかりやすいし、手っ取り早いと思います。
例えばこんな環境でも手順を踏めばUSBブートできるようになったりします。
...環境が古いからUSBブート不可なんて冷たいこと言わないで、はてさて、なんとかUSBブートできないものか。。。
おー、Plop Boot Managerっていうのがあるのか、Grub4Dosっていうのもあると。。。なんだかいけそう。。。
例:menu.lst
[prompt] > plpcfgbt dbt=usb usb1=1 c:\plpbt.bin
MBRにGRUBをインストールした場合のブートの流れとしては、電源投入、BIOSによるPOST(Power On Self Test)、デバイス検索、MBR読み込み、GRUB実行、カーネル実行、起動用RAMディスク/initrd/INITial Ram Diskの準備、カーネルがinitrdをルートとしてマウント、initrdにあるリソーススクリプトを実行、initrdが持つ必要なモジュールを読み込み、ルートパーティションをマウント、マウント完了で利用可能となるカーネルモジュールにより各機器の初期化、initプロセス実行、ブートスクリプト起動......と続くが、Grub4Dosとしては、[kernel]とOSが必要とする場合[initrd]までの指定が必要となる為。
場合によっては、MBRにGRUB Legacy/GRUB2をインストール、FreeDOS/NetBSDとPLoP Boot Managerをマルチブートする例の方がわかりやすいかも。
USBブートに使ったUSBメモリにPuppy Linuxをインストールする為に使った方法は、下記の如く偶然の産物でした。
今回、常々有効活用できないものかを考えていたWindows 98SE搭載マシンにLinuxを入れよう、ついては同時に利用できないなら滅多に使うことがないものをマルチブートにしても限られたディスクスペースを有効に活用できそうにないからLinux専用マシンにしようとうっすら思っていました。
スタンドアローンである当該マシンのFDD/CDドライブは破損していてUSBのみが使える状態であり、P2P、または、ネットワークにつながずにこのままインストールを考えた為、自ずとUSBという選択肢が残り、Linuxをインストールしたいわけだから、USBに入れるのは、当然ながらLinux、容量が限られたこのUSBメモリに入れられるLinuxは。。。ということでPuppy Linuxが有力候補となるに至りました。
しかし、肝心の当該マシンでは、USBドライブがあるにも関わらず、USBブートに対応していなかったことから調べた結果、Plop Boot ManagerやGrub4Dosに辿りつきました。
現実味が帯びてくるに連れ、OSであるWindows 98SEを消滅させるのはもったいない、データは必要ってほどでもないけど、捨てるには惜しいし、思い出として記念に残しておきたいと思うに至り、辿りついたのが、仮想マシンという便利なソフトウェアでした。
思えば仮想マシンは、このOS選定する際にも便利なのでその1つであるVirtualBoxのゲストOSとして各種Linuxをインストール、Puppy Linuxの使い勝手もまず仮想マシンで試してみることに。
するとWindowsライクなGUIのデスクトップを持つPuppy Linux(だけでなくGUIデスクトップを持つ多くのLinux)では、メニューから選択するだけでHDDばかりでなく、USBに簡単にインストールしたり、書き込みソフトウェアを使って焼き込んでLive USB、Live CDといったブータブルメディアを作成でき、それらのドライブをブートデバイスとして利用できることを知り、かくして仮想マシンから物理マシンのUSBメモリにPuppy Linuxがあっという間にインストールされるに至ったというわけです。
Linuxに慣れ親しんでいれば、GUIでなくても簡単にできることですが、この方法なら根っからのWindowsユーザーやLinuxを使い始めたばかり、今回のように期せずしてたまたま手間が省けてしまった人々にとって便利この上ないことでしょう。
ちなみに当初の目的を達する為には、仮想マシンにWindows 98SEをインストールする為にインストールCD、もしくは、それに準ずるディスクイメージが必要となる訳ですが、購入当時リカバリCDは付属していたものの、インストールCDは付属しておらず、仮想マシンをいじり倒してる間に98SEもHDDから吸いだせるはずと思うに至り、結果、VirtualBoxにMS-DOS起動ディスクでWindows 98SEをインストールすることができました。
ただ、Windows 98SEに関しては、特にVirtualBoxでは挙動がモッサリとしていて且つぎこちないので他の仮想マシンであるVirtual PC 2007なども試しつつ、仮想マシン上のWin 98SEにアプリケーションを入れてみたり、使ってみたり、バックアップの容易さを体感してみたりした後、予定通り、Puppyを対象マシンに入れてみるつもりでいます。
Windows 98SEの入ったe-oneには、最終的にNetBSD+ウィンドウマネージャ(jwm)+日本語環境(scim-anthy)、LANに接続+Samba導入でNASとしても使えるようにしてみました。
もちろん、より新しい他のWindowsマシン達もそれぞれサポート期限が切れる前までには、きっとBSDやPC-UNIX、Linuxマシンと化していることでしょう。
==> 古いパソコンの再利用
Windows 9x/Me/NT/2kなどを持ってるということは、USB1.1の256MBが現役・・・なんてこともあり得る・・・そんな時でもX Window Systemを組み入れないCUIベースとすること等で軽量化しているPlop Linux Basic versionや組み込みシステムでLinux軽量化に一役買っているBusyBoxなどを使ってPC用OSでも軽量化を図り、既定でWindowsライクなGUIが起動するDSL/Damn Small LinuxやPuppy Linuxならインストール可能です。
尚、DSLやPuppy Linux(lupu 528jp)では各種インストールメニューの中でUSBへのインストールができる為、仮想マシン上のゲストOSからでもブートUSBを作ることができたりします。
BusyBoxとは、UNIX系のcoreutilsに含まれるコマンド群の全てまたは任意に選択した一部のコマンドをbusyboxというコマンドに(シンボリックリンクをはり)集約、実質1つのコマンドとする仕組みで、より軽量化する為に各コマンドオプションの取捨選択をも可能とする軽量化に特化したコマンド及び技術です。
よってBusyBoxを利用したDSLやPuppyでは、本来のコマンドとは、若干挙動が異なったり、オプションがフルスペックで実装されていない場合もあり得ます。
ちなみにデバイスフォーマット時にはファイルシステムの指定が可能、Windowsならfat/vfat(fat16)/fat32/exfat/ntfs、UNIX/Linuxならextended file system(ext1)/ext2/ext3/ext4/Btrfsやネットワークファイルシステムnfs、擬似ファイルシステムproc(procfs/Process Filesystem)、メモリファイルシステムtmpfsなどがあります。
LANを介してWindowsやUNIX/Linuxマシンが混在する場合には、Sambaを利用することもできますが、LANを介さずUSBなどの媒体でデータをやり取りする場合、Windows同士ならfat/fat32/ntfs、但しNTの場合fat32は不可なのでfatかntfs、UNIX/Linux同士なら(ext1/)ext2/ext3/ext4/Btrfs何れか、WindowsとLinux間ならfat(近年Liuxのntfsへの対応も進んでいる)でフォーマットするとよいでしょう。
CD/DVD/BD/USBなど外部メディアからOSを起動できれば、例えば、挙動不審なWindowsマシンのレスキューメディアとしてLinuxでウィルスチェック含むマシンの状態チェックすることも可能になります。
また、先の例のようにFDD/CD/DVD/BDがそもそもないとか、故障して使えないといった環境でもUSBからブートできるようになれば、HDDへのインストールもできるようになるので、別途外付けHDDなどにバックアップを取るなりして、そのままPuppyを使うもよし、必要なら思う存分セキュリティ設定した後にでもLANにつないで、またはネットに直でつなげて他のLinuxに乗り換えるのも自由自在です。
どれだけ古いPCも常にフル稼働しているとか、毎日のように使用しているならまだしも、そうでないならセキュリティパッチ含むOSのサポートが切れるという理由だけでPCを廃棄したり、買い替えたりするというのも現実的ではないでしょう。
捨てるには忍びない、かといって活用もしづらいと、これまで眠らせていた古い低スペックPCでさえも現役復活、モノを大切にし、断捨離というフレーズに一理あるとは思いつつ、多少なりとも抵抗を覚えて古いPCを持ち続けていた、そんな人も大いに報われ、十二分に利活用できることでしょう。
ちなみにネットブックもメモリやHDD容量からしてDSL、PuppyなどRAMが64MB~256MBで十分動作するLinuxもあり、512MBとなるとまた幅が広がりますし、HDDにしてもシステムファイルや有用なアプリケーションを含めインストールしても700MB前後、1GB前後ともなれば選択肢も多く、何かとHDD容量が限られるネットブックには、むしろLinux環境の方が向いてるとも言えます。
仮にあるLinuxディストリビューションの開発が止まるというリスクがあるにしても他に選択肢が多々あることで十分補え、X Window SystemによるLinuxのGUIも今やWindowsユーザーにも違和感がない程になっているので、多少の操作性の違いなどを考慮しても、GUIベースなら尚更、これまで玄人向けとか難しそうというイメージから敬遠されがちだったLinuxを使ってみるという選択は今や現実的なものと言えるでしょう。
尚、Linuxディストリビューションには、他にもArch Linux、ArchBang、CentOS、Debian、Fedora、Gentoo、openSUSE、Vine Linux、Debian、KNOPPIX、Ubuntu、Tiny Core Linux、Turbo Linux...etc.、*BSDには、FreeBSD、NetBSD、OpenBSD、DragonFlyBSD...などがあります。