トリプルブート Edit

  • 概要
    MacOSX、WindowsXP、Linuxのトリプルブートを実現する。

  • パーティション分割の方針
#FormatSizeMacOSX(GPT)
での見え方
Linux(GPT)
での見え方
WinXP(MBR)
での見え方 
備考
1FAT32200M-EFI
2HFS+90GMacintosh HD/dev/sda2MacOSX
3ext2 → FAT325Gshare/dev/sda3 (/share)Gドライブ     共有領域
4NTFS30G-/dev/sda4Cドライブ WindowsXP
5Linux swap1GswapLinux
6HFS+200MLinuxBoot/dev/sda6 (/boot)
7Reiserfs21G/dev/sda7 (rootfs)


  • 設定のツボ
    • WinXPは第4パーティションのCドライブへインストールする必要がある。
    • 第3パーティションをFAT32以外(例えばLinux)に設定しておくことで、第4パーティションがCドライブになる。
    • OSX、10.4.6付属のdiskutilコマンドでresizeVolumeすると楽。
    • GUIDパーティションをサポートするMactel版Linuxカーネルを使用すると、パーティション数の制限が緩和される。
      • 第5パーティション以降にLinux環境が構築可能になる。
      • 第3パーティションをファイル共有用として確保できる。
      • Linux swap パーティションなんかも使用可能になる。


  • 注意事項
    WindosXP等のMBRベースのOSとMacOS等のGUIDベースのOSが一つのHDD内に混在した環境ではGNU Partedを使用しないほうが良さそうです。なぜならば、そのような状態でpartedを使うと、フェイルセーフ機能が作動して、MBRの内容が初期化されてしまうからです

MacOSXのインストールとBoot Campの準備 Edit

  • MacOSXを単一パーティションでインストール。
  • OSX(10.4.6へ)、Firmware(CSM)のアップデートを行った後、BootCampをインストール。
  • BootCampを実行してドライバCDだけを作成する。(パーティショニングは行わない。)

パーティショニング Edit

  • diskutilコマンド
    10.4.6において、diskutilコマンドが大幅に機能拡張され、オンザフライでパーティションのリサイズが可能なった。
    さらには、パーティショニングの際、GPTとMBRに保持されるパーティションテーブルの同期処理を自動で行ってくれるようになった。

    次にdiskutilコマンドの実行例を示す。
    /dev/disk0s2領域(MacOSX領域)を90GBに縮小後、空いた領域に新規パーティションを任意のフォーマット、名前、サイズで、複数個作成した。
    第3パーティションはFAT32以外(Linux)を指定し、第4はWinXP用にFAT32を指定。
    第5、第6、第7は、linux swap、Linuxのブート用(HFS+)、rootfs用のパーティションを指定した。
    # diskutil resizeVolume disk0s2 90G \
               Linux share 5G "MS-DOS FAT32" winxp 30G \
               Swap swap 1G  HFS+ LinuxBoot 200M  Linux Linux 20G
    
  • diskutil実行前
    # gpt -r show /dev/disk0
          start       size  index  contents
              0          1         PMBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B ← EFI
         409640  311909984      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC ← MacOSX
      312319624     262151         
      312581775         32         Sec GPT table
      312581807          1         Sec GPT header 
    

  • diskutil実行後
    # gpt -r show /dev/disk0
    gpt show: /dev/disk0: Suspicious MBR at sector 0
          start       size  index  contents
              0          1         MBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  188743680      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      189153320     262144         
      189415464   10485760      3  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      199901224   62914560      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      262815784    2097152      5  GPT part - 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
      264912936     409600      6  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      265322536   47259232      7  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      312581768          7         
      312581775         32         Sec GPT table
      312581807          1         Sec GPT header
    

WindowsXPのインストール Edit

  • インストールCDから起動
    インストールCDを挿入して再起動を行う。起動音が鳴ったら、オプションキーを押してブートセレクタを呼び出し、インストールCDから起動させる。

  • パーティション選択画面にて
    4番目のパーティションを選択(写真参照)する。
    (その直後に表示される選択肢では、ファイルシステムNTFSでクイックフォーマットを選択した。)

    part01.jpg

  • リブート後
    リブート後、オプションキーを押してブートセレクタを呼び出し、HDD(Windows)から起動させる。

  • ドライバのインストール
    インストール終了後、BootCampで作成したドライバーCDをインストールする。
  • 以上でWindowsXPのインストールは終了です。

