LINUX.ORG.RU

Сообщения DJArty

 

Grub, старый BIOS (not EFI) и инициализация NVME SSD

Приветствую! Имеется цель - завести NVME SSD на старой материнке AMI BIOS еще без поддержки EFI/UEFI. На просторах попадалась информация о возможности подобного запуска при использования загрузчика Clover. Clover используется как загрузчик с последующей возможностью поставить Хакинтош. Насколько понимаю задача клевера как бы подменить биос стандартной материнки, расширить возможностями EFI, и обмануть макось что бы она считала что ставится на стандартое эпловое железо. Как один из побочных положительных эффектов - появление поддержки NVMe до загрузки ОС на уровне как бы нового биоса который в отличие от старого уже знает о существовании NVMe. Плюс раз так возможность старта ОС с ССД как с загрузочного.

Так вот вопрос: А что то типа Grub, syslinux позволяет делать нечто подобное Clover? В установщике Ubuntu наблюдается нечто подобное EFI и т.п.

P.S. еще попадалось про загрузчики rEFInd, DUET, Chameleon.

 , , , ,

DJArty
()

Скрипт для работы камеры в skypeforlinux

Приветствую! Прошу помочь со скриптом для работы камеры в Skype. Смысл такой: вебкамера ID 045e:00f7 Microsoft Corp. LifeCam VX-1000 в skypeforlinux_8.55.0.141_amd64 (да и в других версиях) показывает черный квадрат где должна быть картинка. Предполагаю что проблема в скайпе с отображением mjpeg, yuvj422p. Борьба с этим ведется через ffmpeg:

ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video1

После чего в скайпе выбирается /dev/video1 и камера работает. Однако у метода изъян в виде подгружающего проц ffmpeg в фоне. Соответственно желается запускать его вместе со skypeforlinux и тушить ffmpeg вместе с выходом из skypeonlinux. Как бы это засунуть в один скрипт (ffmpeg пока работает не дает запустить skypeforlinux если делать в одну строку с ";" да и мусорит в терминал немало).

 ,

DJArty
()

Замена mcrypt (php) на openssl (shell)

Приветствую! В общем задача - заменить mcrypt_encrypt имеющийся не во всех конфигурациях php (нет возможности подгрузить библиотеку для этого) на шелловую команду вокруг openssl (которую можно выполнить на имеющейся конфигурации). Предполагается что результат должен быть идентичным.

Но пока не получается - прошу помочь.

(полагаю проблема в упаковке ключа и вектора в hex.. в php это делается для передачи в mcrypt а в shell_exec непонятно как передать верно ключ и вектор, либо алгоритмы не совсем совпадающие но нужен результат аналогичный php)

<?php
    # --- ШИФРОВАНИЕ ---

    $key = pack('H*', "189cebc45c7caec5c57894564c52ae5646ed4564565ccc4565ec555dd5dd4d54");
    echo "Ключ: " . $key . "\n";

    $key_size =  strlen($key);
    echo "Длина ключа: " . $key_size . "\n";

    $plaintext = "This string was must be encrypted";
     echo "Исходник: " . $plaintext . "\n";

    $iv = pack('H*', "e4554c4564a5454cc45654a45654ce44");
    echo "Инициализирующий вектор: " . $iv . "\n";

    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
                                 $plaintext, MCRYPT_MODE_CBC, $iv);

    $ciphertext_base64 = base64_encode($ciphertext);

    echo  "\n"."Зашифровано:".$ciphertext_base64 . "\n\n";

    # --- ДЕШИФРОВКА ---

    $ciphertext_dec = base64_decode($ciphertext_base64);

    $iv_dec=$iv;

    $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
                                    $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);

    echo  "Расшифровано:".$plaintext_dec . "\n\n";



$shkey="189cebc45c7caec5c57894564c52ae5646ed4564565ccc4565ec555dd5dd4d54";
$shiv="e4554c4564a5454cc45654a45654ce44";

$cmd='echo '.$plaintext.' | openssl aes-128-cbc -base64 -nosalt -a -k '.$shkey.' -iv '.$shiv;
echo "Command:".$cmd."\n";
$output = shell_exec($cmd);
echo "\n"."Output:$output"."\n";

?>

 , ,

DJArty
()

Погода command line в виде запрос/ответ типа telnet

Приветствую! Утерял информацию из недалекого прошлого (год,два). Если кто вспомнит или использует просьба подсказать. Был (надеюсь еще есть и это не wttr.in) сервис выдающий данные о погоде в командной строке. По-моему скандинавский. Выдавал туда же прогноз и график изменения температуры.

