Bölüm numarasını sda1 yerine sda2 olarak değiştirme


20

İki bölümlü bir disk var: sda1 ve sda2. Sda1 sayısını sda2'ye ve sda2'yi sda1'e değiştirmek istiyorum.

Mümkün ama prosedürü hatırlamıyorum. Yani benim ilk bölüm sda2 ve ikinci sda1 olacak, bu yüzden manuel sipariş belirtmek gerekir, fdisk -> x -> f gibi otomatik bir sipariş değil.

Siparişi nasıl değiştiririm? Kılavuzlara veya eğiticilere bağlantılar da faydalıdır.

Teşekkürler.

Nedeni: sda1 veri okumak gerekir bir uygulama var ama veri sda2. Bölüm tablosunu değiştirmek bu sorun için daha hızlı bir çözümdür. Sistem kritik değil ama sistemi çok fazla durdurmak istemiyorum.

Güncelleme : OpenBSD'nin fdisk sürümü bu işlevselliği içerir.


1
İstediğinizi yapmak genellikle kötü bir fikir olduğundan, lütfen bunu neden istediğinizi açıklayın .
rozcietrzewiacz

Yedeklerim var, endişelenme :)
Rufo El Magufo

Tamam, uyarıldınız ve oynamak istiyorsunuz, işte gidiyor ... :)
rozcietrzewiacz

Yanıtlar:


17

Bilginize, bu kötü bir fikir ve her şeyi kaybedebilirsiniz. Hala yapmak istiyorsanız, adımlar şunlardır:

  1. Yapma . Bu işe yaramazsa, o zaman:
  2. sfdiskAracı kullanın : İlk olarak, bölüm tablosunu kullanarak

    sfdisk -d /dev/sda > sda.out
    

    Sonra bunun için git:

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

    Böyle bir şey göreceksin

    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 :
    

Şimdi sizden 'sda1' bölümü için yeni ayrıntılar vermenizi istiyor. Yani burada sda2 sayısını vermek zorundasınız. Bu yüzden buraya '6 1012' yazdım ve Enter'a basın:

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

Şimdi kontrol Enter preslenmiş sonra basılan sayılar ise tam önceki sda2 için baskılı aynıdır. Eğer uygunsa, sda2 için yeni numaralar vermeye devam edin:

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

Bu sefer benim durumumda "0" girmek yeterliydi - ama sayıların sizinkinde bozulmadığından emin olmalısınız.

Ardından, diğer bölümlerle aynı şekilde devam edin. Diskin sonuna gelmişseniz Enter tuşuna basmanız yeterlidir. Son olarak, tüm sayıların iyi olup olmadığını tekrar kontrol edin ve bölüm tablosunu kaydedin (veya kaydetmeyin). Eğer bir şeyi mahvettiyseniz man sfdisk, '-d', '-O' ve '-I' seçeneklerine bir göz atın .

Ayrıca, çılgın değişiklikleri yaptıktan sonra, bölümleri takmaya çalışmadan önce bölümlerin yeniden okunması için 'senkronizasyon' çalıştırmanız gerekebilir.


Cevap için teşekkürler. Haklısın, bu korkutucu :).
Rufo El Magufo

Harika kötülük. Sayılar aynı değilse ne olur? Vazgeç ve yeniden bölümlendirme? (Ben de öyle yaptım)
Supervacuo

1
@supervacuo Testisk size yardımcı olabilir. testdiskDağıtımınızın yazılım veritabanında paket arayın .
rozcietrzewiacz

@supervacuo Sayılar aynı değilse, yeni bölümleriniz eski bölümlerle aynı yerde değildir ve potansiyel olarak onları bozursunuz. Diske başka bir şey yapmazsanız, başlamadan önce yedeklediğiniz umarım bölümleme tablosunu geri yükleyebilir ve tekrar deneyebilirsiniz. Değilse, doğru sayıların hala konsolunuzda bir yerde olduğunu veya bölümlerinizin tam boyutunu ve yerini hatırlayabileceğinizi ve sayıları çalıştırabileceğinizi umarsanız iyi olur.
Micheal Johnson

32

Bunu daha kolay bir şekilde yaptım:

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

güvenlik için bir kopya bırak

# cp sdb.bkp sdb.new 

şimdi sdb.new SADECE satır sırasını ve bölüm numaralarını değiştirerek, benim durumumda olduğu gibi düzenleyin:

itibaren

# 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

için

# 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

sonra disk bölüm tablosuna geri atmak?

# sfdisk /dev/sdb < sdb.new

Kullanarak diskin başlangıcında iki küçük bölüm eklemek için tek bölüm (sdb1) sağa kaydırıldıktan ve sağa kaydırıldıktan sonra numaralandırma sıralamam karıştı gparted.

Son komut çalışmıyorsa, benim durumumda olduğu gibi, bunu şu şekilde değiştirin:

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

