27 мая 2011 г.

cups + console

Иногда надо просто подопнуть ушедший по какой-то причине в stop-состояние принтер (в CUPS-е), а открывать браузер и топать на админку или лениво, или сложновыполнимо (например, инет медленный). Консольно эту операцию можно сделать так:
# cupsenable
Для обратной операции есть cupsdisable.

24 мая 2011 г.

Реанимация ext4.

Так случилось, что поимел сразу две напасти с ext4 после некорректного выключения компьютера. Напасть первая:
The superblock could not be read or does not describe a correct ext2 filesystem. If the device is valid and it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193
И конечно, никакого успешного монтирования и доступа к данным. Поломатый superblock можно выцепить из многочисленных резервных копий, разбросанных по диску. Поглядеть номера можно, набрав mke2fs -n и поглядев в соответствующем поле "Superblock backups stored on blocks". Взяв любой адрес блока, нужно отдать его fsck'у (опция -b): e2fsck -b alt_superblock
Напасть вторая - при монтировании раздела имеем ошибку:

EXT4-fs (sda1): bad geometry: block count 19537408 exceeds size of device (19537166 blocks)

Вообще, подобного рода проблемы возникают в случае некорректного изменения размера тома. Однако в моем случае, хоть подобная операция и имела место быть (перенос с помощью clonezilla раздела на раздел), но проявилась не сразу, а после некоторого времени использования. Так или иначе, но в результате информация о размере файловой системы и размере диска стали различаться. Лечением в данном случае будет ручная корректировка оных.
Записываем таблицу разделов в файл:

sfdisk -d /dev/sda > PT.txt
 В полученном файле имеется строчка вида:

/dev/sda1 : start= 2048, size=156297328, Id=7
Так вот размер size= нужно заменить на значение block count (из сообщения об ошибке), увеличенное в 8 раз (блоки -> байты). То есть получится:
/dev/sda1 : start= 2048, size=156299264, Id=7
Далее, модифицируем таблицу разделов непосредственно на HDD:
sfdisk -f /dev/sda -O PT.save < PT.txt
Теперь монтирование  должно пройти успешно. Если есть сомнения в состоянии файловой системы, то смонтировать лучше с опцией -o ro, дабы вытащить требуемые данные, а затем проверив файловую систему fsck'ом.

23 мая 2011 г.

apt-get & aptitude limit rate

Если нужно разово ограничить канал для загрузки пакетов сабжевыми менеджерами, делаем так:
aptitude -o Acquire::http::Dl-limit=100k update
apt-get -o Acquire::http::Dl-limit=100k update
Если хочется на постоянку, так:
echo "Acquire::http::Dl-Limit "100";" >> /etc/apt/apt.conf.d/limit-rate

 

20 мая 2011 г.

Получение загранпаспорта нового образца + gosuslugi.ru

