우분투 설치과정 및 설정

우분투 설치

  1. 우분투 배포판 다운로드, USB부팅 디스크 제작
    1. 윈도우에서 해야함
  2. /는 OS booting 전용 영역 package들을 깔걸 생각해서 64G정도 잡음
  3. swap 영역은 윈도우의 cache에 해당 32G
  4. 나머지 partition은 /home으로 몰아줌(이럼 사용자 data는 따로 백업가능)
  5. 부팅 usb로 부팅할때부터 nouveau때문에 화면이 안보일 수 있다. 이럴 땐.
    1. bios setting 메세지가 뜬 직후 shift를 누르고 grub화면이 뜨는 걸 확인한다.
    2. grub에서 원하는 ubuntu boot option에서 e를 누른다. 그럼 grub setting 화면이 뜸.
    3. linux로 시작하는 line에 modprobe.blacklist=nouveau 를 추가한다.

Ubuntu에 tensorflow(GPU) 돌리기

  1. 기본적으로는 ubuntu에 tensorflow구동 이걸따라가고,
  2. terryum 블로그 도 참고 할것.
  3. 이건 위의 블로그를 참고할 것. (blacklist nouveau를 /etc/modprobe.d/blacklist.conf 에 추가할것. 안 그럼 nvidia driver가 안깔림.)
  4. secure boot option도 disabled해둠. 안그럼 driver installer가 kernel에 덮어쓸 수 없음. 텐서플로 공홈에서도 secure boot가 과정을 복잡하게 한다고 되어 있음.
  5. ubuntu server에서는 linux header를 깔아줘야 하는 듯.
sudo apt-get install linux-source
sudo apt-get install linux-headers-4.15.55-generic
  1. nvidia 공식 홈피에서 정식 그래픽 드라이버를 깔고,
  2. CUDA를 깔땐 driver, openGL전부 안깐다. cuda랑 샘플만 깔아줌.
  3. 텐서플로우 공식페이지 를 참고하여 anaconda를 python 2.7버젼과 python 3.5버젼 용으로 따로 깔고, conda 가상 환경을 각각 만들어줌.
  4. 마찬가지로 conda 가상 환경 안에서 알맞는 tensorflow version을 각각 Install. (pip version이 안맞는다는 error도 conda깔고 그안에서 이것저것 깔면 해결)
  • pycharm 실행을 conda 가상 환경 terminal 에서 해주면 됨
  • 현재 내 컴 환경은
server $ cd pycharm/bin
server $ bash pycharm.sh
  1. 참고한 블로그
  2. Pycharm 을 사용하는 동안 terminal을 닫으면 안됨.

CUDNN libray command line에서 깔기

  • 아마 home directory ~/cuda에 CUDNN이 생성되어 있을것이다. 이것을 현재 CUDA version에 덮어 준다.
  • 주의, 현재 CUDA version을 symbolic link로 가서 확인하라.
  • 아예 적합한 버젼의 CUDA directory로 지정해주는게 나음.
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

CUDA 여러version 쓰기

anaconda environment 명령어 활용

  • anaconda의 경우 environment를 (de)activation시킬 때마다 script를 자동으로 가동시킬 수 있다.
  • conda env name안에 아래와 같은 directory를 만들어주면 됨.
  • 참고블로그
  • 정식conda홈피
  • miniconda는 path가 다르므로 주의할 것.
cd $CONDA_PREFIX
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh
  • activate.d안의 sh파일에는 다음과 같이, cuda 9.0을 load하고 싶을 경우
ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
  • cuda 10.0부터는 CUPTI도 load 해주자.
ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64
  • deactivate.d안의 sh파일 에는 원래 symbolic link로 돌려주는
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH
unset ORIGINAL_LD_LIBRARY_PATH

아래와 같은 해결책은 옛날 방식

  • CUDA 9.0을 깔고, python3.5, tensorflow1.5 환경을 구축했다.
  • 하지만 python2.7, tensorflow1.0을 유지하려면 CUDA8.0을 써야함.
  • 참고로 CUDA toolkit 만 깔땐 lighdm stop필요없음. nvidia driver 깔때 필요함.
  • nvidia driver 깔때 X server option에서 yes. no를 하면 무한 로그인현상 발생.

CUDA 여러 version을 쓰기위해선 symbolic link를 바꿀 필요가 있다. 다음과 같이 바꾼다.

