|
- В.А.Костромин, 24.09.03, Rus-linux.net -
День одиннадцатый. Samba.
Примечание: Хоть и называется эта моя заметка "День одиннадцатый",
но рассказывается в ней о нескольких днях моих мучений с сервером Samba.
О причинах задержки я расскажу по ходу, а пока - приступим!
Пообещал я вам в прошлом выпуске моих заметок, что займусь
серверными приложениями, но, когда приступил, подумал - а что там
смотреть? Работать они, без сомнения будут, с русским языком и
кодировкой проблем быть не должно, уж у Apache точно, а у Samba - разве
что в именах файлов на примонтированных дисках. Но раз уж пообещал,
пришлось заняться запуском этих сервисов и рассказать о своих
впечатлениях.
Начал я с Samba. Вообще-то на домашнем компьютере этот сервис и не
очень нужен. Но, если (как в моем случае) есть два компьютера, причем на
обоих организована многовариантная загрузка, то Samba помогает
организовать взаимодействие между этими компьютерами при разных ОС,
запущенных на двух компьютерах. Кроме того, я использую Samba на рабочем
месте (где у меня базовая ОС тоже Линукс) для взаимодействия с
компьютерами других пользователей, которые, естественно, в основном (да
что там в основном, все!) работают под Windows. Так что в целях
тестирования дистрибутива необходимо было с этим продуктом
поэкспериментировать. Но провозился я с ним несколько дней!
Естественно, что пакет Samba у меня не был установлен (я же ставил
минимальную конфигурацию), что и подтвердила команда
rpm -qa | grep samba
Ставлю в дисковод первый диск дистрибутива, монтирую его, и
неожиданно получаю запрос пароля администратора, после ввода которого с
удивлением вижу новое окно, изображенное на рис.24.

