구름OS 2.0을 맥의 패러렐즈에서 리눅스 개발 환경으로 이용해 보기 Develop Tip

저는 Linux가 나타나기 전부터 *NIX에서 개발을 했었습니다.
2000년 이전에는 유사한 OS였던 HP-UX, Solaris, VMS 심지어 
타이콤 이라는 국산 주전산기에서도 개발했던 경험이 있습니다.
RISC와 CISC CPU 아키텍쳐 때문에 고심했었던 것도 눈에 선 하네요.

그러다 2000년 되면서 리눅스를 본격적으로 사용했고,
여러 배포판들을 전전하다 임베드 시스템같은 것에서
가장 잘 맞는 젠투리눅스를 이용하다, 나중에는
우분투 리눅스를 이용하게 되었습니다.

우분투 리눅스는 데스크탑과 서버 버전이 있는데, 이상하게
데스크탑은 더 무겁고 기본적으로 설치되는 것이 많아
나중에는 이를 활용하여 커스텀 우분투 서버 ISO 만들기 같은 것도 해 보았습니다.

그 후에 Docker container 기술을 접한 다음에는
왜 개발자용 데스크탑 컨테이너가 없을까 해서

그러던 차, 최근 구름OS 라는 것을 접해 보았습니다.

한컴에서 만들고 여러 업체가 관련되어 있고, 국보연도 보안관련해서 작업을 하는 것으로 알고 있습니다.
암튼 최근에 공공기관 등에서 망분리된 외부망에 설치되어 있던 윈도우7을 윈도우10으로 올리는 비용보다
이런 오픈 OS와 오픈 오피스 등을 이용하려는 시도가 있다는 뉴스를 보고는,
시도 자체는 나쁘지 않다고 생각하고 있었습니다.

그래서 또 이 환경이 기존 다른 리눅스 배포판과 어떻게 다르고 장단점이 무얼까 살펴보기 위해서
확인해 보았습니다.

우선 구름 2.0은 데비안 10 버전을 모태로 합니다. 아주 잘 호환됩니다.
이전 버전인 1.4는 데비안 9 버전과 관계됩니다.

그럼 어디 환경 구축을 해 볼까요?

상단에 "ISO 내려받기" 를 눌러 다운받습니다.
Gooroom-2.0-RC1-amd64.iso 이고 크기는 1.18GB 정도 입니다.

패러렐즈(Parallels) 에서 새로운 가상머신을 생성하기를 시작하고,

가운데 이미지파일 선택을 한 다음, Continue

이전에 다운받은 iso 파일을 지정하면, 알아서 Debian 이라고 인식하네요. Continue

각자 이름은 알아서 주시고, 하단에 "Customize settings before installation" 을 체크합니다.
기본 위치는 맥의 기본위치가 아니고 SanDisk Extream SSD 1T 외장 디스크에 저장해서 사용하는데
속도가 빨라 거의 속도저하를 느끼지 못할 정도입니다. Create

그러면 설정창이 나타나는데,
위와 같이 불필요한 것에 대한 연동은 빼고,

앱 호환도 하지 않습니다.

다음에 아주 중요한 부분인데 처음에 왜 설치가 안될까.. 해서 가지고 있던 VMWare Fusion 까지 돈내고
업그레이드 했었는데 나중에 알고 보니, 위와 같이 BIOS를 EFI 64-bit 로 해 주어야 합니다.
디폴트로 해 놓으면 설치 안 됩니다.

이제 설정창을 닫고,
설치를 위하여 Continue

처음화면에서 첫번째로 선택되어 있는데, 그냥 엔터

2,3분 후에 위와 같이 깔끔한 창이 나타납니다. 라이브 CD로 부팅이 되었나 보네요.

좌측하단 아이콘을 눌러 시스템 도구 > 구름 설치를 선택합니다.

한국어를 선택하고,

타임존을 선택한 다음,

키보드는 "Korean (101/104 호환 키)" 로 해 놓아야 하는데.. 나중에 한글 사용하려고 설정에서 변경했습니다.

사용자 정보를 넣었습니다. (비밀번호의 복잡도가 높아야 한다는 것은 불편하지만 보안 측면에서는 좋은 것이지요)

