레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시

2020년 8월 13일 목요일

linux 온도 기록하기

문제: linux 구동시 주기적으로 시스템의 온도를 기록하자.

<참고: https://unix.stackexchange.com/questions/269858/does-linux-typically-log-system-temperature-data>


해결:
CPU
sensord -> 시스템온도와 voltage를 system log에 기록

sudo apt-get install lm-sensors
sudo sensors-detect
sudo service module-init-tools start
sudo service module-init-tools restart
sensors


HDD
hddtemp -> hard drive의 온도를 기록

sudo apt-get install hddtemp
sudo hddtemp /dev/sda /dev/sdb

but 둘다 수동으로 타이핑한 뒤부터 기록함.

GPU
nvidia-smi -q -d temperature | grep GPU | perl -pe '/^GPU/ && s/\n//' | grep ^GPU


주기적으로 수행 후, 기록하기(CPU, GPU만)
1. shell script만들기
logging_temp.sh

#!/bin/sh
date
sensors
nvidia-smi -q -d temperature | grep GPU | perl -pe '/^GPU/ && s/\n//' | grep ^GPU
echo ""

2. crontab에 등록하며 로깅설정하기
crontab -e
맨아래에 추가 (***** 빼면 안됨)

* * * * * logging_temp.sh >> /home/yochin/Desktop/log_temp.log 2>&1

3. crontab -l 로 확인하기

4. 만약에 permission denied라면?

chmod 744 loggin_temp.sh로 sh의 권한변경

ps -ef | grep cron 으로 pid확인 후, sudo kill -9 pid로 죽임


2018년 7월 29일 일요일

윈도우즈, 리눅스, Synology NAS 특정시간 후 자동으로 끄기


특정시간에 자동으로 윈도우즈와 리눅스, Synology NAS를 종료시키는 방법

* 윈도우즈
윈도우즈 커맨드 창에서 (Windows키 + R -> cmd입력),

shutdown -s -t 3600

-t: 3600초 후에 종료(-s)됨.
--> 입력 후 언제 종료될지 알림으로 알려줌.

shutdown -a
취소시킴.

shutdown -help
도움말

shutdown -h
하이버네이션(최대절전모드)


* 리눅스
sudo shutdown -P +60
60분 후에 종료됨.
--> 입력 후 언제 종료될지 년/월/시/분/초로 알려줌.

sudo shutdown -P now
지금 종료됨.

sudo shutdown -c
취소(cancel)시킴.


* Synology NAS
웹브라우저로 log in
제어판->정보센터->(좌)하드웨어 및 전원->(상)전원예약->설정



<참고: https://unix.stackexchange.com/questions/120506/how-to-shutdown-linux-at-a-specific-datetime-from-terminal>
<참고: https://coding-factory.tistory.com/326>
<참고: https://mongri.net/entry/%EC%8B%9C%EB%86%80%EB%A1%9C%EC%A7%80-%EB%82%98%EC%8A%A4-%EC%9E%90%EB%8F%99-%EC%8B%9C%EC%9E%91-%EB%B0%8F-%EC%9E%90%EB%8F%99-%EC%A2%85%EB%A3%8C-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95>

2018년 3월 21일 수요일

linux에 realsense 설치하기

realsense로 SR300을 사용

<참조: https://pypi.python.org/pypi/pyrealsense/2.0>
<참조: https://pypi.org/project/pyrealsense/>

환경: ubuntu 16.04, SR300

1. windows에 realsense를 누른 후, Firmware update함.

2. 설치
* 현재 python wrapper는 pyrealsense 2.x를 지원하지 않음. pyrealsense 1.x만 지원함.
혹시 2.x가 설치되었다면 아래를 참고하여 삭제할 것.
2.1. 설치 (realsense 2.x)
<참조: https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md>
만약 compile을 통한 설치를 원한다면 다음을 참조.
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' | sudo tee /etc/apt/sources.list.d/realsense-public.list

sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6F3EFCDE

sudo apt-get update

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

# g++ -std=c++11 filename.cpp -lrealsense2

modinfo uvcvideo | grep "version:"
입력시 realsense가 보이면 설치 성공

*. 삭제를 원한다면
dpkg -l | grep "realsense" | cut -d " " -f 3 | xargs sudo dpkg --purge

2.1. 설치 (librealsense 1.x)
https://github.com/IntelRealSense/librealsense/tree/v1.12.1
https://github.com/IntelRealSense/librealsense/blob/v1.12.1/doc/installation.mdsudo 
에서 download zip파일(우상단 다운로드 클릭)

