Решения тех проблем, с которым мне приходилось сталкиваться.

вторник, 16 декабря 2008 г.

Bluetooth стерео звук (a2dp)

Потребовалось подключить bluetooth-стерео гарнитуру к linux, чтобы слушать через нее музыку или смотреть фильмы. Долго искал и читал всякое, а оказалось все супер-просто.

Предполагается, что на машине уже установлена поддержка Bluetooth (пакеты gnome-bluetooth, bluez-utils и их зависимости). Служба Bluetooth запущена (по умолчанию она запускается при загрузке, если в это время было найдено Bluetooth карта (usb dongle или что-то подобное).

Если брелок подключается после загрузки нужно запустить службу вручную (/etc/init.d/bluetooth start).

Далее, включаем гарнитуру в режиме сопряжения (pairing mode). Определяем ее MAC-адрес.

hcitool scan

Адрес имет вид AB:CD:EF:GH:IJ:KL

Создаем файл ~/.asoundrc следующего содержимого


pcm.bluetooth {
type bluetooth
device AB:CD:EF:GH:IJ:KL
profile "auto"
}

Адрес, понятное дело, ставим настоящий.

Можно пользоваться! При первом подключении к гарнитуре она автоматически будет сопряжена с компьютером, возможно потребуется ввести PIN-код (по умолчанию обычно 0000).

Как заставить конкретную программу выдавать звук на ALSA-устройство с именем "bluetooth" это уже особенности каждой программы.
В audacious я отредактировал файл ~/.config/audacious/config, параметр pcm_device=bluetooth

среда, 3 декабря 2008 г.

Как сделать hex-dump

Иногда бывает нужно заглянуть внутрь файла на уровне hex-dump. Обычно на помощь приходит mc или другие GUI-утилиты (например - ghex).
А то в же время в почти всех *nix дистрибутивах есть простая консольная утилита xxd. По умолчанию она "дампит" входной поток в выходной. Но самое главное ее свойство - она умеет выполнять обратное преобразование. Т.е. генерить из дампа бинарный файл.

PS: когда-то я именно так спасал стертый MBR... :)

вторник, 11 ноября 2008 г.

восстановление забытого пароля

В обычном линуксе есть т.н. single user mode. Загружается добавление параметра single в строку параметров загрузчика. В убунту это загружает Recovery Mode, которые не совсем то.

Самый просто способ сменить пароль - отредактировать параметры загрузки.
В меню grub нажимае 'e', открывается редактор, стираем ro quiet splash, вместо этого добавляем rw init=/bin/bash. Потом Enter, для сохранения изменений и 'b' для загрузки.

После старта ядра будет смонтирована корневая система на запись и запустится bash. Ну а далее все как обычно:

passwd user

UPD: Раньше (или сейчас, но для других дистрибутивов) прокатывал параметр single в параметрах загрузки. Но для новых версий убунты его недостаточно.

среда, 29 октября 2008 г.

Версия ubuntu

Содержится обычно в файле /etc/issue. На самом деле этот файл предназначен для сообщения некой информации пользователям перед в входом в систему. Ну а ubuntu как раз обычно и выводит в качестве такого сообщения номер версии.
Кстати, а для вывода информации пользователям после входа в систему есть файл - /etc/motd. Иногда это симлинк на другой файл, периодически обновляемый, таким образом можно организовать отображение меняющихся "полезных советов".
UPD: В комментариях подсказали команду lsb_release (print distribution-specific information). С ключом -a выводит и версию и кодовое название дистрибутива.


lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.2
Release: 8.04
Codename: hardy

среда, 15 октября 2008 г.

Определить uuid диска

Нашел два способа.
Первый:

vol_id --uuid /dev/sda1

Второй:
ls -l /dev/disk/by-uuid

Во втором случае выводятся все известные uuid, ссылающиеся на реальные блочные устройства.

вторник, 14 октября 2008 г.

Перенумерация сетевых интерфейсов

Если порядок именования интерфейсов (что eth0, а что eth1 и так далее) не устраивает, то исправить ситуацию можно редактированием файла /etc/udev/rules.d/70-persistent-net.rules. Там идет привязка MAC адреса к имени устройства.

Язык интерфейса и локаль

Я уже писал про разницу между локалью и языком интерфейса, а недавно самому пришлось вспоминать куда чего прописывать.
Итак, свежеустановленная ubuntu 8.04.1. Требуется иметь английский интерфейс для меню и программ, но русскую локаль. Так как я один пользователь, то прописываю настройки глобально, в /etc/environment

LANG=ru_RU.utf8
LANGUAGE=en_US.utf8

После перезагрузки выясняется, что не работает - язык интерфейса по-прежнему русский. Переменная LANGUAGE вообще не определена. После долгих копаний обнаруживается, что это дело рук gdm. Уже не знаю почему, но он сравнивает значение LANGUAGE и GDM_LANG и, если они не совпадают, сбрасывает LANGUAGE. GDM_LANG же берется или из ~/.dmrc или из LANG или можно выбрать в меню экрана входа.
Т.е. пришлось искать место, где сделать установку LANGUAGE в рамках пользователя, после gdm, но до остальных гномовских приложений. К счастью, старые правила еще работают. Таким местом стало ~/.gnomerc