반응형
Ghostwire:Tokyo [epic games] on Steam Deck

최근 epic store 에서 ghostwire (고스트와이어) 를 무료로 배포 하였습니다. 스팀덱 (Steamdeck) 에 #heroic #Launcher 를 통해 다운로드 및 설치를 하였는데, 바로 실행을 하면, 게임 시작 시 검은 화면만 나오고 게임 진행이 안되는 문제를 경험했습니다. 다음 설정으로 문제 해결을 했으니, 저와 같은 문제를 가지고 있는 스팀덱 사용자라면 확인 해 볼 만한 설정이여서 로그 남깁니다.

[출처: https://postimg.cc/gallery/ZSVB0NtW/]

즐겜하세요

Ghostwire : Tokyo [epic games] on Steam Deck

 

반응형
반응형

스팀덱 구매 후 설정 관련해서 찾아보면 #CryoByte33 의 #Steam-Deck-Utility 설정 부분이 빠지지 않고 나온다. 설정은 하라는데로 했고, 복잡한 원리는 사실, 게임이 잘 되기 때문에, 알고 싶은 생각은 없었다.  이 설정을 왜 하는지, 향상되는 이유가 무엇인지 궁금하지 않았다.

하지만.. 이 유틸리티의 기본적인 원리? 에 대해 질문을 받았으며, 이를 답변해 주기 위해, 우선 내가 먼저 이해를 해야 했고, 지루한? 유튜브(youtube) 비디오 내용을 시청 하였다. CryoByte33 의 깃허브(Github) 에 공유된 내용도 정리하여 확인 해 보았다.

*참고로 번역은 #ChatGpt (https://chat.openai.com/) 의 도움을 받았다.

 

GitHub - CryoByte33/steam-deck-utilities: A utility to improve performance and help manage storage on Steam Deck.

A utility to improve performance and help manage storage on Steam Deck. - GitHub - CryoByte33/steam-deck-utilities: A utility to improve performance and help manage storage on Steam Deck.

github.com

#cyobyte33 #steam-deck-utilities

- 요약

스팀덱은 알려진 바와 같이 CPU + GPU (그래픽카드) 가 합쳐진 APU 를 사용 하며, 16기가 램을 탑재하였다. 하지만 GPU 용 VRAM 이 별도로 없어서, 탑제된 16GB 의 시스템 램 (RAM) 을 공유 한다. 일 (Task)들을 처리 하면서, 필요하면 서로 램 공간을 사용하는 식으로 작동 되며, 특별히 Valve 에서 1GB 램을 GPU 전용으로 사전 설정하였다. 그래서 15기가의 램 공간이 CPU 와 GPU 간 공유하도록 설정이 되었는 상태이다.

CryoByte33 의 steam deck utilities 는 swap 과 swapiness 의 허용 사이즈 변경 하여, 1GB 의 GPU 용 램 사이즈를 4GB로 높이더라도, CPU 가 필요한 RAM 공간의 대체 공간을 ssd 에 16GB 정도로  설정하여, 보다 안정적으로 메모리 사용의 효율을 높여준다. 

CryoByte33 의 steam deck utilities 는 swap 과 swapiness 의 허용 사이즈 는 "recommended" 로 설정하면 되며, VRAM 사이즈 변경은 스팀덱 부팅 시 BIOS 집입하여 UMA Frame Buffer Size 를 1 - > 4로 변경을 해주면 된다.

다음은, CryoByte33 의 steam deck utilities 를 통해 어떤 부분이 변경이 되었고, 왜 되었으며, 어떻게 되었는지 CryoByte33 의 Github 내용을 ChatGPT 의 번역 기능의 도움을 받아 정리해 보았다.

- Swap Size

더보기

Swap Size 란?

Arch Wiki에 따르면 다음과 같습니다:

리눅스(Linux) 는 물리적인 RAM(랜덤 액세스 메모리 Random Access Memory)을 페이지(page) 라는 메모리(Memory) 덩어리(chunk) 로 나눕니다. 스와핑(swapping) 은 메모리의 한 페이지 가 물리적인 (physical) 메모리에서 사전 설정된 공간인 스왑 공간이라고 불리는 하드 디스크(hard Disk)로 복사되는 프로세스(Process)입니다. 이를 통해 해당 페이지의 메모리를 해제(free up)할 수 있습니다. 물리적인 메모리와 스왑 공간의 결합된 크기가 가용한 가상 메모리의 양입니다.

왜 변경하였나요?

스왑 크기를 늘리면 몇 가지 작업을 수행할 수 있습니다:

  • 메모리 압력을 크게 감소시킬 수 있습니다. 이렇게 하면 더 많은 캐시가 가능하며, 동시에 VRAM이 조금 더 확장될 수 있습니다.
  • 물리적인 메모리가 부족해지면 "긴급 메모리"의 저장 공간을 확보할 수 있습니다. 이렇게 하면 대량의 메모리 이전을 방지하고, 메모리 관리를 더 긴 시간 동안 분산시켜 지연 시점을 방지할 수 있습니다.

어떻게 변경하였나요?

sudo swapoff -a
sudo dd if=/dev/zero of=/home/swapfile bs=1G count=SIZE_IN_GB status=none
sudo chmod 0600 /home/swapfile
sudo mkswap /home/swapfile  
sudo swapon /home/swapfile

- Swappiness

더보기

Swappiness 란?

또한 Arch Wiki에 따르면 다음과 같습니다:

swappiness는 스왑 공간에 대한 커널(Kernel)의 선호 (혹은 회피) 정도 나타내는 sysctl 매개변수입니다. swappiness 값은 0부터 200까지 가질 수 있습니다 (Linux 5.8 미만의 경우 최대 100). 기본값은 60입니다. 낮은 값은 커널이 스왑을 피하도록하고, 높은 값은 커널이 스왑 공간을 사용하려고 시도하며, 100의 값은 IO 비용이 동등하다고 가정합니다. 대부분의 시스템에서 메모리가 충분한 경우 낮은 값이 IO 의 반응을 향상시키는 것으로 알려져 있습니다.

왜 변경하였나요?

기본적으로 스팀덱(SteamDeck)은 스왑니스(swappiness) 값이 매우 높은 100으로 설정되어 있어 많은 물리적 메모리가 남아 있을 때에도 데이터가 스왑으로 이동할 수 있습니다.

이는 두 가지 이유로 인해 문제가 될 수 있습니다:

  • 과도한 쓰기 작업은 드라이브 수명을 단축시킬 수 있습니다.
  • 스왑은 메모리보다 훨씬 느리며, 스왑을 사용하면 성능이 저하됩니다.

따라서, 스왑을 낮은 값으로 또는 제안된 값 1로 줄여서 다음과 같은 이점을 얻을 수 있습니다:

  • 스왑은 실제로 필요한 경우에만 마지막 순간에 사용되도록 보장합니다.
  • 드라이브의 건강 상태를 유지합니다.

어떻게 변경하였나요?

echo VALUE | sudo tee /proc/sys/vm/swappiness

- sysctl 매개 변수라는 스왑니스. sysctl 은 뭘까 궁금해서 찾아보았다.

더보기

sysctl은 리눅스 커널 매개변수를 동적으로 구성하고 관리하기 위한 유틸리티입니다. 이 도구를 사용하면 운영 체제의 커널 매개변수를 읽고 수정할 수 있습니다.

커널 매개변수는 운영 체제의 동작을 제어하는데 사용되는 변수입니다. 이러한 변수는 시스템의 다양한 측면을 조정하고 최적화하는 데 사용됩니다. 예를 들어, 스케줄링 동작, 메모리 관리, 네트워크 설정 등에 대한 커널 매개변수를 조정할 수 있습니다.

sysctl을 사용하면 커널 매개변수를 실시간으로 조정할 수 있으므로 시스템 동작을 변경하거나 성능을 향상시킬 수 있습니다. 이는 커널 매개변수를 재부팅 없이 조정하고 테스트할 수 있는 편리한 방법을 제공합니다.

sysctl은 주로 터미널 또는 명령줄 인터페이스를 통해 사용되며, 많은 리눅스 배포판에서 기본적으로 설치되어 있습니다.

- Transparent Hugepages

더보기

Transparent Hugepages 란?

트랜스페어런트(Transparent  hugepages)는 Emin이 작성한 훌륭한 설명에 따르면 다음과 같습니다:

CPU가 필요한 프로세스에 메모리를 할당할 때, 일반적으로 4KB 페이지 청크로 할당합니다. CPU의 MMU(메모리 관리 유닛)는 들어오는 I/O 요청에 따라 가상 메모리를 물리 메모리로 변환하기 위해 활동적으로 작동해야 합니다. 모든 4KB 페이지를 거치는 것은 자연스럽게 비용이 많이 드는 작업입니다. 다행히 CPU는 자체적인 TLB 캐시(번역 룩어사이드 버퍼)를 가지고 있어 가장 최근에 사용된 메모리를 캐싱하여 특정 메모리 주소에 액세스하는 데 필요한 시간을 줄일 수 있습니다.

왜 변경하였나요?

설명에서 언급한 대로, 페이지를 할당하는 것은 비용이 많이 듭니다. 트랜스페어런트(hugepages)는 할당과 조회가 훨씬 쉽고, 대량의 메모리를 처리할 때 발생하는 지연을 많이 줄여줍니다.

어떻게 변경하였나요?

echo always | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

- Shared Memory in Transparent HugePages

더보기

Shared Memory in Transparent HugePages 란?

커널 문서에 따르면 다음과 같습니다:

마운트는 SysV SHM, memfd, 공유 익명 mmap (/dev/zero 또는 MAP_ANONYMOUS), GPU 드라이버의 DRM 객체, Ashmem에 사용됩니다.

이렇게 함으로써 이러한 요소들이 hugepages에 저장될 수 있게 됩니다.

왜 변경하였나요?

거대 페이지(hugepages)를 활성화하는 것과 같은 이유로 인해, 이는 메모리 관리에서 일부 지연 시간을 줄일 수 있습니다.

어떻게 변경하였나요?

echo advise | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled

- Compaction Proactiveness

더보기

Compaction Proactiveness 란?

이 기능은 Linux에서 "다운타임"을 감지할 때, 메모리 조각화를 예방차원에서 수행합니다.

왜 변경하였나요?

심지어 커널 문서에서도 이 기능이 전체 시스템 성능에 영향을 미친다고 인정하고 있습니다:

참고로, 컴팩션은 서로 다른 프로세스에 속한 페이지들이 이동함으로써 전체 시스템에 중대한 영향을 미칠 수 있으며, 예상치 못한 응용 프로그램에서 지연 증가를 초래할 수도 있습니다.

기본적으로 Linux는 컴팩션을 수행할 적절한 시기를 감지하려고 노력하지만, 게임 중에는 좋은 시기가 없으므로 비활성화하는 것이 가장 좋습니다.

어떻게 변경하였나요?

echo 0 | sudo tee /proc/sys/vm/compaction_proactiveness

- Hugepage Defragmentation

더보기

Hugepage Defragmentation란?

기능은 proactive compaction과 같은 기능이지만 hugepages에 대한 것입니다.

왜 변경하였나요?

proactive compaction을 비활성화하는 이유를 참조하세요.

어떻게 변경하였나요?

echo 0 | sudo tee /sys/kernel/mm/transparent_hugepage/khugepaged/defrag

- Page Lock Unfairness

더보기

Page Lock Unfairness란?

PLU (Page Lock Unfairness) 설정은 "허용 가능할 정도의 정상적인" 상태가 될 때까지, 프로세스가 페이지에 대한 잠금을 시도할 수 있는 횟수를 설정하며, 해당 프로세스에 페이지 액세스를 보장합니다. 자세한 내용은 커밋을 참조하십시오.

왜 변경하였나요?

불행히도, 이는 특히 게임에서 부정적인 부작용을 일으킬 수 있습니다. 반복적으로 대기하는 프로세스는 게임의 지연 문제를 뱔생 시키고, 일부 프로세스는 올바르지 않은 상태에서 휴면 상태로 진입 할 수 있습니다.

어떻게 변경하였나요?

echo 1 | sudo tee /proc/sys/vm/page_lock_unfairness

 

- 마치며

대부분의 내용이 리눅스 (Linux) 관련된 내용으로, 번역한 내용은 크게 와닿는 부분은 없지만, 이를 통해 스팀 OS 및 리눅스 에 대해 궁금한 점도 많아졌고, 그외에도 시스템 적인 부분이 명령어, 혹은 스크립트를 통해 변경이 가능하다는 것도 알게 되었다. 신기한 점은 이렇게 수정이 가능한 것을 알아냈다는 점이다. 내용에 나오는 Emin 이란 분이 이 리눅스 깊숙한 최적화에 큰 도움을 주신 분이라고 한다. 

Emin 의 Github

 

GitHub - CachyOS/linux-cachyos: Archlinux Kernel based on different schedulers and some other performance improvements.

Archlinux Kernel based on different schedulers and some other performance improvements. - GitHub - CachyOS/linux-cachyos: Archlinux Kernel based on different schedulers and some other performance i...

github.com

여하튼, 이 유틸리티를 설치하고, retrodeck 에서 스위치 에뮬레이션이 아주 안정적으로 구동이 되고 있으며, 테스트 해본 게임 중엔 The Division, Death Stranding, Tekken 7, Call of Duty 시리즈 등, 모두 안정적인 프레임 을 유지 했으며, 낮음 설정의 그래픽도, 상향 조정이 가능해질 만큼 게임 내 그래픽 퀄리티 와 성능이 좋아졌다.

이 유틸리티는 개인 적으로도, 그리고 많은 사람들이 강력 추천하는 프로그램이니, 스팀덱으로 게임 진행할 때 버벅거림을 경험한다면 설치해 보도록 한다.

반응형
반응형

항상, Steam (이하 스팀)이 만든 기기들 (스팀머신, 컨트롤러, 링크 등) 의 소식과 리뷰, 그리고 스팀OS 의 소식도 전해 들으며, 언젠가는 스팀 플랫폼 게임들을 구동시킬 기기 하나, 제대로 만들 것 같은 느낌으로 항상 관심있게 관련 소식을 기다리고 있었는데, 마침내, 2021년에 발표가 되고 2022년 초? 에 #스팀덱이 세상에 선을 보이게 되었다. 생각했던데로 물량이 별로 없어서, 국내엔 작년 8월 초부터 예약을 받아서 2022년 말쯤 배송 시작 된 것으로 기억된다. 

photo from: Steam Deck vs Logitech G Cloud: Which handheld should you buy? (xda-developers.com)

애플 제품들 (아이폰3gs, 아이패드 1세대 등) 과는 다르게, 여러 리뷰들을 보며, 바로 예약 구매 신청은 하지 않았다. 개인적으로 모니터 상의 리뷰들을 통한 간접 경험 보다는 직접 손으로 각 버튼들을 눌러보고, 무게나 화면 크기등을 직접 경험해 보고 싶었기 때문이다. 언젠가, 스팀덱을 구입한 주위 친구들을 통해, 확인해 보거나, 해외 나가서 직접 체험 후, 구입할 기회가 되면 구매를 하려고 했다. 음.. 올해 (2023) 초, 해당 기기를 리뷰해 본 친구의 말을 빌리자면, 스팀덱은 무조껀 구입해야 하는 기기이며, 내가 무척 좋아할 것이라는 말로 날 설레이게 했다.

photo from: Steam Deck vs Logitech G Cloud: Which handheld should you buy? (xda-developers.com)

직접 체험을 고대하는 중에, UMPC 혹은 hand-handled PC 시장엔 오래전부터 나왔던 Ayaneo 에서 window 10을 탑재한 비슷한 제품이 또 출시 되었고, Logitech 에서도, Logitech G Cloud 이라는 이름으로 안드로이드를 탑재하고 출시하면서, UMPC 시장을 나눠먹기 시작했다. 두 기기 모두 훌륭했고, 모양도 비슷했으며 성능도 우수 하다고 리뷰 되었다. 다음 스팀덱과 로지텍G클라우드 의 사양 비교 표에서, 내가 가장 중요하게 본 부분은 1. OS 와 2. 화면크기, 3. 배터리, 4. 확장 그리고  5. 가격 이다. 

from : Steam Deck vs Logitech G Cloud: Which handheld should you buy? (xda-developers.com)

이  5가지 사양 중 대부분 로지텍G클라우드 가 스팀덱 보다 우수했다. 단 하나.. 가장 큰 단점은 OS 였고, 그 이유는 다음과 같다. 그동안 스마트 기기들 (스마트폰, 웨어러블, IoT, ai 스피커 등)이 무수히 나오면서, 안드로이드 OS 는 v2.0 부터 v12까지 충분히 스마트폰과 태블릿들로 체험을 했다. 또한, 가지고 있는 기기들이 로지텍G클라우드 보다 성능이 더 좋은 기기들이기도 했고, 게임 관련 악세사리들도 있기 때문에, Logitech G Cloud 의 경험은 집에 있는 기기와 악세사리의 조합으로 충분히 충족이 되어, 구입 목록에서 자연스럽게 제외 되었다.

photo from : Ayaneo 2 review: I wouldn’t trade a $400 Steam Deck for this $1,300 handheld - The Verge

그에 비해, Ayaneo 는 말 그대로  UMPC (울트라 모바일 PC) 이며 최고의 hand-handle Gaming PC 라고 생각한다. 현재 Ayaneo2 말고도 여러가지 제품들이 나와 있고, 스펙도 어느 PC 못지 않을 성능으로 만들어져 나와서, 안돌아가는 게임이 없을 정도라는 한다. 가장 눈에 띄는 사양은 CPU AMD Ryzen 6800U 이다. 회사 내, 주변에서 이 프로세서를 탑재한 노트북으로 작업 하시는 분들이 꽤 여럿 있는데, 해당 기기에 대한 만족도가 꽤 높았다. (2022-2023). GPU 로 들어가 있는 라데온 기종은 사용해본적이 없어서 잘 모르겠지만, 검색해 보니, 3.4TFlops 의 성능까지 낼 수 있으며 4TFlops 성능을 내는 xbox series S 과 근접한 수치여서 꽤 준수한 그래픽 효과들을 보여줄 수 있을 것 같았다. 

from Ayaneo 2 vs Steam Deck: Which will be the better choice for handheld gaming in 2023? (sportskeeda.com)

실제로 이 유튜버분 (무적풍화륜) 의 리뷰를 보면,  Ayaneo 2 는 진정, 게임에 최적화된 기기라는 것을 알수 있었다. 리뷰에 나온 모든 게임들이 안정적으로 동작하였고, 디자인도 스팀의 투박한 모습과 비교해 보면 훨씬 좋아 보였다. 

ayaneo 2 review by 무적풍화륜

자, 그럼 이 최고 사양의 Ayaneo2 를 구입해야 하는 것이 당연하다는 생각이 들기도 하지만, 가격 대비 만족도를 확인해 봐야 할 것이다. 1년 좀 전 쯤, 구입한 PS5 의 가격은 63만원.. 비슷한 시기에 구입한 인텔12세대 PC 의 가격은 100만원. 이 2가지만 비교했을 경우, 비싼 PC 구매 후 만족도가 컸어야 하지만, 여러가지 (설정 및 추가 구매 등) 생각 해보면 PS5 구매의 기쁨과 사용 시의 만족도는 PC 와는 비교할 수 없을 만큼 컸다. 설정도 간단하고, 사용도 쉬웠다. 그만큼 게임 판매 플랫폼이 있는 기기들은 플랫폼에서 판매되는 모든 소프트웨어들이 해당 기기에 거의 완벽에 가까울 정도로 맞춤 출시를 하기 때문에 설정 및 사용이 쉽게 되어 있다. 반면 모든 곳에서 구입해서 게임을 즐길 수 있는 windowsOS PC 그만큼 설치해아 하는 게임런처들도 많이 있으며 세일 때 구입을 많이 하기 때문에 게임들이 여러 판매 플랫폼에 분산되어 있는 단점이 있다. Ayaneo2 는 windowsSO PC 와 동일한 단점을 가지고 있기도 하지만, 가격 또한 Gaming (이하 게이밍) 노트북 처럼 매우 높게 책정되었다. (16기가 램, 1T SSD 기기 네이버 검색가격 1,790,000 원 2023/07/05) 아쉽게도.. 구매 목록에서 제외 되었다.

from: Ayaneo 2 vs Steam Deck: Which will be the better choice for handheld gaming in 2023? (sportskeeda.com)

사실, WIndowsOS 에서 게이밍 경험이 더 많기도 하고, 게이밍 시 여러모로 수월 하기 때문에, 게임 판매 플랫폼의 이유 보다는 가격의 이유로 Ayaneo  2 를 구매하지 않았다가 좀더 사실적인 이유다. 만약, windowsOS PC 가 집에 없었다면.. 아마 고려 할 만한 기기 이지만, ubisoft 의 the division2 등 fps 만을 위한 pc 를 이미 가지고 있어서, 좀 애매한 기기가 될 것 같았다. (가격이 비싸다라는 다른 말 ㅋ)

결국, 스팀덱만 남았다. 직접 체험 해 보고 구입하자고 마음을 먹기 전에 이것 저것 검색을 통해 알아본 내용은 다음과 같다. 

  • 구입 시 모델은 64기가를 구입 후, 필요한 용량은 ssd 혹은 microSD 로 추가한다.
  • PD 충전 시 스팀덱이 사용하는 용량은 35W.
  • Steam 에서 제공하는 게임 외, 다른 플랫폼에서 제공하는 게임들도 스팀OS 에서 가능하다.
    • Epic Games, GOG, Ubisoft Connect, Battle.Net 등
  • 전동 스팀용 DOCK(이하 독) 은 DP 연결을 필요하면 구입하고 아니면 다른 제품들 사용이 가능하다.
  • COMODO 에서 구입 시 2주정도 걸리며 배송비는 8,000원. 
  • 다른 제품들보다 크고, 무겁고 구입 후 별로 안쓰게 된다. - 헙!@! 이런 글을 보니 중고마켓을 확인해 보았는데, 꽤 많이 등록되어 있어서, 중고 구매도 고민했다.
  • Windows OS 설치가 가능하다 (듀얼부팅)

그리고 구입했다. 와이프에게 아주 작은 PC 여서 가지고 싶다고 전했고. #Steam 외 게임유통사들에서 구입한 게임들 중, 가볍게 즐기려고 했지만 PC 에 설치를 안하는 게임들을 하고 싶다는 전하지 않았다.

음.. 일하는데 필!요! 할지도 모른다.. 라고 해서 허가가 났다. 바로 뽀록이 나버렸지만.. ㅡ,.ㅡa

SteamDeck - 64Gb 용량 버전을 구매했으며, 2023-06 월 어느날 일렉트로마트에서 구입이 가능하다는 이야기를 듣고 사무실에서 가장 가까운 일렉트로마트 물량 확인 후 가보려고 했는데, 와이프가 동네 이마트 (일레트로마트가 있는) 간다며 구매해 주겠다고 했다. 

와이프: (일렉트로 마트 직원에게) 혹시 스팀 이라는 컴퓨터 있나요?

직원: 아.. 게임기요? 있습니다. 

딱!!! 걸렸으..  아웅.. 박스도 저렇게 생겼네.. 아놔.. ㅋㅋ

우선 정상적인 제품이 왔는지 꼼꼼하게 확인 해 보라는 글도 있고, 혹시 모르니 영상으로 남겨야 한다는 글도 있어서, 언박싱? 영상을 찍게 되었다. 

Youp Han - YouTube

 

반응형
반응형

위치: C:\Users\"{사용자}"\AppData\Roaming\Code\User

파일이름: settings.json

{

  "terminal.integrated.shell.windows""C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"

}

다른 터미널 설정

// Command Prompt

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe"

// PowerShell

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"

// Git Bash

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

// Bash on Ubuntu (on Windows)

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"

반응형
반응형

오늘은 라즈베리 파이에서 메일서비스 세팅을 Gmail 의 메일 서비스를 대신 사용하는 방법을 알아봤습니다.


저처럼 구지 라즈베리파이에서 메일 서버를 세팅 및 운영할 필요도 없지만, 사용하면서 메일 서비스를 통한 이메일을 보내고 싶을 때 사용하기 딱 좋네요.

(출처 : http://www.sbprojects.com/projects/raspberrypi/exim4.php)


1) 방법은 간단한 Message Transfer Agent 인 SSMTP 설치로 시작됩니다. 아래 맨 윗줄 블록 된 명령어를 쳐서 SSMTP 를 설치합니다.


pi@raspberrypi ~ $ sudo apt-get install ssmtp mailutils mpack


Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following extra packages will be installed:
  guile-1.8-libs libgnutls-openssl27 libgsasl7 libmailutils4 libntlm0
  mailutils-common
Suggested packages:
  mailutils-mh mailutils-doc mail-transport-agent inews
The following NEW packages will be installed:
  guile-1.8-libs libgnutls-openssl27 libgsasl7 libmailutils4 libntlm0
  mailutils mailutils-common mpack ssmtp
0 upgraded, 9 newly installed, 0 to remove and 24 not upgraded.
Need to get 3,705 kB of archives.
After this operation, 8,760 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libgnutls-openssl27 armhf 2.12.20-8+deb7u3 [218 kB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main guile-1.8-libs armhf 1.8.8+1-8 [722 kB]
Get:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libntlm0 armhf 1.2-1 [19.3 kB]
Get:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libgsasl7 armhf 1.8.0-2 [220 kB]
Get:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main mailutils-common all 1:2.99.97-3 [795 kB]
Get:6 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libmailutils4 armhf 1:2.99.97-3 [841 kB]
Get:7 http://mirrordirector.raspbian.org/raspbian/ wheezy/main ssmtp armhf 2.64-7 [55.1 kB]
Get:8 http://mirrordirector.raspbian.org/raspbian/ wheezy/main mailutils armhf 1:2.99.97-3 [796 kB]
Get:9 http://mirrordirector.raspbian.org/raspbian/ wheezy/main mpack armhf 1.6-8 [38.4 kB]
Fetched 3,705 kB in 5s (685 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libgnutls-openssl27:armhf.
(Reading database ... 81693 files and directories currently installed.)
Unpacking libgnutls-openssl27:armhf (from .../libgnutls-openssl27_2.12.20-8+deb7u3_armhf.deb) ...
Selecting previously unselected package guile-1.8-libs.
Unpacking guile-1.8-libs (from .../guile-1.8-libs_1.8.8+1-8_armhf.deb) ...
Selecting previously unselected package libntlm0.
Unpacking libntlm0 (from .../libntlm0_1.2-1_armhf.deb) ...
Selecting previously unselected package libgsasl7.
Unpacking libgsasl7 (from .../libgsasl7_1.8.0-2_armhf.deb) ...
Selecting previously unselected package mailutils-common.
Unpacking mailutils-common (from .../mailutils-common_1%3a2.99.97-3_all.deb) ...
Selecting previously unselected package libmailutils4.
Unpacking libmailutils4 (from .../libmailutils4_1%3a2.99.97-3_armhf.deb) ...
Selecting previously unselected package ssmtp.
Unpacking ssmtp (from .../ssmtp_2.64-7_armhf.deb) ...
Selecting previously unselected package mailutils.
Unpacking mailutils (from .../mailutils_1%3a2.99.97-3_armhf.deb) ...
Selecting previously unselected package mpack.
Unpacking mpack (from .../archives/mpack_1.6-8_armhf.deb) ...
Processing triggers for man-db ...
Setting up libgnutls-openssl27:armhf (2.12.20-8+deb7u3) ...
Setting up guile-1.8-libs (1.8.8+1-8) ...
Setting up libntlm0 (1.2-1) ...
Setting up libgsasl7 (1.8.0-2) ...
Setting up mailutils-common (1:2.99.97-3) ...
Setting up libmailutils4 (1:2.99.97-3) ...
Setting up ssmtp (2.64-7) ...
Setting up mailutils (1:2.99.97-3) ...
update-alternatives: using /usr/bin/frm.mailutils to provide /usr/bin/frm (frm) in auto mode
update-alternatives: using /usr/bin/from.mailutils to provide /usr/bin/from (from) in auto mode
update-alternatives: using /usr/bin/messages.mailutils to provide /usr/bin/messages (messages) in auto mode
update-alternatives: using /usr/bin/movemail.mailutils to provide /usr/bin/movemail (movemail) in auto mode
update-alternatives: using /usr/bin/readmsg.mailutils to provide /usr/bin/readmsg (readmsg) in auto mode
update-alternatives: using /usr/bin/dotlock.mailutils to provide /usr/bin/dotlock (dotlock) in auto mode
Setting up mpack (1.6-8) ...


2) /etc/ssmtp/ssmtp.conf 파일을 열어서 아래 세팅을 맞춰줍니다. YOU 를 사용자 이메일 로그인 이름으로 해줍니다.

mailhub=smtp.gmail.com:587 hostname=RPI'S HOST NAME AuthUser=YOU@gmail.com AuthPass=PASSWORD useSTARTTLS=YES

아래는 제 라즈베리파이에 설치된 SSMTP 컨픽 파일 입니다. 붉은색 화살표가 수정된 곳을 보여줍니다. 제 Gmail 의 로그인 이름과 암호는 지웠습니다.




3) 파일 내 세팅이 완료 되면, 저장한 뒤 메일 보내기를 테스트 합니다.

<PHP 메일 테스트>

<?php

$message = $_SERVER['HTTP_USER_AGENT'];
mail('yobine@tistory.com', 'You have got mail', $message, 'RaspberryPI@house');

?>


4) 도착 메일입니다.


