LINUX.ORG.RU

Сообщения pihter

 

Как правильно юзать LuaSocket под оффтопиком?

Смеркалось.

Написал я как-то программку, хорошую, годную, естественно, под линукс. Написал на Си, для окнорисования использовал gtk и чуть-чуть немножечко Lua для всякого скриптования. Написал и пользуюсь и люди пользуются и вообще все замечательно.

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

Оказалось, что виндоус-версия ничего ни про какие луа сокеты не знает (сам луа у меня статически вкомпилен в бинарик основной программы), ну, думаю, не беда: нагуглил скомпиленный уже dll с этими сокетами, сунул в папку с программой – невразумительно ругается (%1 не является приложением вин32), ладно, думаю, я не тупее всех, склонил к себе исходники этих луа-сокетов, изородовал тамошний мейкфайл – стало оно мне dll-ку собирать вместе с проектом, но она (длл-ка) тоже не подхватывается, пишет «не найдена указанная процедура» – сижу, наслаждаюсь информативностью виндовых сообщений об ошибках…

Теперь вопросы:

  1. Как это вообще побеждать?

  2. Как это делается правильно?

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

Линукс тут при том, что программа разрабатывается под линукс, а виндоверсия – приятный бонус в данном случае.

Спасибо!

 , , ,

pihter
()

Шлем виртуальной реальности из смартфона для minecraft. Возможно?

Как?

Просто любопытно послушать до чего там дошел прогресс, а 50 тыщ выкидывать на игрушку жалко

 ,

pihter
()

Сертификат Х509 для веб морды эмбеда с заранее неизвестным IP

Есть свой УЦ. У пользователей сертификат уже установлен в барузерах, для другой фигни.

На веб морду надо HTTPS да такой, чтоб не ругался браузер что он его знать не знает. Сложность в том что у веб морд в проде будут самые разыне айпи и, соответственно, заранее сертификат туда не сгенерить.

Как эта проблема решается по уму? Отказ от шифрования? На каждой железке генерить самоподписанный и просить пользователя ему доверять? На каждую железяку складывать приватный ключ от УЦ и генерить на месте когда уже узнаешь айпи?

 , ,

pihter
()

Ubuntu не слушается openssl.cnf (нужно разрешить md5 для сертификатов)

curl при попытке заавторизоваться на неком удаленном хттп-ресурсе с .pem сертификатом ругается:curl: (58) could not load PEM client certificate, OpenSSL error error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak, (no key found, wrong pass phrase, or wrong file format?)

нагуглил в /etc/ssl/openssl.cnf в последней строке CipherString = DEFAULT@SECLEVEL=2 понизить уровень до 1 или даже нуля, на девуане и дебиане – помогает, в убунте – нет.

ЧЯДНТ?

 , ,

pihter
()

3d печать алюминием по аддитивной технологии. Бывает?

Пятница.

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

 ,

pihter
()

SPI slave atmega8 и линуксовый SPI

Смеркалось.

Подруживаю одноплатник с линуксом с мегой по SPI. Линуксовая часть получилась отменной, а в от самое простое, мега, два дня уже ниче не отвечает.

Мега работает в слейве, на прием все идеально, а в ответ не шлет ни бита. Микруху менял на новую – то же самое. Мега-код:

#define LED_PORT PORTC
#define LED_DDR  DDRC
#define LED_PIN  PINC
#define LED_BIT  PC5

#define PORT_SPI PORTB
#define DDR_SPI  DDRB
#define PIN_SPI  PINB
#define SCK      PB5
#define MISO     PB4
#define MOSI     PB3
#define SS       PB2

#include <avr/io.h>
#include <util/delay.h>

void SPI_init_S (void){
  DDR_SPI  &= ~(1<<MOSI);
  PORT_SPI &= ~(1<<MOSI);

  DDR_SPI  |=  (1<<MISO);
  PORT_SPI &= ~(1<<MISO);

  DDR_SPI  &= ~(1<<SCK);
  PORT_SPI &= ~(1<<SCK);

  DDR_SPI  &=  (1<<SS);
  PORT_SPI |=  (1<<SS);
  SPCR =  (1<<SPE);
}

unsigned char SPI_WR (unsigned char data_w) {
  SPDR = data_w;
  while (!(SPSR & (1<<SPIF)));
  return (SPDR);
}

int main(void) {
  CONFUGURE_PIN_AS_OUTPUT( LED_DDR, LED_BIT );

  SET_PIN_LOW( LED_PORT, LED_BIT );

  unsigned char data_w = 'B', data_r; 

  SPI_init_S();

  while(1){
    data_r = SPI_WR(data_w);
    data_r = SPI_WR(data_w);
    data_r = SPI_WR(data_w);
    if (data_r == 0) SET_PIN_LOW( LED_PORT, LED_BIT );
    if (data_r == 255) SET_PIN_HIGH( LED_PORT, LED_BIT );
  }

  return 0;
}

джва раза перечитал датащит, не пойму что там может не работать. Если укого завалялся гарантированно-рабочий пример – буду признателен.

(проблемы точно не на принимающей стороне, смотрю лог анализатором, даже прямо к ножке припаивался)

 , ,

