OS Xの再起動時にディスクの番号が変更されないようにするにはどうすればよいですか?


12

Mac OS X 10.6.4を搭載したMac Proに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

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

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


3
これは私の専門知識の範囲内ではありませんが、ボリュームUUIDで何かを実行できますか?
フィデリ

@fideli:わからない...それは私が助けを必要としていることです:)OSXがそれを行うことを期待していました-特定のUUIDを持つドライブがマウントされてそこに置いた場所を思い出しましたが、そうではないようですケース。
ポールアレクサンダー

Linuxでは、ディスクには/ dev / disk / by-uuid / [disk-uuid]のようなシンボリックリンクがあり、番号が変わっても変更されません。OSXも似ているでしょうか?
solarc

回答:


2

私が理解している限り、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 / rdisk sは、デバイスへのソフトリンクをParallelsが受け入れない場合に使用するメジャー、マイナーへのデバイス上のマップを提供します。

次の例のように使用できます。

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の指示に従ってブート時に実行するだけです。

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


詳細な回答をありがとう。しようとmknod融合してますが、エラーに与える./vmware-rawdiskCreator create /dev/pdisk1 fullDevice ~/5tc ide Unable to create the source raw disk: The specified device is not a valid physical disk device (20).任意の手がかりを?乾杯
アレクサンドルG

この問題は、VMware Fusionを使用した場合も同じ問題に対してうまく機能しました。残念ながら、この後、VMwareは非標準のディスクデバイスパス(vmdkファイルで、ディスク/パーティションを参照)を好まないようです。ボンネットの下にあるdiskutilスタイルのライブラリにそれらを渡すように見えたが、それはそれらをどうするかわからなかった。非常に近い...私の場合の代替案は、おそらく発見後にプログラムでvmdkファイルを再生成することです。
トム

1

私よりも賢いMacの人たちは、ディスクの番号付けはいくぶんarbitrary意的であり、リブート後に同じデバイスが同じ番号を取得することに依存できないことを暗示していると聞きました。これは、ターミナルでdiskutilを介してRAIDスライスを作成することに関して言及されました。

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


1
ええ、私は答えが-1悪いとは思いませんでした。時々、答えは「あなたにはできない」です。
テオベルク

1

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

df

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

cd /dev
ls -lias

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


0

エントリを追加してみてください/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 Identifier Driveです。両方を使用できますが、ボリュームの名前を変更してもこの識別子は変更されないため、UUIDが最適です。

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


これは、/ Volumesディレクトリ内でドライブがマウントされる場所のみを変更します。/ dev / diskには何の影響もありません??? 割り当て。
ポールアレクサンダー

0

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.