이렇게 하여 간단하게 이메일을 라즈베리파이 의 웹서비스에서 보낼 수 있게 되었습니다.  :)

반응형
반응형


라즈베리파이를 Linux, Apache, MySQL, PHP 를 설치하여 웹서버로 응용사용해 봅니다.


1. 라즈비안 이미지를 다운받습니다. Raspbian https://www.raspberrypi.org/downloads/

2. 이미지를 만들고 SD 카드를 준비합니다. Win32 Disk Imager 프로그램을 이용 합니다.

3. 준비된 SD 카드를 라즈베리파이에 끼운 후, 모니터, 키보드 그리고 인터넷 케이블을 연결 한 뒤 전원을 켭니다.

4. 제일 먼저 초기 설정이나오는데, 초기설정에서 

- 1. Expand Filesystem 을 설정하고

- 3. Enable Boot To Desktop 을 Disable 합니다.

- 4. 필요에 따라 Internationalisation Options 를 설정해줍니다.

- 7. Overclock 을 Modest 로 해줍니다.

- 8. Advanced Options 에 들어가서 SSH Server 설정을 Enable 해줍니다.

- 8. Advanced Options 에서 update Raspberry Pi 를 해줍니다.


5. 설정이 끝난 후 라즈베리파이를 리부팅 해줍니다.

