0. 준비사항

  가. Ubuntu 18.04

  나. ROS Melodic

 

1. $ rosrun actionlib axclient.py {action_message_name}

  가. ex) $ rosrun action axclient.py /test_action

  나. 토픽 메시지처럼 액션 메시지명의 범위를 정해줘야함

    1) /, ~ 등등

0. 준비사항

  가. Ubuntu 18.04 LTS 및 ROS melodic 사용

 

1. 에러사항

  가. ROS에서 사용자 커스텀 메시지를 생성하였을 경우 빌드 에러가 발생

  나. 몇 번 계속 하다 보면 생성되기도 함

 

2. 해결

  가. CMakeLists.txt를 수정

    1) add_dependencies(__노드파일명__ ${PROJECT_NAME}_generate_messages_cpp)

      가) __노드파일명__ : add_executable에서 사용하는 노드명을 입력

      나) ${PROJECT_NAME} : 그대로 입력

 

3. 이슈사항(일부 해결)

  가. CMakeLists.txt를 수정했는데도 빌드 에러가 생성

    1) 본인의 경우 add_library를 활성화했었음

    2) 본인의 경우 add_library를 사용하지 않아도 되었으므로, 비활성화해서 해결

0. 준비

  가. 새로운 컴퓨터를 Ubuntu 18.04 LTS 및 ROS melodic로 셋업한 사항

    1) 기본만 셋업한 상황, 외부 라이브러리 설치하지 않음

  나. catkin_make 사용하지 않고 catkin build를 사용함

    1) $ sudo apt install python-catkin-tools

 

1. 컴파일

  가. 다른 컴퓨터에서 소스를 가져옴

    1) 나의 경우 기존 컴퓨터에서 사용하던 소스를 가져옴

  나. 새로운 컴퓨터에 소스 복사

    1) $ catkin build

 

2. 에러 케이스 및 해결

  가. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "serial" with any
  of the following names:
    serialConfig.cmake
    serial-config.cmak

    1) 에러 : 시리얼 장치(COM포트)를 사용하는 패키지에서 발생한 에러

    2) 해결 : $ sudo apt install ros-melodic-serial

  나. CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:649 (message):
  None of the required 'libusb' found
Call Stack (most recent call first):
  CMakeLists.txt:5 (pkg_search_module)

    1) 에러 : libusb 라이브러리 없음

    2) 해결 : $ sudo apt install libusb-dev

  다. Errors     << mt4n:make /home/kajuha/catkin_ws/logs/mt4n/build.make.000.log
/home/kajuha/catkin_ws/src/mt4n/src/mt4n.cpp:16:10: fatal error: modbus.h: No such file or directory
 #include <modbus.h>

    1) 에러 : modbus 라이브러리 없음

    2) 해결 : $ sudo apt install libmodbus-dev

  라. Errors     << spacenav_node:make /home/kajuha/catkin_ws/logs/spacenav_node/build.make.000.log
/home/kajuha/catkin_ws/src/joystick_drivers/spacenav_node/src/spacenav_node.cpp:40:10: fatal error: spnav.h: No such file or directory
 #include "spnav.h"

    1) 에러 : libspnav 라이브러리(Client library for connecting to 3Dconnexion's 3D input devices) 없음

    2) 해결 : $ sudo apt install libspnav-dev

  마. Errors     << wiimote:make /home/kajuha/catkin_ws/logs/wiimote/build.make.000.log
In file included from /home/kajuha/catkin_ws/src/joystick_drivers/wiimote/src/wiimote_controller.cpp:45:0:
/home/kajuha/catkin_ws/src/joystick_drivers/wiimote/include/wiimote/wiimote_controller.h:49:10: fatal error: bluetooth/bluetooth.h: No such file or directory
 #include <bluetooth/bluetooth.h>

    1) 에러 : 블루투스 라이브러리 없음

    2) 해결 : $ sudo apt install libbluetooth-dev

  바. Errors     << wiimote:make /home/kajuha/catkin_ws/logs/wiimote/build.make.000.log
