Category: Windows

Hybrid MBR を GPT / MBR ディスクに変換する。


みむらです。

普通、GPT ディスクを MBR ディスクに直したりっていうのは、
ディスクの内容飛ばせーとか言われるんですが、面倒くさいのでいいのないかなーと探していたらありました。

ってことで、この先は Linux + CUI の世界ですが、

もしGUI で Windows で完結させたい人は、たぶん
窓の杜 – 【NEWS】米Paragon、BIOS-MBRからUEFI-GPTへWindows環境を移行できる「Migrate to UEFI」

この辺使うと幸せになれるんじゃないでしょうか。使ったことないので、保証はできません・・。

 

説明に入る前に Hybrid MBR とはなんぞやということですが、

簡単に言うと、本来 GPT ディスクは MBR の部分に、
「よくわからないけど、ディスクの全ては使われてるよ!」 という情報を書いて、
GPTの部分に本来のデータを書き込んでおきます。

ですが、GPT わけわからんなシステムの場合、これだと非常にまずいわけで、
そこで、MBR 領域に「ここからここまでが、起動領域、あとはしらん!」 みたいに有効な情報を書いておき、
いい感じにしてしまおうというものです。

ただ、GPT と MBR でデータの整合性がちゃんととれるのかというところで問題があり、
あんまりやらない方がいいのですが、古いシステムで使う場合や、 Mac で Windows を動かす場合に必要な用です。

 

で、この記事でやろうとしていることは、
どっちか一つにしよう! ということで、 GPT か MBR に一本化してしまおうと言うことです。

もちろん、後述する gdisk コマンドを使えば、相互にこれらを行き来できますが、
この記事の内容もそうですが、この操作によって、データを失っても私は責任を持てません。

やるのであれば、必ずバックアップを取った上で行ってください。


使うのは 「 gdisk 」というソフトウェアです。
往年の fdisk コマンドの GPT 版ととらえて、問題無いと思います。

(作業機は Linux Mint 12 を想定していますが、 Ubuntu でも動作すると思われます。)
(Fedora, CentOS などの Redhat 系は、適宜読み替えて頂ければ、問題ないかと思われます。)

 

1.gdisk をインストール。

$sudo aptitude install gdisk

追記:
debian であれば、 backports に転がっているようです。 ( ほっそーさんありがとうございます! )
(確認環境: debian squeeze)

 

2.gdisk を起動する。

この際、 /dev/ 以下のどのデバイスファイルが操作したい対象のディスクを指しているか
知っておく必要があります。

少し触れておきますと、
大抵が sd? というように、先頭2文字が sd で始まるファイルが割り当てられていることが多く、
1番目の接続が sda, 2番目が sdb というように名前が振られています。

また、IDE 接続の場合は、 sd ではなく hd となり、 hda, hdb となっている可能性があります。
(ただ、IDE 接続でも sd で始まる場合が多いようです。前は見かけたのですがやはり libata の関係ですかね。

その他、ソフトウェア RAID

マザーボード上で提供されている RAID や、
Windows の場合は、コンピュータの管理から設定できる RAID など、
RAID コントローラを経由せずに、ソフトウェアで提供されている RAID

を使っている場合、
/dev/mapper/ 以下にいい感じでデバイスファイルが用意されている場合があります。
その場合は、そのファイルを使用してください。

・・・よくわからない場合や、
実際に RAID を使っていてよくわからない人は、ここから先は特に自己責任でお願いします。

 

例: /dev/sda が対象のHDD の場合。

$ sudo gdisk /dev/sda

なお、この先の記述は 対象HDD が /dev/sda である場合を想定しています。
適宜対象環境に併せて、読み替えてください。

Hybrid MBR から GPT にする場合は 3.1 
Hybrid MBR から MBR にする場合は 3.2
単なるMBR ディスクから GPT にする場合は 3.3
にそれぞれ記述しましたので、ご参照ください。

(純粋な GPT ディスク から MBR ディスクにする場合も、 3.2 で紹介する方法が使えます。)

 


3.1 Hybrid MBR から GPT ディスクにする。

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Command (? for help): q

GPT が present になっていることを確認し、 q を打ち、いったん閉じる。

$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1

このようにコマンドを打ち(数値は小さくするのはいいですが、大きくするのはNG) MBR を消す。

$ sudo gdisk /dev/sda

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with corrupt MBR; using GPT and will write new
protective MBR on save.

MBR が not present となり、削除されたことがわかる。

Command (? for help): w

w を打って Enter

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): Y