Рис. 24.
Удивление вызвано тем, что автоматически запустилась уже знакомая нам
утилита установки и удаления программ. Я уже много раз вставлял этот
диск в дисковод и почему-то только в этот раз сработал автозапуск. Это
меня и удивило. Итак, после того, как прошла процедура проверки
состояния пакетов в системе, появилось окно, изображенное на рис. 24.
Как работать с этой утилитой, вы уже знаете (смотри "День пятый"), поэтому рассказывать об этом
снова я не буду. Я задал установку "Файлового сервера для Windows" и
заодно проверил, что Apache тоже установлен. Кроме http-сервера в группе
"Web Server" я отметил для установки также дополнительные пакеты php, php-mysql, tux и webalizer. После чего щелкнул
по кнопочке "Вперед".
Дождавшись завершения установки, я перешел в каталог /etc/samba и провел
небольшую корректировку в файле smb.conf, а именно, поменял название
рабочей группы на home:
[global]
љљљ workgroup = home
и раскомментировал строки, открывающие доступ к каталогам /home/public и /home/pc/%m (здесь %m изначает имя компьютера),
причем, поскольку в исходном файле smb.conf в
качестве общедоступного ресурса public
был указан другой каталог, имя тоже пришлось поменять:
[public]
љљљ comment = Public Stuff
љљљ path = /home/public
љљљ public = yes
љљљ writeble = yes
љљљ printable = no
[pchome]
љљљ path = /home/pc/%m
љљљ public = no
љљљ writeble = yes
љ
Кроме того, домашние каталоги пользователей изначально открыты для них
в том варианте конфигурационного файла, который был создан при установке
пакета.
После этого я запустил программу настройки сервисов (о ней я тоже
уже рассказывал), задал запуск smbd
при загрузке компьютера на 3 уровне, сохранил конфигурацию, и для работы
в текущем сеансе запустил сервис smbd кнопочкой "Запустить". Основной
мой компьютер в это время работал под управлением Windows 98.
Выполняю на тестовом компьютере (его имя в сети old-lin, а имя
основного - trend) команду
smbclient -L trend
и вижу список открытых ресурсов на компьютере trend:
Sharename Type Comment --------- ---- ------- E Disk INSTALL Disk C Disk IPC$ IPC Взаимодействие между удаленными процессами
Server Comment --------- -------
Workgroup Master --------- -------
На основном компьютере в папке "Сетевое окружение" вижу,
соответственно, два компьютера - см. рис. 25.
Рис. 25. Папка "Сетевое окружение" на компьютере trend.
Однако попытка открыть какую-либо папку на old-lin окончилась неудачей. У
меня был затребован пароль, но ни один из извесных мне вариантов пароля
(а какие еще варианты могут быть, если я полный и единственный хозяин в
моей домашней сети!) не сработал. Вот в таком положении я и застрял на
пару дней.
Вначале я считал, что причина заключается в неправильной настройке сервера
Samba и пытался настроить его известным методом "научного тыка",
меняя настройки в конфигурационном файле, причем руководствуясь только
теми комментариями, которые в этом файле даны. Добился я только того,
что компьютер old-lin
перестал отображаться в папке "Сетевое окружение" Windows-компьютера. И
тогда пришла уверенность в том, что начать придется с чтения
документации (ЧЕРТ!). У меня под рукой была книга [1], электронные
варианты двух изданий ([2] и
[4])
книги "Using Samba", а также перевод на
русский язык трех первых глав из первого издания этой книги
[3]. Вы
можете найти эти книги в "Библиотеке"
сайта, или заказать твердую копию книги [4] в Интернет-магазине "Болеро".
Кроме того, в том же магазине имеется еще одна книга на интересующую нас
тему [5]. Что касается двух первых книг, то осмелюсь порекомендовать
вам "Using Samba". В первых главах этой книги, которые,
как я уже говорил, имеются и в русском переводе, очень хорошо рассказано
о протоколе SMB, а потом и о настройках конфигурационного файла (но это уже
по-английски). Книга же [1], насколько я успел с ней познакомиться, довольно
неудобна в использовании. Но я не буду совсем уж ее ругать, тем более, что
первоначальную настройку сервера Samba и Windows-клиента я делал как раз следуя
рекомендациям этой книги.
Впрочем и [3] я тоже пролистал, и, добравшись до раздела 2.4,
я, как мне показалось, обнаружил причину своих неудач. Вот небольшая цитата из [3]:
"Если вы используете Windows 98 или Windows NT Service Pack 3 и
выше, вы должны добавить следующую запись в секцию [global] в
конфигурационном файле Samba: encrypt
passwords = yes. Дополнительно, вы должны использовать программу smbpassword (обычно
расположенную в /usr/local/samba/bin/)
для ввода комбинаций пользователь/пароль тех пользователей на сервере
Unix, которые смогут получить доступ к ресурсам через зашифрованную базу
данных клиентов Samba."
Я же не задал ни одного пользователя для сервера Samba и
закомментировал строку об использовании шифрованных паролей. Ну, что-ж,
будем исправяться!
Команду smbpassword я нашел в каталоге /usr/bin/, где нашлись еще
несколько команд, имеющих отношение к Samba. Я решил воспользоваться
командой smbadduser:
/usr/bin/smbadduser kos:kos
которая после запуска
запросила и пароль для нового пользователя. После этого я
раскомментировал строку encrypt
passwords = yes в файле /etc/samba/smb.conf и снова перезапустил
демон smbd.
Но эти действия к успеху не привели - доступа к ресурсам на old-lin
из "Сетевого окружения" по-прежнему не было. И тогда я
решил не метаться из стороны в сторону, а последовательно выполнять
рекомендации одной из книг. В качестве такой я выбрал [1].
В соответствии с рекомендациями этой книги выполняю командуљ
smbclient -L old-lin -U kos
которая выдает следующий результат:
Domain=[HOME] OS=[Unix] Server=[Samba 2.2.7a]
Sharename Type Comment --------- ---- ------- public Disk Public Stuff IPC$ IPC IPC Service (Samba Server on old-lin) ADMIN$ Disk IPC Service (Samba Server on old-lin) kos Disk Home Directories
Server Comment --------- ------- OLD-LIN Samba Server on old-lin TREND trend
Workgroup Master --------- ------- HOME OLD-LIN
В [1] еще рекомендуется войти клиентом на локальный сервер, что я и
проделал с помощью команды
smbclient //old-lin/kos
И вполне успешно, потому что после ввода пароля и появления приглашения
smb:> команда ls выдала список файлов моего домашнего каталога.
љТаким же успешным был и результат выполнения команды
smbclient //trend/C
По команде ls я увидел и список файлов на диске C: компьютера
trend. Делаю вывод: на old-lin с настройками Samba все в порядке,
причину надо искать в Windows.
Перехожу на Windows-компьютер и проверяю правильность сетвых
настроек в соответствии с рекомендациями главы 2 книги [1]. Вроде все
правильно, однако в окне "Сетевое окружение" не появляется ничего, кроме
строки "Вся сеть", щелчок мышкой по которой теперь приводит к появлению
сообщения о том, что сеть недоступна. Чем дальше - тем больше!
Снова обращаюсь к книге [1] и
нахожу рекомендацию запустить в DOS-окне команду
net use F: hostservice, которую я и запускаю в следующем виде:
net use F: old-linkos
После этого в окне Проводника вижу дискљF: с перечнем файлов љмоего
домашнего каталога на компьютере old-lin. Правда, имена файлов, которые
были заданы русскими буквами в Unicode (помните, был создан файл
"тест.utf"), отображаются непонятными комбинациями символов (см. рис.
26).

