일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 매터
- 오블완
- 국내주식
- 현대통신
- 해외주식
- ConnectedHomeIP
- 퀄컴
- 파이썬
- esp32
- 코스피
- 배당
- 나스닥
- 힐스테이트 광교산
- Python
- homebridge
- 티스토리챌린지
- RS-485
- Espressif
- 애플
- MQTT
- 월패드
- matter
- 엔비디아
- raspberry pi
- Bestin
- Home Assistant
- 공모주
- Apple
- 홈네트워크
- 미국주식
- Today
- Total
YOGYUI
Linux :: Real-Time Ubuntu 22.04 LTS (PREEMPT_RT) 본문
1. Introduction
로봇공학을 전공했거나 실무에 적용하고 있는 개발자라면 적어도 한번쯤은 EtherCAT(이더캣)을 사용해봤을 것이다
서보 모터 드라이버, I/O 보드 등 이더캣 슬레이브(Slave)를 구동하기 위해서는 이더캣 마스터(Master) 디바이스가 필요한데 개발 과정에서는 이더캣 개발사인 Beckhoff 등에서 판매(국내 모터 업체도 꽤 많다)하는 마스터 PC 혹은 마스터 PCI 슬롯 카드를 구매해서 사용하는게 일반적이다
좀 더 deep하게 모든 모듈을 내재화하고자하는 회사에서는 이더캣 마스터 모듈 자체도 개발하게 되는데, 일반적으로 Real-Time Linux를 OS로 사용하고 이더캣은 RT-LAB의 SOEM이나 EtherLab의 IgH EthreCAT Master 등 오픈소스 코드를 기반으로 코드를 구현하게 된다 (내가 하고 있는 업무 중 일부...)
※ 이더캣 프로토콜은 빠른 통신 속도보다는 안정적인 통신 주기를 필요로 한다 (주기는 보통 125us~1ms 사이)
Real-Time Linux는 일반적으로 우리가 구할 수 있는 Ubuntu에 Real-Time 커널(Kernel) 패치를 통해 구현해야 하며, RT-Preempt 혹은 Xenomai 2개 방식이 널리 사용되는 방식이다
이더캣이 워낙에 글로벌하게 사용되는 프로토콜이다보니 RT-Linux를 구축하는 방법에 대해서도 조금만 구글링해보면 자세한 가이드가 워낙에 잘 나와있어서 따라할 수 있긴 한데... 리눅스 커널에 대한 기초적인 이해가 없으면 "내가 대체 뭘 하고 있는거지?"라는 생각이 들게 되고, 구축 과정 자체가 굉장히 난해하고 복잡하다
(Ubuntu LTS 22.04에서는 커널 다운그레이드부터 해야된다...)
But!
올해(2023년) 초 Ubuntu 개발 및 배포 업체 Canonical에서 Real-Time 커널이 내장(무려 커널 5.15 버전 위에 PREEMPT_RT 패치를 적용!!)된 Real-Time Ubuntu 22.04 LTS를 출시했고, 베타 테스트 후 이제 쉽게 해당 OS를 구할 수 있다
https://ubuntu.com/blog/real-time-ubuntu-is-now-generally-available
https://www.acontis.com/en/ubuntu-linux-realtime-howto.html
링크를 보면 core22가 설치된 Ubuntu 22.04 LTS의 터미널에서 명령어 한줄로 RT 커널을 설치할 수 있다고 한다
다만 Ubuntu Pro 구독이 필요하다고 하는데, 비상업적 용도로는 무료로 구독할 수 있다고 한다
- Canonical의 core22가 설치되어 있는지 확인 (default로 설치되어 있지 않을 수 있다)
설치되어 있지 않다면 core22를 설치해주자
Pro 구독을 하지 않은 상태에서 다음 명령어를 터미널에서 입력해보자
$ sudo pro enable realtime-kernel
예상대로 Ubuntu Pro 구독이 되지 않은 상태에서는 "you need an Ubuntu Pro subscription"이라는 안내 메시지가 나오게 된다 ㅠ
비상업용도로 Ubuntu Pro를 구독한 뒤, RT 커널을 다시 설치해보자
2. Ubuntu.com 가입 및 Personal Token 발급
Ubuntu Pro는 우리가 평소에 받아쓰던 무료 Ubuntu Desktop/Server와 달리 금액을 지불하고 구매하여 사용해야 하는 OS이다 (Desktop 버전으로 최소 금액은 $25로 크게 부담스러운 금액은 아니다)
다양한 서비스 지원 여부에 따른 가격 정책은 https://ubuntu.com/pricing/pro 에서 확인할 수 있다
본 포스팅에서는 비상업적 개인 용도로 Ubuntu Pro를 사용하는 방법에 대해서 알아본다
Ubuntu Pro 홈페이지(https://ubuntu.com/pro) 대문에서 바로 'Register for personal use' 항목을 클릭
Ubuntu.com의 계정으로 로그인해야 한다
계정이 없으면 하나 만들어주자
(계정은 이메일 주소 + 이메일 인증만 거치면 쉽게 생성할 수 있다)
최초로 생성했거나, 아무것도 구독하지 않았을 경우 아래와 같은 초기화면을 볼 수 있다
- 어떠한 구입과정 없이도 계정 생성과 동시에 'Free Personal Token'이 발급된다
- PC 5대까지만 무료로 업그레이드 가능하다
3. Ubuntu Pro로 변경
Ubuntu 22.04 LTS가 설치된 상황에서 별도로 OS를 다시 설치할 필요없이 쉽게 업그레이드(?)할 수 있다
위에서 발급받은 'Free Personal Token'을 Ubuntu 22.04 터미널에서 다음과 같이 입력
※ 인터넷에 연결된 상태여야 한다
$ sudo pro attach {free personal token}
완료되면 'Software & Updates' 설정에서 Ubuntu Pro가 활성화된 것을 확인할 수 있다
활성화 후 Ubuntu Pro 페이지의 'Your subscription' 메뉴에서 Pro가 활성화된 기기 수를 확인할 수 있다
Ubuntu 최초 설치 시 Pro 활성화 여부를 default로 묻게 되는데, 여기에서 personal token을 입력해서 활성화할 수도 있다 (터미널 작업 불필요)
※ 마찬가지로 인터넷 접속 필요Token 체크 후 다음과 같이 활성화된다
4. Real-time kernel 설치
Ubuntu Pro 활성화 후 다시 RT 커널을 설치해보자
$ sudo pro enable realtime-kernel
Ubuntu Pro 활성화 여부 체크 후 두 개의 경고 메시지가 출력된다
- 'Livepatch'를 비활성화 (키보드 y 입력)
- 리눅스 커널이 바뀌며, 원상복구를 위해서는 수동으로 작업해야 한다 (키보드 y 입력)
설치 완료 후 'Real-time kernel enabled' 메시지가 출력되며, 리부팅을 하라는 안내메시지가 최종적으로 출력된다
재부팅 후 터미널에서 uname 명령어를 통해 커널 버전을 확인해보자
$ uname -r
2023년 5월 8일 기준 RT 리눅스 커널은 5.15.0-1037-realtime이 설치된다
5.15 기반 Real-Time 커널을 이렇게나 쉽게 설치할 수 있다니... 감개무량하다 ^^;
5. Next Job
다른 블로그를 보면 커널 파라미터 세팅에 따라 EtherCAT Cycle Time의 안정성 여부가 크게 달라진다고 한다
PC를 오롯이 EtherCAT Master 디바이스로 활용하려면 커널 파라미터 최적화 과정이 필요한 것 같은데, 이에 대해서는 다음 포스팅에서 알아보도록 하자
※ RT 커널 원상복구 및 Ubuntu Pro detach 방법에 대해서도 다른 글에서 알아보도록 한다
'Software > Etc' 카테고리의 다른 글
macOS Sequoia(세쿼이아) - iPhone 미러링 기능 (5) | 2024.10.11 |
---|---|
Apple Silicon 맥북에서 Ubuntu 22.04 구동하기 (VMware) (0) | 2024.04.21 |
Jenkins::Pipeline - Slave node 오프라인 시 Stage 무시하기 (0) | 2023.02.08 |
Linux - USB Device 접근권한 영구변경 (chmod permanently) (0) | 2022.04.04 |
Windows Batch Script::배치 파일의 경로 얻기 (0) | 2021.11.12 |