Y を打って Enter

あとは再起動すれば完了となります。

 


3.2 Hybrid MBR から MBR にする。

2 にて起動した状態のまま、

Command (? for help): r

r を打って Enter

Recovery/transformation command (? for help): g
Sorted GPT partitions and their current conversion status:
                                      Can Be
Number    Boot    Size       Status   Logical   Code   GPT Name
(なにかでる)

g を打って Enter

Type partition to change, 0 to accept, -1 to abort: 0

Converted 3 partitions. Finalize and exit? (Y/N): Y
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

数字の 0 を打って Enter,  そして 次で Y と打つことで、変換が完了し、
再起動すると適用されます。

 


3.3 MBR から GPT への変換。

MBR から GPT への変換は危険なにおいがするのですが、うーむ。

というのも、
GPT 形式のディスクは MBR 領域(ディスク先頭)と GPT 領域(ディスク末端)の両方を持っていますが、
MBR 形式のディスクは MBR 領域しか持っていないため、どうするのだろう。と。
末端のデータが壊れないのかなぁ、と心配だったりします。

$ sudo gdisk /dev/sda

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present

MBR : MBR only となっていることから、 MBR ディスクであることがわかる。

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): Y
OK; writing new GUID partition table (GPT).
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

w を押して Enter, Y を押して Enter

これで GPT ディスクに変換されます。

小学生にも情報教育をば。


どうもみむらです。

いきなり質問ですが、下記の2つの文章の共通点をあげてください。

A.里の秋。

静かな静かな 里の秋
お背戸に木の実の 落ちる夜は
ああ 母さんとただ二人
栗の実 煮てます いろりばた

B.静かな湖畔

静かな湖畔の 森のかげから
もう起きちゃいかがと カッコが鳴く
カッコ カッコ
カッコ カッコ カッコ

 

はい、もうわかりましたよね。

こたえは、誰しもがわかるあれです。

Continue reading »

Console Twitter を公開しました。


image

ておくれてない、まだ、まだだっ!!
ということでみむらです。

先日の OAuth の記事 を書いた後、やっぱりクライアントを作りましょうということで。

ttytter っぽいものを意識しましたが、自分が使いやすいように作ってみました。

 

Microsoft .NET Framework 3.5 がある環境であれば実行可能です。
(Windows 7 では標準搭載)

 

http://mimumimu.net/software/#ConsoleTwitter
上記URL よりダウンロード可能です。

 

ただつぶやくだけではなく、下記のコマンドを使うことで様々な操作も可能です。

/repリプライ一覧を表示
/rep (番号) (ツイート)リプライを送ります。

ex) /rep 01 ておくれてない!
/favお気に入りに登録したツイートを表示します。
/fav (番号)お気に入りに登録します。
/unfav (番号)お気に入りを解除します。
/rt (番号)リツイートします。
/find (テキスト)指定したテキストで Twitter 上のツイートを検索して表示します。

 

コンソールで表示されて、全部がキーで行うということで、
シンプルでかつ、操作も覚えやすいのでは無いでしょうか。

 

ということで、よろしくお願いします-。


追記:ソースコード公開しました。

https://github.com/mimura1133/Console-Twitter

NuGet で簡単にパッケージを導入する。


案外知られていない気がする。

Ruby や Python では、パッケージを簡単にインストールして利用する方法があって、

Ruby では gem
Python では easy_install

がこれに該当しますかね。

 

.NET にも NuGet という同様の仕掛けが存在し、
利用することが出来ます。

.NET開発の新標準「NuGet」入門(前編) - @IT
詳細な解説についてはここのあたりを見ておくと良いかと思います。

 