sudo reboot


6. 리부팅이 끝난 후 라즈베리파이의 ip 주소를 확인합니다.

ifconfig


7. OS 업데이트를 해줍니다. 시간이 꽤 걸립니다.

sudo apt-get update

sudo apt-get upgrade


8. Apache 설치를 합니다.

sudo apt-get install apache2 php5 libapache2-mod-php5


질문이 나오면 y 를 눌러 진행을 계속합니다. 시간이 꽤 걸리는 작업입니다.

혹시 오류가 난다면, 아래 명령어 2개를 시도해봅니다. 오류가 나지 않고 설치가 끝나면 아파치 서버를 재시작 합니다.

sudo groupadd www-data

sudo usermod -g www-data www-data


아파치 서버를 재시작 합니다.

sudo service apache2 restart


이제 다른 컴퓨터에서 웹브라우저를 열고 라즈베리파이의 IP 주소를 적어봅니다. "It works!" 라는 화면이 보이면 성공.


9, MySQL 을 설치합니다.

sudo apt-get install mysql-server mysql-client php5-mysql


질문이 나오면 y 를 눌러 진행을 계속합니다. 설치중에 MySQL 의 root 계정 암호를 설정하라고 나오는데, 원하는 암호로 설정한뒤 설치를 완료합니다.