In file included from /home/kajuha/catkin_ws/src/joystick_drivers/wiimote/src/wiimote_controller.cpp:45:0:
/home/kajuha/catkin_ws/src/joystick_drivers/wiimote/include/wiimote/wiimote_controller.h:52:10: fatal error: cwiid.h: No such file or directory
 #include <cwiid.h>

    1) 에러 : libcwiid 라이브러리 없음

    2) 해결 : $ sudo apt install libcwiid-dev

  사. Errors     << hector_geotiff:cmake /home/kajuha/catkin_ws/logs/hector_geotiff/build.cmake.000.log
qmake: could not find a Qt installation of ''
CMake Error at /usr/share/cmake-3.10/Modules/FindQt4.cmake:1320 (message):
  Found unsuitable Qt version "" from NOTFOUND, this code requires Qt 4.x

    1) 에러 : Qt 라이브러리 없음

    2) 해결 : $ sudo apt install libqt4-dev

0. 준비

  가. X윈도우를 사용하는데 너무 느려서 구글링

    0) https://unix.stackexchange.com/questions/50698/fastest-remote-x-from-windows, https://unix.stackexchange.com/questions/187415/why-is-firefox-so-slow-over-ssh

    1) 간단히 ssh -C 를 사용하여 속도 개선여부를 확인하는 것도 한가지 방법(효과있음)

  나. ssh 클라이언트와 ssh 서버측의 실제 속도를 측정해보는 것이 가장 좋음

  다. 영향을 주는 요인은 주로 ssh 교환데이터의 압축

    1) ssh -C 옵션

  라. ssh 암호화

    1) ssh -c 옵션

    2) 암호화는 ssh 클라이언트 및 ssh 서버측의 지원에 따라 달라짐

  마. ssh 맥알고리즘

    1) ssh -m 옵션

    2) 맥알고리즘은 ssh 클라이언트 및 ssh 서버측의 지원에 따라 달라짐

 

1. ssh 클라이언트측

  가. 지원하는 암호화 확인

  나. $ ssh -Q cipher

  다. $ ssh -Q mac

  라. 50MB 랜덤데이터를 가진 전송시험용 파일 생성

    0) https://unix.stackexchange.com/questions/33629/how-can-i-populate-a-file-with-random-data

    1) dd if=/dev/urandom bs=1024 count=51200 of=test_file

  마. 벤치마크 파일 생성

    0) https://blog.famzah.net/2010/06/11/openssh-ciphers-performance-benchmark/

  바. ssh-keygen 생성

    0) https://arsviator.blogspot.com/2015/04/ssh-ssh-key.html

    1) $ ssh-keygen

    2) 서버측 공개키 복사

      가) $ ssh-copy-id user@url.com

 

2. ssh 서버측

1. 생성

  가. 폴더 생성

  나. 폴더명을 GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} 으로 변경

0. 현상

  가. arduino 1.8.13에서 opencr board package를 설치하고 동작이 안됨

  나. arduino 실행후 컴파일 할 경우 no such file or directory로 나타남

  다. Ubuntu 16.04(kinetic)에서는 정상 실행됨

 

1. 확인

  가. 해당 디렉토리에 파일은 실제로 존재하였음

  나. $ file arm-none-eabi-gcc 를 확인한 결과 32 bit binary file인 것으로 확인

  다. $ arm-none-eabi-gcc를 할 경우 no such file or directory가 나타남

    1) 64비트 시스템에서 32비트 파일을 실행할 경우 나타남

 

2. 대처방안

  가. $ sudo apt install libc6-i386

    1) 32 bit binary용 라이브러리 설치

    2) 32 bit와 64 bit 문제인 경우 

 

3. 실행

  가. $ arduino

  나. 컴파일을 하면 정상 동작