관련 library설치
apt-get update && sudo apt-get upgrade
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev

if 망가진 의존성이 뜬다면(쓰지말 것, 의존성 회복시키면서 기존 것 망가뜨림)
sudo apt-get install aptitude
sudo aptitude -f install

librealsense 설치
cd librealsense-1.12.1
mkdir build
cd build
cmake ..
make && sudo make install

cd ..
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
./scripts/patch-uvcvideo-16.04.simple.sh

sudo modprobe uvcvideo

sudo dmesg | tail -n 50
을 통해서 새 usbcore: registered ~~~인지 확인

2.2. 설치 (pycparser, cython, numpy)
sudo apt-get update
sudo apt-get install python-pycparser
sudo apt-get install cython
sudo apt-get install python-numpy

sudo pip install pyrealsense

설치실패시 아래 사이트 참조.
https://github.com/toinsson/pyrealsense/issues/66 참조
pyrealsense는 librealsense2를 지원못함.
순서1을 통해 v1을 설치후 실행하면 됨.

3. 소스코드 사용
import pyrealsense as pyrs

serv = pyrs.Service()
serv.start()

'''pyrc.stream.color.depth.cad (color aligned on depth).dac (depth aligned on color)'''
cam = serv.Device(device_id=0, streams=[pyrs.stream.ColorStream(fps=60),
                                        pyrs.stream.DepthStream(fps=60)
                                        # pyrs.stream.CADStream(fps=60),                                        # pyrs.stream.DACStream(fps=60)                                        ])
scale = cam.depth_scale * 1000
while (True):
    cam.wait_for_frames()
    # print(cam.color)    current_color = cam.color[:, :, ::-1]
    current_depth = cam.depth * scale
    # current_cad = cam.cad[:, :, ::-1]    # current_dac = cam.dac * scale
    cv2.imshow('color', current_color)
    cv2.imshow('depth', current_depth / 1000)
    # cv2.imshow('CAD', current_cad)    # cv2.imshow('DAC', current_dac / 1000)
    cv2.waitKey(10)

2018년 3월 12일 월요일

Linux partition type

문제: Ubuntu에서 HDD의 Partition type을 보니, Filesystem ext4, extended, swap이렇게 있는데 이게 다 뭔가?

해결:
<참조: https://askubuntu.com/questions/40344/ext4-extended-linuxswap>

Linux의 partition은 3종류: primary, extended, logical

filesystem ext4는 primary, extended는 extended, swap은 extended내에 위치한 logical partition에 해당됨(그래서 swap과 extended의 용량이 동일).

swap은 가상메모리같이 hdd의 일부를 ram처럼 사용하기위해서 잡아놓은 공간으로 지우면 안됨.

2017년 10월 9일 월요일

linux에서 read-only filesystem의 file 혹은 folder/directory 제거하기

문제: linux에서 read-only filesystem이기에 지워지지않는 파일/폴더를 지우자.

해결:
1. cat /proc/mounts 로 mount 상태 보기
   해당 disk가 read-only 인지 확인 /dev/~ /media/ID/USB vfat ro, ~~~

2. mount -o remount,rw /dev/~(위에서 밑줄친 부분) 을 이용하여 read-write로 remount 시킴.

3. 1번 다시해서 확인.

4. rm으로 삭제하기
   rm -r -f 폴더명

2017년 3월 23일 목요일

linux ubuntu 새 하드디스크 설치하기

문제: linux ubuntu에 새 하드디스크를 설치하자.

해결:
<참고: http://reachlab-kr.github.io/linux/2015/10/03/Ubuntu-fstab.html>
<참고: http://www.thegeekstuff.com/2012/08/2tb-gtp-parted>

1. 하드디스크를 직접 컴퓨터에 연결한다.

2. 연결된 하드디스크를 확인한다.
ctrl+alt+t로 터미널 창 열기
sudo fdisk -l
이렇게하면 현재 물리적으로 연결된 HDD/SSD(+RAM,...)들이 쭉 보임.

Disk /dev/ram#: ~~ <- RAM임.
Disk /dev/sda: AAA GiB, ~~~ bytes, ~~~ sectors <-- 이렇게 /dev다음 /sd#로 시작하면 하드디스크임. sda, sdb, sdc, sdd, ... 순서대로.

새로 설치한 디스크를 확인할 것.
- 용량이 다르다면 용량으로.
cat /etc/fstab와 위 결과를 비교.
- 새 하드디스크는 Disk, Units, Sector size, I/O size까지만 있으나 쓰던 하드디스크는 Disklabel type, Disk identifier, Device, Boot, Start등을 표시하는 테이블까지 있음.
ex) /dev/sdb <- 내가 설치한 것.
- 만약 위의 것으로 구분이 안된다면(다른 PC에서 포맷하거나 사용한 적이 있다면 구분안됨), 리눅스 폴더의 왼쪽 장치를 보면 새볼륨으로 연결된 장치가 있음. 그냥 클릭 후, 연결하면 됨.

df -h
If your new hdd is empty, check using this command.

* 만약 연결하려는 HDD에 data가 있고 그대로 사용하려는 경우는 5번으로 Go.
3. 파티션 생성
3.1. cfdisk활용 (2TB이하면)
sudo cfdisk /dev/sdb
방향키(위아래)로 disk선택, 방향키(좌우)로 행동선택
지우고 싶은 [Delete]선택해서 지우고,
Free space에서 [New]로 할당 -> 사이즈 입력(기본은 최대) -> primary -> [Write]현재까지 결과 저장하여 partition table생성 -> [Quit].

3.2. 2TB이상인 경우: Parted mklabel활용
sudo parted /dev/sdb
At (parted), 아래를 입력.
print(HDD정보 보여줌) -> mklabel gpt(파티션 테이블 gpt로 만듬)
-> mkpart primary 0GB 6001GB(print시 나오는 hdd max값)(파티션 생성) -> ctrl+c 종료

4. 포맷
sudo mkfs -t ext4 /dev/sdb1
ext4가 최신 유행 파일시스템.

5. 마운트
보통 자동으로 됨.
만약 안된다면
gnome-disks -> 해당 disk > 기어모양에서 옵션으로 설정가능.
여기서 마운트지점을 바꾸면 이름도 바꿀 수 있음.
자동 마운트 옵션: 끔 (부팅시 자동으로 마운트 됨)
시작할 때 마운트: 켬
사용자 인터페이스에서 보이기: 켬
마운트 지점: 원하는 것 입력.
종료 후, 재생버튼(삼각형) 노름.

b. 영구적 마운트
(/etc/fstab파일 편집해야 함)
b.0 mount point생성 (여기서는 /mnt/extHDD)
mkdir /mnt/extHDD
chmod 777 /mnt/extHDD

b.1 uuid 확인
sudo blkid
/dev/sda1: UUID="철수" TYPE="ext4"
위에서 /dev/sda1의 UUID를 기억해둔다.

만약 sda1이 어떤HDD인지 모르겠다면 df -h와 연결하여 확인한다.

b.2 fstab파일 편집
sudo gedit /etc/fstab

파일 맨 아래 기존 UUID=영희 ~~~ 아래에
위의 정보추가

UUID=철수 /data(mount point/나중에 여기로 접근) ext4(filesystem) defaults 1 2

위에서 defaults는 마운트옵션
1은 dump(백업)여부, 0(불가), 1(가능)
2는 무결성 검사 우선순위, 0(안함), 1(우선함/주로 루트), 2(나중함/주로 저장HDD)

b.3 mount 다시 확인
sudo mount -a
df -h


6. 마운트 결과 확인
cat /proc/mounts | grep /dev*
하면 /dev/sda~~ 와 연결된 정보들이 나타남.

7. 권한 수정
sudo chown -R [username] /media/sda1/
sudo chmod +w /media/sda1/

2017년 2월 6일 월요일

linux, ubuntu에서 shift delete 혹은 rm으로 삭제한 파일을 살리자.

문제: linux, ubuntu에서 shift delete 혹은 rm으로 삭제한 파일을 살려보자.

해결:
1. 삭제가 발생한 디스크의 사용을 일단 멈춘다.

2. 어느 디스크에서 삭제가 이루어졌는지 확인.
df -T 혹은 sudo fdisk -l
ex) /dev/sdb2

