레드마인 접속 시, 아래 이미지와 같이 문구가 출력된다면... ruby 설정 파일을 삭제하거나 소유권을 확인한다. test@redmine2:/usr/share/redmine$ ll /var/lib/redmine/ 합계 20 drwxr-xr-x 3 root root 4096 5월 8 10:27 ./ drwxr-xr-x 71 root root 4096 12월 29 10:25 ../ -rw-r--r-- 1 www-data www-data 4121 5월 8 10:32 Gemfile.lock drwxr-xr-x 4 root root 4096 12월 28 11:12 default/ test@redmine2:/usr/share/redmine$ Gemfile.lock 파일의 소유권이나 권한 문제로 레드마인이 정상적으로..
STM32CubeIDE를 사용하여 윈도우 환경에서 소스코드를 생성한 것을 리눅스 환경에서 포트 변경이나 추가로 인해 코드를 다시 생성하면 윈도우 리눅스간 개행문자 차이로 인해 소스 버전관리 도구인 GIT은 아래 이미지와 같이 코드가 변경된 것으로 인식한다. 개행문자를 제외한 나머지 코드는 동일한데 이것을 소스 변경사항으로 올릴 경우 코드 버전 관리가 안되기 때문에 dos2unix를 사용하여 변경된 개행문자를 통일 시키도록 한다. 파일이 한개라면 문제가 없겠지만, 수많은 파일을 변경해야 된다면 이것 또한 일이기 때문에 아래의 명령어를 사용하여 일괄적으로 변경할 수 있다. $ find . -type f | xargs dos2unix dos2unix는 텍스트 파일에만 적용되며, 바이너리 파일을 변환하지 않기 ..
우분투 20.04에서 RDK 4.0 빌드할 때, 발생한 에러에 대한 패치를 만드는 마지막 레시피이다. 생각보다는 많이 발생하지 않았지만, Chipset 제조사나 미들웨어에서 권장한 우분투 버전이 아닌 다른 버전에서 빌드환경을 구성하는 일은 정말 피곤한 일이다. qemu 빌드 과정에서 발생하는 아래의 에러는 최신 glibc가 C++ 표준을 따라 에서 제거하여 발생한 문제이다. | /usr/bin/ld.bfd: qga/commands-posix.o: in function `dev_major_minor': | /media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/qga/c..
우분투 20.04 설치된 gawk 5.0.1 버전이 설치되며, 이 버전의 gawk는 '#' 앞에 '\'을 있을 경우 문법 에러로 인식하여 아래와 같은 에러가 발생한다. | gawk -f ../../libgpg-error-1.24/src/mkstrtable.awk -v textidx=3 \ | ../../libgpg-error-1.24/src/err-sources.h.in >../../libgpg-error-1.24/src/err-sources.h | gawk -f ../../libgpg-error-1.24/src/mkstrtable.awk -v textidx=3 \ | ../../libgpg-error-1.24/src/err-codes.h.in >../../libgpg-error-1.24/src/err-..
우분투 20.04는 GCC 9.x 버전이 설치되며, glib 빌드하면 아래와 같은 에러가 발생한다. | ../../glib-2.48.2/gio/gdbusmessage.c: In function ‘g_dbus_message_to_blob’: | ../../glib-2.48.2/gio/gdbusmessage.c:2698:30: error: ‘%s’ directive argument is null [-Werror=format-overflow=] | 2698 | tupled_signature_str = g_strdup_printf ("(%s)", signature_str); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | cc1: some warnings being treate..
우분투 20.04에서 glibc 버전이 변경되어 많은 RDK 레시피에서 빌드 에러가 발생한다. Perl 역시 glibc으로 인해 아래와 같은 에러가 발생한다. pp.c: In function ‘Perl_pp_crypt’: pp.c:3628:47: error: ‘struct crypt_data’ has no member named ‘current_saltbits’ 3628 | PL_reentrant_buffer->_crypt_struct_buffer->current_saltbits = 0; | ^~ glibc 2.31 버전에서 current_saltbits 삭제되어 발생한 문제이며, 아래와 같이 패치를 적용하면 빌드에러를 해결할 수 있다. --- perl-5.22.1_old/pp.c2015-10-31 05..
우분투 20.04 버전에 설치된 glibc 버전은 2.31이며 C++ 표준으르 따르기 위해 에서 가 제거되어 아래의 빌드 에러가 발생한다. | gcc -L/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/lib -L/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/lib -Wl,-rpath-link,/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/lib -Wl,-rpath-link,/media/gon/proj/RD..
우분투 20.04에서 elfuilts를 빌드하면 아래와 같은 에러가 발생한다. | gcc -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/share/locale"' -I. -I../../elfutils-0.166/libelf -I.. -I. -I../../elfutils-0.166/libelf -I../../elfutils-0.166/lib -I.. -isystem/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/include ..
아래 에러는 m4 동일하게 GCC7으로 빌드해서 발생하는 문제이다. | gcc -I. -I./lib -I../bison-3.0.4 -I../bison-3.0.4/lib -isystem/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/include -isystem/media/gon/proj/RDK/temp/build-raspberrypi-rdk-hybrid/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -c -o lib/isnanf.o ../bison-3.0.4/lib/isnanf.c | ../bison-3.0.4/lib/fseterr.c: In function 'fs..
아래와 같은 m4 빌드 에러는 우분투 18.04 이상 버전을 사용할 경우 발생한다. | ../../m4-1.4.17/lib/freadahead.c: In function ‘freadahead’: | ../../m4-1.4.17/lib/freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." | 91 | #error "Please port gnulib freadahead.c to your platform! Look at the definitio..
우분투 20.04 버전의 glibc 버전은 2.31이 설치되어 있으며, 아래의 명령어로 glibc 설치 버전을 확인할 수 있다. $ getconf -a | grep glibc RDK 4.0 레시피 빌드 과정중 rpm에서 아래와 같은 에러가 발생하며, 이것은 호스트 환경의 glibc 버전이 2.30 이상이라면 에러가 발생한다. | x86_64-linux-libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../rpm-5.4.15/rpmio -I.. -I../../rpm-5.4.15/rpmio -I../../rpm-5.4.15 -I../../rpm-5.4.15/build -I../../rpm-5.4.15/lib -I../lib -I../../rpm-5.4.15/rpmdb -I..
타켓보드의 GDB Server에 연결하려면 호스트는 gdb-multiarch 필요하다. gdb-multiarch는 우분투 기본 저장소에 등록되어 있어 PPA 추가없이 설치가 가능하다. $ sudo apt install gdb-multiarch Buildroot GDB server 패키지를 추가해야 하며, 빌드 옵션은 가급적 'debug_level=0'으로 설정하고 '-g' 옵션을 추가하도록 한다. 그리고 방화벽이 설정되어 있다면 GDB가 사용할 포트번호는 허용해야 한다. 참고로, 방화벽 설정은 BR2_PACKAGE_GDB_SERVER 옵션이 추가되면 8844 포트를 허용하였으나, 방화벽 변경 사항 및 GDB 라이브러리 및 바이너리 추가로 rootfs가 변경되어 타겟보드에 rootfs 이미지를 re-wri..
Buildroot는 wget 사용하여 패키지를 다운받으며, 네트워크 연결 타임아웃 값을 3초로 설정하여 네트워크 연결 실패로 인한 빌드 에러가 자주 발생한다. 아래와 같이 타임아웃을 15초로 설정하면 네트워크 상태에 따라 네트워크 연결이 조금 늦더라도 네트워크 연결 실패로 인한 빌드 에러는 발생하지 않는다. --- package/pkg-download.mk(리비전 13107) +++ package/pkg-download.mk(리비전 13117) @@ -364,7 +364,7 @@ # the next time the download is tried. define DOWNLOAD_WGET test -e $(DL_DIR)/$(2) || \ -($(WGET) --no-check-certificate -T 3 -..
ALi linux_FT_Tool을 사용하여 윈도우 디버그 도구인 WinGDB 없이 우분투 환경에서 ALi Probe를 사용하려면 아래의 패키지를 설치해야 한다. $ sudo apt install libusb-dev libusb-1.0-0-dev ALi Probe는 CYPRESS USB 라이브러리를 사용하기 때문에 ALi Probe 드라이버(ALiProbe_Linux64_Driver.zip)를 설치하도록 한다. $ cd ALiProbe_Linux64_Driver $ sudo ./install.sh 위 명령어 실행으로 ALi Probe 드라이버 설치 및 udev 스크립트가 추가되며, ALi SDK 패키지에 포함된 linux_FT_Tool을 사용하여 우분투에서 바로 Jtag 연결이 가능하다. linux_FT_..
LIRC를 사용하여 IR 레코딩 하기 위해서, lircd 데몬을 실행되고 있다면 kill 시키도록 한다. lircd 데몬이 실행 상태에서 ir 레코딩은 이상한 데이터가 기록된다. 타켓보드에서 irrecord 명령어를 아래와 같이 실행하여 ir 레코딩을 시작할 수 있다. $ irrecord -d /dev/lirc0 ./lircd.conf irrecord를 실행하면 아래와 같이 RCU 이름을 설정하고 IR 레코딩을 진행하도록 한다. HD_WSCL 이름을 갖는 lirc.conf 파일이 생성되며, 다음 단계에서는 최대한 많은 key를 입력하도록 한다. 여기서 주의할 점은 1초이상 길게 눌려서는 안된다. 위 단계에서 RCU가 사용하는 RC5/NEC 등의 프로토콜을 판단한다. 프로토콜 스캔이 완료되면 각 key에 ..