Журнал LinuxFormat - перейти на главную

LXF145:Ответы

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Ответы

Есть вопрос по открытому ПО? Пишите нам по адресу answers@linuxformat.ru
В этом месяце мы ответим на вопросы про…
  1. Задание паролей ntop заново
  2. Переключение в сеанс Screen
  3. Доступ с правами root для BackupPC
  4. Завершение работы
  5. Обновление старых дистрибутивов
  6. Применение UPS в Linux
  7. Управление вентилятором
  8. Утраченные опции загрузки Windows

1 Проблема Ntop

В Я загрузил Ntop и задал пароль. Программу в браузере я вижу, но попытки получить доступ к разделу администратора блокируются — мои имя пользователя и пароль не работают. Как мне их сбросить?

Мик Браун [Mick Brown]

О Пароль можно сбросить, удалив содержащий его файл, заново запустив исходную команду и задав новый. Имя файла – ntop_pw.db, и обычно он находится в /var/lib/ntop; если его там нет, обнаружьте его командой locate. Перед удалением файла выясните, кто его владелец. Затем удалите файл и запустите Ntop из терминала, от имени root, с такими опциями:

/usr/bin/ntop -P /var/lib/ntop -u ntop --setadmin-password

Здесь подразумевается, что файл пароля находился в /var/lib/ntop и принадлежал пользователю ntop – если Ваша система настроена иначе, внесите должные изменения. Вам предложат задать пароль; сделайте это и закройте сеанс. Альтернатива – указать пароль в командной строке (тогда Вы будете видеть, что вводите, но будьте осторожны, потому что все те, кто находится рядом с Вами, тоже это увидят). Команды будут такие:

/usr/bin/ntop -P /var/lib/ntop -u ntop --set-adminpassword=mynewpassword

Теперь перезапустите Ntop как обычно, хотя бы через диспетчер сервисов Вашего дистрибутива, и постарайтесь больше не забывать пароль. НБ

Наши эксперты
  • Мы найдем ответы на любой вопрос — от проблем с установкой системы или модемом до сетевого администрирования; главное — спросить!

Нейл Ботвик

Владелец ISP и экс-редактор дисков для нашего журнала, Нейл считает, что в Linux он от скуки на все руки.

Пол Хадсон

Пол – местный супер-программист, и он может и хочет управиться со всеми вашими проблемами по части web и баз данных.

Майк Сондерс

Майк был одним из создателей прототипа LXF – Linux Answers. Его специальности – программирование, оконные менеджеры, скрипты инициализации и SNES.

Грэм Моррисон

Когда Грэм не обозревает кучи программного обеспечения и не халтурит с MythTV, он готов к ответам насчет любого оборудования и проблем виртуализации.

Валентин Синицын

В редкие свободные минуты Валентин обычно запускает mcedit, чтобы отшлифовать какое-нибудь открытое приложение. Его любимая тема – настольный Linux.

Юлия Дронова

Если компьютер у Юлии не занят выполнением команды emerge, она спешит применить его для модерирования http://www.unixforum.org.

Куда посылать вопросы

Пишите нам по адресу answers@linuxformat.ru или спрашивайте на форуме: http://forum.linuxformat.ru

2 Screen наготове

В Я захожу с работы на свой домашний компьютер Fedora 13 через SSH. Если надо запустить нечто продолжительное, я открываю сеанс Screen, запускаю задание и отключаюсь от экрана, а возобновляю сеанс уже дома.

Как-то я начал выполнять давно просроченное обновление Yum в терминале через SSH, и забыл предварительно запустить Screen. Мне нужно было уходить через 10 минут, и я думал, что все закончится быстро, но казалось, что оно вообще не кончается! Не то что это было катастрофой, но мой коллега покрикивал, чтобы я торопился.

Нет ли способа передачи активного процесса в сеанс Screen уже после его запуска? В идеале, я бы переключил задачу Yum на Screen, отключился, вышел из системы и уехал домой. Возможно ли такое?

Марк [Mark]

О Помимо очевидного варианта – извлечь из этого случая урок и больше не забывать загодя запускать Screen, есть еще пара возможностей. При закрытии оболочки все запущенные ею процессы закрываются тоже – так работает управление процессами в Linux. Существуют способы предотвратить это – например, Screen, а также запуск команды с опцией nohup, но в Вашем случае применять их было уже поздно.

