Змініть номер розділу з sda1 на sda2


20

У мене є диск з двома розділами: sda1 і sda2. Я хотів би змінити кількість sda1 на sda2, а sda2 на sda1.

Це можливо, але я не пам'ятаю процедури. тобто перший мій розділ буде sda2, а другий sda1, тому мені потрібно вказати порядок вручну, а не автоматичне замовлення, як у fdisk -> x -> f.

Як я змінюю замовлення? Посилання на посібники чи навчальні посібники також корисні.

Спасибі.

Причина: у мене є програма, яка потребує зчитування даних з sda1, але дані є в sda2. Зміна таблиці розділів - це швидше вирішення цієї проблеми. Система не є критичною, але я не хочу зупиняти систему занадто багато часу.

Оновлення : версія fdisk OpenBSD включає цю функціональність.


1
Оскільки це взагалі погана ідея робити те, що ви просите, опишіть, будь ласка, чому ви цього хочете.
rozcietrzewiacz

У мене є резервні копії, не хвилюйтесь :)
Rufo El Magufo

Гаразд, вас попередили і хочете грати, так що тут іде ... :)
rozcietrzewiacz

Відповіді:


17

FYI, це погана ідея, і ти можеш втратити все. Якщо ви все ще хочете це зробити, ось такі кроки:

  1. Не робіть цього. Якщо це не допомагає, то:
  2. Використовуйте sfdiskінструмент: Спочатку зробіть резервну копію таблиці розділів за допомогою

    sfdisk -d /dev/sda > sda.out
    

    Тоді перейдіть до цього:

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

    Ви побачите щось подібне

    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 :
    

Тепер він просить вас надати нові деталі для розділу "sda1". Тож вам потрібно вказати номери sda2. Отже, я кладу сюди "6 1012" і натискаю Enter:

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

Тепер перевірте, чи цифри, надруковані після натискання клавіші Enter, точно такі ж, як і друковані раніше для sda2. Якщо це нормально, продовжуйте вводити нові числа для sda2:

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

Цього разу було достатньо ввести "0" у моєму випадку - але ви повинні переконатися, що цифри не переплутані у вашому.

Далі так само продовжуйте з іншими розділами. Якщо ви вже дійшли до кінця диска, достатньо натиснути клавішу Enter. Нарешті ще раз перевірте, чи всі цифри в порядку, і збережіть таблицю розділів (чи ні). Якщо ви щось зіпсували, перегляньте man sfdiskта описи параметрів '-d', '-O' та '-I'.

Зауважте також, що після внесення шалених змін вам може знадобитися запустити "синхронізацію", щоб розділи були перечитані перед тим, як спробувати їх встановити.


Дякую за відповідь. Ви маєте рацію, це страшно :).
Руфо Ель Магуфо

Чудово злий. Що станеться, якщо цифри не однакові? Відмовитися і переділитись? (Ось що я і зробив)
supervacuo

1
@supervacuo Testisk може вам тоді допомогти. Шукайте testdiskпакет у базі даних програмного забезпечення вашого дистрибутива.
rozcietrzewiacz

@supervacuo Якщо цифри не однакові, то ваші нові розділи знаходяться не там, де старі розділи, і ви потенційно їх пошкодите. Якщо ви більше нічого не робите на диску, тоді ви можете відновити таблицю розділів, яку ви, сподіваємось, створили резервну копію перед запуском та спробуйте ще раз. Якщо ні, то ви краще сподіваєтесь, що правильні цифри все ще знаходяться десь на вашій консолі, або що ви можете запам'ятати точний розмір та розташування ваших розділів та опрацювати номери.
Мішель Джонсон

31

Я просто зробив це простішим способом:

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

залиште копію для безпеки

# cp sdb.bkp sdb.new 

тепер відредагуйте sdb.new, змінивши ТІЛЬКИ порядок рядків та номери розділів, як у моєму випадку:

з

# 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

потім повернути його до таблиці розділів диска?

# sfdisk /dev/sdb < sdb.new

Мою послідовність нумерації було змінено після того, як я скоротив і змістив правий єдиний розділ (sdb1), щоб додати два менші розділи на початку диска за допомогою gparted.