3. 삭제된 파일을 확인하고 inode를 메모
sudo ntfsundelete -f -s -S 85m-90m -m '*.caffemodel' /dev/sdb2
-s : scan
-f : 디스크를 남이 접근하더라도 강제로 사용
-S : 파일크기(byte)
- m : 파일의 이름
ex) 1, 2, 7, 8, 9

3. 복구한다. 복구된 위치는 ~(home directory)
sudo ntfsundelete -u -f -i 1,2,7-9 /dev/sdb2 -d ~
-u : undelete
-i : 복구를 원하는 inode, 콤마사이는 붙인다.
-d : 복구된 파일이 위치할 디렉토리(삭제가 발생한 디스크는 피한다).

4. 이렇게 복구된 경우 보통 root 소유이기에 소유자 권한을 바꿔준다.
sudo chown yochin:yochin 파일이름

끝.

2016년 11월 10일 목요일

linux su sudo password

처음 설치하면 su 계정이 없다고.

sudo passwd root

하고 암호(현 계정 암호)치면

생성됨.

linux package has no installation candidate

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe"
sudo apt-get update
sudo apt-get install libncurses5-dev

linux usb 마운트

<참조: http://mintnlatte.tistory.com/55>

1. USB장치를 리눅스에 꽂는다.
1.1. 만약 Linux가 가상으로 설치되었다면(ex: virtualbox) 인식되도록 추가작업해야됨(장치->USB->해당 장치 클릭)