В оболочке есть встроенная команда disown, отсоединяющая процесс от запустившей его оболочки. При работающей программе нажмите Ctrl+Z, чтобы приостановить ее, затем дайте команду bg, для перезапуска в фоновом режиме. Это полезно и само по себе, для случаев, когда Вы запускаете программу и забываете добавить & к командной строке. После этого дайте команду

jobs

Она выведет список задач, работающих в Вашей оболочке. Если Вы не запускали никаких других заданий в фоновом режиме, такая задача, вероятно, будет только одна. В начале строки идет номер задачи, и Ваша задача, скорее всего, будет иметь номер 1. Теперь ее можно отсоединить от оболочки следующей командой:

disown %1

Не забывайте предварять номер задачи знаком %. Это отсоединяет задачу от оболочки, которую Вы после этого сможете закрыть, не закрывая программу. Основной недостаток данного подхода – потеря вывода программы. Определить, работает ли программа, можно командой ps, но когда она завершится, не будет способа определить успешность ее выполнения. Альтернатива – применение программы Reptyr, доступной на сайте http://tinyurl.com/4tsfquc. Придется загрузить и скомпилировать исходный код (вряд ли какие-то дистрибутивы уже ввели Reptyr в свой состав). Получите идентификатор процесса (PID) программы с помощью pgrep или pidof:

pgrep programname
pidof programname

Переключитесь на другую оболочку или сеанс Screen и скомандуйте

reptyr PID

Программа переключится со старой оболочки на новую. Для большей уверенности, перед закрытием старой оболочки можно скомандовать disown, чтобы программа отсоединилась от исходной оболочки. В Ubuntu Maverick или более новой версии Reptyr откажется работать, из-за настроек безопасности, принятых по умолчанию. О преодолении этой проблемы см. на man-странице Reptyr.

Еще один подход – перед установлением SSH-соединения с Вашим компьютером позаботиться о запуске Screen. Это не просто ехидное замечание: можно добавить в свой профиль пару строк, запускающих Screen перед каждым запуском оболочки через SSH:

if [[ -n “${SSH_TTY}” ]] && [[ -z “${STY}” ]]; then
 screen -xRR
fi

Теперь при каждом открытии сеанса SSH будет возобновляться существующий сеанс Screen, если таковой имеется, а в противном случае – создаваться новый. ГМ

3 Саботаж BackupPC

В Недавно я последовал вашему совету и установил BackupPC — на LinkStation, где обновил BIOS, чтобы установить Debian Etch — и настроил его на выполнение резервного копирования трех компьютеров Windows, принадлежащих моим жене и детям, а также моего собственного, с Ubuntu.

Резервное копирование компьютеров Windows выполняется надежно, но мне так и не удалось заставить BackupPC заработать с Ubuntu. Полагаю, проблема тут в SSH, потому что я получаю ошибку ‘ListFilesReceive’. Я настроил SSH на доступ ноутбука с Ubuntu к LinkStation без пароля, и задал также обратное правило, но ничего не работает. Пока я обхожусь Duplicity, но хотел бы, чтобы всю работу выполнял сервер, а не мой ноутбук.

Ричард Мур [Richard Moore]

О BackupPC работает от имени пользователя backuppc, но нуждается в доступе с правами суперпользователя-root к компьютерам, резервные копии которых требуется создать. Вам надо сгенерировать ключ SSH для пользователя backuppc на сервере и добавить его к файлу authorized_keys для пользователя root на каждом клиенте. На системе Ubuntu, где пользователь root обычно блокирован, это необычно. Но root там все-таки есть – у него просто нет пароля для входа в систему. Для BackupPC это не проблема, потому что здесь применяются не пароли, а ключи SSH.

Чтобы сгенерировать ключ на сервере, нельзя просто зарегистрироваться как пользователь backuppc: этот пользователь не имеет возможности входа в систему. Поэтому запустите с правами root команду

su -s /bin/sh -c “ssh-keygen -t rsa” backuppc

При желании в качестве типа ключа можно взять dsa, а не rsa; а если и на клиенте, и на сервере работает новейшая версия OpenSSH, можно использовать типы ключей ecdsa. Команда создаст в домашнем каталоге пользователя backuppc, обычно – /var/lib/BackupPC, два файла: .ssh/id_rsa и .ssh/id_rsa.pub. Второй файл, общий ключ, нужно добавить в список авторизованных ключей пользователя root на клиенте, поэтому скопируйте его на этот компьютер и дайте команды

