Tuesday, May 5, 2009

Как настроить поддержку Билайн MMS на Android

Отправка MMS на андроиде HTC G1 с моего номера Beeline не работала, пока я не догадался сделать так, как делают на Водафоне.

Делаем две APN, одна для GPRS, вторая для MMS. Это делается в меню Settings > Wireless controls > Mobile networks > Access Point Names:

Первая APN:

Name: Beeline
APN: internet.beeline.ru
MCC: 250
MNC: 99
APN type: default
Остальные параметры не устанаваливать

(MCC и MNC должны подцепиться автоматически)

Вторая APN:

Name: BeeMMS
APN: mms.beeline.ru
User ID: beeline
Password: beeline
MMSC: http://mms/
MMS Proxy: 192.168.94.23
MMS Port: 8080
MCC: 250
MNC: 99
APN type: mms

После этого телефон перезагрузить (Airplane mode не достаточно).

Monday, May 4, 2009

Сборка браузера Chromium на Athlon XP

На моём компьютере с процессором Athlon XP 1600+ не запускается bleeding edge браузер Chromium, потому что бинарная сборка оптимизирована под Pentium4 и SSE2. SSE2 мой Атлон не поддерживает, вестимо.

$ chromium-browser
[28898:28898:32389465322:ERROR:/build/buildd/chromium-browser-2.0.178.0~svn20090430r14953/build-tree/src/chrome/common/temp_scaffolding_stubs.cc(132)] Not implemented reached in static bool FirstRun::IsChromeFirstRun()
Illegal instruction
$


Как в Ubuntu перекомпилировать Chromium под Athlon XP и прочие не-SSE2 процессоры? Можно либо последовать совету разработчиков и собрать его просто из исходников, либо пересобрать сам пакет по-дебиановски вот так:

1. Точно так же, как ночные бинарники, скачиваем пакет свежего исходного кода:

$ apt-get source chromium-browser

2. Скачиваем и устанавливаем зависимости:

$ sudo apt-get build-dep chromium-browser

3. В текущем каталоге появится исходный код (метров триста) и папка chromium-browser-3.0* c правилами сборки и пакетом того же самого исходного кода chromium-browser-2.0.178.0~svn20090502r15142-source.tar.bz2.

