суббота, 31 января 2009 г.

ltsp и ltspinfo

версия ltsp 4.2
ltspinfo --host=192.168.0.2 -cfg="параметр" работает.
Зато работает ltspinfo --host 192.168.0.2 -cfg=all вывод всех возможных значений.

Если понадобиться получить что-либо из терминала через ltspinfo, то на нем нужно создать файл в каталоге /tmp/info с именем вашего "параметра" и с содержанием "значения". При этом он станет доступным по ltspinfo

ltspinfo --host=192.168.0.2 --proc=<имя и путь к файлу> прочитает инфо из файла в /proc (надо разрешить это в lts.conf, т.е. ALLOW_PROCREAD = Y)

ssh без ввода пароля

Понадобился сабж, в скрипте запускать команды по ssh.

1. Нужно создать ключи
ssh-keygen -t rsa
при запросе пароля (Enter passphrase) его не вводить (Enter и еще раз Enter для подтверждения)

2. Публичный ключ ~/.ssh/id_rsa.pub нужно добавить в ~/.ssh/authorized_keys на другом компьютере, куда будем ходить без пароля.

3. Там же нужно перезапустить демон sshd

4. Что бы не ожидало подтверждения о правильном хосте (там где набираем в первый раз "yes") запускаем ssh с опцией "-o StrictHostKeyChecking=no"

пятница, 30 января 2009 г.

chroot, su и ошибка Sorry.

При смене окружения по chroot у нас остаются права рута. Понадобилось сменить их. Копируем su, смотрим и копируем необходимые библиотеки: ldd /bin/su. Готово. Нет, при попытке сменить пользователя получем: Sorry.
И все, ничего более. Патризан какой-то!
После анализа strace chroot /.... su оказалось, что нужна еще одна библиотека /lib/libnss_files.so.2
Добавляем ее в окружение и все работает.

четверг, 29 января 2009 г.

echo и перевод на новую строку

В команде echo есть небольшая фишка с переходом на новую строку /n.(и прочими /t /r и т.д.)
Так вот надо использовать ключ "-e" для распознования этих команд. Но и это еще не все, надо ставить ДВА слэша. т.е. вроде echo -e _первая_строка_\\n_вторая_строка_
У меня внешняя же команда echo и встроенная в bash ведут себя одинаков и требуют ключ -e

chroot и firefox.

Для чего все это понадобилось мне. Есть "случайные" пользователи, которые с Х-терминалов цепляются к серверу. Все что надо - выдать им только браузер с поисковой формой. Но если нажать Ctrl-O, браузер начинает "шариться" по серверу, что совсем плохо. Для этого загоним браузер в chroot окружение.

Как правильно засунуть приложение в chroot существует много пособий.
В дальнейшем под "_sandbox_" будем понимать католог с окружением для chroot.

Что потребовалось для firefox. Необходимо создать саму песочницу и ее каталоги (окружение):
_sandbox_/bin - взял целиком по привычке на время отладки (можно повыбрасывать лишнее)
_sandbox_/etc/{fonts,gtk-2.0,pango}
_sandbox_/lib - тут Вам поможет команда ldd firefox-bin Она расскажет, что нужно закинуть в lib
_sandbox_/usr/lib - то же, что и для lib. Плюс сам firefox (весь), pango (весь), seamonkey (только нужные библиотеки, см. ldd)
_sandbox_/usr/share/fonts - можно выбрать только нужные. Не знаю, как у вас, а у меня это каталог TTF
И главное не забыть о каталоге _sandbox_/tmp/.X11-unix Его надо "прокинуть" с реальной системы из /tmp/.X11-unix. (это касается запуска в песочнице на локальном компьютере)
mount -o bind /tmp/.X11-unix _sandbox_/tmp/.X11-unix
В противном случае при запуске из chroot _sandbox_ X приложений получим что-то вроде этого: "Error: cannot open display"

В принципе на этом все. Что-то возможно и упустил, но это уже мелочи.
Теперь можно запустить браузер и попробовать из него посмотреть файлову систему (Ctrl-O) и убедиться, что все в порядке:
chroot _sandbox_ /usr/lib/firefox/firefox

понедельник, 19 января 2009 г.

Slackware12 и локаль utf8

Устанавливаем локаль utf8.

1. Для начала правим /etc/profile.d/lang.csh делаем:
setenv LANG ru_RU.UTF-8

правим /etc/profile.d/lang.sh делаем:
export LANG=ru_RU.UTF-8

2. Из rc.font.new делаем rc.font (mv rc.font.new rc.font)
правим /etc/rc.d/rc.font делаем:
unicode_start cyr-sun16.psfu.gz
for i in 1 2 3 4 5 6; do
echo -ne "\033%G" > /dev/tty$i
done