sudo mkdir -p /root/.ssh
sudo cat id_rsa.pub | tee -a /root/.ssh/authorized_keys

Здесь нужно использовать tee, потому что стандартные методы перенаправления не работают с sudo, а перенаправление вывода команды sudo необходимо, поскольку команды запускаются не от имени root. BackupPC по-прежнему не сможет установить соединение, потому что при первой попытке соединения SSH с хостом тот запросит у Вас подтверждения его сигнатуры SSH, поэтому вернитесь на сервер искомандуйте

su -s /bin/sh -c “ssh root@laptop” backuppc

По запросу введите yes. Эта операция выполняется только один раз – сигнатура сохраняется в .ssh/known_hosts, и теперь автоматизированное резервное копирование должно заработать. Если проблемы не прекратятся, попробуйте включить в конфигурационном файле настройку $Conf{XferLogLevel}. Чем выше ее значение, тем больше информации заносится в журнал. Чтобы журнал не заполнялся слишком быстро, советуем добавить эту команду в файл настройки конкретного компьютера в /etc/BackupPC/pc, чтобы лишняя информация не засоряла журналы компьютеров, работающих без проблем. МС

4 Мне не остановиться

В У меня возникла проблема, хоть и не критичная, но досадная. Почему-то мне никак не выключить компьютер, если только я не перехожу в Windows и не запускаю команду останова оттуда. Все операции и команды, которые мне советовали попробовать, выводят меня в меню двойной загрузки. Мой компьютер — HP Pavilion Elite HP410f, на нем стоят Ubuntu 10.10 и Windows 7.

Харли Диллз [Harlie Dills]

О Начнем с того, что для выключения компьютера не обязательно загружать Windows. Перезагрузка тоже корректно завершает работу ОС, вот что для Вас важно. В интервале между перезапуском и появлением загрузочного меню можно нажать кнопку питания и выключить компьютер. Это рискованно только тогда, когда Вы уже выбрали один из пунктов загрузочного меню (или один из них был выбран по умолчанию по причине тайм-аута).

Теперь поищем правильное решение. Проблема, скорее всего, с интерфейсом ACPI (Advanced Configuration and Power Interface), и кроется в конфликте между системой ACPI Linux и BIOS Вашей материнской платы. Первым делом зайдите на сайт изготовителя материнской платы и гляньте, нет ли там обновлений BIOS – обычно они есть, потому что платы редко поставляются с новейшей версией BIOS. Обновления BIOS могут исправить все виды странных проблем, поэтому стоит иметь новейшую версию.

Если это не поможет, следующим шагом попытайтесь временно блокировать всю поддержку ACPI в ядре. В меню загрузки выделите пункт, соответствующий Ubuntu, и нажмите клавишу e, чтобы начать редактирование. Найдите строку, начинающуюся с подстроки linux, и припишите в ее конец подстроку acpi=off. Нажмите Ctrl+X, чтобы загрузиться с этим параметром. Если выключение сработает, это подтвердит наличие проблемы ACPI. Но совсем блокировать ACPI Вам вряд ли захочется. Попробуйте добавлять следующие опции в пункт загрузочного меню, поодиночке или в комбинации, пока не определите, какая из опций или их комбинаций является рабочей.

acpi=ht
pci=noacpi
acpi=noirq
pnpacpi=off
noapic
nolapic

Первая опция достаточно сурова: она блокирует львиную долю функций ACPI, так что не пользуйтесь ею без крайней необходимости.

Найдя решение, сделайте его опцией по умолчанию – не править же параметры ядра при каждой загрузке! Отредактируйте /etc/default/grub от имени root: найдите элемент для GRUB_CMDLINE_LINUX – вероятно, Вы распознаете содержимое как опции ядра, к которым Вы делаете добавку. Вставьте сюда Ваши работающие параметры ядра, сохраните файл и введите изменения в силу, скомандовав

sudo update-grub

PH

5 Обновление-чудовище

