気の向くままに辿るIT/ICT/IoT
システム開発

USBメモリでのマルチブート3通りの方法

ウェブ造ホーム前へ次へ
USBメモリでのマルチブート3通りの方法とは?

USBメモリでのマルチブート3通りの方法

USBメモリでのマルチブート3通りの方法

 ここまででこのようなところまでいきました。

  • マルチブートするならCD/DVDよりもUSBメモリの方が圧倒的に便利
  • パーティションタイプMBRではなくGPTの方が圧倒的に柔軟でMBRで対応しきれない要件、OSやツールもマルチブート可能
  • GPTにするならブートローダには、パーティション越しの操作も可能でGPT対応のGRUB2がうってつけ
  • やってみるならソフトに頼らず、自力/手作業でやった方が、バリエーション豊富に対応可能
  • 今回は複数のOSのインストーラ/アップデータとレスキューツールを中心にマルチブートしてみよう
  • USBメモリでマルチブート構成にする方法には大きく3通りある

 ここでこのページの本題ですが、その3通りとは次のような方法です。

  1. 専用パーティションにISOディスクイメージやUSBメモリ用イメージを埋め込んでチェーンロード
  2. 同一パーティション内に単一または複数のISOディスクイメージをファイルとしてコピーし、ISOブート
  3. 同一パーティション内に単一または複数のISOディスクイメージを展開(全内容をコピー)して各々ブート

 1つめは、ddコマンドや各種ソフトウェアでISOディスクイメージやUSBメモリ用イメージを埋め込む極々普通の方法で埋め込む時間が相応にかかる以外は手間のかからない簡単な方法です。

 2つめは、特定のパーティション内のルート、もしくは、ISOディスクイメージ用の専用ディレクトリまたは、各ディスクイメージごとのディレクトリを作成の上、ISOディスクイメージを埋め込むのではなく、それぞれ単にファイルとしてコピー、GRUB2でloopbackしてISOディスクイメージから直接起動する方法で3つの内、最も時間も手間もかからない簡単な方法です。

 3つめは、そのISOディスクイメージをマウント、USBメモリ内の当該パーティションにOSやツールごとにディレクトリを作成の上、そこに中身を全てコピー、パーティションに埋め込むケースと同様にGRUB2から起動する方法です。

  1. CentOS-6.4-i386-minimal.iso
  2. Debian-7.7.0-i386-netinst.iso
  3. Fedora-20-i386-netinst.iso
  4. mini.iso  (ubuntu 14.10 i386)
  5. ubuntu-mini-remix-14.10-i386.iso
  6. FreeBSD-10.1-RELEASE-i386-bootonly.iso
  7. boot.iso  (NetBSD/i386 6.1.2)
  8. install54.iso  (OpenBSD 5.4)
  9. clonezilla-live-2.2.4-12-i486.iso
  10. gparted-live-0.20.0-2-i486.iso

 先のページで述べたように今回検証したケースでは、次のように大きく3通りのパターンにうまくバラけてくれたのでサンプルとしても好都合です。

 尚、他は今回の為にディスクイメージをダウンロードさせて頂きましたが、CentOSとNetBSD、OpenBSDは以前ダウンロードしたものを利用させて頂くことにしました。

 当然ながら、古いものは、インストール中、もしくは、インストール後、すぐに最新バージョンにアップグレードすべきでしょう。

  1. 専用パーティション:FreeBSD/NetBSD
  2. ISOブート:Debian/Ubuntu/OpenBSD/Clonezilla/GParted
  3. ファイル展開:CentOS/Fedora

 先の3つの方法において細かい違いや共通点、感じたことは、次の通りです。(それぞれ進展がある場合があるので詳細は後段の各リンク参照。)

  • Red Hat系のCentOS、Fedoraは、要ファイル展開
  • CentOSは、カーネルパラメータ[nomodeset]が必須
  • Debianは、ISOディスクイメージと、これと同じバージョンのvmlinuzとinitrd.gzをダウンロード、vmlinuzとinitrd.gzを設定すればloopbackする必要なくISOブートができた
  • Ubuntuは、2種類の内、mini.isoは、スタンダードなISOディスクイメージのloopbackとvmlinuz、initrd.gzを指定、REMIXは、loopbackとvmlinuz、initrd.lzに加え、標準的なUbuntuのカーネルパラメータを指定することでISOブートできた
  • ClonezillaとGPartedは、16ビットモード(linux16/initrd16)でmemdiskを使えばISOブートできた
  • 気付けばClonezilla/GPartedのベースはDebian Liveの模様、16ビットモードの必要があるか否かや通常のloopbackを使うか否かといった違いはあれどDebian同様ISOブートできた
  • FreeBSD/NetBSD/OpenBSDは、GRUB2のカーネルコールにおいてLinuxで言うところの[linux]の代わりに[kfreebsd][knetbsd][kopenbsd]がそれぞれ用意されており、これを使って今回のケースでは、FreeBSDは[loader]をチェーンロード、NetBSDはカーネル[netbsd](リネーム済みのようで実体はインストール/アップデート用)を、OpenBSDは直接インストール/アップデート用カーネル[bsd.rd]を読み込んだ

 今回、ディスクイメージの中身の構成を参考にしたのは、もちろんのこと、OpenBSDは、まさにディスクイメージ内のINSTALL.i386を一通り読むことで、Debian、Ubuntu、Fedoraは、各サイト及び関連サイトを、NetBSDについては、コマンドラインから[info grub2]でマニュアルを参照したらドンピシャの記述があり、戸惑うことはありませんでした。

 OpenBSDのディスクイメージ内にあったINSTALL.i386を参照するまでは、ユーザーフレンドリーとは言い難いと思っていたのですが、このドキュメントの詳細さにOpenBSDへの印象が一変しました。

 一方、試行錯誤したCentOSは、ネット上を彷徨い、米英語の記事で大量にカーネルパラメータを指定しているページに辿り着き、最小限必要なパラメータを探し、ようやく[nomodeset]が必須だとわかりました。

 また、同じく試行錯誤したFreeBSDにおいては、[info grub2]にも参考例はあったものの、最終的に米英語によるQ&A風サイトに辿り着き、シンプルに標準loaderにチェーンロードするだけという方法を発見した時、更に他の米英語によるQ&A風サイトに辿り着き、ClonezillaやGPartedでlinux16/initrd16を使う必要があったというのは目から鱗でした。

 ちなみにFreeBSDについては、そこにあった回答そのままですが、質問者の方の状況は、それ以前にブートできないよという話だった模様、後者については、質問が、Clonezillaではlinux16/initrd16を使うとできたけど、同じ方法でやってもなぜかGPartedではできないというもので質問者の方の期待する答えはない模様もタイムスタンプが古いこともあり、回答していませんが、実際のところ当サイトではできたのでClonezillaとGPartedでパスが微妙に異なっていたのではないかと思われます。

 尚、パーティションをMBRではなくGPTでフォーマットする場合、Linuxでは、gdiskやparted、GPartedなどを使用しますが、今回は、最も手軽でわかりやすいGPartedを使いました。([追記:2016/10/02]LinuxのfdiskはGPTに未対応だったように思いますが、ディストロによるのか、Debian Jessieでは機能しているように見えるので近年、対応している模様、*BSD、例えば、NetBSDのfdiskコマンドはGPTには対応していませんが、NetBSDとGPTの要領でgptコマンド、マウントする場合などは、付随してdkctlコマンドを使います。)

 というわけで、次は、GRUB2の具体的なインストール方法、その後、それぞれのOSやツールをGRUB2から起動する具体的な方法(後段の各リンク)を見ていくことにします。

