LXF165-166: Ответы
|
|
|
[[Категория:Постоянные рубрики
Содержание |
Ответы
Есть вопрос по открытому ПО? Пишите нам по адресу answers@linuxformat.ru, и мы найдем ответ.
1 Монтирование Android
2 Яркость монитора
3 Проблемы с разбиением диска
4 Разрешения монитора
5 Настройку раздела подкачки
6 Перенаправление почты в Kmail
1 Переброс файлов с Android
В Я купил планшет Nexus 7 на Android и очень им доволен. Увы, без «но» не обошлось: я не могу смонтировать его как USB-устройство. Когда я подключаю по USB свой телефон с Android, на телефоне появляется окно, где он монтируется как накопитель, но на планшете, похоже, ничего этого нет.
Конечно, файлы можно перебросить через Dropbox, но у меня несколько ГБ музыки и видео. Почему они отказались от такой вполне приличной системы? И как мне перебросить файлы?
Грант [Grant]
О Проблема с подключением накопителей по USB в том, что в каждый момент времени их можно подключить только к одной операционной системе. Это означает, что прежде чем смонтировать ее на компьютере, ее нужно размонтировать на телефоне. Поэтому на телефоне появляется предупреждение о том, что нужно закрыть приложения, использующие SD-карту. На устройствах без съемных носителей, вроде Nexus 7, все еще хуже: размонтировать файловую систему, используемую операционной системой, нельзя. Поэтому в новых устройствах для решения этой проблемы используется MTP (Media Transfer Protocol – протокол передачи мультимедиа). MTP был разработан Microsoft и используется для передачи файлов на медиа-проигрыватели и обратно, точно так же, как PTP (Picture Transfer Protocol – протокол передачи изображений) используется для передачи изображений с цифровых камер. Существует несколько решений для монтирования устройств MTP в Linux; с устройствами на Android лучше всего работает jmtpfs (http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/). Это файловая система FUSE, которая использует библиотеку libmtp (http://libmtp.sourceforge.net). Последняя должна быть в репозиториях вашего дистрибутива, но, возможно, придется установить jmtpfs из исходников. Есть еще mtpfs, но сейчас она работает не так хорошо, как jmtpfs. Впрочем, обе они – проекты новые, и все может измениться.
После установки список всех подключенных устройств с поддержкой MTP можно получить командой
jmtpfs -l
Чтобы смонтировать первое найденное устройство – обычно в каждый момент времени у вас подключено только одно устройство – укажите точку монтирования после команды jmtpfs. Этот каталог должен существовать и иметь право на запись для пользователя, от имени которого запущена команда
jmtpfs ~/nexus
Вы увидите сообщение об отсутствии файла .mtpz-data, но на него можно не обращать внимания: файл используется только для аутентификации Microsoft. Для размонтирования устройства используется команда
fusermount -u ~/nexus
Это означает, что устройство можно смонтировать, но исключительно вручную. Можно сделать и так, чтобы устройство автоматически монтировалось udev, создав для этого два файла. Первый – правило udev; назовите файл /etc/udev/rules.d/90-mtpmount.rules. Число имеет значение, так как это правило должно запускаться позже, чем правила libmtp. В файле должна быть одна строка:
ATTR{idVendor}==”18d1”,ATTR{idProduct}==”4e42”, RUN=”/usr/local/bin/mountnexus.sh &”
Идентификаторы производителя и продукта указаны для Nexus 7 – для других устройств их покажет lsusb. Монтирование длится до нескольких секунд, а udev не любит программы, которые не завершаются сразу, поэтому параметр RUN указывает путь к скрипту (который может быть любым), который делает всю работу. Создайте файл скрипта с командами:
#!/bin/sh
mkdir -p /media/nexus7
jmtpfs -o allow_other /media/nexus7
Запустите скрипт с терминала, чтобы убедиться, что он работает. Параметр allow_other необходим потому, что udev запускает скрипты от имени суперполььзователя-root, а вам нужна возможность записывать в каталог как обычный пользователем. Для работы скрипта может потребоваться добавить эту опцию в /etc/fuse.conf. Затем подключите планшет и откройте каталог /media/nexus7 в любимом файловом менеджере.
2 Непрямое перенаправление
В Яркость на моем компьютере регулируемая, и в Fedora есть несколько связанных с этим файлов. При входе в систему яркость максимальна, и на основном экране это режет глаза. Я зашел в программу управления видеокартой и нашел настройки монитора, но их изменения сохраняются только в текущем сеансе. Стоит выйти из системы и войти снова, и яркость снова максимальная.
Я подумал: «Если это происходит при каждом входе в систему, я найду нужный файл настройки и пропишу его в своем .bashrc». Это файл /sys/class/backlight/acpi_video0/brightness, содержащий число от 0 до 9, и его владелец — root. Я решил добавить следующую команду в .bashrc:
echo 3 > /sys/class/backlight/acpi_vidoeo0/brightness
Команда не сработала, так как я не суперпользователь. Я попробовал запустить ее с комадной строки с sudo, но это тоже не сработало. Однако я могу открыть другое окно терминала, войти в систему командой su – и скопировать эту строку в новый терминал; тогда яркость меняется.
Родж Парментер [Rog Parmenter]
О Яркость устанавливается командой xbacklight, которая не требует прав root, но работает не во всех системах, поэтому мы опишем общий принцип, так как он пригодится не только для этой задачи. Перенаправление вывода с sudo часто вызывает путаницу из-за способа интерпретации команд оболочкой. Мы читаем слева направо, первым видим sudo и предполагаем, что все последующее будет выполняться от имени root. Но оболочке ближе принцип Йоды [персонаж «Звездных войн», который постоянно переставлял слова местами, – прим. пер.], и она сперва реализует перенаправление, так что команда
sudo somecommand >somefile
запускает команду от имени root, но пишет в файл от имени обычного пользователя. Решение – воспользоваться tee, командой, которая перенаправляет все со стандартного ввода в стандартный вывод и в файл:
echo 3 | sudo tee /sys/class/backlight/acpi_vidoeo0/brightness
Теперь echo выполняется от имени обычного пользователя, а запись в файл – от имени root. 3 появится и на терминале, и с целью от этого избавиться можно перенаправить вывод echo в /dev/null:
echo 3 | sudo tee /sys/class/backlight/acpi_vidoeo0/brightness > /dev/null
Проблема с запуском sudo из .bashrc еще не снята, так как команда остановится и запросит пароль. Однако можно настроить запуск команд от имени root и без запроса пароля. Откройте файл /etc/sudoers – лучше делайте это с помощью visudo, так как она проверяет синтаксис и позволяет избежать неприятных ситуаций из-за неправильной конфигурации в sudoers:
sudo visudo
Нам ни к чему, чтобы кто попало мог запустить tee от имени root, ведь это фактически дает доступ на запись к любому файлу в системе, и нужно указать всю команду полностью, следующим образом:
username ALL = NOPASSWD: /usr/bin/tee /sys/class/backlight/acpi_vidoeo0/brightness
Это позволяет одному указанному пользователю запустить данную конкретную команду от имени root без запроса пароля. Путь до команды указывается весь целиком, иначе можно будет создать файл с таким же именем в другом месте и получить доступ root. Сохраните файл и проверьте его командой
echo 3 | sudo tee /sys/class/backlight/acpi_vidoeo0/brightness
Она должна уменьшить яркость без запроса пароля. Если команда работает, добавьте ее в свой .bashrc или, еще того лучше, поместите в скрипт, запускаемый автоматически при загрузке рабочего стола.
3 Home-мания
В Я пользуюсь своим нетбуком Asus EeePC 901 в основном для заходов в Интернет, но хочу применять его и для других целей, типа игр и тому подобного. Сейчас на нем установлен Crunchbang Linux; это легкий и приятный дистрибутив, и в нем было довольно простое руководство по настройке разделов специально для EeePC; там сама операционная система устанавливается на раздел размером 4 ГБ, а еще один раздел размером 16 ГБ используется как /home.
И вот какая у меня проблема: при каждой установке какой-то программы через менеджер пакетов она всегда попадает на раздел с системой, а не с домашним каталогом. В результате довольно большой раздел в 16 ГБ пустует, а системный раздел забивается программами.
Возможно, я не понял чего-то простого, но как заставить менеджер пакетов устанавливать программы в каталог /home?
Чез Джельф [Chaz Gelf]
О У меня был 901, и эти два диска мне тоже досадили. Я схитрил и объединил их в один с LVM, но делать это нужно до установки дистрибутива. Информация о том, куда копируются файлы пакетов, находится в самих пакетах, и ее нельзя изменить. Если пакет хочет поместить их в /usr, они обязаны отправиться в /usr. Это высечено на камне; зато на камне не высечено, где должен быть сам /usr. Выполните следующую команду, чтобы узнать, какой каталог занимает больше всего места:
sudo du -hx --max-depth=1 /
Решив, какой каталог вы хотите переместить на другой диск (хорошие кандидаты – /var и /usr), перезагрузите нетбук в live-дистрибутив, чтобы не возиться с корневой файловой системой в работающей ОС. Теперь смонтируйте два диска, проще всего – из терминала, командой
mkdir -p /mnt/{root,home}
mount /dev/sda1 /mnt/root
mount /dev/sdb1 /mnt/home
Затем переместите весь каталог usr в файловую систему и создайте на ее месте пустой каталог:
mv /mnt/root/usr /mnt/home/
mkdir /mnt/root/usr
Наконец, добавьте строку в файл /etc/fstab, которая свяжет точку монтирования usr с новым каталогом:
/home/usr /usr none defaults,bind 0 0
Эта строка должна идти после строки с монтированием /home. Проделать такое можно с /usr или /var, либо с обоими каталогами, но не пытайтесь затрагивать другие каталоги корневой файловой системы. Такие каталоги, как /etc, /lib, /bin и /proc, должны оставаться в корневой системе.
Можно было бы переразбить второй диск, создать раздел для /usr и смонтировать его в fstab – пуристы скажут, что так и надо было сделать – но наш вариант проще. Важно и то, что он дает нам больше гибкости в распределении дискового пространства на диске в 16 ГБ, ведь его и так немного.
Есть еще один вариант, но для него потребуется переустановка системы. Это изначальная установка системы на диск большего размера. У вас может быть корневая файловая система размером 16 ГБ с разделом /home и раздел подкачки размером 4 ГБ, а остальное монтируется как дополнительное хранилище.
Коротко про… Заглянув в каталог /boot или файл меню загрузчика, вы увидите ссылки на файлы initrd. Это виртуальные диски образов ramfs. Виртуальный диск, как следует из названия – хранилище данных, которое выглядит как диск и проживает в оперативной памяти, а файл initrd – это виртуальный диск, сохраненный в файл. Таково определение, но зачем это нужно?
Initrd (виртуальный диск инициализации – initial ramdisk) – это виртуальный диск, загружаемый ядром при его запуске. Он становится корневой файловой системой, и с него запускаются скрипты настройки системы, после чего управление передается настоящему корневому разделу на жестком диске. Основная функция виртуального диска – загрузка модулей ядра. Дистрибутивы предназначены для работы на самом разном оборудовании, а это означает, что большинство модулей драйверов являются встроенными.
Будь они вкомпилированы в образ ядра, у нас бы получилось огромное ядро, медленно загружаемое и на 90 % избыточное. Поэтому в Linux предусмотрены загружаемые модули ядра; но модули ядра, необходимые для монтирования корневой файловой системы, из нее самой загрузить нельзя, и нам нужен способ предварительной загрузки драйверов контроллера жесткого диска, файловой системы и, возможно, некоторых других, таких как LVM или dm-crypt. Это и делает виртуальный диск; скрипт linuxrc на нем загружает соответствующие модули, запускает все необходимые программы установки (например, для LVM или для шифрованной корневой файловой системы) и затем переключается на корневой раздел на жестком диске.
Образ initrd – это файловая система в файле cpio, упакованном gzip, так что можно распаковать, смонтировать, изменить и упаковать ее следующими командами:
cd /mnt/tmp
zcat /path/to/initrd
4 Капризный монитор
В Из дистрибутивов сентябрьского DVD только в Slack Puppy монитор настроился правильно. Все дистрибутивы устанавливают разрешение моего монитора (на самом деле, телевизора с диагональю 37 дюймов) примерно в 1360 × 728, но при этом текст во всех приложениях читается плохо.
Только при разрешении 1280 × 720 текст и иконки получаются четкими и с верными пропорциями, но зато рабочий стол сдвинут влево. Но при смене разрешения на более низкое Slack Puppy отображает текст и иконки нормально и заполняет всю площадь экрана телевизора.
Кстати, два других «щенка», Wary и Lucid, отлично ладят с моим монитором, а Macpup — нет. Утилита позиционирования KDE не помогает.
Как Slack Puppy удается то, что не удается другим? Можно ли что-то с этим сделать? Сейчас я пользуюсь Ubuntu 10.04, и никаких проблем с монитором нет.
Питер Стивенсон [Peter Stevenson]
О Похоже, в большинстве дистрибутивов неправильно определяются характеристики монитора и поэтому задается неверный режим. Неверное разрешение на ЖК-или светодиодном мониторе выдает именно те текстовые артефакты, о которых вы говорите. В отличие от старых ЭЛТ-мониторов, ЖК-мониторы состоят из дискретных пикселей, и при попытке задать другое разрешение драйвер попытается отобразить точку там, где ее физически нет.
Одно изменение разрешения не снимает проблемы, так как по-прежнему неверны другие аспекты видеорежима. Есть два способа решения проблемы. Первый – загрузить спецификации своего монитора, покорпеть над man-страницей xorg.conf и пробовать разные настройки до тех пор, пока результат вас не удовлетворит.
Второй – схитрить и стянуть конфигурацию из Slack Puppy. Для этого загрузитесь в Slack Puppy и задайте нужные настройки монитора. Эти настройки будут записаны в файл /etc/X11/xorg.conf – скопируйте его на флэшку или на раздел на жестком диске. Теперь перезагрузитесь в другой дистрибутив, скопируйте этот файл обратно в /etc/X11 (вам понадобится доступ пользователя root или sudo) и перезапустите X одной из следующих команд, в зависимости от своего дистрибутива, или перезагрузив компьютер.
/etc/init.d/dm restart
/etc/init.d/xdm restart
/etc/init.d/gdm restart
/etc/init.d/lightdm restart
Немного странно, что правильно распознал монитор только один дистрибутив, но так как по сути это телевизор, он может сообщать свои настройки с ошибками, что и заставляет другие дистрибутивы выбирать неверные настройки.
5 Раздел подкачки
В Я устанавливаю Crunchbang в VirtualBox и выделил 11,4 ГБ для виртуального жесткого диска. При разбивке диска на разделы с помощью мастера мне не удается выделить много места в корневой раздел или раздел подкачки — большая часть диска выделяется в /home. Поскольку я не собирался хранить на нем много файлов, мне захотелось разбить диск по-другому, выделив около 8 ГБ на корневой раздел, 1 ГБ на раздел подкачки, а остальное — в /home. И все вроде прекрасно, но утилита разбиения не дает мне возможности сделать раздел разделом подкачки.
Heiowge, с форумов
О И в установщике Crunchbang 10, и в установщике Crunchbang 11, которые мы пробовали, возможность создать раздел подкачки имелась. Однако и в работающей системе достаточно легко создавать, изменять и выделять дисковое пространство в разделы подкачки. Самый простой способ обойти проблему с этим установщиком – создать раздел нужного размера, но не задавать его тип и не монтировать его (если тип нужно задать обязательно, выберите его произвольно). После установки и загрузки системы преобразуйте этот раздел в раздел подкачки – либо в GParted, либо вручную, запустив в терминале команду mkswap:
sudo mkswap /dev/sdN
Затем добавьте его в /etc/fstab в строке
/dev/sdN none swap sw 0 0
Если в вашем fstab для определения дисков используются UUID и вы намерены этого придерживаться, то уникальный идентификатор раздела подкачки можно узнать командой
sudo blkid /dev/sdN
Для разделов подкачки можно задать и метки файловых систем, как и для «обычных» файловых систем, чтобы конфигурация в fstab была более понятной. Для этого создайте раздел подкачки командой
sudo mkswap --label myswap /dev/sdN
и добавьте его в /etc/fstab строкой
LABEL=myswap none swap sw 0 0
6 Перенаправление почты в KMail
В Недавно я установил Kubuntu 12.04, чтобы лучше узнать KDE. Я всегда был и остаюсь пользователем Ubuntu. Надеюсь, Грэм, наш постоянный эксперт по KDE, поможет мне с проблемой, которая выглядит проблемой зеленого новичка. Похоже, KMail 4.8.4 не умеет перенаправлять почту без включения всех исходных получателей и отправителей. В Thunderbird я всегда удалял эти данные, так как они просто отнимают место, к тому же являясь приватными.
Можно ли исключить эти списки в KMail?
Винс [Vince]
О KDE у нас любит не только Грэм. Я и сам им пользуюсь с версий 1.x, хотя, признаюсь, откладывал переход с 3.5 на 4.x дольше, чем многие другие, пока последняя не стала по-настоящему удобной. KMail поддерживает три способа переправки письма дальнейшим получателям, все они доступны в подменю Forward [Пересылка] меню Messages [Сообщения] или в контекстном меню, которое открывается при щелчке правой кнопкой мыши по сообщению. При переключении [Redirecting] сообщение пересылается как есть, без указания, что оно пересылается вами. Затем есть два варианта перенаправления. В первом случае письмо пересылается как вложение, и его содержимое сохраняется, и часто именно это и нужно, особенно в сфере бизнеса, поскольку тогда понятно, что содержимое пересылаемого письма не изменилось. Наверное, именно этот вариант и используете вы, так как в нем нельзя изменять сообщение. Если выбрать второй вариант, Forward > Inline [Пересылка > Вложенное], то в KMail и других почтовых клиентах письмо вставляется в новое сообщение с пометкой «Forwarded Message» в теме письма.
Перед отправкой можно отредактировать письмо, удалив другие адреса (не говоря уже о нескольких корпоративных подписях, вложенных друг в друга). В Thunderbird этот метод используется по умолчанию; все что вам нужно сделать в KMail – поработать над своей мышечной памятью и нажимать для перенаправления письма Shift + F вместо F. |
Пользователи и суперпользователи > Я только что впервые установил Linux. Зачем понадобилось создавать двух пользователей?
Одним из них был root, или суперпользователь, он используется только для администрирования. Второй – обычный пользователь для обычной работы в системе.
> Зачем нужны два пользователя? Нельзя ли администрировать систему от имени своего пользователя?
В Linux есть права доступа к файлам, определяющие, кто является владельцем каждого файла или каталога и кто может читать или записывать в него. У каждого пользователя есть свой домашний каталог, в котором он может делать все что угодно, создавая и удаляя файлы в свое удовольствие. За пределами домашнего каталога каждый пользователь может читать файлы и запускать программы, но не изменять или удалять их. Это обеспечивает безопасность и защищенность. Вы не можете случайно удалить системные файлы, и даже запуск вложения из вредоносного письма не испортит систему, потому что у вас нет нужных прав доступа. Административный доступ нужен, например, для установки программы. Вы переключаетесь на пользователя root, выполняете нужные действия и переключаетесь обратно.
> То есть при каждой установке программы или других подобных действиях мне придется выходить из системы и заходить в нее как пользователь root? Это не слишком весело.
Нет, выходить из системы не придется, как не придется и заходить в графическую среду от имени root (в некоторых дистрибутивах этого вообще сделать нельзя). От имени root нужно лишь запустить отдельную программу. Многие программы уже так и настроены. Если вы попробуете запустить утилиту настройки системы YaST в SUSE или Центр управления Mandriva [Mandriva Control Centre], у вас спросят пароль root. Для любой другой программы откройте терминал, наберите su, введите пароль и затем запустите программу, набрав ее имя.
> Компьютером пользуюсь я один. Нужно ли на самом деле каждый раз входить в систему?
В большинстве дистрибутивов можно настроить автоматический вход в систему как конкретный пользователь (не root!). Это удобно, если вы единственный пользователь. Если вы пользуетесь KDE, это можно настроить в Менеджере входа в систему [System Administration > Login Manager] в Центре управления KDE [KDE Control Centre]. Пользователи Gnome должны выбрать пункт меню Desktop > System Settings > Login Screen [Рабочий стол > Настройки системы > Окно входа в систему] в главном меню и включить автоматический вход в систему [Automatic Login] на вкладке General [Общее]. Однако дважды подумайте, прежде чем включить эту опцию на ноутбуке. Если вы его потеряете или его украдут, то каждый, кто включит его, получит беспрепятственный доступ к вашей почте и другой приватной информации.
Помогите нам помочь вам
Ежемесячно мы получаем несколько писем, на которые не в состоянии ответить, так как проблема описана в них недостаточно полно. Чтобы дать вам наилучший ответ, нам нужно знать как можно больше.
Если у вас появляется сообщение об ошибке, приведите его точный текст и опишите конкретные условия, когда оно появляется. При возникновении проблемы с устройствами перечислите нам все установленные устройства. Если Linux уже запущен, можете применить для этого отличную программу Hardinfo (http://hardinfo.berlios.de/) – она сохранит подробную информацию об устройствах и о состоянии системы в HTML-файл, который вы сможете приложить к своему письму. Альтернативный и не менее удобный вариант – lshw (http://ezix.org/project/wiki/HardwareLiSter). Одна из этих программ должна быть включена в ваш дистрибутив (а то и обе).
Если вы не хотите или не можете их установить, выполните следующие команды в терминале от имени root и приложите файл system.txt к письму. Это здорово поможет диагностике.
uname -a >system.txt
lspci >>system.txt
lspci -vv >>system.txt