Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

14 дней жизни одной операционной системы
или впечатления об установке и настройке Red Hat Linux 9 Cyrillic Edition

В.А.Костромин, 23 сентября 2003 г.

День четырнадцатый. GNU/Parted.

Я обещал, что сегодня займусь утилитой переразбиения диска. Для начала я занялся поиском этой утилиты на http://rpm.pbone.net/. И нашел сразу несколько разных пакетов. Меня интересовали только бинарные пакеты, поскольку заниматься компиляцией из исходников у меня нет пока навыка. В бинарном виде из последних по номеру версии вариантов были обнаружены parted-1.6.3-11 и parted-static-1.6.6-1. Я выкачал оба пакета и попытался их установить. Начал со второго, как имеющего более позднюю версию, но он отказался устанавливаться, сообщив, что ему нужен еще пакет parted-develop-1.6.6-1. Тогда я попробовал ставить parted-1.6.3-11. На сей раз получил сообщение, что такой пакет уже установлен.
И, действительно, команда /sbin/parted сработала (только запускать ее надо от имени root-а) и для начала выдала предупреждение о том, что у меня не все в порядке с таблицей разбиением диска на разделы. Причиной этого может быть то, что программа, с помощью которой создавались разделы, не имела правильных данных о геометрии диска. Опасности это не представляет, но может вызвать проблемы с некоторыми загрузчиками. Я давно уже знаю об этой проблеме из сообщений программы Partition Magic, поэтому соглашаюсь с предложением игнорировать проблему и продолжать работу. В ответ программа выдала информацию о том, что по мнению операционной системы диск /dev/hda имеет геометрию 784/255/63. После чего появилось приглашение программы к вводу команд, которое вы видите на рис. 35. 

Примечание: Рисунки, которые Вы видите, получены на другом компьютере, поскольку я не умею делать снимок экрана в консольном режиме, а графика у меня не работает. Но отличия заключаются только в том, что на old-lin те же сообщения выдаются белыми буквами на черном фоне, и, естественно, сообщение об ошибках в ситуации, приведенной на рисунке, не появилось. В остальном содержание сообщений абсолютно одинаковое. Заметьте также, что программу можно запускать как с консоли, так и в окне терминала.


Рис. 35. Сообщение программы parted при запуске.

Не зная поначалу, что делать дальше, я ввел в строке подсказки знак вопроса. И получил список возможных команд, который вы можете также точно получить по команде help (рис.36).


Рис. 36. Сообщение программы parted по команде help.

Как видите, программа даже русифицирована, хотя и не полностью. Но все равно понятно не все. Однако ясно, что начинать надо с команды print. Ввожу эту команду, вновь появляется предупреждение о неправильной таблице разбиения диска, и после того, как я снова соглашаюсь его проигнорировать, получаю перечень имеющихся на диске разделов. (Показать вам на рисунке сообщения, выдаваемые программой parted по команде print и последующим командам я не могу, поэтому буду просто описывать результаты.) Перечень этот представлен в виде таблички примерно такого вида:

Таблица 1.
Minor
Start
End
Type
Filesystem
Flag
1
0,031
2000,280
primary
fat

2
2000,281
2306,206
extended


5
2000,312
2306,206
logical
linux-swap

3
2306,237 4314,331
primary ntfs

4
4314,331
6142,038
primary ext3

Из этой таблички становится ясно, что такое параметр MINOR в командах программы, - это просто номер раздела, который выдается той же командой.

Работу с программой я решил начать с удаления первого раздела (его тип FAT). После ввода команды

(parted) rm 1

очень быстро вновь появляется приглашение (parted) и команда print выдает ту же таблицу 1, но без первого раздела. Что ж, можно создать на освободившемся месте новый раздел

(parted) mkpart 0 2000,000

