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