sudo rm /usr/local/cuda # 기존 symbolic link 삭제
sudo ln -sT /usr/local/cuda-8.0 /usr/local/cuda # 새로운 symbolic link 형성

우분투, 윈도우10 멀티부팅

  • 내 경우에는 우분투 18.04가 있는 상태에서 윈도우10을 추가 파티션에 인스톨했다.
  • 그 결과 윈도우 부트 매니저가 활성화되어 원도우로 자동 부팅되었는데, grub option을 살리고 싶었다.
  • 만약 윈도우가 깔려있는 상태에서 우분투를 깔면 grub option booting이 자동 설정된다.
  • 이런 저런 삽질을 하다, 결국 이 싸이트에 나와있는 방법으로 해결했다.
  • Live ubuntu가 되는 bootable usb를 준비하고, UEFI모드로 부팅.
  • 그 다음에는 boot-repair 를 깔아서 repair 시켜주면, grub이 전반적으로 재설정되면서 윈도우 부팅 옵션도 추가된다.

서버로서 설정

ubuntu file sharing with OSX

root 계정으로 들어가서 samba를 깔아준다.

sudo apt-get install libcups2 samba samba-common

samba setting file을 열어서 user 계정을 팔수있게 한다.

gedit /etc/samba/smb.conf  
# editor에서
security = user
username map = /etc/samba/smbusers  # 적당히 추가
service smbd restart 
#cmd line에서 
samba restart

그런 다음 samba user를 추가해준다

smbpasswd -a <username>
service smbd restart

이제 OSX에서 smb 주소 접근가능. sharing folder를 탐색기해서 정해줘도됨

새로온 우분투 서버관련

python3 path가 잘못잡혀있었다. root 계정과 miruware 계정이 다른 python path를 잡고 있었음.

$ vim ~/.bashrc
export PATH = "/usr/local/lib/python2.7/dist-packages$PATH"
export PATH = "/usr/local/lib/python3.4/dist-packages$PATH"

리부팅 후 network setting이 안 잡히면 ifconfig로 확인 후 eth0이나 eth1이 있는지 확인. 없으면

sudo ifconfig eth0 up
sudo dhclient eth0

우분투 swap잡기

새로운 서버에 swap없었음.

$ sudo swapon -s # checking swap
Filename    Type  Size  Used  Priority

없다면, 생성해주자.

$ sudo fallocate -l 32GB /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon -s # checking swap
Filename    Type  Size  Used  Priority
/swapfile  file  31249996 0    -1

부팅시에도 잡아줘야하므로

$ sudo vi /etc/sftab
/swapfile   none swap   0    0  # in editor
$ sudo vi /etc/sysctl.conf
vm.swappiness = 10 # in editor
$ sudo sysctl -p

Ubuntu ssh server setting

맥과 우분투 모두 ssh는 기본으로 인스톨 되어있다.

가장 간단하게 서버에 접속하는 방법은 클라이언트에서 다음과 같이 입력하는 거다.

ssh username@hostip

나는 서버의 내 계정과 서버 ip를 바로 사용했지만 서버에서 사용자 list를 관리할 수 있다.

RSA key 만들고 쓰기

client $ ssh-keygen -t rsa

rsa 키를 만들어주면.

  • ~/.ssh/id_rsa : private key
  • ~/.ssh/id_rsa.pub : public key

가 만들어진다. (내 맥북에는 이미 있음)

이중 public key를 서버로 카피해야함.

client $ ssh-copy-id -p "port_number" your_id@server_ip

로 하거나

client $ scp .ssh/id_rsa.pub your_id@server_ip:~/id_rsa.pub
server $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

로 authorized_keys에 추가해야한다.

클라이언트 키에 pass phrase을 입력했을 경우

ssh server에 접속할때마다 rsa key pass phrase를 입력하는 게 귀찮다면

client $ ssh-add
input : passphrase

해두면 안 묻더라.

ssh server remote setting

외부에서도 서버에 접속하기 위해서는 공유기 port forwarding을 쓰면 된다.

공유기 setting에서 서버 ip를 잡고, port를 외부, 내부 모두 22(ssh)로 잡아줌. (대학 전산망이 port 22는 filtering해서 안됨.)

closed port 중에 숫자가 큰걸 외부 port로 잡았음(port ????)

이러면 공유기 ip로 접속된 ssh가 공유기 하의 서버 ip로 넘어감.