0. 준비

  가. 공인아이피 A를 가지는 공유기에 연결된 사설아이피 B

    1) ex : A(recipelab.net) 공유기 iptime

    2) ex : B(192.168.0.2) X11 Server 측

  나. 공인아이피 C를 가지는 공유기에 연결된 사설아이피 D

    1) ex : C(kabit.iptime.org) 공유기 iptime

    2) ex : D(192.168.1.6) X11 Client 측

  다. 전체 개략은 다음과 같음

    1) B(192.168.0.2) - A(recipelab.net 192.168.0.254) ---------- C(kabit.iptime.org, 192.168.1.254) - D(192.168.1.6)

1. 설정

  가. 공인아이피 A의 공유기 설정에 사설아이피 B를 포워딩

    1) TCP 6000 port forwarding

  나. 공이아이피 C의 공유기 설정에 사설아이피 D를 포워딩

    1) TCP 6000 port forwarding

  다. 사설아이피 B에서 X11 Forwarding 설정

    1) $ export DISPLAY=kabit.iptime.org:0

    2) :0 이 아닌 다른 것은 설정되지 않았음

    3) :n은 6000+n으로 설정하면 된다고 했지만 X410에서는 되지 않음

      가) 시험한 시점은 2020/10/31

 

2. 실행

  가. 사설아이피 D에서 X11용 명령어 실행

    1) $ xclock

    2) 시험용으로 시계 실행

0. 준비

가. Ubuntu : IP(예:10.0.0.2)

나. Windows 10 : IP(예:10.0.0.1)

 

1. X410 연결

가. Windows 10

1) X410 실행

  가) 작업표시줄 아이콘 오른쪽 버튼 Allow Public Access 체크(클릭)

2) Terminal에서 ssh 10.0.0.2

3) $ export DISPLAY=10.0.0.1:0.0

4) $ xclock 를 실행확인

 

0. 설치

  가. Windows 10에 Font 설치

    1) Zsh에서 agnoster 테마를 사용하면 Powerline 폰트가 필요함

    https://github.com/microsoft/cascadia-code/releases

    2) Ubuntu(WSL)이 설치된 상태에서 Zsh 설치 및 설정

      가) $ sudo apt install zsh

      나) $ which zsh를 통해 쉘의 위치 확인

      다) $ chsh -s /usr/bin/zsh 또는 chsh -s `which zsh`

        (1) '(Apostrophe, 작은따옴표, 홑따옴표)가 아니라 `(grave accent, 억음, backquote, 역따옴표)임

   3) Oh My Zsh 설치 및 설정

    가) $ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

    나) .zshrc 파일을 편집하여 ZSH_THEME="robbyrussell" -> ZSH_THEME="agnoster" 로 변경

 

1. 사용

  가. 어떠한 터미널이든 터미널이 있는 쪽 컴퓨터에 Powerline 폰트가 설치되어 있어야함

  나. SSH의 서버가 있는 쪽이 Zsh, Oh My Zsh 및 agnoster 테마가 있어야 Powerline 폰트 효과가 있음

 

0. 기본 화면

  가. 기본 VI : 상대편 VI와 내 VI는 기본 VI에서 파생된 것을 기본으로 해야함

    1) 상대편 VI와 내 VI에서 차이가 있는 부분을 병합할 기본 VI

    2) 병합된 코드는 기본 VI에 저장됨

  나. 상대편 VI : 기본 VI에서 파생된 코드를 기반으로 수정된 코드

  다. 내 VI : 기본 VI에서 파생된 코드를 기반으로 수정된 코드

  라. 상대편 VI와 내 VI에 대한 명칭은 특정 사용자 또는 리비전으로 인해 발생한 코드 2가지라고 생각하면 됨

  마. 2개의 VI만 병합할 경우(ex: A VI, B VI)

    1) 기본 VI : A VI 복사본(단순히 병합된 코드가 저장될 VI, B VI 복사본도 상관없음)

    2) 상대편 VI : A VI(반영사항이 없으므로 B VI만 반영된다고 보면 됨)

    3) 내 VI : B VI

 

1. 초기 VI 상태

  가. 기본 VI

  나. 상대편 VI

  다. 내 VI

2. 병합을 한 후 VI 상태

  가. 기본 VI

  나. 상대편 VI(기본 VI에 병합되어 저장되므로 변경없음)

  다. 내 VI(기본 VI에 병합되어 저장되므로 변경없음)

 