Рис.26. Компьютер old-lin со стороны Windows.
А "Сетевое окружение" по-прежнему ничего не показывает. Зато функция
"Подключить сетевой диск" в меню Проводника успешно подключает ресурс
public как диск G:.
Тогда я запускаю на old-lin (от имени суперпользователя и создав предварительно каталог
/mnt/trend) команду
smbmount //trend/C /mnt/trend
Результат вы видите на рисунке 27.

Рис. 27. Ресурс Windows-компьютера, смонтированный на Linux-машине.
И снова с русским языком не все в порядке: вместо имени каталога "Мои
документы" видим знаки вопроса. Правда, в данном случае возникает подозрение -
а не виноват ли в этом Midnight Commander?
Но разбираться с этим буду завтра, а пока можно констатировать, что и
Samba-сервер и Samba-клиент под Red Hat Linux 9.0 работают. И если не
использовать русский язык в именах файлов, то проблем нет. Но все же
необходимо еще поиграть опциями монтирования, может быть удастся
и русские символы победить.
Замечание в скобках: Я и раньше встречался с такой ситуацией, когда
3 способа обзора локальной сети, а именно,
через "Сетевое окружение", через "Поиск компьютера" и через "Подключение сетевого диска"
дают совершенно разные результаты. Логику Misrosoft в этом случае
постигнуть совершенно невозможно. Может кто-то может объяснить? А пока
приходится пробовать все три варианта, авось какой-то сработает!
Список литературы и ссылки.
- Э.Бруксбенк, Д.Хабербергер, Л.Дойл, "SAMBA. Руководство
системного администратора для профессионалов. Изд. Питер,
Санкт-Петербург, 2001 год, 416 стр.
- Jay Ts, Robert Eckstein, and David Collier-Brown, "Using
Samba, 2nd Edition" , February 2003 O'Reilly & Associates, ISBN:
0-596-00256-4 (
Копия в "Библиотеке" сайта).
- Robert Eckstein, David Collier-Brown, Peter Kelly, перевод -
Абдрашитов Вадим, "Using
Samba" , 1st Edition, O'Reilly & Associates, November 1999
(Копия в
"Библиотеке" сайта).
- Robert Eckstein, David Collier-Brown, Peter Kelly,
"Using Samba" ,
1st Edition, O'Reilly & Associates, November 1999.
(Копия в "Библиотеке" сайта").
- Колисниченко Д.Н.,
"Linux-сервер своими руками", Издательство: Наука и техника, 576 стр.
День двенадцатый. Samba и Apache.
Конфигурация сегодня та же самая - на компьютере old-lin работает сервер Samba под
RedHat Linux 9.0, компьютер trend работает под Windows.
Для начала логируюсь под root-ом и добавляю в файл /etc/fstab строку
//trend/C /mnt/trend smb codepage=cp1251,iocharset=utf8
после чего выполняю команду mount /mnt/trend. По сравнению с тем, что вы
видели на рисунке 27, изменений появилось не много: имя каталога "Мои документы"
стало отображаться не знаками вопроса, а другими символами (см. рис.28),
причем их число в точности равно числу символов в исходном названии, но все
равно русским языком это не назовешь!

Рис. 28. Результат задания кодовой страницы cp1251 в файле fstab.
Но тут я припомнил, что где-то читал, что codepage надо устанавливать
равной cp866. И вот, когда я изменил строку в fstab, придав ей следующий вид:
//trend/C /mnt/trend smb codepage=cp866,iocharset=utf8
все поправилось, и я смог нормально прочитать надпись "Мои документы",
а также имена других файлов, заданные русскими буквами (см. рис.29).

Рис. 28. Результат задания кодовой страницы cp866 в файле fstab.
Так, в одну сторону наладили, теперь надо подойти со стороны Windows.
И тут я оказываюсь в тупике. Никаких способов настройки того, в
какой кодировке отображаются имена файлов, я не знаю. Пытаюсь что-то найти,
щелкнув правой кнопкой по букве сетевого диска в Проводнике и открыв пункт
"Свойства", но там ничего не обнаруживается. Других идей в голову не приходит.
Может что-то и можно сделать с помощью реестра Windows, но в реестре я не силен.
И все-же тупик не безысходный! Давайте посмотрим на это дело как-бы со стороны.
У нас теперь Linux-машина уже может быть клиентом Windows-компьютера, то есть
хранить на нем свои файлы, пусть даже их имена заданы русскими символами
в кодировке UTF8. Может! Я этот факт специально проверил, скопировав (с помощью
Midnight Commander под Линукс) ранее созданный файл "тест.utf" на примонтированный
диск Windows-машины. При этом "читабельность" имени не пострадала (см.рис.28).
Более того, и на стороне Windows имя этого файла отображается корректно,
наравне с ранее созданными там файлами с русскими именами (см. рис.30).

Рис. 30. Файл с именем, заданным в кодировке Unicode, скопирован на примонтированный Windows-диск.
Либо при передаче файла по сети происходит автоматическая
перекодировка, либо Проводник Windows 98 умеет работать с именами в Unicode.
С другой стороны, и Windows-компьютер может без проблем работать как клиент
с Linux-сервером. В какой бы кодировке не сохранялись имена файлов на сервере,
для клиента это не имеет значения, он будет нормально видеть имена тех
файлов, которые он сам создал и сохранил на сетевом диске, предоставленном
Linux-сервером.
Проблема остается только в том случае, если один пользователь работает
с файлами прямо на Linux-сервере, а второй - на Windows-клиенте.
Это хорошо видно на рисунках 31 и 32, показывающих один и тот
же каталог на сетевом диске с двух разных "точек зрения".

Рис. 31. Каталог /home/kos/rus на Linux-сервере.

Рис. 32. Каталог /home/kos/rus со стороны Windows-клиента.
Если необходимо
организовать такое взаимодействие, то выход я пока вижу только один: давать
файлам имена, составленные из латинских символов.
На этом с Samba я заканчиваю и перехожу к http-серверу.
Apache.
Теперь мне Windows уже не нужен, так что на основном компьютере
я тоже перегружаюсь под Linux. Там у меня стоит ASPLinux, версию которого
я назвать затрудняюсь в силу того, что проводил несколько обновлений.
Но ядро запускается 2.4.18, это я могу утверждать уверенно, потому при каждом
запуске вижу меню GRUB, в котором это ядро стоит первым, а значит,
загружается по умолчанию.
Если вы помните, http-сервер был у меня установлен при инсталляции
системы, а при установке Samba я еще установил дополнительные модули.
Так что осталось только запустить демон httpd, что я и делаю. И, введя в строке
задания URL http://localhost, вижу в окне браузера тестовую страницу. На этой
странице сказано, что конфигурационным файлом для сервера является файл
/etc/httpd/conf/http.conf. Открываю этот файл и вижу в начале его предупреждение
о том, что приведенные комментарии являются только подсказками и не стоит
выполнять эти рекомендации, если вы не до конца понимаете, к чему это
приведет. Но я уже несколько раз проделывал раньше настройки http-сервера,
так что смело принимаюсь за редактирование. Я приведу вам только те строки
получившегося у меня файла (снабжая своими комментариями), которые я как-то
менял, и опущу те строки, которые остались такими, какими они были
в исходном файле, сформированном из дистрибутивного пакета (включая, естественно,
строки комментариев, начинающиеся символом #).
ServerName old-lin:80
Как сказано в комментарии, этот параметр часто определяется автоматически, но рекомендуется
задать его явно. Причем указанное имя должно быть зарегистрированным DNS-именем.
DocumentRoot "/home/kos/ve"
Это тот каталог, в котором я держу контент своего сайта на локальном диске.
<Directory "/home/kos/ve">
В комментарии сказано, что этот параметр должен быть задан равным DocumentRoot.
LanguagePriority en ru da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
В этой строке я просто добавил "ru" на втором месте в списке (в исходном
варианте "ru" по каким-то причинам вообще пропущен).
AddDefaultCharset KOI8-R
Здесь я заменил ISO-8859-1 на KOI8-R, поскольку все мои страницы
создавались именно в этой кодировке.
После сохранения файла на диске я перезапустил демон httpd и попытался
обратиться в браузере к сайту http://old-lin. Однако получил сообщение
о том, что мне не разрешен доступ к каталогу / на этом сервере. После
некоторых размышлений я понял причину: в конфигурационном файле имеется
два параметра User и Group, задающие имена пользователя и группы, от
имени которых сервер обращается к файлам на диске. А каталог
/home/kos/ve, который задан как корневой каталог Web-сайта, принадлежит
kos. После того, как я записал в этих строках:
User kos
Group kos
и еще раз перезапустил сервер, я увидел в браузере картинку, изображенную на рис.33:

Рис. 33. Первый успешный запуск локального Web-сервера.
Правда, чтобы читать по-русски, пришлось сменить кодировку
через меню "Вид/Кодировка" браузера. И повторять эту операцию (смену
кодировки в браузере) после перехода на любую другую страничку
сайта. А, между прочим, у меня на каждой страничке в мета-тегах
указано, какая кодировка используется.
Но разбираться с этим опять придется уже завтра, а сегодня ограничимся тем,
что сервер запустился и работает!
Замечу, что на завтра остался и еще один вопрос: для организации сайта я использую PHP
и не ожидал, что так легко увижу в браузере что-либо приемлемое. Думал, что вначале
придется настроить модуль работы с PHP. А тут все работает по умолчанию, без дополнительной
настройки. Этот момент еще тоже предстоит осмыслить.
День тринадцатый.
Наверное все-таки какая-то магия в числе 13 существует. Вчера спокойно
выключил свой тестовый компьютер old-lin, причем до самого выключения
все работало нормально и никаких настроек, вроде, не менял (последнее изменение,
как вы помните, было в файле /etc/fstab), а сегодня графический режим по
команде startx не запускается. Сообщает, что не находит шрифта fixed.
В чем может быть причина - непонятно. Я, правда, уже встречался с такой
ситуацией (сообщение об отсутствии fixed) когда-то и помню, что долго
тогда с этим бился. Не хочется сейчас терять на это время.
Но компьютер вообще-то работает. И приходит мысль - тогда и web-сервер
должен работать, несмотря на отсутствие графики. Для начала проверяю
(командой ps -ax | grep http), что он запущен. В ответе вижу целых 9
процессов httpd. Тогда перехожу к Windows-компьютеру, запускаю Internet Explorer и
запрашиваю old-lin. И вижу титульную страницу своего сайта (рис.34).

Рис. 34. Видим сервер old-lin в браузере с Windows-компьютера.
Правда, снова приходится задавать кодировку, чтобы видеть читаемый текст.
То есть вчерашняя проблема осталась. Но хочу обратить ваше внимание еще раз на
то, что несмотря на сбой в работе графического интерфейса, система в целом и
www-сервер в частности, остаются работоспособными. Так что настройку графического
интерфейса я решил пока отложить и продолжить разбираться с настройкой
сервера Apache.
Начать хочу с размещения контента. Хотя прошлый раз я и изменил корневой
каталог сервера на /home/kos/ve, в принципе-то это неправильно. Из-за этого
мне пришлось дать доступ серверу к моему домашнему каталогу, сменить на kos
имя пользователя, под которым работает Apache. Я не уверен, но думаю, что
делать так неправильно с точки зрения безопасности. Не получат ли в результате
потенциальные (ибо реальных у этого сайта нет) пользователи сайта доступ
ко всему содержимому моего домашнего каталога? На реальном сайте такого допускать,
пожалуй, не стоит!
А кроме того, обратите внимание на то, что при инсталляции Apache
создается каталоговая структура /var/www, в которой сразу размещается
несколько интересных файлов. Правда, размещение контента сайта в каталоге
/var мне не нравится. Дело в том, что я обычно размещаю каталог /home на
отдельном разделе диска. Если вздумается обновить систему, этот раздел не
переформатируется и все содержимое домашних каталогов пользователей (конечно,
на моем компьютере речь идет только о моем домашнем каталоге, но тем не менее)
остается в целости и сохранности. А для каталога /var я не имею привычки отводить
отдельный раздел. Поэтому в случае переустановки системы весь контент
будет уничтожен.
Поэтому сделал я так. Завел отдельный каталог /home/www, скопировал туда
все содержимое каталога /var/www и командой
chown -R kos:kos /home/www/html
сделал владельцем каталога /home/www/html пользователя kos и группу kos,
чтобы самому иметь возможность обновлять контент. Apache работает, по-видимому,
с установленным SUID-битом, так что он туда доступ получит. А владельцем
каталога /home/www/ и других его подкаталогов необходимо оставить
пользователя root (так рекомендовано в руководстве).
После этого поместил туда контент сайта и изменил следующим образом строки
конфигурационного файла /etc/httpd/conf/httpd.conf (на всякий случай
сохранив предварительно резервную копию этого файла):
DocumentRoot "/home/www/html"
<Directory "/home/www/html">
User apache
Group apache
Кроме того, провел замену в этом файле всех вхождений
/var/www на /home/www.
После всего этого перезапустил демон httpd (поскольку графика не работает,
делать это пришлось консольной командой httpd -k restart). В браузере,
запущенном на компьютере trend, снова успешно получил доступ к обновленному
сайту (специально проверил, что содержимое берется из каталога /home/www/html).
Теперь осталось разобраться с тем, почему приходится каждый раз менять
кодировку в браузере. Начал заново просматривать файл /etc/httpd/conf/httpd.conf
на предмет того, какая же опция может на это влиять, и обнаружил, что хотя
и написал в своих заметках, что изменил строку
AddDefaultCharset ISO-8859-1
на строку
AddDefaultCharset KOI8-R
но фактически она осталась неизменной. Сделал эту поправку, перестартовал
сервис и кодировка в браузере перестала сбиваться.
На этом я закончил эксперименты с http-сервером. По отношению к нему
у меня пока дополнительных вопросов нет, ибо проверить с его помощью,
как будет выглядеть моя страничка, я уже могу, а более глубокие настройки
меня пока не волнуют.
А между тем у меня возникла новая проблема, требующая решения - когда
я скопировал только часть содержимого сайта в каталог /home/www/html,
место на диске кончилось. Команда df сообщает, что раздел использован на 100%.
Между тем на диске у меня есть еще 2 раздела. В один из них я ставил
Windows XP, которая без регистрации уже отказалась работать. Так что
можно чуть расширить Линукс-раздел за счет Windows. Можно, конечно, сделать
это и программой Partition Magic, но появилось желание испробовать свободную
утилиту GNU/Parted, которая, по слухам, тоже умеет перепланировать
разделы. Я с ней еще не работал, надо попробовать. Только придется ее еще
сначала скачать из Интернет.
День четырнадцатый. 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 и так далее.
При этом еще раз все перепроверю, дополню и подредактирую.
Ждите новый вариант моих заметок.
Список литературы и ссылки.
-
В.А.Костромин, "Linux
для пользователя", изд. БХВ-Петербург, 2002 год, серия "Самоучитель",
650 стр.
|