10. FTP 설치

파일을 전송하기 위한 FTP 설치를 합니다. 먼저 web root 의 권한을 설정합니다.

sudo chown -R pi /var/www


vsftpd 를 설치합니다.

sudo apt-get install vsftpd


설치가 끝난 후 vsftpd 의 설정을 해줍니다.

sudo nano /etc/vsftpd.conf


- 1. anonymous_enable=YES 를 찾아 anonymous_enable=NO 로 설정

- 2. local_enable=YES 앞에 # 지워주기

- 3. write_enable=YES 앞에 # 지워주기

- 4. 맨아래에 내려가 force_dot_files=YES 적어주기

- 5. ctrl+X 를 누른 후 y 를 눌러 저장하며 나옵니다.


설정이 끝난 후 FTP 서비스를 재시작 해줍니다.

sudo service vsftpd restart


11. 마무리

암호 설정으로 마무리 해줍니다. ssh 연결이 가능한 상태이기 때문에 라우터에서 dmz 설정이 되어 있거나 하면 바로 라즈베리파이에 ssh 로 연결이 가능하므로, 누구나 다 알고 있는 라즈베리파이의 암호를 바꿔줍니다.


sudo passwd pi


그리고 root 의 암호도 바꿔줍니다. 두번째 명령어는 root 유저의 모드 변경 명령어입니다.