4. Однако, в файле build-tree/src/build/common.gypi прописаны те самые параметры оптимизации под P4 и SSE2 для профиля Debug (для Release их нет):

      'cflags': [
'-m32',
'-pthread',
'-march=pentium4',
'-fno-exceptions',
'-mfpmath=sse',
'-msse2',
'-Wall',
Мы можем либо заменить их, например, на
      'cflags': [
'-m32',
'-pthread',
'-mtune=athlon-xp',
'-fno-exceptions',
'-mfpmath=sse',
'-msse',
'-Wall',
Для этого пишем патч:


Index: src/build/common.gypi
===================================================================
--- src.orig/build/common.gypi 2009-05-29 19:01:23.000000000 +0200
+++ src/build/common.gypi 2009-05-30 19:02:27.000000000 +0200
@@ -285,7 +285,7 @@
# Some utility binaries need to be build with the host's native
# config (i.e. no 32-bit override).
'Tool': {
- 'cflags!': ['-m32', '-march=pentium4', '-msse2', '-mfpmath=sse'],
+ 'cflags!': ['-m32', '-mtune=athlon-xp', '-msse', '-mfpmath=sse'],
'ldflags!': ['-m32'],
'cflags': [ '-O2' ],
},
@@ -343,8 +343,8 @@
'conditions': [
['branding=="Chromium"', {
'cflags': [
- '-march=pentium4',
- '-msse2',
+ '-mtune=athlon-xp',
+ '-msse',
'-mfpmath=sse',
],
}],


и кладем его в файл chromium-browser-3.0*/debian/patches/drop_sse2.patch

5. Теперь этот пакет можно собрать, как обычно,

$ debuild -uc -us

7. Всё. На моём несчастном Athlon XP 1600+ сборка пакета занимает 6 часов, зато браузер
потом работает.

Update: Быстрый какой, как настоящий! Супер! Жаль только, что рамка окна видна и настройки пока не все можно менять. Ну и ещё много багов наверняка найдётся.

Thursday, April 23, 2009

Простой I/O-планировщик для виртуальных машин

Мэтти с prefetch.net обратил внимание на интересную мысль: на виртуальных машинах нужно использовать планировщик Noop, который формирует самую простую очередь запросов, а не всякие там изощренные CFQ и Anticipatory. 

Идея в том, что запросы со всех виртуальных машин всё равно поступают к хост-машине, которая лучше знает, как их сортировать. Лишняя сортировка запросов самой гостевой машиной только снизит производительность, потому что гостевая всё равно не знает, чем там заняты остальные виртуальные машины, и просто зря напрягается. 

Итого: при установке виртуального сервера на хост-машине ставим CFQ или Anticipatory/Deadline, а на виртуалках -- Noop. 

Friday, April 17, 2009

Wednesday, February 4, 2009

Как послать баг-репорт во freedesktop.org

Мне захотелось добавить поддержку своего плеера в hal, чтобы он опознавался как плеер, а не как простое usb-хранилище. Для этого надо исправить файл 10-usb-music-players.fdi в /usr/share/hal/fdi/information/10freedesktop/.

Вот, например, поддержка плееров Samsung:

<!-- Samsung YP-MT6V, YP-F1,YP-U1, YP-U2Z, YP-U4 -->
<match key="@storage.originating_device:usb.product_id" int_outof="0x5026;0x502b;0x503b;0x5050;0x5092">
<addset key="portable_audio_player.access_method.protocols" type="strlist">storage</addset>
<append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
<append key="portable_audio_player.output_formats" type="strlist">application/ogg</append>
<append key="portable_audio_player.output_formats" type="strlist">audio/x-wav</append>
<append key="portable_audio_player.input_formats" type="strlist">audio/x-wav</append>
</match>

Чтобы это изменение попало в Linux community, надо послать патч разработчикам модуля hal-info из freedesktop.org. Разработчики freedesktop.org ценят своё время и принимают только патчи, присланные по отношению к их текущему git-репозиторию.

Устанавливаем git (apt-get install git) и cинхронизируемся с анонимным репозиторием -- моя локальная копия будет в ~/src/freedesktop.org.

$ cd src/freedesktop.org
$ git clone git://anongit.freedesktop.org/hal-info


Git скачивает копию модуля hal-info. Вносим изменения в файл src/freedesktop.org/hal-info/fdi/information/10freedesktop/10-usb-music-players.fdi, просим git сделать патч.

$ git diff ./10-usb-music-players.fdi

diff --git a/fdi/information/10freedesktop/10-usb-music-players.fdi b/fdi/information/10freedesktop/10-usb-music-players.fdi
index 29f8234..a11aa87 100644
--- a/fdi/information/10freedesktop/10-usb-music-players.fdi
+++ b/fdi/information/10freedesktop/10-usb-music-players.fdi
@@ -228,8 +228,8 @@
<append key="portable_audio_player.output_formats" type="strlist">application/ogg</append>
<append key="portable_audio_player.input_formats" type="strlist">audio/mpeg</append>
</match>
- <!-- Samsung YP-MT6V, YP-F1,YP-U1, YP-U2Z -->
- <match key="@storage.originating_device:usb.product_id" int_outof="0x5026;0x502b;0x503b;0x5050">
+ <!-- Samsung YP-MT6V, YP-F1,YP-U1, YP-U2Z, YP-U4 -->
+ <match key="@storage.originating_device:usb.product_id" int_outof="0x5026;0x502b;0x503b;0x5050;0x5092">
<addset key="portable_audio_player.access_method.protocols" type="strlist">storage</addset>
<append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
<append key="portable_audio_player.output_formats" type="strlist">application/ogg</append>

Вот этот патч уже можно послать разработчикам.

Идём на bugs.freedesktop.org, регистриуемся в багзилле и создаем новый баг. В новом баге все поля заполняются очевидно.
Заголовок: Add new usb music player Samsung U4 to the hal db,
product: hal,
component: hal-info,
Hardware: other
OS verson: all (потому что freedesktop кросс-платформенный).
Priority: lowest
Severity:trivial

В описании бага пишем, что мы просим разработчиков включить в базу данных hal новый музыкальный usb плеер. Чтобы доказать, что мы всё правильно внесли в fdi-файл, копируем в баг-репорт строчки вывода lshal и lsusb при подключенном плеере.

$ lsusb | grep Samsung
Bus 002 Device 004: ID 04e8:5092 Samsung Electronics Co., Ltd

$ lshal | less

Тут копируем весь блок информации про плеер.

И наконец, загружаем наш патч. Поскольку патч в формате git, разработчикам очень просто интегрировать его в репозиторий.

Точно так же можно написать и послать патч к любому другому компоненту freedesktop.org.

Saturday, December 27, 2008

Вопросы сертификационных экзаменов

Это типичные вопросы с сертификационных сисадминских экзаменов разных вендоров.

Sun Solaris Systems Administrator Certification Exam:

1. Где находится исполняемый файл GNU grep в Solaris 8?

a) /usr/bin/ggrep
b) /usr/xpg4/bin/grep
c) /opt/sfw/bin/ggrep
d) /usr/ccs/bin/ggrep
e) В Solaris 8 нет GNU grep
f) Все варианты a-d верны

2. Как правильно установить Sun ONE Web Server 6 в Solaris 9?

a) установить пакеты SUNWhttpr, SUNWhttpu, SUNWhttps
b) установить пакеты SFWapache2, SFWapache2r, SFWapache2d
c) установить Netscape iPlanet Web Server 7.0, потому что Web Server 6 -- это то же самое
d) скомпилировать из исходников Apache 2.0.54

3. Почему Solaris 10 -- самая передовая ОС в мире?

a) Потому что она поддерживает ZFS
b) Потому что она поддерживает зоны
c) Потому что она поддерживает DTrace
d) Потому что она поддерживает SMF
e) Потому что она поддерживает NFSv4
f) Потому что она поддерживает pNFS
g) Всё вышеперечисленное

