LINUX.ORG.RU

Сообщения shamus24

 

Сканер штрих-кодов RS232 - можно ли превратить в клавиатуру?

Форум — Desktop

Здравствуйте. Есть сканер штрих-кодов Metrologic Pulsar MS6220 RS232. Сам ещё не пробовал, но в интернете прочитал, что он просто в последовательный порт шлёт отсканированное. Проблема в том, что его нужно заставить работать в 1С, которая запущена в RDP-терминале на Windows. Терминал запущен, соответственно, на Ubuntu. Пробрасывать последовательный порт на Windows и там цеплять к 1С слишком уж геморройно. Нет ли простого способа заставить linux считать всё пришедшее с /dev/ttyS0 как набранное на клавиатуре? Разумеется, не в качестве замены основной клавиатуры, а в дополнение к ней.

shamus24
()

Кто в питоне соображать? Не работает gmailfs.py

Форум — Development

Сам модуль отсюда: http://sr71.net/projects/gmailfs/gmailfs.py-v8 Требует для работы много чего, в т.ч. новый питон, который под Centos-ом штатно не поставить. Ну не беда - скачал исходник, поставил отдельно от системного питона, запускаю явно с него, на синтаксис теперь не ругается, зато теперь вот:

File «/usr/bin/gmailfs.py», line 1419, in connect_to_server

imap = imaplib.IMAP4_SSL(«imap.gmail.com», 993)

AttributeError: 'module' object has no attribute 'IMAP4_SSL'

Смотрю модуль imaplib.py - там есть этот самый IMAP4_SSL, причём и в новом питоне, и в штатном тоже есть (посмотрел на случай если с путями чего не так).

Это лечится? Или попробовать таки другую ос? Хотя ос вроде уже и ни причем.

shamus24
()

centos: сломался kerberos

Форум — Admin

Подскажите, а как «оттраблшутить» поломавшийся kerberos (не сервер)? Он на машинке для того, чтобы samba авторизовала пользователей на сервере Windows. С машинкой приключилась трабла - напрочь зависла во время какой-то дисковой операции. После перезагрузки и проверки диска напрочь пропал /var (он в / жил). Возможно, что не только это, конечно. Но samba теперь пользователей не пускает. В её логах самое существенное, пожалуй, вот это:

libads/kerberos_verify.c:ads_verify_ticket(397)

ads_verify_ticket: krb5_get_server_rcache failed (Generic unknown RC/IO error)

Что это такое, в принципе, понятно, но где оно лежит и как починить - тьма кромешная. Пока нашёл, что если выставить переменную KRB5RCACHETYPE=none, то оно этим кэшем не пользуется, и действительно, так работает. Можно оставить так, но хотелось бы починить, конечно.

Ведёт ли kerberos логи? В его конфиге лог-файлы прописаны, три штуки, но все пустые. В интернетах нашёл, что они только в одной реализации пишутся - MIT, а в остальных - «для совместимости».

shamus24
()

[Centos] как подрихтовать установочный DVD

Форум — Linux-install

Здрасьте опять. Как всегда, находясь в прострации от линуксовой документации, обращаюсь за помощью к общественности.

Как создать установочный DVD для Centos? Цель - добавить на диск файл ks.cfg, думаю, понятно для чего. В документации чудесная фраза по этому поводу - как создать установочный диск читайте в Redhat Linux Installation Guide. Фраза из этого самого гайда, т.е. документ отсылает к самому себе. В гугле тоже ничего найти не могу, в очередной раз подозреваю, что не так ищу.

Про альтернативные способы размещения файла кикстарта я знаю, мне интересно как сделать именно на CD/DVD.

Прошу ткнуть носом.

 

shamus24
()

Centos - /boot and / (root) of soft-raid1

Форум — Linux-install

Камрады, а у кого-нибудь получался сабж? Где наиболее толково процесс расписан? А то уже по парочке мануалов пытался сделать, в результате неизменно получается не монтирующийся root и kernel panic на этой почве. А сам я ещё не настолько проникся опциями загрузчика и initrd, чтобы до конца понимать, что там происходит.

