Altera o número da partição de sda1 para sda2

16

Eu tenho um disco com duas partições: sda1 e sda2. Eu gostaria de mudar o número de sda1 para sda2 e sda2 para sda1.

É possível, mas não me lembro do procedimento. i.e. Minha primeira partição será sda2 e a segunda sda1, então eu preciso especificar uma ordem manual, não uma ordem automática como no fdisk - > x - > f.

Como eu mudo o pedido? Links para manuais ou tutoriais também são úteis.

Obrigado.

O motivo: Eu tenho um aplicativo que precisa ler dados de sda1, mas os dados estão em sda2. Alterar a tabela de partições é a solução mais rápida para esse problema. O sistema não é crítico, mas eu não quero parar o sistema por muito tempo.

Atualização : a versão fdisk do OpenBSD inclui essa funcionalidade.

    
por Rufo El Magufo 15.08.2011 / 00:28

6 respostas

15

FYI, é uma má ideia e você pode perder tudo. Se você ainda quiser fazer isso, veja as etapas:

  1. Não faça isso. Se isso não ajudar, então:
  2. Use a ferramenta sfdisk : Primeiro, faça um backup da tabela de partição usando

    sfdisk -d /dev/sda > sda.out
    

    Então vá em frente:

    sfdisk /dev/sda -O sda-partition-sectors.save
    

    Você verá algo assim

    Checking that no-one is using this disk right now ...
    OK
    
    Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track
    Old situation:
    Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/sda1          0+      5       6-     23063+  83  Linux
    /dev/sda2          6    1017    1012    3890128   83  Linux
    /dev/sda3          0       -       0          0    0  Empty
    /dev/sda4          0       -       0          0    0  Empty
    Input in the following format; absent fields get a default value.
    <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
    Usually you only need to specify <start> and <size> (and perhaps <type>).
    
    /dev/sda1 :
    

Agora ele está pedindo para você fornecer os novos detalhes para a partição 'sda1'. Então você tem que dar os números de sda2 aqui. Então, eu coloquei '6 1012' aqui e pressione Enter:

    /dev/sda1 :6 1012
    /dev/sda1          6    1017    1012    3890128   83  Linux
    /dev/sda2 :

Agora, verifique se os números impressos depois de pressionar Enter são exatamente iguais aos impressos anteriormente para sda2. Se estiver tudo bem, continue dando os novos números para sda2:

    /dev/sda2 :0
    /dev/sda2          0+      5       6-     23063+  83  Linux
    /dev/sda3 :

Desta vez, foi o suficiente para digitar "0" no meu caso - mas você precisa ter certeza de que os números não estão confusos no seu.

Em seguida, continue com as outras partições da mesma maneira. Se você já atingiu o final do disco, pressionar Enter é suficiente. Finalmente, verifique novamente se todos os números estão corretos e salve a tabela de partição (ou não). Se você estragou alguma coisa, dê uma olhada em man sfdisk e nas descrições das opções '-d', '-O' e '-I'.

Observe também que, depois de fazer as mudanças malucas, talvez seja necessário executar "sync" para que as partições sejam relidas antes de você tentar montá-las.

    
por 15.08.2011 / 02:33
26

Eu fiz isso de uma maneira mais fácil:

# sfdisk -d /dev/sdb > sdb.bkp

deixe uma cópia para segurança

# cp sdb.bkp sdb.new 

agora edite sdb.new mudando SOMENTE a ordem das linhas e os números das partições, como no meu caso:

de

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=  1026048, size=975747120, Id=83
/dev/sdb2 : start=     2048, size=   204800, Id=83
/dev/sdb3 : start=   206848, size=   819200, Id= b
/dev/sdb4 : start=        0, size=        0, Id= 0

para

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   204800, Id=83
/dev/sdb2 : start=   206848, size=   819200, Id= b
/dev/sdb3 : start=  1026048, size=975747120, Id=83
/dev/sdb4 : start=        0, size=        0, Id= 0

em seguida, devolva-o à tabela de partições de disco?

# sfdisk /dev/sdb < sdb.new

Minha sequência numérica foi desconfigurada depois que eu encolhi e movi a única partição (sdb1) para a direita para adicionar duas partições menores no início do disco usando gparted .

Se o último comando não funcionar, como no meu caso, mude para:

# sfdisk --no-reread -f /dev/sdb < sdb.new
    
por 11.09.2013 / 13:51
3

Você teria que reescrever a tabela de partição do drive para reverter a ordem, o que é um pouco arriscado fazer. Se eu fosse você, corrigiria o problema que faz você querer trocar a ordem dos nomes dos dispositivos e deixar as partições em paz.

Por exemplo, se você tiver um script que precise ser executado em ambas as máquinas e desejar que ele acesse o mesmo dispositivo, crie um link em um diretório diferente (não / dev) com o mesmo nome nos dois servidores, mas links para / dev / sda1 em um e / dev / sda2 no outro.

Você pode usar qualquer editor de partições ( fdisk ou cfdisk ) para editar as partições, mas é necessário anotar as configurações atuais ou tirar uma foto da tela. Exclua as duas partições e crie-as manualmente, especificando todos os valores corretos. Inicialize o sistema com um LiveCD para fazer isso.

    
por 15.08.2011 / 01:35
2
Primeiro, tudo isso é um exercício para tentar quebrar as coisas, mas de qualquer maneira, aqui está outra abordagem que você pode tentar.

Observação: você não mencionou de onde você iniciou, e esta solução, e nenhuma outra no momento em que estou escrevendo isso, está abordando o que você teria que fazer para que o LILO ou o GRUB funcionassem corretamente .

/dev/sda1 e /dev/sda2 são dispositivos de bloco (8,1) e (8,2). Você pode tentar usar mknod para simplesmente trocar os dois.

telinit 1
(...)
rm -f /dev/sda{1,2}; mknod /dev/sda1 b 8 2; mknod /dev/sda2 b 8 1
chmod 640 /dev/sda{1,2}; chown root:disk /dev/sda{1,2}
reboot

Lembre-se que esta troca só acontecerá depois que sua partição contendo /dev/ for carregada na inicialização, então o initrd ainda terá os "corretos", a menos que você o corrija também (exercício para o leitor - será mkinitrd copie a estranheza?) Isso também não aborda os contextos do SELinux.

    
por 15.08.2011 / 11:14
2

Acabei de descobrir uma solução surpreendentemente fácil para esse problema. Digamos que você tenha apenas uma partição com o nome /dev/sda3 . Você quer que ele seja chamado de /dev/sda1 . Abra gdisk , converta a tabela de partições em GPT, escreva e saia. Em seguida, abra-o novamente, pressione sort (isso mudará o número do GPT para 1) e, em seguida, converta o GPT de volta para o MBR através das opções de especialistas.

    
por 14.07.2013 / 04:07
0

- Editando partições / dev / sda3 para / dev / sda2 no terminal como root -

  1. Tabela de partições de backup

    sfdisk -d / dev / sda > sda.bkp

  2. Copie o backup da tabela de partições para a nova tabela de partições

    cp sda.bkp sda.new

  3. Editar nova tabela de partições

    gedit sda.new

Salvar,fechar

  • Reinstale a nova tabela de partições

    sfdisk --no-releia -f / dev / sda < sda.new

  • Reinicie o computador

  • por 11.09.2014 / 01:04