본문으로 바로가기

PC 교체를 하면서 우분투 18.04에서 ALi 및 STM 개발환경을 구성하면서 삽질한 것을 나중에 또 삽질할 것을 방지 차원에서 블로그에 정리한다. 우분투 18.04 최소 설치 기준으로 정리한 내용이다.

1. Shell 변경

전통적으로 우분투는 Dash Shell을 기본으로 사용하고 있으며 이것을 Bash Shell로 변경하도록 하자. 하기 명령어를 입력 후, Dialog에서 <No>를 선택하면 된다.

sudo dpkg-reconfigure dash

2. 개발 패키지 설치

ALi 및 STM 개발 환경을 구성할 때, 반드시 미리 설치되어 있어야 하는 패키지이다.

sudo apt install build-essential m4 cmake python git

우분투 18.04 버전의 gcc 버전은 7.3.x 버전인데, 이 버전으로 ALi 개발 환경을 빌드할 경우 toolchain부터 여러 패키지에서 빌드 에러가 발생한다. 시간이 많이 있다면 하나씩 문제점을 수정하겠지만 시간이 없는 관계로 우분투 16.04에서 사용된 gcc 5.x 버전을 우분투 18.04에 설치하였다.

3. 32bit 공유 라이브러리 설치

임베디드 시스템을 개발할 때 꼭 필요한 32bit 공유 라이브러리를 설치해야 한다. 다 설치할 필요는 없고, ALi 및 STM에서 필요한 공유 라이브러리만 설치하도록 한다.

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install multiarch-support:i386
sudo apt install libc6:i386 libstdc++6:i386 zlib1g:i386 libc6-dev-i386

STM 개발 환경에서는 더 많은 라이브러리를 설치해야 하지만 STM는 단종된 모델로 더 이상 개발하지 않고 OS21 제품에 대한 follow-up을 하기 때문에 JTAG 연결에 필요한 라이브러리만 추가로 설치하도록 한다.

sudo apt install libx11-6:i386 libncurses5:i386

4. 개발에 필요한 패키지 및 라이브러리 설치

32bit 공유 라이브러리 이외에도 여러 공유 라이브러리가 필요로 하며 하기의 라이브러리를 추가로 설치해야 한다.

sudo apt install libncurses5-dev libssl1.0-dev dos2unix subversion

libssl은 openssl 라이브러리인데, 1.1으로 버전이 올라가면서 하위 버전과 호환성을 위해 최신 라이브러리와 구분하였다. 우리 시스템은 우분투 16.04 버전의 libssl을 사용하여 개발하였기 때문에 libssl1.0-dev를 설치해야 한다.

5. NFS 설치 및 설정

NFS Server를 설치해야 할 경우 하기의 패키지만 설치하면 된다. 만약 NFS Client도 사용할 경우 nfs-common 패키지도 함께 설치하도록 한다.

sudo apt install nfs-kernel-server

Client에서 마운트하여 사용할 최상위 디렉토리를 /etc/exports 파일에 설정하도록 한다.

/media/gon/proj *(rw,sync,no_subtree_check,no_root_squash)

다음 설정은 STB 방화벽 설정으로 인해 NFS에서 사용하는 포트를 해제하는 것이다. 방화벽 설정이 없다면 하기 사항은 적용할 필요가 없으나 내가 개발중인 제품은 모두 방화벽이 기본 설정에 포함되기 때문에 하기 사항을 적용해야 한다.


다음 각 파일의 패치 내용을 적용하도록 한다.

diff -Nura a/etc/services b/etc/services
--- a/etc/services  2018-08-24 10:29:50.452480428 +0900
+++ b/etc/services  2018-08-24 10:29:21.104819177 +0900
@@ -610,3 +610,9 @@
 fido       60179/tcp           # fidonet EMSI over TCP 
 
 # Local services
+status      4000/tcp            # rpc.statd tcp port
+status      4000/udp            # rpc.statd udp port
+mountd      4002/tcp            # mountd tcp port
+mountd      4002/udp            # mountd udp port
+rquotad     4003/tcp            # rpc.rquotad tcp port
+rquotad     4003/udp            # rpc.rquotad udp port


diff -Nura a/etc/default/nfs-kernel-server b/etc/default/nfs-kernel-server
--- a/etc/default/nfs-kernel-server	2018-08-24 10:36:20.939705758 +0900
+++ b/etc/default/nfs-kernel-server	2018-08-24 10:29:21.124818947 +0900
@@ -9,7 +9,7 @@
 # a fixed port here using the --port option. For more information,
 # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
 # To disable NFSv4 on the server, specify '--no-nfs-version 4' here
-RPCMOUNTDOPTS="--manage-gids"
+RPCMOUNTDOPTS="--no-nfs-version 4 -p 4002 -g"

그리고 /etc/modprobe.d/options.conf 파일을 하기의 내용으로 생성하도록 한다.

options lockd nlm_udpport=4001 nlm_tcpport=4001

위의 설정이 완료되었다면, NFS를 다시 시작하도록 하자.

sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart

하기의 명령어를 사용하여 NFS에서 사용하는 포트가 4002로 제대로 할당되었는지 확인해야 한다.

rpcinfo 명령어를 사용하여 NFS가 4002 포트를 사용하는지 확인이 되면, 방화벽에 따른 NFS 설정은 완료된 것이다.


'개발일기 > 팁 & 테크' 카테고리의 다른 글

Binary to C - bin2c  (0) 2018.12.06
Local IP 알아내기  (0) 2018.09.19
우분투 18.04 개발 환경 구성  (0) 2018.08.23
데몬에서 강제 프린트 방법  (0) 2018.08.09
GStreamer 1.0 개발환경 구성  (0) 2018.08.05
lirc - ir record 방법  (0) 2018.06.29

댓글을 달아 주세요