2. fdisk -l
H/W 리스트 보기
(맨 처음 device boot(/dev/sdb1)와 맨 오른쪽 system(FAT16)을 봐야함

3. 마운트 포인트를 생성
mkdir /mnt/usb

4. H/W와 마운트 포인트 연결
mount -t vfat /dev/sdb1 /mnt/usb

5. 사용 후 연결끊기
umount /mnt/usb

2016년 11월 9일 수요일

linux 불필요한 파일 삭제하기

1. 임시 패키지와 휴지통 비우기
sudo apt-get clean

2. 오래된 linux-image 제거하기
dpkg -l | grep linux-image

sudo apt-get purge linux-image-x.x.x-xx-generic
sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic
보통 현재, 과거, 그바로 직전 것 정도는 남겨둔다고 함.

현재 버전 체크
uname -r

<참고: http://askubuntu.com/questions/298487/not-enough-free-disk-space-when-upgrading>

virtualbox 디스크 공간 늘리기

vitualbox 공간 늘리기
상황: 윈도우즈에서 virtualbox를 설치하고 가상으로 linux를 설치한 경우.

먼저 Windows에서 사이즈 변경(물리적으로 HDD를 더 늘리는 개념)
1. 해당 대상이

2. 늘리고자하는 VDI확인
virtualbox에서 -> 설정 -> 저장소 -> 컨트롤러 아래 ~~~.vdi
혹은
c:/users/userID/"VirtualBox VMs"/SystemID/~~~.vdi
에 존재함

3. virtualbox디렉토리로 이동
cd c:/program files/oracle/virtualBox

4.VBoxManage modifyhd <fullpath/VID 이름> --resize <용량 MB 단위>
ex) 20GB로
VBoxManage modifyhd c:/users/userID/"VirtualBox VMs"/HDD.vdi --resize 20480

그 후, linux에서 사이즈 변경(linux에서 실제로 늘어난 공간을 인지)
5. sudo apt-get install gparted

6. sudo gparted
 - 확장된 partition 삭제
 - 기존 partition 선택 -> resize
 - 확인

참고: http://egloos.zum.com/repository/v/5730315
참고: https://erlnote.wordpress.com/2015/03/16/virtual-box-vdi-%EC%9A%A9%EB%9F%89-%EB%8A%98%EB%A6%AC%EA%B8%B0/

2015년 12월 21일 월요일

Linux/Windows Compatible code만들기 팁

* compiler가 Linux, Window등 OS를 detect하는 방법 (header / cpp 중간부분에서 먹힘)
    #ifdef _WIN64
    //define something for Windows (64-bit)
    #elif _WIN32
    //define something for Windows (32-bit)
    #elif __APPLE__
    #elif __linux
    // linux
    #elif __unix // all unices not caught above
    // Unix
    #elif __posix
    // POSIX
    #endif
    * 참조, 보다 자세한 링크
* 하지만 stdafx.h와 같이 cpp파일 맨처음에 나오는 것은 위에 것으로도 detect못함.
    이럴경우는 stdafx.h를 가짜로 만들어서 linux에서 사용하는 방법밖에는 없음.
    * 참조