В Начиная работать с Linux, я установил Fedora Core 1 и, получив возможность установить все, я так и сделал. Провозившись с получением Sendmail, Apache, FTP, PHP, MySQL и остального, я бы хотел сохранить настройки и все прочие ассоциированные с ними файлы. Система их уже не обновляет, поскольку они чересчур устарели, а я хотел бы извлечь преимущества нововведений в платформе. Требуемые изменения — например, обновления PHP с 4.x на 5.x, MySQL, улучшенная система безопасности, исправления в ядре, и т. д.

Недавно у меня появился свободный компьютер, и я загрузил Fedora Core 5, затем обновился до Core 6 или 7 и пришел в ужас: обновление отняло 10 часов. Мой сервер в общем не для критичных задач, но я не хочу парализовать его на целый день. Можно ли рассчитывать, что при обновлении сохранятся все скрипты и файлы настройки? Можно ли обновиться с Fedora Core 1 на Fedora 14? Сохранятся ли файлы настройки для пакетов типа sendmail и httpd? Сохранится ли все ПО, часть которого установлена в каталогах наподобие sbin, а не только в пользовательских каталогах?

Тони Райдер [Tony Rider]

О Fedora Core 1 – дистрибутив явно доисторический, и обновление с него до новейшей версии – непростой процесс. Прямое обновление почти наверняка обречено на провал, а обновление через промежуточные версии, если Вы сумеете их найти, продлится целую вечность. Glibc, ключевая библиотека в системе Linux, претерпела немало изменений, и Вы замучаетесь последовательно обновлять ее через все промежуточные версии. Поскольку Вам нужен работающий компьютер, а не победа над техническими сложностями, единственно разумным подходом будет полное резервное копирование всех Ваших данных и файлов настройки с последующей установкой новейшего дистрибутива с нуля. Резервное копирование пользовательских данных пройдет очень просто; если у Вас отдельный раздел home – просто не переформатируйте его. В противном случае создайте резервную копию всего содержимого /home на внешний (или сетевой) диск и восстановите его после установки – при установке обязательно создайте отдельный каталог /home.

Вы упомянули Sendmail и MySQL; они хранят свои данные в каталоге /var, поэтому он тоже подлежит резервному копированию, а по завершении установки – восстановлению на отдельный раздел. Данный подход выглядит трудоемким, но альтернативный вариант отнимет еще больше времени и только вызовет разочарование. Вам нужно создать резервные копии содержимого /etc и /var, а /sbin проблем не доставит, потому что там только программы. Затем выполните новую установку и импортируйте все данные и настройки в новую систему. Если Ваши программы не настолько устарели, что с тех пор сменился способ хранения данных или настроек, то новое ПО должно позволить Вам импортировать старые файлы. Возможно, в процессе Вы получите различные сообщения об ошибках, но предложенный метод все же действительно самый простой.

Чтобы убедиться, что у Вас установлено то же самое ПО, что и ранее, сгенерируйте список установленных программ с помощью rpm:

rpm --query --all

Перенаправьте вывод этой команды в файл или на принтер – по нему Вы потом проверите наличие программ. Сравните содержимое файлов /etc/passwd в обеих системах и убедитесь, что идентификаторы пользователей (user ID) одинаковы. Если это не так, измените владельцев файлов, иначе будут проблемы с правами доступа. НБ

6 UPS и NUTs

В У меня есть UPS CyberPower, и документация, поставляемая в комплекте, заявляет о поддержке Linux, которая на деле не обеспечивается. Я установил пакет, поставляемый в комплекте, а когда выяснилось, что он не работает — то и бета-версию пакета.

Я вновь посетил сайт производителя, загрузил с него Deb-пакет и попытался установить его, но получил сбой (в KpackageKit), со следующим сообщением:

An error occurred that we weren’t expecting

При запуске pwrstat программа утверждает, что демон не запущен, но вывод команды ps показывает, что демон pwrstatd работает:

jseidel@EDP15:~$ pwrstat -status
Daemon service is not found.
jseidel@EDP15:~$ pgrep pwr
root 1480 0.0 0.0 8740 792 ? S 14:16 0:00 /usr/sbin/pwrstatd

Я пытался поработать с поставщиком, но тип из техподдержки упорно «передает вопрос разработчикам», а те вообще не отвечают. Не могли бы вы предложить мне какой-нибудь вариант корректного останова на случай сбоя питания?

Йон Зайдель [Jon Seidel]

