Changer le numéro de la partition de sda1 à sda2

20

J'ai un disque avec deux partitions: sda1 et sda2. Je voudrais changer le nombre de sda1 en sda2 et de sda2 en sda1.

C'est possible mais je ne me souviens pas de la procédure. c'est-à-dire que ma première partition sera sda2 et la seconde sda1, j'ai donc besoin de spécifier une commande manuelle, pas une commande automatique comme dans fdisk -> x -> f.

Comment je change la commande? Des liens vers des manuels ou des didacticiels sont également utiles.

Merci.

La raison: j'ai une application qui a besoin de lire les données de sda1 mais les données sont en sda2. Changer la table de partition est la solution la plus rapide pour ce problème. Le système n'est pas critique mais je ne veux pas arrêter le système trop longtemps.

Mise à jour : la version fdisk d'OpenBSD inclut cette fonctionnalité.

Rufo El Magufo
la source
1
Comme c'est généralement une mauvaise idée de faire ce que vous demandez, veuillez expliquer pourquoi vous le souhaitez.
rozcietrzewiacz
J'ai des sauvegardes, ne vous inquiétez pas :)
Rufo El Magufo
Ok, vous avez été prévenu et vous voulez jouer, alors voilà ... :)
rozcietrzewiacz

Réponses:

17

Pour info, c'est une mauvaise idée et vous pouvez tout perdre. Si vous voulez toujours le faire, voici les étapes:

  1. Ne le fais pas. Si cela n'aide pas, alors:
  2. Utilisez l' sfdiskoutil: Tout d'abord, effectuez une sauvegarde de la table de partition à l'aide de

    sfdisk -d /dev/sda > sda.out
    

    Alors foncez:

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

    Vous verrez quelque chose comme ça

    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 :
    

Maintenant, il vous demande de donner les nouveaux détails de la partition 'sda1'. Vous devez donc donner les numéros de sda2 ici. Donc, j'ai mis '6 1012' ici et appuyez sur Entrée:

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

Vérifiez maintenant si les chiffres imprimés après avoir appuyé sur Entrée sont exactement les mêmes que ceux imprimés précédemment pour sda2. Si cela vous convient, continuez en donnant les nouveaux numéros pour sda2:

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

Cette fois, il suffisait de saisir "0" dans mon cas - mais vous devez vous assurer que les chiffres ne sont pas en désordre dans le vôtre.

Ensuite, continuez avec les autres partitions de la même manière. Si vous avez déjà atteint la fin du disque, il suffit d'appuyer sur Entrée. Enfin, vérifiez à nouveau que tous les chiffres sont corrects et enregistrez la table de partition (ou non). Si vous avez raté quelque chose, jetez un œil aux man sfdiskdescriptions des options '-d', '-O' et '-I'.

Notez également qu'une fois que vous avez apporté les modifications folles, vous devrez peut-être exécuter la synchronisation pour que les partitions soient relues avant d'essayer de les monter.

rozcietrzewiacz
la source
Merci d'avoir répondu. Tu as raison, c'est effrayant :).
Rufo El Magufo
Merveilleusement mal. Que se passe-t-il si les chiffres ne sont pas les mêmes? Abandonner et répartir? (C'est ce que j'ai fait)
supervacuo
1
@supervacuo Testisk pourrait alors vous aider. Recherchez le testdiskpackage dans la base de données du logiciel de votre distribution.
rozcietrzewiacz
@supervacuo Si les nombres ne sont pas les mêmes, alors vos nouvelles partitions ne sont pas au même endroit que les anciennes partitions et vous les corromprez potentiellement. Si vous ne faites rien d'autre sur le disque, vous pouvez restaurer la table de partition que vous espérez avoir sauvegardée avant de démarrer et réessayer. Si ce n'est pas le cas, vous feriez mieux d'espérer que les bons numéros sont toujours sur votre console quelque part, ou que vous vous souvenez de la taille et de l'emplacement exacts de vos partitions et calculez les nombres.
Micheal Johnson
31

Je viens de le faire de manière plus simple:

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

laisser une copie par sécurité

# cp sdb.bkp sdb.new 

éditez maintenant sdb.new en changeant UNIQUEMENT l'ordre des lignes et les numéros de partition, comme dans mon cas:

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

à

# 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

puis le remettre dans la table de partition du disque?

# sfdisk /dev/sdb < sdb.new

Ma séquence de numérotation a été modifiée après avoir réduit et déplacé vers la droite la seule partition (sdb1) pour ajouter deux partitions plus petites au début du disque à l'aide gparted.

