openCV Version 3.4.4 opencv(extra modules) 컴파일 후 우분투 18.04 설치 방법.
Ubuntu 18.04
python 버전 확인
python3 --version
python3 간단한 동작 확인
python3
>> print("오픈CV + 우분투 18.04!")
오픈CV + 우분투 18.04!
>> quit()
1 단계 : opencv 의존성 패키지 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
개발 도구 설치
sudo apt-get install build-essential cmake unzip pkg-config
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk-3-dev
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
OpenCV 내부의 메트릭스 기능과 같은 다양한 기능을 최적화하는 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
파이썬 라이브러리 버전 설치
sudo apt-get install python3-dev
2 단계: OpenCV 소스코드 다운로드
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.4.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.4.zip
압축해제
unzip opencv.zip
unzip opencv_contrib.zip
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
적극적으로 개발중인 모듈 및 또는 특허가있는 모듈이다.(상업적/산업적 용도로는 사용 가능하지 않음)
즉, contrib 모듈에 있는 건 비 상업적으로만 사용해야 한다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
동일한 버전 다운로드
mv opencv-3.4.4 opencv
mv opencv_contrib-3.4.4 opencv_contrib
3 단계: Python 환결 설정.
파이썬 패키기 관린 pip 설치
cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
가상 개발 환경 구성
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
가상 cv 환경 구축
mkvirtualenv cv -p python3
cv 가상 환경 확인
workon cv
(cv) username:~$
OpenCV 이미지 다차원 처리 NumPy 배열로 표현하며 최종 단계 숫자로 처리함.
pip install numpy
4 단계: OpenCV 컴파일.
가상 환경 접근
workon cv
컴파일
cd ~/opencv/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..
OPENCV_ENABLE_NONFREE=ON 설정해 특허 알고리즘 사용 할 수 있도록 한다.
CMAKE 출력 파일 확인
Cmake 파일이 파이썬 인터프리터 등록 확인.
"Non-free algorithms" 이 "YES"로 설정되어 있는지 확인
참고
stdlib 관련된 오류 발생시 stdlib.h: No such file or
CMake : -D ENABLE_PRECOMPILED_HEADERS=OFF
이 경우에는 빌드 디렉토리를 삭제하고, 다시 빌드, 위의 옵션이 포함 된 CMake를 다시 실행하는 것이 좋다.
이렇게하면 stdlib.h 오류가 해결.
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
실패시 기본 프로세서 정보로 컴파일
make clean
make
설치
sudo make install
sudo ldconfig
설치 확인
pkg-config --modversion opencv
3.4.4
5 단계: 설치 확인.
폴더 확인
ls /usr/local/python/cv2/python-3.6
cv2.cpython-36m-x86_64-linux-gnu.so
이름 변경.
cd /usr/local/python/cv2/python-3.6
sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
심볼 링크
cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so
6 단계 : OpenCV 테스트
cd /home/username/
workon cv
python
Python 3.4.4
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.4'
>>>
--------------
파이썬 2.7를 설치 하려면,
1 단계가 끝나고 아래 명령어 실행.
sudo apt-get install python2.7 python2.7-dev
sudo python2.7 get-pip.py
mkvirtualenv cv -p python2.7
카테고리
asm
(27)
bootloader_x86_grub
(1)
C
(92)
compile
(11)
config
(76)
CPP
(13)
CSS
(1)
debugging
(7)
gimp
(1)
Go
(1)
html
(1)
Java
(1)
JavaScript
(1)
kernel
(19)
LibreOffice
(3)
Linux system progamming
(21)
MFC
(1)
opencv
(4)
OpenGL
(1)
PHP
(1)
Python
(4)
qemu
(29)
shell
(3)
socket
(7)
troubleshooting
(2)
ubuntu18.04
(2)
windows
(1)
2018/12/23
Ubuntu 16.04 OpenCV 3.1.0 및 Python 3.5 설치
우분투 OpenCV 3.1.0 및 Python 3.5 설치
Ubuntu 16.04
OpenCV 3.1.0 버전 Python 3 이상과 호환.
Python2.7.12 버전: 터미널 파이썬 실행 버전(우분투 기본 설치 버전)
Python3.5.2 버전: python3 명령을 통해 접근 할 수 있음.
두개를 동시에 사용해야 하므로, 동작 안하는 프로그램이 있을 수 있다.
이 문제는 env 환경 구성에서 python 정보를 직접 입력해 해결 하면된다.
1 단계 : opencv 의존성 패키지 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config
pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk-3-dev
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
OpenCV 내부의 메트릭스 기능과 같은 다양한 기능을 최적화하는 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
파이썬 버전 설치
sudo apt-get install python2.7-dev python3.5-dev
2 단계: OpenCV 소스코드 다운로드
https://github.com/Itseez/opencv/archive/3.1.0.zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip
동일한 버전 다운로드
3 단계: Python 환결 설정.
파이썬 패키기 관린 pip 설치
cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
cat 명령으로 환경 설정
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
둘 중 편한 방법을 선택해 적용한다.
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
OpenCv 3.1 + Python 2.7 버전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv -p python2
3.x 버전으로 만들 경우
mkvirtualenv cv -p python3
어떤 버전을 사용해도 상관은 없다.
최졍 cv python 가상 환경을 만드는게 목적이다.
cv 가상 환경 확인
workon cv
(cv) username:~$
OpenCV 이미지 다차원 처리 NumPy 배열로 표현하며 최종 단계 숫자로 처리함.
pip install numpy
4 단계: python 3.5 + OpenCV 컴파일.
가상 환경 접근
workon cv
컴파일
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..
stdlib 관련된 오류 발생시 stdlib.h: No such file or
CMake : -D ENABLE_PRECOMPILED_HEADERS=OFF
이 경우에는 빌드 디렉토리를 삭제하고, 다시 빌드, 위의 옵션이 포함 된 CMake를 다시 실행하는 것이 좋다.
이렇게하면 stdlib.h 오류가 해결.
CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 2:
Interpreter : /home/username/.virtualevns/cv/bin/python (ver 2.7.12)
Libraries : /usr/lib/x86_64-linux-gnu/libpython2.7.12~~~
numpy: /home/username/.virualenvs/cv/lib/python2.7.12/site.packages/numpy/core~~~~
packages path: lib/python2.7.12/site-packages
1. 컴파일 2.7 버전으로 가상환경 구축
2. 라이브러는 2.7 사용
3. NumPy 2.7 가상환경
4. 패키지 경로 cv2.so lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages/
3.5 버전으로 컴파일 했을 경우
CMAKE 의 출력 내용은 3.5로 나타난다.
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
실패시 기본 프로세서 정보로 컴파일
make clean
make
설치
sudo make install
sudo ldconfig
5 단계: 설치 확인.
Python2.7: 컴파일시.
ls -l /usr/local/lib/python2.7/site-packages/
심볼 링크
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
Python3.5: 컴파일시.
ls -l /usr/local/lib/python3.5/site-packages/
동적 라이브러리가 이름이 변경되 고생 함.
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so
심볼 링크
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
6 단계 : OpenCV 테스트
python 3.5 구성시
cd /home/username/
workon cv
python
Python 3.5.2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
python 2.7 구성시
cd /home/username/
python
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
어떤한 파있너 버전을 사용해도 상관이 없다 cs2를 파이썬이 호출 하면된다.
Ubuntu 16.04
OpenCV 3.1.0 버전 Python 3 이상과 호환.
Python2.7.12 버전: 터미널 파이썬 실행 버전(우분투 기본 설치 버전)
Python3.5.2 버전: python3 명령을 통해 접근 할 수 있음.
두개를 동시에 사용해야 하므로, 동작 안하는 프로그램이 있을 수 있다.
이 문제는 env 환경 구성에서 python 정보를 직접 입력해 해결 하면된다.
1 단계 : opencv 의존성 패키지 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config
pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk-3-dev
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
OpenCV 내부의 메트릭스 기능과 같은 다양한 기능을 최적화하는 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
파이썬 버전 설치
sudo apt-get install python2.7-dev python3.5-dev
2 단계: OpenCV 소스코드 다운로드
https://github.com/Itseez/opencv/archive/3.1.0.zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip
동일한 버전 다운로드
3 단계: Python 환결 설정.
파이썬 패키기 관린 pip 설치
cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
cat 명령으로 환경 설정
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
둘 중 편한 방법을 선택해 적용한다.
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
OpenCv 3.1 + Python 2.7 버전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv -p python2
3.x 버전으로 만들 경우
mkvirtualenv cv -p python3
어떤 버전을 사용해도 상관은 없다.
최졍 cv python 가상 환경을 만드는게 목적이다.
cv 가상 환경 확인
workon cv
(cv) username:~$
OpenCV 이미지 다차원 처리 NumPy 배열로 표현하며 최종 단계 숫자로 처리함.
pip install numpy
4 단계: python 3.5 + OpenCV 컴파일.
가상 환경 접근
workon cv
컴파일
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..
stdlib 관련된 오류 발생시 stdlib.h: No such file or
CMake : -D ENABLE_PRECOMPILED_HEADERS=OFF
이 경우에는 빌드 디렉토리를 삭제하고, 다시 빌드, 위의 옵션이 포함 된 CMake를 다시 실행하는 것이 좋다.
이렇게하면 stdlib.h 오류가 해결.
CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 2:
Interpreter : /home/username/.virtualevns/cv/bin/python (ver 2.7.12)
Libraries : /usr/lib/x86_64-linux-gnu/libpython2.7.12~~~
numpy: /home/username/.virualenvs/cv/lib/python2.7.12/site.packages/numpy/core~~~~
packages path: lib/python2.7.12/site-packages
1. 컴파일 2.7 버전으로 가상환경 구축
2. 라이브러는 2.7 사용
3. NumPy 2.7 가상환경
4. 패키지 경로 cv2.so lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages/
3.5 버전으로 컴파일 했을 경우
CMAKE 의 출력 내용은 3.5로 나타난다.
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
실패시 기본 프로세서 정보로 컴파일
make clean
make
설치
sudo make install
sudo ldconfig
5 단계: 설치 확인.
Python2.7: 컴파일시.
ls -l /usr/local/lib/python2.7/site-packages/
심볼 링크
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
Python3.5: 컴파일시.
ls -l /usr/local/lib/python3.5/site-packages/
동적 라이브러리가 이름이 변경되 고생 함.
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so
심볼 링크
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
6 단계 : OpenCV 테스트
python 3.5 구성시
cd /home/username/
workon cv
python
Python 3.5.2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
python 2.7 구성시
cd /home/username/
python
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
어떤한 파있너 버전을 사용해도 상관이 없다 cs2를 파이썬이 호출 하면된다.
ubuntu 14.04 python3.4 + OpenCV 3.0 개발 환경 구축 및 테스트
우분투 OpenCV 3.0 및 Python 3.4 설치
Ubuntu 14.04
OpenCV 3.0 버전 Python 3 이상과 호환.
Python 3.4 버전과 Python2.7 버전은 설치 방법은 다름.
1 단계 : 필수 구성 요소 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config
pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk2.0-dev
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
2 단계: Python 설치 1
파이썬 패키기 관린 pip 설치
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
OpenCv 3.0 + Python 3.4 비전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv
2 단계: Python 설치 2
python 3.4 개발도구 설치
sudo apt-get install python3.4-dev
OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다.
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치
pip install numpy
cash 디렉토리 문제 발생 지우고 다시 설치
sudo rm -rf ~/.cache/pip/
pip install numpy
3 단계: python 3.4 + OpenCV 3.0 빌드
opencv 3.0 다운로드
cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0
동일 버전 설이 3.0.0
빌드 설정:
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
-D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다.
이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.
CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 3:
Interpreter : /home/username/.virtualevns/cv/bin/python3.4 (ver 3.4)
Libraries : /usr/lib/x86_64-linux-gnu/libpython3.4~~~
numpy: /home/username/.virualenvs/cv/lib/python3.4/site.packages/numpy/core~~~~
packages path: lib/python3.4/site-packages
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
설치
sudo make install
sudo ldconfig
4 단계
python3.4 설치 위치
/usr/local/lib/python3.4/site-packages
가상 개발 환경으로 심볼릭 링크
cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.cpython-34m.so cv2.so
심볼릭 링크가 잘 생성 되는지 확인한다. 만약 링크가 생성이 안되면 파일썬에서 OpenCV 호출 하지 못한다.
5 단계
python3.4 바인딩을 사용하여 OpenCV 3.0 설치 완료
가상 개발 환경 설치 확인
workon cv
python
>>> import cv2
>>> cv2.__version__
'3.0.0'
6 단계
테스트
색상이 있는 사진 한장 준비.
pip install imutils
vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2
# 이미지 로드
image = cv2.imread("test.jpg")
# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)
# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)
# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)
실행
python find_image.py
Ubuntu 14.04
OpenCV 3.0 버전 Python 3 이상과 호환.
Python 3.4 버전과 Python2.7 버전은 설치 방법은 다름.
1 단계 : 필수 구성 요소 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config
pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk2.0-dev
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
2 단계: Python 설치 1
파이썬 패키기 관린 pip 설치
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
OpenCv 3.0 + Python 3.4 비전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv
2 단계: Python 설치 2
python 3.4 개발도구 설치
sudo apt-get install python3.4-dev
OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다.
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치
pip install numpy
cash 디렉토리 문제 발생 지우고 다시 설치
sudo rm -rf ~/.cache/pip/
pip install numpy
3 단계: python 3.4 + OpenCV 3.0 빌드
opencv 3.0 다운로드
cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0
동일 버전 설이 3.0.0
빌드 설정:
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
-D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다.
이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.
CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 3:
Interpreter : /home/username/.virtualevns/cv/bin/python3.4 (ver 3.4)
Libraries : /usr/lib/x86_64-linux-gnu/libpython3.4~~~
numpy: /home/username/.virualenvs/cv/lib/python3.4/site.packages/numpy/core~~~~
packages path: lib/python3.4/site-packages
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
설치
sudo make install
sudo ldconfig
4 단계
python3.4 설치 위치
/usr/local/lib/python3.4/site-packages
가상 개발 환경으로 심볼릭 링크
cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.cpython-34m.so cv2.so
심볼릭 링크가 잘 생성 되는지 확인한다. 만약 링크가 생성이 안되면 파일썬에서 OpenCV 호출 하지 못한다.
5 단계
python3.4 바인딩을 사용하여 OpenCV 3.0 설치 완료
가상 개발 환경 설치 확인
workon cv
python
>>> import cv2
>>> cv2.__version__
'3.0.0'
6 단계
테스트
색상이 있는 사진 한장 준비.
pip install imutils
vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2
# 이미지 로드
image = cv2.imread("test.jpg")
# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)
# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)
# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)
실행
python find_image.py
ubuntu 14.04 opencv3.0 + python 2.7 바인딩 개발 환경 구축 및 테스트
우분투 OpenCV 3.0 및 Python 2.7 설치
Ubuntu 14.04
OpenCV 3.0 버전 Python 3 이상과 호환.
Python 2.7 버전과 Python 3 이상 버전은 설치 방법은 다름.
1 단계
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade
2 단계
개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config
pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성
3 단계
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
4 단계
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk2.0-dev
5 단계
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
6 단계
OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran
7 단계
파이썬 패키기 관린 pip 설치
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
8 단계
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf /home/username/.cache/pip
사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc
OpenCv 3.0 + Python 2.7 비전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv
9 단계
python 2.7 개발도구 설치
sudo apt-get install python2.7-dev
OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다.
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치
pip install numpy
pip install imutils
10 단계
opencv 3.0 다운로드
cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0
빌드 설정 :
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
-D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다.
이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.
컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.
설치
sudo make install
sudo ldconfig
11 단계
Python2.7 설치 위치
/usr/local/lib/python2.7/site-packages
가상 개발 환경으로 심볼릭 링크
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
12 단계
python2.7 바인딩을 사용하여 OpenCV 3.0 설치 완료
가상 개발 환경 설치 확인
workon cv
python
>>> import cv2
>>> cv2.__version__
'3.0.0'
13 단계
테스트
색상이 있는 사진 한장 준비.
vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2
# 이미지 로드
image = cv2.imread("test.jpg")
# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)
# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)
# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)
실행
python find_image.py
윈도우 10 mmc card 설치
윈도우 10 mmc card 설치
BIOS 설정
fasb boot 설정 해제.
설정이 되어 있으면, grub> 모드로 진입 함.
windows_10_mmc_Boot 디렉토리, 현 테스트 중 버전 컴파일 및 실행
더욱 자세한건, 현재 작성중인 파일을 본다 03_config/windows_10_mmc_boot .
프로그램 설명.
"Ubuntu Windows To Go"는 USB 플래시 드라이브, 모바일 하드 드라이브 등과 같은 휴대용 장치에 Windows 설치하고, 다른 컴퓨터 하드웨어에서 운영체제 동작!
"USB 플래시 드라이브에서 Windows 동작"
요구 사항 :
16GB 이상의 USB 디스크 또는 MicroSD 카드 (Windows 10 Version 1703 CN에서는 더 이상 사용할 수 없음.)
UWTG 프로그램.
Windows 설치 이미지 (Windows7, Windows8, Windows8.1, Windows 10, Windows Server 2012, Windows Server 2012 R2)
1. 운영체제 이미지 iso 파일 로딩(윈도위 7 권장하지 않음), 윈도우 8은 ISO 파일을 두 번 클릭하여 수행 된다.
2. Ubuntu WTG Assistant lee_ubuntu_wintogo_test.exe을 실행, 영문 변경. 영어 번역을 할 시 GUI만 무거워 진다. 언어를 변경하면 POP-UP 프로그램이 다시 시작 된다, 하지만 수동으로 다시 실행 시켜 준다.
3. install.wim 선택
3.1 drive:\sources 가상 마운트 지정
3.2 설치 디스크 지정: USB 또는 MicroSD Card 여야 함.
3.3 오른쪽 사이트 창 Com 탭 선택
3.3.1 VHDX 및 Windows 10 Pro를 Ver 선택... 사용한 운영체제 버전 선택.
3.3.2 Option : UEFI + GPT 표시된다.
3.3.2.1: Options VHD 탭에서 슬라이더를 오른쪽으로 이동하여 VHD 파일의 이름을 변경하고 크기를 변경할 수 있음. 일부 옵션은 긴 문자로 처리되지만 수정할 필요 없음.
참고: VHD 파티션 테이블 형식은 GPT이고 VHD Temp Folder는 현재 OS 임시 폴더에 있다.
4. Sys 탭에서 Fix Letter가 기본적으로 선택됨. 또한 이 VHD 시스템에서 부팅 할 때 Lcl 디스크 숨기기를 선택하여 로컬 디스크를 숨 긴다.
(optional) Disk (디스크)탭 아래에 No temp (임시 없음) 옵션이 있다.이 옵션은 이동식 디스크에 직접 VHD를 만드는 것을 의미한다. 장치의 하드웨어 인터페이스 부분이 빠르다면 시간이 절약 된다.
5. GO 선택, 두개의 경고창 생성, 확인 확인 눌러 넘어간다.
6. 대기
(optional) PRO 사용자의 경우 64GB MicroSD 카드에서 파티션 구조는 64GB.
VHD 파일, EFI 파티션 ~ 100MB(EFI 부팅 파일 저장 공간) 및 예비 파티션(~ 4.5GB)을 저장하는 기본 파티션이 있다.
하드디스크 공간 낭비를 하고 싶지 않을 경우에 EFI 파티션을 끝으로 옮기고 4.5 GB 공간을 메인 파티션에 병합한다.
경고: 잘못된 조작으로 인해 데이터가 손실 될 수 있습니다!
여기 까지 완전하게 진행 됨.
UDoo x86 이동
7. BIOS 또는 부팅 선택 모드가 장치에서 지원 한 다면, EFI SD/MMC card(AFGCE)를 선택.
부팅 프로세스 시작
8. 초기화가 시작. 일부 지역 설정 및 개인 정보, 합의 ...... 일반적인 Windows 10 설치 프로세스임.
9. 기본 윈도우 설치 완료
10. 정품 인증 재 설치
11. 내부 eMMC 오프라인 파일 관리자에서 볼 수 없음.
MicroSD Card의 VHD는 운영체제 C:\ 드라이버로 마운트 된다.
이러한 방식으로 보안을 강화 시킨다.
12. 윈도우 스토어 사용 가능
13. 그랙픽 드라이버 설치 후, 세이프 모드 동작, HDMI 동작
참고: UDOO X86은 MicroSD Card를 직접 부팅 할 수 없어 블루 스크린이 표시된다.
이럴때는 UEFI 펌웨어 옵션을 일부 수정했냐 한다.
super + I Windows 설정.
업데이트 및 보안 을 클릭
복구 탭을 클릭한 다음, 오른쪽의 고급 시작 옵션의 아래에 있는 지금 다시 시작 버튼을 클릭.
PC를 다시 시작하면, 옵션 선택 화면에서 문제 해결을 클릭.
고급 옵션 화면에서, UEFI 펌웨어 설정 클릭.
1다시 시작 버튼을 클릭하여 UEFI (BIOS) 부팅 모드로 전환.
BIOS 진입 (Boot)화면에 나타나며, 레거시 모드로 되어 있다면 1 UEFI부팅 모드로 전환한 후, BIOS 설정을 저장하고 PC를 재 부팅.
BIOS 설정
fasb boot 설정 해제.
설정이 되어 있으면, grub> 모드로 진입 함.
windows_10_mmc_Boot 디렉토리, 현 테스트 중 버전 컴파일 및 실행
더욱 자세한건, 현재 작성중인 파일을 본다 03_config/windows_10_mmc_boot .
프로그램 설명.
"Ubuntu Windows To Go"는 USB 플래시 드라이브, 모바일 하드 드라이브 등과 같은 휴대용 장치에 Windows 설치하고, 다른 컴퓨터 하드웨어에서 운영체제 동작!
"USB 플래시 드라이브에서 Windows 동작"
요구 사항 :
16GB 이상의 USB 디스크 또는 MicroSD 카드 (Windows 10 Version 1703 CN에서는 더 이상 사용할 수 없음.)
UWTG 프로그램.
Windows 설치 이미지 (Windows7, Windows8, Windows8.1, Windows 10, Windows Server 2012, Windows Server 2012 R2)
1. 운영체제 이미지 iso 파일 로딩(윈도위 7 권장하지 않음), 윈도우 8은 ISO 파일을 두 번 클릭하여 수행 된다.
2. Ubuntu WTG Assistant lee_ubuntu_wintogo_test.exe을 실행, 영문 변경. 영어 번역을 할 시 GUI만 무거워 진다. 언어를 변경하면 POP-UP 프로그램이 다시 시작 된다, 하지만 수동으로 다시 실행 시켜 준다.
3. install.wim 선택
3.1 drive:\sources 가상 마운트 지정
3.2 설치 디스크 지정: USB 또는 MicroSD Card 여야 함.
3.3 오른쪽 사이트 창 Com 탭 선택
3.3.1 VHDX 및 Windows 10 Pro를 Ver 선택... 사용한 운영체제 버전 선택.
3.3.2 Option : UEFI + GPT 표시된다.
3.3.2.1: Options VHD 탭에서 슬라이더를 오른쪽으로 이동하여 VHD 파일의 이름을 변경하고 크기를 변경할 수 있음. 일부 옵션은 긴 문자로 처리되지만 수정할 필요 없음.
참고: VHD 파티션 테이블 형식은 GPT이고 VHD Temp Folder는 현재 OS 임시 폴더에 있다.
4. Sys 탭에서 Fix Letter가 기본적으로 선택됨. 또한 이 VHD 시스템에서 부팅 할 때 Lcl 디스크 숨기기를 선택하여 로컬 디스크를 숨 긴다.
(optional) Disk (디스크)탭 아래에 No temp (임시 없음) 옵션이 있다.이 옵션은 이동식 디스크에 직접 VHD를 만드는 것을 의미한다. 장치의 하드웨어 인터페이스 부분이 빠르다면 시간이 절약 된다.
5. GO 선택, 두개의 경고창 생성, 확인 확인 눌러 넘어간다.
6. 대기
(optional) PRO 사용자의 경우 64GB MicroSD 카드에서 파티션 구조는 64GB.
VHD 파일, EFI 파티션 ~ 100MB(EFI 부팅 파일 저장 공간) 및 예비 파티션(~ 4.5GB)을 저장하는 기본 파티션이 있다.
하드디스크 공간 낭비를 하고 싶지 않을 경우에 EFI 파티션을 끝으로 옮기고 4.5 GB 공간을 메인 파티션에 병합한다.
경고: 잘못된 조작으로 인해 데이터가 손실 될 수 있습니다!
여기 까지 완전하게 진행 됨.
UDoo x86 이동
7. BIOS 또는 부팅 선택 모드가 장치에서 지원 한 다면, EFI SD/MMC card(AFGCE)를 선택.
부팅 프로세스 시작
8. 초기화가 시작. 일부 지역 설정 및 개인 정보, 합의 ...... 일반적인 Windows 10 설치 프로세스임.
9. 기본 윈도우 설치 완료
10. 정품 인증 재 설치
11. 내부 eMMC 오프라인 파일 관리자에서 볼 수 없음.
MicroSD Card의 VHD는 운영체제 C:\ 드라이버로 마운트 된다.
이러한 방식으로 보안을 강화 시킨다.
12. 윈도우 스토어 사용 가능
13. 그랙픽 드라이버 설치 후, 세이프 모드 동작, HDMI 동작
참고: UDOO X86은 MicroSD Card를 직접 부팅 할 수 없어 블루 스크린이 표시된다.
이럴때는 UEFI 펌웨어 옵션을 일부 수정했냐 한다.
super + I Windows 설정.
업데이트 및 보안 을 클릭
복구 탭을 클릭한 다음, 오른쪽의 고급 시작 옵션의 아래에 있는 지금 다시 시작 버튼을 클릭.
PC를 다시 시작하면, 옵션 선택 화면에서 문제 해결을 클릭.
고급 옵션 화면에서, UEFI 펌웨어 설정 클릭.
1다시 시작 버튼을 클릭하여 UEFI (BIOS) 부팅 모드로 전환.
BIOS 진입 (Boot)화면에 나타나며, 레거시 모드로 되어 있다면 1 UEFI부팅 모드로 전환한 후, BIOS 설정을 저장하고 PC를 재 부팅.
2018/12/22
16 진수 읽기
Little Endian Format
헥사 에디터
- 두 자리 수의 집합 = 1 byte(8 bits)
16 진수 D3은 이진수 11010011
10 진수와 혼동을 피하기 위해 0x를 사용해 표시
- 0x30
Little Endian format 오른쪽에서 왼쪽으로 읽음.
- 03 04 little endian format 0403으로 읽음 .
- 0x0403은 0x403으로 표시하며 앞의 0들은 다 제거.
예 1:
- 00 04 00 00 Little Endian Format
- 00000400 16 진수 정렬 표현
- 0x400
- 10 진수 1024 형식 표현
예 2:
- 60 00 Little Endian Format
- 0060 16진수 정렬 표현
- 0x60
- 10 진수 96 형식 표현
예 3:
- D3 04 Little Endian Format
- 04D3 16진수 정렬 표현
- 0x4D3
- 10 진수 1235 형식 표현
NTFS 파일 시스템 섹터
NTFS
파일 시스템 및 파티션
파티션의 처음
16
섹터 (0-15)
섹터 0(부트
스트랩 코드)
-
점프 지시
-
OEMID
-
바이오스 매개변수 블록(BPB)
-
확장 된 BPB
-
부트 스트랩 코드
-
섹터 마커의 끝
섹터 1-15
(부트 섹터 초기 프로그램 로더)
NTFS
Master File Table(MFT)
12.5%
MFT를 위한 예약된 디스크 공간.
디스크 공간의
50%
까지 확장 가능
모든 파일 및
폴더의 정보가 MFT에
나열.
파일 기록
-
FILE0(ASCII) 기록
-
섹터 길이는 1024
바이트(512
x 2)
-
파일 속성 포함:
메터데이터 헤더:
-
0x10 Attribute: 파일 생성, 생성 날자 및 변경 업데이트 시간
-
0x20 Attribute: 비거주 속성
-
0x30 Attribute: 짥고 긴 파일 이름
-
0x40 Attribute: 소유권 및 접근권한
-
0x50 Attribute: 파일에 대한 접근 권한 목록
-
0x70 Attribute: 볼륨의 버전 및 상태
-
0x80 Attribute: 비거주 클러스트의 상주파일 번호
-
0x90 Attribute: 폴더 및 루트 인덱스
-
0xA0 Attribute: 폴더 및 인덱스 할당
-
0XB0 Attribute: 폴더 및 인데스 비트
-
0XC0 Attribute: Volume mount 위치
-
0xD0 Attribute: OS/2 HPFS
-
0xE0 Attribute: OS/2 HPFS
-
0x100 Attribute: EFS Windows 사용.
NTFS
Data
비거주 파일에
대한 파일 정보
-
상주 파일이 512
보다 작의면 MFT에
저장
-
비거주 파일이 크면 MFT에
저장할 수 없음.
boot
Secotor
|
MFT
|
Data
|
|
16 진수 헥사 편집기
16 진수 편집기 .
파일 또는 디스크 파티션의 1과 0을 읽고 이를 16 진수 형식으로 변환한다.
헥사 에디터를 사용해 ASCII 텍스트를 해석하고 표시한다.
16 진수:
0,1,2,3,4,5,6,7,8,9.A,B,C,D,E,F
16 진수 하나의 값은 8 비트 집합을 나타냄.
Example: 3F = 00111111
8 bits = 1byte
EB = 1 byte
EB = 8 bit
EB = 11101011
헥사 에디터 창 배치 정보
왼쪽: 메모리 주소
중간: 16진수 값
오른쪽: ASCII
헥사 에디터 종류
Hexedit(console)
- sudo apt-get install hexedit
Tweak(console)
- sudo apt-get install tweak
Ghex(GUI)
- sudo apt-get install ghex
Okteta(GUI)
- sudo apt-get install okteta
- 우분투 KDE 버전 포함
WxHexeditor(GUI)
- Download : Https://sourceforge.net/projects/wxhexeditor/
- 개발 베타 버전
Bless(GUI)
- sudo apt-get install bless
파일 또는 디스크 파티션의 1과 0을 읽고 이를 16 진수 형식으로 변환한다.
헥사 에디터를 사용해 ASCII 텍스트를 해석하고 표시한다.
16 진수:
0,1,2,3,4,5,6,7,8,9.A,B,C,D,E,F
16 진수 하나의 값은 8 비트 집합을 나타냄.
Example: 3F = 00111111
8 bits = 1byte
EB = 1 byte
EB = 8 bit
EB = 11101011
헥사 에디터 창 배치 정보
왼쪽: 메모리 주소
중간: 16진수 값
오른쪽: ASCII
헥사 에디터 종류
Hexedit(console)
- sudo apt-get install hexedit
Tweak(console)
- sudo apt-get install tweak
Ghex(GUI)
- sudo apt-get install ghex
Okteta(GUI)
- sudo apt-get install okteta
- 우분투 KDE 버전 포함
WxHexeditor(GUI)
- Download : Https://sourceforge.net/projects/wxhexeditor/
- 개발 베타 버전
Bless(GUI)
- sudo apt-get install bless
파일 복구
1.
파일 조각.
이미지 파일,
파티션 또는 하드 드라이브에서 메타
데이터가 아닌 헤더(머리 글) 정보와, 끝(바닥 글) 기반으로 파일을
검색.
|
NTFS
파티션
|
|||||||||
|
부트섹터
|
|
메타
데이터
|
파일 1
|
|
|
파일 2
|
|
파일 3
|
|
|
MFT
|
|
|
|
||||||
마스트 파일
표(MFT).
MFT는
모든 파일과 폴더에 대한 정보를 NTFS
볼륨에 저장.
메타 데이터
메타 데이터에는
일반적으로 파일 이름,
만든 날짜,
마지막으로 수정 한 날짜,
사용 권한,
디스크에 있는 파일 위치 등이 포함됨.
2.
리눅스 용 파일 조각 모음 및 복구 유틸
-
Foremost
-
Scalpel
-
Magic Rescue
-
Photorec
-
Recoverjpeg
-
Extundelete
-
Ntfsundelete
-
Scrounge-ntfs
3.
확장자 지정 이미지 파일 복구.
shell>
sudo apt-get install foremost
shell>
man foremost
-t
: 형식
-i
: 입력
-o
: 출력
복구 가능한 파일
확장자 나열.
파티션 이미지
복사
shell>
sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img
shell>foremost
-t jpg, png, gif -o flashoutput -i flashdrive.img
flashoutput
디렉토리 생성.
gif,
png, gif 지정 확장자 파일 복구 확인.
3.1.
하드디스크 파일 복구
shell>
sudo fdisk -l
shell>
sudo foremost -t zip,doc,pdf -o ntfsoutput -i /dev/sdx1
ntfoutput
디렉토리 생성
shell>
chmod 777 ntfoutput
4.
scalpel을 이용한 파일 복구
shell>
sudo apt-get install scalpel
shell>
man scalpel
-c
: 구성파일 호출
-o
: 출력 디력토리 이름
shell>
sudo cp /etc/scalpel/scalpel.conf ./
shell>
vi scalpel.conf
복구 하고 싶은
파일 확장자 주석 제거.
파티션 이미지
복사
shell>
sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img
파일 복구
shell>
scalpel -c scalpel.conf -o fileshoutput flashdrive.img
shell>
sudo fdisk -l
파티션 정보 확인
NTFS
하드디스크 파일 복구
shell>
sudo scalpel -c scalpel.conf -o ntfsoutput /dev/sdx1
shell>
sudo chmod 777 ntfsoutput
환경설정 설정한
복구 파일 복원.
5.
magicrescue 사용 파일 복구.
shell>
sudo apt-get install magicrescue
shell>
man magicrescue
-d
: 출력 디렉토리
-r
: 레시피
-M
: 원하는 출력물 생성
기본적으로 지원하는
파일 형식.
shell>
ls /usr/share/magicrescue/recipes
avi
elf gpl jpeg-exif mbox mbox-mozilla-sent
mp3-id3v2 nikon-raw png sqlite
canon-cr2
flac gzip jpeg-jfif mbox-mozilla-inbox mp3-id3v1
msoffice perl ppm zip
shell>
mkdir output
shell>
magicrescue -f jpeg-exif -r jpeg-jfif -r png -d output/ -M io
flashdrive.img > log
shell>
mkdir output2
shell>
sudo fdisk -l
파티션 정보 확인
NTFS
shell>
sudo magicrescue -r jpeg-exif -d output2 -M io /dev/sdx1 > log2
shell>
sudo chmod -R 777 output2
6.
외장 디스크(sd,
m-sd, usb) 사진 jpg
복구
shell>
sudo apt-get install recoverjpeg
shell>
mkdir output
shell>
cd output
shell>
sudo fdisk -l
윈도우 NTFS
확인
shell>
sudo recoverjpeg /dev/sdx1
shell>
sudo chmod 777 ./output
해쉬 알고리즘을 사용한 리눅스 CLI.
파일 또는 문자열들을 디스크 가져 와 해시 알고리즘을 통해 해시 값을 생성.
데이터 무결성 확인.
- 복사 된 항목이 원본과 정확히 일치하는지 확인.
- 원래 항목이 손상되지 않았는지 확인.
자주 사용되는 해싱 알고리즘.
- MD5(Message Digest 5)
- SHA-1(보안 해쉬 알고리즘)
- SHA-2(SHA-244, SHA-256, SHA-384, SHA-512)
String, 파일, or Disk -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
파일 1 -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
copy of 파일1-> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
파일 2 -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431ee8
HASHING TOOLS해싱 도구
GNU Coreutils(md5sum)
- 우분투 기본 설치
md5deep
- sudo apt-get install md5deep
- 재귀 적으로 전체 디렉토리 트리 검사.
- 해시 목록을 수락하고 입력 파일 집합과 비교.
- 예상 시간을 산출.
ssdeep
- sudo apt-get install ssdeep
- Fuzzy-hashing
GNU Coreutils
- md5sum : md5 합을 사용하여 해시 생성.
- sha1sum : sha1 합을 사용하여 해시 생성.
- sha256sum : 가장 많이 사용. sha256 합을 사용하여 해시 생성.
md5deep : 해쉬값 모음
- sd5deep
- sha1deep
- sha256deep
- tigerdeep
- whirlpooldeep
ssdeep
- ssdeep
MD5
- 128-bit 해쉬 값 생성
- 알려진 충돌로 인해 취약.
-- forensics에 좋음
-- 암호화 보안 좋지 않음.
SHA-1
- 160-bit 해쉬 값 생성
- 알려진 충돌이 없지만 이론적인 충돌있음
SHA-2
- 244, 256, 384, or 512 bit 해쉬 값 생성
- SHA-1 또는 MD5와 같이 널리 사용되지 않음.
- SHA-2 SHA-256 및 SHA-512가 가장 많이 사용 SHA-2.
shell> touch file1 file2
md5 파일 적용
shell> md5sum file1
d41d8cd98f00b204e9800998ecf8427e file1
shell> mod5sum file2
d41d8cd98f00b204e9800998ecf8427e file2
파일 변경.
shell> vi file2
This is a Test.
변경된 파일 md5 적용.
shell> mod5sum file2
66d64d41eb16e6eb4efc10480e52239a file2
변경 전 후 해쉬 값 바교
file2 변경전 해쉬값: d41d8cd98f00b204e9800998ecf8427e file2
file2 변경후 해쉬값: 66d64d41eb16e6eb4efc10480e52239a file2
해쉬 값 정보 저장
shell> md5sum file1 > hash.txt
shell> md5sum file2 >> hash.txt
shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e file1
66d64d41eb16e6eb4efc10480e52239a file2
sha1sum 해쉬 값 길이
shell> sha1sum file1 >> hash.txt
sha256sum 해쉬 값 길이
shell> sha256sum file >> hash.txt
해쉬값 표현 길이 차이 확인
shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e file1
66d64d41eb16e6eb4efc10480e52239a file2
da39a3ee5e6b4b0d3255bfef95601890afd80709 file1
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 file1
shell> sudo fdisk -l
하드디스크 파티션 md5sum 확인(소요 시간 있음)
shell> sudo md5sum /dev/sdc1 >> hast.txt
shell> cat hast.txt
hash 세션 구문 추가.
shell> cat hash.txt
해쉬 값 생성.
shell> md5deep file1 >> hash.txt
shell> md5deep file2 >> hash.txt
shell> sha1deep file1 >> hash.txt
shell> sha256deep file1 >> hash.txt
shell> tigerdeep file1 >> hash.txt
shell> whirlpooldeep file1 >> hash.txt
shell> sudo md5deep -e /dev/sdc1 >> hash.txt
해쉬 생성 값 표현 길이 확인.
shell> cat hash.txt
파티션 정보 확인.
shell> sudo fdisk -l
이미지 생성.
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flash.img
실행 권한.
shell> sudo chmod 777 flash.img
해시값 생성.
shell> md5deep -e flash.img > hash1.txt
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt
생성된 해시 값 확인.
shell> cat hast1.txt
원본 파티션 파일 변경
shell> cd /media/username/Backup/
shell> vi 기본_텍스트파일.txt
This is a Test.
변경된 파일 해쉬 값 생성.
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt
변경 해쉬 값 확인
shell> cat hash1.txt
shell> ssdeep flash.img > fuzzyhash.txt
shell> sudo ssdeep /dev/sdc1 >> fuzzyhash.txt
이미지와 파일 변경 사항 해시 값 확인
shell> ssdeep flash.img > fuzzyflash
shell> sudo ssdeep -m fuzzyflash /dev/sdc1
데이터 무결성 확인.
- 복사 된 항목이 원본과 정확히 일치하는지 확인.
- 원래 항목이 손상되지 않았는지 확인.
자주 사용되는 해싱 알고리즘.
- MD5(Message Digest 5)
- SHA-1(보안 해쉬 알고리즘)
- SHA-2(SHA-244, SHA-256, SHA-384, SHA-512)
String, 파일, or Disk -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
파일 1 -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
copy of 파일1-> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
파일 2 -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431ee8
HASHING TOOLS해싱 도구
GNU Coreutils(md5sum)
- 우분투 기본 설치
md5deep
- sudo apt-get install md5deep
- 재귀 적으로 전체 디렉토리 트리 검사.
- 해시 목록을 수락하고 입력 파일 집합과 비교.
- 예상 시간을 산출.
ssdeep
- sudo apt-get install ssdeep
- Fuzzy-hashing
GNU Coreutils
- md5sum : md5 합을 사용하여 해시 생성.
- sha1sum : sha1 합을 사용하여 해시 생성.
- sha256sum : 가장 많이 사용. sha256 합을 사용하여 해시 생성.
md5deep : 해쉬값 모음
- sd5deep
- sha1deep
- sha256deep
- tigerdeep
- whirlpooldeep
ssdeep
- ssdeep
MD5
- 128-bit 해쉬 값 생성
- 알려진 충돌로 인해 취약.
-- forensics에 좋음
-- 암호화 보안 좋지 않음.
SHA-1
- 160-bit 해쉬 값 생성
- 알려진 충돌이 없지만 이론적인 충돌있음
SHA-2
- 244, 256, 384, or 512 bit 해쉬 값 생성
- SHA-1 또는 MD5와 같이 널리 사용되지 않음.
- SHA-2 SHA-256 및 SHA-512가 가장 많이 사용 SHA-2.
shell> touch file1 file2
md5 파일 적용
shell> md5sum file1
d41d8cd98f00b204e9800998ecf8427e file1
shell> mod5sum file2
d41d8cd98f00b204e9800998ecf8427e file2
파일 변경.
shell> vi file2
This is a Test.
변경된 파일 md5 적용.
shell> mod5sum file2
66d64d41eb16e6eb4efc10480e52239a file2
변경 전 후 해쉬 값 바교
file2 변경전 해쉬값: d41d8cd98f00b204e9800998ecf8427e file2
file2 변경후 해쉬값: 66d64d41eb16e6eb4efc10480e52239a file2
해쉬 값 정보 저장
shell> md5sum file1 > hash.txt
shell> md5sum file2 >> hash.txt
shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e file1
66d64d41eb16e6eb4efc10480e52239a file2
sha1sum 해쉬 값 길이
shell> sha1sum file1 >> hash.txt
sha256sum 해쉬 값 길이
shell> sha256sum file >> hash.txt
해쉬값 표현 길이 차이 확인
shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e file1
66d64d41eb16e6eb4efc10480e52239a file2
da39a3ee5e6b4b0d3255bfef95601890afd80709 file1
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 file1
shell> sudo fdisk -l
하드디스크 파티션 md5sum 확인(소요 시간 있음)
shell> sudo md5sum /dev/sdc1 >> hast.txt
shell> cat hast.txt
hash 세션 구문 추가.
shell> cat hash.txt
해쉬 값 생성.
shell> md5deep file1 >> hash.txt
shell> md5deep file2 >> hash.txt
shell> sha1deep file1 >> hash.txt
shell> sha256deep file1 >> hash.txt
shell> tigerdeep file1 >> hash.txt
shell> whirlpooldeep file1 >> hash.txt
shell> sudo md5deep -e /dev/sdc1 >> hash.txt
해쉬 생성 값 표현 길이 확인.
shell> cat hash.txt
파티션 정보 확인.
shell> sudo fdisk -l
이미지 생성.
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flash.img
실행 권한.
shell> sudo chmod 777 flash.img
해시값 생성.
shell> md5deep -e flash.img > hash1.txt
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt
생성된 해시 값 확인.
shell> cat hast1.txt
원본 파티션 파일 변경
shell> cd /media/username/Backup/
shell> vi 기본_텍스트파일.txt
This is a Test.
변경된 파일 해쉬 값 생성.
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt
변경 해쉬 값 확인
shell> cat hash1.txt
shell> ssdeep flash.img > fuzzyhash.txt
shell> sudo ssdeep /dev/sdc1 >> fuzzyhash.txt
이미지와 파일 변경 사항 해시 값 확인
shell> ssdeep flash.img > fuzzyflash
shell> sudo ssdeep -m fuzzyflash /dev/sdc1
dd 디스크 이미지 덤프 gzip 압축.
dd(Disk Dump)
- 기본 패키지 설치 됨
dcfldd(국방 컴퓨터 법의학 연구소)
- sudo apt-get install dcfldd
- dd 명령에서 fork 함.
dc3add(방위 사이버 범죄 센터)
- sudo apt-get install dc3dd
- dd 명령어 사용 하며 기능 추가
필수 옵션
- if="device/image"
example: if=/dev/sda
- of="/device/image"
example: of=/home/user/copy.img
파티션 정보 덮어쓰기
파티션 Linux ext4
shell> sudo fdisk -l
Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 122814463 122812416 58.6G 83 Linux
파티션 NTFS
Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 30281727 30279680 14.4G 7 HPFS/NTFS/exFAT
shell> sudo dc3dd if=/dev/sdc of=/dev/mmcblk0p1
dc3dd 7.2.646 started at 2018-12-22 00:14:00 +0900 ---> 시작 시간
compiled options:
command line: dc3dd if=/dev/sdc of=/dev/mmcblk0p1
device size: 30283008 sectors (probed), 15,504,900,096 bytes
sector size: 512 bytes (probed)
15504900096 bytes ( 14 G ) copied ( 100% ), 14882 s, 1017 K/s
input results for device `/dev/sdc':
30283008 sectors in
0 bad sectors replaced by zeros
output results for device `/dev/mmcblk0p1':
30283008 sectors out
dc3dd completed at 2018-12-22 04:22:02 +0900 ---> 종료 시간
총 4시간 30분 걸림.
여기 테스트는 하드 디스크 크기가 같지 않으므로 제대로 인식하지 않음.
동일한 크기를 가지는 USB 저장 장치가 있으면 된다.
shell> sudo fdisk -l
Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 122814463 122812416 58.6G 83 Linux ----> 기존 값 그대로
Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 30281727 30279680 14.4G 7 HPFS/NTFS/exFAT ---> 기존 값 그대로
파티션 이미지 복사
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img
dc3dd 7.2.646 started at 2018-12-22 06:24:04 +0900
compiled options:
command line: dc3dd if=/dev/sdc1 of=./flashdriver.img
device size: 1953792 sectors (probed), 1,000,341,504 bytes
sector size: 512 bytes (probed)
1000341504 bytes ( 954 M ) copied ( 100% ), 892 s, 1.1 M/s
input results for device `/dev/sdc1':
1953792 sectors in
0 bad sectors replaced by zeros
output results for file `./flashdriver.img':
1953792 sectors out
dc3dd completed at 2018-12-22 06:38:56 +0900
shell> sudo chmod 777 flashdriver.img
gzip 이미지 복사.
shell> sudo dc3dd if=/dev/sdc1 | gzip -6 > /home/username/Desktop/zippedflash.gz
옵션
-6 : 압축률 평균
-9 : 압출률 작게
zip 압축해제
shell> gunzip zippedflash.gz
- 기본 패키지 설치 됨
dcfldd(국방 컴퓨터 법의학 연구소)
- sudo apt-get install dcfldd
- dd 명령에서 fork 함.
dc3add(방위 사이버 범죄 센터)
- sudo apt-get install dc3dd
- dd 명령어 사용 하며 기능 추가
필수 옵션
- if="device/image"
example: if=/dev/sda
- of="/device/image"
example: of=/home/user/copy.img
파티션 정보 덮어쓰기
파티션 Linux ext4
shell> sudo fdisk -l
Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 122814463 122812416 58.6G 83 Linux
파티션 NTFS
Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 30281727 30279680 14.4G 7 HPFS/NTFS/exFAT
shell> sudo dc3dd if=/dev/sdc of=/dev/mmcblk0p1
dc3dd 7.2.646 started at 2018-12-22 00:14:00 +0900 ---> 시작 시간
compiled options:
command line: dc3dd if=/dev/sdc of=/dev/mmcblk0p1
device size: 30283008 sectors (probed), 15,504,900,096 bytes
sector size: 512 bytes (probed)
15504900096 bytes ( 14 G ) copied ( 100% ), 14882 s, 1017 K/s
input results for device `/dev/sdc':
30283008 sectors in
0 bad sectors replaced by zeros
output results for device `/dev/mmcblk0p1':
30283008 sectors out
dc3dd completed at 2018-12-22 04:22:02 +0900 ---> 종료 시간
총 4시간 30분 걸림.
여기 테스트는 하드 디스크 크기가 같지 않으므로 제대로 인식하지 않음.
동일한 크기를 가지는 USB 저장 장치가 있으면 된다.
shell> sudo fdisk -l
Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 122814463 122812416 58.6G 83 Linux ----> 기존 값 그대로
Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 30281727 30279680 14.4G 7 HPFS/NTFS/exFAT ---> 기존 값 그대로
파티션 이미지 복사
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img
dc3dd 7.2.646 started at 2018-12-22 06:24:04 +0900
compiled options:
command line: dc3dd if=/dev/sdc1 of=./flashdriver.img
device size: 1953792 sectors (probed), 1,000,341,504 bytes
sector size: 512 bytes (probed)
1000341504 bytes ( 954 M ) copied ( 100% ), 892 s, 1.1 M/s
input results for device `/dev/sdc1':
1953792 sectors in
0 bad sectors replaced by zeros
output results for file `./flashdriver.img':
1953792 sectors out
dc3dd completed at 2018-12-22 06:38:56 +0900
shell> sudo chmod 777 flashdriver.img
gzip 이미지 복사.
shell> sudo dc3dd if=/dev/sdc1 | gzip -6 > /home/username/Desktop/zippedflash.gz
옵션
-6 : 압축률 평균
-9 : 압출률 작게
zip 압축해제
shell> gunzip zippedflash.gz
2018/12/21
long 형의 변수 선언 키워드 크기 확인
#include <stdio.h>
int main(void){
int a;
long b;
long long c;
double e;
long double f;
printf("Size of int = %ld bytes\n", sizeof(a));
printf("Size of long = %ld bytes\n", sizeof(b));
printf("Size of long long = %ld bytes\n", sizeof(c));
printf("Size of double = %ld bytes\n", sizeof(e));
printf("Size of long double = %ld bytes\n", sizeof(f));
return 0;
}
int main(void){
int a;
long b;
long long c;
double e;
long double f;
printf("Size of int = %ld bytes\n", sizeof(a));
printf("Size of long = %ld bytes\n", sizeof(b));
printf("Size of long long = %ld bytes\n", sizeof(c));
printf("Size of double = %ld bytes\n", sizeof(e));
printf("Size of long double = %ld bytes\n", sizeof(f));
return 0;
}
컴파일 변수 형식의 크기 확인
include <stdio.h>
int main(void){
int integerType;
float floatType;
double doubleType;
char characterType;
// Sizeof 연산자는 변수의 크기를 계산하는 데 사용된다
printf("Size of int: %ld bytes\n", sizeof(integerType));
printf("Size of float: %ld bytes\n", sizeof(floatType));
printf("Size of double: %ld bytes\n", sizeof(doubleType));
printf("Size of char: %ld bytes\n", sizeof(characterType));
return 0;
}
int main(void){
int integerType;
float floatType;
double doubleType;
char characterType;
// Sizeof 연산자는 변수의 크기를 계산하는 데 사용된다
printf("Size of int: %ld bytes\n", sizeof(integerType));
printf("Size of float: %ld bytes\n", sizeof(floatType));
printf("Size of double: %ld bytes\n", sizeof(doubleType));
printf("Size of char: %ld bytes\n", sizeof(characterType));
return 0;
}
8진수 2진수 변환
#include <stdio.h>
#include <math.h>
long long convertOctalToBinary(int octalNumber);
int main(void){
int octalNumber;
printf("Enter an octal number: ");
scanf("%d", &octalNumber);
printf("%d in octal = %lld in binayr", octalNumber, convertOctalToBinary(octalNumber));
return 0;
}
long long convertOctalToBinary(int octalNumber){
int decimalNumber = 0, i = 0;
long long binaryNumber = 0;
while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8, i);
++i;
octalNumber /= 10;
}
i = 1;
while(decimalNumber != 0){
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}
return binaryNumber;
}
#include <math.h>
long long convertOctalToBinary(int octalNumber);
int main(void){
int octalNumber;
printf("Enter an octal number: ");
scanf("%d", &octalNumber);
printf("%d in octal = %lld in binayr", octalNumber, convertOctalToBinary(octalNumber));
return 0;
}
long long convertOctalToBinary(int octalNumber){
int decimalNumber = 0, i = 0;
long long binaryNumber = 0;
while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8, i);
++i;
octalNumber /= 10;
}
i = 1;
while(decimalNumber != 0){
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}
return binaryNumber;
}
8 진수 입력: 67
2 진수 110111
8진수 10진수 변환
#include <stdio.h>
#include <math.h>
long long convertOctalToDecimal(int octalNumber);
int main(void){
int octalNumber;
printf("Enter an octal number: ");
scanf("%d", &octalNumber);
printf("%d in octal = %lld in decimal\n", octalNumber, convertOctalToDecimal(octalNumber));
return 0;
}
long long convertOctalToDecimal(int octalNumber){
int decimalNumber = 0, i = 0;
while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8,i);
++i;
octalNumber /= 10;
}
i = 1;
return decimalNumber;
}
#include <math.h>
long long convertOctalToDecimal(int octalNumber);
int main(void){
int octalNumber;
printf("Enter an octal number: ");
scanf("%d", &octalNumber);
printf("%d in octal = %lld in decimal\n", octalNumber, convertOctalToDecimal(octalNumber));
return 0;
}
long long convertOctalToDecimal(int octalNumber){
int decimalNumber = 0, i = 0;
while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8,i);
++i;
octalNumber /= 10;
}
i = 1;
return decimalNumber;
}
8 진수를 입력: 116
10 진수 = 78
2진수 10진수 변환
#include <stdio.h>
#include <math.h>
int convertBinaryToOctal(long long binaryNumber);
int main(void){
long long binaryNumber;
printf("Enter a binary number: ");
scanf("%lld", &binaryNumber);
printf("%lld in binary = %d in octal\n", binaryNumber, convertBinaryToOctal(binaryNumber));
return 0;
}
int convertBinaryToOctal(long long binaryNumber){
int octalNumber = 0, decimalNumber = 0, i = 0;
while(binaryNumber != 0){
decimalNumber += (binaryNumber%10) * pow(2,i);
++i;
binaryNumber /= 10;
}
i = 1;
while(decimalNumber != 0){
octalNumber += (decimalNumber %8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
#include <math.h>
int convertBinaryToOctal(long long binaryNumber);
int main(void){
long long binaryNumber;
printf("Enter a binary number: ");
scanf("%lld", &binaryNumber);
printf("%lld in binary = %d in octal\n", binaryNumber, convertBinaryToOctal(binaryNumber));
return 0;
}
int convertBinaryToOctal(long long binaryNumber){
int octalNumber = 0, decimalNumber = 0, i = 0;
while(binaryNumber != 0){
decimalNumber += (binaryNumber%10) * pow(2,i);
++i;
binaryNumber /= 10;
}
i = 1;
while(decimalNumber != 0){
octalNumber += (decimalNumber %8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
이진수 입력 : 101001
8 진수로 51
8 진수로 51
10진수 8진수 변환
#include <stdio.h>
#include <math.h>
int convertDecimalToOctal(int decimalNumber);
int main(void){
int decimalNumber;
printf("Enter a decimal number: ");
scanf("%d", &decimalNumber);
printf("%d in decimal = %d in octal\n\n", decimalNumber, convertDecimalToOctal(decimalNumber));
return 0;
}
int convertDecimalToOctal(int decimalNumber){
int octalNumber = 0, i = 1;
while(decimalNumber != 0){
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
십진수를 입력: 78
8 진법에서 116
#include <math.h>
int convertDecimalToOctal(int decimalNumber);
int main(void){
int decimalNumber;
printf("Enter a decimal number: ");
scanf("%d", &decimalNumber);
printf("%d in decimal = %d in octal\n\n", decimalNumber, convertDecimalToOctal(decimalNumber));
return 0;
}
int convertDecimalToOctal(int decimalNumber){
int octalNumber = 0, i = 1;
while(decimalNumber != 0){
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
십진수를 입력: 78
8 진법에서 116
비트, 바이트, 진법 표현 범위
1. 비트 연산자
AND Gate = &
OR Gate = |
XOR Gate = ^
NOT Gate = ~ -> 단항 연산자.
쉬프트 연산자: <<, >>
2. 컴퓨터 정보 단위
2.1 종류
8bit(비트) = 1byte(바이트) // 8bit=1Byte
1024Byte(2^10 byte) = 1KB(킬로 바이트)
1024KB(2^10 KB) = 1MB(메가 바이트)
1024MB(2^10 MB) = 1GB(기가 바이트)
1024GB(2^10 GB) = 1TB(테라 바이트)
2.2 비트
비트(bit) : 하나의 0 또는 1. 디지털 정보의 최소 단위. 하나의 비트로는 2가지 구분되는 내용을 표현할 수 있다.
1bit:2**0:2x0=1:|-
2bit:2**1:2x1=2:|- |-
3bit:2**2:2x2=4:|- |- |- |-
4bit:2**3:2x2x2=8:|- |- |- |- |- |- |- |-
5bit:2**4:2x2x2x2=16: |- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |-
6bit:2**5:2x2x2x2x2=32: ... |(ON) -(OFF) 32개...
7bit:2**6:2x2x2x2x2x2=64: ... |(ON) -(OFF) 64개...
8bit:2**7:2x2x2x2x2x2x=128: ... |(ON) -(OFF) 128개...
1bit, 스위치 1개로 두가지 상태 표현 : 01
2bit, 스위치 2개로 네가지 상태 표현 : 00, 01, 10, 11
전압 차이의 비트 표현
3.3V: 1
0.0V: 0
2.3 바이트
8bit:1Byte
바이트(byte) : 8비트. 1바이트로는 256가지로 구분되는 내용을 표현할 수 있다.
컴퓨터의 기억장치의 크기를 나타내는 단위
ASCII CODE 표의 문자 하나를 나타낼 수 있는 단위.
2.3.1 ASCII
수와 문자를 짝지어주는 표, ‘A’는 십진수 65에 의해 표현된다.
7비트 ASCII는 128개의 문자 표현, 이후 256가지의 문자를 표현할 수 있도록 8비트로 확장.
2.4 진법
2진법, 8진법, 10진법, 16진법.
2.5 2진법
컴퓨터의 CPU 인식 할 수 있는 단위.
2진법(binary):0과 1이라는 2가지의 숫자의 나열을 통해 수를 표현하는 체계
2.6 8진법
8진법(Octal): 0부터 7까지 총 8 가지의 숫자의 나열을 통해 수를 표현하는 체계
3bit 표현
2.7 10진법
10진법(decimal) : 0부터 9까지 10가지의 숫자의 나열을 통해 수를 표현하는 체계
2.7 16진법
16진법(hexadecimal): 0, 1 ... 9, a, b, c, d, e, f 총 16가지의 숫자의 나열을 통해 수를 표현하는 체계
4bit = 니블(nibble) 표현.
현대의 메모리 0x 주소의 표현 단위
AND Gate = &
OR Gate = |
XOR Gate = ^
NOT Gate = ~ -> 단항 연산자.
쉬프트 연산자: <<, >>
2. 컴퓨터 정보 단위
2.1 종류
8bit(비트) = 1byte(바이트) // 8bit=1Byte
1024Byte(2^10 byte) = 1KB(킬로 바이트)
1024KB(2^10 KB) = 1MB(메가 바이트)
1024MB(2^10 MB) = 1GB(기가 바이트)
1024GB(2^10 GB) = 1TB(테라 바이트)
2.2 비트
비트(bit) : 하나의 0 또는 1. 디지털 정보의 최소 단위. 하나의 비트로는 2가지 구분되는 내용을 표현할 수 있다.
1bit:2**0:2x0=1:|-
2bit:2**1:2x1=2:|- |-
3bit:2**2:2x2=4:|- |- |- |-
4bit:2**3:2x2x2=8:|- |- |- |- |- |- |- |-
5bit:2**4:2x2x2x2=16: |- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |-
6bit:2**5:2x2x2x2x2=32: ... |(ON) -(OFF) 32개...
7bit:2**6:2x2x2x2x2x2=64: ... |(ON) -(OFF) 64개...
8bit:2**7:2x2x2x2x2x2x=128: ... |(ON) -(OFF) 128개...
1bit, 스위치 1개로 두가지 상태 표현 : 01
2bit, 스위치 2개로 네가지 상태 표현 : 00, 01, 10, 11
전압 차이의 비트 표현
3.3V: 1
0.0V: 0
2.3 바이트
8bit:1Byte
바이트(byte) : 8비트. 1바이트로는 256가지로 구분되는 내용을 표현할 수 있다.
컴퓨터의 기억장치의 크기를 나타내는 단위
ASCII CODE 표의 문자 하나를 나타낼 수 있는 단위.
2.3.1 ASCII
수와 문자를 짝지어주는 표, ‘A’는 십진수 65에 의해 표현된다.
7비트 ASCII는 128개의 문자 표현, 이후 256가지의 문자를 표현할 수 있도록 8비트로 확장.
2.4 진법
2진법, 8진법, 10진법, 16진법.
2.5 2진법
컴퓨터의 CPU 인식 할 수 있는 단위.
2진법(binary):0과 1이라는 2가지의 숫자의 나열을 통해 수를 표현하는 체계
2.6 8진법
8진법(Octal): 0부터 7까지 총 8 가지의 숫자의 나열을 통해 수를 표현하는 체계
3bit 표현
2.7 10진법
10진법(decimal) : 0부터 9까지 10가지의 숫자의 나열을 통해 수를 표현하는 체계
2.7 16진법
16진법(hexadecimal): 0, 1 ... 9, a, b, c, d, e, f 총 16가지의 숫자의 나열을 통해 수를 표현하는 체계
4bit = 니블(nibble) 표현.
현대의 메모리 0x 주소의 표현 단위
theme 테마 설치
아래 패키지를 설치한 후 로그아웃 후 우분투에서 지원하는 여러개의 테마가 보인다.
$ sudo snap install communitheme
제한 추가 기능 해재. Restricted Extras
$ sudo apt update
$ sudo apt install ubuntu-restricted-extras
$ sudo apt --no-install-recommends install libdvd-pkg
$ sudo dpkg-reconfigure libdvd-pkg
웹 브라우저에 gnome 셜을 설치한다.
$ sudo apt install chrome-gnome-shell
$ sudo snap install communitheme
제한 추가 기능 해재. Restricted Extras
$ sudo apt update
$ sudo apt install ubuntu-restricted-extras
$ sudo apt --no-install-recommends install libdvd-pkg
$ sudo dpkg-reconfigure libdvd-pkg
$ sudo apt install chrome-gnome-shell
피드 구독하기:
글 (Atom)