2. 병합 결과

  가. 상대편 VI에서 수정된 코드가 기본 VI에 반영되었음

    1) 더하기에서 증가로 코드 수정

  나. 내 VI에서 추가된 코드가 기본 VI에 반영되었음

    1) 감소 코드 추가

qtcreator에서 ros 프로젝트를 생성하고 방식을 catkin_make로 지정해두어도

 

catkin_make로 되지 않을 경우가 있다.(projects->ros manager>build system을 보면 catkintools로 되어 있었음)

 

이럴 때,

 

projects(설정) -> ros manager > build system 에서 catkintools -> catkinmake로 변경

 

그리고 하단에 add catkin step에서 catkinmake를 생성하고 우선순위를 catkintools보다 위로 변경

 

그리고 기존의 catkin_ws의 build 디렉토리를 삭제해야함

 

또는 build system을 catkintools로 사용할 경우

 

sudo apt install python-catkin-tools해서 catkintools를 사용하면 됨

0. 삼성 크롬북4

 

1. 개발자모드로 진입(부트화면에서 ctrl + D)

 

2. 크롬쉘 탭 생성(ctrl + alt + T)

 

3. crouton 다운로드

 

4. # sh -e ./crouton -r xenial -t unity,keyboard

 

  가. keyboard : 단축키 사용을 위해 반드시 설치

 

5. 터미널이나 기타 부족한 부분이 있음

 

  가. # sudo apt install unity-desktop

 

    1) 용량은 크고, 쓸데없는 프로그램이 많지만 기본 16.04 우분투 환경과 비슷함

 

    2) 설치만 하면 한글 지원됨, 설정의 언어 지원부분에서 언어팩을 설치하려고 할 경우 에러가 남

 

  나. # sudo apt install software-center

 

    1) 설치 이후에는 언어팩 지원에서 에러가 발생하지 않음

 

  다. # sudo apt install bash-completion

 

    1) 설치 이후 탭 2번으로 명령어 자동완성이 됨

0. 상황 및 준비

  가. 윈도우 virtualbox에서 uuid 중복 발생

    1) 미리 만들어둔 디스크 이미지를 복사해서 사용했을 경우

 

1. vdi의 중복

  가. uuid를 생성

    1) WSL 또는 리눅스에서

      가) $ uuidgen

    2) 윈도우 파워쉘에서

      가) > [guid]::NewGuid()

  나. uuid 재설정

    1) 윈도우 커맨드라인을 관리자 모드로 실행

      가) virtualbox가 설치된 디렉토리(ex: c:\Program Files\Oracle\VirtualBox)에서 실행

        (1) VBoxManage.exe internalcommands sethduuid "수정할 vdi 파일경로" 생성한 uuid

          (가) ex: c:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands sethduuid "h:\Virtual Machines\virtualbox\test.vdi" 87553b6f-5d2f-4818-b11a-dd139988be66

 

2. vbox의 중복

  가. uuid를 생성

    1) "1. vdi의 중복"과 동일하게 uuid를 생성

  나. uuid 재설정

    1) vbox와 vbox-prev를 텍스트 편집기로 실행하여

    2) <Machine uuid="{0000... 0000}" name ....>의 uuid 부분을

    3) 생성한 uuid로 변경

0. 참고사항

  가. 운영체제

    1) Ubuntu 18.04 LTS

 