ssh -p ???? your_id@server_ip

로 간단하게 외부망에서도 접근할 수 있음.(테스트 통과)

Remote setting하면 보안에 신경써야함

sshd config file

etc/ssh/sshd_config에 다음과 같은 세팅을 제대로 해두자.

Protocol 2 # Protocol 1은 보안이슈가 있다. 보통 기본임.
AllowUsers root vivek jerry #특정 유저만 허용, DenyUsers를 써서 ban하는 방법도.
ClientAliveInterval 30 # 30sec까지만 허용.
ClientAliveCountMax 5 # 위를 5번 반복 (150sec허용) 
IgnoreRhosts yes #기본으로 되어있음.
HostbasedAuthentication no #기본으로 되어있음.
Banner /etc/issue.net #접속시 경고 배너 띄우기. 난 안 쓴다.
PermitEmptyPasswords no #기본으로 되어있음.
LogLevel INFO #기본으로 되어있음.
PasswordAuthentication no #RSA key를 쓰면 이건 꺼두자.

ssh setting을 바꿔 준 다음에는 ssh server restart해야함

systemctl restart sshd # ubuntu 16.
sudo service ssh restart # ubuntu 14. 18. 

ssh server log 시도 파일 보기

그중에서 실패한 시도들만 따로 보는 방법

server $ tail /var/log/auth.log -n 100 | grep 'Failed'

ssh session 유지하기

$ vi /etc/profile
$ vi ~/.bashrc
# 위 파일을 열어서 다음과 같은 구문을 추가한다.
export TMOUT=0

개인화 설정

ubuntu mouse point speed control

xset q | grep -A 1 Pointer # 현재 mouse pointer 가속도 값과 역치값이 나옴.
xset m 8 8 # 가속값을 8, 역치는 8픽셀로 설정

이것을 우분투 시작할 때 실행하기 위해서는 rc.local에 명령을 해줘야함

sudo vim /etc/rc.local

다음과 같이 추가함

xset m 8 2

가속값을 8, 역치는 2픽셀로.

ubuntu mouse scroll setting

xinput list

하면 mouse 이름이 뜸.

device=$(xinput list --id-only 'Logitech USB-PS/2 Optical Mouse')
xinput list-props $device

하면 mouse setting 들이 나오는데, 내 경우는

Evdev Scrolling Distance (284): -1, 1, 1

항목이 있음. 제일 앞의 수가 1이면 윈도우 스타일, -1이면 MAC 스타일

xinput set-prop $device "Evdev Scrolling Distance" -1, 1, 1

이 setting을 고정하려면 ~/.bashrc 파일에 device= 항목과 set-prop항목을 추가하자.

ubuntu control alt key 바꾸기

맥과 우분투를 번갈아 쓰다보면, control key 위치가 자주 헷갈린다. 맥의 command가 더 안쪽에 있기 때문

이를 해결하기 위해 control, alt key mapping

~$ code ~/.Xmodmap

.Xmodmap파일를 home에 만들어준다.

clear control
clear mod1
keycode 37 = Alt_L Meta_L
keycode 64 = Control_L
add control = Control_L Control_R
add mod1 = Alt_L Meta_L

가끔 keycode가 다를수 있다. 이를 위해서

~$ xev

를 실행하면 작은 하얀창이 뜨고 이 창에서 control key를 누르면 터미널에서

KeyPress event, serial 37, synthetic NO, window 0x4c00001,
    root 0x1f7, subw 0x0, time 953652796, (120,149), root:(1945,253),
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

라고 뜸. 여기서 keycode확인하고 바꿔준다. 자꾸 원래대로 바뀌는데, 그 이유는 .bashrc가 터미널 열때마다 실행되면서 keymap을 초기화하기 때문인듯. 하여 .bashrc에 추가해줌

code ~/.bashrc

로 열고

xmodmap ~/.Xmodmap

을 추가함. 이래도 자꾸 원상복구됨…keymap를 리셋하는 프로그램이 있나봄. 이건 그냥 포기함..

ubuntu pycharm 설치

sudo sh -c 'echo "deb <http://archive.getdeb.net/ubuntu> $(lsb_release -sc)-getdeb apps" >> /etc/apt/sources.list.d/getdeb.list'
wget -q -O - <http://archive.getdeb.net/getdeb-archive.key> | sudo apt-key add -
sudo apt update
sudo apt install pycharm

Leave a comment

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.