SSブログ

日経Linuxのばーかばーか(grubの再導入) [Linux]

相当、頭に来ている。技術系雑誌に嘘が書いてあった。もうさすがにビギナーじゃないが、やり付けない事をやり付けないコマンドでしようとすると、原本が間違っているのを否定しにくい。それも日経と名がついてるんだから、まともな事が書いてあると思うでしょう,ふつう。

まぁほとんど丸ごと1ページ間違えてるから、正誤表を書いておきます。
意味を考えれば、間違いは明らかなんだけど、ビギナーにはググっても数時間では解決できないかも。
間違ったことを載せていたのは、日経Linux 2012年10月号。74ページ。日本語自体の間違いはないので、詳しく知りたい人は下のリンクで買ってください。今後のたしにもなりますので。


日経 Linux (リナックス) 2012年 10月号 [雑誌]

日経 Linux (リナックス) 2012年 10月号 [雑誌]

  • 作者:
  • 出版社/メーカー: 日経BP社
  • 発売日: 2012/09/07
  • メディア: 雑誌



Webには正誤表すらない体たらく。わりと買って読んでる雑誌だが、誤植を越えて論理的な間違いで落胆。文字間違えたら分かるけど、一瞬見て間違いだと気づく人は少ない。そもそも、分かる人は読まないし、分かる人ばかりだったら、このソフトウェア業界からもっとバグが少なくなって良いはずだ。


これから、一応分かったところを書きます。大抵は、それで用を成すが、実はそれでも不十分だったりするけど、それはのちのち越えなくちゃいけないことではある。その部分も後で述べます。


 
LinuxとWindowsのデュアルブートにしているマシンで、HDDのMBRをおかしくしてしまったら、なかなか面倒である。日経LinuxではそこをUbuntuで解決する例を挙げていた。でも、説明はあっていても、コマンドのとり違いをしていて、そのままやったんじゃコマンド入力時にエラーになったりするだけであった。

自分は最近デュアルブートのマシンのMBRをおかしくしていて、Windows XPのfixmbrでとりあえずXPのみは立ち上がるようにしておいた。いつもならLinuxをさっくりインストールし直して、MBRを復活させていた。だけど、珍しいことに、Ubuntu上で開発を行っていたソースが存在していて、一応Ubuntuを環境ごと残しておきたかった。

そんなわけで、GRUB入れ直さんとなぁとは思っていたけど、ググって解決する時間もなく、とりあえず放置状態になっていた。それで日経Linux 10月号に、必要なそのまんまの記事が載っていたので、ありがたく使おうと思ってホクホクしていた。でも、ダメだったという話。



そんな前提ですが、まずどういう解決方法なのかを書いておきます。UbuntuのライブCDでブートして、そこのgrub-installというツールで、MBRにGRUBを修復するというのが骨子。その時に、chrootを使って、擬似的な/をブートしたCDでなく、修復したいHDDに差し向けてあげるという作業です。


コマンドの正誤表です(表じゃないけど)。


誤(元々書いてあったもの)

$ sudo fdisk -l /mnt/sda
$ sudo mkdir /mnt/sda
$ sudo mount /dev/sda5 /mnt/sda
$ sudo chroot --bind /dev /mnt/sda/dev
$ sudo chroot --bind /proc /mnt/sda/proc
$ sudo chroot /mnt/sda
$ sudo grub-install /dev/sda


正(実際に動くコマンド)

$ sudo fdisk -l /dev/sda
$ sudo mkdir /mnt/sda
$ sudo mount /dev/sda5 /mnt/sda
$ sudo mount --bind /dev /mnt/sda/dev
$ sudo mount --bind /proc /mnt/sda/proc
$ sudo chroot /mnt/sda
# grub-install /dev/sda


間違いのポイントは、fdiskの指定ディレクトリの間違いと、chrootがmountと誤用されていることと、chroot後はsudoする必要がないこと。

fdiskは単にディレクトリを間違えて書いてあるだけ。ケアレスミスだからコレくらいはすぐに気づく。
それと、そもそもchrootに--bind というパラメータは用意されていない。mountはブロックファイルのマウントしか念頭になかったから、ちょっとはまった。ググってもDNSサーバか何かのBindばっかり出てきて困った。それにmountなんてコマンド打ったのここ数年なかっただろうし、英語のman読むのってわりと時間がかかる。

そういや、全部sudoなんだから、sudo suとかすればもっと楽だよな、とか思ったりもする。


恐らく、実際に打ったコマンドをコピペせずに、自分の認識だけで書いてしまったのだろう。恐らくは、出版のためのソフトがWindowsで、一応、実機での検証はしたのだろうけど、LinuxからWindowsに文字列を愚直に送らなかったため、こんな大失態を犯したのだろう。人間がミスをするから、コンピュータで管理しているところもあるのに、それを扱えないなんてコンピュータ雑誌の記者として恥ずかしいったらありゃしない。自分ができる人間だと過信している人ほど愚かな結果を呼ぶという良い見本だと思う。大抵は書いた人の名前が書かれているのだが、編集者内部の執筆らしく、名前は出てなかった。そこいらは名前出さないで良かったね〜と思うが、自分の責任で記事を書いてないから、こんな凡ミスを立て続けに書くはめになるのだ。


こんなにつまらないことではまるなら、元から本を買わずにWebで情報を得たほうが良かった気もする。Webなら少しは警戒して、それなりに情報を吟味するから逆に間違いが少ない。そこいらの体系だった確実な情報がと楽に得られるから、本や雑誌を買っているのに、こんなチョンボをされたのでは値段の価値もない。日経も落ちたものだ。今度から立ち読みして、トピックを知ってググる事にしようかな、安くないし。



実は、まだ問題があって、これをやったらWindowsがGrubでブートしなくなった。Ubuntu 10, 11はきちんとGrubで立ち上がるけど、Ubuntu 12.04 LTSのgrub-installではそうらしく、古い10.x(詳しくは忘れた)のgrub-installだと、Windowsはブートして、Ubuntu 10.xも立ち上がる。でも11.xは立ち上がらなくなる。11だと10はダメでWindowsはOK。Ubuntu 10, 11, 12で全部違う結果が出るのだ。一応、GRUBの画面ではいづれも選択肢は出るのだが、動かないOSがどうしても出てきてしまう。

実はデュアルブートと今まで言っていたが、実はUbuntuの11.xと10.xとWindows XPのトリプルブート構成になっていたのでした。嘘をつくつもりはなかったのだが、トリプルブートと言ってしまうと話がややこしくなるので、今までデュアルと言っていた。まぁ問題の把握からは、二つでも三つでも同じなので一般的な構成で言った。

どちらにしても、Ubuntuのバージョンによって、grub-installが異なっているらしく、全部いっぺんに正常なブートができるGRUBがMBRに生成できないみたいです。困ったものだ。動く設定をマージしてGRUBを手で書き換えようかなとも思っている。でも、面倒だ。GPGPUをやっていたので、仮想サーバでお気楽にプログラミングできないから、こういうことになっているのでした。CPUみたいに仮想化機能をGPUにも付ける動きがあるみたいだけど、結局どうなるのかはよくわからない。


まぁ、暇になったらやることにして、しばらく放置でいいや(やらないな、こりゃ)。

nice!(0)  コメント(1) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 1

miff

一応、解決編。
http://miff.blog.so-net.ne.jp/2012-10-11-1
この状態から、あるツールを使うだけなんだけど。
by miff (2012-10-14 00:20) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。