반응형

Kernel 버전

커널버전은 항상 설치된 버전 중에서 최 상위 버전으로 항상 default로 선택 가능하게 되어 있다.
드라이버는 커널 버전에 정확한 숫자에 의존성을 가지고 있기 때문에 사용하는 드라이버가 특정 버전 커널에만 의존적이거나 지원이 된다면, 커널 버전이 올라갈 경우 해당 디바이스는 사용이 불가하기 때문에 가끔 특정 커널 버전에 고정을 해야 하는 경우가 있따.

Kernel 과거 버전 고정하기

현재 설치된 커널 버전 확인

$ sudo dpkg --list | egrep -i --color 'linux-image|linux-headers'

이 명령어로 앞에 ii 또는 ic 라고 나올 수 있는데 각 의미는 아래와 같다.

  • ii : ‘It should be installed and it is installed’
  • rc : ‘It’s removed/uninstalled but it’s configuration files are still there’
    당연하지만 이미 설치된 커널 버전 으로 고정이 가능하다.
    설치가 되지 않았을 경우에는 원하는 커널을 설치 후에 진행해야 한다.

명령어를 시행하면 아래의 형식으로 내용이 출력된다.

ii  linux-headers-6.5.0-18-generic             6.5.0-18.18~22.04.1                     amd64        Linux kernel headers for version 6.5.0 on 64 bit x86 SMP
ii  linux-headers-6.8.0-48-generic             6.8.0-48.48~22.04.1                     amd64        Linux kernel headers for version 6.8.0 on 64 bit x86 SMP
ii  linux-headers-generic-hwe-22.04            6.8.0-48.48~22.04.1                     amd64        Generic Linux kernel headers
ii  linux-image-6.5.0-18-generic               6.5.0-18.18~22.04.1                     amd64        Signed kernel image generic
ii  linux-image-6.8.0-48-generic               6.8.0-48.48~22.04.1                     amd64        Signed kernel image generic
ii  linux-image-generic-hwe-22.04              6.8.0-48.48~22.04.1                     amd64        Generic Linux kernel image

$menuentry_id_option

menuentry_id_option은 GRUB에서 설정에서 사용되는 옵션으로 각 부팅의 항목의 UUID로 사용된다. 이것은 GRUB Bootloader에서 여러개의 커널 항목에서 특정 항목에 사용되는 ID를 정의한다. 여기에 특정 커널의 UUID로 지정을 해줄 경우 Bootloader에서 해당 커널로 Boot sequence를 진행하게 된다.

$ grep submenu /boot/grub/grub.cfg 

명령어를 실행하면 아래와 같은 형식으로 출력된다.

submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {

위의 출력 내용 중 gnulinux-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282 내용을 아래에서 사용하니 저장해둔다.

Kernel 정보 확인

$ grep gnulinux /boot/grub/grub.cfg

커널에서 원하는 커널 정보를 확인한다.

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {
  menuentry 'Ubuntu, with Linux 5.4.0-42-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-42-generic-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {
  menuentry 'Ubuntu, with Linux 5.4.0-42-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-42-generic-recovery-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {
  menuentry 'Ubuntu, with Linux 5.4.0-39-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-39-generic-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {
  menuentry 'Ubuntu, with Linux 5.4.0-39-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-39-generic-recovery-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282' {

만약에 위의 커널 정보 중에서 5.4.0-42-generic 을 사용하고 싶을 경우 gnulinux-5.4.0-42-generic-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282을 사용하면 된다.

grub 설정

grub에 default에 대한 항목을 아래와 같이 설정해준다.

$ sudo vi /etc/default/grub

기본적으로 GRUB_DEFAULT=0으로 되어 있는데, 기본으로 가장 상위 버전으로 부팅이 되는 것으로 생각하면 된다.

GRUB_DEFAULT="gnulinux-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282>gnulinux-5.4.0-42-generic-advanced-b7e9ad35-1a1f-45e3-9cfd-084a7ce27282"

아래와 같이 변경한 내용을 grub에 적용해준다.

$ sudo update-grub
$ reboot

부팅 이후에 원하는 버전으로 부팅이 되었는지 확인해보자

$ uname -a
반응형
반응형

USB Format(to FAT32)

Spotlight > 디스크유틸리티

USB 연결 후 "지우기" > "MS-DOS(FAT)" > "지우기" 클릭"

참고 :
https://recoverit.wondershare.kr/flashdrive-recovery/format-usb-flash-drive-to-fat-32-on-mac.html

 

Mac에서 USB 플래시 드라이브를 FAT32로 쉽게 포맷하는 방법

이 페이지에서는 Mac에서 USB 플래시 드라이브를 FAT32로 포맷하는 방법에 대해 설명합니다.

recoverit.wondershare.kr

 

Ubuntu image download

Ubuntu image download

https://ubuntu.com/download

Old Ubuntu image download

https://old-releases.ubuntu.com/releases/

 

Bootable USB

아래의 balenaEtcher 를 다운받고, USB를 연결 후에 "Flash from file"에서 다운받은 iso image를 선택하고 "Select target"에서 USB를 지정해주면 Ubuntu bootable USB 구성이 된다.

https://etcher.balena.io/

 

balenaEtcher - Flash OS images to SD cards & USB drives

A cross-platform tool to flash OS images onto SD cards and USB drives safely and easily. Free and open source for makers around the world.

etcher.balena.io

 

반응형
반응형

Group 추가

 $ groupadd <Group Name>

Group 확인

 $ groups

Group에 User 추가

 $ gpasswd -a <User ID> <Group Name>

Group의 User 삭제

 $ gpasswd -d <User ID> <Group Name>/

Group 접근 권한 폴더에 추가

 $ chmod 775 <Folder> -R

Group 권한 추가

 $ chown <User ID>:<Group ID> <Folder> -R
반응형
반응형

아래 내용은 docker container로 ubuntu 18.0.4 버전을 이용하여 설치하며 작성한 내용입니다.


1. opencv 버전 확인 및 삭제
 1.1 버전확인

  # pkg-config --modversion opencv  

 1.2 패키지 삭제

  # sudo apt-get purge libopencv* python-opencv

  # sudo apt-get autoremove

 1.3 잔여 파일 삭제

  # sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;


2. 전 패키지 업데이트
  2.1 저장소 업데이트

   # sudo apt-get update

  2.2 패키지 업데이트

   # sudp apt-get upgrade


3. OpenCV 컴파일 패키지 설치
  3.1 cmake 설치

   # sudo apt-get install build-essential cmake

  3.2 pkg-config 설치

   # sudo apt-get install pkg-config

  3.3 Image 파일 R/W를 위한 패키지 설치

   # sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev

  3.4 Codec Video R/W를 위한 패키지 설치

   # sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev

  3.5 실시간 비디오 캡쳐를 위한 API 설치

   # sudo apt-get install libv4l-dev v4l-utils

  3.6 GStreamer 설치(비디오 스트리밍 라이브러리)

   # sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

  3.7 gtk 설치(윈도우 등을 생성)

   # sudo apt-get install libgtk2.0-dev

  3.8 OpenGL 지원하기 위한 라이브러리 설치

   # sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev

  3.9 Numpy 설치

   # sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy

  3.10 기타 필요 패키지 설치

   # apt-get install wget unzip vim


4. OpenCV 설정, 컴파일, 설치
  4.1 임시 경로 생성

   # mkdir opencv && cd opencv; 

  4.2 Opencv 4.2 다운로드 및 압축 풀기

   # wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip && unzip opencv.zip

  4.3 opencv_contrib(extra modules) 소스코드를 다운 및 압축 해제

   # wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip && unzip ./opencv_contrib.zip

  4.4 opencv build

   # cd opencv-4.2.0 && mkdir build && cd build 

  4.6 cmake를 이용하여 Makefile 생성

cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D WITH_TBB=OFF \

-D WITH_IPP=OFF \

-D WITH_1394=OFF \

-D BUILD_WITH_DEBUG_INFO=OFF \

-D BUILD_DOCS=OFF \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=OFF \

-D BUILD_TESTS=OFF \

-D BUILD_PERF_TESTS=OFF \

-D WITH_QT=OFF \

-D WITH_GTK=ON \

-D WITH_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules \

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D OPENCV_GENERATE_PKGCONFIG=ON ../

 

  4.7 rfs에 설치

   # sudo make install

 

  4.8 파일 확인

   # cat /etc/ld.so.conf.d/*

 

    4.8.1 /usr/local/lib 이 추가되지 않았을 경우 추가 필요

     #  sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf' && sudo ldconfig

  4.9 설치 확인

     # python3

Python 3.8.10 (default, Nov 26 2021, 20:14:08) 

[GCC 9.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

cv2>>> cv2.__version__

'4.2.0'

>>>

     4.9.1 만약 다른 버전이 나올 경우 cv2 디렉토리 삭제 및 retry

       # sudo rm -rf ~ /.local/lib/python3.6/site-packages/cv2




출처 : https://webnautes.tistory.com/1186

반응형
반응형


1. 설치 
   1.1 설치 경로 : https://www.anaconda.com/products/individual
   1.2 shell file 권한 및 실행
       $ chmod +x Anaconda*.sh && ./Anaconda*.sh
   
2. 관리
   2.1 conda version 확인
       $ conda --version
   2.2 사용 가능한 python 버전 확인
       $ conda search python
   2.3 conda 생성
       $ conda create -n python36conda python=3.6
   2.4 conda 활성화
       $ conda activate python36conda
   2.5 conda 삭제
       $ conda env remove -n python36conda
   2.6 환경 yml 파일로 부터 만들기(yml의 name 필드로 환경 이름이 새로 생성됨)
       $ conda env create -f env.yml
   2.7 conda 환경 yml 파일로 exporting
       $ conda env export > environment.yaml 

반응형
반응형


이전


date -d 'yesterday' # 어제

date -d '1 day ago' # 1일전

date -d '2 day ago' # 2일전

date -d '1 week ago' # 1주일전

date -d '2 month ago' # 1달전

date -d '3 year ago' # 3년전

date -d '10 second ago' # 10초전

date -d '20 minute ago' # 20분전

date -d '30 hour ago' # 30시간전

date -d '3 year 7 month ago' # 3년 7개월전


이후


date -d 'tomorrow' # 내일

date -d '1 day' # 1일후

date -d '2 day' # 2일후

date -d '1 week'         # 1주일후

date -d '2 month'         # 1달후

date -d '3 year'         # 3년후

date -d '10 second' # 10초후

date -d '20 minute' # 20분후

date -d '30 hour'         # 30시간후

date -d '3 year 5 month' # 3년 5개월후


기타


date -d 'this friday' # 이번주 금요일

date -d 'last monday' # 지난 월요일

date -d 'next tuesday' # 다음 화요일

date -d '2010-01-03 07:32:10 + 2 day 5 hours 17 minute' # 2010년 1월 3일 7시 32분 10초를 기준 2일 5시간 17분후

date --date='2 month'

date '+%Y-%m-%d %H:%M:%S' -d '2 day ago'






반응형
반응형





Linux에서 작업하다 보면 실수로 Ctrl+S가 눌리는 경우가 있다(보통 Ctrl+W를 누르려다 종종...)

그럴때면 아무것도 되지 않는데, 이게 무슨 버그나 아니면 터미널에 지원되지 않는 시그널이 전송되서 

세션에 문제가 생겼나 이런 생각도 들었었다(세션에 문제가 생기기엔 장시간 기다려도 안되더라..)


Unix계열 시스템에서 흔히 사용하는 제어 키 중에 하나로 아래와 같은 종류가 있다.

Ctrl + s : 현재의 모든 Output을 중지

Ctrl + q : Stop 되었던 모든 Output을 다시 동작

Ctrl + c : 현재 실행되는 Process를 Kill

Ctrl + d : 현재의 Shell 에서 Out ,"EOF(End Of File)" , 표준 입력에서 입력을 종료

Ctrl + l : Formfeed(shell clear)

Ctrl + z : 현재 실행 중인 프로세스를 Background로 Stop 시킴

Ctrl + b : 1 Character 커서를 뒤로 이동

Ctrl + f : 1 Character 커서를 앞으로 이동

Ctrl + p : 지난 1 Line을 붙여넣기함


이제 실수로 Ctrl + s로 화면을 멈추었다면 Ctrl + q로 다시 동작 시키자.






반응형

+ Recent posts