1. 이전할 자료 백업 및 복사

  가. Compute Stick(이전할 자료 백업)

    1) django

      가) 파이썬 프로그램

        (1) virtualenv관련이 포함되어 있음

    2) apache2

      가) django 관련 설정

        (1) /etc/apache2/sites-available/관련설정.conf 백업

        (2) 웹서버 비활성화

          (가) $ sudo a2dissite 관련설정.conf

          (나) $ sudo service apache2 reload

 

  나. ThinkCentre M(이전 자료 복사)

    1) 원래의 디렉토리 위치와 동일하게 복사

      가) 이전하기전의 계정과 디렉토리가 동일하게 되어 있음

        (1) /홈디렉토리/계정/django/www/파이썬 웹서버 프로그램

      나) virtualenv 재구성 및 django 시험

        (1) 이전할 자료에 www/venv로 virtualenv를 구성해두었었음

        (2) venv activate는 되지만 에러가 발생함

        (3) 기존 venv 삭제 및 새로운 venv 생성 및 필수파일 추가

          (가) $ sudo apt install python3-pip (필요시)

          (나) $ pip3 install virtualenv(필요시)

          (다) $ virtualenv --python=python3 venv

          (라) 시험

            a. $ python manage.py runserver 0.0.0.0:8000

            b. database 에러 발생(필요시)

              i) $ rm db.sqlite3 or mv db.sqlite3 db.sqlite3.bak

              ii) $ python manage.py makemigrations

              iii) $ python manage.py migrate

      다) apache2 설정

        (1) 설치

          (가) $ sudo apt install apache2

          (나) $ sudo apt install libapache2-mod-wsgi-py3

        (2) 기존 설정 복사

          (가) $ sudo cp 기존설정.conf /etc/apache2/sites-available

        (3) 활성화

          (가) 기본 아파치 설정 비활성화

            a. $ sudo a2dissite 000-default.conf

          (나) 이전할 아파치 설정 활성화

            a. $ sudo a2ensite 관련설정.conf

          (다) 서버 재설정

            a. $ systemctl reload apache2

  다. 성공

0. 사전 준비사항

  가. VirtualBox에 Ubuntu 18.04 설치

  나. $ sudo apt install build-essential

 

1. DirectFB 준비

  가. $ git clone https://github.com/Distrotech/DirectFB.git

    1) git 없을 경우

      가) $ sudo apt install git

  나. $ git checkout DIRECTFB_1_6_3

    1) git checkout를 누르고 더블 탭을 하면 태그목록이 뜸

  다. $ ./autogen.sh

    1) 일부 프로그램이 없을 경우

      가) $ sudo apt install libtool autoconf automake

    2) flux 에러 생길 경우

      가) $ git clone https://github.com/Distrotech/flux.git

      나) $ ./autogen.sh

        (1) AC_MSG에러 생길 경우

          (가) $ sudo apt install pkg-config

      다) $ ./configure

      라) $ make

      마) $ sudo make install

  라. $ ./configure --with-tests

    1) --with-tests 예제 파일을 생성함

  바. $ make

  사. $ sudo make install

  아. $ dfbtest_fillrect

    1) 공유라이브러리 로딩에러시

      가) $ sudo ldconfig

    2) /dev/fb0 에러 발생시

      가) $ sudo usermod -a -G video 사용자계정

      나) 로그아웃을 했다가 다시 로그인을 해야지 적용됨

    3) /dev/tty0 에러 발생시

      가) 홈디렉토리에 설정파일 생성

      나) $ vi ~/.directfbrc

        1) mode=800x600

          (가) 화면 크기

        2) system=x11

          (나) X윈도우 환경으로 출력

    4) 프로그램 실행은 되지만 화면 출력은 안될 경우

      가) $ sudo apt install libgles2-mesa-dev

      나) $ ./configure --with-gfxdrivers='gles2'

      다) $ make

      라) $ sudo make install

0. 필요사항

  가. 팀뷰어로 원격제어할 경우 모니터가 없을 경우 화면이 검게 표시됨

  나. 가상 화면을 만들어서 가상 화면을 디스플레이함

  다. 가상 모니터를 만들 경우 실제 모니터를 연결해도 표시가 안됨

    1) xorg.conf를 삭제, 이동 또는 이름을 변경하면 됨(ex:xorg.conf.bak)


1. 가상 모니터 드라이버 설치

  가. $ sudo apt-get install xserver-xorg-video-dummy

  나. 아래의 파일을 xorg.conf 로 생성

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection
 
Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection
 
Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1024x800"
    EndSubSection
EndSection
cs

  다. $ cp xorg.conf /usr/share/X11/xorg.conf.d

  라. 재부팅