注:対象は Visual Studio 2010 以降の Visual Studio に限ります。


分からない人向け:

たとえば、今から Twitter の機能を利用したソフトウェアを作ろうとあなたが思ったとき、
以下の選択肢から一つ選ぶことになると思います。

1.自分で OAuth の認証書いて、アクセスするライブラリを作る。
2.インターネットから既存のライブラリをとってくる。

現代においては、教育目的を除いて 1 を選ぶことは殆ど無いかと思います。
(気に入る形に出来ない場合や、そもそも無い場合は作ることにはなりますが。)

 

となると、現実的な回答としては、2となりますが、
インターネットから探してきて、インストールして・・っていうのは面倒で、
カタカタっと名前を打ったりして、簡単にインストール出来た方がいいわけです。

インストーラが面倒くさいということも考えられるでしょうし、
そもそも、インストーラが無くて、自分で組み込まなければならない場合は面倒になりますし、
友人に教えながら作業するという場合や、雑誌にやり方を載せる場合などにおいては、
友人や読者にファイルのありかを教えなければなりませんし、
複数台に組み込む時なども・・・・ とまぁ、非常にナンセンスな訳です。

 

そんなわけで、 Python の easy_install や Ruby の gem
そして、この記事で触れる .NET の NuGet などのパッケージ管理ソフトウェアを用いることにより、
単純明快でかつ高速に、ライブラリを用意して使い始めることが出来ます。

また、ライブラリに更新があった場合、手動で入れた場合はまたインストールをしなければなりませんが、
大抵こういうパッケージ管理ソフトでは、アップデートも簡単に行える仕様が備わっています。

 

という感じで、長文になりましたが、
導入~更新 まで、ライブラリの利用に関するあらゆることを簡単に使えるようにした物。
それが、パッケージ管理ソフトウェア ということになります。


というわけで本題。

 

1.導入

http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
上記URL より、 Download をクリックしてダウンロード、インストーラを起動します。

 

image

上のような画面が出ますので、インストールをクリックし、導入を完了させます。

 

2.開発を始める。

image

いつものように、ソリューションを開きます。

 

3.パッケージを導入する。

image

メニューバーの 「ツール」 → 「Library Package Manager」 → 「Package Manager Console」 をクリックします。

image

コンソールが立ち上がった。

 

今回は例として、

http://www.twitterizer.net/
上記URL にて公開している、「Twitterizer」を導入してみます。

 

image

Install-Package twitterizer

と打って、Enter で実行。

 

image

自動的に依存関係が解決された状態で、参照にライブラリが加わり、使えるようになる。

 

3.コード書いて動かす。

 

image

 

とりあえずこんな感じ。

 


というわけで、適当に超基本的なコマンドだけ、対応表にするとこんな感じなのかなぁ。

コマンド

NuGet

gem

easy_install

hoge をインストールInstall-Package hogegem install hogeeasy_install hoge
hoge を更新Update-Package hogegem update hogeeasy_install –U hoge
全部更新Update-Packagegem updateeasy_install –U
hoge を削除Uninstall-Package hogegem uninstall hoge 

NuGet のコマンドについては、

http://www.atmarkit.co.jp/fdotnet/chushin/nuget_01/nuget_01_02.html
上記URL に大体まとまっているかと思います。

 

そんな感じで。であであ。

IronRuby で gem


案外知られていなさそうなのでメモメモ。

image

コマンドプロンプトを管理者権限で起動。

 

(IronRuby の bin ディレクトリにパスを通していない方は、

32bit : [ cd %ProgramFiles%\IronRuby*\bin ]
64bit : [ cd %ProgramFiles(x86)%\IronRuby*\bin ]

上記のコマンドでインストールされたディレクトリ以下の bin ディレクトリにあらかじめ移動しておきます。

 

igem コマンド

image

ということで、 gem と同等の機能については、
igem コマンド で実行可能です。

また、インストールされたパッケージについては、
バッチファイルが作成され、直接呼び出せるようになります。

 

ではでは。