* 결국 추천하는 방법
    header의 경우, 위의 방법(#ifdef _WIN32 ~~ #endif)으로 해결
    cpp의 경우, 특히 #include "stdafx.h"의 경우는 dummy를 만들어서 링크하도록 하고, windows의 진짜 stdafx.h의 경우 #ifdef _WIN32 ~본문~ #endif로 감싸서 windows에서만 실행되도록 만듦. or src코드를 stdafx.h와 별도로 만들어도 됨.

linux, caffe, opencv, tensorflow 설치하기(DIGITS 설치제외)

문제
linux, caffe, opencv, tensorflow를 설치하자.

<참고: http://thebeautifulfuture.tistory.com/68>
<참고: https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide>
<참고: 이전 정리한 내용(old), 새롭게 업데이트한 내용(new)>

해결 (updated on 2018.04.20)
0. linux를 설치(new), 약 30분 소요.
그냥 설치하면 될 것 같지만, linux version에 따라 caffe, tensorflow, opencv를 설치할 수 있는 버전이 달라지는 것 같다. 물론 최신 버전이면 좋을 듯하다.
-> linux 16.04.xx LTS를 설치
-> Install 보단 Try Ubuntu로 집입 후 Install Ubuntu를 추천
-> Download updates, Install third-party software는 uncheck후 진행.

->필요한 옵션 설치 및 세팅
- network 커넥션: IP, netmask등 세팅 -> 인터넷 열어서 확인하기(혹은 ifconfig로 확인)
- 한글 사용: 참고: http://luckeex.tistory.com/289
  -- System Settings -> Language Support -> 언어탭에서 한국어를 맨위로 올린다.
  -- System Settings -> Language Support -> 맨 아래 Keyboard input method system: IBus로 선택
  -- System Settings -> Text Entry -> + -> ibus 입력해서 한국어(ibus)를 추가함.
  -- Win키+space로 우상단 En->한국어 바뀜을 확인.
  -- (안해도 됨) System Settings -> Keyboard -> Typing -> Alter. Char. Key -> Alt Left

-> 기타 설치 추천 소프트웨어: Meld(winmerge같은 프로그램)

* 혹시 ubuntu설치 후, PCIe Bus Error: severity=Corrected 와 같은 에러가 생긴다면
<https://unix.stackexchange.com/questions/327730/what-causes-this-pcieport-00000003-0-pcie-bus-error-aer-bad-tlp>
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 찾아서 아래와 같이
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nommconf" 밑줄부분 추가
저장.

1. 그래픽 드라이버를 설치(new)
그냥 설치하지 않아도 기본적으로 설치가 된다. 혹은 아래를 따라하면 설치가 된다.
System Settings->Software&Updates->Additional Drivers -> choose Using NVIDIA binary driver -> apply change
만약 여러개의 드라이버가 보인다면, 하나만 남겨두고 제거한 후, 아래를 수행하자(동시에 여러개가 떠 있는 경우, 경우에 따라 원치않은 드라이버를 선택하여 설치될 수 있다).

혹은 그냥 설치하고 싶다면,
 >> http://www.linuxandubuntu.com/home/how-to-install-latest-nvidia-drivers-in-linux
 sudo apt-get purge nvidia*
 sudo add-apt-repository ppa:graphics-drivers
 sudo apt-get update

 sudo apt-get install nvidia-375

 lsmod | grep nvidia

2.3.4의 다운로드를 한번에 걸면 효율적.

2. CUDA install(new)
https://developer.nvidia.com/cuda-downloads 에 접속하기.

Linux->x86_64->Ubuntu0>16.04->deb(local)->download
최근에는 CUDA 9.1까지 나왔기에 8.0은 우하단 Legacy에 가야 받을 수 있음.

다운받은 폴더에서
`sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb`
`sudo apt-get update`
`sudo apt-get install cuda`

https://docs.nvidia.com/deploy/cuda-compatibility/index.html
CUDA-GPU compatibility check.
Pascal - 1080TI, 1080
Maxwell - TitanX

* 만약 dependency 에러가 생기면서 막줄이 안된다면 아래 참고
https://askubuntu.com/questions/598607/package-dependency-problem-while-installing-cuda-on-ubuntu-14-04
* sudo apt-get update -> Invalid 'Date' entry in Release file /var/lib/apt/lists/_var_cuda-repo-~~_Release
-> change date format to UTC
ex:) Date: 2016-09-23T15:09:35-07:00
If still get error, no solution.

-끝-
version check는 
'ls /usr/local/cuda/lib64'
입력하여 확장자를 볼 경우, ~~~.so.8.0 식이라면 cuda 8.0이 설치된 것임.
3. CUDNN install(new)
https://developer.nvidia.com/cudnn

Download -> Log in -> Survey (pass) -> Download cuDNN v5.1 for CUDA 8.0 -> cuDNN v5.1 Library for Linux

'tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz' (later version is not verified)
'sudo cp ./cuda/include/* /usr/local/cuda-8.0/include/'
'sudo cp ./cuda/lib64/* /usr/local/cuda-8.0/lib64/'

-끝-
version check는
'ls /usr/local/cuda/lib64/libcudnn*'
후 확장자를 봐서, ~~.so.5.1.5이면 5.1 버전임.

the path of CUDA and CUDNN will be set at 7.