Или, может, в каком-то дистрибутиве этот процесс более-менее автоматизирован? А то ж смешно, такие танцы с бубном, и ещё и не работает, а в какой-то винде это делается пятью кликами мыши и в дальнейшем проблем не создаёт, и действительно непонятно, почему эта задача должна требовать бОльших усилий.

Уточнение: хочется mdX raid, а не LVM, с последним особых проблем, вроде, нет, только в него /boot не запихнуть, видимо.

shamus24
()

e-SATA на передней панели

Форум — Linux-hardware

Здорово, бояре!

Есть такой трабл. В корпусе на переднюю панель выведен разъём eSATA. Внутри от этой панели идет провод, толще стандартного SATA, но заканчивающийся обыкновенным SATA разъёмом. Соответственно, при сборке было неудержимое желание этот разъём в стандартный SATA порт на матери и ткнуть, что и было сделано, и долгое время оно так и стояло, потому что подключать к этому eSATA было совершенно нечего. А вот когда это что подключать появилось, выяснилось, что ни разу эта конструкция на передней панели не работает.

Поэтому вопрос: куда же этого супостата полагается подключать, чтобы оно всё же заработало? Пробовал погуглить, но находил только рекомендации втыкать в обыкновенный SATA разъём. Когда-то видел материнку, на которой один из внутренних портов был выделен цветом, и был описан в документации как «специально для подключения внешнего eSATA». Хорошо, но у меня такого нет, и нагуглить PCI/PCIe контроллер с подобной функциональностью не удалось. Максимум - есть внешние разъёмы прям на контроллере, но они, опять же, окажутся сзади, а там и так уже есть.

Дополнение 1: Linux тут ни при чем, просто не знаю где ещё спросить. Не работает ни под чем, включая BIOS.

Дополнение 2: Все SATA в BIOS Setup установлены в режим AHCI, т.е. проблем с хот-плагом быть не должно. Тем более, что eSATA на задней панели работает замечательно. Мне так и не удалось достоверно выяснить, должно ли подаваться питание на внешний eSATA порт, очевидно, что в моем случае оно не подается, даже если должно. Но моему девайсу оно не нужно - оно ради питания отдельным хвостом подключается к USB, и, судя по документации, без USB не работает, безотносительно питания через eSATA.

shamus24
()

login as root with SSH key

Форум — Admin

Скажите, а можно сделать такую фичу, чтобы по SSH можно было зайти как root с использованием сгенерированного ключа, но при этом нельзя было войти через keyboard authentication?

Вариант сгенерировать сложный пароль и забыть его — не подходит (точнее и так ясно), но хочется его тоже оставить вменяемо-читаемым для, например, логина с консоли или su (последнее - для FreeBSD).

Интересует как для линукса, так и для FreeBSD, для последней - даже больше.

shamus24
()

Lazarus, GDB и отладочная информация

Форум — Development

Добрый день.

Второй день пытаюсь получить имена функций в run-time (для логов). Выяснил, что стандартный STABS не работает в 64-битных системах, а из «прогрессивного» dwarf стандартная функция FreePascal GetLineInfo не может добыть информацию об имени функции. Однако отладчик GDB замечательно показывает все эти имена. Более того, он их показывает, даже если в проекте не указана опция «включать отладочную информацию для GDB», что совсем уже мистика. При этом сам Lazarus IDE отлаживать проект не может, точки останова игнорирует и т.д. А вот если загрузить получившийся файл в GDB «вручную», то он замечательно и символы видит, и stack trace выводит с именами функций... Вопрос: КАК? И могу ли я в собственной же программе таки получить имя функции по её адресу (больше мне пока ничего не надо)?

shamus24
()

KVM и последовательные порты в гостевой ОС

Форум — Admin

Здравствуйте. Скажите, а сабж возможен? В смысле пробросить несколько физически имеющихся на машине последовательных портов (мультипортовка PCI) в гостевую ОС. Если в KVM нет, тогда можно ли в чем-нибудь другом? За рамки Линукса в качестве Host OS лучше не выходить.

shamus24
()

Принтер без драйвера под Linux - можно ли его расшарить по сети?

Форум — Admin

Всем внеочередной привет!