sudo passwd root

sudo usermod -L root


FTP 설정이 끝났습니다. FTP 클라이언트 프로그램으로 라즈베리파이에 연결하여 파일을 주고 받을 수 있게 되었습니다.


라즈베리파이에 LAMP 설정이 끝났습니다.





반응형
반응형


Vim 사용하시는 분들은 아마도 여러 세팅을 하여 config 을 저장할 수 있도록 한 뒤 사용중이라고 하네요. 이번에 간단하게 줄 번호 보여주는 세팅 과 인덴트 를 자동으로 해주는 세팅을 만들어봤습니다.


기본적으로 .vimrc 파일이 없어서 저는 만들어야 했습니다. 만들기 전에 확인 필수 입니다.


vim .vimrc



이렇게 만들고 나면 vim 실행하니 제 화면이 아래와 같이 변하였습니다.

그외에 더 많은 세팅을 원하시면 다음 링크가 유명한 Ultimate VIM configuration 입니다.


여하튼 vim 세팅은 이정도로 하고, 쉘 스크립트의 if-else 예문을 소개합니다.

shell script 의 if-else 는 간단합니다. 주의해야 할 점은 비교 변수와 "[" 그리고 시작의 "if" 사이에 모두 공백이 필요합니다.



간단하게 echo 로 이름을 묻고, name 변수에 read 해줍니다. 같은 방법으로 나이를 물은 뒤 age 변수에 read 하지요.


