This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

*/
레이블이 LINUX인 게시물을 표시합니다. 모든 게시물 표시
레이블이 LINUX인 게시물을 표시합니다. 모든 게시물 표시

MySQL DB 옮기기

환경

 원본 DB시스템 : Windows 11, MySQL 8.0

 타겟 DB시스템 : CentOS Linux 7, MariaDB 5.5


MySQL dump 사용법

Backup

> mysqldump.exe -u[유저명] -p[패스워드] database명 [table명] > 파일명.sql 이나
> mysqldump.exe -u[유저명] -p[패스워드] database명 [table명] -r 파일명.sql

Restore

     > mysql 실행
     mysql> use DB명
     mysql> source 디렉토리명/파일명.sql


예) Windows 에 있는 MySQL의 database명 fd, table명 breeds 을 a.sql로 백업

d:\work> & 'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump' -uroot -p fd breeds  > a.sql 


예) 윈도우즈의 database fd에 있는 table 전체를 백업 할 때

d:\work> & 'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump' -uroot -p fd -r fd.sql



윈도우즈에서 백업한것을 다시 DB에 올리는 경우

c:\> &'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql' -uroot -p fd 

mysql> source d:/work/fd.sql 

Linux 버전 확인

리눅스에서 버전 확인 하기

커널 확인

user@system:~$ uname -a
 

user@system:~$ cat /proc/version
 

