Yocto

#rootfs #clamav #swap

jaeuu 2024. 6. 24. 23:11

자, 오늘은 그동안 미뤄놨던 일기를 쓴다.

 

크게 두 가지 이슈가 있었다.

 

그 중 먼저 한 가지를 적어본다.

 

난 그간에 clamav 포팅을 완료하였고 rootfs 소유권 수정을 통해 freshclam 수행 시 clamav 게정 접근 이슈를 해결하였다.

 

이후 freshclam을 통해 database로 부터 main.cvd, daily.cvd, 하나는 기억이 안나지만 세 개의 .cvd 파일을 다운받았고 /var/lib/clamav  경로 아래에 설치하였다. 

 

이후 clamscan을 통해 해당 db와의 비교를 통해 특정 디렉터리로부터 순환하여 파일 및 디렉터리들의 바이러스 유무를 검사하는 것이었다.

 

그러나!!!!!!!

 

98%..99%... 검사가 진행되다가 oom killer가 등장하는 것이 아닌가!

 

oom killer... 자세히는 모르지만 시스템에 치명적인 경우에 등장하는 것으로 알고 있다.

 

이 친구는 바로 Out of memory 의 약자로 프로세스가 정해진 메모리를(?) 넘어서는 경우 해당 프로세스를 kill하는 것이다.

 

여러 번 수행해보았느나 항상 oom killer에 의해 kill 되는 것이 아닌가...

 

그래서 여기저기 찾아보니 clamav는 보통 개인 PC나 서버급 환경에서 사용하지 임베디드 환경에선 잘 사용치 않는 것 같아 보였다.

 

그러다 보니 임베디드 환경에 적합하게 만들진 않은 것 같았고 바이러스 데이터들이 쌓일수록 더욱 메모리를 잡아 먹게 되는 것이 아니겠는가...

 

현재 clamav 로선 약 4GB 이상의 메모리를 요구했다. 나의 시스템은 2GB 였다..

 

여러 해결책들을 찾아보니 그 중 swap에 대한 키워드를 발견했다.

 

swap?

swap은 제2 저장장치인 스토리지의 일부를 마치 메모리 처럼 사용하는 커널의 기술이다.

즉, 사용치 않는 메모리 영역은 스토리지에 swap 시키는 것이다. 그럼으로써 메모리의 여유 공간을 확보한다.

 

그렇다. swap이 있었다.

나는 곧 바로 swap을 할당하는 방법을 찾아보았고 mkswap, swapon, swapoff 등의 명령어들이 존재했다.

 

이를 통해 일반적으로 권유되는 메모리*2=4G 의 swap 공간을 생성했다. 이후 mkswap, swapon을 통해 swap 영역을 활성화 했고 다시 clamscan을 실행시켜보았다.

 

결과는...................

 

성공!!!!!!

 

swap을 통해 RAM 메모리의 여유 공간을 확보할 수 있었고 clamscan이 계속 수행될 수 있었다.