О Вот что бывает, когда компании не понимают Linux и Open Source. Они пытаются писать собственный драйвер, вероятно, взяв за основу ПО для Windows, поскольку так все работает в мире Windows. (Мы воздержимся от комментариев, хорошо ли сообщение об ошибке отражает этот факт.) Они тестируют свое ПО с одной-двумя версиями пары дистрибутивов и считают работу сделанной; а если в Вашем дистрибутиве все устроено по-другому, то Вам не повезло. Пора им понять, что давным-давно существуют проекты Open Source, делающие то, что им нужно, и для поддержки их продукции достаточно передать необходимую информацию соответствующим командам,.

В случае с ПО для UPS, Вам требуется пакет Network UPS Tools или NUT (www.networkupstools.org). Он поддерживает ряд моделей CyberPower, хотя получил информацию методом обратной разработки.

Кроме текущей поддержки, NUT позволяет работать с несколькими UPS, что может пригодиться, если Вы решите поставить оборудование от другого изготовителя. Установите NUT через менеджер пакетов Вашего дистрибутива, а затем отредактируйте файлы настройки в /etc/nut, чтобы они отвечали Вашей модели UPS. В файле ups.conf заведите раздел для Вашего устройства в следующем формате:

[<upsname>]
driver = <drivername>
port = <portname>

Имя для Вашей UPS сойдет любое, а драйвер зависит от конкретного устройства CyberPower – просмотрите раздел совместимости на сайте NUT. В качестве порта обычно используется /dev/ttyS0 – первый последовательный порт. Добавьте в файл upsd.users пользовательскую запись – она определит входное имя и пароль, разрешающие выполнять административные действия – например, выключение компьютера:

[<username>]
password = <pass>
upsmon master

Затем свяжите все воедино, добавив в файл upsmon.conf:

MONITOR upsname@localhost username pass master

В файле nut.conf, либо оставьте для MODE значение none, чтобы Ваш дистрибутив запускал серверы upsdrv, upsd и upsmon, или установите для MODE значение standalone и запустите общий сервис NUT. Запустите сервисы и отключите шнур питания от UPS, следя за файлами журналов, чтобы убедиться в том, что все работает. Затем изучите другие опции – например, отправку уведомлений о событиях. ГМ

7 Нужен вентилятор

В На моем ноутбуке Acer 5315 была предустановлена XP. Я решил избавиться от Windows и установить Ubuntu 10.10. С установкой проблем не было, но потом процессор перегрелся, и через 10 минут система отключилась, поскольку в Ubuntu вентилятор немедля отказался работать. Поиск в Google обнаружил немало товарищей по несчастью, с той же проблемой — и с такой же моделью, как и у меня, и с другими.

Решать проблему предлагалось двумя методами: либо посредством редактирования Grub 2, либо обновлением BIOS. Обновление BIOS — шаг несколько рискованный, и некоторые люди, решившиеся на него, сообщили, что он не помог. Поэтому я решил перепробовать варианты редактирования Grub, но ни один не сработал. Похоже, Linux-программы для управления вентилятором нет, и в системе 10.10 тоже нет ничего подходящего. Мне приходится охлаждать ноутбук, подкладывая под него пузырь со льдом, чтобы работать подольше. Не присоветуете ли способа все-таки заставить вентилятор работать?

Терри Андерсон [Terry Anderson]

О Обновление BIOS отнюдь не настолько рискованно, как гласит распространенное мнение, особенно если речь идет о ноутбуках. Самый серьезный риск вызван возможностью сбоя питания в ходе обновления, а ноутбук, работающий от электросети, но с исправной батареей, защищен от этой случайности. Материнские платы редко выпускаются с BIOS, полностью свободной от ошибок. Частенько обновление оказывается доступным еще до того, как первая поставка продукции достигнет магазинов, поэтому обновление – это, в общем случае, дело хорошее.

Ваша проблема вызвана необычным решением Acer управлять вентилятором через разработанное ими Windows-приложение, а не аппаратно или через ACPI. Установка любой другой ОС, включая и обычную версию Windows, приводит к отказу вентилятора. Если обновление BIOS не поможет, попробуйте скрипт, который должен решить проблему. Загрузите его с сайта http://ubuntuforums.org/showpost.php?p=4925392, распакуйте архив и отредактируйте скрипт acer_fancontrol, подогнав его к Вашей системе. Комментарии в этом скрипте объясняют различные опции.