Запрашивается тип раздела, задаю primary. Потом программа просит снова ввести начало и конец раздела и появляется ее приглашение. По команде
(parted) print
убеждаюсь, что раздел создан и узнаю его младший номер (тот самый MINOR). Создаю на нем файловую систему ext2
(parted) mkfs 1 ext2
(команды (parted) mkpart 0 2000,300 и (parted) mkfs 1 ext2 можно было, по-видимому, выполнить за один прием, командой (parted) mkpartfs p ext2, но я делал так, как сказано выше).

После этого я вышел из программы parted (командой q) и подмонтировал новый раздел к своей системе. Все прошло нормально, я убедился, что раздел монтируется нормально (записывал туда файлы, отключал, монтировал вновь и убеждался, что файлы скопировались не в каталог монтирования, а именно на вновь созданный раздел).

Снова удаляю первый раздел. Раз уж я занялся этой программой, то поиграюсь с ней побольше, и познакомлюсь с ее возможностями поближе! На тестовом-то компьютере я могу себе такие игры позволить!

Снова запускаю программу parted и решаю перенести swap-раздел в начало диска на первичный раздел. Ввожу команду 

(parted) move 5 0 306,000 

Программа выдает предупреждение, что раздел используется, которое я опять игнорирую. После этого она заново запрашивает начало и конец раздела, после чего отказывается выполнить перемещение, сообщая, что не может передвинуть раздел сам в себя. Конечно, этот результат нельзя назвать неожиданным, я и предполагал, что логический раздел переместить в первичный не удастся. Может быть, можно преобразовать тип раздела? Пытаюсь выполнить команду

(parted) set 5

однако предлагаются только варианты boot/hidden/скрытый/raid/lba (это, по-видимому, и есть те флаги, которые могут появляться в последней графе таблицы 1). Приходится жать <Ctrl>+<D>.  Тогда создаю на освободившемся пространстве новый раздел

(parted) mkpartfs swap 0 306,000

(при этом создать swap-раздел не удается, приходится создать ext2). Команда print сообщает, что создан раздел номер 1, начинающийся на 0,031, заканчивающийся на 305,925. Ну ладно, превратить его в swap можно будет потом командой mkswap
[1]. А пока пойдем дальше. Удалять раздел 2 (расширенный) не решаюсь, удаляю ntfs-раздел, после чего пытаюсь передвинуть поближе к разделу 4 раздел 2 (extended). Однако оказывается, что программа не может двигать расширенные разделы.
Хорошо, попытаюсь его удалить, вначале преобразовав новый первый раздел в swap и подключив его к системе.  Выхожу из программы parted (для этого достаточно ввести в командной строке программы букву q) и выполняю команды

[root] mkswap /dev/hda1
[root] swapon /dev/hda1

После этого команда

[root] parted /dev/hda/ print

(обратите внимание на возможность задать команду для программы parted прямо в командной строке консоли) сообщает, что теперь раздел 1 (то есть /dev/hda1) является swap-разделом. После этого удаляю раздел 5 (операция завершается успешно) и раздел 2 (тоже успешно). Осталось у меня 2 раздела: hda1 (swap) и hda4 (ext3). Теперь можно попытаться расширить существующий раздел 4 (обратите внимание - в работающей с этого раздела системе!) 

(parted) resize 4 

На запрос о начале раздела ввожу 3000, конец - 6142,0381. Выдается предупреждение о том, что файловая система не была правильно размонтирована и необходимо выполнить команду e2fsck. Попытка игнорировать это предупреждение к успеху не привела - появилось сообщение что операция не выполнена, потому что файловая система имеет какое-то странное расположение (rather strange layout). Parted can't resize this (yet!).  Я так понимаю, что parted (пока!) не умеет работать с ext3fs.

Такое же сообщение выдается при попытках выполнить команду

(parted) move 4 306 2306

Тогда создаю раздел 2 и пытаюсь скопировать в него существующий  раздел 

(parted) cp 4 2