Linuxのインストール準備 Edit

  • 概要
    ここでは、RAMDISK(initrd)ベースで動作する小さなLinuxシステムを6番目のパーティション(LinuxBoot)へインストールする。
    本Linuxシステムは、次節でUbuntu-ja Linuxをインストールするための作業環境として使用する。
  • LinuxBootパーティションの作成
    • MacOSXを起動。
    • 6番目のパーティションをHFS+フォーマットで初期化する。
      $ diskutil eraseVolume HFS+ LinuxBoot  /dev/disk0s6
      
    • LinuxBootボリュームが作成され、デスクトップへ自動的にマウントされる。
  • LinuxBootパーティションへeliloを導入して、Linuxのブート設定を行う。
    • LinuxBoot7.dmg.zip を解凍して、その中身を全て、LinuxBootパーティションへ格納する。
      (LinuxBoot7.dmg.zipは、Mactel-Linux で公開されるブートに必要なファイル一式(elilo、カーネル、initrd)を格納したアーカイブです。)

    • そして次のコマンドをターミナルから実行。
      すると、起動時、オプションキーを押し続けることで、ブートセレクトメニューが表示されるようになります。
      $ cd /Volumes/LinuxBoot
      $ sudo bless --folder . --file e.efi --labelfile linux.volicon
      
    • elilo.confの修正
      linuxとinitrdの2つのラベルがあらかじめ定義されています。
      赤文字の部分を各自の環境に合わせて変更してください。
      • default=initrd … RAMDISK(initrd)ベースで起動
      • video=imacfb:i17 … iMac 17 or MBP
      • video=imacfb:i20 … iMac 20
      • video=imacfb:mini … Mac mini
      # force chooser to textmenu
      chooser=simple
      legacy-free
      default=initrd
      delay=0
      #prompt
      
      image=vmlinuz-2.6.16.5-imac
              label=linux
              append="video=imacfb:i17 acpi=force irqpoll root=/dev/sda7 libata.atapi_enabled=1"
      
      image=vmlinuz-2.6.16.5-imac
              label=initrd
              initrd=initrd-parted.gz
              append="video=imacfb:i17 acpi=force irqpoll root=/dev/ram0 rw  libata.atapi_enabled=1"
      

  • Ubuntu-jaのイメージと各種設定ファイルの取得
    下記ファイルをあらかじめ内蔵ディスクへ格納しておいてください。
  • Linuxの起動
    再起動を行う。起動音が鳴ったら、オプションキーを押して、EFI Bootから起動させる。
    boot.jpg

  • RAMDISKベースで動作する小さなLinuxシステムが立ち上がったはずです。