pihter
()

rsync: возможно ли перемещение скачанных файлов из временного каталога разом?

… а не по-одному. Я о том, что если у меня файлы могут быть логически связаны друг с другом и их нужно подгружать на ходу.

Вроде рсинк идеально справляется, но вот гипотетически может случиться ситуация, когда он скачал один файл, который ссылается на другой, который он еще не скачал. Если бы их из временного каталога перемещать вместе-разом – было бы иделаьно.

Возможно ли, без модификации кода рсинка?

 

pihter
()

wiringPi работает при сборке на борде, но не работает при кросскомпиляции

Смеркалось.

Потребовалось мне подергать пинами из сишного кода на orangepi-one. Ну я склонил прямо на борду wiringOP собрал прям там, получилась .so-шка, которая поставилась в систему и хидеры мне дали, заинклудил, добавил – -lwiringPi линковщику все заработало.

Зачесалось у меня в одном месте, надоело каждый раз на борде собирать, дай, думаю, кросскомпилятор натравлю. Поставил из пакетов gcc-arm-linux-gnueabihf, подправил мейкфайл – он ожидаемо не нашал на хосте библиотеку.

Тогда я, зачем-то, взял нужные мне объектники от wiringPi и прямо прилинковал к своему бинярю. Стало собираться, однако на устройстве команды типа сет_пин не работают, ошибок нет, просто физический уровень не меняется на пинах. Подумал, может я накосячил с опциями сборки и моя библиотека собрана немного не для той борды – забрал объектники прямо с собраной на плате версии библиотеки – обратно же, собирается но не работает.

Тогда стянул собранную прямо на борде .so-шку, положил ее в каталог сборки, сказал линковщику -L. и опять собралось и не работает.

В общем, ЯННП.

 ,

pihter
()

Получить информацию о питании на процессоре

Есть камень:

# cat /proc/cpuinfo
system type		: BCM7231B2 STB platform
processor		: 0
cpu model		: Broadcom BMIPS4380 V6.4  FPU V0.1
BogoMIPS		: 630.78
cpu MHz			: 634.507
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 32
extra interrupt vector	: yes
hardware watchpoint	: no
ASEs implemented	: mips16
shadow register sets	: 1
kscratch registers	: 0
core			: 0
VCED exceptions		: not available
VCEI exceptions		: not available

processor		: 1
cpu model		: Broadcom BMIPS4380 V6.4  FPU V0.1
BogoMIPS		: 634.88
cpu MHz			: 634.507
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 32
extra interrupt vector	: yes
hardware watchpoint	: no
ASEs implemented	: mips16
shadow register sets	: 1
kscratch registers	: 0
core			: 0
VCED exceptions		: not available
VCEI exceptions		: not available

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

Спасибо

 , ,

pihter
()

Распаковка mipsel boot.img с ядром и рамдиском

Есть mipsel железяка, у ней есть рекавери-образ, вшитый на ейный нанд. Есть тулза читать-писать этот образ, надо бы его модицфицировать.

Я его вычитываю, копирую себе. file показывает что это gzip архив. Распаковываю, распаковывается, file показывает что это mipsel32 ELF. (ядро вначале?) Вся конструкция весит 27 мегабайт в распакованном виде, так что там явно кроме ядра еще и рамдиск.

Андроидские тулзы не работают. Какие идеи как это все разобрать и собрать взад?

 , mipsel

pihter
()

Шаговые двигатели работают неуверенно при отработкемоих dir/steps, но хорошо на заводском контроллере

ЛОР, взываю к мудрости твоей. Не нашелся как сформулировать коротко и понятно в заголовке, так что длинно и непонятно:

Есть китайская плата MKS GEN для 3д принтера, в ней предусмотрено эн гнезд под драйверы типа А4988, собрал мерлина (это был ужас), прошил, подключаюсь по уарту, шлю команду – моторчик шевелится, плавненько так, без шуму особого и уверенно (субъективно сильно)

Дальше, выдергиваю этот же драйверок, сую в макетку, подключаю этот же БП, шлю на степ строб с МК – работает, двигается, но как-то дергано, неуверенно, шумно и, субъективно, не так сильно.

Я не могу это терпеть боле. Как сделать чтоб мои волосы снова стали мягкими и шелковистыми?

 , ,

pihter
()

Curl: узнать причину отказа в авторизации.

SFTP. Курлом пытаюсь скачать файл с авторизацией по ключу.