Bu benim için çalıştı ve sonunda bu 2. komuta ihtiyaç duymadım.
Aaron Franke

Benim için de teşekkürler;) ... Not Tüm bölümlerinizin komutlardan önce
çıkarıldığından

3

Sıralamayı tersine çevirmek için sürücü bölümü tablosunu yeniden yazmanız gerekir, ki bu biraz risklidir. Ben olsaydım, cihaz adlarının sırasını değiştirip bölümleri yalnız bırakmak istemenizi sağlayan sorunu düzeltirdim.

Örneğin, her iki makinede de çalışması gereken bir komut dosyanız varsa ve aynı aygıta erişmesini istiyorsanız, her iki sunucuda da aynı ada sahip farklı bir dizinde (/ dev değil) bir bağlantı oluşturun, ancak / birinde dev / sda1, diğerinde / dev / sda2.

Bölümleri düzenlemek için herhangi bir bölüm düzenleyicisini ( fdiskveya cfdisk) kullanabilirsiniz, ancak geçerli ayarları not etmeniz veya ekranın fotoğrafını çekmeniz gerekir. İki bölümü silin ve ardından tüm doğru değerleri belirterek el ile oluşturun. Bunu yapmak için sistemi bir LiveCD ile önyükleyin.


Hiçbir şeyi değiştiremem. Sistemim bir Xen DomU ve sorun Dom0'da. Bölümlerin sırasını yeniden oluşturabilirdim ama durumumda daha karmaşık. Her neyse, siparişi nasıl değiştireceğini bilmek istiyorum.
Rufo El Magufo

2

Öncelikle, tüm bunlar bir şeyleri kırmak için elinizden gelenin en iyisini yapmaya yönelik bir alıştırmadır, ancak yine de, deneyebileceğiniz başka bir yaklaşım.

Not: Nereden önyükleme yaptığınızdan bahsetmediniz ve bu çözüm, ve bunu yazarken başka hiç kimse, LILO veya GRUB'un düzgün çalışması için ne yapmanız gerektiğini ele alıyor.

/dev/sda1ve /dev/sda2(8,1) ve (8,2) blok cihazlarıdır. mknodİkisini değiştirmek için kullanmayı deneyebilirsiniz .

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

Sadece bu takas senin bölüm içeren sonra olacağını unutmayın /dev/, böylece önyükleme üzerine yüklenir initrd- Sen de orada (edecek okuyucu için egzersiz düzeltmek sürece hala "doğru" olanları olacak mkinitrdyabancılık kopyalamak?) Bu da yapmaz SELinux bağlamlarını ele alır.


Önyükleyici sorun değil :). Çözüm için teşekkürler ama sistemde değil, bölüm tablosundaki sırasını değiştirmek gerekiyor.
Rufo El Magufo

1
Bu, udev kullanan herhangi bir sistemde çalışmayacaktır ve yalnızca uygulama adlı bir dosyadan /dev/sda(diski doğrudan okumak yerine) okuduğunda yardımcı olacaktır .
Gilles 'SO- kötü olmayı kes'

Her ikisi de - kabul etti. Tüm soru IMHO acı içinde bir egzersizdir. Ben bu konuda emin değildim udev; Görünüşe göre ilk sistemde sshbuna sahip değildim.
Aaron D.Marasco

2

Bu soruna şaşırtıcı derecede kolay bir çözüm buldum. Adında yalnızca bir bölümünüz olduğunu varsayalım /dev/sda3. Onun aranmasını istiyorsunuz /dev/sda1. gdiskBölüm tablosunu açın , GPT'ye dönüştürün, yazın ve çıkın. Sonra tekrar açın, sıralama tuşuna basın (bu GPT numarasını 1 olarak değiştirir) ve ardından uzman seçenekleri aracılığıyla GPT'yi MBR'ye dönüştürün.


1

- Terminaldeki / dev / sda3 bölümlerini / dev / sda2 olarak kök olarak düzenleme -

  1. Yedekleme bölümü tablosu

    sfdisk -d / dev / sda> sda.bkp

  2. Bölüm tablosu yedeklemesini yeni bölüm tablosuna kopyala

    cp sda.bkp sda.new

  3. Yeni bölüm tablosunu düzenle

    gedit sda.new

resim açıklamasını buraya girin

Kaydet kapat

  1. Yeni bölüm tablosunu yeniden yükleyin

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

  2. Bilgisayarı yeniden başlat


Bu yapılabilir olmasına rağmen, GParted
LiveCD'yi öneririm

1
Tek aralıklı yazı tipi, görünür bir ekleme noktası ve görünür yazım hatalarına sahip bir metin düzenleyicisinin ekran görüntüsünden daha iyi yapabileceğinizi düşünüyorum.
Micheal Johnson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.