-
자작공유기 - console은 뭐하는 포트인가?컴퓨터/공유기 2022. 6. 17. 01:04
주의!
이 글은 자기 성향이 마조히스트인 사람만 참고 하시길 바랍니다.
컴퓨터 전공자가 아니면서도 컴퓨터 붙잡고 있지 않음 좀이 쑤시고,
남들이 다 동작한다고 하는 해결팁이 나만 안 되는 장애를 만나면 더 불타오르며,
편하게 유료 앱과 도구를 사서 해결할 수 있는 문제를 한달 가까이 리눅스 드라이버 빌드 붙잡고 있어도 전혀 인생 낭비라고 생각되지 않고 더 즐거운 사람들을 위한 글입니다.
제가 산 VP2410에는 앞부분에 console이라 쓰여진 포트가 있습니다.
마이크로 5핀을 꽃을 수 있게 되어 있습니다.
도대체 뭐 하는 포트인가. 그 정체는 아래와 같이 USB를 통해 serial 통신을 가능하게 하는 포트였습니다.
이렇게 머신의 입력/출력을 노트북을 통해 할 수 있습니다. 안드로이드 개발이라던가 아두이노 같은 걸 해 보신 분이라면 금방 이해하실 겁니다.
아직도 산업용 미니 PC에는 아래와 같은 포트가 달려 있는데 VP2410은 USB-A ~ micro 5핀으로 구성된 케이블을 제공 하네요.
그리고 이걸 잃어버려도 공홈에서 RJ-45(즉 랜포트)와 USB-A로 구성된 케이블을 통해 직렬포트를 구성할 수 있는 케이블을 팝니다.
이제 가정용 데스크탑에서는 보기 힘든 추억 아래 캡쳐는 정상적으로 구성된 컴퓨터에서 머신을 재부팅 한 상태에서 나온 출력물입니다.
리눅스에 putty를 설치해 마치 모니터를 연결한 것처럼 쓸 수 있습니다.
HDMI 포트로 모니터로 연결했을 때의 내용과 다르지 않습니다. 근데 이 스샷에서 문제는 일반 컴퓨터처럼 모니터, 키보드, 마우스를 연결했을 때와 다른 점은 로그인 프롬프트가 뜨지 않는다는 점입니다.
이와 관련하여 하나 알아낸 것은 이 포트를 통해 입력까지 가능 하려면 OPNsense 설치 시 image type을 VGA가 아닌 Serial로 다운로드 받고 설치해야 한다는 점입니다. 저는 첫 설치 시 데스크탑 PC의 부품들을 유용해서 설치했기에 VGA type을 선택해서 OPNsense에서 아래와 같이 primary console을 Serial로 설정해도 출력 밖에 되지 않았습니다.
VGA 이미지로 설치하면 의미 없는 설정입니다. 나중에 serial 버전으로 설치하면 입출력 도구들이 없어도 노트북과 연결선만 있으면 관리가 가능하니 돈 아끼긴 좋겠지만... 설치 방법이 쉽지는 않아 보이네요.
이 머신의 USB 포트는 Fintek 제품의 컨트롤러를 쓰고 있습니다.
윈도우의 경우 간단히 설치 프로그램으로 드라이버 설치가 가능하고 리눅스의 경우 우분투와 데비안에는 드라이버가 포함되어 있다고 합니다. 여담이지만 맥은 지원하지 않는다고 합니다. 이런 하드웨어 개발 시 맥은 개발하기 좋은 환경은 아닙니다.
근데 저는 리누즈 토르발즈란 힙스터가 사용한다고 괜히 페도라를 깔아 쓰고 있어서 드라이버를 직접 빌드해서 설치해야 하는 아픔을 겪었습니다. -구루 레벨의 사람 말고- 그냥 컴퓨터 좋아하는 사람들은 역시 아직은 대세인 우분투를 쓰세요. 사용자풀이 넓다는 건 엄청난 장점입니다.
아래는 어떻게든 절반은 성공 했기에 그 역사를 기록하기 위해 남긴 정보들 입니다.
17만원만 써서 윈도 샀으면 그냥 설치, 설치, 설치 해서 한방에 되었을텐데 역시 돈이 짱입니다.
우선 양기기를 연결한 후 dmesg란 명령을 통해 아래와 같이 Fintek 정보를 확인 합니다.
[aqua@localhost ~]$ dmesg ... [ 602.304089] usb 1-1: new full-speed USB device number 5 using xhci_hcd [ 602.433606] usb 1-1: New USB device found, idVendor=1934, idProduct=0706, bcdDevice= 0.01 [ 602.433619] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 602.433625] usb 1-1: Product: USB TO UART BRIDGE [ 602.433628] usb 1-1: Manufacturer: FINTEK [ 602.433631] usb 1-1: SerialNumber: 88635600168801 [ 987.355731] usb 1-1: USB disconnect, device number 5 [ 1749.816087] usb 1-1: new full-speed USB device number 6 using xhci_hcd [ 1749.944507] usb 1-1: New USB device found, idVendor=1934, idProduct=0706, bcdDevice= 0.01 [ 1749.944519] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1749.944524] usb 1-1: Product: USB TO UART BRIDGE [ 1749.944527] usb 1-1: Manufacturer: FINTEK [ 1749.944530] usb 1-1: SerialNumber: 88635600168801 [ 1993.900277] usb 1-1: USB disconnect, device number 6 [ 2006.166150] usb 1-1: new full-speed USB device number 7 using xhci_hcd [ 2006.296519] usb 1-1: New USB device found, idVendor=1934, idProduct=0706, bcdDevice= 0.01 [ 2006.296530] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2006.296534] usb 1-1: Product: USB TO UART BRIDGE [ 2006.296538] usb 1-1: Manufacturer: FINTEK [ 2006.296541] usb 1-1: SerialNumber: 88635600168801 [ 2220.322941] usb 1-1: USB disconnect, device number 7 [ 2247.012285] usb 1-1: new full-speed USB device number 8 using xhci_hcd [ 2247.141764] usb 1-1: New USB device found, idVendor=1934, idProduct=0706, bcdDevice= 0.01 [ 2247.141777] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2247.141783] usb 1-1: Product: USB TO UART BRIDGE [ 2247.141787] usb 1-1: Manufacturer: FINTEK [ 2247.141790] usb 1-1: SerialNumber: 88635600168801
여기를 통해 드라이버 소스를 받습니다.
받아야 하는 항목은 USB to Serial Port (F81532A/F81534A/F81535/F81536), 리눅스용 입니다.
압축을 해제한 후 문서를 열어보면 우분투에서의 빌드 순서는 다음과 같습니다.
Building Driver (Debian / Ubuntu based) 1. sudo su 2. apt-get update 3. apt-get install build-essential gcc libncurses5-dev 4. Unzip the driver.zip 5. cd driver 6. make clean ; make ; make install 7. modprobe usbserial 8. rmmod f81232 ; insmod f81232.ko 9. check new port added by “dmesg | grep ttyUSB”.
우선 다음 명령을 쳐서 apt-get update 명령과 동등한 내용을 실행 합니다.
[aqua@localhost dev]$ sudo dnf makecache --refresh [sudo] aqua 암호: Fedora 36 - x86_64 4.3 kB/s | 5.1 kB 00:01 Fedora 36 openh264 (From Cisco) - x86_64 13 kB/s | 989 B 00:00 Fedora Modular 36 - x86_64 5.6 kB/s | 5.1 kB 00:00 Fedora 36 - x86_64 - Updates 17 kB/s | 5.6 kB 00:00 Fedora 36 - x86_64 - Updates 167 kB/s | 441 kB 00:02 Fedora Modular 36 - x86_64 - Updates 15 kB/s | 5.0 kB 00:00 Fortinet CentOS 8 repository 3.0 kB/s | 2.9 kB 00:00 메타 자료 캐쉬가 생성되었습니다.
build-essential 패키지는 페도라에서는 찾을 수 없습니다.
이 패키지 내용에 가장 근접한 최소 설치 명령은 다음과 같습니다.
물론 리눅스의 달인이라서 아는게 아니라 구글링 해서 찾은 내용입니다.
[aqua@localhost driver]$ sudo dnf install make automake gcc gcc-c++ kernel-devel 마지막 메타자료 만료확인 0:10:01 이전인: 2022년 06월 15일 (수) 오후 02시 15분 30초. 꾸러미 make-1:4.3-7.fc36.x86_64가 이미 설치되어 있습니다. 꾸러미 gcc-12.1.1-1.fc36.x86_64가 이미 설치되어 있습니다. 종속성이 해결되었습니다. ================================================================================ 꾸러미 구조 버전 레포지터리 크기 ================================================================================ 설치 중: automake noarch 1.16.5-4.fc36 fedora 673 k gcc-c++ x86_64 12.1.1-1.fc36 updates 13 M kernel-devel x86_64 5.17.13-300.fc36 updates 15 M 종속 꾸러미 설치 중: autoconf noarch 2.71-2.fc36 fedora 718 k bison x86_64 3.8.2-2.fc36 fedora 986 k elfutils-libelf-devel x86_64 0.187-4.fc36 updates 26 k flex x86_64 2.6.4-10.fc36 fedora 307 k libstdc++-devel x86_64 12.1.1-1.fc36 updates 2.3 M openssl-devel x86_64 1:3.0.3-1.fc36 updates 2.9 M perl-File-Compare noarch 1.100.600-486.fc36 fedora 18 k perl-File-Copy noarch 2.35-486.fc36 fedora 25 k perl-Thread-Queue noarch 3.14-479.fc36 fedora 21 k zlib-devel x86_64 1.2.11-31.fc36 fedora 44 k 연결 요약 ================================================================================ 설치 13 꾸러미 총계 내려받기 크기: 36 M 설치된 크기 : 123 M 진행 할 까요? [y/N]: y 꾸러미 내려받기중: (1/13): automake-1.16.5-4.fc36.noarch.rpm 481 kB/s | 673 kB 00:01 (2/13): autoconf-2.71-2.fc36.noarch.rpm 445 kB/s | 718 kB 00:01 (3/13): bison-3.8.2-2.fc36.x86_64.rpm 572 kB/s | 986 kB 00:01 (4/13): perl-File-Compare-1.100.600-486.fc36.no 162 kB/s | 18 kB 00:00 (5/13): flex-2.6.4-10.fc36.x86_64.rpm 811 kB/s | 307 kB 00:00 (6/13): perl-File-Copy-2.35-486.fc36.noarch.rpm 261 kB/s | 25 kB 00:00 (7/13): perl-Thread-Queue-3.14-479.fc36.noarch. 227 kB/s | 21 kB 00:00 (8/13): zlib-devel-1.2.11-31.fc36.x86_64.rpm 453 kB/s | 44 kB 00:00 (9/13): elfutils-libelf-devel-0.187-4.fc36.x86_ 43 kB/s | 26 kB 00:00 (10/13): libstdc++-devel-12.1.1-1.fc36.x86_64.r 2.0 MB/s | 2.3 MB 00:01 (11/13): gcc-c++-12.1.1-1.fc36.x86_64.rpm 5.1 MB/s | 13 MB 00:02 (12/13): kernel-devel-5.17.13-300.fc36.x86_64.r 5.8 MB/s | 15 MB 00:02 (13/13): openssl-devel-3.0.3-1.fc36.x86_64.rpm 1.6 MB/s | 2.9 MB 00:01 -------------------------------------------------------------------------------- 합계 4.6 MB/s | 36 MB 00:07 연결 확인 실행 중 연결 확인에 성공했습니다. 연결 시험 실행 중 연결 시험에 성공했습니다. 연결 실행 중 준비 중 : 1/1 설치 중 : openssl-devel-1:3.0.3-1.fc36.x86_64 1/13 설치 중 : libstdc++-devel-12.1.1-1.fc36.x86_64 2/13 설치 중 : zlib-devel-1.2.11-31.fc36.x86_64 3/13 설치 중 : elfutils-libelf-devel-0.187-4.fc36.x86_64 4/13 설치 중 : perl-Thread-Queue-3.14-479.fc36.noarch 5/13 설치 중 : perl-File-Copy-2.35-486.fc36.noarch 6/13 설치 중 : perl-File-Compare-1.100.600-486.fc36.noarch 7/13 설치 중 : autoconf-2.71-2.fc36.noarch 8/13 설치 중 : flex-2.6.4-10.fc36.x86_64 9/13 설치 중 : bison-3.8.2-2.fc36.x86_64 10/13 설치 중 : kernel-devel-5.17.13-300.fc36.x86_64 11/13 스크립트릿 실행 중: kernel-devel-5.17.13-300.fc36.x86_64 11/13 설치 중 : automake-1.16.5-4.fc36.noarch 12/13 설치 중 : gcc-c++-12.1.1-1.fc36.x86_64 13/13 스크립트릿 실행 중: gcc-c++-12.1.1-1.fc36.x86_64 13/13 확인 중 : autoconf-2.71-2.fc36.noarch 1/13 확인 중 : automake-1.16.5-4.fc36.noarch 2/13 확인 중 : bison-3.8.2-2.fc36.x86_64 3/13 확인 중 : flex-2.6.4-10.fc36.x86_64 4/13 확인 중 : perl-File-Compare-1.100.600-486.fc36.noarch 5/13 확인 중 : perl-File-Copy-2.35-486.fc36.noarch 6/13 확인 중 : perl-Thread-Queue-3.14-479.fc36.noarch 7/13 확인 중 : zlib-devel-1.2.11-31.fc36.x86_64 8/13 확인 중 : elfutils-libelf-devel-0.187-4.fc36.x86_64 9/13 확인 중 : gcc-c++-12.1.1-1.fc36.x86_64 10/13 확인 중 : kernel-devel-5.17.13-300.fc36.x86_64 11/13 확인 중 : libstdc++-devel-12.1.1-1.fc36.x86_64 12/13 확인 중 : openssl-devel-1:3.0.3-1.fc36.x86_64 13/13 설치되었습니다: autoconf-2.71-2.fc36.noarch automake-1.16.5-4.fc36.noarch bison-3.8.2-2.fc36.x86_64 elfutils-libelf-devel-0.187-4.fc36.x86_64 flex-2.6.4-10.fc36.x86_64 gcc-c++-12.1.1-1.fc36.x86_64 kernel-devel-5.17.13-300.fc36.x86_64 libstdc++-devel-12.1.1-1.fc36.x86_64 openssl-devel-1:3.0.3-1.fc36.x86_64 perl-File-Compare-1.100.600-486.fc36.noarch perl-File-Copy-2.35-486.fc36.noarch perl-Thread-Queue-3.14-479.fc36.noarch zlib-devel-1.2.11-31.fc36.x86_64 완료되었습니다!
gcc는 이미 설치되어 있다고 하네요. 그럼 ncurses 패키지를 설치합니다.
ncurses는 리눅스의 터미널에서 그래픽을 지원하기 위한 패키지라고 합니다.
페도라의 경우 ncurses 자체는 설치되어 있고 헤더 등이 포함된 개발 패키지를 설치하면 되는데 괜히 또 우분투용 패키지 이름인 -dev로 써서 에러 한번 냈네요. -devel로 설치 했습니다.
[aqua@localhost dev]$ sudo dnf install ncurses 마지막 메타자료 만료확인 0:01:03 이전인: 2022년 06월 15일 (수) 오후 02시 15분 30초. 꾸러미 ncurses-6.2-9.20210508.fc36.x86_64가 이미 설치되어 있습니다. 종속성이 해결되었습니다. 처리가 필요하지 않습니다. 완료되었습니다! [aqua@localhost dev]$ sudo dnf install ncurses-dev 마지막 메타자료 만료확인 0:01:14 이전인: 2022년 06월 15일 (수) 오후 02시 15분 30초. 일치하는 인수가 없습니다: ncurses-dev 오류: 일치하는 항목을 찾을 수 없습니다: ncurses-dev [aqua@localhost dev]$ sudo dnf install ncurses-devel 마지막 메타자료 만료확인 0:01:20 이전인: 2022년 06월 15일 (수) 오후 02시 15분 30초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 구조 버전 레포지터리 크기 ================================================================================ 설치 중: ncurses-devel x86_64 6.2-9.20210508.fc36 fedora 517 k 종속 꾸러미 설치 중: ncurses-c++-libs x86_64 6.2-9.20210508.fc36 fedora 37 k 연결 요약 ================================================================================ 설치 2 꾸러미 총계 내려받기 크기: 554 k 설치된 크기 : 1.0 M 진행 할 까요? [y/N]: 꾸러미 내려받기중: (1/2): ncurses-c++-libs-6.2-9.20210508.fc36.x86 194 kB/s | 37 kB 00:00 (2/2): ncurses-devel-6.2-9.20210508.fc36.x86_64 1.2 MB/s | 517 kB 00:00 -------------------------------------------------------------------------------- 합계 320 kB/s | 554 kB 00:01 연결 확인 실행 중 연결 확인에 성공했습니다. 연결 시험 실행 중 연결 시험에 성공했습니다. 연결 실행 중 준비 중 : 1/1 설치 중 : ncurses-c++-libs-6.2-9.20210508.fc36.x86_64 1/2 설치 중 : ncurses-devel-6.2-9.20210508.fc36.x86_64 2/2 스크립트릿 실행 중: ncurses-devel-6.2-9.20210508.fc36.x86_64 2/2 확인 중 : ncurses-c++-libs-6.2-9.20210508.fc36.x86_64 1/2 확인 중 : ncurses-devel-6.2-9.20210508.fc36.x86_64 2/2 설치되었습니다: ncurses-c++-libs-6.2-9.20210508.fc36.x86_64 ncurses-devel-6.2-9.20210508.fc36.x86_64 완료되었습니다!
그 뒤는 make clean - make - make install 명령을 실행해서 당연한 듯이 마지막에 실패!
[aqua@localhost driver]$ make clean #make -C /lib/modules/5.17.13-300.fc36.x86_64/build M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver clean rm -rf *.*~ *~ *.o *.ko *.mod.c .*.cmd .*.o.d .tmp_versions Module.symvers modules.order Module.markers [aqua@localhost driver]$ make make -C /lib/modules/5.17.13-300.fc36.x86_64/build M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 들어감 CC [M] /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/f81232.o MODPOST /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/Module.symvers CC [M] /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/f81232.mod.o LD [M] /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/f81232.ko BTF [M] /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/f81232.ko Skipping BTF generation for /home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver/f81232.ko due to unavailability of vmlinux make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 나감 #make -C /DataDisk/freescale/imx/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/4.9.11-r0/build M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules #make -C /DataDisk/old/hpeter/allwinner/loboris/test/sunxi_jwrdegoede M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules #make -C /DataDisk/hpeter/DMA-210UII/samsung_android_kernel_3.0 M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules #make -C /DataDisk/freescale/android_x86-6.0-r2/out/target/product/x86/obj/kernel M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules #make -C /DataDisk/freescale/x86/android_lolipop/out/target/product/x86/obj/kernel M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver modules [aqua@localhost driver]$ make install make -C /lib/modules/5.17.13-300.fc36.x86_64/build M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver INSTALL_MOD_DIR=updates modules_install make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 들어감 INSTALL /lib/modules/5.17.13-300.fc36.x86_64/updates/f81232.ko cp: '/lib/modules/5.17.13-300.fc36.x86_64/updates/f81232.ko' 일반 파일을 만들 수 없습니다: 허가 거부 make[2]: *** [scripts/Makefile.modinst:81: /lib/modules/5.17.13-300.fc36.x86_64/updates/f81232.ko] 오류 1 make[1]: *** [Makefile:1767: modules_install] 오류 2 make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 나감 make: *** [Makefile:18: install] 오류 2 [aqua@localhost driver]$ sudo make install make -C /lib/modules/5.17.13-300.fc36.x86_64/build M=/home/aqua/Downloads/F81232_F81532A_534A_535_536_DriverSourceCode-v1.12.1_Linux/driver INSTALL_MOD_DIR=updates modules_install make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 들어감 INSTALL /lib/modules/5.17.13-300.fc36.x86_64/updates/f81232.ko SIGN /lib/modules/5.17.13-300.fc36.x86_64/updates/f81232.ko At main.c:160: - SSL error:FFFFFFFF80000002:system library::No such file or directory: crypto/bio/bss_file.c:67 - SSL error:10000080:BIO routines::no such file: crypto/bio/bss_file.c:75 sign-file: ./certs/signing_key.pem: No such file or directory DEPMOD /lib/modules/5.17.13-300.fc36.x86_64 make[1]: 디렉터리 '/usr/src/kernels/5.17.13-300.fc36.x86_64' 나감 depmod
그래서 결국 완전한 드라이버 설치는 실패 했습니다.
다행이 /dev/ttyUSB0 이름으로 드라이버가 매핑이 되어 출력 테스트는 성공 했습니다.
실패 했는데 왜 인식이 되는지는 잘 모르겠지만 어쨌든 되었으니 여기까지 하고 OPNsense 설정은 원래대로 돌렸습니다.
절반만 성공해서 우분투를 다시 깔까 생각도 해보지만... 저는 우분투의 기본 색상이 정말 이상하다고 생각되서 참 고르기 힘든 것 같습니다.
참고로 역시나 리눅스 초보인 저의 기억을 백업하기 위해 한가지 지식을 적자면,
리눅스는 하드 디스크, 마우스 등의 장치가 활성화 될 때 이를 접근하기 위해 특정 디렉토리에 마운트 해서 해당 경로를 장치를 제어하기 위한 통로로 씁니다. 보통은 de facto standard가 된 관습에 의해 /dev 밑에 마운팅 합니다. 윈도우 장치 관리자에서 볼 수 있는 메인보드 등의 다양한 기능들은 대부분 tty로 시작하는 이름으로 생성 되는데 하드 디스크는 역시나 관습에 의해 sda로 보통 이름이 지어집니다. 이런 점이 리눅스를 쉽게 접근할 수 없게 만드는 장벽이라고 생각 합니다. 곁다리로 MS에서는 COM*라는 이름을 쓰고 있습니다.