if 문의 기본 문법은 if [ 변수 test 대상 ] then 실행문 else 실행문 fi

이렇게 됩니다. if 로 시작하여 if 의 반대인 fi 로 끝을 내 줍니다. 비교 test 는 -lt (less than 보다 작다) 를 사용했는데요, 그외 다른 어떤 비교 test 들이 있는지는 확인 가능합니다.


여기서는 간단하게 18 세 이상이면 맥주를.. 이하면 안된다.. 라고 간단하게 출력합니다.


man test

혹은

man [


메뉴얼 내에 많은 내용이 있는데요 그중 몇개만 추려봤습니다.


       STRING1 = STRING2
              the strings are equal

       STRING1 != STRING2
              the strings are not equal

       INTEGER1 -eq INTEGER2
              INTEGER1 is equal to INTEGER2

       INTEGER1 -ge INTEGER2
              INTEGER1 is greater than or equal to INTEGER2

       INTEGER1 -gt INTEGER2
              INTEGER1 is greater than INTEGER2

       INTEGER1 -le INTEGER2
              INTEGER1 is less than or equal to INTEGER2

       INTEGER1 -lt INTEGER2
              INTEGER1 is less than INTEGER2

       INTEGER1 -ne INTEGER2
              INTEGER1 is not equal to INTEGER2


자.. 이렇게 만들어진 스크립트 테스트를 하면 결과는 다음과 같습니다.

항상 실행 전에 파일 접근 권한을 700 으로 사용자에게 읽기 쓰기 실행 권한을 부여합니다.




간단한 쉘 스크립트 내 if-else 사용법을 알아봤습니다. 


다음은 if-elif-else 예문입니다. 최간단 계산기.


1) 2개 의 argument 를 받습니다.

2) 계산법을 받습니다.

3) 계산을 출력합니다.


vim calc.sh



받을 argument 들은 $1, $2 로 받습니다.

$(($1+$2)) 로 계산 합니다.



결과입니다. 실행 시, argument 를 2개 넣어줍니다. 예에서는 8 과 9 로 실행하였습니다.

반응형
반응형
오늘 ubuntu 11.10 으로 업그레이드 했습니다.
저처럼 새로운 데스크탑 보다는 이전 버전의 classic desktop 을 원하시는 분들을 위한 글입니다.
우분투 11.04 버전에서는 지원하던 classic desktop 보기가 11.10 버전에서는 지원하지 않습니다.
그래서 터미널에서 명령어를 쳐서 이전 버전의 gnome-pannel 을 설치 해 줘야 합니다.

sudo apt-get install gnome-panel





이후 로그인 시 옆에 세팅 아이콘을 눌러 classic 으로 바꿔 로그인 하시면 됩니다.
출처(http://tombuntu.com/index.php/2011/09/11/install-the-classic-desktop-in-ubuntu-11-10/)

 
반응형

+ Recent posts