본문 바로가기
프로그래밍/OS

Red Hat Enterprise Linux for Real Time 8 환경구성하기

by 남생 namsaeng 2022. 4. 11.
반응형

1. Clock 확인

 

[root@localhost ~]# cat /etc/sysconfig/clock
ZONE="Asia/Seoul"

 

2. Clock 설정

  • 차례로 나오는 선택지에 번호 입력 후 Enter
  • 첫 번째 선택지: 지역(Continent 또는 Ocean) 선택, 두 번째 선택지: 나라 선택
[root@localhost ~]# tzselect

 

3. profile이나 .bash_profile 등 쉘 초기화 파일에 timezone을 추가

  • 서버 시스템 시간을 설정하려고 하면 ~/.bashrc에 추가한다.
  • 개별 사용자에 대한 시간을 설정하려고 하면 ~/.bash_profile에 추가한다. // 원격 서버와 이용하는 개별 사용자가 다른 Timezone에 있고 개별 사용자의 Local Time 설정이 중요할 때, e.g. 특정 서비스를 이용하는 글로벌 사용자의 이용내역(시간 포함)을 DB에 넣으려고 할 때
  • 로그인할 때마다 시간을 로드하고 싶으면 ~/.profile에 추가한다.
export TZ='Asia/Seoul'

 

4. 서브스크립션 등록

  • 서브스크립션을 등록할 때 날짜가 안맞으면은 액세스가 거부될 수 있다.
[root@localhost ~]# subscription-manager register
등록 대상 : subscription.rhsm.redhat.com:443/subscription
사용자 이름 : ####
암호 :
서버 ID를 확인할 수 없음 : [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)

 

  • timedatectl로 날짜 및 시간을 설정한다
[root@localhost ~]# timedatectl set-time 2022-05-20
[root@localhost ~]# timedatectl set-time 09:38:00

 

 

  • redhat.com에서 만든 아이디와 비밀번호를 등록한다.
[root@localhost ~]# subscription-manager register --auto-attach
또는
[root@localhost ~]# subscription-manager register --username [USERNAME] --password [PASSWORD] --auto-attach

 

5. 잘 등록되었는지 확인

[root@localhost ~]# subscription-manager identity

 

6. 업데이트 및 확인

[root@localhost ~]# yum update
[root@localhost ~]# yum check-update

 

7. OS 설치상태 확인

[root@localhost ~]# subscription-manager list
+-------------------------------------------+
    설치된 제품 상태
+-------------------------------------------+
제품 이름: Red Hat Enterprise Linux for Real Time
제품 ID:   287
버전:      8.5
아키텍처:  x86_64
상태:      알 수 없음
상태 정보: 
시작:      2021년 08월 13일
종료:      2022년 08월 13일

제품 이름: Red Hat Enterprise Linux for x86_64
제품 ID:   479
버전:      8.5
아키텍처:  x86_64
상태:      알 수 없음
상태 정보: 
시작:      2021년 08월 13일
종료:      2022년 08월 13일

-------------------------------

 

8. dnf 업데이트

  • RHEL8에서 "dnf"는 "yum"에서 발생하는 비효율적인 의존성 관리의 기술적 문제를 해결하였다.
[root@localhost ~]# dnf update

 

9. RealTime 설치하기

[root@localhost ~]# yum repolist all	// 레포지터리 및 상태 확인
[root@localhost ~]# subscription-manager repos --enable rhel-8-for-x86_64-rt-rpms	// 리얼타임 설치를 위해 관련 레포지토리 활성화
[root@localhost ~]#  yum groupinstall RT	// Real Time package group 설치
[root@localhost ~]#  yum install tuna		// 스케줄링, 스레드 우선순위, IRQ 핸들링, CPU 코어 및 socker isolation을 위해 Tuna tool 설치
[root@localhost ~]#  rpm -ql rt-setup		// rpm -ql 명령을 통해 Real Time package group 설치 위치와 구성요소가 성공적으로 설치되었는지 확인 가능
[root@localhost ~]#  uname -a			// 리눅스 시스템 정보 확인

 

10. 소프트웨어 번들 설치

[root@localhost ~]# subscription-manager repos --enable rhel-8-for-$(uname -i)-baseos-debug-rpms
[root@localhost ~]# subscription-manager repos --enable rhel-8-for-$(uname -i)-baseos-source-rpms
[root@localhost ~]# subscription-manager repos --enable rhel-8-for-$(uname -i)-appstream-debug-rpms

[root@localhost ~]# subscription-manager repos --enable rhel-8-for-$(uname -i)-appstream-source-rpms
// 개발환경을 구성하는 데 필요한 레퍼지토리 활성화, baseOS: 운영체제의 기반이 되는 기본 코어 세트를 제공하는 데 사용, Appstream: 운영 서비스에서 수행 가능한 애플리케이션, 런타임언어 및 데이터베이스 등이 포함.

[root@localhost ~]# yum groupinstall "Development Tools"
// "Development Tools"는 yum 그룹으로 각 응용 프로그램을 별도로 설치할 필요 없이 한 번에 설치할 수 있는 미리 정의된 소프프트웨어 번들이다(e.g. gcc, flex, autoconf, etc).

 

11. 기본 개발언어 및 도구 설치