Отвлекусь от темы компьютерной и закину пару килобайт истории из "реаллайфа". Хотя совсем без компьютеров не получится - рассказ будет про получение загранпаспорта нового образца с помощью портала госуслуг.
При получении очень сильно помогла вот эта статья. Добавлю лишь свои ремарки. Поехали.
Сфотографироваться и получить цифровую фотографию со сверхтребованиями (см. ниже). Посещение фотоателье, персонал которого, прочитав и уяснив эти требования, посоветовал все-таки рвануть в местное ФМС, и уточнить, что же им нужно – таки.
На самом деле - нужна обычная фотка для загранпаспорта, разве что фон лучше попросить сделать отличный от белого, им несложно. Более того, нужна лишь фотка в электронном варианте (заданного размера и разширения), поэтому, если удастся договориться о "непечатном варианте", то можно и меньшей денежкой обойтись (у нас в Кирове фотка на ЗП стоит 100 рупий).
Имея фотку, заполнить анкету можно без дальнейших затык. А уже после принятия заявления стоит топать в отдел кадров и в банк.
Оплата в в МЕСТНОМ сбере пошлины. Спасибо навигатору, показания местных жителей сильно разнились, потому что отделений несколько.
На самом деле "разность" отделений Сбербанка тут непричем. Нужно лишь знать реквизиты (в особенности код ОКАТО, который разнится от места к месту, и КОД услуги), тогда платить можно где угодно. Все это выложено на местном сайте ФМС - для Кировской области, к примеру, тут. Однако скачивать квитанции, заполнять их, нести в банк совершенно не стоит, там же в окнах вечные очереди, сегодня сбербанк много где натыкал спецтерминалов для оплаты всего и вся. Пункт уплаты госпошлины там тоже имеется, терминал прерасно знает, где какой ОКАТО и какой код у запрашиваемой услуги. Нужно лишь знать свой район проживания. Пять минут - и квитанция оплачена, чек в кармане.
После того, как заявление приняли, ежедневно (а лучше и не по разу) ходим в кабинет и смотрим на странице статус заявления (уведомления на почту, кроме самого первого, о подаче заявления, не приходят! - хотя обещали поправить). Его сначала примут к исполнению, потом назначат ответственного, поставят в очередь и вышлют приглашение на некоторое время. В зависимости от загруженности местного отдела ФМС, приглашение придет в течение двух-пяти дней. Мне, по-моему, на третий пришло.
Дальше - все просто, приходим в назначенное время, расталкиваем живую очередь "немодернизированных" сограждан, сдаем все документы (в приглашении продублируют, какие надо: пачпорт внутренний + ксерокопия, старый загран (если есть), военник + ксерокопия, заверенную выписку из трудовой), оставляем свой автограф в специальном прямоугольничке, фоткаемся в шайтан-кабине и снова идем домой, ходить в личный кабинет и жмакать статус заявления. Этап посещения ФМС у меня занял ровно семь минут. Этам ожидания готовности пачпорта - 8 дней. А там - снова приглашение прийти тогда-то туда же с пачпортом, еще 7 минут - и вуаля, толстая бордовая книжица в рукаа.
Итого, 29 апреля заявление было подано, 19 мая (это с учетом всех выходных и майских праздников) пачпорт был в моих натруженных руках. Недурно, я считаю. Тем более что общаться пришлось только с а) девушкой в фотоателье и б) сотрудницей ФМС, принимавшей документы и выдававшей готовый паспорт.

5 мая 2011 г.

Can not login to VMWare Server 2 Web-console

Забавно, перестала пускать к себе в веб-консоль VMWare Server 2. Неверный логин-пароль, и все тут. То ли обновилось что неудачно, то ли еще что. Хотя, возможно, первопричина проблемы в том, что не так давно был поменян пароль пользователя, который прописан как администратор vmware. Поменян в LDAP-е (так как авторизация через него вся завернута). Поглядевши в /etc/pam.d/vmware-authd, узрел там ожидаемое:
#%PAM-1.0
auth       required    pam_unix.so shadow nullok
account    required    pam_unix.so
Исправил pam_unix.so на pam_ldap.so - Авторизация тут же прошла успешно. Возможно, у меня не происходит синхронизация локальных паролей с ldap-ными (есть пара пользователей, которые заведены и в системе тоже). ТАк или иначе, можно считать это workaround-ом на случай подобного фейла.

4 мая 2011 г.

Debian Lenny + HPLJm1522MFP + xsane

Потребовалось подружить Debian Lenny и HP LaserJet m1522 MFP. Если с печатью все заработало практически из коробки и без вопросов (с умолчальным в ленни hplip_2.6.8b), то со сканированием возникли проблемы. Во-первых, поддержка сканирования для этой модели принтера реализована только в hplip_2.8.6, поэтому пришлось скачать и поставить (читай, доставить кучу dev-пакетов и скомпилить) свежий hplip. Сканер стал определяться hp-check-ом и scanimage -L, однако сканировать отказывался - hp-scan и xsane в один голос заявляли об ошибке ввода-вывода, плюс в syslog-е имелась фигня подобного рода:
zp python: io/hpmud/hpmud.c 483: invalid device_close state
zp python: hp-scan[8989]: error: Error during device I/O
zp python: io/hpmud/hpmud.c 341: device_cleanup: device uri=hp:/usb/HP_LaserJet_M1522nf_MFP?serial=00VNHTB1FH7B
zp python: io/hpmud/hpmud.c 353: device_cleanup: close device dd=1...
zp python: io/hpmud/hpmud.c 355: device_cleanup: done closing device dd=1
и прочие непотребства.
Пытался ставить разные версии hplip, включать пользователей в разные группы - безуспешно. Решение оказалось внезапным и местами волшебным, поэтому первопричины нижеследующих действий я пояснить не берусь. В одном из многих просмотренных багтрекерах  нашлось предложение подменить библиотеку libhpmud.so. В моем случае имела место такая картина:
ls -l /usr/lib/libhpmud*
-rwxr-xr-x 1 root root    867 Май  4 17:49 /usr/lib/libhpmud.la
lrwxrwxrwx 1 root root     17 Май  4 17:49 /usr/lib/libhpmud.so -> libhpmud.so.0.0.4
lrwxrwxrwx 1 root root     17 Май  4 17:49 /usr/lib/libhpmud.so.0 -> libhpmud.so.0.0.6
-rwxr-xr-x 1 root root 189818 Май  4 17:49 /usr/lib/libhpmud.so.0.0.4
-rwxr-xr-x 1 root root 201843 Май  4 17:34 /usr/lib/libhpmud.so.0.0.6
Поэтому я заменил симлинк  /usr/lib/libhpmud.so -> libhpmud.so.0.0.4 на /usr/lib/libhpmud.so -> libhpmud.so.0.0.6
 mv libhpmud.so libhpmud.so_
 ln -s libhpmud.so.0.0.6 libhpmud.so
