こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linux上からWindowsのパーティションを参照する方法

Linux上からWindowsのパーティションを参照する方法

Linuxを勉強中です。LinuxとWindowsをデュアルブート環境で使おうと思っています。
160GのハードディスクをパーティショニングしてLinuxからWindowsのHDを参照したいのですが、
マウントされているディレクトリ(/dev/hda2)にファイルもフォルダも表示されません。
マウントはLinux起動時に一応されているようで、fdiskコマンドでは表示されています。
WindowsのファイルシステムはNTFSです。LinuxはUbuntuです。
NTFSファイルシステムを参照できるように何か入れないといけないでしょうか?
そもそもマウントがちゃんとされていないのでしょうか?
教えてください。どうぞよろしくおねがいします。

上記の情報だけだと分からない場合は補足も書きますのでご指摘頂ければと思います。

投稿日時 - 2010-08-27 08:56:45

QNo.6138732

困ってます

質問者が選んだベストアンサー

> ただHDD自体にのっているWindowsは起動するのが不思議なところです
> パーティションテーブルが直ればうまくいきそうな気がします
環境が全く記載されていないため、上記の記載されていることが当方には理解できません。
パソコンのメーカー、型番が不明なため、Windowsの何が入っているのか不明。

160GBのHDDは、内蔵HDDのことを言われているのか、その他に、内蔵HDD、外付けUSB接続HDD等も接続されているのか、fdisk -lでどのような内容が出力されたのか不明。

基本的には、内蔵HDDのトップに、パーティションとは独立した部分にMBRというものがあり、
その中に4エントリ分のパーティション情報が入っています。
これがしっかりしていないと、Windows(?)は起動しません。

よって、デュアルブートといわれているものが、Ubuntuが自動で作成した、
GRUBブートローダなのか、あるいは、Windows(?)とUbuntuとは、
別なHDDにインストールされていて、独立したMBRをそれぞれ持って起動しているのか、
こうした情報を補足されると正しい指示も出せると思いますけど。

投稿日時 - 2010-08-31 11:40:58

お礼

お返事が大変遅くなってしまい申し訳ありませんでした。

再度windowsを再インストールし直して、パーティションを切り
Linuxを入れ直したところうまく見えるようになりました。

いろいろ調べてみましたが、やはりパーティションテーブルが壊れていたのが
原因だったようでパーティションを切り直してみたところ
あれだけ何をやってもダメだったコマンドも正常に入って問題なく動きました。

いろいろとアドバイスを頂いたのにお礼が遅くなってしまいましたが
今回の質問でとても勉強になりました。
どうもありがとうございました。

投稿日時 - 2010-09-13 19:05:48

ANo.4

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

Microsoftは技術者以外の人にはコンピューターの仕組みを隠蔽する傾向が強く
あたりまえのパーティション管理のルールが
Windowsユーザーには浸透していない場合がありますね。

もう一つのパーティションの正体はパーティションIDで判断できる場合があります。


Linuxの場合、パーティション情報はfdisk -l /dev/sdaといったカタチで
スクリプト処理もできる自動終了する形式で参照することもできます。
で、/dev/sdaを見ると、Windowsとのデュアルブートなら
最小限で二つのパーティション。
一般的には仮想記憶を専用パーティションとするLinuxでは
標準として一つのswapパーティションが作られ…合わせて三つになります。

ただ、この段階で、たぶんUbuntuはIBM PC/AT規格における
基本パーティションを浪費することを避けるためか…理由は知りませんが…
拡張パーティションを作成し、その中の論理パーティションとしてswapを作ります。
そのため…
たとえば、典型的な自動インストールしたUbuntu環境では/dev/sda内は
sda1,sda2,sda5の三つになり、sda2はマウント不可のデバイスとなります。
(sda2が拡張領域全体を意味します)

Windowsとのデュアルブートならsda1,sda2,sda3,sda5になりそうな気がします。
sda3が(略)


これ以外に、リカバリー領域を持つWindowsプリインストールPCの場合
リカバリー領域として、もう一つのパーティションがあったりします。
Dellの一部モデルではハードウェア自己診断ツールのパーティションがあったり…

こういったものは、Windowsの仕様上、ドライブとして認識されないよう
特別なパーティションIDが与えられ、書き換えや破壊を防いでいます。
ただ、これLinuxとかからだと、単なるFAT32やNTFSとして扱えたりします。

リカバリーシステムのお勉強のために見るのは勝手ですが
リカバリー不能になると困るという人もいるかと思います。
読み書き可でマウントしないことをお薦めします。


コンピューター自体の管理には、OSの管理より下に
コンピューターの仕様に関わるパーティションがあったりもしますから
状況によっては、パーティション(ファイルシステム)のラベルを参照しましょう。

FAT系はたぶんmtoolsのmlabel,NTFSはntfslabel
ext2,ext3,ext4はe2labelで参照と変更ができると思います。
(うちはWindows飼っていないので検証したこと無い)

Linuxでのパーティションのマウントには、ラベルや
ファイルシステム作成時に生成されるUUIDを指定することもできます。

HDDをとっかえひっかえするようなgeekな状況では
UUIDを使った/etc/fstab記述が合理的な場合があります。

LABELは任意に変更可能、同じLABELのfsが複数ある状況もおきる。
(故障したPCのHDDを持ってきてメンテする時とかがありがち)
UUIDは通常uniqで任意の変更は不可。
ただしddなどでの複製ではLABELもUUIDも複製される。

