amaranth Posted August 13, 2019 Share Posted August 13, 2019 Всем доброго дня! Пытаюсь на Fedora 30 собрать драйвер https://www.moxa.com/Moxa/media/PDIM/S100000199/moxa-real-tty-drivers-for-linux-3.x.x-4.x.x-driver-v1.19.tgz. Все зависимости последней версии. После запуска ./moxa/mxinst m64 пишет: awk: fatal: cannot open file `np_ver.h' for reading (No such file or directory) =============================================================================== Copyright (C) 2002-2017 Moxa Inc. All Rights Reserved. MOXA NPort Server Real TTY Driver Installation. System Information: Kernel 5.2.7-200.fc30.x86_64; Machine x86_64. =============================================================================== Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. y make: *** Нет правила для сборки цели «ssl64». Останов. Check Driver... FAILED !!! Install Not Completed ! Где интересно ошибка? Команда ldconfig -p | grep libssl.so выводит такое: libssl.so.1.1 (libc6,x86-64) => /lib64/libssl.so.1.1 libssl.so (libc6,x86-64) => /lib64/libssl.so openssl-devel-1:1.1.1c и openssl-1:1.1.1c установлены. С переходом в папку moxa и запуск ./mxinst m64 выдает следующее: =============================================================================== Copyright (C) 2002-2017 Moxa Inc. All Rights Reserved. MOXA NPort Server Real TTY Driver Ver1.19 Installation. System Information: Kernel 5.2.7-200.fc30.x86_64; Machine x86_64. =============================================================================== Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. y make -C /lib/modules/5.2.7-200.fc30.x86_64/build SUBDIRS=/tmp/moxa modules make[1]: вход в каталог «/usr/src/kernels/5.2.7-200.fc30.x86_64» Makefile:213: ================= WARNING ================ Makefile:214: 'SUBDIRS' will be removed after Linux 5.3 Makefile:215: Please use 'M=' or 'KBUILD_EXTMOD' instead Makefile:216: ========================================== CC [M] /tmp/moxa/npreal2.o /tmp/moxa/npreal2.c: В функции «npreal_ioctl»: /tmp/moxa/npreal2.c:1323:60: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1323 | error = access_ok(VERIFY_WRITE, (void *)arg, sizeof(long))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:1323:11: ошибка: «access_ok» не описан (первое использование в этой функции) 1323 | error = access_ok(VERIFY_WRITE, (void *)arg, sizeof(long))?0:-EFAULT; | ^~~~~~~~~ /tmp/moxa/npreal2.c:1323:11: замечание: сообщение о каждом неописанном идентификаторе выдается один раз в каждой функции, где он встречается /tmp/moxa/npreal2.c:1330:59: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1330 | error = access_ok(VERIFY_READ, (void *)arg, sizeof(long))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:1346:33: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1346 | sizeof(struct serial_struct))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:1353:33: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1353 | sizeof(struct serial_struct))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:1360:25: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1360 | sizeof(unsigned int))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:1417:42: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 1417 | sizeof(struct serial_icounter_struct))?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c: В функции «npreal_net_ioctl»: /tmp/moxa/npreal2.c:3374:50: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 3374 | rtn = access_ok( VERIFY_WRITE, (void *)arg, len)?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:3374:9: ошибка: «access_ok» не описан (первое использование в этой функции) 3374 | rtn = access_ok( VERIFY_WRITE, (void *)arg, len)?0:-EFAULT; | ^~~~~~~~~ /tmp/moxa/npreal2.c:3398:52: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 3398 | rtn = access_ok( VERIFY_READ, (void *)arg, size )?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:3523:52: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 3523 | rtn = access_ok( VERIFY_READ, (void *)arg, size )?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | /tmp/moxa/npreal2.c:3548:52: ошибка: в макрос «access_ok» передано 3 аргументов, но используется только 2 3548 | rtn = access_ok( VERIFY_READ, (void *)arg, size )?0:-EFAULT; | ^ In file included from ./include/linux/uaccess.h:11, from ./include/asm-generic/termios.h:6, from ./arch/x86/include/uapi/asm/termios.h:1, from ./include/uapi/linux/termios.h:6, from ./include/linux/tty.h:7, from /tmp/moxa/npreal2.c:50: ./arch/x86/include/asm/uaccess.h:91: замечание: macro "access_ok" defined here 91 | #define access_ok(addr, size) \ | make[2]: *** [scripts/Makefile.build:285: /tmp/moxa/npreal2.o] Ошибка 1 make[1]: *** [Makefile:1601: _module_/tmp/moxa] Ошибка 2 make[1]: выход из каталога «/usr/src/kernels/5.2.7-200.fc30.x86_64» make: *** [Makefile:71: module] Ошибка 2 Check Driver... FAILED !!! Install Not Completed ! Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 В npreal2.c используется макрос с 3-мя аргументами в виде: rtn = access_ok( VERIFY_READ, (void *)arg, size )?0:-EFAULT; А в /usr/src/kernels/5.2.7-200.fc30.x86_64/arch/x86/include/asm/uaccess.h она объявлена так: #define access_ok(addr, size) \ ({ \ WARN_ON_IN_IRQ(); \ likely(!__range_not_ok(addr, size, user_addr_max())); \ }) Похоже что налицо несоответствие ядра 5.2. Какие будут предложения ? Попробую внести изменения как вот здесь. Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 Вроде бы собралось: ./mxinst m64 =============================================================================== Copyright (C) 2002-2017 Moxa Inc. All Rights Reserved. MOXA NPort Server Real TTY Driver Ver1.19 Installation. System Information: Kernel 5.2.7-200.fc30.x86_64; Machine x86_64. =============================================================================== There is an Real TTY Driver installed in your system. Continue to install will overwrite the old driver. Do you want to continue installing? [y/N]. y Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. y make -C /lib/modules/5.2.7-200.fc30.x86_64/build SUBDIRS=/tmp/moxa modules make[1]: вход в каталог «/usr/src/kernels/5.2.7-200.fc30.x86_64» Makefile:213: ================= WARNING ================ Makefile:214: 'SUBDIRS' will be removed after Linux 5.3 Makefile:215: Please use 'M=' or 'KBUILD_EXTMOD' instead Makefile:216: ========================================== Building modules, stage 2. MODPOST 1 modules make[1]: выход из каталога «/usr/src/kernels/5.2.7-200.fc30.x86_64» cp -p npreal2.ko /lib/modules/5.2.7-200.fc30.x86_64/kernel/drivers/char/ depmod -a cc -c -m64 -DSSL_ON -DOPENSSL_NO_KRB5 npreal2d.c -I/tmp/moxa/include cc -m64 npreal2d.o -o npreal2d -lssl strip npreal2d Check Driver... Copying driver files ... OK! Load driver... OK! Loading TTY Driver... rm -f /dev/ttyr00 mknod -m 666 ttyr00 c 33 1 rm -f /dev/cur00 mknod -m 666 cur00 c 38 1file open error =============================================================================== Installation process is completed. The all driver files are installed on /usr/lib/npreal2/driver. Now you can cd /usr/lib/npreal2/driver and run ./mxaddsvr to add tty port. =============================================================================== Но что означает после команды mknod -m 666 cur00 c 38 1 ошибка file open error ? Link to comment
Незнайка Posted August 14, 2019 Share Posted August 14, 2019 Добрый день. Зачем включаете защищённый обмен? Какой у вас NPort? Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 2 минуты назад, Незнайка сказал: Добрый день. Зачем включаете защищённый обмен? Какой у вас NPort? Добрый день! Если честно, то наверное он не нужен. NPort IA-5150 Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 11 минут назад, Незнайка сказал: Добрый день. Зачем включаете защищённый обмен? Какой у вас NPort? Без включения защищенного обмена тоже самое: ./mxinst m64 =============================================================================== Copyright (C) 2002-2017 Moxa Inc. All Rights Reserved. MOXA NPort Server Real TTY Driver Ver1.19 Installation. System Information: Kernel 5.2.7-200.fc30.x86_64; Machine x86_64. =============================================================================== There is an Real TTY Driver installed in your system. Continue to install will overwrite the old driver. Do you want to continue installing? [y/N]. y Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. N make -C /lib/modules/5.2.7-200.fc30.x86_64/build SUBDIRS=/tmp/moxa modules make[1]: вход в каталог «/usr/src/kernels/5.2.7-200.fc30.x86_64» Makefile:213: ================= WARNING ================ Makefile:214: 'SUBDIRS' will be removed after Linux 5.3 Makefile:215: Please use 'M=' or 'KBUILD_EXTMOD' instead Makefile:216: ========================================== Building modules, stage 2. MODPOST 1 modules make[1]: выход из каталога «/usr/src/kernels/5.2.7-200.fc30.x86_64» cp -p npreal2.ko /lib/modules/5.2.7-200.fc30.x86_64/kernel/drivers/char/ depmod -a Check Driver... Copying driver files ... OK! Load driver... OK! Loading TTY Driver... rm -f /dev/ttyr01 mknod -m 666 ttyr01 c 33 2 rm -f /dev/cur01 mknod -m 666 cur01 c 38 2 file open error =============================================================================== Installation process is completed. The all driver files are installed on /usr/lib/npreal2/driver. Now you can cd /usr/lib/npreal2/driver and run ./mxaddsvr to add tty port. =============================================================================== Link to comment
Незнайка Posted August 14, 2019 Share Posted August 14, 2019 Попробуйте 1.9.11 из соседней темы. Может с ним получится Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 Только что, Незнайка сказал: Попробуйте 1.9.11 из соседней темы. Может с ним получится Предварительно его изменив с учетом макроса access_ok, как я сделал ранее ? Link to comment
Незнайка Posted August 14, 2019 Share Posted August 14, 2019 Если не сложно, дайте сначала листинг установки исходного драйвера. Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 7 минут назад, Незнайка сказал: Если не сложно, дайте сначала листинг установки исходного драйвера. C 1.9.11 (хотя почему в np_ver.h #define NPREAL_VERSION "Ver1.19.9" ?) вроде получилось: ./mxinst m64 =============================================================================== Copyright (C) 2002-2019 Moxa Inc. All Rights Reserved. MOXA NPort Server Real TTY Driver Ver1.19.9 Installation. System Information: Kernel 5.2.7-200.fc30.x86_64; Machine x86_64. =============================================================================== Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. N make -C /lib/modules/5.2.7-200.fc30.x86_64/build M=/tmp/moxa modules make[1]: вход в каталог «/usr/src/kernels/5.2.7-200.fc30.x86_64» Building modules, stage 2. MODPOST 1 modules make[1]: выход из каталога «/usr/src/kernels/5.2.7-200.fc30.x86_64» cp -p npreal2.ko /lib/modules/5.2.7-200.fc30.x86_64/kernel/drivers/char/ depmod -a Check Driver... Copying configurations files ... OK! Copying driver files ... OK! Load driver... OK! Loading TTY Driver... Complete. =============================================================================== Installation process is completed. The all driver files are installed on /usr/lib/npreal2/driver. Now you can cd /usr/lib/npreal2/driver and run ./mxaddsvr to add tty port. =============================================================================== Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 Хотя почему в np_ver.h #define NPREAL_VERSION "Ver1.19.9" а сам файл обозначен как 1.9.11 ? Link to comment
amaranth Posted August 14, 2019 Author Share Posted August 14, 2019 7 минут назад, Незнайка сказал: После добавления устройства: Adding Server... ttyr00, cur00 Added RealCom server: ip : 10.96.1.89 mknod -m 666 ttyr00 c 33 0 mknod -m 666 cur00 c 38 0 Complete. Как посмотреть вывод с порта? На нем данные постоянно поступают от устройства. Команда stty -F /dev/ttyr00 9600 ничего не выводит, просто закрывается без ничего. Link to comment
Незнайка Posted August 14, 2019 Share Posted August 14, 2019 Насколько я понимаю, stty только устанавливает параметры, для просмотра потока следует использовать что то типа minicom, Link to comment
amaranth Posted September 18, 2019 Author Share Posted September 18, 2019 Если интересно, то я делаю следующее: 1. На сервере под управлением Fedora 30 (на HyperV) ставлю Docker 2. Создаю на основе образа Fedora 30 образ с помощью Dockerfile и в нем собираю драйвера moxa 3. Далее в этот образ интегрирую свою приложение на .NET Core, которое опрашивает устройство через ttyr00 и выводит данные через веб-интерфейс (с испоьзованием WebSocket). 4. Назначаю автозапускаемым мое приложение. Образ готов к употреблению. Получилось очень интересно. Link to comment
__Николай Posted December 4, 2019 Share Posted December 4, 2019 после установки и мапинга портов доступ имеется только от root для изменения прав доступа sudo -i chmod 777 /dev/ttyr0 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now