Есть такая проблема - к рабочей станции подключен специфический принтер. Драйверов под линукс нет, и вряд-ли будут. Под винды драйвер есть. Можно ли этот принтер, воткнутый в машину с линуксом, подключить как сетевой принтер к винде, поставить на неё драйвер, и с неё печатать? Ведь умеют же это как-то «коробочные» принт-серверы с линуксом внутри (правда, я только с LPT принт-серверами дело имел).

Принтеров таких два, оба USB, но один из них содержит внутри себя USB-to-Serial адаптер, который линуксом опознаётся нормально (что никак с печатью не помогает, естественно). Второй является чисто USB-шным устройством, без эмуляции.

Печатать предполагается из терминала, заходя на виндовую машину rdesktop-ом. Знаю, что виндовый терминал-сервер позволяет перенаправлять печать на принтер, подключенный к клиентской машине, но, во-первых, кажется, rdesktop этого не умеет, а во-вторых печатать на принтере нужно не только с терминала, запущенного с машины, к которой принтер подключен, но и с терминалов, запущенных с других машин, и желательно даже тогда, когда на машине с принтером терминал не запущен, т.е. необходим полноценный сетевой принтер.

Железки, если кому интересно, такие: Postek barcode printer C168 (USB); Datex EP-60 (USB-serial).

Ещё раз обращаю внимание: печать непосредственно из линукса на этих устройствах не требуется - только доступ по сети и печать из Windows, под который драйверы есть.

И, в довершение, есть ещё агрегат, на который тоже, видимо, драйвера нет, но здесь нужна полнофункциональная печать не только из терминала, да ещё и сканер, поэтому с ним как-то отдельно придётся решать: Canon MF3228. Если кто вдруг знает, как его с линуксом подружить...

shamus24
()

Local time to UTC и обратно (отчет о решении)

Форум — Development

Здравствуйте. Давно свою задачу решил (начало тут: http://www.linux.org.ru/forum/development/5150307 ), но всё руки не доходили описать конкретно, что было нужно и как удалось достичь результата.

Итак, задача ставилась таким образом: перевести произвольно взятую дату/время из UTC в локальное время системы и обратно. Казалось бы задача совсем тривиальная, однако есть некоторые нюансы.

Судя по всему, исторически так сложилось, что структура данных time_t автоматически предполагает, что дата/время в этой структуре представлено только и исключительно в UTC, хотя ничего и не мешает эти секунды отсчитывать от 1 января 1970 года в любом часовом поясе. Для представления же локального времени используются другие структуры, но не time_t. Таким образом, функции преобразования времени из локального в UTC и обратно требуют разных типов данных для входных и выходных параметров.

В моём же случае дата/время были представлены в структуре, которая использовалась как для хранения времени в формате UTC, так и для локального времени, и мне была необходима функция, принимающая и отдающая дату в одном и том же формате, но осуществляющая «сдвиг» времени в нужном направлении и на нужное количество часов. Задача, таким образом, свелась к необходимости конвертации формата даты во всех возможных направлениях, и вызова нужных функций преобразования, однако количество подводных камней впечатляет. Здесь приведу то, что получилось в сухом остатке.

Для фактического преобразования из UTC в локальное время использовалась функция struct tm* localtime_r( const time_t* timer, struct tm* result ); (просто localtime не может быть использована в многопоточных приложениях, поскольку использует свой внутренний буфер). Грабля, на которую я наступил, была связана с тем, что эта функция повреждает области памяти, расположенные рядом с переданными ей структурами, пришлось вставлять PAD-ы. Вторая грабля - возвращаемый функцией в структуре tm номер года начинается с 1900 (т.е. 0 в результате=1900год, 110 в результате=2010год), а месяц - с нуля (0=январь). Неочевидно, и при чтении манов на глаза не попадалось.

Для обратного преобразования из локального времени в UTC использовалась функция time_t mktime ( struct tm * timeptr ); Здесь тоже без граблей не обошлось: в структуре tm есть поле is_dst, указывающее, включено ли летнее время. Оно должно быть установлено _до_ вызова mktime, однако его значение для произвольной даты заранее неизвестно. К счастью, это поле функция выставляет сама в процессе работы, но если переданное значение изначально было неверным, то и результат тоже получается неверным. Таким образом, для правильного преобразования функцию необходимо вызвать дважды - первый раз она выставит в правильное значение флаг is_dst, но, возможно вернет неверный результат, а второй вызов уже с правильным значением dst возвращает правильный результат. Между вызовами все поля структуры tm (кроме is_dst) нужно инициализировать заново, т.к. функция их модифицирует, приводя время к правильному (по её мнению) значению в зависимости от флага is_dst.

shamus24
()

«А включаешь - не работает» — Жванецкий про vblade

Форум — Admin

В заголовке - это шутка была :-)