эти команды загрузят консольный шрифт utf8, можно загрузить другой шрифт LatArCyrHeb-16.psfu.gz

3. В /usr/share/locale/locale.alias изменяем строку russian ... на
russian ru
ru ru_RU
ru_RU ru_RU.UTF-8
пример

4. Редактируем файл /etc/rc.d/rc.locale и в нем пишем /usr/bin/loadkeys ru-utf-by.map это раскладка клавиатуры с русским и белорусскими буквами с переключением англ-русс по CapsLock. В интернете можно поискать и другие.
Белоруская буква i - в русской раскладке - Alt+"и"
Белоруская буква "у кароткае" - в русской раскладке - Alt+"щ"
ru-utf.map.gz - только русский язык
ru-utf-by.map.gz - нужно скопировать в каталог /usr/share/kbd/keymaps/i386/qwerty

5. Теперь вопросы по менеджеру файлов MC.
MC берем из исходников, накладываем патч utf8 и собираем. Придется перекодировать из koi8-r -> utf8 файлы помощи и подсказки в /usr/local/share/mc/.

6. В /etc/fstab при монтировании windows разделов надо в опции монтирования добавить iocharset=utf8,codepage=866 Перезагружаемся и пробуем переключать раскладу клавиатуры (язык) и запускать mc.

пятница, 16 января 2009 г.

kppp и скорость модема 115200

Соединение устанавливается на скорости 115200. На самом деле гораздо меньшей, просто некоторые модемы по умолчанию показывают скорость последовательного порта, а не скорость соединия по телефонным линиям. Для исправления добавим к строке инициализации или дозвона ATW2.

kppp и ошибка "The remote system is required to authenticate itself"

Slackware 12.2. Kppp запускается, набирает номер, пищит и ошибка:

The remote system is required to authenticate itself
but I couldn't find any suitable secret (password) for it to use to do so.
(None of the available passwords would let it use an IP address.)


В файле конфига /etc/ppp/options коментируем опцию "auth" и раскоментируем опцию "noauth".
Все, работает.

Модем ноутбука fujitsu siemens C1020 (modem,no dialtone,no carrier)

Попался мне ноутбук fujitsu siemens C1020. Накатил Slackware 12.2. А вот с модем вышел небольшой казус. Итак, модем в данном ноутбуке Conexant и драйвер есть на сайте Linuxant (14.4к ограничение в FREE версии). Драйвера входящие в комплект Alsa (snd_via82xx_modem) не подходят!
Скачал, установил. И вот они грабли. Что бы ни делал, какие параметры драйверу звука (snd_via82xx) не задавал, модем упорно выдает "no dialtone" или "no carrier". Если не допустить загрузку драйвера звука (snd_via82xx), то тогда модем дозванивается и соединение устанавливается, но молча, как партизан. Как только подгружаешь драйвер звука, сразу те же глюки. Даже если затем драйвер выгрузить, ничего не помогает. Только перезагрузка. Связывался с тех.поддержкой Linuxant, то же ничего толкового не сказали. Говорят, что с моими настройками все должно работать, проблем нет (я им дамп отсылал, который их программка собирает из системной информации)
Начал изучать драйвер звука и нашел таки проблему.

Проблема была в следующих строчках кода via82xx.c
===============================================
if (chip->chip_type != TYPE_VIA686) {
/* Workaround for Award BIOS bug:
* DXS channels don't work properly with VRA if MC97 is disabled.
*/
struct pci_dev *pci;
pci = pci_get_device(0x1106, 0x3068, NULL); /* MC97 */
if (pci) {
unsigned char data;
pci_read_config_byte(pci, 0x44, &data);
pci_write_config_byte(pci, 0x44, data | 0x40);
pci_dev_put(pci);
}
}
================================================
В общем, говоря проще, драйвер активирует MC97 для того, что бы DXS каналы в режиме VRA нормально работали, а это и есть наш модем (0x1106, 0x3068), который мы уже запустили с помощью драйверов linuxant. Вот здесь и произошел затык.

Закоментировал эти строчки
// pci_write_config_byte(pci, 0x44, data | 0x40);
// pci_dev_put(pci);

Пересобрал драйвер. И все работает. Для проверки зашел в minicom дал команду набора номер ATDTxxxxxx и слышу тональный сигнал, набор номера, ответ удаленного модема. Звуковая подсистема тоже работает и DXS каналы (из-за запуска которых все это и закрутилось).
В виде патча оформлять не стал. Кому понадобиться, сам разберется с двумя строчками кода.