Si la dernière commande ne fonctionne pas, comme dans mon cas, changez-la pour:

# sfdisk --no-reread -f /dev/sdb < sdb.new
Joao S Veiga
la source
Cela a fonctionné pour moi et je n'ai pas fini par avoir besoin de ce 2e commandement.
Aaron Franke
Pour moi aussi, merci;) ... Notez que toutes vos partitions sont
démontées
3

Vous devrez réécrire la table de partition du lecteur pour inverser l'ordre, ce qui est un peu risqué. Si j'étais vous, je résoudrais le problème qui vous donne envie d'échanger l'ordre des noms de périphériques et de laisser les partitions tranquilles.

Par exemple, si vous avez un script qui doit s'exécuter sur les deux machines et que vous souhaitez qu'il accède au même périphérique, créez un lien dans un répertoire différent (pas / dev) qui porte le même nom sur les deux serveurs, mais des liens vers / dev / sda1 sur l'un et / dev / sda2 sur l'autre.

Vous pouvez utiliser n'importe quel éditeur de partition ( fdiskou cfdisk) pour modifier les partitions, mais vous devez soit noter les paramètres actuels, soit prendre une photo de l'écran. Supprimez les deux partitions, puis créez-les manuellement, en spécifiant toutes les valeurs correctes. Démarrez le système avec un LiveCD pour ce faire.

Michael Dillon
la source
Je ne peux rien changer. Mon système est un Xen DomU et le problème est dans le Dom0. Je pourrais recréer l'ordre des partitions mais est plus complexe dans ma situation. Mais de toute façon, j'aimerais savoir comment changer la commande.
Rufo El Magufo
2

Tout d'abord, tout cela est un exercice pour faire de votre mieux pour casser les choses, mais de toute façon, voici une autre approche que vous pouvez essayer.

Remarque: Vous n'avez pas mentionné d'où vous démarrez, et cette solution, et aucune autre au moment où j'écris ceci, ne traite de ce que vous devriez faire pour que LILO ou GRUB fonctionne correctement.

/dev/sda1et /dev/sda2sont des dispositifs blocs (8,1) et (8,2). Vous pouvez essayer d'utiliser mknodsimplement pour échanger les deux.

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

Rappelez - vous que ce swapping se produira seulement après votre partition contenant /dev/est chargé au démarrage, de sorte que le initrdauront toujours les « corriger » à moins que vous fixer là aussi (exercice pour le lecteur - va mkinitrd? Copier l'étrangeté) Cela ne dit pas non répondre aux contextes SELinux.

Aaron D. Marasco
la source
Le chargeur de démarrage n'est pas un problème :). Merci pour la solution mais j'ai besoin de changer l'ordre dans la table de partition, pas dans le système.
Rufo El Magufo
1
Cela ne fonctionnera pas sur un système utilisant udev, et cela n'aiderait que si l'application lisait à partir d'un fichier appelé /dev/sda(par opposition à la lecture directe du disque).
Gilles 'SO- arrête d'être méchant'
Les deux - d'accord. Toute la question à mon humble avis est un exercice de douleur. Je n'étais pas sûr de la udevsubstance; apparemment, le premier système sshdans lequel je suis entré ne l'avait pas.
Aaron D. Marasco
2

Je viens de découvrir une solution étonnamment facile à ce problème. Supposons qu'il ne reste qu'une seule partition nommée /dev/sda3. Vous voulez qu'il soit appelé /dev/sda1. Ouvrez gdisk, convertissez la table de partition en GPT, écrivez et quittez. Ensuite, ouvrez-le à nouveau, appuyez sur Trier (cela changera le numéro GPT en 1), puis reconvertissez le GPT en MBR via les options expertes.

user1980127
la source
1

- Édition des partitions / dev / sda3 en / dev / sda2 dans le terminal en tant que root -

  1. Table de partition de sauvegarde

    sfdisk -d / dev / sda> sda.bkp

  2. Copier la sauvegarde de la table des partitions dans la nouvelle table des partitions

    cp sda.bkp sda.new

  3. Modifier une nouvelle table de partition

    gedit sda.new

entrez la description de l'image ici

Sauvegarder et fermer

  1. Réinstallez la nouvelle table de partition

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

  2. Redémarrer l'ordinateur

user264681
la source
Bien que cela soit faisable, je recommanderais le GParted LiveCD
eyoung100
1
Je pense que vous pouvez faire mieux qu'une capture d'écran d'un éditeur de texte avec une police non monospace, un point d'insertion visible et des erreurs de correcteur orthographique visibles.
Micheal Johnson