파티션 설정에서 "예"

/home 을 별도 파티션으로 나누게 기본설정이 되어 있네요. 앞으로..

파일 시스템을 기본적으로 Ecryptfs 로 암호화된 파일시스템으로 설정되어 있는 것도 데비안과 다른 것이네요.

이제 설치 합니다.

몇 분 정도 설치를 진행합니다.

설치를 완료했습니다. 이제 재시작을 합니다.

이전에 지정한 사용자로 로그인을 하고,

최초 안내창을 닫으면 위와 같이 작업 가능 환경이 됩니다. 나름 깔끔하고 다른 리눅스에 비해서도 설치 이미지 자체가 4G 약간 안되는
적은 가상머신 크기네요.. 아마 기존 데비안에서도 다이어트를 많이 한 듯 보입니다.
(저 다리는 골든 게이트 브릿지 같은 느낌이..)

저 상태 자체로도 해상도 조절이 되는 것으로 보아 가상머신 드라이버가 일부 기본 설치된 것으로 보이나, 
상단 오른쪽 느낌표 보이는 아이콘을 누르면 "Install Parallels Tools" 가 되고 설치 CD가 보입니다.

파일 관리자를 보고,

CD로 가서 "install-gui" 를 누르면,
(데비안만 하더라도 이 상황에서 해당 내용을 복사하고, /etc/apt/sources.list 내용을 변경하여 sudo 활성화 후,
 sudo install 로 터미널에서 설치를 해야 하는데... 그런 것 없이 .. ㅎㅎ)

위와 같이 sudo Run as root ... 에 사용자 암호를 넣어 주면, 설치가 시작됩니다.

설치를 마친 후 다시 "Restart" 합니다. 이제는 파일 공유, 네트워크 드라이버 등등 모두 잘 동작합니다.

재 기동 후 혹시 한국어 이용이 안된다면 다음과 같이 진행합니다.

설정에 들어가서 "지역 및 언어"를 선택한 다음, 입력 소스에서 "+"를 눌러 추가하고,

한국어 (101/104키 호환)을 선택하고 추가 합니다.

그리고 기존 "한국어" 입력소스는 "-"로 삭제합니다.

터미널이나 구름 브라우저에서 오른쪽 Alt 키로 한영 전환이 잘 동작했습니다.
(Shift+Space) 로 바꾸는 것은 나중에.. 시간나면.. 확인해 보겠습니다.

가상머신이라 화면 잠금이 필요 없어 이 기능도 해지 했습니다.

절전도 필요 없어서 해지.. (호스트 머신이 다 하고 있으므로)

이제는 개발자에게 꼭 필요한 터미널 설정을 해 봅니다.

터미널을 실행시키고 (하단 제일 좌측 아이콘을 눌러 검색하면 됩니다), 필요하면 "프로그램 고정"을 해 두고 사용합니다.

편집 > 기본설정을 눌러,

"새 터미널에서 기본값으로 메뉴 모음 표시" 를 해지 합니다. 메뉴가 보일 이유는 없습니다.

필요하면 터미널 크기를 지정해 줍니다.

색상도 적당히 원하는 것으로..
(그리고 tmux 를 기본적으로 이용하면 스크롤이 필요없으므로 스크롤 탭에서 스크롤 보이기를 해지했습니다)

이제는 tmux 및 vim 을 설치해 봅니다.

sudo apt update
sudo apt install vim tmux

로 설치를 해 봅니다.

vim 설정을 위하여 ~/.vimrc 파일에서 

syntax on
set ts=4

두 줄을 추가하고 저장합니다.

tmux 설정을 위하여 ~/.tmux.conf 파일에 다음의 내용을 넣습니다.

set-option -g mouse on
set-option -g history-limit 10000
bind split-window -h -c '#{pane_current_path}'  # Split panes horizontal
bind - split-window -v -c '#{pane_current_path}'  # Split panes vertically


그리고 ~/.bashrc 파일을 열어
alias ll 을 풀고, 제일 하단에 다음의 tmux용 alias를 추가합니다.

