Raspberry Pi 3 64bit OS openSUSE LEAP 15: Install
2017-10-30: swap 추가, timezone 수정
{:.right-history}
Opensuse 에서 Raspberry Pi 3를 위한 64bit OS openSESE Leap 42.2 을 제공하고 있다.
이글은 5개 글타래로 구성되며, openSUSE 설치 및 사용에 대해 작성한다.
- Install 64bit openSUSE Leap 42.2 / JeOS
 - openSUSE: Managing Service daemon
 - openSUSE: Basic OS Security for Server
 - Install & Configuration - Nginx, Node JS, Jupyter
 - openSUSE: Build MongoDB 3.4.x
 
Install 64bit openSUSE Leap 42.2 / JeOS
openSUSE는 Raspberry Pi 3를 위한 Opensuse community edition은 정식 버전 Leap 42.2 image, 개발버전 Tumbleweed image, 커뮤니티버전 non-upstream openSUSE Tumbleweed image* 으로 구성되어 있다.
이들 버전은 용도에 따라 JeOS, E20, LXQT X11 이미지로 다운받을 수 있다.
Just Enought Operating System (JeOS)
- jeOS 이미지는 기본 오에스만을 포함하고 있다.
 - https://www.suse.com/products/server/jeos/
 
E20
- 데스크탑 환경으로 Enlightenment 을 사용하 GUI 이미지
 
LXQt
- LXDE-Qt 와 RazorQt 병합한 데스크탑 환경
 - https://en.opensuse.org/LXQt
 
### Download and Install
Download Page 의 두번째 Installing the 64-bit openSUSE Leap image 단락에 있는 JeOS image 를 다운로드 한다.
Writing image to SD Card
Etcher 등을 이용해서 다운받은 이미지 파일을 SD Card에 쓴다.
{:width=”640”}
dd 를 사용한다면,
다운받은 .xz 파일을 dd 를 이용해서 SD Card에 쓴다.
1  | xzcat openSUSE-Leap42.2-ARM-JeOS-raspberrypi3.aarch64.raw.xz | sudo dd of=/dev/rdisk1 bs=4m; sync  | 
#### Serial console
여기서는 Serial console에서 네트워크 확인 및 초기 설정을 하고 ssh 로 서버에 로그인해서 시스템 구성을 진행한다.
SD Card를 라즈베리파이에 꽃고 HDMI, Keyboard 및 Mouse 가 별도로 준비되어 있으면 직접 모니터를 보고 작업을 진행하면 좋다.
USB to Serial 케이블을 사용해서 Raspberry Pi의 Serial Console에 연결한다.
{:width=”640”}
그리고 시리얼 포트를 통해 tty 연결을 위해 터미널 프로그램에서 baud rate 115200 으로 연결한다. 아래는 macOS의 screen CLI 명령으로 usb serial 포트에 연결하고 있다.
1  | $ screen /dev/cu.usbserial 115200  | 
이제 SD Card를 넣고 부팅을 하면, 터미널에 부트 단계가 진행되고 처음 5분 정도 소요된다.
{:width=”640”}
Raspberry Pi를 위한 이미지는 처음 계정은 root/linux 이다.
터미널에서 uname 은 aarch64 임을 확인 할 수 있다.
1  | root# uname -a  | 
처음으로 라즈베리파이에서 64bit 환경으로 운영해 볼 수 있게 됐다.
### 설치 후 서버 구성을 위해 할 일
JeOS를 서버로 구성하기 위해서 다음 같은 작업을 수행해 준다.
- root 패스워드 변경
 - sudoer 사용자 생성
 - DHCP를 고정 IP로 변경
 
root 패스워드
root 사용자의 패스워드를 변경한다.
{:width=”640”}
Update
Ubuntu/Debian 계열의 패키지 명령 apt,apt-get 과 비슷한 openSUSE 명령라인 패키지 관리자는 zypper 가 있다.
1  | zypper help search # to print help for the search command  | 
- zypper usages 에서 사용방법을 자세히 알 수 있다.
 
