ノートPCをWindowsとSolarisのデュアルブートにしたときの話。

 もともと一瞬だけbloggerのほうに書いたけど、やっぱり技術系っぽい話とそのほかの話を分離したくてこっちに移しました。たいしたこと書けないけどね!
閑話休題。表題の通り、普段持ち歩いているノートPC(富士通 LIFEBOOK PH74/CN FMVP74CN58)を、Windows10とSolaris 11.3のデュアルブートにしました。なぜSolarisなのかってのはおいおいそのうちどこかで書くとして。
だいたい手順は普通にUbuntuとかをデュアルブートにするのと変わらないんだけど、ちょっとハマったり気になったりしたところを中心にざらざらと列記。

 

・Windowsを入れてからSolarisを入れる

 Windowsが排他的なのは今に始まったことではないので言うまでもなし。Solarisを入れてからWindowsをインストールすると、GRUBもWindows Boot Managerも起動せずにスーッとWindowsがブートされ、そもそもSolarisをブートする術がなくなる。

 


・SolarisでGRUBをいじるときに触るのは/etc/default/grubではない

 今回一番ハマったところ。というか9割がたこれ。というかほぼ100%。この名前でエントリ書けばよかったと書き始めてから思った。
そもそもSolarisでは、bootadmというコマンドを用いてGRUBを管理します。公式のマニュアルはこちら。このとおり、boot.cfgやら/etc/default/grubやらを編集せずともコンソールからGRUBを管理できるので、複数のマシンにいろいろ設定したい時はシェルでも書いてバーッと流せばお手軽、というわけです(たぶん)。
というわけで、試しに現状の設定を調べてみましょう。

root@rachmaninov:~# bootadm list-menu
the location of the boot loader configuration files is: /rpool/boot/grub
default 0
console graphics
timeout 30
0 Oracle Solaris 11.3
1 Windows
2 Windows
 なるほど便利っぽい。というわけで、もちろん公式のドキュメントの記述に則って、デフォルトのブートOSをWindows(先の出力での1番)に変更したいと思います。

root@rachmaninov:~# bootadm set-menu default=1
Traceback (most recent call last):   File "/usr/lib/python2.7/vendor-packages/bootadm-helper.py", line 908, in bootadm_set_menu
return retval   File "/usr/lib/python2.7/vendor-packages/bootadm-helper.py", line 799, in _bootadm_activate_default
return BAM_ERROR AttributeError: 'ChainDiskBootInstance' object has no attribute 'bootfs'
bootadm: Exception raised from the python interpreter
 なんでや。
とりあえず、どうやらbootadmがpythonで記述されていて、そいつがエラーを吐いているということは、私の貧弱な英語力でもなんとなくわかります。仕方ない、おとなしくGRUBの設定ファイルをいじろう。
しかしながら、そもそも私の環境(Oracle公式ページに置いてあるOracle Solaris 11.3 Live MediaからインストールしたOracle Solaris 11.3 X86)では、/etc/default/以下にgrubなんていうディレクトリもファイルもありませんでした。しゃーないからgrub.cfgを直接編集したろと思って/boot/grub/以下を探してみたものの、こちらにはLive CDと同じ内容のgrub.cfgが置いてあるばかりで、起動時に表示される内容とはmenuentryの内容が異なります。どうにもおっかしぃなぁと思ったのですが、よく見たら一番最初にたたいたコマンドの出力に答えが書いてあるんですよね。

root@rachmaninov:~# bootadm list-menu
the location of the boot loader configuration files is: /rpool/boot/grub
default 0
console graphics
timeout 30
0 Oracle Solaris 11.3
1 Windows
2 Windows
 はい。というわけで、どうやらそもそも/etc/default/も、/boot/grub/すらも関係ないっぽいです。出力にある/rpool/boot/grubというディレクトリにgrub.cfgというファイルを発見したので開いてみると、見慣れたgrub.cfgの書式で、起動時に表示されたmenuentryがしっかり記述されています。てなわけで、こいつをroot権限で開いて直接編集(set default=”1″、set timeout=”10″、あとmenuentryの名前をちょっといじった)し、一応と思ってbootadm update-archiveコマンドを実行してから、あとは野となれ山となれとばかりにrebootをかけます。
結果としては成功し、OSブート前に表示されるGRUBにはしっかりとgrub.cfgへの変更が適用されてました。
よかったー、なんとかなったー、と思いながら、再起動したSolarisのbootadmでステータスを確認すると、何も変更されていませんでした。
まあ、ちょっと怖いけど、実際に更新は適用されてるし、ひとまずこれでいいかな、って。

 というわけで、めでたく私のモバイルノートPCはWindows10とSolaris 11.3のデュアルブートになりました。
が、しかし、SolarisにはWPA2-Enterpriseのサプリカントがないというか、IEEE802.X/EAPなんちゃらな認証方式に対応していない感じでして、dladmコマンドを使ってもつなげそうにありませんでした。
そのうえ、WindowsのほうはWindowsでWindows Updateに何回も失敗するようになってしまったので、いっそのこととばかりにWindowsを再インストール、SolarisはVirtualBoxで仮想化することにしました。これでSolarisでもWPA2-Enterpriseな無線LANでインターネット接続ができるようになったよ! やったね!!
で、今抱えてる問題をとりあえずメモ代わりに列挙しておきます↓
  • boostのビルドがこけるっぽい(Solaris Studioでゎなぃ)
  • gemを使ったインストールがこける(コンパイラがどうの)
  • Juman++のビルドもこける
 さーて問題は山積みである。

コメントを残す