Ubuntu-jaのインストール Edit

  • 概要
    本節では次のようなパーティションで構成されたファイルシステム上に、Ubuntu-ja linuxを構築します。
    • /dev/sda5 swap
    • /dev/sda6 /boot
    • /dev/sda7 rootfs
  • ファイルシステムの作成
    # mkfs.reiserfs /dev/sda7
    # mkswap /dev/sda5
    
  • コピー先rootfsのマウント
    # mount -t reiserfs /dev/sda7 /mnt
    # mkdir /mnt/boot
    # mount -t hfsplus /dev/sda6 /mnt/boot
    
  • MacOSX領域(/dev/sda2)をマウントして、各種ファイルをコピーする。
    # mkdir /osx
    # mount -t hfsplus  /dev/sda2 /osx
    
    # cp /osx/XXXXXX/ubuntu-ja-5.10-live-i386-20051024.iso          /mnt
    # cp /osx/XXXXXX/ubuntu-ja-overwrite-20060314.tgz               /mnt
    # cp /osx/XXXXXX/kernel-image-2.6.16.5-imac_20060414b_i386.deb /mnt
    
    # umount /osx
    
  • isoファイルから、LiveCDイメージ(filesystem.loop)を抜き出す
    # mkdir /iso
    
    # mount -t iso9660 -o loop /mnt/ubuntu-ja-5.10-live-i386-20051024.iso /iso
    # extract_compressed_fs /iso/casper/filesystem.cloop > /mnt/filesystem.loop
    
    # umount /iso
    # rm /mnt/ubuntu-ja-5.10-live-i386-20051024.iso
    
  • rootfs(filesystem.loop)の展開
    # mount -t ext2 -o loop /mnt/filesystem.loop /iso
    
    # cp -a /iso/* /mnt/
    
    # umount /iso
    # rm /mnt/filesystem.loop
    
  • カーネル等の展開
    # cd /mnt
    # chroot . 
    sh-3.00# tar vxzpf ubuntu-ja-overwrite-20060314.tgz
    sh-3.00# dpkg -i kernel-image-2.6.16.5-imac_20060414b_i386.deb
    
    sh-3.00# rm ubuntu-ja-overwrite-20060314.tgz
    sh-3.00# rm kernel-image-2.6.16.5-imac_20060414b_i386.deb
    
  • 必要ならばパスワードの変更をしてください!
    # passwd ubuntu
    Enter new UNIX password: password
    Retype new UNIX password: password
    passwd: passwd updated successfully
    
  • /etc/fstab を必要に応じて修正します。
    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    proc            /proc           proc        defaults        0       0
    /dev/sda7       /               reiserfs    defaults        0       1
    /dev/sda5       none            swap        sw              0       0
    /dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
    /dev/sda6       /boot           hfsplus     defaults        0       0
    
  • /boot/elilo.conf
    default指定を修正します。
    # force chooser to textmenu
    chooser=simple
    legacy-free
    default=linux
    #default=initrd
    delay=0
    #prompt
    
    …省略…
    
  • 後片付け&再起動
    sh-3.00# exit
    # cd /
    
    # umount /mnt/boot
    # umount /mnt
    # reboot
    
  • Linux(EFI Boot)から再起動します。

  • ログインマネージャgdmが立ち上がると思います。
    user:ubuntu、passwd:ubuntu でログインします

  • 必要に応じて、ネットワークの設定を行ってください。
    デフォルトでは、DHCPでIPアドレスを取得します。

共有領域の設定 Edit

  • 第3パーティションを共有領域へ
    第3パーティションを FAT32形式でフォーマットして、MacOSX、Linux、WindowsXPから相互にアクセス可能な共有領域を作成します。
    (ちなみに、本手順通りにインストールを行った場合、第3パーティションはLinuxパーティション(ext2)になっているのはずです。)
  • Linuxで起動後
    • rootになって、
      $ sudo su
      
    • FAT32形式でフォーマット、マウントポイント share を作成
      # mkfs.vfat /dev/sda3
      # mkdir /share
      
    • /etc/fstabへ一行追加
      /dev/sda3  /share vfat defaults 0 0
      
    • リマウント
      root@ubuntu:/# mount -a
      root@ubuntu:/# df
      Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
      /dev/sda7             23628840   1405964  22222876   6% /
      tmpfs                   515660         4    515656   1% /dev/shm
      /dev/sda6               204800     15740    189060   8% /boot
      /dev/sda3              5232640        24   5232616   1% /share
      tmpfs                    10240      2656      7584  26% /dev
      
  • パーティション3のタイプの変更
    fdiskで/dev/sda3のパーティションタイプを"b"(W95 FAT32)へ変更します。
    root@ubuntu:/# fdisk -lu  /dev/sda
    
    Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
    Units = セクタ数 of 1 * 512 = 512 bytes
    
    デバイス Boot      Start         End      Blocks   Id  System
    /dev/sda1               1      409639      204819+  ee  EFI GPT
    Partition 1 does not end on cylinder boundary.
    /dev/sda2          409640   189153319    94371840   af  不明
    Partition 2 does not end on cylinder boundary.
    /dev/sda3       189415464   199901223     5242880    b  W95 FAT32
    Partition 3 does not end on cylinder boundary.
    /dev/sda4   *   199901224   262815783    31457280    7  HPFS/NTFS
    Partition 4 does not end on cylinder boundary.
    
  • 念のためMBRのバックアップを取っておく
    root@ubuntu:/# dd if=/dev/sda of=/boot/MBR.bak bs=512 count=1 
    
  • MacOSXで起動
    • デスクトップアイコン「Untitled」を「SHARE」とリネームしておきましょう!!
  • Windows XPから起動
    • マイコンピュータを開いてローカルディスクが追加されていればOK