Построен был на принципе вопрос/ответ типа как telnet(но не он) или ответ/приветствие со служебной информацией о сервере. В запросе был адрес сервиса и ключи если расширенная инфа нужна.

Может хоть протокол подскажите как подобный запрос/ответ называется.

Спасибо.

 ,

DJArty
()

Видимость DLNA сервера в разных подсетях

Приветствую! В одной подсети запущен DLNA сервер (допустим на 192.168.2.100) В этой же подсети (192.168.2.хх) клиенты видят сервер без проблем.

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

Предположительно DLNA сервер делает какой то udp броадкаст который виден только своей подсетке, можно ли его как то пробросить в соседнюю? Еще где то видел инфу что «стандарт предписывает использование протокола SSDP для обнаружения устройств в сети посредством мультикаст-рассылки на адрес 239.255.255.250» инфу не проверял и как применить собственно пока тоже не представляю.

Помогите плиз.

 

DJArty
()

Узнать ppid родительского же pid-а (php + C)

Приветствую! Подскажите как узнать ppid ppid-a в программке на Си?

Ситуация следующая: скрипт (start.php) на php вызывает на исполнение через exec_shell прогу (./app) на Си. Прога в свою очередь должна быть уверена что её запустил именно этот start.php а не какой нибудь другой или шелл.

Как вариант я могу posix_getpid() получить pid start.php и передать его как аргумент в ./app, в нём узнать ppid() сравнить и в идеале они бы совпали. Но проблемка в том что exec_shell (из start.php) сам по себе порождает промежуточный процесс и ppid() полученный в ./app не будет равен pid-у start.php В частном случае отличаться будут на единицу, но не всегда так.

Т.е. в ./app (на Си) надо найти ppid от ppid. Есть ли готовые варианты получения ppid по номеру, а то даже просто getpid(), getppid() толком не описаны (не нашел).

Или может ещё какие более верные варианты идентификации php-родителя (по имени, иноду или ещё как).

DJArty
()

md5sum всех файлов каталога за исключением некоторых конкретных.

Приветствую! Как правильно описать шаблон по выборке файлов за исключением парочки конкретных имен? Задача: получить контрольную сумму всех файлов в каталоге но при этом не принимать во внимание контрольную сумму одного или двух конкретных файлов в каталоге. Смысл в том что бы проверить все ли файлы в неизменном виде и не появилось ли рядом лишних. А эта парочка исключаемых может по содержимому зависеть от той общей md5sum потому я не могу их включить в запрос потому как рекурсия какая то получится. Запрос по простому мог бы выглядеть примерно так:

cat * | md5sum
Вот нужно из «звёздочки» исключить например файл «one» и файл «two.txt» Возможно всё просто, но сложно задать вопрос поисковику где о такой простоте почитать :)

 

DJArty
()

ustream direct link

Приветствую! Интересуюсь: возможно ли с ustream.tv выцепить прямой линк на поток например вот такой.
Оно то как бы понятно что теоретически можно, и самому с другими источниками вполне удавалось раскопать, а тут как то не докопался. Если возможно - поделитесь плиз секретом :)
Причем тут LOR? Как бы для медиаплеера с linux на борту и php исполнении директлинковыдиралки.
Мерси!

P.S. и да.. может есть что-то «покруче» Ctrl+Shift+I - не всегда помогает.

DJArty
()

Передача текста программы в php через echo

Приветствую! Так и не разобрался с секретными 1 &1 > 2 и т.д. т.п. А явно ж всё просто. Задача передать текст программы на php из командной строки с пом. echo ну или чем получится. Проблема в том что ключ "-r" после которого можно передавать текст не работает. Поэтому приходится выдумывать. Т.е. надо было бы вот так:

$ php5 -r 'print("Test World ".$argv[1]."\n\r");' Kuku
$ Test World Kuku
но на целевом устройстве ключ -r не работает Можно попробовать вот так:
$ echo '<?php print("Test World ".$argv[1]."\n\r"); ?>' | php5 
$ Test Word
сработает, но нужно добавить и передать аргумент т.е. следовать формату php5 <file> [args...] Т.е. в конце должно быть что то типа php5 &1 Kuku .. или %1 или pipe... но никак не угадаю как правильно. Подскажите пожалуйста.

DJArty
()

Потеря скорости при применении алиаса на одном интерфейсе.

Приветсвую! Имеется (пока собственно только в теории) атомная mini-ITX материнка, которую необходимо заставить работать как роутер, нас, качалка и проч. Сетевуха одна (допустим 100Мбит). Пров выдает около 100Мбит тоже.

