ドライブを別々にしてデュアルブートする

先日、新しいマシンを買いました。主な目的は、開発中(残念ながらクローズド)のdm-lcを追い込むことですが、GPGPUもしたいしゲームもしたいのでGTX660を積んでいます。Linuxをメインで使いたいがWindowsも使いたい。そんなおれの願いを叶えてくれ!!神龍!!!

第一感はデュアルブートですが、デュアルブートでなくても、Linux上の仮想マシンにWindowsを入れるなど、色々な方法があり得ます。それぞれのトレードオフを検討し、自分の持っている資産や用途に合うものを検討しました。結果、

  • LinuxとWindowsは別々のドライブに入れる。
  • ブートローダはGRUB2を使う。GRUB2からWindowsをチェインロードする。

というのが手頃で、環境としてもクリーンかなと思いました。ごちゃごちゃといじった環境はなんとも気持ち悪いものです。特にLinuxとWindowsのデュアルブートは、色々ときな臭いことも起こり得ます。ここではMBR/GPTの違いが紹介されています。そして、嵌ったということも書いてあります。意外にきな臭いものです。カーネルや計算機に十分詳しい人が時系列的に、綿密に調査したあとですら嵌っているという事実。ここで攻めるのは、度胸が入ります。 もちろん 、実現可能であることも分かりました。同じディスクの上にパーティションを切って必死こくくらいなら、ドライブを一台追加してそれぞれにOSを入れるのが良いかと思います。オススメです。検討内容は、書くと長くなるしごちゃごちゃするので省略します。

2点だけ、嵌った点について紹介します。

まず1点目は、Windows 8 Proのインストールをする時は、インストール先のドライブ以外は(DVDドライブはつけててもいいですが)外しましょう。でないと、インストール出来ません (参考)。

2点目、/etc/grub.d/40_customに書く内容です。ここに、GRUB Legacyでのやり方が書いてあります。このうち、mapとchainloaderって何?というのが気になるところです。

mapは、disk swappingという定型トリックです (参考)。2行セットで使われます。なぜそんなことが必要かというと、ここに書いてあるように、「Windowsは本来プライマリマスターのMBRにWindowsのブートローダー以外をインストールすると起動できません」からです。このテクニックは常套であるため、GRUB2では、drivemap -s (sはswapの意味かとおもわれ)で提供されています (参考)。ちなみにおれは、”map”という単語が定義も曖昧に使われていることがすごく嫌いです。mmap、device-mapper、map f xs、std::map、google map、何でもmapです。人類アホなん?

chainloaderは、これも定型文だと思いましょう。Linux以外のブートローダをキックするためのお作法です。設定が間違っていれば全くロード出来ないはずですから、動けば良いというくらいで割り切ります。

動作確認済の設定ファイルが以下です。

akira@Lyle> cat /etc/grub.d/40_custom                                   ~
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries。 Simply type the
# menu entries you want to add after this comment。 Be careful not to change
# the 'exec tail' line above。

menuentry "Windows" {
set root=(hd1,1)
drivemap -s hd0 hd1
chainloader +1
}

最後に、Windows 8 Proを使ってた感想。激しく後悔しました。マシンを買う時に、5000円追加して8 Proにしました。理由は、Client Hyper-Vを試してみたいと思ったからです。これは、8 Proでなければ使えません。でもふつうに7 Proにしておくべきだった。なぜか?UIが糞です。使いづらい。重い!イライラする!もともと、Windowsは使い方が直感的でないし、良くわかんねーなでしたが、さらに良く分からなくなりました。これってどういう人が得するんですかね。分かりやすいUIを作る技術が軒並みAppleにパテントされていて分かりづらいUIしか作ることが出来ないのでしょうか。


このエントリーをはてなブックマークに追加

See also