머저 최신 소프트웨어 목록으로 업데이트 한다.
1  | zypper refresh  | 
그리고 최근 업그레이드된 필요한 패키지를 다운로드하고 설치한다.[^1]
1  | zypper update  | 
지원중단된 패키지, 나뉘어진 패키지 등의 의존성을 고려한 업그레이드를 하려면
dup명령을 사용한다.>
 1
2 zypper dup # distribution upgrade
zypper dist-upgrade
upgrade 후에
실행중인 데몬을 재시작해줄 필요가 있는데 zypper ps -s 를 실행하면 목록을 표시해 준다.
1  | pi64:/home/ # zypper ps -s  | 
ip 주소 확인
ifconfig 명령으로 현재 IP Address를 확인하고 이 IP Address에 ssh 를 사용해 접속한다.
1  | linux:~ # ifconfig  | 
좀더 편리한 사용을 위해 ifconfig 명령으로 찾은 IP address에 ssh 로그인을 해서 작업을 진행한다.
1  | $ ssh root@192.168.1.104  | 
### 시스템 설정
이제 sudoer 사용자로 시스템을 서버에 적합하게 구성해 보자.
- sudoer 추가
 - yast 소개
 - timezone
 - Network 구성: 호스트 이름, IP 주소
 - swap 개선
 - yast로 사용자 추가
 
sudoer
root 사용자가 아닌 일반사용자를 sudoer로 등록해 관리자 기능을 대행 할 수 있다. 그러기 위해서 먼저 사용자를 추가한다. openSUSE yast라는 시스템 도구로 할 수 있지만 여기선 useradd 명령을 사용해서 사용자 추가한다. useradd에 대해서는 useradd 명령을 참조한다.
useradd 는 홈 디렉토리, 쉘 등에 대한 옵션을 주고 사용자를 등록한다.
- 추가한 사용자를 /etc/passwd, /etc/shadow, /etc/group and /etc/gshadow 추가
 - 그리고 
-m옵션으로 으로 사용자 홈 디렉토리 까지 생성한다. 
1  | root# useradd -m foo  | 
그리고 패스워드를 등록한다.
1  | root# passwd foo  | 
sudoer 등록
visudo 명령으로 /etc/sudoers 파일을 편집한다.
1  | $ sudo visudo  | 
sudoer 파일에 있는 User privilege 항목 아래에 새로운 사용자 foo를 아래 같이 등록한다.
1  | # User privilege specification  | 
이제 root에서 로그아웃하고 새로 추가한 사용자로 로그인한다.
1  | $ ssh foo@192.168.1.104  | 
openSUSE는 관리자용 명령을 직접 내리면 찾지 못한다고 한다.
1  | foo@linux:~> yast2 timezone  | 
그리고 처음으로 sudoer 사용자가 관리자 권한이 필요한 명령을 사용하기 위해 sudu 로 명령을 내리면 아래 같은 경고가 나온다.
1  | foo@linux:~> sudo /sbin/yast2 timezone  | 
openSUSE는 시스템 관리 도구로 yast 를 사용해서 소프트웨어 설치, 네트워크 구성, 시간 관리, 보안 및 사용자 등을 다루는 소프트웨어로 GUI와 CLI 모두 사용할 수 있다.
시스템 네트워크를 구성하기 위해서 yast 명령을 사용해보자,
yast
yast는 GUI 혹은 ClI에서 사용이 가능하다 . 다음은 sudo yast 를 실행하면 Ncurse 로 표시되는 yast 화면이다.
{:width=”640”}
TAB 키로 각 항목을 이동할 수 있고, Enter로 실행한다. 전체 화면에서 F9는 Cancel, F10은 OK 기능을 수행한다.
Timezone
처음 설치후 CET 시간대로 되어 있어서 Asia/Seoul로 변경하고자 한다.
1  | linux:~ # date  | 
시스템 시간대를 설정하려면 yast 를 시작해 System -> Date and Time 을 실행해 시간대를 지정한다. 혹은 yast timezone 모듈 명령을 주면 해당 Date and Time 화면으로 이동할 수 있다.
{:width=”640”}
시간대를 변경후 확인해 보면,
1  | linux:~ # date  | 
ntp로 동기화하려면 Other Settings… 항목을 선택해 ntp server 를 설치하고 활성화 한다.
{:width=”640”}
{:width=”640”}