Чтобы убедиться в работоспособности скрипта, запустите его командой

sudo ./acer_fancontrol

Если все в порядке, поместите его и скрипт mempat в /usr/local/bin и отредактируйте /etc/rc.d/local с правами root:

sudo cp acer_fancontrol /usr/local/bin
sudo cp mempat /usr/local/bin
sudo gedit /etc/rc.local

Перед строкой exit 0 добавьте следующую строку:

/usr/local/bin/acer_fancontrol

Благодаря этому скрипт управления вентилятором будет автоматически запускаться при загрузке. Хотя скрипт приведен на форумах, посвященных Ubuntu, ничто не мешает ему работать с любым другим дистрибутивом, но метод его запуска при загрузке для дистрибутивов, основанных не на Debian, будет отличаться от приведенного здесь. ГМ

8 Потеря Windows

В Я решил попробовать Lubuntu с LXFDVD142, создав систему с двойной загрузкой, где второй системой была Windows XP. Обе системы работали правильно, и все было хорошо, пока менеджер обновлений не обновил ОС. После перезагрузки опция XP исчезла из меню загрузки — и теперь XP у меня нет.

Я попробовал исправить ситуацию, воспользовавшись процессом, который был описан в одном из ваших журналов [Grub 2: Польза Super Grub Disk, LXF128]. В двух строках имелись опечатки; я знаю, что вместо unmount следует использовать umount, а вместо mn — mnt. Есть ли там другие опечатки, я сказать не берусь, но процесс, запущенный в терминале, других ошибок не зарегистрировал. Но опции XP в загрузочном меню все равно нет!

Затем я переустановил Lubuntu и восстановил XP. И снова все было хорошо, пока не вмешался менеджер обновлений. XP опять исчезла. С помощью Clonezilla я восстановил XP с внешней резервной копии. Однако я хотел бы продолжать с Lubuntu, если вы поможете мне решить проблему.

Брайан Митчелл [Bryan Mitchell]

О Приносим Вам наши извинения за опечатки в статье. XP Вы не потеряли – на самом деле потерялась только ее опция в загрузочном меню. Пошаговые инструкции в руководстве по Grub 2 должны восстановить правильное меню загрузки – похоже, что сбой выдает модуль обнаружения ОС, OS-prober. Grub сам генерирует строки меню для копии Linux, скриптом из /etc/grub.d/10-linux, но другие ОС (например, Windows) обнаруживаются особой программой, OS-prober, которая вызывается другим скриптом из каталога /etc/grub.d. Проверьте, находит ли OS-prober установленную копию Windows, командой

sudo os-prober

Вывод команды должен выглядеть приблизительно так:

/dev/sdb1:Windows Vista (loader):Windows:chain
/dev/sdb2:Windows 7 (loader):Windows1:chain

где каждая строка соответствует обнаруженной копии Windows. Чтобы эта команда работала, разделы Windows не обязательно должны быть примонтированы. Эту информацию использует Grub для построения элементов загрузочного меню, и если программа OS-prober дает ошибку, то источник проблемы найден.

В отчетах об ошибках сообщалось о неработающем Grub и проблемах с OS-prober в некоторых конфигурациях Ubuntu 10.10. Один из методов устранения этих ошибок – настроить Grub программой Super Gru Disk (www.supergrubdisk.org). Загрузитесь с CD и в появившемся диалоговом окне выберите Grub Options. Вам на выбор предложат две опции – первая восстанавливает Grub, уничтоженный (пере)установкой Windows. Вторая опция, Update Grub Config, выполняет именно то, что требуется Вам. Выберите ее, и опция загрузки Windows в загрузочном меню восстановится. НБ


Часто задаваемые вопросы

Fuse

  • Это ведь не связано с защитой компьютера от сбоев питания? [fuse по-англ. в т. ч. бытовой электропредохранитель, «пробка», — прим. ред.]

Не связано. Fuse означает Filesystem in USErspace [файловая система в пространстве пользователя]. Это модуль ядра, позволяющий файловым системам запускаться в пространстве пользователя вместо пространства ядра.

  • Ну и в чем тут фишка?