Тоже отказ! Создать на новом разделе разделе файловую систему ext3 тоже невозможно. Но ведь можно сделать это средствами операционной системы. Выхожу из программы parted, и пытаюсь выполнить команду mkfs -t ext3 /dwv/hda2. Неудачно, получаю сообщение о том, что раздел имеет нулевой размер. Вспоминаю, что при создании раздела было сообщение, что для подключения раздела надо перезапустить систему. Что и делаю. При загрузке появляются сообщения о невозможности подключить swap-раздел /dev/hda5, еще какие-то сообщения об ошибках, но система грузится успешно.  И так же успешно завершается выполнение команды

[root] mkfs -t ext3 /dwv/hda2

Снова запускаю parted и пытаюсь скопировать 4-ый раздел на 2-ой. Результат отрицательный - не умеем работать с ext3fs.

Это что касается прямого опыта использования программы. Теперь несколько слов о том, что мне удалось почерпнуть из документации (я имею в виду man и info). Кратко перечислю, что бросилось в глаза при просмотре этих документов.

  • Программа пока умеет создавать на разделах только файловые системы типа FAT, ext2 и swap (очевидно и работать умеет только с разделами таких типов).
  • Начало и конец создаваемого раздела задаются в мегабайтах. 
  • Флаги, устанавливаемые на раздел, могут принимать значения boot, root, swap, hidden raid, lvm и lba. Состояние раздела (state) может быть либо "on", либо "off".
  • Программа умеет работать под GNU/Linux и GNU/Hurd. Но имеется возможность создать загрузочную дискету, для чего нужно скачать ее образ с сайта ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.imf, после чего скопировать его на дискету командой
dd if=partboot.img of=/dev/fd0 bs=1440k

Но документация предупреждает, что загрузочный диск поддерживает не очень широкий спектр устройств.

Подведем промежуточный итог. По сравнению с программой Partition Magic (PM) программа parted не производит сильного впечатления. PM умеет работать с разными типами файловых систем (умеет их создавать, перемещать и изменять в размерах), работает в графическом режиме даже при запуске с дискеты, дискеты можно создать прямо с помощью самой программы PM, ну и так далее (все сразу и не вспоминается). Так что, пожалуй, я пока предпочту работать с Partition Magic.

------------

Что такое случилось дальше, я даже как-то не могу понять. Стал я перечитывать то, что написал выше, перепроверять свой текст (как обычно делаю со своими заметками), и, чтоб проверить, что команда parted не запускается от обычного пользователя, переключился во второй виртуальный терминал и попытался запустить там команду parted. Она, естественно, не запустилась. Но после переключения в первый терминал (где я работал от имени суперпользователя) и попытки снова просмотреть разбиение на разделы, чтобы что-то еще сделать, оказалось, что разделов на диске нет вообще. Выдавались только заголовки столбцов, приведенные в первой строке таблицы 1. А последующие строки отсутствовали. Команда rescue 4000 6000 работала минут 8, но в результате ничего не восстановила (там же у меня ext3). При попытке перезапустить систему появилось приглашение загрузчика grub и ВСЕ! Систему я грохнул! Я не уверен, что причиной явилась попытка запустить parted в двух терминалах. Восстановить свои действия по шагам (даже в памяти) я уже не могу. Но результат налицо. Меня он не сильно огорчил, поскольку я все равно собирался начать установку системы заново, с целью, в частности, ликвидировать те дефекты в разбиении диска на разделы, о которых сообщали программы parted и PM.

Заодно я хочу пересмотреть свои заметки заново, а точнее переписать их. При этом не буду разбивать их по дням, а разобью на части по темам, примерно таким образом: Инсталляция, Unicode, Настройка сервисов, Офис, Графика, Звук, Мультимедиа, Сеть, Samba, Apache, Parted и так далее. При этом еще раз все перепроверю, дополню и подредактирую.

Комментарии и отзывы на мои заметки.

Список литературы и ссылки.

  1. В.А.Костромин, "Linux для пользователя", изд. БХВ-Петербург, 2002 год, серия "Самоучитель", 650 стр.