web-dev-qa-db-ja.com

OS Xで再起動時にディスクの番号が付け直されるのを防ぐにはどうすればよいですか?

Mac OS X10.6.4を搭載したMacProに3つの物理ドライブがあります。マシンを再起動した後、/ dev/disk#が再起動前と同じドライブを参照しないようにディスク番号が変更されることがあります。

/dev/disk0 -> 64GB SSD drive
/dev/disk1 -> 640GB Hitachi
/dev/disk2 -> 160GB WD (BootCamp)

再起動後、マッピングは次のようになります。

/dev/disk0 -> 160GB WD (BootCamp)
/dev/disk1 -> 640GB Hitachi
/dev/disk2 -> 64GB SSD drive

さらに紛らわしいのは、再マッピングが一貫していないことです。ほとんどのものにとって、これは無関係です。ただし、OS X内からBootCampパーティションにアクセスできるようにParallelsもインストールしています。Parallelsは、構成ファイルで/ dev/disk#パスを使用するため、OS XIを再起動した後、Parallelsを起動すると、ディスクが存在しないことが通知されます。 。

特定のドライブを常に/ dev/disk0に割り当てるようにOSXに指示する方法はありますか?

12
Paul Alexander

私が理解している限り、MacOSにはその機能がありませんが、パラレルを実行する場合は厳密には必要ないかもしれません。

macportsを使用し、小さなパッチでe2fsprogsをインストールします。

diff -r e2fsprogs-1.41.12/misc/Makefile e2fsprogs-1.41.12.patched/misc/Makefile
399c399
>       $(LIBEXT2FS) $(LIBCOM_ERR)
---
<       $(LIBEXT2FS)
401,402c401

blkid -s UUID/dev/rdisk *を使用して、パーティション、ディスクを列挙し、それぞれのuuidを取得できます(サポートされているファイルシステムの数が非常に多い場合)。

その後、「ln -s」を使用してソフトリンクを追加するか、mknodを使用して代替デバイスノードを作成すると機能するはずです(その後、Parallelsからそのpsudo-/clone-deviceを参照します)。 Fusionで同様のトリックを実行しましたが、現在Paralellsをインストールしていません(テストできません)

stat -f "%Sr%Z"/dev/rdisksは、緯線が使用されない場合に使用されるメジャー、マイナーへのデバイス上のマップを提供しますデバイスへのソフトリンクを受け入れます。

これは、次の例のように使用できます。

some@Host:/e2fsprogs-1.41.12$ blkid -s UUID /dev/rdisk*s* 
/dev/rdisk0s1: UUID="76D6-1701" 
/dev/rdisk0s2: UUID="654F73AE51849687" 
/dev/rdisk1s1: UUID="51FC4E72-BFA9-4DBD-9A5C-0E5H731DB0ED" 
some@Host:/e2fsprogs-1.41.12$ stat -f "%Sr %Z" /dev/rdisk*
rdisk0 14,0
rdisk0s1 14,1
rdisk0s2 14,2
rdisk1 14,3
rdisk1s1 14,4

# okay, UUID 51FC4E72-BFA9-4DBD-9A5C-0E5H731DB0ED is a partition
# on the disk we want to use. so we make a 'private' device node
# pointing to the device containing that partition.

some@Host:/e2fsprogs-1.41.12$ Sudo mknod /dev/pdisk1 b 14 3

# just a quick verify that the mknod worked as expected ...
some@Host:/~$ Sudo dd if=/dev/rdisk1  count=10 2>/dev/null | md5 
19d55b28485771bc80acdddbd1b45faf
some@Host:/~$ Sudo dd if=/dev/pdisk1  count=10 2>/dev/null | md5 
19d55b28485771bc80acdddbd1b45faf

あとは、スクリプトを作成し、 http://support.Apple.com/kb/HT2420?viewlocale=en_US の手順を使用して、起動時に実行するだけです。

しかし、それは他の誰かが終了することになるでしょう...

2
Mr Andersson

内蔵ハードディスク上のボリュームの文字デバイスファイルのパス名を確認するには、/ Applications/Utilitiesにあるターミナルアプリケーションを開きます。次のように入力してから、Returnキーを押します。

df

ターミナルを開き、次のように入力すると、現在のボリュームの文字デバイスファイルの完全なパス名を確認できます(各行の後でReturnキーを押します)。

cd /dev
ls -lias

マウントされた各ボリュームの各パーティション(Finderに表示されるかどうかに関係なく)には、/ devディレクトリのリストに2つのファイルがあります。ファイルの名前は、デバイスを番号で識別し、デバイス上のパーティションを番号で識別します。ファイルを見つけるには、ターミナルウィンドウを少しスクロールする必要がある場合があります。

1
mralexgray

私より賢いMacの人は、ディスクの番号付けはやや恣意的であり、再起動後に同じデバイスが同じ番号を取得することに依存することはできないと言っていると聞きました。ターミナルでdiskutilを介してRAIDスライスを作成することに関連して言及されました。

Diskutil、pdisk、gptなど、私が見つけた低レベルのユーティリティはどれも、ディスクの番号付けに影響を与えることができないようです。制御できないのではないかと思います。

1
Theo Belk

私は以前にこの問題を抱えていました。通常、更新または何かをインストールした後に変更されますが、2回目の再起動後に元の番号に戻ります。これは明らかに理想的ではありませんが、私にとってはうまくいくようでした...

0
Oliver

エントリを追加してみてください/etc/fstab

An /etc/fstab example:

# Identifier, mount point, fs type, options1
UUID=DF000C7E-AE0C-3B15-B730-DFD2EF15CB91 /export ufs ro
UUID=FAB060E9-79F7-33FF-BE85-E1D3ABD3EDEA none hfs rw,noauto
LABEL=This40Is40The40Volume40Name none msdos ro

識別子はボリュームを識別するために使用されます。 LABELはボリューム名、UUIDはUniversal Unique IdentifierDriveです。両方を使用できますが、ボリュームの名前を変更してもこの識別子は変更されないため、UUIDが最適です。

から http://macosx.com/forums/mac-os-x-system-mac-software/314314-stop-disk-unmounting-automounting.html

0
miku

ドライブ番号は、起動時に物理デバイスがいつ列挙されるかに基づいています。これは私にもWindowsで起こりました。私はこれに対する解決策を長く懸命に探してきましたが、見つかりませんでした。 SATAケーブルを切り替えたときに、ディスクを「正しい」順序で取得できましたが、これは一時的な修正にすぎませんでした。あなたの場合、Parallelsはパスのディスク番号に依存しているため、起動時にその構成ファイルを更新するスクリプトを作成するのが最適な場合があります。

0
Nick