Modifica il numero della partizione da sda1 a sda2


20

Ho un disco con due partizioni: sda1 e sda2. Vorrei cambiare il numero di sda1 in sda2 e sda2 in sda1.

È possibile ma non ricordo la procedura. cioè la mia prima partizione sarà sda2 e la seconda sda1, quindi ho bisogno di specificare un ordine manuale, non un ordine automatico come in fdisk -> x -> f.

Come cambio l'ordine? Sono anche utili collegamenti a manuali o tutorial.

Grazie.

Il motivo: ho un'applicazione che ha bisogno di leggere i dati da sda1 ma i dati sono in sda2. Modificare la tabella delle partizioni è la soluzione più rapida per questo problema. Il sistema non è critico ma non voglio fermarlo troppo a lungo.

Aggiornamento : la versione fdisk di OpenBSD include questa funzionalità.


1
Dato che è generalmente una cattiva idea fare ciò che chiedi, descrivi perché lo desideri.
rozcietrzewiacz,

Ho dei backup, non ti preoccupare :)
Rufo El Magufo,

Ok, sei stato avvisato e vuoi giocare, quindi eccoci qui ... :)
rozcietrzewiacz

Risposte:


17

Cordiali saluti, è una cattiva idea e puoi perdere tutto. Se vuoi ancora farlo, ecco i passaggi:

  1. Non farlo Se questo non aiuta, allora:
  2. Utilizzare lo sfdiskstrumento: in primo luogo, eseguire un backup della tabella delle partizioni utilizzando

    sfdisk -d /dev/sda > sda.out
    

    Quindi provaci:

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

    Vedrai qualcosa del genere

    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 :
    

Ora ti sta chiedendo di fornire i nuovi dettagli per la partizione 'sda1'. Quindi devi dare il numero di sda2 qui. Quindi, ho messo '6 1012' qui e premere Invio:

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

Ora controlla se i numeri stampati dopo aver premuto Invio sono esattamente gli stessi stampati in precedenza per sda2. Se va bene, continua con i nuovi numeri per sda2:

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

Questa volta è stato sufficiente inserire "0" nel mio caso, ma devi assicurarti che i numeri non siano incasinati nel tuo.

Quindi, continua con le altre partizioni allo stesso modo. Se hai già raggiunto la fine del disco, premere Invio è sufficiente. Infine, controlla di nuovo che tutti i numeri siano corretti e salva la tabella delle partizioni (o meno). Se hai incasinato qualcosa, dai un'occhiata man sfdiske le descrizioni delle opzioni '-d', '-O' e '-I'.

Si noti inoltre che una volta apportate le modifiche pazze, potrebbe essere necessario eseguire 'sync' in modo che le partizioni vengano rilette prima di provare a montarle.


Grazie per la risposta. Hai ragione, questo è spaventoso :).
Rufo El Magufo,

Meravigliosamente malvagio. Cosa succede se i numeri non sono gli stessi? Rinunciare e ripartizione? (È quello che ho fatto)
supervacuo

1
@supervacuo Testisk potrebbe aiutarti allora. Cerca il testdiskpacchetto nel database del software della tua distribuzione.
rozcietrzewiacz,

@supervacuo Se i numeri non sono gli stessi, le tue nuove partizioni non sono nello stesso posto delle vecchie partizioni e potresti corromperle. Se non si esegue alcuna altra operazione sul disco, è possibile ripristinare la tabella delle partizioni di cui è stato eseguito il backup prima di iniziare e riprovare. In caso contrario, faresti meglio a sperare che i numeri corretti siano ancora sulla tua console da qualche parte, o che tu possa ricordare le dimensioni esatte e la posizione delle tue partizioni e elaborare i numeri.
Micheal Johnson,

31

L'ho fatto in un modo più semplice:

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

lasciare una copia per sicurezza

# cp sdb.bkp sdb.new 

ora modifica sdb.new cambiando SOLO l'ordine delle righe e i numeri di partizione, come nel mio caso:

a partire dal

# 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

per

# 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

quindi riportarlo sulla tabella delle partizioni del disco?

# sfdisk /dev/sdb < sdb.new

La mia sequenza di numerazione è stata alterata dopo che ho ridotto e spostato a destra l'unica partizione (sdb1) per aggiungere due partizioni più piccole all'inizio del disco usando gparted.