Традиционные файловые системы, типа ext3, XFS или ISO9660, входят в ядро Linux – они либо встроены в ядро, либо устанавливаются в виде модулей, включаемых в ядро при загрузке. Это нормально для файловых систем, но означает, что либо их код должен быть включен в главное дерево ядра, как с указанными тремя, либо нужно скомпилировать код специально для этого ядра. Обновите ядро, и все ваши внешние модули не будут работать, пока вы их не восстановите, как печально известно многим владельцам видеокарт NVidia.

  • Чем Fuse от них отличается?

Fuse – тоже модуль ядра; он является частью официального ядра Linux с версии 2.6.14. Он обеспечивает мостик между пространством пользователя, где запускается файловая система Fuse, и самим ядром, позволяя использовать файловые системы, не являющиеся частью ядра.

  • А мне какая с этого польза?

Да в общем небольшая, если только вы не решите разработать собственную файловую систему. Но это не значит, что другие не захотят такого сделать, и существует много файловых систем, которых без Fuse могло бы и не быть.

  • Есть уже и Ext2/3, и ReiserFS, и XFS — зачем нам еще много файловых систем?

Если вы так ставите вопрос, то незачем. Но Fuse очень часто применяется для создания виртуальных файловых систем.

  • Тут и с реальными-то системами не все ясно — а что такое виртуальные?

Виртуальные файловые системы не существуют на диске, но предоставляют информацию с помощью файлов-интерфейсов. Fuse предоставляет множество таких: SSHFS позволяет монтировать каталоги на удаленном компьютере, используя только SSH; EncFS дает зашифрованную файловую систему, и отдельные каталоги могут быть зашифрованы и смонтированы через EncFS для доступа. NTFS-3G обеспечивает полное чтение/запись NTFS-разделов Window – это одна из немногих файловых систем Fuse, являющаяся файловой системой в традиционном смысле этого слова.

  • А больше Fuse ничего не умеет делать?

Существуют файловые системы для монтирования различных онлайн-сервисов, как если бы они были местными каталогами. Можно подмонтировать системы хранения онлайн или запасник фотографий, вроде Flickr. Если ваш цифровой фотоаппарат не монтируется как USB-накопитель, и вам необходим Gphoto2 для извлечения фотографий, можете использовать файловую систему Fuse для монтирования.

  • Где я могу узнать больше?

Домашняя страница Fuse – http://fuse.sourceforge.net, а список поддерживаемых файловых систем – на вики Fuse, http://tinyurl.com/94gza.


Терминалы и суперпользователи

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

Команды настройки системы часто должны запускаться от имени суперпользователя (superuser или root). В зависимости от вашего дистрибутива, есть два способа сделать это. Многие дистрибутивы – в частности, Ubuntu и его производные – требуют предварять такие команды префиксом sudo. После этого пользователю предлагается ввести пароль, и система выдает ему полномочия root, действующие на время выполнения команды. Другие дистрибутивы используют префикс su, применение которого требует ввода пароля root и дает полные права root до тех пор, пока пользователь не введет команду logout. Если ваш дистрибутив использует su, выполните эту команду один раз, и потом сможете выполнять любую команду, не предваряя ее префиксом sudo.

Краткая справка про…

Компиляцию ПО

Большинство дистрибутивов имеют огромные репозитории готовых сборок почти всех требуемых вам программ. Но иногда бывает нужно установить пакет, скомпилировав его из исходного кода. Обычные причины для этого – отсутствие новейшего пакета для вашего дистрибутива или необходимость модификации исходного кода. Для этого сначала распакуйте исходный код из архива следующей командой:

tar xvf foo-1.2.3.tar.gz

Команда tar умеет определять, как сжат архив, и вам нет нужды сообщать ей об этом. Исходный код обычно распаковывается в каталог с тем же именем, что и архив. Перейдите туда командой cd foo-1.2.3. Отыщите файлы с именами README или INSTALL – обычно там есть инструкции по установке. Стандартная процедура выглядит так:

./configure
make
su make install

Первая команда проверяет систему, чтобы убедиться в наличии всех необходимых зависимостей и установить все опции программы. Для просмотра доступных опций неплохо предварительно запустить команду

./configure -help.

Вторая команда компилирует ПО, помещая создаваемые файлы в текущий каталог. Для настройки и компиляции не обязательно быть суперпользователем, но на третьем шаге выполняется копирование файлов в системные каталоги, а тут уже нужны права root. Поэтому для запуска третьей команды используется префикс su, благодаря которому команда выполняется с правами root. Пользователи Ubuntu вместо нее должны использовать команду:

