Ubuntu를 Console/Text 모드로 부팅하기

로봇에 설치된 Ubuntu의 경우, 기존과 같이 Gnome으로 부팅하면 부팅시간도 오래 걸릴뿐 아니라, 기본 상태에서의 램 소모량도 크기 때문에 Console/Text 모드로 부팅하는 것이 유리하다.

이를 변경하기 위해선, 간단히 Terminal을 열고 다음과 같이 입력하고 재부팅한다.

$ sudo systemctl set-default multi-user.target

다시 Graphical Mode로 원상복구 하려면, Terminal에서 다음과 같이 입력하고 재부팅한다.

$ sudo systemctl set-default graphical.target

끝.

Set CPU governor policy always “Performance” on Ubuntu

$ sudo apt-get install cpufrequtils

/etc/default/cpufrequtils 파일 생성. 있으면 수정.

$ sudo nano /etc/default/cpufrequtils

GOVERNOR="performance"
MIN_SPEED="2000MHz"

MIN_SPEED는 각자의 CPU 성능에 따라 설정함.

ondemand 서비스를 비활성화

$ sudo systemctl disable ondemand

파일이 생성되면, cpufrequtils 서비스를 재실행

$ sudo systemctl restart cpufrequtils

이제 cpufreq-info를 통해 확인해보면…

$ cpufreq-info                                                                                                                                                         
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009                                                                                                                                          
Report errors and bugs to cpufreq@vger.kernel.org, please.                                                                                                                                              
analyzing CPU 0:                                                                                                                                                                                        
  driver: intel_pstate                                                                                                                                                                                  
  CPUs which run at the same hardware frequency: 0                                                                                                                                                      
  CPUs which need to have their frequency coordinated by software: 0                                                                                                                                    
  maximum transition latency: 4294.55 ms.                                                                                                                                                               
  hardware limits: 800 MHz - 5.10 GHz                                                                                                                                                                   
  available cpufreq governors: performance, powersave                                                                                                                                                   
  current policy: frequency should be within 3.00 GHz and 5.10 GHz.                                                                                                                                     
                  The governor "performance" may decide which speed to use                                                                                                                              
                  within this range.                                                                                                                                                                    
  current CPU frequency is 4.91 GHz.                                                                                                                                                                    
analyzing CPU 1:                                                                                                                                                                                        
  driver: intel_pstate                                                                                                                                                                                  
  CPUs which run at the same hardware frequency: 1                                                                                                                                                      
  CPUs which need to have their frequency coordinated by software: 1                                                                                                                                    
  maximum transition latency: 4294.55 ms.                                                                                                                                                               
  hardware limits: 800 MHz - 5.10 GHz                                                                                                                                                                   
  available cpufreq governors: performance, powersave                                                                                                                                                   
  current policy: frequency should be within 3.00 GHz and 5.10 GHz.                                                                                                                                     
                  The governor "performance" may decide which speed to use                                                                                                                              
                  within this range.                                                                                                                                                                    
  current CPU frequency is 4.73 GHz.           

위와 같이 performance 모드로 셋팅되어 있고, CPU frequency가 올라가 있음을 확인할 수 있음.

Ubuntu 20.04에서 Blender 최신 버전 설치

Blender PPA 추가

$ sudo add-apt-repository ppa:thomas-schiex/blender

설치

$ sudo apt update
$ sudo apt install blender

최초 설치시 라이브러리 관련 문제로 실행되지 않음. 의존 라이브러리 설치 필요

$ sudo apt install libllvm6.0

설치 완료.

chrony를 이용한 로컬 네트웍 기기 간 시간 동기화

리눅스 시스템에서 시간 동기화를 위해 ntp를 많이 사용한다. ntp를 이용하여 기기간 시간 동기화를 할 수도 있고, 인터넷에 많은 방법이 나와 있다.

chrony는 ntp의 개선 버전이다. 사용 방법도 ntp와 유사하고, 심지어 ntp와 호환도 된다.

로봇 시스템의 특성상 인터넷에 연결되어 있지 않고, 로컬 네트웍 망만 구축되어 있는 경우, 하나의 PC를 기준으로 삼아 다른 기기의 시간을 동기화 할 수 있다.

작업 순서


기준 PC

chrony 설치

$ sudo apt install chrony

서버 설정

$ sudo vi /etc/chrony/chrony.conf 

pool <기준PC IP주소> iburst maxsources 1

keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift

local stratum 10
allow 192.168.0.0/16

logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3

chrony 데몬 서비스 시작

$ sudo systemctl restart chronyd.service

chrony 서비스 시작

$ sudo systemctl restart chrony.service

chrony 서비스 동작 확인

$ watch chronyc tracking

Every 2.0s: chronyc tracking