alias tmb='tmux new-session -d && tmux split-window -h && tmux split-window -v && tmux select-pane -L && tmux split-window -v && tmux select-pane -U && tmux attach-session -d'
alias tms='tmux new-session -d && tmux split-window -v && tmux split-window -v && tmux select-pane -U && tmux select-pane -U && tmux split-window -v && tmux select-pane -U && tmux attach-session -d'
alias tm='tmux new-session -d && tmux split-window -h && tmux select-pane -L && tmux attach-session -d'

이제 새로운 터미널을 뛰워, tmb 명령을 내리면 위와 같이 4등분 된 tmux 가 나타납니다.
터미널에서 항상 시스템 모니터링을 해 보기 위하여,
top 명령을 내린 후,
zttmmi 를 차례로 명령을 내리면, 위와 같이 보기 좋은 시스템 모니터링 화면이 보입니다.

이제는 Python 개발을 위한 환경 구축을 해 봅니다.

pyenv 명령에서 CPython을 build 하는데, 이 때 필요한 것을 미리 설치합니다.

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

pyenv 설치를 위하여,

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

명령을 내린 다음,

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn  eval "$(pyenv init -)"nfi' >> ~/.bashrc

라고 명령을 내리고 터미널을 다시 띄우거나 

. ~/.bashrc

라고 명령을 내려 pyenv를 활성화 합니다.

이제는 python 3.7.6 을 pyenv를 통해 설치해 봅니다.


env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.7.6 

이제는 pyevn virtualenv 를 활성화 하기 위하여,

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

라고 한 다음 터미널을 다시 띄우거나 . ~/.bashrc 를 해서 활성화 시킵니다.

이제는 py37 이라는 가상환경을 만들어 봅니다.

pyenv versions
로 설치된 것을 확인 하고,
pyenv global 3.7.6
로 시스템 디폴트를 3.7.6 파이썬으로 지정하고,
pyenv virtualenv 3.7.6 py37
로 CPython 3.7.6에서 py37 가상환경을 만듦니다.

이제는 다음과 같이 하여 autoenv를 활성화 합니다.

git clone git://github.com/inishchith/autoenv.git ~/.autoenv
echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

터미널을 다시 띄우거나, . ~/.bashrc 로 활성화 시킵니다.

~/.bashrc 는 위와 같이 보입니다.

이제는 docker 를 설치해 봅니다.
docker를 왜 가상머신에 설치를 할까 궁금할 수도 있는데 docker 자체는 아주 가벼운 운영 및 개발 환경으로서 개발할 당시에는
위와 같은 리눅스 가상머신에서 개발하고 테스트 해 보는 것이 제일 편하고 좋습니다.
(심지어 ESXi 서버에서 Photon OS에 docker를 설치하고 운영환경을 구축하고는 합니다)

docker 에서 debian 설치를 찾아봅니다.

위와 같이 다음 세 명령을 실행합니다.

sudo apt-get update
sudo apt-get install
    apt-transport-https
    ca-certificates
    curl
    gnupg2
    software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

여기 까지는 잘 동작을 하였으나..

위와 같이 다음 네번 째 명령을 내리면,

sudo add-apt-repository
   "deb [arch=amd64] https://download.docker.com/linux/debian
   $(lsb_release -cs)
   stable"

오류가 발생하는 것이었습니다.
찾아 보았더니 원인은 
/etc/os-release 등이 모두 debian 에서 gooroom 등으로 이름을 변경한 것 때문이지요.

해결책은, 

위와 같이, /etc/apt/sources.list 파일의 마지막 줄에,

deb [arch=amd64] https://download.docker.com/linux/debian buster stable

라고 넣어주는 것이었습니다.

그 다음에, 다음의 두 줄로 docker 설치 완료!

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

이제 설치는 되었으나 기본적으로 docker 가 sudo 로 명령을 내려야 동작합니다.
이를 sudo 없이 동작하게 하려면,

sudo usermod -aG docker $USER

라고 명령을 내린 다음 시스템을 재기동 시키면 됩니다.

top 명령으로 시스템 상황을 확인하듯이 ctop 이라는 명령으로 컨테이너를 확인할 수 있는데요,
(다음 블로그에 설명)







덧글

댓글 입력 영역

구글애드텍스트