sudo make install

Если команде ./configure не дано других указаний, скомпилированная программа обычно устанавливается в /usr/local/bin. Если у вас RPM-система, и configure сообщает об отсутствующей библиотеке, но вам точно известно, что она есть, установите соответствующий пакет -devel – например, libbar-devel.


Большой вопрос

Какой лучший метод избавиться от старых файлов?

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

Мартин Уэллс [Martin Wells]

О Эта задача имеет две подобласти: системные файлы и домашний каталог. Неиспользуемые пакеты склонны при удалении оставлять файлы, засоряющие /etc. В большинстве дистрибутивов есть специальный инструмент для их чистки. В дистрибутивах на основе Debian запустите Synaptic и щелкните по кнопке Status. Если у Вас уцелели старые файлы настройки, Вам будет доступна опция Not Installed (Residual Config); выберите ее и перечисленные пакеты, и Synaptic удалит файлы.

Еще один быстро заполняющийся каталог – /var. Файлы журналов в /var/log могут расти очень быстро, особенно если что-то не в порядке, поэтому обязательно установите logrotate. Эта программа архивирует и сжимает последние записанные файлы журналов и удаляет старые, препятствуя превращению /var/log в черную дыру. Можно также поискать в /var/lib старые файлы данных, оставленных серверами, которые Вы не используете. Если у Вас есть программы, использующие MySQL для хранения данных, может оказаться, что в /var/lib/mysql сидит множество файлов mysqld-bin. Для обычных пользователей настольных ПК хранение этих файлов – пустая трата места на диске. Отключите опцию их сохранения – отредактируйте /etc/mysql/my.cnf, закомментировав строку log-bin, и перезапустите MySQL. Старые файлы придется удалять, но новые создаваться уже не будут.

В каталоге home проще всего найти давно не использовавшиеся файлы командой find:

find ~ -mtime +365

Эта команда найдет все файлы, не модифицировавшиеся в течение года. Тем не менее старые файлы могут быть все еще нужны. Если ваш каталог home не монтировался с опцией noatime, то каждый файл содержит запись о том, когда его в последний раз открывали для чтения – это более полезно. Команда

find ~ -atime +365

обнаружит все файлы, не открывавшиеся за последний год. Запуск команды mount в терминале покажет опции монтирования каждоя файловой системы; если среди опций файловой системы, содержащей /home, нет noatime, воспользуйтесь этим методом. Для find имеются графические оболочки, например, KFind, находящаяся в самом низу главного меню KDE, но никогда ничего не удаляйте, не будучи абсолютно уверены в его ненужности. Если сомневаетесь, создайте резервные копии файлов перед их удалением:

tar czf abouttobegone.tar.gz $(find ~ -atime+365)

Ваша задача имеет и специальное решение – программу BleachBit (http://bleachbit.sourceforge.net), которая автоматически выполняет большую часть работы. Она не будет сканировать все файлы в вашей системе, как Вы с помощью find, но выявит наиболее вероятных кандидатов на удаление – например, временные файлы браузера. Для пущей безопасности BleachBit может истребить файлы так, что их будет не восстановить. Но это замедлит процедуру. НБ

Шаг за шагом

Очистка от ненужных файлов

1 Удалите старые файлы настройки

Synaptic может удалить файлы настройки пакетов, которые вы удалили; это не только повысит безопасность, но и сэкономит дисковое пространство.

2 Двоичные журналы MySQL

Настройка log-bin в my.cnf может вызвать генерацию большого объема данных в /var, а там совсем не желательно позволять исчерпание дискового пространства.

3 Найдите старые файлы

Команда find с опциями -mtime и -atime поможет найти все старые файлы, которые больше не нужны. Другие полезные опции указаны на man-странице.

4 Можно и графически

Программы типа KFind предоставляют графический интерфейс для команды find. Пользоваться им проще, но вы не получите всех возможных опций.

5 Очистка мусора

BleachBit помогает найти файлы, созданные теми программами, что имеют обыкновение оставлять за собой хвост временных файлов.

6 Обойти ряд областей

Программе BleachBit можно дать указание игнорировать некоторые файлы или каталоги. То же самое можно сделать и с помощью опции -prune команды find.

Персональные инструменты
купить
подписаться
Яндекс.Метрика