Якщо остання команда не працює, як у моєму випадку, змініть її на:

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

Це працювало для мене, і я не закінчив потребувати цієї 2-ї команди.
Аарон Франке

Дякую і мені;) ... Зауважте, переконайтесь, що всі ваші розділи відключені перед командами
intika

3

Вам потрібно буде переписати таблицю розділів накопичувача, щоб змінити порядок, що робити трохи ризиковано. Якби я був ти, я вирішив би проблему, яка змушує вас поміняти порядок імен пристроїв і залишити розділи в спокої.

Наприклад, якщо у вас є сценарій, який потрібно запустити на обох машинах, і ви хочете, щоб він мав доступ до одного і того ж пристрою, тоді створіть посилання в іншому каталозі (not / dev), яке має те саме ім’я на обох серверах, але посилання на / dev / sda1 - з одного, та / dev / sda2 - з іншого.

Ви можете використовувати будь-який редактор розділів ( fdiskабо cfdisk) для редагування розділів, але вам потрібно записати поточні налаштування або сфотографувати екран. Видаліть два розділи та створіть їх вручну, вказавши всі правильні значення. Для цього завантажте систему за допомогою LiveCD.


Я нічого не можу змінити. Моя система - Xen DomU, а проблема - у Dom0. Я міг відтворити порядок розділів, але це складніше в моїй ситуації. Але все одно, я хотів би знати, як змінюється порядок.
Руфо Ель Магуфо

2

По-перше, вся ця річ - це вправа намагатися розбити речі, але все-таки ось інший підхід, який ви можете спробувати.

Примітка. Ви не згадали, звідки ви завантажуєтесь, і це рішення, і жоден інший на той час, коли я це пишу, не стосується того, що ви повинні зробити, щоб LILO або GRUB працювали належним чином.

/dev/sda1і /dev/sda2є блоковими пристроями (8,1) та (8,2). Можна спробувати mknodпросто поміняти два місця.

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

Пам'ятайте лише, що ця заміна відбудеться лише після завантаження вашого розділу, який /dev/буде завантажений під час завантаження, тож у initrdних все ще будуть "правильні", якщо ви також їх не виправите (вправа для читача - mkinitrdскопіюєте дивацтва?) Це також не адреса контекстів SELinux.


Завантажувач не проблема :). Дякую за рішення, але мені потрібно змінити порядок у таблиці розділів, а не в системі.
Руфо Ель Магуфо

1
Це не буде працювати в будь-якій системі, яка використовує udev, і це допоможе лише у тому випадку, якщо програма читатиме з файлу, який називається /dev/sda(на відміну від читання диска безпосередньо).
Жил 'SO- перестань бути злим'

Обидва - погодились. Ціле питання ІМХО - це вправа на біль. Я не був впевнений у цьому udev; Мабуть, перша система, в яку я sshбув, не мала її.
Аарон Д. Мараско

2

Я щойно виявив напрочуд просте рішення цієї проблеми. Скажіть, у вас залишився лише один розділ з іменем /dev/sda3. Ви хочете, щоб його називали /dev/sda1. Відкрийте gdisk, перетворіть таблицю розділів у GPT, запишіть та вийдіть. Потім відкрийте його ще раз, натисніть сортувати (це змінить номер GPT на 1), а потім перетворіть GPT назад у MBR за допомогою експертних параметрів.


1

- Редагування розділів / dev / sda3 до / dev / sda2 в терміналі як root -

  1. Резервна таблиця розділів

    sfdisk -d / dev / sda> sda.bkp

  2. Скопіюйте резервну копію таблиці розділів у нову таблицю розділів

    cp sda.bkp sda.new

  3. Відредагуйте нову таблицю розділів

    gedit sda.new

введіть тут опис зображення

Зберегти, закрити

  1. Перевстановіть нову таблицю розділів

    sfdisk --no-перечитати -f / dev / sda <sda.new

  2. Перезавантажте комп'ютер


Хоча це можливо, я рекомендую GParted LiveCD
eyoung100

1
Я думаю, ви можете зробити краще, ніж скріншот текстового редактора з немоноспеціальним шрифтом, видимою точкою вставки та видимими помилками перевірки орфографії.
Мішель Джонсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.