0. 필요사항

  가. ubuntu 기준

  나. /var/log


1. syslog(messages)

  가. 일반 로그


. auth.log

  가. 사용자 로그인 및 인증 로그


. apport.log

  가. 애플리케이션 크래시 로그


. bootstrap.log

  가. 관련정보 부족으로 정확한 정보인지 모호함

  나. 데비안 시스템 설치관련 로그

  다. cdebootstrap가 생성


. btmp

  가. 로그인 실패 정보 로그

  나. $ last -f /var/log/btmp 사용


. dpkg.log

  가. dpkg 패키지 관련 로그


. faillog

  가. 로그인 실패 관련 로그

  나. ssh 실패는 확인 안됨

  다. 정확인 로그정보를 모르겠음

  라. $ faillog 명령어 사용


. kern.log

  가. 커널 관련 로그


. lastlog

  가. 마지막 로그인 관련 로그

  나. $ lastlog 명령어 사용


. wtmp

  가. 로그인 정보 로그

  나. $ last -f /var/log/wtmp 사용


0. 준비사항

  가. ubuntu 18.04


1. 설치

  가. $ sudo apt update && sudo apt install mariadb-server mariadb-client -y


2. 설정

  가. 보안

    1) $ sudo mysql_secure_installation

      가) root 패스워드 변경, 익명유저 제거, root 원격 로그인, 테스트 db 삭제, 권한 테이블 리로드 설정

  나. 외부접속허용(3306포트)

    1) $ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

      가) [mysqld] 섹션의 bind-address = 127.0.0.1 -> bind-address = :: 으로 변경

    2) $ sudo systemctl restart mysql <-- 재시작

  나. 원격접속권한(root)

    1) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

 FLUSH PRIVILEGES;

0. 준비사항

  가. Ubuntu

  나. 참고 사이트

    1) https://github.com/randy3k/RemoteSubl


1. rsub 설치 및 실행

  가. 서버측 설치

    1) $ curl -o rsubl https://raw.githubusercontent.com/aurora/rmate/master/rmate

       $ curl -o rsubl https://raw.githubusercontent.com/kajuha/rmate-python/master/bin/rmate

    2) $ chmod +x rsubl

    3) $ sudo mv rsubl /usr/local/bin

  나. 로컬측 설치

    1) sublime text의 Package Control에서 RemoteSubl을 설치

  다. 로컬측 실행

    1) ssh 접속

      가) ssh -R 52698:localhost:52698 서버ID@서버주소

      가) ssh -R 52698:127.0.0.1:52698 서버ID@서버주소

        (1) 예 : ssh -R 52698:localhost:52698 user@google.com

        (1) 예 : ssh -R 52698:127.0.0.1:52698 user@google.com

        (2) 실행측의 .ssh/config 파일안에 아래를 적으면 위의 원격을 매번 안쳐도 됨

             특정 호스트만 적용하려면 * -> 아이피주소로 변경하면 됨

          (가) Host *

          (나) RemoteForward 52698 127.0.0.1:52698

    2) 서브라임 텍스트 실행

    3) ssh에서 rsubl 편집할 파일명

      가) 예 : rsubl test.txt

0. 준비사항

  가. Ubuntu 18.04.1 Server


1. 상황

  가. 콘솔에서 virtualenv를 설치하려고 함

    1) $ sudo apt install virtualenv

  나. 패키지를 찾을 수 없다는 에러가 발생


2. 해결

  가. /etc/apt/sources.list의 마지막에 universe를 추가함

    ex) 기존 : deb http://archive.ubuntu.com/ubuntu bionic main

         수정 : deb http://archive.ubuntu.com/ubuntu bionic main universe


3. 의미

  가. 우분투 소프트웨어 저장소의 종류

    1) Main - Officially Supported, Open-Source Software

    2) Restricted – Officially Supported, Closed-Source Software

    3) Universe – Community-Maintained, Open-Source Software

    4) Multiverse – Unsupported, Closed-Source and Patent-Encumbered Software


+ Recent posts