4. NCCL install(new)
https://github.com/NVIDIA/nccl
master가 아닌 8.0으로 받을 것.

제약조건은 CUDA7.0 + Kepler GPU 이상이야 함.
(TITAN X Maxwell, TITAN 1080 Pascal, TITAN X Pascal이라면 여기에 해당됨.)

'unzip nccl-8.0.zip'
'cd nccl-8.0'
'make CUDA_HOME=/usr/local/cuda-8.0 test -j28'
'sudo make /usr/local/lib install'

확인하는 방법은.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./build/lib

./build/test/single/all_reduce_test 10000000
후 테이블처럼 숫자들이 나오면 성공.
 
=> 만약에 여기까지 설치 후, nvidia-smi시 failed to initialize nvml driver/library version mismatch 이 나온다면,
그냥 reboot하면 보통 해결됨. 



If you will use Anaconda, then install below in Conda environment.


5. OpenCV 3.1 설치 (new)
5.1 or 5.2
5.1 Just download and use it on python. (easy)
sudo apt-get install libopencv-dev python-opencv

5.2 Download and compile
opencv는 ubuntu의 경우 apt-get으로 설치가능하다.
귀찮으니 sudo su로 root로 실행하자.
sudo su

// 업데이트 및 다운로드
a.'apt-get update' and 'apt-get upgrade'
b.'apt-get install --assume-yes build-essential cmake git build-essential pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev v4l-utils'

h.'apt-get install gtk2.0'

i.'apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg'

// 다운로드 폴더로 이동
'cd ~/Downloads'
'cd OpenCV'
'wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip'

'unzip opencv.zip'
'cd opencv-3.2.0'
'mkdir release'
'cd release'

// make 전 cmake로 conf를 설정함(아래 명령어 따라하면 됨).
// QT가 off임.
'cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=ON ..'

* 만약 linux/videodev.h 파일이 없다고 하면
sudo apt-get install libv4l-dev
cd /usr/include/linux
sudo ln -s ../libv4l1-videodev.h videodev.h
* 만약 sys/videoio.h 파일이 없다고 하면
위의 옵션에 WITH_V4L=OFF 으로 수정 and use below instead of upper cmake command.
'cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF ..'

// make 후, 설치
grep ^processor /proc/cpuinfo | wc -l CPU의 물리적 코어 수를 확인 후, make시에 make -j core수를 적어주면 빠르다.



'make -j8' // use cpu's 8 cores 활용 2h~

'sudo make install -j8'
// 다음 라인은 끝에 '를 포함하여야 함.
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
'sudo ldconfig'
'sudo apt-get update'

설치 확인
'pkg-config --modversion opencv'
버전이 나옴.

6. DIGITS 설치 및 사용(old)
 - 1.1. 설치
    -- https://developer.nvidia.com/digits 사이트보고 그냥하면 됨. 쉬움.
    -- install link
     --- https://github.com/NVIDIA/DIGITS/blob/master/docs/UbuntuInstall.md
 - 1.2. 사용
    -- https://github.com/NVIDIA/DIGITS/blob/master/docs/GettingStarted.md 에 가면, 사용 설명서가 있음.
    -- ./runme.sh 서버 실행하기
    -- 1.2.1 DIGITS 서버에 접속하기
       --- http://localhost/ 혹은 http://localhost:5000/ 혹은 http://localhost:34448/
    -- 1.2.2 데이터 셋 선택
    -- 1.2.3 모델 선택
    -- 1.2.4 학습

1.5 Anaconda install

7. 환경변수 설정

/etc/profile 파일의 맨 위에 다음을 추가하고 저장 후, 재로그인하면 된다.
sudo gedit /etc/profile
________________________________________________________________
# cuda & cudnn  
export CUDA_HOME=/usr/local/cuda  
export PATH=$CUDA_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64  

# caffe  
export CAFFE_HOME=~/caffe  
export PYTHONPATH=$CAFFE_HOME/python:$PYTHONPATH  

# nccl  
export NCCL_ROOT_DIR=/usr/local/nccl  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nccl/lib  

# digits  
export DIGITS_HOME=~/digits
________________________________________________________________  


8. caffe 설치(new)

// BVLC/caffe에서 복사해옴. 먼저 관련 라이브러리 업데이트

sudo apt-get update

sudo apt-get upgrade
<yochin>
sudo apt-get install -y build-essential cmake git pkg-config

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install -y libatlas-base-dev 

sudo apt-get install -y --no-install-recommends libboost-all-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

# (Python general)
sudo apt-get install -y python-pip

# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy

# (or, Python 3.5 development files)
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy

# (OpenCV 2.4)
sudo apt-get install -y libopencv-dev

(or, OpenCV 3.1 - see the instructions below --> skip)
 
// caffe 다운로드 
'git clone https://github.com/BVLC/caffe'

 
// 사용자권한을 바꿈.
chown -R ID:ID caffe (ID is yourid)
cd caffe
cp Makefile.config.example Makefile.config
복사한 후, 아래와 같이 되어있는지 확인한다. 없으면 추가하거나 수정한다. 앞부분에 아래와 같이 #이 없어야 함.

USE_CUDNN := 1
USE_NCCL := 1
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
OPENCV_VERSION := 3
// \ 다음에 space 없어야 됨.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50 \
-gencode arch=compute_61,code=compute_61
BLAS := atlas
PYTHON_LIB := /usr/lib
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/

// hdf5용 링크 교체
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 

터미널창 새로 열고
cd caffe/python
for req in $(cat requirements.txt); do pip install $req; done

cd ..
// Makefile 수정 for Ubuntu16.04
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)을
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)으로 교체
 
# LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf leveldb snappy \
  lmdb boost_system boost_filesystem hdf5_hl hdf5 m \
  opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio 
으로 교체
 
// caffe build
cd /caffe
make all -j8
make test
make runtest
make pycaffe
make distribute


에러없이 완료되면 성공한 것!
 
이후, caffe 폴더를 ~/caffe로 이동. 

caffe -version을 입력하면 버전을 확인할 수 있다.
 
9. PyCharm설치 및 module연결
https://www.jetbrains.com/pycharm/
Download -> Community -> Save -> 원하는 곳에 압축풀기(~/)
./bin/pycharm.sh
로 실행 
간단한 테스트 프로젝트 및 python코드 생성 
-Test Code-
____________________________________________________________________
# coding=utf-8
__author__ = 'yochin'
import sys
sys.path.append('/usr/lib/python2.7/dist-packages')
import numpy as np
import caffe

if __name__ == "__main__":
  caffe.set_device(0)
  caffe.set_mode_gpu()
____________________________________________________________________________________________

 - ImportError: No module named caffe가 뜬다면  caffe모듈을 python이 읽을 수 있도록 설정해야 됨.

/caffe에 _caffe.so가 있는지 확인 후,
/etc/profile 에 
PYTHONPATH에 caffe 경로가 추가되어있는지 바르게되어있는지 확인

아니면
export CAFFE_HOME=~/caffe
export PYTHONPATH=$CAFFE_HOME/python:$PYTHONPATH
과 같이 설정함.

10. Tensorflow 설치하기
tensorflow는 source부터가 아닌 binary를 그냥 사용하기로 함.
https://www.tensorflow.org/get_started/os_setup 에 접속하여 Pip install을 따라하면 되는데 다음과 같다.

'sudo apt-get install python-pip python-dev'
'sudo pip install tensorflow-gpu'

if you want to install a specific version of tensorflow, use below commnad
'sudo pip install tensorflow-gpu==1.2.0.rc0'

if you want to install by compiling, link below
http://goodtogreate.tistory.com/entry/TensorFlow-GPU-%EB%B2%84%EC%A0%84-%EC%9A%B0%EB%B6%84%ED%88%AC-1604%EC%97%90-%EC%84%A4%EC%B9%98-%ED%95%98%EA%B8%B0?category=620143

11. PyCharm에서 TF연결 및 테스트하기

https://www.tensorflow.org/get_started/os_setup#test_the_tensorflow_installation
를 따라하자
$ python...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>