コメント欄 Edit

  • トリプルブートに関するページ -- 管理人? 2006-04-12 (水) 22:53:45
  • diskutil resizeVolume disk0s2 30G JHFS+ Users 40G JHFS+ Applications 60G "MS-DOS FAT32" winxp 30Gってリサイズしたんですが、Windowsをインストールできませんでした。どういう法則があるんでしょうか? -- ちく? 2006-04-12 (水) 12:53:51
    • WinXPは第4パーティションにインストールする必要があります。上の例では、第2を縮小して、第3、第4、第5を新規作成という意味ですから、WinXPは第5になってしまっています。 -- 管理人? 2006-04-12 (水) 21:13:15
  • diskutil resizeVolume disk0s2 30G JHFS+ Users 45G "MS-DOS FAT32" winxp 6G JHFS+ Applications 65Gって入力したらOKでした!どうもありがとうございました。さらに修正して、Windowsのユーザーパーティションを作るかどうか検討中です。管理人さんのようにコメントをインデントするにはどうしたらいんですか? -- ちく? 2006-04-13 (木) 23:04:43
  • 詳細はWikiのヘルプ参照。まぁ、こちらでやります。 -- 管理人? 2006-04-14 (金) 20:14:39
  • resizeVolumeについて質問ですが、現在、MacOSとWinXPがインストール済みで、MacOSのりサイズをしてLinuxをインストールしようと考えています。この際、resizeVolumeをしてインストール済みのMacOSとWinXPには影響はないのでしょうか? -- hiro? 2006-04-13 (木) 09:44:53
  • diskutil resizeVolume なんてのがあったとは orz -- raku? 2006-04-13 (木) 17:39:12
    • rakuさんの方式を使えば、拡張(or 論理)パーティションをFDISKで作成後、gptへマッピングするなんてこともできそうですね。P.S. 最新版partedを使えばセクタ単位で設定できるんだ。 -- 管理人? 2006-04-13 (木) 19:22:51
  • 第3パーティションを拡張にして、共有、Swap、Linuxをそこに入れてみたら、第4のWinXPが起動しなくなりました(hal.dllが無い、ってエラーで)。一度やってみただけで、その後詳しく検証していませんが。 -- raku? 2006-04-18 (火) 17:48:28
    • hal.dllの件は、たぶんこれかな! http://homepage2.nifty.com/winfaq/w2k/boot.html#1208 
      その他、WINXPはプライマリーからしかブートできない。拡張パーティションの後にプライマリーを作ってはいけない。というルールがあるので拡張パーティションを使う場合、XPは3番目に入れる必要があります。 -- 管理人? 2006-04-18 (火) 19:08:48
  • 操作ミスと思うのですが、外付けHDDのOSXのラベル(optionキーでブートした時)が”EFI boot"となってしまいました。起動は問題ないのですが、Linuxも同じラベル名なので気になります。labelfileの作成法が解りません。 -- 2006-05-08 (月) 12:06:22
  • 初めまして、質問したいのですがこの1行ではたりません(^_^;)どこかに掲示板などありませんでしょうか? -- ? 2006-05-22 (月) 23:30:06
  • Linuxbootを使わずに、Bootable CDからUbuntuをインストールできませんか? -- unagi? {2006-06-05 (月) 11:24:30};
  • 5.05上からアップデートして6.06にできました!ただし,BTキーボードが使えなくなりました。 -- Mako? {2006-06-30 (金) 13:42:56};
  • デュアルブート(データ専用領域もつくる)ということを目指してここに来ました。このWikiの共有領域の第三パーティションを,第五(一番最後)にまわして,第四にXPをインストールしました(第二はOSX用データ領域)。…が,第五がXP,OSX共にマウントされません。ディスクユーティリティでも消去・再フォーマットの際MS-DOSファイルシステムを選べません。この場合「共有領域の設定」セクションの操作で設定すべきなのでしょうか。もし必要なら,OSXのコマンドラインから可能でしょうか。長文すみません。 -- なかつ? 2006-12-01 (金) 13:29:31
    • 詳細説明は省略しますが、共有領域は第三パーティションでないとダメだったような気がします。 -- 管理人? 2006-12-01 (金) 19:13:32

#comment


添付ファイル: filelinuxboot.jpg 425件 [詳細] filepart01.jpg 417件 [詳細] fileboot.jpg 416件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-12 (土) 00:31:40 (6194d)