А серьезно - попробовал поставить ata-over-ethernet сервер в виде vblade. Скачал-распаковал-make-make install, далее по инструкции - dd для создания образа, losetup делаем из него loop7 (зачем, кстати?). Далее:

#./vblade 9 0 eth0 /dev/loop7

pid 31895: e9.0, 67108866 sectors O_RDWR

и ждёт, типа работает. Только от этой работы никаких устройств в сети не появляется. aoe-stat под линуксом, хоть на этой же машине, хоть на другой, устройств не видит. «aoe scan» под виндой с установленным winaoe тоже говорит, что ничего нету. Ну и чо с ним делать?

PS: 2.6.18-194.11.1.el5 #1 SMP Tue Aug 10 19:05:06 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux CentOS release 5.5 (Final)

shamus24
()

Local time to UTC и обратно

Форум — Development

Люди! Очень нужен сабж. Думал, вопрос простой и всё оставлял на потом, а оказалось не так и просто. Нужно «перевести» _заданную_ дату/время, считая, что она задана в UTC, и получить на выходе эту же дату в заданном для системы часовом поясе. Ну и наоборот.

Как ни странно, гугление дает или что-то совсем феерическое, или на каких-нибудь малопонятных языках типа Питона (не в обиду). А мне бы на чем-нибудь попроще, чтобы ясно было видно, какие библиотечные функции дёргать (например, на C).

Ну и, разумеется, всякие смежные задачи не интересуют (типа конвертации между различными форматами хранения, или получение _текущего_ времени в UTC или в локальном часовом поясе, или перевод даты из любого пояса в любой со всеми подвывертами с использованием каких-то странных баз данных часовых поясов).

Нагуглилась одна сложность: если текущая локаль подразумевает летнее/зимнее время, то произвольная дата может оказаться не в том же диапазоне, что и текущее время (например, сейчас лето, а мы пытаемся перевести произвольную дату из зимы). К сожалению, нагуглилась только проблема, но не решение, а вообще говоря, меня устроило бы, если бы перевод осуществлялся по правилам, действующим сейчас (хотя это и не очень правильно).

shamus24
()

pthreads завершить поток

Форум — Development

Привет. Помогите, плиз, с потоками, а то оно всё какое-то страшное. Надо выполнить гарантированное завершение потока, и при этом не завесить «управляющий» поток. То есть, пусть в потоке крутится какой-то цикл, и опрашивает переменную ThreadTerminated, при установке которой в 1 поток благополучно завершается сам. Тут вопросов нет. Но если вдруг этот поток где-то внутри завис, на такой случай не пойму как это проверить и завершить. Под виндами я делал примерно так:

ThreadTerminate := true;

if WaitForSingleObject(hThread, 5000) = WAIT_TIMEOUT then TerminateThread(hThread);

И всё. Если поток нормально работает, то он быстренько проверит значение ThreadTerminate и «умрет» самостоятельно. Если же он висит, то через 5 секунд будет прибит принудительно, но главное - поток в котором приведенный код выполняется, так или иначе, продолжит работу, а поток hThread будет, так или иначе, завершен.

Ближайший аналог в pthreads, который я нашел - это pthread_join(thread, value). Но тайм-аут в нем не предусмотрен, т.е. если поток положил большой болт на значение ThreadTerminate, то при выполнении pthread_join() повиснет и этот, вызвавший функцию, поток. А если join не делать, то есть вероятность, что тот поток так и продолжит висеть. Можно, конечно, вызвать pthread_cancel(), но для этого надо знать, что поток самостоятельно умирать не желает. А как это проверить без join?

shamus24
()

Файловая система с журналом транзакций

Форум — Admin

Привет, народ!

