sfdisk

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

Якось знадобилося об'єднати дра розділи в один. І тут виявилося, що програми для розмітки дисків не можуть цього зробити. Gparted показує що розділів нема взагалі, вінчестер нерозмічений і порожній. parted шле лісом: "Error: Can't have overlapping partitions." cfdisk також.

fdisk verify the partition table прояснив ситуацію:
Warning: partition 5 overlaps partition 6.
Logical partition 6 not entirely in partition 4.
Та-а-ак, fdisk вважає що логічні розділи 5 і 6 перетинаються, а розширений розділ 4 їх не повністю покриває.

Треба переконатися:

sudo fdisk -l /dev/sda
   Device Boot      Start         End      Blocks   Id  System
...
/dev/sda4        62504958    66043214     1769128+   5  Extended
/dev/sda5        62517068    64089931      786432   82  Linux swap / Solaris
/dev/sda6        64079872   156301311    46110720   83  Linux
 _________________________
|sda4      _______________|_______    Маємо ось таку невеселу картину
|         |sda5|sda6              |
|         |____|__________________|
|_________________________|

 _________________________________
|sda4  ______   __________________|   А так має виглядати правильна розбивка,
|     |sda5  | |sda6              |   розширений розділ повинен бути
|     |______| |__________________|   контейнером для двох логічних розділів.
|_________________________________|

Яка ж то нечемна програма так нашкодила, що тепер не підступишся, я завжди знайду реп'ях на свою дупу :). Влом шукати аварійний загрузочний набір, та й не кожна програма підійде, Partition Magic вилітає. Тому буду вручну редагувати неправильні розділи за допомогою sfdisk. Таблиця розділів знаходиться на початку вінчестера в секторах 447-512, її редагування не стосується FAT-таблиці (File Allocation Table). Не забуваємо постелити соломки про всяк випадок, робимо резервну копію таблиці розділів, ім'я і розширення файлу може бути яке завгодно:

sudo sfdisk /dev/hdd -O /моя_флешка/PT.save

Тепер потрібно зняти дамп таблиці розділів і направити в файл:

sudo sfdisk -d /dev/sda > PT.txt

Отриманий файл можна редагувати.
Принцип підрахунку приблизно такий:
start + size ≤ start наступного розділу.
Основні розділи можна розміщувати впритул.
Всі start бажано щоб були кратні 2048 (вирівнюємо кількість секторів до мегабайта, якщо у вас розмір сектора 512 bytes)
Між початком розширеного розділу і першим логічним, а також між усіма логічними мають бути невеликі проміжки (наприклад 1 мегабайт, можна менше).
Кінець розширеного розділу може співпадати з кінцем останнього логічного розділу

Було:
...
/dev/sda4 : start= 62504958, size=  3538257, Id= 5
/dev/sda5 : start= 62517068, size=  1572864, Id=82
/dev/sda6 : start= 64079872, size= 92221440, Id=83

Стало:
...
/dev/sda4 : start= 62502912, size= 93798400, Id= 5
/dev/sda5 : start= 62504960, size=  1574910, Id=82
/dev/sda6 : start= 64079872, size= 92221440, Id=83

Тут можна докладніше почитати http://ubuntuforums.org/showthread.php?t=1192598

Внести зміни в таблицю розділів:

sudo sfdisk --no-reread -f /dev/sda < PT.txt

Якщо вийшло щось негарне, можна відновити з резервної копії як було:

sudo sfdisk --force -I PT.save /dev/sda

І повторити спробу.

Але не повторюйте моїх помилок.
Логічні розділи були розраховані впритул, збочена логіка програми sfdisk вирішила зробити проміжок між ними за рахунок першого сектора наступного розділу. *censored* там же службова інформація розділу і FAT-таблиця. В результаті диск з home втратив себе, громадянство і файлову таблицю, і що найвеселіше, там була резервна копія таблиці розділів (ага, флешки не для нас придумали). Мені не вперше, запускаю TestDisk, вибираю пошук загублених розділів, знайшовся файл PT.save, TestDisk дозволяє цей файл скопіювати.

Happy End

Прошивка MP3 | Лечение WinLock | Взлом адміна | Віршики про хакерів
Хобі | Проект гри | Ботоводи | Машинна вишивка в Linux
Відновлення partitions в Linux | Замкнений в собі | Hirens так