Чудесным образом ошибка исчезла и xsane запустился =). Да, возвращаясь к вопросу о группах - следует все же добавить пользователя в lp и scanner.

2 мая 2011 г.

Восстановление работоспособности blueman

В один из дней после обычного для Sid-а aptitude dist-upgrade поломался bluetooth-applet. Точнее, blueman-applet, заменяющий дефолтный при установке сотфины blueman - более функционального и приятного менеджера голубозубых соединений. Сегодня выдалась свободная минутка, поэтому дошли руки поглядеть внимательнее, что сломалось.
Симптоматика следующая - после запуска рабочего стола (и апплета вместе с ним) blueman не может получить доступ к BT-адаптеру, показывая пустой список подключенных устройств, хотя сам адаптер подключен и системой корректно определяется:
delayer@inspire:~$ sudo hciconfig -a
hci0:    Type: BR/EDR  Bus: USB
    BD Address: 00:15:83:35:1D:6F  ACL MTU: 510:8  SCO MTU: 48:10
    UP RUNNING PSCAN ISCAN
    RX bytes:2056 acl:0 sco:0 events:80 errors:0
    TX bytes:4694 acl:0 sco:0 commands:78 errors:0
    Features: 0xff 0xfe 0xff 0xfe 0x98 0x3f 0x79 0x83
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF
    Link mode: SLAVE ACCEPT
    Name: 'ISSCEDRBTA'
    Class: 0x5a0104
    Service Classes: Networking, Capturing, Object Transfer, Telephony
    Device Class: Computer, Desktop workstation
    HCI Version: 2.1 (0x4)  Revision: 0x90e
    LMP Version: 2.1 (0x4)  Subversion: 0x316
    Manufacturer: Integrated System Solution Corp. (57)
Такой вот стоит дешевенький донгл без роду-племени (хотя, может и вру, на корпусе логотип Acorp-а есть). Запуск апплета (или любой другой софтинки вида blueman-*) консольно проходил успешно, но с тем же результататом - нужные пункты меню выбирались, но не нажимались, а в логах узрелось нечто вида: "except dbus.DBusServiceUnknownError:". Раскопки этих ваших интернетов привели к workaround-у: а) добавить пользователя в группы dbus и uucp б) запускать апплет через ck-launch-session (некая приблуда ConsoleKit-ная). То бишь проблема, оказывается, с правами доступа. Дальнейший гуглинг вывел на файл /etc/dbus-1/system.d/bluetooth.conf
 <!-- This configuration file specifies the required security policies
     for Bluetooth core daemon to work. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- ../system.conf have denied everything, so we just punch some holes -->

  <policy user="root">
    <allow own="org.bluez"/>
    <allow send_destination="org.bluez"/>

    <!-- allow root to send to agents -->
    <allow send_interface="org.bluez.Agent"/>
  </policy>

  <!-- allow users at the console, see consolekit or libpam-foreground -->
  <policy at_console="true">
    <allow send_destination="org.bluez"/>
  </policy>

  <!-- allow users of bluetooth group to communicate with hcid -->
  <policy group="bluetooth">
    <allow send_destination="org.bluez"/>
  </policy>

  <policy context="default">
    <deny send_destination="org.bluez"/>
  </policy>

</busconfig>
где описываются политики для демона bluetoothd. Чтение его внутренностей показало, что доступ к демону и иже с ним имеют только а) root (отсюда работоспособность через sudo и ck-launch-session) и б) группа bluetooth.
Таким образом sudo adduser delayer bluetooth с последующим релогином проблему решает.
З.Ы.: XML-файлик удалось беспроблемно вставить в текст после прогона через эту форму.