Хотелось бы выяснить, возможен ли сабж. Проблема в том, что по слову «журнал» поисковики находят в основном кучу мусора, думаю, понятно почему.

Хотелка следующая: имеем некоторую файловую систему на RAID (впрочем, неважно на чем именно). Имеем дополнительно отдельный диск или зеркало. Хочется разместить на этом отдельном диске/зеркале журнал транзакций, обладающий следующими способностями:

1) любые изменения, которые происходят в файловой системе на RAID, фиксируются дополнительно в журнале транзакций (не только до успешного завершения операции, а «навечно»).

2) пока RAID работает исправно, для чтения данных этот журнал нам вообще без надобности - все читается непосредственно с RAID.

3) логически вытекает из пункта 2: если вдруг этот журнал даст дуба, на доступность данных это никак не влияет — всё читается, и, возможно, пишется, непосредственно с/на RAID, только теперь уже без журнала.

4) если же дуба даёт RAID, мы восстанавливаем на новом железе из последнего бэкапа содержимое файловой системы (к примеру, двухмесячной давности), и, поскольку у нас есть не поврежденный журнал транзакций, «проигрываем» на ней все изменения, внесенные от момента этого бэкапа вплоть до момента сбоя, не потеряв при этом (теоретически) ни одного байта внесенных изменений.

5) при успешном создании полного бэкапа файловой системы всё, что было в журнале транзакций до этого момента бэкапа — рубится (автоматически или вручную).

Такая схема позволила бы сократить необходимую частоту бэкапов и при этом обеспечить вероятность невосстановимого сбоя на приемлемом уровне. А то делать полный бэкап каждые день/два накладно, а больше — стремно. Инкрементные бэкапы не предлагать — не верю я в них :-)

shamus24
()

LVM: а что это за идиотизм с зеркалированием?

Форум — Admin

Захотел я тут к обычному тому добавить зеркало. А оно мне и говорит: вам нужно свободное место на _трех_ дисках, чтобы создать зеркало. Расследование показало, что на третьем диске создается небольшой mirror log для этого зеркала. Ладно, пусть, если нужен, но почему обязательно на отдельном диске??? Решилось только разбиением target диска и созданием на нем отдельного раздела под этот mirror log. В общем ничего страшного, конечно, но надо иметь в резерве несколько десятков мегабайт под этот log. Вопрос: а что, нельзя было это куда-то внутрь спрятать сразу, а не просить отдельный диск под него?

shamus24
()

Назначение прав доступа к ресурсам Samba средствами оснасток Windows

Форум — Admin

Подскажите мануал толковый, пожалуйста. А то все вроде бы сделал, самба сервер в домене Windows 2003, авторизация kerberos+winbind, пользователей из домена авторизует, и файлы раздает, а вот попытка установить права доступа на шару через оснастку mmc (а другого способа, насколько я знаю, нет) неизменно приводит к результату «Changes cannot be saved: Access is denied». В admin users пользователя добавлять пробовал - ничего не меняется, не дает рулить правами и всё. Причем точно такой же результат получается, если пробовать установить права на уровне файловой системы в Security (из-под винды, конечно), а не в Share Permissions, но тут хоть понятно почему - ACL в системе нет. Думал пока обойтись правами на шары, а оно что-то никак.

shamus24
()

ReiserFS suxx

Форум — Admin