Reference ID    : C0A80B36 (byeongkyu-XPS-17-9700)
Stratum         : 11
Ref time (UTC)  : Wed Apr 14 06:19:50 2021
System time     : 0.000000000 seconds slow of NTP time
Last offset     : +0.000002941 seconds
RMS offset      : 0.000002941 seconds
Frequency       : 7.161 ppm slow
Residual freq   : -0.063 ppm
Skew            : 9.612 ppm
Root delay      : 0.000010132 seconds
Root dispersion : 0.000493094 seconds
Update interval : 0.0 seconds
Leap status     : Normal


슬레이브 PC

chrony 설치는 동일.

설정파일

$ sudo vi /etc/chrony/chrony.conf

pool <기준PC IP주소> iburst maxsources 1

keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift

logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3

chrony 데몬 서비스 시작

$ sudo systemctl restart chrony.service

chrony 동작 확인

$ watch chronyc tracking

Every 2.0s: chronyc tracking
 
Reference ID    : C0A80B36 (192.168.11.54)
Stratum         : 12
Ref time (UTC)  : Wed Apr 14 06:26:28 2021
System time     : 0.000805050 seconds fast of NTP time
Last offset     : +0.001296174 seconds
RMS offset      : 0.005739228 seconds
Frequency       : 2.246 ppm slow
Residual freq   : +0.130 ppm
Skew            : 2.884 ppm
Root delay      : 0.009987777 seconds
Root dispersion : 0.003204302 seconds
Update interval : 260.5 seconds
Leap status     : Normal

끝.!

screen 사용 방법 정리

원격의 로봇에 ssh로 접속하여 작업을 수행할 경우,

  • 여러 개의 터미널이 필요하다면?
  • 어떤 작업을 수행해 놓고, ssh 접속을 끊고 싶다면? (물론 작업은 계속 수행하도록)

여러개의 터미널은 tmux로도 해결이 가능하지만, 작업을 수행해 놓고 ssh 접속만 끊고 싶다면 screen이 해결 방법이 될 수 있음.

설치

$ sudo apt install screen

별다른 설정은 필요하지 않고, 단순히 명령만 입력하면 실행. 옵션이 다음과 같이 있지만, 몇 개만 알면 사용하는데는 문제 없음.

$ screen -h
 Use: screen [-opts] [cmd [args]]
  or: screen -r [host.tty]
 Options:
 -4            Resolve hostnames only to IPv4 addresses.
 -6            Resolve hostnames only to IPv6 addresses.
 -a            Force all capabilities into each window's termcap.
 -A -[r|R]     Adapt all windows to the new display width & height.
 -c file       Read configuration file instead of '.screenrc'.
 -d (-r)       Detach the elsewhere running screen (and reattach here).
 -dmS name     Start as daemon: Screen session in detached mode.
 -D (-r)       Detach and logout remote (and reattach here).
 -D -RR        Do whatever is needed to get a screen session.
 -e xy         Change command characters.
 -f            Flow control on, -fn = off, -fa = auto.
 -h lines      Set the size of the scrollback history buffer.
 -i            Interrupt output sooner when flow control is on.
 -l            Login mode on (update /var/run/utmp), -ln = off.
 -ls [match]   or
 -list         Do nothing, just list our SockDir [on possible matches].
 -L            Turn on output logging.
 -Logfile file Set logfile name.
 -m            ignore $STY variable, do create a new screen session.
 -O            Choose optimal output rather than exact vt100 emulation.
 -p window     Preselect the named window if it exists.
 -q            Quiet startup. Exits with non-zero return code if unsuccessful.
 -Q            Commands will send the response to the stdout of the querying process.
 -r [session]  Reattach to a detached screen process.
 -R            Reattach if possible, otherwise start a new session.
 -s shell      Shell to execute rather than $SHELL.
 -S sockname   Name this session .sockname instead of ...
 -t title      Set title. (window's name).
 -T term       Use term as $TERM for windows, rather than "screen".
 -U            Tell screen to use UTF-8 encoding.
 -v            Print "Screen version 4.08.00 (GNU) 05-Feb-20".
 -wipe [match] Do nothing, just clean up SockDir [on possible matches].
 -x            Attach to a not detached screen. (Multi display mode).
 -X            Execute  as a screen command in the specified session.

실행시 screen 세션 이름 설정하기. 기본으로 부여되는 이름이 있지만 외우기 어려우므로, 사용자가 직접 지정 가능.

$ screen -S <session-name>

실행되어 있는 상태에서 세션과의 연결 끊기

Ctrl + A, d

실행되어 있는 세션에 다시 연결하기

$ screen -r <session-name>

실행되어 있는 세션 리스트 보기

$ screen -ls

팁.

screen를 실행해서 들어가면, 터미널 설정이 변경되어 PS1이 리셋되는 현상이 있는데, 이를 방지하려면 ~/.screenrc 파일에 다음과 같이 입력

$ vi ~/.screenrc

term screen-256color

screen를 실행하면, 이전 화면을 보는게 지원안됨. screen 내부 명령으로 해결해야 되는데,

Ctrl + A, Esc

이 상태에서, PgUp/PgDown, Up/Down으로 스크롤 가능.

끝!.