Como impedir a renumeração de disco na reinicialização no OS X?

12

Eu tenho 3 unidades físicas no meu Mac Pro com o Mac OS X 10.6.4. Ocasionalmente, após a reinicialização da máquina, a numeração do disco é alterada, de modo que o / dev / disk # não faça referência à mesma unidade que antes da reinicialização.

Exemplo

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

Após a reinicialização, o mapeamento pode ser

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

Ainda mais confuso é que o remapeamento não é consistente. Para a maioria das coisas, isso é irrelevante. No entanto, também tenho o Parallels instalado para permitir o acesso à partição BootCamp a partir do OS X. O Parallels usa o caminho / dev / disk # no arquivo de configuração. Assim, após reiniciar o OS XI, inicie o Parallels e ele me informa que o disco não está mais presente .

Existe uma maneira de dizer ao OS X para sempre atribuir uma determinada unidade ao / dev / disk0?

Paul Alexander
fonte
3
Isso não está dentro do meu conhecimento, mas algo pode ser feito com UUIDs de volume?
fideli
@fideli: Não sei ... é com isso que preciso da ajuda :) Eu esperava que o OSX fizesse exatamente isso - lembrei de onde uma unidade com um determinado UUID foi montada e a deixei lá, mas isso não parece ser O caso.
Paul Alexander
No Linux, os discos possuem links simbólicos como / dev / disk / by-uuid / [disk-uuid] que não mudam, mesmo que a numeração o faça. Talvez o OSX seja semelhante?
solarc 01/10/10

Respostas:

2

Tanto quanto eu entendo, o MacOS não tem essa capacidade, embora, para rodar paralelos, possa não ser estritamente necessário.

usando macports e instalando o e2fsprogs com um pequeno patch:

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

você pode usar o blkid -s UUID / dev / rdisk * para enumerar partições, discos e obter seus respectivos uuids (para qualquer sistema de arquivos suportado que seja bastante pequeno).

Depois disso, a adição de um softlink com 'ln -s' ou a criação de um nó de dispositivo alternativo com mknod deve funcionar (e, em seguida, referenciar esse dispositivo psudo- / clone da Parallels). Eu fiz truques semelhantes com o Fusion, mas ainda não tenho o Paralells instalado (por isso não posso testar)

stat -f "% Sr% Z" / dev / rdisk s fornece um mapa sobre o dispositivo para maior, menor para ser usado se os paralelos não aceitarem um link direto para o dispositivo.

que pode ser usado como no exemplo a seguir:

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

Agora, a única coisa que resta é escrever um script e usar as instruções em http://support.apple.com/kb/HT2420?viewlocale=en_US para executá-lo na inicialização.

Mas isso será para outra pessoa terminar ...

Andersson
fonte
Ei, obrigado pela resposta detalhada. Tentando mknodcom o Fusion, mas dando um erro ./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).Alguma pista? Cheers
Alexandre G
Essa resposta funcionou muito bem para mim no mesmo problema, mas com o VMware Fusion. Infelizmente, depois disso, o VMware não parece gostar de caminhos fora do padrão do dispositivo de disco (em um arquivo vmdk, referenciando o disco / partição). Parecia que os estava passando para bibliotecas no estilo diskutil, que não sabiam o que fazer com elas. Tão perto ... A alternativa no meu caso é provavelmente regenerar programaticamente o arquivo vmdk após a descoberta.
Tom
1

Ouvi caras mais inteligentes do Mac do que eu dizer que a numeração do disco é um tanto arbitrária e que não se pode depender do mesmo dispositivo que obtém o mesmo número após uma reinicialização. Foi mencionado em referência à criação de fatias RAID via diskutil no Terminal.

Nenhum dos utilitários de baixo nível que encontrei, como diskutil, pdisk ou gpt, parece capaz de afetar a numeração do disco. Receio que possa não ser controlável.

Theo Belk
fonte
1
Não achei a resposta -1 ruim. Em algum momento a resposta é "você não pode fazer isso".
Theo Belk
1

Para ver os nomes dos caminhos dos arquivos dos dispositivos de caracteres dos volumes no disco rígido interno, abra o aplicativo Terminal, localizado em / Aplicativos / Utilitários. Digite o seguinte, seguido pela tecla Return:

df

Você pode ver os nomes de caminho completos dos arquivos de dispositivos de caracteres dos volumes atuais, abrindo o Terminal e digitando (pressione Retornar após cada linha):

cd /dev
ls -lias

Cada partição (exibida ou não no Finder) em cada volume montado terá dois arquivos na lista para o diretório / dev. Os nomes dos arquivos identificam o dispositivo por número e a partição no dispositivo por seu número. Pode ser necessário rolar um pouco na janela do Terminal para encontrar os arquivos.

mralexgray
fonte
0

Tente adicionar entradas em você /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

O identificador é usado para identificar o volume; o LABEL é o nome do volume, o UUID é a unidade de identificador exclusivo universal. Você pode usar os dois, mas o UUID é a melhor opção, pois renomear o volume não altera esse identificador.

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

miku
fonte
Isso muda apenas onde a unidade está montada no diretório / Volumes. Não tem nenhum efeito nele / dev / disk ??? tarefa.
Paul Alexander
0

O número da unidade é baseado em quando o dispositivo físico é enumerado durante a inicialização. Isso aconteceu comigo também no Windows. Procurei uma solução longa e árdua para isso e não encontrei uma. Consegui obter os discos na ordem "correta" quando troquei os cabos SATA, mas isso foi apenas uma correção temporária. No seu caso, como o Parallels conta com a numeração do disco para um caminho, talvez seja melhor criar um script para atualizar esse arquivo de configuração na inicialização.

usuario
fonte
0

Eu já tive esse problema antes, eles geralmente mudam depois que eu faço atualizações ou instalamos algo, mas retornamos à sua numeração original após uma segunda reinicialização. Obviamente, isso não é o ideal, mas parecia funcionar para mim ...

Oliver
fonte