[root@localhost ~]# yum install llvm-toolset
// llvm-toolset은 llvm, clang, clang-tool-extra 및 lldb 패키지를 가져오는 메타패키지이다.

[root@localhost ~]# yum install gcc-gfortran
// gfortran은 gcc 일부인 GNU Fortran 컴파일러다.

[root@localhost ~]# yum install gdb valgrind systemtap ltrace strace
// gdb: GNU 소프트웨어 시스템을 위한 기본 디버거, valgrind: Linux-x86용 실행파일의 디버깅과 프로파일링을 위한 오픈소스 툴, systemtap: 실행중인 리눅스 커널 기반 운영체제들을 동적으로 인스트루먼팅하기 위한 스크립트 언어이자 툴, ltrace: 사용자 공간 애플리케이션의 공유 라이브러리에 대한 호출을 보여주는데 사용되는 리눅스의 디버깅 유틸리티, strace: 진단, 디버그, 지시적 사용자 공간 유틸리티이다.

[root@localhost ~]# yum install yum-utils
// yum 저장소 관리, 디버그 패키지 설치, 소스 패키지, 저장소 및 관리의 확장 정보를 위한 도구 및 프로그램 모음

 

12. 커널기반 개발 패키지 설치

 

[root@localhost ~]# dnf erase kernel-debuginfo
// 패키지 설치 전에 파일끼리 충돌이 일어날 수 있기 때문에 kernel-debuginfo를 지움

[root@localhost ~]# stap-prep
// 현재 실행중인 커널 또는 선택적으로 사용자가 제공한 커널버전과 일치하는 커널 헤더, 디버그 기호 및 빌드 도구를 설치하여 systemtap 사용을 위해 시스템 준비

[root@localhost ~]# yum install -y kernel-devel-4.18.0-240.el8.x86_64
// 커널 헤더 설치

[root@localhost ~]# yum install -y kernel-devel-`uname -r`
// 현재 커널의 릴리즈 버전에서 업그레이드 가능한 커널 설치

[root@localhost ~]# yum update
// 커널이 업그레이드 되었기 때문에 패키지도 업그레이드 해주어야 함

[root@localhost ~]# yum install perf papi pcp-zeroconf valgrind strace sysstat systemtap
// perf: 명령 행에서 액세스하며 여러 부속 명령을 제공하는 사용자 공간 제어 유틸리티, 
// papi: 성능 응용 프로그래밍 인터페이스, pcp-zeroconf: 최소한의 오버헤드로 시스템 수준 
// 성능 데이터의 포괄적인 장기 로깅이 필요한 고객지원 환경에서 가장 일반적으로 필요한 PCP 기능의 
// 설치 및 구성을 단순화 하기 위한 것, sysstat: 리눅스용 성능 모니터링 도구 모음, 
// 나머지 것도 업그레이드 된 커널에 맞춰서 다시 설치

 

13. c++ 설치

[root@localhost ~]# sudo yum install libstdc++-static 
// g++ : cpp파일에서 c와 c++이 혼용되서 쓰여도 컴파일가능(.c도 컴파일 가능).

[root@localhost ~]# yum -y install gcc-c++ 
// gcc : .c면 c언어만 써야하고, .cpp이면 c++언어만 써야 컴파일가능.

 

14. 일반 사용자에게 관리자 권한 주기

[root@localhost ~]# visudo /etc/sudoers


## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
namsaeng ALL=(ALL) ALL

 


 

** 위에서 기본적인 c++ 개발환경을 구성했다면, 아래에서는 cpp_redis 서버 구성을 위해 필요한 절차를 나타낸다.

 

15. CMake 설치

  • CMake 사이트에서 파일을 받은 후 아래의 명령어 실행


https://cmake.org/download

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org

 

[nam@localhost ~]$ tar zxf cmake-3.21.3.tar.gz
[nam@localhost ~]$ cd cmake-3.21.3
[nam@localhost ~]$ ./bootstrap && make && sudo make install
[nam@localhost ~]$ yum install gcc gcc-c++ kernel-devel make
[nam@localhost ~]$ env CC=cc CXX=CC ./bootstrap

 

16. cpp_redis 설치

  • github에서 cpp_redis를 받아서 압축을 풀고 최상위 디렉터리로 이동
[nam@localhost cpp_redis-master]$ sudo mkdir build
[nam@localhost cpp_redis-master]$ cd build
[nam@localhost cpp_redis-master]$ sudo cmake .. -DBUILD_EXAMPLES=true
[nam@localhost cpp_redis-master]$ vi ~/.bashrc

export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
export REDIS=/usr/include/c++/8/cpp_redis-master
. "$HOME/.cargo/env"


[nam@localhost cpp_redis-master]$ cd redisdb
[nam@localhost redisdb]$ sudo cp redis-server /usr/local/bin/
// 이제 쉘에서 경로 상관없이 redis-server 가능함

[nam@localhost redisdb]$ sudo cp redis-cli /usr/local/bin/
// 이제 쉘에서 경로 상관없이 redis-cli 가능함

[nam@localhost redisdb]$ sudo firewall-cmd --zone=public --add-service=redis --permanent
[nam@localhost redisdb]$ sudo firewall-cmd --reload
// redis 방화벽 오픈
반응형

댓글