Ubah nomor partisi dari sda1 ke sda2

20

Saya memiliki disk dengan dua partisi: sda1 dan sda2. Saya ingin mengubah jumlah sda1 ke sda2 dan sda2 ke sda1.

Itu mungkin tapi saya tidak ingat prosedurnya. yaitu partisi pertama saya akan sda2 dan sda1 kedua, jadi saya perlu menentukan pesanan manual, bukan pemesanan otomatis seperti di fdisk -> x -> f.

Bagaimana saya mengubah pesanan? Tautan ke manual atau tutorial juga bermanfaat.

Terima kasih.

Alasannya: Saya memiliki aplikasi yang perlu membaca data dari sda1 tetapi datanya ada di sda2. Mengubah tabel partisi adalah solusi tercepat untuk masalah ini. Sistem tidak kritis tetapi saya tidak ingin menghentikan sistem terlalu banyak waktu.

Pembaruan : versi fdisk OpenBSD menyertakan fungsionalitas itu.

Rufo El Magufo
sumber
1
Karena umumnya merupakan ide yang buruk untuk melakukan apa yang Anda minta, tolong jelaskan mengapa Anda menginginkannya.
rozcietrzewiacz
Saya punya cadangan, jangan khawatir :)
Rufo El Magufo
Oke, Anda sudah diperingatkan dan ingin bermain, jadi begini ... :)
rozcietrzewiacz

Jawaban:

17

FYI, itu ide yang buruk dan kamu bisa kehilangan segalanya. Jika Anda masih ingin melakukannya, berikut adalah langkah-langkahnya:

  1. Jangan lakukan itu. Jika ini tidak membantu, maka:
  2. Gunakan sfdiskalat: Pertama, buat cadangan tabel partisi menggunakan

    sfdisk -d /dev/sda > sda.out
    

    Maka lakukanlah:

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

    Anda akan melihat sesuatu seperti ini

    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 :
    

Sekarang meminta Anda untuk memberikan rincian baru untuk partisi 'sda1'. Jadi, Anda harus memberikan jumlah sda2 di sini. Jadi, saya letakkan '6 1012' di sini dan tekan Enter:

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

Sekarang periksa apakah angka yang dicetak setelah Anda menekan Enter persis sama dengan yang dicetak sebelumnya untuk sda2. Jika tidak apa-apa, lanjutkan dengan memberikan nomor baru untuk sda2:

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

Kali ini sudah cukup untuk memasukkan "0" dalam kasus saya - tetapi Anda harus memastikan angkanya tidak kacau di Anda.

Selanjutnya, lanjutkan dengan partisi lain dengan cara yang sama. Jika Anda sudah mencapai ujung disk, menekan Enter sudah cukup. Akhirnya, periksa lagi bahwa semua angka baik-baik saja dan simpan tabel partisi (atau tidak). Jika Anda mengacaukan sesuatu, lihat man sfdiskdan deskripsi opsi '-d', '-O' dan '-I'.

Perhatikan juga, bahwa setelah Anda membuat perubahan gila, Anda mungkin perlu menjalankan 'sinkronisasi' agar partisi dibaca kembali sebelum Anda mencoba memasang mereka.

rozcietrzewiacz
sumber
Terima kasih atas jawabannya. Anda benar, ini menakutkan :).
Rufo El Magufo
Sangat jahat. Apa yang terjadi jika angkanya tidak sama? Menyerah dan partisi ulang? (Itulah yang saya lakukan)
supervacuo
1
@supervacuo Testisk mungkin membantu Anda saat itu. Cari testdiskpaket di basis data perangkat lunak distro Anda.
rozcietrzewiacz
@supervacuo Jika angkanya tidak sama maka partisi baru Anda tidak di tempat yang sama dengan partisi lama dan Anda berpotensi merusaknya. Jika Anda tidak melakukan hal lain pada disk, maka Anda dapat mengembalikan tabel partisi yang Anda harap dicadangkan sebelum memulai dan coba lagi. Jika tidak, lebih baik Anda berharap bahwa angka yang benar masih ada di konsol Anda di suatu tempat, atau bahwa Anda dapat mengingat ukuran dan lokasi yang tepat dari partisi Anda dan menghitung jumlahnya.
Micheal Johnson
31

Saya hanya melakukan ini dengan cara yang lebih mudah:

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

tinggalkan salinan untuk keamanan

# cp sdb.bkp sdb.new 

sekarang edit sdb.new mengubah HANYA urutan baris dan nomor partisi, seperti dalam kasus saya:

dari

# 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

untuk

# 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

lalu membuangnya kembali ke tabel partisi disk?

# sfdisk /dev/sdb < sdb.new

Urutan penomoran saya hancur setelah saya menyusutkan & menggeser kanan satu-satunya partisi (sdb1) untuk menambahkan dua partisi yang lebih kecil pada awal penggunaan disk gparted.