Se l'ultimo comando non funziona, come nel mio caso, cambiarlo per:

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

Questo ha funzionato per me e non ho avuto bisogno del secondo comando.
Aaron Franke,

Anche per me, grazie;) ... Nota assicurati che tutta la tua partizione sia smontata prima dei comandi
intika,

3

Dovresti riscrivere la tabella delle partizioni dell'unità per invertire l'ordine, il che è un po 'rischioso da fare. Se fossi in te, risolverei il problema che ti fa venire voglia di scambiare l'ordine dei nomi dei dispositivi e lasciare da sole le partizioni.

Ad esempio, se si dispone di uno script che deve essere eseguito su entrambe le macchine e si desidera che acceda allo stesso dispositivo, quindi creare un collegamento in una directory diversa (non / dev) che sia lo stesso nome su entrambi i server, ma collegamenti a / dev / sda1 su uno e / dev / sda2 sull'altro.

È possibile utilizzare qualsiasi editor di partizioni ( fdisko cfdisk) per modificare le partizioni, ma è necessario annotare le impostazioni correnti o scattare una foto dello schermo. Eliminare le due partizioni, quindi crearle manualmente, specificando tutti i valori corretti. Avvia il sistema con un LiveCD per farlo.


Non posso cambiare nulla. Il mio sistema è un XU DomU e il problema è nel Dom0. Potrei ricreare l'ordine delle partizioni ma è più complesso nella mia situazione. Ma comunque, vorrei sapere come modificare l'ordine.
Rufo El Magufo,

2

Prima di tutto, tutto questo è un esercizio per fare del tuo meglio per rompere le cose, ma comunque, ecco un altro approccio che puoi provare.

Nota: non hai menzionato da dove esegui l'avvio, e questa soluzione, e nessun altro al momento in cui sto scrivendo questo, sta affrontando cosa dovresti fare per far funzionare correttamente LILO o GRUB.

/dev/sda1e /dev/sda2sono dispositivi a blocchi (8,1) e (8,2). Puoi provare a usare mknodsemplicemente per scambiare i due.

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

Ricorda solo che questo scambio avverrà solo dopo che la tua partizione contenente /dev/verrà caricata all'avvio, quindi initrdavranno ancora quelli "corretti" a meno che non lo risolvi anche lì (esercizio per il lettore - mkinitrdcopierà la stranezza?) Anche questo non affrontare contesti SELinux.


Il bootloader non è un problema :). Grazie per la soluzione, ma ho bisogno di cambiare l'ordine nella tabella delle partizioni, non nel sistema.
Rufo El Magufo,

1
Non funzionerà su nessun sistema che utilizza udev e sarebbe utile solo se l'applicazione leggesse da un file chiamato /dev/sda(invece di leggere direttamente il disco).
Gilles 'SO- smetti di essere malvagio' il

Entrambi - d'accordo. L'intera domanda IMHO è un esercizio di dolore. Non ero sicuro delle udevcose; apparentemente il primo sistema in cui mi ero sshimbattuto non ce l'aveva.
Aaron D. Marasco,

2

Ho appena scoperto una soluzione sorprendentemente semplice a questo problema. Supponi di avere solo una partizione rimasta nominata /dev/sda3. Vuoi che venga chiamato /dev/sda1. Apri gdisk, converti la tabella delle partizioni in GPT, scrivi ed esci. Quindi aprilo di nuovo, premi ordina (questo cambierà il numero GPT in 1), quindi converti il ​​GPT in MBR tramite le opzioni avanzate.


1

- Modifica delle partizioni / dev / sda3 in / dev / sda2 nel terminale come root -

  1. Tabella delle partizioni di backup

    sfdisk -d / dev / sda> sda.bkp

  2. Copia il backup della tabella delle partizioni nella nuova tabella delle partizioni

    cp sda.bkp sda.new

  3. Modifica nuova tabella delle partizioni

    gedit sda.new

inserisci qui la descrizione dell'immagine

Salva, chiudi

  1. Reinstallare la nuova tabella delle partizioni

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

  2. Riavvia il computer


Anche se questo è fattibile, consiglierei il LiveCD GParted
eyoung100

1
Penso che tu possa fare meglio di uno screenshot di un editor di testo con un carattere non monospaziale, un punto di inserimento visibile ed errori di controllo ortografico visibili.
Micheal Johnson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.