[追記:2017/01/13]

 USB用イメージをUSBメモリに書き込む場合とISOイメージをUSBメモリに書き込む、CD/DVDに書き込む、ISOブートする、ファイル展開する場合(USBイメージとISOイメージでは)、それぞれメリット・デメリットがあります。

 USB用イメージをUSBメモリに書き込んだ場合には、HDD/SSDにインストールした状態と同様に容量の範囲内においてアプリのインストールやアップデート含め、ファイルシステム内への書き込みも可能である一方、読み書き速度はUSB仕様に依存し、USB 3.1ならまだしも、3.0、2.0、1.1と規格が古いほど相応に遅くなります。

 一方、ISOディスクイメージの場合、どの方法でも書き込みやファイルシステムの拡張はできず、(起動都度必要に応じてマウントすれば同一USBメモリ上に別途確保したパーティションには保存できるも)ファイルシステム内にはデータの保存はできず、システムへの変更も保持されないものの、起動時にUSBよりもHDD/SSDよりも高速なメモリに読み込まれる為、RAMに一定程度以上の余力があれば、起動後の速度は高速で内蔵ストレージ上と遜色なく利用可能です。(CD/DVDに焼いた場合も起動後は同様も、読み込み速度が遅いため、起動に時間がかかる上、媒体自体が嵩張る、特に薄型化が進むノートPCでは基本、CD/DVD/Blu-rayドライブが搭載されない点で今となっては優位性のある選択肢とは言い難いでしょう。)

 速度の恩恵を享受する為には、接続するPCのUSBポートが対応しているという前提が必要も、それでもRAMやSSD/HDDよりは低速とはいえ、USB 3.1の読み書き速度なら体感としては、内蔵HDD/SSDとそれほどの差を感じることなく利用できる可能性があり、そうであるなら、Live USBとしては、USB用イメージをUSBメモリに書き込んで利用する方法が最も利便性が高いと言えるでしょう。

ウェブ造ホーム前へ次へ