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


20

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

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

Como altero a ordem? Links para manuais ou tutoriais também são úteis.

Obrigado.

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

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


11
Como geralmente é uma má idéia fazer o que você pede, descreva por que você deseja isso.
— rozcietrzewiacz

Eu tenho backups, não se preocupe :)
— Rufo El Magufo

Ok, você foi avisado e quer jogar, então aqui vai ... :)
— rozcietrzewiacz

Respostas:


17

Para sua informação, é uma má ideia e você pode perder tudo. Se você ainda deseja fazer isso, aqui estão as etapas:

  1. Não faça isso. Se isso não ajudar, então:
  2. Use a sfdiskferramenta: 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 que você forneça os novos detalhes para a partição 'sda1'. Então você tem que dar os números de sda2 aqui. Então, 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 após pressionar Enter são exatamente iguais aos impressos anteriormente para sda2. Se estiver tudo bem, continue fornecendo os novos números para sda2:

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

Desta vez, bastava digitar "0" no meu caso - mas você precisa garantir que os números não sejam alterados no seu.

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

Observe também que, depois de fazer as alterações malucas, pode ser necessário executar 'sync' para que as partições sejam relidas antes de tentar montá-las.


Obrigado pela resposta. Você está certo, isso é assustador :).
— Rufo El Magufo

Maravilhosamente mal. O que acontece se os números não forem os mesmos? Desistir e reparticionar? (Isso é o que eu fiz)
— supervacuo

11
@supervacuo O Testisk pode ajudá-lo então. Procure testdiskpacote no banco de dados de software da sua distribuição.
— rozcietrzewiacz

@supervacuo Se os números não forem os mesmos, suas novas partições não estarão no mesmo lugar que as antigas e você poderá corrompê-las. Se você não fizer mais nada no disco, poderá restaurar a tabela de partições que você esperou ter feito backup antes de iniciar e tentar novamente. Caso contrário, é melhor esperar que os números corretos ainda estejam no seu console em algum lugar ou que você se lembre do tamanho e localização exatos das suas partições e resolva os números.
— Micheal Johnson

31

Eu fiz isso de uma maneira mais fácil:

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

deixe uma cópia por segurança

# cp sdb.bkp sdb.new 

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

a partir 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

jogá-lo de volta para a tabela de partição do disco?

# sfdisk /dev/sdb < sdb.new

Minha sequência de numeração foi alterada depois que encolhi e mudei para a direita a única partição (sdb1) para adicionar duas partições menores no início do disco usando gparted.

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

# sfdisk --no-reread -f /dev/sdb < sdb.new

Isso funcionou para mim e eu não acabei precisando desse segundo comando.
— Aaron Franke

Para mim, bem como, graças;) ... Nota Certifique-se toda a sua partição são desmontados antes de comandos
— intika

3

Você teria que reescrever a tabela de partição da unidade para reverter a ordem, o que é um pouco arriscado. Se eu fosse você, eu resolveria o problema que faz com que você queira trocar a ordem dos nomes dos dispositivos e deixar as partições em paz.

Por exemplo, se você possui um script que precisa ser executado nas duas máquinas e deseja 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 com links para / dev / sda1 em um e / dev / sda2 no outro.

Você pode usar qualquer editor de partições ( fdiskou 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.


Eu não posso mudar nada. Meu sistema é um Xen DomU e o problema está no Dom0. Eu poderia recriar a ordem das partições, mas é mais complexo na minha situação. De qualquer forma, gostaria de saber como alterar a ordem.
— Rufo El Magufo

2

Primeiro, tudo isso é um exercício para tentar o seu melhor para quebrar as coisas, mas de qualquer maneira, aqui está outra abordagem que você pode tentar.

Nota: Você não mencionou de onde é inicializado, e esta solução, e nenhuma outra no momento em que estou escrevendo isso, estão abordando o que você teria que fazer para que o LILO ou GRUB funcionasse corretamente.

/dev/sda1e /dev/sda2são dispositivos de bloco (8,1) e (8,2). Você pode tentar usar mknodpara 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

Basta lembrar que esta troca só acontecerá após a sua partição que contém /dev/é carregado durante a inicialização, de modo a initrdainda terá os "corrigir" a menos que você consertá-lo lá também (exercício para o leitor - vai mkinitrd? Copiar a estranheza) Isso também não faz abordar contextos SELinux.


O gerenciador de inicialização não é um problema :). Obrigado pela solução, mas preciso alterar a ordem na tabela de partições, não no sistema.
— Rufo El Magufo

11
Isso não funcionará em nenhum sistema que use o udev e só ajudaria se o aplicativo lesse um arquivo chamado /dev/sda(em vez de ler o disco diretamente).
— Gilles 'SO- stop be evil'

Ambos - concordaram. Toda a questão IMHO é um exercício de dor. Eu não tinha certeza sobre as udevcoisas; aparentemente o primeiro sistema em que eu sshparticipei não o possuía.
— Aaron D. Marasco 16/08

2

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


1

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

  1. Tabela de partição de backup

    sfdisk -d / dev / sda> sda.bkp

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

    cp sda.bkp sda.new

  3. Editar nova tabela de partição

    gedit sda.new

insira a descrição da imagem aqui

Salvar fechar

  1. Reinstale a nova tabela de partição

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

  2. Reinicie o computador


Embora isso seja possível, eu recomendaria o LiveCD GParted
— eyoung100

11
Eu acho que você pode fazer melhor do que uma captura de tela de um editor de texto com uma fonte não monoespaçada, um ponto de inserção visível e erros visíveis no verificador ortográfico.
— Micheal Johnson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.