배포판 정보 확인
user@system:~$ cat /etc/*release*
 

Ubuntu에서 버전 확인

 lsb_release 

$ lsb_release -a


cat /etc/os-release










git 사용자 이름/패스워드 Repository별 저장

git 사용시 repository별 사용자명과 패스워드를 설정하고자 할때 

터미널에서 해당 repository 디렉토리에서 git config user.name "사용자명"을 입력하고,

$ git config user.name "amos"

패스워드를 다음과 같이 입력한다.  git config user.password "패스워드"

git config user.password "amosxxxx"

이후에는 pull 혹은  push시 username과 password를 입력하라는 프롬프트가 안나온다.

설정되어 있는 username과 password를 보고자 할때는 .git 폴더에서 config파일을 확인하면 된다.

 nano  .git/config

[core]
  repositoryformatversion = 0
  filemode = false
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = https://xxx.xxx.xx/xx/yy.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master
[user]
  name = amos
  password = amosxxx


Linux에서 파일명 일괄 변경

 현재 디렉토리 하위에 있는 file명이 from으로 시작되는 모든 파일(fromxxx.xx)을 to로 시작하는 파일로 한번에 변경

 find ./ -name "from*" | sed -e 'p' -e "s/from/to/g" | xargs -n 2 mv


rename 명령어로 변경하기

형식 : rename 's/파일명/변경할파일명/' 대상파일필터

예) 

 rename 's/from/to/' ./*

PC에서 ARM용 크로스 컴파일 후 strip 시 오류 발생

 OpenCV를 ARM용으로 Cross Compile후 strip실행시 아래와 같은 오류 발생

strip -s *.so   
    strip: Unable to recognise the format of the input file 'libopencv_calib3d.so'

원인은 strip을 호스트용을 사용해서 발생한 것으로 ARM용으로 strip을 할수 있는 arm-linux-gnueabi-strip을 사용하면 정상적으로 strip이 되는것을 확인할 수 있다.

arm-linux-gnueabi-strip -s *.so



Window Subsystem for Linux(WSL) 설치

요구사항

OS : Windows 10 ver. 16237.0이상

Architecture : x64, ARM64

Windows features

윈도우즈 제어판 -> 프로그램 및 기능 -> Windows 기능 켜기/끄기


Windows 기능 켜기/끄기에서 "Linux용 Windows 하위 시스템"을 체크하고 확인 버튼을 클릭하면 아래와 같이 필요한 파일들을 검색하고 세팅한후 재부팅 메세지가 출력된다.



재부팅후 Microsoft Store을 실행하고 ubuntu를 검색한다.
ubuntu  혹은 원하는 버전이 있으면 해당 버전을 선택하고 설치버튼을 클릭한다.

설치가 완료되면 시작메뉴에 ububtu항목이 추가된다.
시작메뉴에서 Ubuntu를 클릭하면 몇분간 초기화하고 새로운 사용자명과 패스워드를 설정하라는 메세지가 나온다.
사용자명과 패스워드를 정상적으로 등록하고 설치가 완료된 화면

참고사항

설치된 디렉토리는? 스토어를 통해 설치하는 각 배포는 해당 응용 프로그램의 appdata 디렉토리에 설치된다.
기존 Windows의 데이터 접근은? /mnt/c 에 mount되어 있음.  $ ls /mnt/ 로 기존 윈도우즈 파일들 확인 가능


OrangePi Lite 2 Swap 메모리 설정

 OrangePi Lite 2 Memory 1G를 사용중인데 약간 크기가 큰 것들을 컴파일 하면 시스템이 아주 아주 느려져 재부팅을 시키게 되는 일이 잦아 진다. 이때 swap 영역을 잡아 주면 시스템이 느려지는 현상을 상당히 완화 시킬 수 있다.

스왑(swap) 메모리

리눅스에서 swap메모리는 윈도우즈의 가상 메모리와 동일하며, 시스템의 램(RAM)이 부족한 경우 swap메모리를 이용하게 된다.

스왑메모리 영역을 설정하는 방법은 스왑 파티션이용방법과 스왑파일을 만들어 사용하는 방법이 있다. 스왑파일을 만들어 사용하는 방법을 간단히 정리한다.

스왑파일 생성

1GByte의 스왑메모리슬 설정한다. 크기를 늘리고자하면 필요한만큼 숫자를 올려주면 된다. 예를 들어 OpenCV를 build할 경우 2G정도 사용하는 것이 좋다.
sudo fallocate -l 1G /swapfile
권한 설정
sudo chmod 600 /swapfile

스왑메모리로 변경

sudo mkswap /swapfile

스왑메모리 활성화

sudo swapon /swapfile

스왑메모리 확인

free
swapon -s

부팅시 자동 설정

재부팅이후에도 스왑메모리가 자동으로 지정되게 하려면 /etc/fstab에 아래 내용 추가

sudo nano /etc/fstab
     /swapfile swap swap default 0 0

스왑메모리 제거

/etc/fstab에 저장된 스왑메모리의 마운트 내용 삭제 또는 주석처리

sudo nano /etc/fstab
     /swapfile swap swap default 0 0 제거 또는 주석처리
sudo swapoff -v /swapfile
sudo swapoff on /swapfile
sudo rm -r /swapfile

Link

OrangePi Lite 2 rootfs 확장

사용 Image : OrangePi_lite2_ubuntu_xenial_desktop_linux5.3.5_v2.0.1.img

발행일 : 2019년 12월 31일

OrangePi 이미지를 설치하고 나서 처음 부팅했을때 rootfs를 사용하고 있는 SD카드의 전체를 사용하도록 확장할 필요가 있다.

확장하기전 상태

$ df h


rootfs확장 스크립트 실행

$ resize_rootfs.sh


확장후 상태

$ df -h


* Raspberry Pi에서 root fs 확장 방법

라즈베리파이에서는 raspi-config 파일을 이용하면 된다
$ sudo raspi-config
7. Advanced Options 선택
A1. Expand Filesystem 선택
종료
리부팅

OrangePi Lite 2 VNC server 설치

OrangePi Lite 2에 VNC 서버 설치하기

X11vnc 패키지 설치

$ sudo apt install x11vnc

VNC 접속 패스워드 설정

$ x11vnc -storepasswd

VNC서버 시작

$ x11vnc -forever -shared -rfbauth ~/.vnc/passwd

자동실행하도록 설정

위에서 설정한 비밀번호를 복사

$ sudo cp ~/.vnc/passwd /etc/x11vnc.pass

자동실행 스크립트 작성

/etc/rc.local파일에서 exit 0위에 아래 내용 삽입

$ sudo nano /etc/rc.local

     x11vnc -display :0 -auth /var/run/lightdm/root/:0 -forever -bg -o /var/log/x11vnc.log -rfbauth /etc/x11vnc.pass -rfbport 5900
     

IP주소 확인

$ ifconfig

재부팅

OrangePi를 재부팅하고 로그인한다.

VNC연결

Chrome 브라우저에서 좌상단의 "앱"버튼을 누르고 VNC Viewer를 실행한다.

VNC Viewer에서 Address에 위에서 확인한 IP주소 값을 넣고 Connect버튼을 누른다.

위에서 설정한 패스워드 값을 입력한다.

Raspberry 4에서 tensorflow 2.2 설치

Tensorflow 2.2 package download

$ wget http://1.229.109.140:3562/tensorflow/tensorflow-2.2.0.armv7l/tensorflow-2.2.0-cp37-none-linux_armv7l.whl

--2020-09-03 16:45:10--  http://1.229.109.140:3562/tensorflow/tensorflow-2.2.0.armv7l/tensorflow-2.2.0-cp37-none-linux_armv7l.whl

Connecting to 1.229.109.140:3562... connected.

HTTP request sent, awaiting response... 200 

Length: 157689306 (150M)

Saving to: ‘tensorflow-2.2.0-cp37-none-linux_armv7l.whl’

tensorflow-2.2.0-cp 100%[===================>] 150.38M  2.03MB/s    in 82s     

2020-09-03 16:46:31 (1.84 MB/s) - ‘tensorflow-2.2.0-cp37-none-linux_armv7l.whl’ saved [157689306/157689306]

Install package

$ pip3 install tensorflow-2.2.0-cp37-none-linux_armv7l.whl



linux 카메라 콘트롤 - v4l2-ctl

 Linux머신에서 설치되어 있는 카메라의 정보 확인 및 제어할 수 있는 명령

v4l2-ctl 옵션확인

$ v4l2-ctl

설치된 카메라의 모든 정보 확인

$ v4l2-ctl --all
설명 추가

드라이버 정보 보기

$ v4l2-ctl -D

디바이스에서 제공될수 있는 포멧 리스트

$ v4l2-ctl --list-formats

프레임크기와 인터벌을 포함한 디바이스에서 제공될 수 있는 포멧 리스트

$ v4l2-ctl --list-formats-ext
$ lsusb


[OpenCV] Raspberry Pi 4에 opencv 3.4.9 설치

라즈베리파이 4에 OpenCV 3.2라이브러리 설치하기

기존에 OpenCV가 설치되어 있었을 경우 다음과 같이 삭제하고 진행한다.

$ sudo apt purge libopencv* python-opencv
$ sudo apt autoremove
$ sudo apt update
$ sudo apt upgrade

기존에 OpenCV가 설치되어 있지않았다면 위를 건너 뛰고 OpenCV라이브러리를 빌드하기 위한 필요 라이브러리들을 설치한다.

$ sudo apt install -y -y build-essential cmake
$ sudo apt install -y pkg-config
$ sudo apt install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt install -y libv4l-dev v4l-utils
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 
$ sudo apt install -y libqt4-dev libgtk2.0-dev
$ sudo apt install -y mesa-utils libgl1-mesa-dri libqt4-opengl-dev 
$ sudo apt install -y libatlas-base-dev gfortran libeigen3-dev
$ sudo apt install -y python2.7-dev python3-dev python-numpy python3-numpy

OpenCV Source Download

$ git clone https://github.com/opencv/opencv.git
$ cd opencv
$ git checkout tags/3.4.9
$ cd ..

$ git clone https://github.com/opencv/opencv_contrib.git
$ cd opencv_contrib
$ git checkout tags/3.4.9
$ cd ..

현재 4.4.0까지 릴리즈되어 있다. 3.4.9버전이 아니라 다른버전을 사용하고자 할때는 tags/3.4.9를 원하는 버전으로 바꾸어 사용하면 된다. tag를 보는 방법은 $ git tag

OpenCV 라이브러리 빌드

$ mkdir build
$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_CUDA=OFF \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_OPENCV_PYTHON2=ON \
-D BUILD_OPENCV_PYTHON3=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../

cmake를 수행했을때 위와 같이 config done이 출력되면 make파일이 성공적으로 만들어진 경우다 계속 진행하자

$ time make -j4
$ sudo make install
$ sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
$ sudo apt upgrade

Raspberry Pi memory가 4GByte 이하일 경우 스왑메모리 설정

위에서 make하기 전에 스왑메모리를 늘려주어야 컴파일시 internal error가 발생하지 않는다.

$ sudo nano /etc/dphys-swapfile
               내용중 CONF_SWAPSIZE=100 을 CONF_SWAPSIZE=2000 으로 변경 하고 저장
$ sudo /etc/init.d/dphys-swapfile restart

Make가 끝난후에 다시 size를 100으로 변경한다.


관련문서

Ubuntu apt-get, apt-cache 명령

apt-get은 데비안 계열(ubuntu)의 리눅스에서 사용되는 패키지관리 명령어 도구

apt-get, apt-cache 대신 apt를 사용하세요. 진행사항을 프로그레스로 보여준다던가 업데이트해야할 갯수등 Option을 넣어야하는것들을 기본으로 사용하게 합니다.


Package Index정보를 업데이트 - /etc/apt/source.list에 있는 인텍스 정보를 최신 정보로 갱신

$  sudo apt update

Package 설치

$  sudo apt install 패키지이름
Package 재설치
$  sudo apt install 패키지이름
Package 삭제 - 설정파일은 지우지 않음
$  sudo apt remove 패키지이름
Package 삭제 - 설정까지 모두 지움
$  sudo apt --purge remove 패키지이름
Package 소스코드 다운로드
$  sudo apt source 패키지이름
다운로드 받은 소스를 의존성있게 빌드
$  sudo apt build-deb 패키지이름
설치된 Package Upgrade - 설치되어 있는 패키지를 새버전으로 Upgrade
$  sudo apt upgrade
설치된 Package의 의존성을 검사하며 Upgrade
$  sudo apt dist-upgrade
Package 검색
$  sudo apt search 패키지이름
Package 정보보기

$  sudo apt show 패키지이름


[OpenCV] OpenCV4에서 UVC Camera 사용시 capture 안되는 이슈

환경 :

- 라즈베리파이 4 with 라즈베리안

- OpenCV 4 


guvcview로는 video가 나오는데 테스트하려는 코드에서는 아래와 같은 오류 발생..


[ WARN:0] global /home/pi/work/opencv/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (933) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

[ WARN:0] global /home/pi/work/opencv/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (1184) setProperty OpenCV | GStreamer warning: GStreamer: unhandled property


Linux 설치된 특정 Library 버젼 확인하는 방법

 설치된 라이브러리의 버젼을 확인하고자 할 때 pkg-config 명령으로 아래와 같이 확인.

예를 들어  python의 버젼을 확인하고자 할때

$  pkg-config --modversion python


시스템에 설치된 모든 python버젼을 찾고 싶을때

$  pkg-config --list-all | grep python



CommonAPI 설정 화일 위치


CommonAPI 런타임 라이브러리가 설정(commonapi.ini) 파일을 찾는 3가지 방법
  1. 실행파일있는곳
  2. Global default directory /etc 폴더
  3. COMMONAPI_PATH, COMMONAPI_SOMEIP_DEFAULT_CONFIG 환경 변수 참조

COMMONAPI_CONFIG는 commonapi.ini가 있는 디렉토리를 설정하는 환경변수
COMMONAPI_SOMEIP_DEFAULT_CONFIG는 commonapi-someip.ini 를 설정하는 환경변수


$ export COMMONAPI_CONFIG=(commonapi.ini가 위치한 디렉토리)
$ export COMMONAPI_SOMEIP_DEFAULT_CONFIG=(commonapi-someip.ini가 위치한 디렉토리)


관련 페이지

CommonAPI 동적 라이브러리 패스 설정

CommonAPI를 사용하면서 동적 라이브러리(*.so)들을 시스템 디렉토리에 install해놓지 않은 상태라면 라이브러리 패스를 설정해야한다.
설정하는 방법은 아래와 같이 LD_LIBRARY_PATH 환경변수에 CommonAPI 런타임 라이브러리가 있는 디렉토리를 세팅해 주면 된다.

 예) $HOME/COMMONAPI 디렉토리에 CommonAPI런타임 라이브러리가 있고, 현재 폴더에 Binding 라이브러리가 있을때

$ export LD_LIBRARY_PATH=~/COMMONAPI:./

Franca IDL 신규 프로젝트 만들기

새로운 프로젝트 만들기

1. 빈프로젝트 만들기
Menu에서 File->New->Project 혹은 package Explorer에서 'Create a project..'를 클릭



2. Select a wizard메뉴에서 General->Project를 선택하고 Next버튼을 클릭한다.

3. Project Name을 입력하고 Finish버튼 클릭하면 빈(Empty) 프로젝트가 생성된다.

4. 빈 프로젝트의 Package Exploror에서 마우스 오른쪽 클릭하고 New->File을 선택하고 Create New File다이얼로그에서 생성하고자하는 파일명(xxx.fidl, 확장자 fidl 필수)을 입력하고, Finish버튼을 클릭하면 생성되어 있는 Project를 Xtext project로 변경하겠냐는 메세지 창이 나오면 Yes 클릭한다.




5. xxx.fidl 파일에 사용할 코드를 작성한다.

** Outline에 작성된 코드의 스트럭쳐가 표출되며, 작성된 코드에서 문제점이 있을 경우 아래쪽 Problems창에 오류들이 표기 된다.

관련 페이지

vSomeIP version 2.14.16 빌드

CommonAPI C++ with SOME/IP Example 에서

$git clone http://github.com/GENIVI/vSomeIP.git 하면 현재(2020년2월27일) 설치되는 버젼이 vsomeip 3.1.7.1의 코드가 설치되는데 본 코드로 빌드하면 capicxx-someip-runtime 빌드시 vsomeip를 찾을수 없다는 오류가 발생한다.

vSomeIP 디렉토리에서 아래 명령어로 로그와 현재 버전을 체크한다.
$git log

$ git show

vsomip 2.14.16버전으로 돌리고자하면 로그상에서 몇번째 아래에 있는지 확인하고(여기서는 1단계 아래) 아래와 같이 git checkout HEAD~1을 해준다. 5단계 아래일 경우 git checkout HEAD~5. 가장 최신으로 돌아올 경우 git checkout master

$git checkout HEAD~1


이제 다시 예제로 돌아가서 libvsomeipxxx.so들을 생성하고 commonapi 라이브러리들을 build하자.


관련링크 :
CommonAPI Stub? Proxy?
SOME/IP 헤더 구조와 fdepl파일 관계
CommonAPI Generator로 생성되는 file
CommonAPI C++ with SOME/IP Example
Franca 설치 가이드
Linux Xubuntu에 CommonAPI C/C++ 개발환경 구축하기