LXF91:Ответы
(викификация, оформление) |
|||
Строка 418: | Строка 418: | ||
по ''Mono'' (они ориентированы на ''C#''), я бы рекомендовал третий путь – тем более, что он не требует лишних | по ''Mono'' (они ориентированы на ''C#''), я бы рекомендовал третий путь – тем более, что он не требует лишних | ||
скачиваний. '''ВС''' '''LXF''' | скачиваний. '''ВС''' '''LXF''' | ||
+ | |||
+ | ==* Семь раз примерь – один отрежь== | ||
+ | |||
+ | '''В:''' ''Я пытался поставить Linux на ноутбук Bliss 4020. К моменту установки на жестком диске имелось три раздела: два в формате NTFS с различной информацией, и один неотформатированный, в начале диска. Попытки проинсталлировать некоторые варианты Linux закончились неудачей 1,8 ГБ оказалось явно недостаточно для полноценной ОС. Столкнувшись с нехваткой места, я начал искать инструменты для решения этой проблемы и нашел '''Paragon Partition Manager 7.0.1274'''.'' | ||
+ | |||
+ | ''Я решил увеличить свободное место путем урезания одного из разделов NTFS. Процесс уменьшения раздела прошел безболезненно, а вот процесс перемещения раздела, к моему большому сожалению, закончился зависанием.'' | ||
+ | |||
+ | ''Теперь у меня четыре раздела. Первый немного увеличился. Второй стал меньше, но главное, в нем все перепутано, не говоря уже о том, что файлы не читаются. Некоторые программы заявляют, что они из 30 ГБ доросли до пары десятков ТБ.'' | ||
+ | |||
+ | ''В этом и состоит вопрос. Подскажите способ восстановления раздела, лучше конечно, “непрориетарный”. Разумеется, на свободившееся место я ничего ставить не стал. Пользуюсь Knoppix 3.7 RE.'' | ||
+ | |||
+ | '''Сергей Васильевич''' | ||
+ | |||
+ | '''О:''' Ситуация, конечно, непростая, но довольно распространенная. Бывает, что при выполнении низкоуровневых операций с диском, пользователь или программа ошибается. Так или | ||
+ | иначе, доступ к данным может быть потерян. | ||
+ | |||
+ | Восстановление удаленных файлов в общем-то стало процедурой, привычной для многих пользователей – существует масса вспомогательного ПО для | ||
+ | различных операционных систем, что заметно упрощает задачу. Однако, работа с разделами жесткого | ||
+ | диска все еще остается уделом немногочисленных | ||
+ | хакеров и требует более глубокого понимания сути | ||
+ | проблемы, технологий и форматов данных, вовлеченных в процесс. | ||
+ | |||
+ | Что бы понять, как восстановить утраченные данные, рассмотрим процедуру «передвижения» раздела по диску. | ||
+ | |||
+ | [[Изображение:LXF91_answ.png|LXF91_answ.png]] | ||
+ | |||
+ | В процессе «передвижения» производится поблочное копирование данных, начиная с той части | ||
+ | раздела, которая находится «ближе» к пустой области. На приведенном рисунке раздел перемещается | ||
+ | «вправо», поэтому копирование происходит «справа налево». Если бы раздел перемещался влево, копирование бы началось с начального, «левого» блока данных. Выбор направления и очередности копирования важен для обеспечения целостности данных. | ||
+ | Если бы копирование производилось в ином порядке, перемещаемые данные могли бы переписать | ||
+ | содержимое раздела до его копирования. | ||
+ | |||
+ | После того, как раздел будет целиком перемещен, программа вносит изменения в таблицу разделов жесткого диска. Она расположена в нулевом секторе и имеет следующие поля: | ||
+ | |||
+ | ; По адресу 0x0000 находится код начального загрузчика; | ||
+ | ; По адресу 0x01be находятся 4 записи таблицы разделов жесткого диска (то, что под Linux видно, как '''/dev/hdx1, /dev/hdx2, /dev/hdx3, /dev/hdx4'''), каж дая длиной в 16 байт; | ||
+ | ; По адресу 0x01fe находится двухбайтовая сигнатура MBR (0x55 0xaa). | ||
+ | |||
+ | Если в системе используются расширенные разделы, то в начале каждого расширенного раздела | ||
+ | помещается дополнительная таблица разделов, имеющая следующий формат: | ||
+ | ; По адресу 0x01be находится запись о первом разделе размером 16 байт; | ||
+ | ; По адресу 0x01ce находится запись о следующей расширенной таблице разделов, длиной в 16 байт; | ||
+ | |||
+ | Каждая запись таблицы разделов по смещению 0x0001 содержит трехбайтовый адрес начала раздела в формате '''CYL/HEAD/SECT''' | ||
+ | ('''цилиндр/поверхность/сектор'''). | ||
+ | |||
+ | К сожалению, не было указано, перемещение | ||
+ | какого раздела выполнялось: стандартного или расширенного. Если перемещался основной раздел, то | ||
+ | все операции будут осуществляться только с главной записью таблицы разделов. Если же перемещался раздел, расположенный внутри расширенной области (логический диск в терминах Windows), то | ||
+ | были затронуты и расширенные таблицы разделов. | ||
+ | |||
+ | Перед выполнением работ по восстановлению | ||
+ | рекомендуется сделать резервные копии. Конечно, | ||
+ | лучше скопировать посекторно весь жесткий диск, | ||
+ | но если вы не можете позволить себе такой роскоши, | ||
+ | сохраните хотя бы секторы с таблицами разделов. | ||
+ | |||
+ | Сделать это можно командой ''dd''. | ||
+ | |||
+ | Загрузившись с компакт-диска Knoppix, сохраните основную таблицу разделов: | ||
+ | |||
+ | dd if=/dev/had of=/path/to/mbr/back.up bs=512 count=1 | ||
+ | |||
+ | Для сохранения резервной копии расширенной | ||
+ | таблицы разделов, необходимо передать команде | ||
+ | ''dd'' параметр '''skip''', указывающий ее смещение. Как | ||
+ | было сказано выше, положение расширенной таблицы разделов можно выяснить в главной таблице | ||
+ | разделов. | ||
+ | |||
+ | Значение параметра '''skip''' равняется LBA-адресу | ||
+ | начала раздела. Что бы выяснить LBA-адрес, зная | ||
+ | адрес в формате '''цилиндр/поверхность/сектор''', воспользуйтесь следующей формулой: | ||
+ | |||
+ | LBA = ( ( CYL * HPC + HEAD ) * SPT ) + SECT – 1 | ||
+ | |||
+ | где '''CYL''' – номер цилиндра, '''HPC''' – количество | ||
+ | поверхностей в одном цилиндре, '''HEAD''' – номер | ||
+ | поверхности, '''SPT''' – количество секторов на дорожку, '''SECT''' – номер сектора. | ||
+ | |||
+ | После того, как резервная копия будет создана, можно приступать к попытке восстановления | ||
+ | данных. | ||
+ | |||
+ | На имеющемся в Вашем распоряжении диске с Knoppix есть утилита ''testdisk''. Ее мы и будем | ||
+ | использовать для восстановления таблицы разделов. Запустив ''testdisk'', выберете создание нового | ||
+ | файла журнала, затем – ваш диск и тип таблицы | ||
+ | разделов (Intel). | ||
+ | |||
+ | В появившемся меню выбирайте пункт '''Analyze''' и '''Search''' – это позволит найти заголовки разделов. | ||
+ | Затем сохраните новую таблицу разделов на жесткий диск, выбрав пункт меню '''write'''. | ||
+ | |||
+ | Если зависание ''Paragon Partition Manager'' произошло на этапе изменения таблицы разделов жесткого диска, то после выполнения этой процедуры, | ||
+ | все ваши диски будут доступны. Если же на момент | ||
+ | зависания, утилита выполняла копирование данных | ||
+ | раздела, предстоит дополнительная работа. | ||
+ | |||
+ | Как видно из рисунка, в процессе «сдвига» раздела образуется «дырка». Нашей задачей является | ||
+ | «приклеить хвост раздела к голове» и восстановить данные. Дабы избежать случайного разрушения, рекомендую снова сделать резервную копию. | ||
+ | Скопируйте весь раздел, включая «голову», «дырку» и «хвост» в отдельный файл. Далее мы будем | ||
+ | использовать его для работы. | ||
+ | |||
+ | Обратите внимание, что при копировании блоков раздела утилитой перемещения образуются дублирующие блоки данных. В нашем случае, если зависание произошло в процессе записи, последний | ||
+ | записываемый блок мог быть сохранен лишь частично. Исходя из этого, необходимо искать дубль | ||
+ | блока, записанного предпоследним. К сожалению, | ||
+ | компания Paragon Software не публикует данных о | ||
+ | размере блока, используемого при работе, однако, | ||
+ | начав с блока, равного одному сектору (512 байт), | ||
+ | можно впоследствии уточнить результат, сравнив | ||
+ | соседние блоки. | ||
+ | |||
+ | Для поиска можно использовать любой Hex-редактор или попробовать написать скрипт на | ||
+ | Вашем любимом языке. | ||
+ | |||
+ | Обнаружив «начало конца раздела», вам останется лишь «приклеить» его к голове, используя все | ||
+ | ту же команду ''dd'', на сей раз – с параметрами '''skip''' и | ||
+ | '''seek'''. | ||
+ | |||
+ | Желаю удачи! Но впредь – делайте резервные копии! '''ВИ''' | ||
+ | |||
+ | ==* Ограничение прав доступа== | ||
+ | |||
+ | '''В:''' ''Можно ли ограничить число процессов, запускаемых одним пользователем в своей оболочке? У меня Ubuntu Dapper.'' | ||
+ | |||
+ | '''RD, из форумов LXF''' | ||
+ | |||
+ | '''О:''' Это делается двумя немного разными способами, в зависимости от того, использует ли Ваша система PAM (Pluggable | ||
+ | Authentication Modules, Подключаемые модули авторизации). Ubuntu использует PAM по умолчанию, поэтому пределы устанавливаются в '''/etc/security/limits.conf'''. Чтобы ограничить Фреда десятью процессами, добавьте строчку вроде этой: | ||
+ | |||
+ | fred hard nproc 10 | ||
+ | |||
+ | Для систем, в которых нет PAM, лимит можно | ||
+ | установить в '''/etc/limits''', подобным способом: | ||
+ | |||
+ | fred U10 | ||
+ | |||
+ | В любом случае можно подставить вместо имени '''*''' (звездочку), чтобы ограничить всех, кроме | ||
+ | администратора. | ||
+ | |||
+ | Лимиты, установленные в этих файлах, действительны для каждого входа в систему (а не для | ||
+ | пользователя «в целом»), но не забывайте о том, | ||
+ | что вход в графический рабочий стол сам по себе | ||
+ | требует запуска нескольких процессов. Терминал, | ||
+ | открытый из этого рабочего стола, по умолчанию | ||
+ | не будет считаться отдельным входом, поэтому | ||
+ | ограничивайте процессы умеренно. Чтобы узнать, | ||
+ | сколько процессов запускает пользователь при | ||
+ | стандартной загрузке, наберите | ||
+ | |||
+ | sudo ps -u fred | wc –l | ||
+ | |||
+ | Пример PAM включает жесткий лимит, а вообще PAM устанавливает два типа лимитов: жесткий и | ||
+ | мягкий. Жесткий неоспорим, менять его разрешено | ||
+ | только администратору – но пользователь может | ||
+ | расширить лимит между мягким и жестким ограничениями командой ''ulimit'' (считайте мягкий лимит | ||
+ | стандартным ограничением, а жесткий – абсолютным максимумом). Оба лимита можно уравнять | ||
+ | знаком – во втором поле строки '''/etc/security/limits.conf'''. Ограничить можно не только число процессов: можно ограничить использование ресурсов памяти или процессора. См. ''man'' для '''limits.conf''' и | ||
+ | ''ulimit'', там можно найти (намного) более подробные | ||
+ | сведения. '''НВ''' | ||
+ | |||
+ | =Краткая справка о… SCREEN= | ||
+ | |||
+ | :Интеллектуальное управление терминалами в Linux. | ||
+ | |||
+ | Освоившись с командной строкой Linux, вы будете | ||
+ | пользоваться терминалами все чаще, иногда несколькими одновременно. Вкладочный X-терминал – неплохой способ слежения за несколькими терминальными | ||
+ | сессиями, но от него не много толку при удаленном | ||
+ | доступе и виртуальной консоли. ''Screen'' – оконный | ||
+ | менеджер для терминалов, позволяющий запускать | ||
+ | несколько сессий на одном терминале; но не только. | ||
+ | |||
+ | Наберите в терминале ''screen''. С виду это похоже на | ||
+ | очистку экрана, но на самом деле вы окажетесь в другом терминале. Наберите ''ls –l'' для просмотра текущей | ||
+ | директории, затем нажмите '''Ctrl+A''' и '''C''' – все исчезнет. | ||
+ | Перейдите в другую директорию, снова запустите ''ls'' и | ||
+ | нажмите '''Ctrl+A N''' – и вы опять в прежнем окружении. | ||
+ | '''Ctrl+A''' и '''C''' создают новый терминал, оставляя прежний | ||
+ | в работе, '''Ctrl+A''' и '''N''' переключают между ними. Теперь | ||
+ | нажмите '''Ctrl+A''' и '''D''' для выхода из ''Screen'' и возврата в | ||
+ | оболочку, затем откройте другой X-терминал и наберите ''screen –r'' для возврата в прежнюю сессию ''Screen''. | ||
+ | |||
+ | ''Screen'' не ограничивается локальными подключениями – он хорошо работает через ''SSH''. Например, | ||
+ | можно подключиться к домашнему компьютеру с работы, запустить ''Screen'', загрузить новую версию | ||
+ | некоторой программы, начать компиляцию и покинуть ''Screen''. Позже можно снова войти в сессию ''Screen'' с | ||
+ | помощью ''screen –r'' (там же, на работе, или вернувшись | ||
+ | домой) и узнать, как идут дела. Даже когда ''SSH''-подключение закрыто, программы, запущенные в ''Screen'', | ||
+ | продолжают выполняться. | ||
+ | |||
+ | Есть масса других возможностей; все они подробно | ||
+ | описаны в ''man''. Можно разделить окно с '''Ctrl+A''' и '''S'''; | ||
+ | перейти в новую область с '''Ctrl+A''' и '''Tab'''; воспользоваться '''Ctrl+A''' и '''N''' (или '''C''') для перехода в новый терминал ''Screen''. Можно разделять окно до тех пор, пока будет | ||
+ | свободное место, наблюдая выполнение команды во | ||
+ | время взаимодействия с интерактивной программой в | ||
+ | другой части окна. | ||
+ | |||
+ | =Часто задаваемые вопросы… Rsync и Unison= | ||
+ | |||
+ | :Синхронизация двух директорий – движение не одностороннее! | ||
+ | |||
+ | '''Что такое rsync?''' | ||
+ | |||
+ | Это способ синхронизации содержимого | ||
+ | двух директорий, причем обе будут полностью идентичны. ''cp'' копирует все подряд, а ''rsync'' – только те файлы, которые | ||
+ | различаются. Если изменились большие | ||
+ | файлы, копируются только измененные | ||
+ | части. | ||
+ | |||
+ | '''Какой синтаксис у этой команды?''' | ||
+ | |||
+ | rsync --archive --delete /path/to/source/ /path/to/dest/ | ||
+ | |||
+ | точно скопирует первую директорию во | ||
+ | вторую. Параметр '''--delete''' удаляет | ||
+ | файлы, которых нет в первой директории, а '''--archive''' копирует также права | ||
+ | доступа и временные отметки. | ||
+ | Замыкающие слэши важны: они указывают на то, что синхронизируется содержимое директорий. Без слэшей программа просто скопирует одну директорию в | ||
+ | другую. | ||
+ | |||
+ | '''Можно ли синхронизировать директории разных компьютеров? У меня локальная копия web-сайта, и не хотелось бы копировать все подряд, когда изменится только пара файлов.''' | ||
+ | |||
+ | Если у вас есть ''SSH''-доступ к web-серверу, можно сделать так: | ||
+ | |||
+ | rsync --archive --delete /my/local/site server:/path/to/site/ | ||
+ | |||
+ | Если один из путей или оба содержат | ||
+ | '''hostname''' компьютера, ''rsync'' использует | ||
+ | для передачи удаленную оболочку. По | ||
+ | умолчанию это ''SSH'', но можно заменить | ||
+ | ее любой другой – даже ''RSH'', если вы не | ||
+ | против, чтобы ваши файлы во время | ||
+ | передачи читал кто ни попадя! | ||
+ | |||
+ | '''А как синхронизировать директории между Linux и Windows-компьютерами?''' | ||
+ | |||
+ | ''rsync'' работает и под Windows, но параметр '''--archive''' на разделах FAT действовать не будет, ведь в FAT не сохраняются | ||
+ | права доступа. Подробности можно | ||
+ | узнать в man-странице программы. | ||
+ | |||
+ | '''Что если файлы изменились на обоих компьютерах, и данные тоже нужно сохранить на обоих?''' | ||
+ | |||
+ | Для этого понадобится специальная программа, например, ''Unison'' (http://www.cis.upenn.edu/~bcpierce/unison). Для синхронизации ''Unison'' пользуется той же ''rsync'', а для передачи – ''SSH'', но она предназначена для двусторонней синхронизации. Если на двух компьютерах изменилисьнекоторые файлы, каждый компьютер получит новейшую версию. | ||
+ | |||
+ | '''Умно придумано; а если я отредактирую один и тот же файл на обоих компьютерах?''' | ||
+ | |||
+ | Программа не умеет читать мысли и | ||
+ | решать, какая версия вам дороже, она | ||
+ | просто сообщит, что обе копии редактировались, и спросит, какую из них сохранить. ''Unison'' отслеживает все изменения, | ||
+ | и заметит, что файл был изменен на | ||
+ | обоих компьютерах. | ||
+ | |||
+ | '''Придется учить тысячу параметров командной строки?''' | ||
+ | |||
+ | Придется. А можно воспользоваться GUI, | ||
+ | и просто указывать да щелкать мышью. | ||
+ | GUI работает только на том компьютере, | ||
+ | который инициирует передачу, поэтому | ||
+ | можете использовать его для синхронизации со своим web-сервером, не забудьте только установить там ''Unison''. |
Текущая версия на 12:46, 2 декабря 2008
|
|
|
[править] Ответы
- Есть вопрос по Open Source? Пишите нам по адресу: [answers@linuxformat.ru]
[править] Военная хитрость
В: Пожалуйста, помогите! Меня зовут Джек. У меня проблема. Моя материнская плата – P4S800D, на чипсете SIS655FX, и у меня два диска: на одном, IDE, стоит OpenSUSE 10.2, на другом, SATA – Windows. Инсталлятор SUSE 10.2 определяет только диск IDE. Как настроить и смонтировать SATA в OpenSUSE 10.2? Я нашел драйвер на официальном сайте SIS, но полу-чил ошибку make, так как она не смогла найти scsi_request.h. Проблема ядра?
Джек [Jack]
О: Привет, Джек! SATA пока что вызывает проблемы у многих. По нашему опыту, простейшее решение – переключить диски в режим совместимости через BIOS, закончить инсталляцию и попробовать вернуть все обратно. Многие дистрибутивы затрудняются «встать» на обычные SATA-диски, но после установки прекрасно работают – особенно после закачки новейших заплаток. Убедитесь также, что у Вас не установлен программный RAID, с ним тоже бывают проблемы. В крайнем случае, попробуйте добавить insmod=ide-generic во время инсталляции. Удачи! ПХ
[править] Видео слайд-шоу
В: Я собрался сделать видео-CD из моих фотогафий. Для начала хочу просто поместить фото на видео-CD, чтобы можно было просматривать их на обычном DVD-плейере или телевизоре. Потом добавлю звук.
Похоже, что инструментов для этого хватает, но мне не удалось найти четкого описания этого процесса. Например, с FFmpeg удалось сделать из моих фотографий кадры длительностью около 0.4 с. Мне надо, чтобы каждый кадр длился около 3 секунд (например), но я не смог найти способа изменить длительность. Convert выглядит многообещающе, но не дружит с mpeg2encode.
У меня Ubuntu Dapper. Заранее благодарен за любые советы.
Daudi
О: Использовать DVD было бы лучше: и больше фото поместится на один диск, и качество будет заметно выше. Процесс в основном одинаков для DVD и видео-CD, но все инструменты ориентированы на DVD, поэтому для видео-CD потребуется перенастройка.
Простейший способ поместить слайд-шоу на диск – это воспользоваться слайд-шоу DigiKam или KPhotoAlbum (оба используют один и тот же модуль расширения) для создания DVD-слайд-шоу из фотоальбома или отдельных фотографий. Возможности их ограничены: можно лишь менять задержку между кадрами и время затухания – да и то единообразно для всех фотографий.
Если хочется большего, то DVD-Slideshow (домашняя страница http://dvd-slideshow.sourceforge.net) – лучший выбор. Это набор скриптов для генерации DVD из картинок и звука. Главный скрипт, dvd-slideshow, использует список изображений и эффектов в текстовом формате, для формирования DVD VOB-файла. Создайте входной файл DVD-Slideshow c помощью dir2slideshow: его можно отправить прямо на dvd-slideshow или отредактировать для изменения длительности кадров и эффектов. Затем организуйте слайд-шоу и добавьте музыку с помощью dvd-slideshow. Просмотреть VOB-файл перед записью на диск можно через MPlayer.
Наконец, dvd-menu может создать – угадайте, что? – DVD-меню для одного или более слайд-шоу; также есть возможность вызова dvdauthor для изготовления ISO-образа, готового к записи на диск. Допустим, директория, из которой нужно сделать слайд-шоу, называется pics. Тогда понадобятся команды:
mkdir slideshow dir2slideshow -o slideshow -t 5 -c 1 –n myslideshow pics # отредактируйте myslideshow.txt для настройки длительности или эффектов dvd-slideshow -a somemusic.ogg myslideshow.txt dvd-menu -t “My slide show” -f myslideshow.xml –iso
Мы получим слайд-шоу с длительностью кадра 5 с и затуханием 1 с, записанное в ISO-образ, готовый для записи на DVD. Можно изготовить DVD с единственным слайд-шоу, воспроизводимым непосредственно, без меню. По умолчанию формат выхода – NTSC; для формата PAL DVD понадобится добавить к каждой команде -p или поместить
pal=1
в ~/.dvd-slideshowrc.
Если нужно создать DVD-совместимый MPEG, воспользуйтесь FFmpeg для перекодирования созданного Вами в dvd-slideshow VOB-файла, вот так:
ffmpeg -target pal-vcd -i dvdslide.vob vcdslide.mpg
НБ
[править] Потерянная ссылка
В: Мне необходимо создать ссылку с одной директории на другую, чтобы при обращении программы к директории X ей предъявлялась директория Y. Я пробовал ln с различными параметрами, но она всякий раз создает ссылку внутри целевой директории.
Причина, по которой мне это нужно – обновление с OpenOffice.org 2.0 до OOo 2.1, в результате чего создалась новая директория /opt/openoffice.org2.1. Когда я щелкаю мышью на текстовом документе или таблице в KDE, программа пробует войти в /opt/openoffice.org2.0, которой больше нет. Если я делаю cd в /opt и набираю
ln -s openoffice.org2.0 openoffice.org2.1
создается символическая ссылка OpenOffice.org 2.0 внутри директории 2.1. Я уже все перепробовал – не работает, и точка!
OnlyTheTony
О: В Вашей работе с ln – две проблемы. Во-первых, синтаксис: правильно будет ‘ln -s источник назначение’. Я тоже попадал в эту ловушку: когда я переходил с ОС, использующей обратный порядок, некоторое время приходилось думать дважды. Аргументы должны идти в том же порядке, что для cp или mv: мне так легче было запомнить.
Другая проблема – если в качестве целевой указать существующую директорию, ln предполагает, что ссылку Вы хотите создать внутри нее. Это перекликается с cp и mv, они тоже копируют или перемещают файл внутрь целевой директории. Удалите целевую директорию, и ln создаст нужную ссылку:
ln -s openoffice.org2.1 /opt/openoffice.org2.0
Заметьте, что в символьных ссылках источник задается относительно назначения, поэтому даже если эта команда исполняется не в директории /opt – а значит, директория или файл OpenOffice.org2.1 не сущес- твует – ln все равно сработает.
А еще можно зайти в Центр управления KDE, раздел файловых ассоциаций, и указать верный путь вызова программ ooffice2. НБ
[править] Количество и качество
В: У меня 64-битный Ubuntu 6.10 на AMD64, я занимаюсь кодированием звука. Я затеял небольшой тест, чтобы посмотреть, что эффективнее: последовательное кодирование четырех директорий с FLAC-файлами (четыре файла одного размера в каждой директории) в OGG или параллельное. Я написал скрипты на Bash, чтобы измерить производительность. Первый скрипт работал около девяти минут (чуть больше двух минут на директорию), но второй тоже занял девять минут, хотя в каждой директории был девятиминутный объем кодирования.
Я уверен, что с какого-то момента параллельное выполнение задач становится медленнее, чем последовательное. Просматривая вывод top, я заметил, что при параллельной обработке четыре экземпляра flac были запущены одновременно, и каждый занимал около 20% процессорного времени. При последовательной работе единственный процесс flac использует намного больше возможностей CPU.
Проводились ли какие-либо тесты на эту тему? При работе с тысячами файлов приходится экономить время.
Пол Хок [Paul Hoch]
О: Распараллеливание задач требует накладных расходов, обусловленных переключением между ними и управлением памятью, но при небольшом количестве задач это несущественно. Если Вы попробуете запустить одновременно 20 или 30 процессов, то заметите значительное замедление, особенно если будет задействован раздел подкачки [swap].
Кодирование файлов с одного жесткого диска на другой сильно нагружает процессор и память, мало затрагивая сами диски – спецы называют эти задачи ‘compute-bound’ или ‘CPU-bound’ (то есть, CPU-зависимыми). Напротив, извлечение данных с CD или DVD сильно зависит от скорости передачи, а требования к процессору невысоки – такие задачи называют ‘IO-bound’ (зависимыми от ввода-вывода). Поэтому выполнение двух однотипных задач ‘CPU-bound’ или ‘IO-bound’ одновременно почти не дает преимущества по сравнению с последовательной работой, а вот одновременная работа двух процессов разной зависимости значительно повышает производительность.
Если Вы кодируете аудио с оптики или другого источника с малой скоростью передачи, можно значительно ускорить процесс распараллеливанием, примерно так:
Rip track 1 Encode track 1 in the background Rip track 2
Многие CD-рипперы/кодеры так и делают, например, мои любимые Grip (http://www.nostatic.org/grip) для графической среды или Abcde (http://www.hispalinux.es/~data/abcde.php) для консоли. Если аудиофайлы уже на жестком диске, не запускайте много процессов одновременно, но держите как минимум два – один процесс с необходимостью будет прерываться.
Единственный полезный тест – тот, что близок к реальным условиям, то есть выполнение Вашей собственной работы с хронометражем, как Вы и поступили.
Не забывайте, что работа по кодированию проводится в фоне, поэтому, если у Вас большой объем или работа очень срочная – на тесты может уйти больше времени, чем можно сэкономить на повышении производительности компьютера. Вы уже установили, что распараллеливание малого числа процессов не дает результата. Увеличение их количества делу не поможет – разве что у вас несколько многоядерных процессоров. НБ
[править] Где взять GUI
В: У меня стабильная Linux-система, являющаяся моим настольным ПК и обслуживающая малую домашнюю/офисную LAN. У меня есть несколько свободных разделов на жестком диске, где я пробую новые дистрибутивы. Из любопытства я поставил Fedora Core 6 (LXF88). Труднее всего в этих экспериментах было заставить работать беспроводную карту PCI. На ней стоит бесславный чипсет Broadcom BCM4318, который с Linux не очень-то дружит.
Следуя подсказкам и советам, для активации карты я сделал следующие шаги. Во-первых, инсталлировал драйверы с помощью NdisWrapper. Во-вторых, отключил драйвер Fedora BCM43xx. В-третьих, по инструкции SourceForge, отредактировал два сетевых файла [modprobe.conf и ifcfg-eth0]. Благодаря этому мой eth0-интерфейс работает подобно wlan0 в других дистрибутивах. Карта запускается из командной строки вот так:
/etc/init.d/network restart
Для завершения работы я вызвал NetworkManager из системного меню KDE. Хотел через диалоговое окно настройки сети нанести последние штрихи, но оно оказалось пустым. Никакого NIC-интерфейса нет, но при этом вся система действует безупречно. Я просто купаюсь в техническом и мультимедийном великолепии широкополосной сети. Как можно графически управлять тем, что уже сделано в темных глубинах системы из командной строки?
Джим МакФарлан [Jim Macfarlane]
О: Хоть Вы и обращались с Вашей картой несколько нестандартно, она работает – браво! А Вы настроили псевдоним NdisWrapper', дав от имени root следующие команды?
ndiswrapper -ma echo “alias wlan0 ndiswrapper” >> /etc/ modprobe.conf
А главное, создали ли Вы после всего этого новый сетевой интерфейс для устройства с помощью инструмента Fedora system-config-network? Если все это сделано, а Network Manager все еще не работает, попробуйте запустить его при загрузке, вот так (тоже от имени root):
chkconfig NetworkManager on chkconfig NetworkManagerDispatcher on
Network Manager – совершенно новый инструмент, к тому же он постоянно развивается. Ваши проблемы могут быть решены в Fedora 7, ожидаемой в апреле. ПХ
[править] Хочу большой!
В: Я только что установил Fedora Core 6. Как увеличить системный шрифт?
Саид Фарах [Said Farah]
О: О, это простой вопрос, я такие люблю! Системный шрифт в Fedora настраивается в меню System > Administration (Система > Администрирование), пункт Fonts (Шрифты). Когда появится окно Fonts Preferences (Параметры шрифта), щелкните на кнопке Details (Подробнее) в правом нижнем углу, затем найдите разрешение экрана в верхнем левом углу нового окна. Увеличение этого числа делает шрифт больше, а вместе с ним увеличивается размер кнопок, окон, меню и др. Не забудьте записать первоначальное разрешение – вдруг к нему придется вернуться. ПХ
[править] FullMAC – это как?
В: Недавно установил Fedora Core 6 в двойную загрузку на мой HP Pavilion t3065 (Intel Pentium4 3.4 ГГц с 1 ГБ ОЗУ). Все было прекрасно, пока я не попробовал соединиться со своим беспроводным G-модемом Belkin (802.11g – model F5D7632uk ver 1000). Долго чесал в затылке и копал в Интернете – и смекнул, что нужен беспроводной драйвер. Допросив сетевой контроллер, я определил следующие параметры чипсета:
Intersil Corporation ISL3890 [Prism GT /Prism Duette]/ ISL3886 [Prism Javelin /Prism Xbow] (rev 01). Subsystem: Accton Technology Corporation WN4201B. Flags: bus master, medium devsel, latency 64, IRQ169. Memory at cfffc000 (32 bit, non-prefetchable) Size 8k. Capabilities: (dc) Power management version 1.
Просмотрел множество разных Интернет-ресурсов на тему подключений с этим чипсетом (включая http://www.prism54.org), и растерялся. Какой драйвер установить – FullMAC или Islsm? Каждый драйвер пригоден для одного или другого варианта ISL, но не для обоих! Возникает вопрос: не все ли равно, какой брать?
Допустим, мне удалось связать Linux с моим модемом. Поддерживает ли Fedora или другой дистрибутив шифрование WPA-PSK, или пока нет ничего лучше 128-битного шифрования? Как можно использовать WPA-PSK на моем компьютере?
Джонатан Пис [Jonathan Peace]
О: Несколько лет назад Prism выпустила новую версию чипсета, перекладывавшего часть работы на основной процессор (другими словами, это был облегченный, удешевленный чипсет вроде используемых в win-модемах). Он стал известен как SoftMAC-дизайн, и нарушал совместимость с драйверами Prism54, пока не появился Islsm. Этот драйвер работает как с SoftMAC, так и с прежними чипсетами FullMAC. Драйвер FullMAC лучше работает с устройствами FullMAC, зато SoftMAC не признает вообще. К сожалению, трудно сказать, что именно есть у Вас: ISL3890 работает с драйвером FullMAC, а для ISL3886 необходим Islsm.
FullMAC включен в стандартное ядро Fedora Core 6. Вам нужно только установить прошивку (firmware), ее можно загрузить с http://prism54.org/fullmac.html и протестировать, открыв терминал и набрав
su
(в ответ на запрос, введите пароль администратора)
modprobe prism54 lsmod | grep prism54
Если вывод последней команды будет непустым, драйвер есть в наличии и загружен – попробуйте соединиться с модемом. Но сначала нужно отключить шифрование (WEP и WPA) – настройте соединение, а потом шифруйте (без работающего подключения и шифровать-то нечего). Если драйвер Prism54 не справится – попробуйте Islsm. Для этого тоже понадобится прошивка, но уже другая: ее можно взять на http://prism54.org/newdrivers.html. Подробные инструкции включены в пакет.
Шифрование WPA-PSK в Linux реализовано в форме wpa_supplicant (http://hostap.epitest.fi/wpa_supplicant). На Fedora Core пакеты для этого есть – нужно установить wpa_supplicant и wpa_supplicant-gui. Необходим только первый, второй нужен лишь для графического управления конфигурацией, чтения, редактирования и сохранения файлов настройки. НВ
[править] Nvidia не видит
В: У меня AMD64 3000+ CPU, с 1 ГБ ОЗУ, видеокарта Nvidia GeForce PCI-express и жесткий диск 320 ГБ SATA. Во время установки Fedora Core 6 все было хорошо, пока не дошло до «starting udev (OK)» – тут экран погас. Жесткий диск вроде бы работал, но экран был пуст; затем вышло сообщение: «Mode not supported».
Сперва я подумал, что виновата видеокарта, но при инсталляции Elive 0.5 все заработало. Попробовал снять видеокарту и пользоваться встроенной картой VIA – ничего; попробовал другой экран – ничего. Попробовал загружаться со всеми возможными параметрами, доступными для экрана в Fedora – ничего не работало. Пробовал принудительно установить разрешение экрана (linux resolution=1024x768) и запускал linux noprobe.
Среди сообщений об ошибках, которые можно отнести к данной проблеме, были следующие: «PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved» и «PCI:Not using MMCONFIG». Уж не знаю, могут ли они помочь, раз все это не мешает работать Elive. Не могли бы вы помочь мне с установкой Fedora?
Daryl
О: Похоже на то, что Fedora пробует активировать встроенный драйвер Nvidia, но он не в ладах с разрешением экрана. Быстро устранить проблему поможет переключение на драйвер VESA, который должен надежно работать с любой графической картой. Откройте /etc/X11/xorg.conf как администратор и найдите следующую строку:
Driver “nv”
Замените nv на vesa и перезагрузитесь. По крайней мере, получите рабочую систему.
А вот теперь, если VESA не годится для Вашей повседневной работы, если Вы хотите попробовать AIGLX или сыграть в 3D-игру, лучше будет установить официальный драйвер Nvidia с http://www.nvidia.com. Он намного стабильнее встроенного в Fedora, и должен устранить Вашу проблему. НБ
[править] Что делать с DeLi Linux
В: Приятно было найти DeLi Linux на диске LXF86, ведь у меня есть 486 PC для пробы. Прожиг CD и запись загрузочной дискеты прошли удачно, и инсталляция продолжалась до тех пор, пока не появилась панель с вопросом: «Where is delibase.tgz?» (Где находится delibase.tgz?). Среди вопросов на панели был и такой: «I can scan for CD-Rom drives. Should I try to do so?» (Можно просканировать CD-приводы. Сделать это?).
Щелкнув Yes, получаю другую панель с предложением «Enter the device which contains the DeLiLinux Base Package delibase.tgz» (Укажите устройство, на котором содержится основной пакет DeLi Linux, delibase.tgz). Что бы я потом ни вводила, следовало сообщение: «ERROR! Failed to mount the source device. Exiting …» (ОШИБКА! Невозможно смонтировать устройство. Выход…) – и все. Скопировала этот файл на C:\ (одно из предлагаемых расположений на панели «Where is… и т.д.» – но когда пробую ввести C:\, получаю лишь C:#.
Мэри Перрин [Mary Perrin]
О: Похоже, инсталлятор не может опознать CD-привод: это бывает с нестандартными устройствами ATAPI IDE. Раз Вам понадобилась загрузочная дискета, скорее всего, так и есть. Невозможность набрать C:\ почти наверняка вызвана неверной раскладкой клавиатуры, из-за нее вводятся не те символы. Символ \ там есть, а чтобы его найти, просто переберите несколько клавиш, до получения нужного результата. Похожие проблемы были у меня с поиском символов # и @ при загрузке с Live CD, применявшего US-раскладку к моей UK-клавиатуре. Охоты за клавишами можно избежать, указав корректную клавиатуру на этапе инсталляции, иначе во время работы на DeLi Linux будут те же проблемы.
Удачи Вам с DeLi Linux: заставить хоть что-нибудь работать на 486-м далеко не просто. Могу посоветовать Damn Small Linux – еще один малый дистрибутив, его можно найти на диске LXF89. МС
[править] Скан и обман
В: SUSE 10.2 распознает мой «все-в-одном» принтер Photosmart и прекрасно печатает, а вот копировать не может. Единственный дистрибутив, который справляется с этим – Ubuntu, но я предпочитаю SUSE, он стабильнее на моей машине.
Другой вопрос. Tomboy – отличная штука, но SUSE 10.2 с ним не справился из-за обычной ошибки Alt/F12. Я закрыл программу, но при попытке перезапуска мне было указано, что она уже работает. Удалил ее через Yast, а она никуда не делась. Загрузил новейшую версию с сайта Tomboy – она потребовала столько всего, что от нее пришлось отказаться. Жажду поработать с программой, но все мои попытки бесплодны.
joslam
О: За сканирование и копирование отвечает SANE. Один из способов заставить его работать на SUSE – это загрузиться в Ubuntu и узнать, какой драйвер там установлен:
scanimage --list-devices
Драйвер будет указан перед названием устройства. Например, мой сканер использует драйвер Genesys и показывает следующее:
‘device `genesys:libusb:005:003’ is a Canon LiDE 60 flatbed scanner’.
Определить нужный драйвер – это пол-дела, а чтобы завершить дело, надо схитрить: скопировать файлы конфигурации (обычно они находятся в /etc/sane.d) из Ubuntu в SUSE.
Что Вы подразумеваете под «обычной» ошибкой Alt/F12, я не знаю. Я пользуюсь Tomboy уже давно и даже не слышал, чтобы сочетание Alt+F12 делало чтонибудь, кроме вызова меню, для которого оно и предназначено. Возможно, эту комбинацию заняло какое-нибудь другое приложение, но ведь горячие клавиши нетрудно изменить в диалоговом окне настройки параметров Tomboy.
Если программа не запускается или создает другие проблемы, первое, что нужно сделать – запустить ее не из меню, а в терминале. Проблему это вряд ли устранит, зато даст больше информации к размышлению. Похоже, что Tomboy остался работать в фоне. Это можно проверить, набрав
ps -ax | grep -i tomboy
в терминале. Будут показаны все процессы, в имени которых имеется слово «Tomboy». Крайний левый пункт в выводе будет идентификатором процесса (PID), который поможет убить процесс:
kill nnnn
где nnnn – PID процесса. Убедившись, что программа прекратила работу, Вы можете запустить ее снова в штатном режиме. НБ
[править] Вон из моего порта!
В: На моей материнской плате лишь один последовательный порт. А еще у меня есть Psion 5 и Garmin Geko 201, оба с последовательным подключением. Мне кажется, некоторые программы, связанные с Psion, работают в фоне, даже когда сам он отключен, и лишают Garmin (и программы, включая GPSman) доступа к последовательному порту.
Команда top в Linux (Kubuntu Edgy) не выявила известных мне приложений, связанных с Psion; не дала результатов и ps -aux. Не подскажете, какие процессы могут запирать порт при инсталлированном KPsion, и как их отстрелить, не удаляя пакетов KPsion?
Если ничего не поможет – думаю, придется просто купить PCI-карту с последовательными портами!
Мартин [Martin]
О: А помните Unix-мантру «Все есть файл»? Она применима и здесь, так как последовательный порт можно расценивать как файл, а команда lsof показывает все открытые файлы. Без аргументов команда показывает все файлы, открытые системой, и Вы удивитесь, как много их на Linux (у меня сейчас открыто свыше 7 000). Круг поисков можно сузить, указав имя файла; в Вашем случае это будет, вероятно, /dev/ttyS0, первый последовательный порт.
Взгляните на этот код:
sudo lsof /dev/ttyS0 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME belkin 9758 nut 4u CHR 4,64 5134 /dev/ ttyS0
Этот пример показывает, что мой порт занят монитором моего ИБП. В Вашем случае будет указана программа, запирающая порт и мешающая другим - вероятнее всего, она связана с KPsion. Возможно, она использует символьную ссылку на /dev/ttyS0, например, /dev/modem или /dev/psion. Увидеть их можно с помощью
ls -l /dev/ | grep ttyS0
Попробуйте пропустить через lsof и символические ссылки. Стоит взглянуть также на программы, запускаемые при загрузке. Ubuntu и другие производные от Debian по умолчанию используют runlevel 2, поэтому
ls -1 /etc/rc2.d
покажет все запущенные программы.
Если Вы хотите добавить порт, то дешевле (и проще) всего купить USB-адаптер. На eBay он стоит несколько фунтов и «просто работает», когда его подключают. Некоторые даже хвастают Linux-совместимостью – и на eBay тоже! НБ
[править] Не задушишь, не убьешь
В: Пробую установить и настроить программу DansGuardian, описанную в журнале LXF81. Собрал версию 2.9.8.2 из исходных текстов. По умолчанию программа установилась в /usr/local/. Запускаю ее командой
#/usr/local/sbin/dansguardian start
после чего все прекрасно работает. Но вот в чем заковыка: больше ни на какие команды DansGuardian не откликается:
# /usr/local/sbin/dansguardian status # /usr/local/sbin/dansguardian restart # /usr/local/sbin/dansguardian stop
выдают одно и то же:
I seem to be running already!
Если «убить» программу командой ‘kill -9 PID’, она перестает запускаться даже после перезагрузки компьютера.
# /usr/local/sbin/dansguardian start Error opening/creating log file. (check ownership and access rights). I am running as squid and I am trying to open /usr/local/ var/log/dansguardian/access.log
Мой дистрибутив – SUSE 10.2. Подскажите, в чем может быть дело? И еще – как настроить автоматический запуск DansGuardian при загрузке компьютера?
Игорь Редькин
О: Я бы порекомендовал Вам подойти к решению этой проблемы с другой стороны и установить готовый RPM-пакет DansGuardian. Его можнозагрузить с домашней страницы проекта (http://dansguardian.org/downloads/2/Stable/SUSE/) или поискать в репозиториях Вашего дистрибутива. После того, как пакет будет установлен, вы сможете активировать автоматическую загрузку DansGuardian во время старта системы в разделе «Сервисы» Yast. ВС
[править] Происки Microsoft?
В: Установил пакет monodevelop-0.12-0.novell.noarch.rpm с диска, прилагавшегося к январскому номеру LXF, в своей системе OpenSUSE 10.1. При попытке запустить MonoDevelop, получаю следующую ошибку:
System.Runtime.Remoting.RemotingException: Unix transport error. Server stack trace: in <0x0008f> Mono.Remoting.Channels.Unix. UnixMessageIO:ReceiveMessageStatus (System.IO. Stream networkStream, System.Byte[] buffer) ...
Пожалуйста, помогите решить проблему, а то учебник Mono мне приходится изучать чисто теоретически!
temich_nd
О: Вам «повезло» столкнуться с достаточно известной проблемой взаимодействия между Mono 1.1.13 и Boo, Python-подобным языком программирования для среды .NET (см. LXF77). Ее можно решить тремя способами: обновить Boo до версии 0.7.5, Mono – до 1.1.14 и выше или просто удалить Boo-дополнение из MonoDevelop, воспользовавшись командой mdtool gsetup. Учитывая, что Boo вряд ли понадобится Вам в процессе чтения учебников по Mono (они ориентированы на C#), я бы рекомендовал третий путь – тем более, что он не требует лишних скачиваний. ВС LXF
[править] * Семь раз примерь – один отрежь
В: Я пытался поставить Linux на ноутбук Bliss 4020. К моменту установки на жестком диске имелось три раздела: два в формате NTFS с различной информацией, и один неотформатированный, в начале диска. Попытки проинсталлировать некоторые варианты Linux закончились неудачей 1,8 ГБ оказалось явно недостаточно для полноценной ОС. Столкнувшись с нехваткой места, я начал искать инструменты для решения этой проблемы и нашел Paragon Partition Manager 7.0.1274.
Я решил увеличить свободное место путем урезания одного из разделов NTFS. Процесс уменьшения раздела прошел безболезненно, а вот процесс перемещения раздела, к моему большому сожалению, закончился зависанием.
Теперь у меня четыре раздела. Первый немного увеличился. Второй стал меньше, но главное, в нем все перепутано, не говоря уже о том, что файлы не читаются. Некоторые программы заявляют, что они из 30 ГБ доросли до пары десятков ТБ.
В этом и состоит вопрос. Подскажите способ восстановления раздела, лучше конечно, “непрориетарный”. Разумеется, на свободившееся место я ничего ставить не стал. Пользуюсь Knoppix 3.7 RE.
Сергей Васильевич
О: Ситуация, конечно, непростая, но довольно распространенная. Бывает, что при выполнении низкоуровневых операций с диском, пользователь или программа ошибается. Так или иначе, доступ к данным может быть потерян.
Восстановление удаленных файлов в общем-то стало процедурой, привычной для многих пользователей – существует масса вспомогательного ПО для различных операционных систем, что заметно упрощает задачу. Однако, работа с разделами жесткого диска все еще остается уделом немногочисленных хакеров и требует более глубокого понимания сути проблемы, технологий и форматов данных, вовлеченных в процесс.
Что бы понять, как восстановить утраченные данные, рассмотрим процедуру «передвижения» раздела по диску.
В процессе «передвижения» производится поблочное копирование данных, начиная с той части раздела, которая находится «ближе» к пустой области. На приведенном рисунке раздел перемещается «вправо», поэтому копирование происходит «справа налево». Если бы раздел перемещался влево, копирование бы началось с начального, «левого» блока данных. Выбор направления и очередности копирования важен для обеспечения целостности данных. Если бы копирование производилось в ином порядке, перемещаемые данные могли бы переписать содержимое раздела до его копирования.
После того, как раздел будет целиком перемещен, программа вносит изменения в таблицу разделов жесткого диска. Она расположена в нулевом секторе и имеет следующие поля:
- По адресу 0x0000 находится код начального загрузчика;
- По адресу 0x01be находятся 4 записи таблицы разделов жесткого диска (то, что под Linux видно, как /dev/hdx1, /dev/hdx2, /dev/hdx3, /dev/hdx4), каж дая длиной в 16 байт;
- По адресу 0x01fe находится двухбайтовая сигнатура MBR (0x55 0xaa).
Если в системе используются расширенные разделы, то в начале каждого расширенного раздела помещается дополнительная таблица разделов, имеющая следующий формат:
- По адресу 0x01be находится запись о первом разделе размером 16 байт;
- По адресу 0x01ce находится запись о следующей расширенной таблице разделов, длиной в 16 байт;
Каждая запись таблицы разделов по смещению 0x0001 содержит трехбайтовый адрес начала раздела в формате CYL/HEAD/SECT (цилиндр/поверхность/сектор).
К сожалению, не было указано, перемещение какого раздела выполнялось: стандартного или расширенного. Если перемещался основной раздел, то все операции будут осуществляться только с главной записью таблицы разделов. Если же перемещался раздел, расположенный внутри расширенной области (логический диск в терминах Windows), то были затронуты и расширенные таблицы разделов.
Перед выполнением работ по восстановлению рекомендуется сделать резервные копии. Конечно, лучше скопировать посекторно весь жесткий диск, но если вы не можете позволить себе такой роскоши, сохраните хотя бы секторы с таблицами разделов.
Сделать это можно командой dd.
Загрузившись с компакт-диска Knoppix, сохраните основную таблицу разделов:
dd if=/dev/had of=/path/to/mbr/back.up bs=512 count=1
Для сохранения резервной копии расширенной таблицы разделов, необходимо передать команде dd параметр skip, указывающий ее смещение. Как было сказано выше, положение расширенной таблицы разделов можно выяснить в главной таблице разделов.
Значение параметра skip равняется LBA-адресу начала раздела. Что бы выяснить LBA-адрес, зная адрес в формате цилиндр/поверхность/сектор, воспользуйтесь следующей формулой:
LBA = ( ( CYL * HPC + HEAD ) * SPT ) + SECT – 1
где CYL – номер цилиндра, HPC – количество поверхностей в одном цилиндре, HEAD – номер поверхности, SPT – количество секторов на дорожку, SECT – номер сектора.
После того, как резервная копия будет создана, можно приступать к попытке восстановления данных.
На имеющемся в Вашем распоряжении диске с Knoppix есть утилита testdisk. Ее мы и будем использовать для восстановления таблицы разделов. Запустив testdisk, выберете создание нового файла журнала, затем – ваш диск и тип таблицы разделов (Intel).
В появившемся меню выбирайте пункт Analyze и Search – это позволит найти заголовки разделов. Затем сохраните новую таблицу разделов на жесткий диск, выбрав пункт меню write.
Если зависание Paragon Partition Manager произошло на этапе изменения таблицы разделов жесткого диска, то после выполнения этой процедуры, все ваши диски будут доступны. Если же на момент зависания, утилита выполняла копирование данных раздела, предстоит дополнительная работа.
Как видно из рисунка, в процессе «сдвига» раздела образуется «дырка». Нашей задачей является «приклеить хвост раздела к голове» и восстановить данные. Дабы избежать случайного разрушения, рекомендую снова сделать резервную копию. Скопируйте весь раздел, включая «голову», «дырку» и «хвост» в отдельный файл. Далее мы будем использовать его для работы.
Обратите внимание, что при копировании блоков раздела утилитой перемещения образуются дублирующие блоки данных. В нашем случае, если зависание произошло в процессе записи, последний записываемый блок мог быть сохранен лишь частично. Исходя из этого, необходимо искать дубль блока, записанного предпоследним. К сожалению, компания Paragon Software не публикует данных о размере блока, используемого при работе, однако, начав с блока, равного одному сектору (512 байт), можно впоследствии уточнить результат, сравнив соседние блоки.
Для поиска можно использовать любой Hex-редактор или попробовать написать скрипт на Вашем любимом языке.
Обнаружив «начало конца раздела», вам останется лишь «приклеить» его к голове, используя все ту же команду dd, на сей раз – с параметрами skip и seek.
Желаю удачи! Но впредь – делайте резервные копии! ВИ
[править] * Ограничение прав доступа
В: Можно ли ограничить число процессов, запускаемых одним пользователем в своей оболочке? У меня Ubuntu Dapper.
RD, из форумов LXF
О: Это делается двумя немного разными способами, в зависимости от того, использует ли Ваша система PAM (Pluggable Authentication Modules, Подключаемые модули авторизации). Ubuntu использует PAM по умолчанию, поэтому пределы устанавливаются в /etc/security/limits.conf. Чтобы ограничить Фреда десятью процессами, добавьте строчку вроде этой:
fred hard nproc 10
Для систем, в которых нет PAM, лимит можно установить в /etc/limits, подобным способом:
fred U10
В любом случае можно подставить вместо имени * (звездочку), чтобы ограничить всех, кроме администратора.
Лимиты, установленные в этих файлах, действительны для каждого входа в систему (а не для пользователя «в целом»), но не забывайте о том, что вход в графический рабочий стол сам по себе требует запуска нескольких процессов. Терминал, открытый из этого рабочего стола, по умолчанию не будет считаться отдельным входом, поэтому ограничивайте процессы умеренно. Чтобы узнать, сколько процессов запускает пользователь при стандартной загрузке, наберите
sudo ps -u fred | wc –l
Пример PAM включает жесткий лимит, а вообще PAM устанавливает два типа лимитов: жесткий и мягкий. Жесткий неоспорим, менять его разрешено только администратору – но пользователь может расширить лимит между мягким и жестким ограничениями командой ulimit (считайте мягкий лимит стандартным ограничением, а жесткий – абсолютным максимумом). Оба лимита можно уравнять знаком – во втором поле строки /etc/security/limits.conf. Ограничить можно не только число процессов: можно ограничить использование ресурсов памяти или процессора. См. man для limits.conf и ulimit, там можно найти (намного) более подробные сведения. НВ
[править] Краткая справка о… SCREEN
- Интеллектуальное управление терминалами в Linux.
Освоившись с командной строкой Linux, вы будете пользоваться терминалами все чаще, иногда несколькими одновременно. Вкладочный X-терминал – неплохой способ слежения за несколькими терминальными сессиями, но от него не много толку при удаленном доступе и виртуальной консоли. Screen – оконный менеджер для терминалов, позволяющий запускать несколько сессий на одном терминале; но не только.
Наберите в терминале screen. С виду это похоже на очистку экрана, но на самом деле вы окажетесь в другом терминале. Наберите ls –l для просмотра текущей директории, затем нажмите Ctrl+A и C – все исчезнет. Перейдите в другую директорию, снова запустите ls и нажмите Ctrl+A N – и вы опять в прежнем окружении. Ctrl+A и C создают новый терминал, оставляя прежний в работе, Ctrl+A и N переключают между ними. Теперь нажмите Ctrl+A и D для выхода из Screen и возврата в оболочку, затем откройте другой X-терминал и наберите screen –r для возврата в прежнюю сессию Screen.
Screen не ограничивается локальными подключениями – он хорошо работает через SSH. Например, можно подключиться к домашнему компьютеру с работы, запустить Screen, загрузить новую версию некоторой программы, начать компиляцию и покинуть Screen. Позже можно снова войти в сессию Screen с помощью screen –r (там же, на работе, или вернувшись домой) и узнать, как идут дела. Даже когда SSH-подключение закрыто, программы, запущенные в Screen, продолжают выполняться.
Есть масса других возможностей; все они подробно описаны в man. Можно разделить окно с Ctrl+A и S; перейти в новую область с Ctrl+A и Tab; воспользоваться Ctrl+A и N (или C) для перехода в новый терминал Screen. Можно разделять окно до тех пор, пока будет свободное место, наблюдая выполнение команды во время взаимодействия с интерактивной программой в другой части окна.
[править] Часто задаваемые вопросы… Rsync и Unison
- Синхронизация двух директорий – движение не одностороннее!
Что такое rsync?
Это способ синхронизации содержимого двух директорий, причем обе будут полностью идентичны. cp копирует все подряд, а rsync – только те файлы, которые различаются. Если изменились большие файлы, копируются только измененные части.
Какой синтаксис у этой команды?
rsync --archive --delete /path/to/source/ /path/to/dest/
точно скопирует первую директорию во вторую. Параметр --delete удаляет файлы, которых нет в первой директории, а --archive копирует также права доступа и временные отметки. Замыкающие слэши важны: они указывают на то, что синхронизируется содержимое директорий. Без слэшей программа просто скопирует одну директорию в другую.
Можно ли синхронизировать директории разных компьютеров? У меня локальная копия web-сайта, и не хотелось бы копировать все подряд, когда изменится только пара файлов.
Если у вас есть SSH-доступ к web-серверу, можно сделать так:
rsync --archive --delete /my/local/site server:/path/to/site/
Если один из путей или оба содержат hostname компьютера, rsync использует для передачи удаленную оболочку. По умолчанию это SSH, но можно заменить ее любой другой – даже RSH, если вы не против, чтобы ваши файлы во время передачи читал кто ни попадя!
А как синхронизировать директории между Linux и Windows-компьютерами?
rsync работает и под Windows, но параметр --archive на разделах FAT действовать не будет, ведь в FAT не сохраняются права доступа. Подробности можно узнать в man-странице программы.
Что если файлы изменились на обоих компьютерах, и данные тоже нужно сохранить на обоих?
Для этого понадобится специальная программа, например, Unison (http://www.cis.upenn.edu/~bcpierce/unison). Для синхронизации Unison пользуется той же rsync, а для передачи – SSH, но она предназначена для двусторонней синхронизации. Если на двух компьютерах изменилисьнекоторые файлы, каждый компьютер получит новейшую версию.
Умно придумано; а если я отредактирую один и тот же файл на обоих компьютерах?
Программа не умеет читать мысли и решать, какая версия вам дороже, она просто сообщит, что обе копии редактировались, и спросит, какую из них сохранить. Unison отслеживает все изменения, и заметит, что файл был изменен на обоих компьютерах.
Придется учить тысячу параметров командной строки?
Придется. А можно воспользоваться GUI, и просто указывать да щелкать мышью. GUI работает только на том компьютере, который инициирует передачу, поэтому можете использовать его для синхронизации со своим web-сервером, не забудьте только установить там Unison.