По схеме вход от прова в сетевуху - выход в дом клиентам по WiFi 802.11n всё просто и понятно, единственно что 100Мбит на клиенте можно получить чисто теоретически.

Теперь усложняем схему тем что клиентские девайсы желаем подключать кабелем либо потому что хочется получить реальные 100Мбит, либо потому что другой вариант(WiFi) применить невозможно.

Usb-Eth адаптер и доп. плата для сетевухи (PCI слот затят вайфайкой) пока отбрасываем. В схему предполагается включить свитч (100Мбитный).

Схема: Вход от прова в один из портов свитча -> от свитча кабель в атомную сетевуху -> от свитча кабеля к другим девайсам внутренней сетки. На сетевухе алиасом делается два айпишника (для прова и для внутренней сетки). Атомный сервак разруливает пакеты из инета на клиентов внутренней сетки подключенных к свитчу. Но как видно по пути «свитч-сервак» будет приличная нагрузка.

Вопрос: Работоспособна ли схема вообще? И упадет ли скорость для клиентов за свитчем из-за применения алиаса на единственной сетевухе атомной материнки и нагрузки на путь «свитч-сетевуха атомки».

Полагаю понятие FullDuplex заставляет думать о хорошем, но всё же.

DJArty
()

WiFi адаптер в режиме AP Mode Master Mode для 802.11n

Приветствую!

Разыскивается WiFi адаптер работающий в Ubuntu(и т.п.) в режиме AP Mode, Master Mode на скоростях 802.11n, т.е. предоставляющий клиентам доступ на скоростях выше 54M/бит.

Такое впечатление из перерытого материала, что все удовлетворяются самим фактом возможности работы в master mode, а скорости прошлого десятилетия удовлетворяют.

Необходима для установки в материнку формфактора mini-ITX на Atom, т.е. под разъем PCI или уж USB, mini-PCI. Что бы превратить это сооружение в такой себе роутер-сервак.

Если найдутся запустившие свои адаптеры в 802.11n желательно указывать H/W rev, VID, PID, так как наблюдаю что часто производители от ревизии к ревизии сохраняя названия адаптеров меняют чипсеты кардинально, причём не в лучшую сторону.

DJArty
()

Медиаплеер, временный файл, поток, перенаправление, php, каша

Приветствую! Надеюсь на дельный совет. Имеется медиаплеер на mips GNU/Linux 2.6.22.19-19-4 . Желается смотреть потоковое видео, будь то iptv(предварительно преобразованное udpxy в http), mms,rtsp,http. Имеющееся решение (также неофициальное) работает неудовлетворительно(различное время запуска,срывы, неподдерживаемые форматы).

Как вариант рассматривается использование msdl (Media Stream DownLoader) который без особых проблем позволяет скачать в файл или вывести в stdout любой подобный поток. И затем этот файл штатно можно воспроизвести медиаплеером (при этом проиграть можно почти сразу после начала захвата потока что есть +).

Но подобная схема также нехороша тем что нужно писать на винт такой файл потока.

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

wget -q --post-data="<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>file:///path/to/your/file.avi</CurrentURI><CurrentURIMetaData /></u:SetAVTransportURI></s:Body></s:Envelope>" localhost:port/MediaRenderer_AVTransport/control --header='SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"'
Это только команда установки file:///path/to/your/file.avi как источника данных (так же можно указать и http:// ..) Затем следует команда, подобного же вида, начать воспроизведение (не показываю дабы не засорять).

Так вот главный вопрос: как обойтись без записи на винт имея при этом воспроизводящийся поток.

В голову приходят варианты:

1) воспользоваться выводом msdl в stdout а далее както заворачивать в php.

2) пользоваться подавлениями типа >/dev/null

3) писать во временный файл в памяти (довольно ограниченной, но размером достаточным для нормальной буферизации вполне можно позволить)

4) соорудить локальный прокси для потока типа http://localhost/file.avi в который будет шуровать поток (но на винт не сохраняться) и этот линк скармливать медиаплееру

5) ещё варианты..

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

Реализовывать можно на php shell или уж чем получится. Найдутся ли соображения как упорядочить имеющуюся кашу? :) Спасибо.

DJArty
()

Две сетевые на одном компе, проверка стабильности.

Приветствую!

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

А именно падает линк вплоть до потухания индикации. Был проработан вариант - а вдруг интегрированная карта своё отработала - поставлена вторая PCI реалтековская старушка.. Картина та же - то работает то молчит.

Вижу несколько вариантов проверки сетевух.

1) Самый дешевый и быстрый но непонятно реализуемый ли (не известно есть ли поддержка MDI на картах). Берётся шнурок метровый стандартный и без перепайки переделки втыкается в одну сетевуху и в другую потом пингуется с большим пакетом с одной на другую.. Не понятно заработает ли такое без переделки кабеля да и с шлюзами,роутами не всё прозрачно.