Sun Cluster Administrator Certification Exam:

1. Вы настраиваете кластер из четырех серверов, 64 контейнеров, 8 массивов, 4 баз данных Oracle и пятисот LDAP-каталогов в Ямало-Ненецком округе из Москвы по ssh. Какая команда подключает дисковые массивы к кластеру и объединяет их в две группы?

a) /usr/cluster/bin/cldevicegroup set -d d1,d2,d3,d4 -p localonly=true -n yamal-host-1 -n yamal-host-2 -n yamal-host-3 -n yamal-host-4 rawdevgrp1; /usr/cluster/bin/cldevicegroup set -d d5,d6,d7,d8 -p localonly=true -n yamal-host-1 -n yamal-host-2 -n yamal-host-3 -n yamal-host-4 rawdevgrp2

b) /usr/cluster/bin/cldevicegroup create -d d1,d2,d3,d4 -p localonly=false -n yamal-host-1,yamal-host-2,yamal-host-3,yamal-host-4 -p bus=fiber rawdevgrp1; /usr/cluster/bin/cldevicegroup create -d d5,d6,d7,d8 -p localonly=false -n yamal-host-1,yamal-host-2,yamal-host-3,yamal-host-4 -p bus=fiber rawdevgrp2

c) /usr/cluster/bin/cldevicegroup add-device -d d1,d2,d3,d4 -t fiber-channel -n yamal-host-1,yamal-host-2,yamal-host-3,yamal-host-4 rawdevgrp1 && /usr/cluster/bin/cldevicegroup add-device -d d5,d6,d7,d8 -t fiber-channel -n yamal-host-1,yamal-host-2,yamal-host-3,yamal-host-4 rawdevgrp2

Microsoft Windows Server 2003 Systems Administration Exam:

1. Вы ИТ-менеджер компании Кенгуру Лимитед, расположенной в штате Калифорния, США. На все компьютеры вашей сети установлена ОС Windows XP Professional, на серверах используется Windows 2003 Server. Настоящий рай!

Вам звонит Сара Джонсон, менеджер по продажам, только что вернувшаяся из отпуска на Сейшельских островах. Она забыла свой пароль, на её лаптопе установлена ОС Windows XP Professional. Сара говорит, что у неё встреча через полчаса, поэтому ей срочно нужен доступ к её файлам и почте.

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

a) Active Directory Users and Computers
b) Active Directory Computers and Users
c) Computers and Users of Active Directory
d) Users, Passwords, EMail, and Computers

2. Вы ИТ-менеджер компании Тормозо Энтерпрайз, расположенной в штате Массачусетс, США. На все компьютеры вашей сети установлена ОС Windows XP Professional, на серверах используется Windows 2003 Server. Блаженство!

Между контроллером домена TE-DC1, работающим под управлением Windows Server 2003 R2, и контроллером домена TE-DC2, работающим под управлением Windows Server 2003 Standard Edition, настроена репликация каталога домена.

Читая утром журнал событий сервера TE-DC1, вы обнаружили, что репликация завершилась неудачно. Вы проводите диагностику и узнаёте, что сервер TE-DC2 не включается. Что может быть причиной этому?

a) Нет питания в электрической сети
b) Служба каталогов не стартует
c) Произошла ошибка при репликации каталога
d) Windows 2003 необходимо активировать

Linux Professional Institute Certification Exam:

1. Какой командой можно остановить службу smartmond?

a) killall smartmond
b) /etc/init.d/smartmond stop
c) pkill smartmond
d) for daemon in `pgrep smartmond`; do kill -TERM $daemon; done
e) Всеми перечисленными выше

2. Напишите команду, которая сформирует отчёт о количестве черно-белых страниц, напечатанных каждым пользователем на локальном сервере печати CUPS c мая 2007 по июнь 2007, и запишет его в файл /home/admin/report_2007_may_june. Используемый дистрибутив -- Debian Etch 4.0.

[ ]

Apple Desktop/Portable Technician Certification Exam:

1. Вы разбираете Apple Mac mini, чтобы заменить жесткий диск Apple. Как открыть верхнюю крышку этого компьютера Apple?

a) Специальным шпателем Apple с маркировкой Apple SHP-1
b) Плоской отверткой Apple OTV-30
c) Ковырялкой Apple KOV-12
c) Прочитать секцию Take Apart руководства Apple Mac mini, и использовать рекомендуемый Apple инструмент.

2. Компьютер Apple iMac blue вышел из строя, потому что поврежден кабель питания Apple. Покупатель спрашивает, может ли он заменить кабель питания Apple на такой же от РС?

a) Нет, потому что кабели питания Apple и PC несовместимы
b) Нет, потому что это нарушит гарантию Apple
c) Нет, потому что компьютер Apple отторгнет кабель
d) Нет, потому что Стив Джобс будет плохо спать, узнав об этом
e) Нет, потому что ремонт уже оплачен, надо лишь привезти компьютер в сервис-центр Apple