8. caffe 설치/업데이트(old)
 - a. https://github.com/BVLC/caffe 에서 우측 [Clone or download]를 눌러 zip파일로 다운로드 및 압축풀기 (단 설치경로는 DIGIT내의 caffe와 다른 곳에 함, 만약에 이전에 설치한 caffe가 있다면, 그 caffe는 압축하여 백업으로 보관하고 아래 작업하기).
 - b. ubuntu에서 설치하는 법 보고 따라하기
     http://caffe.berkeleyvision.org/install_apt.html (일반적인 인스톨)
     http://caffe.berkeleyvision.org/install_apt.html (ubuntu에서 인스톨)

     -- 먼저 관련 라이브러리들 다운받기(업데이트하는 경우는 패스)
       .sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
       .sudo apt-get install --no-install-recommends libboost-all-dev   (BOOST library)
       .sudo apt-get install libatlas-base-dev   (ATLAS BLAS library)
       .sudo apt-get install python-dev     (Python interface library)

     -- CUDA도 설치/업데이트
       .CUDA는 홈페이지에서 다운받기 및 설치(https://developer.nvidia.com/cuda-downloads)
         .. 버전체크는 콘솔창에 nvcc --version
         .. 다운로드시 cudnn과의 버전 매칭은 다음과 같음.
                   * CUDA 7.5 & cudnn 4
                   * CUDA 8 & cudnn 5
         ..Ubuntu 14.04 deb(local) download(in my case)
         .. installation command
  1. 'sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb` 혹은 `sudo dpkg -i cuda-repo-ubuntu1404-8-0-rc_8.0.27-1_amd64-deb`
  2. `sudo apt-get update`
  3. `sudo apt-get install cuda`

       .cuDNN은 (https://developer.nvidia.com/cudnn)에서 다운로드 후, copy만 해주면 됨.  (include -> /usr/local/cuda/include, lib64 -> /usr/local/cuda/lib64)
       .sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev (14.04는 다음도 추가)

  - http://caffe.berkeleyvision.org/installation.html#compilation
      Makefile.config.example을 Makefile.config파일로 복사한 후, 열어서 자신의 컴퓨터에 맞게 경로등을 바꾸어준다.
-> uncomment: USE_CUDNN
-> CUDA_Path
->Anaconda path
        .make all
        .make test
        .make runtest
 (한참 기다려야 됨)
        .make pycaffe
        .make matcaffe
        .make distribute <외부에 배포시 필요함.안해도 됨>
3. Python에서 caffe 테스트하기
 - ImportError: No module named caffe
 - caffe모듈을 python이 읽을 수 있도록 설정해야됨.

PYTHONPATH=caffe/python:$PYTHONPATH 하면 됨. /caffe에 _caffe.so가 있으면 됨.

ex) /etc/profile 맨 위에 아래 추가-----------
export ANACONDA_HOME=${HOME}/anaconda2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64
export CAFFE_HOME=${HOME}/caffe
export PATH=/usr/local/cuda-7.5/bin:$PATH
export PYTHONPATH=${HOME}/caffe/python:$PYTHONPATH
---------------------------------------

-Test Code-
# coding=utf-8__author__ = 'yochin'
import sys
sys.path.append('/usr/lib/python2.7/dist-packages') import numpy as np import caffe import caffe.draw
if __name__ == "__main__":
    caffe.set_device(0)
    caffe.set_mode_gpu()
* error case
>>> error: ‘CUDNN_PROPAGATE_NAN’ was not declared in this scope cudnn header의 path체크. 맞다면 cudnn버전 문제일수 있음.
>>> fatal error: python.h: no such file or directory
빌드시에 python 경로설정문제로 Makefile.config에서 PYTHON_INCLUDE의 경로가 맞는지 확인할 것.
>>> error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file or directory
LD_LIBRARY_PATH가 제대로인지 체크할 것.


2015년 12월 15일 화요일

windows에서 linux용 드라이브 접근하기

윈도우즈에서 리눅스용 드라이브접근하기

http://sourceforge.net/projects/ext2fsd/files/Ext2fsd/
 - 최신폴더로 들어가서 exe버전을 다운로드 후, next/next누르며 설치
 - 재부팅없이 실행하면 파일시스템이 EXT3/4인 드라이브가 보임
 - 그걸 더블클릭하고
   -- Mount volume in readonly mode 해제(쓰기가능해짐)
   -- Automatically mount via Ext2Mgr 체크하고 표시 드라이브명 선택(윈도우즈에 마운트됨)
   -- Apply

<참조: http://deviantcj.tistory.com/333> <- 그림으로 설명되어있음.



반대로 리눅스에서 윈도우즈 드라이브접근하기는 이전글 참조
http://yochin47.blogspot.com/2015/11/ubuntu-windows.html

2015년 11월 25일 수요일

linux 라이브러기 경로 추가하기

리눅스에 라이브러리 경로 추가시에는 

추가하고싶은 경로가 path : /usr/local/lib라면

1) /etc/ld.so.conf파일 수정하기
/etc/ld.so.conf 파일에 
include /usr/local/lib를 추가한다.
읽기전용파일을 수정하기에 sudo vi 파일이름으로 열고 저장해야한다.

입력 후 ldconfig 로 다시 링킹 정보를 읽는다.


2) <추천> /etc/profile 파일 수정하기

/etc/profile 파일의 맨 위에
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
export LD_LIBRARY_PATH
을 추가하고 저장 후, 재로그인하면 된다.


<참조: http://egloos.zum.com/shad0w/v/1583869>