2) Беру роутер... тут уже потеря времени и возможно денег :) ... и просто тестится коннект от любой из сетевух до роутера и от роутера в инет и где будут потери тот и виноват.

3) Расширяем второй вариант и подключаем сразу две сетевухи в один роутер смотрящий в один инет. Т.е. роутер - 192.168.0.1; eth0 - 192.168.0.100; eth1 - 192.168.0.101. И в этой схеме хотелось бы проделать тоже суперпинг с одной сетевухи на другую и наоборот (тут уже точно переделывать шнурки не надо, только и того что их надо два теперь). А затем выпустить обе в инет. Такая схема реальна?(пусть даже после смены провайдера в итоге).

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

DJArty
()

Несоответствие версий «GLIBC_2.11 not found» можно ли побороть?

Приветствую! Провожу пробы по кросскомпилу для WDTV Live. Делается прямо на нём. Используется образ squeeze для архитектуры mipsel. В него chroot и т.д. т.п. Далее пробуем малое - htop. конфигурится, мэйкается нормально.. после чего запускается под сквизи.. переносим на чистый WDTV Live - тоже работает.

# ldd htop 
   libncurses.so.5 => /lib/libncurses.so.5 (0x2aad8000)
   libm.so.6 => /lib/libm.so.6 (0x2ab28000)
   libc.so.6 => /lib/libc.so.6 (0x2abb4000)
   libdl.so.2 => /lib/libdl.so.2 (0x2ad18000)
   /lib/ld.so.1 (0x2aaa8000) 
Теперь пробуем посложнее transmission-daemon. конфигурится мэйкается под сквизи нормально и запускается тоже. Переносим на чистый WDTV Live получаю ошибку типа:
transmission-daemon: /lib/libc.so.6: version `GLIBC_2.11' not found (required by /transmission-daemon)
Замечено что libc.so.6 так же как в htop используется.
# ldd transmission-daemon
        librt.so.1 => /lib/librt.so.1 (0x2aad8000)
        libcurl-gnutls.so.4 => /usr/lib/libcurl-gnutls.so.4 (0x2aaf0000)
        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x2ab48000)
        libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aba4000)
        libz.so.1 => /usr/lib/libz.so.1 (0x2ad28000)
        libevent-1.4.so.2 => /apps/transmission/usr/lib/libevent-1.4.so.2 (0x2ad50000)
        libm.so.6 => /lib/libm.so.6 (0x2ad7c000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x2ae08000)
        libc.so.6 => /lib/libc.so.6 (0x2ae34000)
        /lib/ld.so.1 (0x2aaa8000)
        libidn.so.11 => /usr/lib/libidn.so.11 (0x2af98000)
        liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x2afcc000)
        libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0x2afec000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x2b048000)
        libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x2b088000)
        libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0x2b150000)
        libdl.so.2 => /lib/libdl.so.2 (0x2b1ec000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x2b200000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x2b22c000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x2b240000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x2b26c000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x2b320000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x2b358000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x2b36c000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x2b384000)
        libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0x2b398000)
        libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x2b3bc000)
Попытки создать директорию с libc.so.6 взятой из сквизи и ссылка на неё в виде LD_LIBRARY_PATH приводят к сегфолту.

Вопрос: как побороть несоответствие glibc 2.11 (squeeze) и glibc 2.08 (WDTV Live)? Можно ли компилить например в сквизи но используя страрую либу 2,08 как родную или даже вообще используя все те либы которые есть для чистого ВД?

DJArty
()

Монтирование initrd.img (HFS+, Mac) в Linux

Приветствую! Может вдруг кто знает как в Ubuntu смонтировать (с возможностью изменения..) файл типа initrd.img Такой файл имеется в CD-образе загрузчика для макоси. Загрузчик на базе syslinux и в процессе загрузки грузит такой вот initrd.img Сам образ то можно смонтировать или распаковать и достать из него initrd.img, а вот смонтировать или распаковать initrd.img не удается. Структура initrd.img судя по всему HFS+ Volume. Под макосью естественно монтируется и редактируется, под винду есть TransMac - позволяет его просматривать и добавлять нужные файлы. Что-то не верится что под Linux такого сделать нельзя, у меня пока не выходит.

sudo mount -t hfsplus -o loop INITRD.IMG init/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде
dmesg | tail
[20938.377165] hfs: unable to find HFS+ superblock
Образ для желающих поэкспериментировать.

DJArty
()

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