そういった点に注意して運用すれば、HDDの接続端子や認識順に関わらず
常に、同じパーティションを同じ場所にマウントできるので便利。
USBメモリーやUSB-HDDを複数使い分ける際に合理的なはずです。

投稿日時 - 2010-08-28 00:10:30

お礼

回答ありがとうございました。
そして返信が遅くなってしまい申し訳ありません。

様々な情報ありがとうございます。
正直初心者の自分にとって今回の回答はとても難しくて少しずつ理解できるように
努力しております。

自分なりに調べたところHDDのパーティションテーブルが壊れているのが原因の一つのようです。
上記の問題が直ったらアドバイス頂いた情報でさらに解決できるような気がします。

それにしてもHDDのパーティショニングはとても複雑なのですね^^;
今回の問題で初めて実感しました。
どうもありがとうございました。

投稿日時 - 2010-08-31 10:53:51

ANo.2

> NTFSファイルシステムを参照できるように何か入れないといけないでしょうか?
基本的なLinux(Ubuntuも同じ)での操作を記載いたします。
常にNTFSフォマットされたパーティションを参照したい場合は、下記のことを行っておきます。
/etc/fstabの最後に次のようなエントリを作成しておいてください。
/dev/hda2は、windowsのパーティションとする。
/dev/hda2 /media/hda2 ntfs defaults 0 0
を、/etc/fstabの最後に追加する。
cd /media
mkdir hda2
mount /media/hda2
とやれば、マウントされ、
cd /media/hda2
として、
ls -al
で、C:\直下のディレクトリとファイルが参照できます。
次回の再起動からは、自由に、参照できます。
ただし、上の全ての操作は、root権限で行うものとします。
root権限を得るためには、
sudo su -
コマンドを実行し、ログインパスワードを入れるものとします。

なお、老婆心ながら、付記しますと、
/dev/hda2 /media/hda2 ntfs defaults 0 0
の第3パラメータをntfsをntfs-3gとすると、読み書きできるようになりますが、
破壊することもできるためお勧めしません。
もう一つ、Windowsを休止状態で終了した状態の場合、少し面倒な操作が必要となる場合もあります。
これも解除する方法はありますが、高度な知識がない場合はお勧めしません。

投稿日時 - 2010-08-27 15:25:00

お礼

回答ありがとうございます。

返信が遅くなってしまい申し訳ありません。
自分なりにしらべてみたのですが、どうやらHDDのパーティションテーブルが壊れているのが
そもそもの原因のようです。
Ubuntu上でfdisk -lをしてもたしかにパーティションテーブルが無いとでます。

HDDを外して外付けで別のPCから接続してみたところ、WindowsのOS上からもWindowsの領域がみえていませんでした。(パーティションテーブルが無いため「ディスクはフォーマットされていません。今すぐフォ-マットしますか」とでます)
ただHDD自体にのっているWindowsは起動するのが不思議なところです^^;

パーティションテーブルが直ればうまくいきそうな気がします><

fstabの追記の情報ありがとうございました。
マウントがうまくいったらそちらの追記もやってみます。
ntfs-3gだと書き込みもできるためリスクもあるのですね。知りませんでした。
正常に使えるようになるまでは控えようと思います。
ありがとうございました。

投稿日時 - 2010-08-31 10:46:17

ANo.1

質問者さんの状況では、まだ、まったくマウントされていない状況です。
Unix系OSにおける「マウント」のしくみを誤解されているようです。

fdisk は、HDをどういう区分けにするかを管理します。
同じHDDをパーティショニングしているのなら、
Linux 側でパーティション管理ツールである fdisk を使えば、
Windowsの区画が見えることになりますが、それは
「区画がある」ことを確認しているだけで、まだマウントはしていないので、
その区画内にあるファイルをアクセスすることはできません。

/dev/hda2 は、「デバイスファイル」と呼ばれるもので、
「区画を示す」ための特殊なファイルであり、通常のファイルアクセスはできません。
マウント時にどの区画をマウントしたいのか指示するための「名前」として使います。
そして、マウント操作を行うことで、やっとその区画内のファイルにアクセスできるようになります。

マウント操作は、下記のような手順になります。
---
sudo mkdir /media/windows
sudo mount -t ntfs /dev/hda2 /media/windows
---
これによって、デバイスファイル/dev/hda2 で示される区画内のファイルを、/media/windows フォルダでアクセスできるようになります。
(mkdir は、最初の一回だけでいいです。また、fstab にマウント情報を記述することで、起動時に自動
的にマウントするようにできます。)

投稿日時 - 2010-08-27 09:40:46

お礼

回答ありがとうございます><

>fdisk は、HDをどういう区分けにするかを管理します。
>「区画がある」ことを確認しているだけで、まだマウントはしていないので、
>その区画内にあるファイルをアクセスすることはできません。

fdiskコマンドも誤解していたようです。ありがとうございます。
デバイスファイル自体にアクセスしようとしていた為、何もでなかったのですね。
教えて頂いた通り、マウントポイントを作って以下のようにマウントしてみました。

$su
$***
$mkdir /media/windows
$mount -t ntfs-3g /dev/hda2 /media/windows

でコマンドは通りました。ただ/media/windowsには何もでません。。

あとfdiskでwindows側のパーティションを再確認したのですが、/dev/hda2以外に別の領域があるようで/dev/sdb doesn't contain a valid partition tableと出ています。
こちらもマウントしてみましたが何もでませんでした;;

投稿日時 - 2010-08-27 11:43:04

あなたにオススメの質問