Jika perintah terakhir tidak berfungsi, seperti dalam kasus saya, ubah untuk:

# sfdisk --no-reread -f /dev/sdb < sdb.new
Joao S Veiga
sumber
Ini bekerja untuk saya dan saya akhirnya tidak membutuhkan perintah ke-2.
Aaron Franke
Bagi saya juga, terima kasih;) ... Perhatikan, pastikan semua partisi Anda tidak terpasang sebelum perintah
intika
3

Anda harus menulis ulang tabel partisi drive untuk membalik urutan, yang agak berisiko dilakukan. Jika saya jadi Anda, saya akan memperbaiki masalah yang membuat Anda ingin menukar urutan nama perangkat dan meninggalkan partisi sendirian.

Misalnya jika Anda memiliki skrip yang perlu dijalankan di kedua mesin dan Anda ingin mengakses perangkat yang sama, kemudian buat tautan di direktori yang berbeda (bukan / dev) yang merupakan nama yang sama di kedua server, tetapi tautan ke / dev / sda1 di satu, dan / dev / sda2 di satu lainnya.

Anda dapat menggunakan editor partisi apa saja ( fdiskatau cfdisk) untuk mengedit partisi tetapi Anda harus menuliskan pengaturan saat ini atau mengambil foto layar. Hapus dua partisi, lalu buat secara manual, tentukan semua nilai yang benar. Boot sistem dengan LiveCD untuk melakukan ini.

Michael Dillon
sumber
Saya tidak bisa mengubah apa pun. Sistem saya adalah Xen DomU dan masalahnya ada di Dom0. Saya dapat membuat ulang urutan partisi tetapi lebih kompleks dalam situasi saya. Tapi bagaimanapun, saya ingin tahu bagaimana mengubah pesanan.
Rufo El Magufo
2

Pertama-tama, semua ini adalah latihan dalam mencoba yang terbaik untuk memecahkan banyak hal, tetapi bagaimanapun, inilah pendekatan lain yang dapat Anda coba.

Catatan: Anda tidak menyebutkan dari mana Anda boot, dan solusi ini, dan tidak ada yang lain pada saat saya menulis ini, membahas apa yang harus Anda lakukan agar LILO atau GRUB berfungsi dengan baik.

/dev/sda1dan /dev/sda2merupakan perangkat blok (8,1) dan (8,2). Anda dapat mencoba menggunakan mknoduntuk hanya menukar keduanya.

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

Ingat saja bahwa pertukaran ini akan terjadi hanya setelah partisi Anda /dev/dimuat saat boot, sehingga initrdmasih memiliki yang "benar" kecuali Anda memperbaikinya di sana (berolahraga untuk pembaca - akan mkinitrdmenyalin keanehan?) Ini juga tidak mengatasi konteks SELinux.

Aaron D. Marasco
sumber
Bootloader bukan masalah :). Terima kasih atas solusinya tetapi saya perlu mengubah urutan di tabel partisi, bukan di sistem.
Rufo El Magufo
1
Itu tidak akan berfungsi pada sistem apa pun yang menggunakan udev, dan itu hanya akan membantu jika aplikasi membaca dari file yang dipanggil /dev/sda(sebagai lawan membaca disk secara langsung).
Gilles 'SANGAT berhenti menjadi jahat'
Keduanya - setuju. Seluruh pertanyaan IMHO adalah latihan kesakitan. Saya tidak yakin tentang udevbarang - barang itu; rupanya sistem pertama yang saya sshgunakan tidak memilikinya.
Aaron D. Marasco
2

Saya baru saja menemukan solusi yang sangat mudah untuk masalah ini. Katakanlah Anda hanya memiliki satu partisi yang bernama /dev/sda3. Anda ingin dipanggil /dev/sda1. Buka gdisk, ubah tabel partisi menjadi GPT, tulis, dan keluar. Kemudian buka lagi, tekan sort (ini akan mengubah nomor GPT ke 1), dan kemudian mengonversi GPT kembali ke MBR melalui opsi ahli.

pengguna1980127
sumber
1

- Mengedit partisi / dev / sda3 ke / dev / sda2 di terminal sebagai root -

  1. Tabel partisi cadangan

    sfdisk -d / dev / sda> sda.bkp

  2. Salin cadangan tabel partisi ke tabel partisi baru

    cp sda.bkp sda.new

  3. Edit tabel partisi baru

    gedit sda.new

masukkan deskripsi gambar di sini

Simpan, tutup

  1. Pasang kembali tabel partisi baru

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

  2. Mulai ulang komputer

pengguna264681
sumber
Meskipun ini bisa dilakukan, saya akan merekomendasikan LiveCD GParted
eyoung100
1
Saya pikir Anda dapat melakukan lebih baik daripada tangkapan layar editor teks dengan font non-monospace, titik penyisipan yang terlihat, dan kesalahan pemeriksa ejaan yang terlihat.
Micheal Johnson