curl -k -v -u dss: --key /home/max/.epm/magic_key --pubkey /home/max/.epm/magic_key.pub sftp://192.168.216.215/readme.htm 
*   Trying 192.168.216.215...
* TCP_NODELAY set
* Connected to 192.168.216.215 (192.168.216.215) port 22 (#0)
* SSH MD5 fingerprint: bb229648995320324f700a46d6d50233
* SSH authentication methods available: publickey,password,keyboard-interactive
* Using SSH public key file '/home/max/.epm/magic_key.pub'
* Using SSH private key file '/home/max/.epm/magic_key'
* SSH public key authentication failed: Callback returned error
* No identity would match
* Authentication failure
* Closing connection 0
curl: (67) Authentication failure

Как узнать что именно не так? Если подключаться по SSH с этим ключом – пускает. Если курлом пытаться стянуть файл с авторизацией по логину-паролю – пускает.

Открытю часть ключа деллал ssh-keygen-ом из закрытого, потому что курл сам не осилил почему-то

Если стянуть с сайта курла сишный пример работы по sftp, подправить опции под свой случай – то же самое что и с консольным, инфы дополнительной нет.

Может важно: сервер OpenSSH for Windows, опыты провожу, естессна, под онтопиком.

 ,

pihter
()

Запуск внешней программы (процесса) с возможностью остановить по желанию запускающего Си/Си++

Сабж.

Полезно было бы еще получать pid. Запускаемые процессы могут быть любыми. Узнавать о том что запускаемый процесс сам закрылся – архиважно.

system() блокируется и для получения pid-а придется городить уродство с запуском через баш прослойку

В общем, уверен, все занют как сделать красиво, только мне не рассказывают

 , ,

pihter
()

GRAMPS - использование общей удаленной базы

Смеркалось.

Озадачили меня тут предки (по причине тыжпрограммист) организовать им возможность совместно поработать над генеалогией.

Погуглил, нашел gramps, потыкал понравилось. Встал вопрос как организовать совместный доступ из разных городов. Я обладатель личного сервака с белыйм айпи, поднял nfs, организовал всем монтирование, сдалал симлинки вида /home/user/.gramps => /net/common_dir/.gramps все работает, одно только неудобство: у всех общие настройки.

И вот в настройках семейного дерева в этом вашем грампсе я узрел не только выбор типа БД (BSDDB/SQLite) но и два все время задисабленных окошка адрес сервера БД и порт, что как бы намекает на возможность совместного использования удаленной БД.

Собсна, памагите.

 

pihter
()

Marlin (cnc fmw) возвращает ок по получению команды, а не по исполнению

Как им теперь управлять? Может конфигурируется, но я не нашел. Кто-то сталкивался? Идеи? Опять самому плату и прошивку делать?

 ,

pihter
()

Ищу uart-bootloader для atmega8, который можно собрать и использовать из-под Linux

сабж.

Все что нагуглилось требует винду для использования и/или сборки.

Перемещено tailgunner из science

 , , ,

pihter
()

Минимальный пример FreeRADIUS EAP-TLS + Linux client

В смысле коммутатор (который в терминологии радиуса – клиент) нормальный, железный. А клиент – это третий компьютер, которому нужно авторизоваться на коммутаторе по радиусу.

если коротко, то на родных сертификатах, которые идут для примера с фрирадиусом, при попытке авторизоваться вот такое:

`` eap_tls: ERROR: TLS Alert read:fatal:decrypt error (23) eap_tls: TLS_accept: Need to read more data: error (23) eap_tls: ERROR: Failed in FUNCTION (SSL_read): error:1409441B:SSL routines:ssl3_read_bytes:tlsv1 alert decrypt error (23) eap_tls: ERROR: System call (I/O) error (-1) (23) eap_tls: ERROR: TLS receive handshake failed during operation (23) eap_tls: ERROR: [eaptls process] = fail (23) eap: ERROR: Failed continuing EAP TLS (13) session. EAP sub-module failed

``

у кого есть опыт? нужна простая конфигурация рабочая, от которой можно плясать

спасибо

 ,

pihter
()

Ищу программный терминал-сервер для последовательного порта

Отлаживаю сеть на железяке, MIPSEL. Использую два USB-UART переходника для связи с компом, имею, через это, двунаправленный пайп до железки. Если такм запустить что-то вроде cat /dev/ttyUSB0 | /bin/sh > /dev/ttyUSB0 – то команды оно выполняет, выхлоп дает, но это, все же не терминал – дюже не удобно.

Уверен, что есть программка, на древнем Си, которую я смогу собрать под свою железку, с тем чтоб запустить ее там и пусть сидит себе, терминалосервит. Вкапываться в ядерную консоль и прочие иниттабы – дофига делов: я задачу быстрее на коленке решу, но если подскажете что ищу – будет хороший инструмент на будущее.

 ,

pihter
()

Посоветуйте клиент-сервер удалённого рабочего стола

У меня своя vpn и ssh доступ к машине полный, но физически оно за 300 км. Пробовал летом настроить, но там зоопарк какой-то и так ниче толком и не заработало

В идеале: апт инсталл программ-нейм на удалённой машине, правка конфига под пользователя и пароль.

У себя кл ента.

Короче, явно есть что-то без заморочек. По возможности свободное. Спасибо

 

pihter
()

Разъясните за ранлевелы init'a

Есть железка, простоты большой. Инит, насколько я понял, читает /etc/inittab и запускает в соответствии /etc/init.d/rc с третьим и 5 уровнем.

Что за уровни? Правильно ли я понимаю что уровни с 6 по 10 я могу использовать чтоб удовлетворить потребность в запуске сервисов гаранированно один после деругого (типа зависимости)? Где почитать-ликвидировать собственную безграмотность по вопросу?

Спасибо.

 ,

pihter
()

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