Ну что могу сказать. Мне таки удалось решить задачу, которую я здесь ( http://www.linux.org.ru/forum/admin/4464429 ) описывал. По мудрому совету попробовал приспособить под это дело ReiserFS. Результат – я в шоке.

Делалось следующее: поскольку скопировать все данные в разумное время не представлялось возможным никак, на source компьютере был создан loop-файл, отформатирован в ext3 и копирование производилось на него в два этапа – сначала ‘cp –a’ по живому, т.е. без остановки служб, потом остановка служб и rsync для переноса «остатков», т.е. всего того, что успело измениться за время, пока работал cp. После чего этот loop-файл одним куском был скопирован на target-компьютер, там смонтирован и запущены соответствующие службы. Но оставлять это в файле, конечно, не планировалось, поэтому был создан раздел, в который я попробовал по той же схеме (cp по живому, a потом rsync) скопировать данные и избавиться от loop-файла. И вот этот раздел я сделал в ReiserFS, думал будет быстрее. Агащазблин. Итог: полное копирование (cp) на исходном компьютере из ext3 в ext3 заняло примерно 1 сутки и 18 часов. Последующий rsync – где-то 5 часов. На target компьютере копирование из ext3 в ReiserFS заняло около недели. Специально не обламывал, чтобы посмотреть, когда же это закончится, на этом этапе время ограничено не было. Последующий rsync проработал часов 12, после чего был кильнут, поскольку сервис пора было уже запускать. Естественно, потом target раздел был отформатирован в ext3 и на него все скопировалось примерно за то же время, что и на исходном компьютере. Вот такая ерунда с этим ReiserFS, вот вам и высокопроизводительная файловая система.

Говорят, правда, что несколько ускоряет работу монтирование с опцией notail, но я не пробовал, а по тестам из интернета – да, ускоряет, но не на порядки все же, то есть из недели два дня не получилось бы по-любому. Во время копирования target разделы (и ext3 иReiserFS) всегда монтировались с опциями noatime и async, то есть быстрее уже просто некуда IMHO.

shamus24
()

KVM: паравиртуальные устройства

Форум — Admin

Привет.

Подскажите, как добавить «паравиртуальные» (которые virtio) сетевушку и дисковый контроллер к конфигурации виртуальной машины? В графическом менеджере таких нет. Сетевушки есть только rtl8129, pcnet и ещё что-то, не помню. Кстати, рекомендуемой кое-где новомодной e1000 тоже нет. Если попытаться вручную прописать virtio в конфигурационном файле, потом ругается qemu и виртуалка не стартует. Диски тоже есть только IDE и SCSI, но не virtio. Куда копать?

И ещё момент. Сама виртуальная машина запускается внутри процесса qemu-system-x86_64. Если его запустить вручную, а не через менеджер или virsh, то видно, что он ругается на отсутствие /dev/kqemu и что QEMU acceleration layer not activated. Это так и надо? Что-то подозрительно медленно гостевая операционка шевелится, думаю, что-то тут не так. Сам /dev/kqemu я сделал, но не помогло, вроде ему модуль ядра ещё нужен, но не могу понять где его искать.

shamus24
()

VMWare suxx. Что взамен – XEN, VirualBox, etc?

Форум — Admin

Попробовал запустить VMWare server 2.0 под Centos х64 (винда нужна). Это нечто.

Первое: с ядром от CentosPlus вообще не компилировались драйверы. Поставил обратно стандартное, под него оказались подходящие бинарники и компиляция не потребовалась, а то бы тоже неизвестно чем закончилось. По интернету полазил – проблема известная, решения нет.

Второе: по любому чиху слетает конфигурация сервера. То есть в любой момент он может заявить, что у вас сервер установлен, но не сконфигурирован, запустите vmware-config.pl. По интернету – тоже проблема известная, есть workarounds, но причина не вполне понятна.

Третье: Web-морда чаще глючит, чем работает. Периодически-постоянно виснет на запросе пароля, вываливается консоль. По интернету – проблема известная, workaround только в виде перезапуска сервайсов (со всеми виртуальными машинами, ага, причем их же даже не выключить толком – консоль не работает, а удаленного доступа к операционке внутри тоже нет, потому как там винда недоставленная). Решения нет.

Вывод – в топку. Хотя под виндами работает отлично. Вопрос: что взамен взять? Нужно на линуксном серваке (Centos 5.3 x64) получить еще и винду. Сервак не интерактивный, т.е. машины должны запускаться без участия пользователя и в отсутствие X на хосте. Управляться тоже должно с другой машины. Обязательна поддержка Bridged network connection (в терминах VMWare), т.е. виртуальная машина должна жить со своим ip-адресом, но использовать ту же сетевушку, что и host. Обязательно также , чтобы под 64-битной host OS можно было запустить 32-битную guest. Это все умеют или нет?

Если XEN – поскажите, такую вещь: kernel с префиксом -xen нужен только для guest OS или для host OS тоже? Нигде не могу внятного ответа на этот вопрос найти.

shamus24
()

RSS подписка на новые темы