BLOG ARTICLE os/LINUX | 35 ARTICLE FOUND

  1. 2024.03.13 tmux 마우스사용 및 단축키로 화면 분할하고 분할된 화면에 명령실행
  2. 2023.11.26 WSL2 시리얼포트 사용(usb/ip)
  3. 2023.09.04 MODBUS TCP 포트(502) 열기
  4. 2023.03.21 ubuntu에서 네트워크카드가 인식되지 않을 경우
  5. 2022.04.25 odroid go advance, recipelab joystick setting
  6. 2022.04.22 odroid m1 can bus 사용
  7. 2022.02.07 이더넷(기본 라우팅) 인터페이스 선택
  8. 2021.12.14 암호없이 ssh 인증키로 접속, scp 자동완성 가능
  9. 2021.11.29 Linux의 udev에서 eeprom이 없는 시리얼 장치를 usb 포트번호로 연결하여 고유이름을 설정하는 방법
  10. 2021.09.15 GRUB customizer in Ubuntu 18.04
  11. 2021.05.21 Speed Up X11(X11 속도 향상)
  12. 2020.11.09 Ubuntu 18.04(bionic) - 32 bit binary file - no such file or directory - arduino - opencr
  13. 2020.10.31 X410 port forwarding
  14. 2020.07.13 Ubuntu + Windows 10(X410 + Terminal)
  15. 2020.07.09 Windows 10 Terminal + Zsh in Ubuntu(WSL)
  16. 2019.12.24 웹서버 이전(Compute Stick -> ThinkCentre M)
  17. 2019.07.07 DirectFB in Ubuntu 18.04 of VirtualBox
  18. 2019.02.07 가상 모니터 만들기
  19. 2018.11.27 log 관련 잡다
  20. 2018.11.13 ubuntu mariadb 설치
  21. 2018.11.05 Sublime Text로 원격 편집
  22. 2018.11.01 Ubuntu 18.04.1 Server에서 virtualenv 설치
  23. 2018.10.24 쥬피터 노트북을 서비스(서버)로 구동
  24. 2018.09.27 우분투 18.04 VPN 자동 연결 설정 1
  25. 2017.12.31 tmux in ubuntu
  26. 2017.12.24 인텔 컴퓨트 스틱 리눅스 설치(우분투, WLAN, LVM, w/o HDMI)
  27. 2017.12.22 인텔 컴퓨트 스틱 LVM 관리
  28. 2017.12.16 인텔 컴퓨트 스틱(STCK1A8LFC) 무선랜(WiFi) 활성화
  29. 2017.05.11 Ubuntu Kernel Compile 2
  30. 2017.04.05 screen in ubuntu

0. 준비

  가. ubuntu

  나. tmux 3.0a

 

1. 설정

  가. $ vi .tmux.conf

    1) set -g mouse on

      가) 마우스로 윈도우 사이즈 조정 가능

    2) unbind t

      가) t를 단축키로 할당하므로 기존의 t(clock mode)를 해제

    3) bind-key -T prefix t new-window \; split-window -v \; split-window -h 'htop' \; select-pane -t 0 \; split-window -h \; select-pane -t 0 \;

      가) 새로운 윈도우을 생성, 윈도우를 상하로 분리(상하팬이됨), 하부팬을 좌우로 분리(좌우팬이됨)하고 우측팬에 htop명령어 실행, 상부팬을 선택, 팬을 좌우로 분리(좌우팬이됨), 좌측상단팬을 선택

AND

0. WSL2 in Windows10

  가. 22H2(OS Build 19045/3693)

  나. WSL2(Ubuntu20.04)

  다. 참고자료

    1) https://learn.microsoft.com/en-us/windows/wsl/connect-usb

 

1. USB/IP 설치

  가. Windows10에서

    1) https://github.com/dorssel/usbipd-win/releases/download/v3.2.0/usbipd-win_3.2.0.msi

    2) msi 설치

  나. WSL2에서

    1) $ sudo apt install linux-tools-generic hwdata

    2) $ sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

 

2. USB/IP 활용

  가. Windws10에서 시리얼장치 검색

    1) PowerShell 실행(관리자권한)

      가) > usbipd wsl list

      나) 사용하려는 장치의 BUSID를 확인해 둘 것

      다) > usbipd wsl attach --busid <busid>

        (1) 장치가 WSL2로 연결됨

        (2) > usbipd wsl detach --busid <busid>

          (가) 장치 분리

  나. WSL2에서 시리얼장치 확인

    1) Terminal

      가) $ lsusb

AND

0. 준비

  가. Ubuntu

  나. 특정포트는 애플리케이션에서 root권한이 있어야지 포트를 사용할 수 있음

    1) well-known port : 0~1023

 

1. $ sysctl net.ipv4.ip_unprivileged_port_start

  가. 해당 명령을 실행하면 root권한없이 사용할 수 있는 포트의 시작번호를 알려줌

  나. 1024가 기본으로 설정되어 있음

  다. 필요시에만 사용하려면

    1) $ sudo sysctl net.ipv4.ip_unprivileged_port_start=0

      가) ip_unprivileged_port_start와 =과 0은 붙여야함(공백없이)

 

2. service 파일 등록(운영체제 동작시마다)

  가. /etc/systemd/system/port502.service

    1) sysctl 명령어의 위치는 which sysctl로 확인하여 전체경로를 입력(/usr/sbin/sysctl일 수도 있음)

[Unit]
Description=port502open

[Service]
ExecStart=/sbin/sysctl net.ipv4.ip_unprivileged_port_start=0

[Install]
WantedBy=multi-user.target

  나. $ sudo systemctl enable port502.service --now

    1) now를 붙이면 systemctl enable 후에 systemctl start와 동일한 동작

AND

0. 준비

  가. $ ip addr에서는 장치가 인식되어 있음을 확인함

  나. $ ifconfig에서는 장치가 나타나지 않음

    1) $ ifconfig 해당장치 up을 할 경우 장치가 나타남

  다. GUI로 설정할 경우 GUI에서 네트워크카드가 나타나지 않음

 

1. 해결

  가. $ sudo touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf

  나. $ sudo systemctl restart NetworkManager

AND

L0. 준비

  가. odroid go advance

  나. ubuntu 18.04 이미지

    1) https://wiki.odroid.com/odroid_go_advance/os_image/ubuntu_es

 

1. 기본 설정

  가. ssh 접속

    1) 기본 ID, PW : odroid, odroid

  나. 패키지 최신 업데이트

    1) $ sudo apt update && sudo apt upgrade -y

    2) 재부팅

  다. joystick 소스코드 다운로드(from github)

    1) private 패키지이므로 github cli 설치

      가) https://github.com/cli/cli/blob/trunk/docs/install_linux.md

    2) 인증도 실시할 것

    3) $ git clone https://github.com/kajuha/oga_joy.git 

 

2. 우분투 응용 프로그램 패키지 등 설치

  가. $ sudo apt install build-essential libboost-all-dev libncurses5-dev

  나. 재부팅

 

3. 소스코드 수정 및 컴파일

  가. oga_joy 디렉토리내 kajuha/kapp 텍스트 문자열을 모두 odroid/oga_joy 으로 수정

    1) kajuha/kapp : 사용자 계정 / oga_joy의 변경된 명칭

  나. oga_joy/joystick 디렉토리에서

    1) $ make

  라. oga_joy/setting/add_menu_emulationstation 디렉토리에서

    1) $ make

  마. oga_joy/setting/systemd/getty@tty1.service.d 디렉토리에서

    1) override.conf 내용의 kajuha 을 사용자 계정 odroid로 변경할 것

    2) $ sudo systemctl enable getty@tty1

    3) $ sudo mkdir /etc/systemd/system/getty@tty1.service.d

    4) $ sudo ln -s `readlink -f override.conf` /etc/systemd/system/getty@tty1.service.d

      가) 홑따옴표가 이나라 backquote

 

4. 기존 서비스 비활성화

  가. $ sudo systemctl disable emulationstation

  나. $ sudo systemctl disable firstboot

  다. $ sudo systemctl disable gamestream

 

5. 쉘 수정

  가. zsh 설치(기본 쉘로 만들 것)

    1) 아래의 $TTY가 bash에서 응답하지 않았음

  나. 사용자 쉘(.bashrc 또는 .zshrc 등)의 마지막에 아래 추가

------------------------------------------------------------------

if [ $(ps -e|grep -i emulationstatio|wc -l) -ne 0 ]
then
    echo "emulationstation running"
else
    if [ $(echo $TTY|grep -i tty|wc -l) -ne 0 ]
    then
        echo "because of LCD, emulationstation run"
        /usr/bin/emulationstation/emulationstation.sh
    else
        echo "because of not LCD, don't run emulationstation"
    fi
fi

------------------------------------------------------------------

AND

odroid m1 can bus 사용

os/LINUX 2022. 4. 22. 19:50

0. 준비

  가. odroid m1

  나. ubuntu 20.04

  다. kernel : odroidm1-4.19.y

 

1. 기본설정 확인

  가. $ dmesg|grep -i can

    1) can과 관련된 커널 메시지가 있는지 확인

    2) 기본 설치에는 없음

  나. $ sudo vi /boot/config.ini

    1) can0와 i2c1이 같은 핀을 공유하므로 i2c1을 해제하고 can0를 설정

    2) overlays = "i2c0 i2c1" 을 overlays = "i2c0 can0"로 변경

    3) 재부팅

  다. $ dmesg|grep -i can

    1) CAN device driver interface 가 출력됨

    2) rockchip_canfd: module license 'unspecified' taints kernel.

    3) rockchip_canfd: Unknown symbol .......... (err -2)

    4) 에러 발생함

 

2. 에러 해결

  가. 커널 가져와서 커널 모듈 컴파일 시도

    1) $ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidm1-4.19.y

      가) $ make menuconfig

        (1) 실행후 저장후 종료

      나) $ make modules

      다) $ find .|grep -i rockchip_canfd

        (1) 모듈 인스톨을 해도 되지만, 해당 모듈만 복사하려고 하였음

        (2) drivers/net/can/rockchip/ 에 커널 모듈 생성됨

      라) $ sudo find /|grep -i rockchip_canfd

        (1) /usr/lib/modules/4.19.219-odroid-arm64/kernel/drivers/net/can/rockchip/

      마) $ sudo cp drivers/net/can/rockchip/*.ko /usr/lib/modules/4.19.219-odroid-arm64/kernel/drivers/net/can/rockchip

        (1) 재부팅

  나. dmesg 확인

    1) $ dmesg|grep -i can

      가) rockchip_canfd: version magic '4.19.219 SMP mod_unload aarch64' should be '4.19.219-odroid-arm64 SMP mod_unload aarch64'

      나) 커널과 커널버전 모듈이 다름으로 인한 에러

        (1) 커널 버전은 동일하므로 뒤에 붙는 로컬버전 메시지가 다름으로 인한 에러

    2) 커널에서 버전 수정

      가) $ make menuconfig

        (1) General setup

        (2) Local version - append to kernel release

          (가) 선택하여 "-odroid-arm64" 입력

      나) $ make modules

        (1) missing MODULE_LICENSE() 경고 발생

  다. MODULE_LICENSE() 수정

    1) $ vi drivers/net/can/rockchip/rockchip_can.c

      가) 맨 마지막줄에 MODULE_LICENSE("GPL");

      나) 라이센스는 임시로 GPL로 부여

    2) $ vi drivers/net/can/rockchip/rockchip_canfd.c

      가) 맨 마지막줄에 MODULE_LICENSE("GPL");

      나) 라이센스는 임시로 GPL로 부여

    3) $ make modules

    4) $ sudo cp drivers/net/can/rockchip/*.ko /usr/lib/modules/4.19.219-odroid-arm64/kernel/drivers/net/can/rockchip

      가) 재부팅

    5) $ dmesg|grep -i can

      가) 에러없음

 

3. can loopback 시험

  가. 커널 모듈 확인

    1) $ lsmod|grep -i can

      가) rockchip_canfd가 정상로딩되어 있으면 ok

  나. 장치 인식 확인

    1) $ ip link show

    2) 상세확인

      가) $ ip -details link show

  다. 장치 설정

    0) 참고 : https://wiki.radxa.com/Rock3/dev/can

    1) $ sudo ip link set can0 down

    2) $ sudo ip link set can0 type can bitrate 1000000 dbitrate 1000000 loopback on fd on

    3) $ sudo ip link set can0 up

    9) 정상

  라. 통신 확인

    1) $ sudo apt install can-utils

    2) $ sudo candump can0&

    3) $ sudo cansend can0 123#1122334455667788

 

4. can 시험

  가. 커널 모듈 확인

    1) $ lsmod|grep -i can

      가) rockchip_canfd가 정상로딩되어 있으면 ok

  나. 장치 인식 확인

    1) $ ip link show

    2) 상세확인

      가) $ ip -details link show

  다. 장치 설정

    0) 참고 : https://wiki.radxa.com/Rock3/dev/can

    1) $ sudo ip link set can0 down

    2) $ sudo ip link set can0 type can bitrate 1000000 dbitrate 1000000 fd on

    3) $ sudo ip link set can0 up

    9) 정상

  라. 통신 확인

    1) $ sudo apt install can-utils

    2) $ sudo candump can0&

    3) $ sudo cansend can0 123#1122334455667788

AND

0. 준비

  가. Ubuntu 18.04

 

1. 설정

  가. 기본 라우팅 인터페이스 선택은 아니고 실제로 기본 라우팅 인터페이스로 선택하지 않게 하는 방법임

  나. $ sudo nmtui

    1) Edit a connection > Wi-Fi(Ethernet) 에서 기본 라우팅 인터페이스로 하지 않을 인터페이스를 선택 > Edit

    2) IPv4 CONFIGURATION 을 Hide > Show로 변경한뒤 > Never use this network for default route 선택

AND

0. 준비

  가. ubuntu 18.04

  나. 리눅스에서 탭을 누르면 자동완성이 됨

    1) ssh 인증키를 만들어 두고 접속하면 scp나 ssh를 이용하는 프로그램의 경우 자동완성이 됨

  다. local(client) remote(server)로 설명함

 

1. local(client)

  가. 로컬에 인증키 생성 : $ ssh-keygen

    1) 특별한 사항이 있지 않는 한 기본값으로 설정

    2) 인증키(비밀키, 공개키)는 $HOME/.ssh/에 id_rsa(비밀), id_rsa.pub(공개)로 저장됨

  나. 리모트(서버)측에 인증키 복사 : $ ssh-copy-id -i ~/.ssh/id_rsa 리모트사용자명@리모트IP

    1) -i : 파일 지정할 시

    2) 리모트사용자명은 로컬과 리모트가 동일한 사용자명을 가지면 안적어도 됨

 

2. remote(server)

  가. 할 것 없음

  나. 상대방 인증키는 ~/.ssh/authorized_keys에 저장됨

AND

0. 준비

  가. Ubuntu 18.04 및 udev 사용하고 있음

  나. eeprom을 통해 일련번호를 설정할 수 있는 시리얼장치가 아님

    1) 일반적으로 eeprom이 내장된 시리얼장치는 일련번호를 설정하여 바로 고유이름을 설정하면 됨

    2) 본 예시는 eeprom이 없는 CH340G 시리얼 칩으로 가정

  다. usb를 통해서 시리얼장치가 연결됨

  라. eeprom이 없는 동일한 제조사의 시리얼 장치를 여러 개 연결함

    1) 하나의 제조사 또는 동일한 제조사라도 장치명에 대해 유일값을 가지는 것이 있다면 그것을 활용하면 됨

 

1. 상태 확인

  가. dmesg를 통해서 시리얼장치의 이름을 확인할 것

  나. 시리얼장치의 장치 연결내역을 확인할 것

    1) $ udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB4

      가) 장치의 연결순서를 알려줌

      나) ex) pci 장치 > xHCI 장치 > USB 장치(USB허브) > USB 장치(USB허브) 포트 > USB 장치(USB시리얼장치) > USB  시리얼장치

    2) 장치를 식별할 수 있도록 시리얼장치면서, 장치가 연결된 usb허브의 순번을 이용함

      가) 장치를 아주 구체적으로 확인할 수 있는 값을 이용하는 것이 좋음

      나) ex) KERNELS=="1-7.4:1.0" : 시리얼 장치로 매칭되기 전 마지막 연결 상태값

      다) ex) DRIVER=="ch341-uart" : 시리얼 장치로 매칭된 마지막 값

 

2. udev rule 작성

  가. ex) 99-test-serial.rules : 파일명

    1) ACTION=="add", KERNELS=="1-7.4:1.0", DRIVERS=="ch341", SYMLINK+="driver.1-7.4.ch341"

  나. /etc/udev/rules.d 로 파일복사

 

3. udev 재실행 및 확인

  가. $ sudo systemctl restart udev

  나. 시리얼 장치를 여러곳에 꽂아보고 실제로 특정 위치에서 driver.1-7.4.ch341가 활성화되는지 확인

AND

0. 준비

  가. Ubuntu 18.04

 

1. 저장소 추가

  가. $ sudo add-apt-repository ppa:danielrichter2007/grub-customizer

 

2. 설치

  가. $ sudo apt install grub-customizer

 

3. 실행(커맨드라인)

  가. $ grub-customizer

AND

0. 준비

  가. X윈도우를 사용하는데 너무 느려서 구글링

    0) https://unix.stackexchange.com/questions/50698/fastest-remote-x-from-windows, https://unix.stackexchange.com/questions/187415/why-is-firefox-so-slow-over-ssh

    1) 간단히 ssh -C 를 사용하여 속도 개선여부를 확인하는 것도 한가지 방법(효과있음)

  나. ssh 클라이언트와 ssh 서버측의 실제 속도를 측정해보는 것이 가장 좋음

  다. 영향을 주는 요인은 주로 ssh 교환데이터의 압축

    1) ssh -C 옵션

  라. ssh 암호화

    1) ssh -c 옵션

    2) 암호화는 ssh 클라이언트 및 ssh 서버측의 지원에 따라 달라짐

  마. ssh 맥알고리즘

    1) ssh -m 옵션

    2) 맥알고리즘은 ssh 클라이언트 및 ssh 서버측의 지원에 따라 달라짐

 

1. ssh 클라이언트측

  가. 지원하는 암호화 확인

  나. $ ssh -Q cipher

  다. $ ssh -Q mac

  라. 50MB 랜덤데이터를 가진 전송시험용 파일 생성

    0) https://unix.stackexchange.com/questions/33629/how-can-i-populate-a-file-with-random-data

    1) dd if=/dev/urandom bs=1024 count=51200 of=test_file

  마. 벤치마크 파일 생성

    0) https://blog.famzah.net/2010/06/11/openssh-ciphers-performance-benchmark/

  바. ssh-keygen 생성

    0) https://arsviator.blogspot.com/2015/04/ssh-ssh-key.html

    1) $ ssh-keygen

    2) 서버측 공개키 복사

      가) $ ssh-copy-id user@url.com

 

2. ssh 서버측

AND

0. 현상

  가. arduino 1.8.13에서 opencr board package를 설치하고 동작이 안됨

  나. arduino 실행후 컴파일 할 경우 no such file or directory로 나타남

  다. Ubuntu 16.04(kinetic)에서는 정상 실행됨

 

1. 확인

  가. 해당 디렉토리에 파일은 실제로 존재하였음

  나. $ file arm-none-eabi-gcc 를 확인한 결과 32 bit binary file인 것으로 확인

  다. $ arm-none-eabi-gcc를 할 경우 no such file or directory가 나타남

    1) 64비트 시스템에서 32비트 파일을 실행할 경우 나타남

 

2. 대처방안

  가. $ sudo apt install libc6-i386

    1) 32 bit binary용 라이브러리 설치

    2) 32 bit와 64 bit 문제인 경우 

 

3. 실행

  가. $ arduino

  나. 컴파일을 하면 정상 동작

AND

X410 port forwarding

os/LINUX 2020. 10. 31. 00:50

0. 준비

  가. 공인아이피 A를 가지는 공유기에 연결된 사설아이피 B

    1) ex : A(recipelab.net) 공유기 iptime

    2) ex : B(192.168.0.2) X11 Server 측

  나. 공인아이피 C를 가지는 공유기에 연결된 사설아이피 D

    1) ex : C(kabit.iptime.org) 공유기 iptime

    2) ex : D(192.168.1.6) X11 Client 측

  다. 전체 개략은 다음과 같음

    1) B(192.168.0.2) - A(recipelab.net 192.168.0.254) ---------- C(kabit.iptime.org, 192.168.1.254) - D(192.168.1.6)

1. 설정

  가. 공인아이피 A의 공유기 설정에 사설아이피 B를 포워딩

    1) TCP 6000 port forwarding

  나. 공이아이피 C의 공유기 설정에 사설아이피 D를 포워딩

    1) TCP 6000 port forwarding

  다. 사설아이피 B에서 X11 Forwarding 설정

    1) $ export DISPLAY=kabit.iptime.org:0

    2) :0 이 아닌 다른 것은 설정되지 않았음

    3) :n은 6000+n으로 설정하면 된다고 했지만 X410에서는 되지 않음

      가) 시험한 시점은 2020/10/31

 

2. 실행

  가. 사설아이피 D에서 X11용 명령어 실행

    1) $ xclock

    2) 시험용으로 시계 실행

AND

0. 준비

가. Ubuntu : IP(예:10.0.0.2)

나. Windows 10 : IP(예:10.0.0.1)

 

1. X410 연결

가. Windows 10

1) X410 실행

  가) 작업표시줄 아이콘 오른쪽 버튼 Allow Public Access 체크(클릭)

2) Terminal에서 ssh 10.0.0.2

3) $ export DISPLAY=10.0.0.1:0.0

4) $ xclock 를 실행확인

 

AND

0. 설치

  가. Windows 10에 Font 설치

    1) Zsh에서 agnoster 테마를 사용하면 Powerline 폰트가 필요함

    https://github.com/microsoft/cascadia-code/releases

    2) Ubuntu(WSL)이 설치된 상태에서 Zsh 설치 및 설정

      가) $ sudo apt install zsh

      나) $ which zsh를 통해 쉘의 위치 확인

      다) $ chsh -s /usr/bin/zsh 또는 chsh -s `which zsh`

        (1) '(Apostrophe, 작은따옴표, 홑따옴표)가 아니라 `(grave accent, 억음, backquote, 역따옴표)임

   3) Oh My Zsh 설치 및 설정

    가) $ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

    나) .zshrc 파일을 편집하여 ZSH_THEME="robbyrussell" -> ZSH_THEME="agnoster" 로 변경

 

1. 사용

  가. 어떠한 터미널이든 터미널이 있는 쪽 컴퓨터에 Powerline 폰트가 설치되어 있어야함

  나. SSH의 서버가 있는 쪽이 Zsh, Oh My Zsh 및 agnoster 테마가 있어야 Powerline 폰트 효과가 있음

 

AND

0. 참고사항

  가. 운영체제

    1) Ubuntu 18.04 LTS

 

1. 이전할 자료 백업 및 복사

  가. Compute Stick(이전할 자료 백업)

    1) django

      가) 파이썬 프로그램

        (1) virtualenv관련이 포함되어 있음

    2) apache2

      가) django 관련 설정

        (1) /etc/apache2/sites-available/관련설정.conf 백업

        (2) 웹서버 비활성화

          (가) $ sudo a2dissite 관련설정.conf

          (나) $ sudo service apache2 reload

 

  나. ThinkCentre M(이전 자료 복사)

    1) 원래의 디렉토리 위치와 동일하게 복사

      가) 이전하기전의 계정과 디렉토리가 동일하게 되어 있음

        (1) /홈디렉토리/계정/django/www/파이썬 웹서버 프로그램

      나) virtualenv 재구성 및 django 시험

        (1) 이전할 자료에 www/venv로 virtualenv를 구성해두었었음

        (2) venv activate는 되지만 에러가 발생함

        (3) 기존 venv 삭제 및 새로운 venv 생성 및 필수파일 추가

          (가) $ sudo apt install python3-pip (필요시)

          (나) $ pip3 install virtualenv(필요시)

          (다) $ virtualenv --python=python3 venv

          (라) 시험

            a. $ python manage.py runserver 0.0.0.0:8000

            b. database 에러 발생(필요시)

              i) $ rm db.sqlite3 or mv db.sqlite3 db.sqlite3.bak

              ii) $ python manage.py makemigrations

              iii) $ python manage.py migrate

      다) apache2 설정

        (1) 설치

          (가) $ sudo apt install apache2

          (나) $ sudo apt install libapache2-mod-wsgi-py3

        (2) 기존 설정 복사

          (가) $ sudo cp 기존설정.conf /etc/apache2/sites-available

        (3) 활성화

          (가) 기본 아파치 설정 비활성화

            a. $ sudo a2dissite 000-default.conf

          (나) 이전할 아파치 설정 활성화

            a. $ sudo a2ensite 관련설정.conf

          (다) 서버 재설정

            a. $ systemctl reload apache2

  다. 성공

AND

0. 사전 준비사항

  가. VirtualBox에 Ubuntu 18.04 설치

  나. $ sudo apt install build-essential

 

1. DirectFB 준비

  가. $ git clone https://github.com/Distrotech/DirectFB.git

    1) git 없을 경우

      가) $ sudo apt install git

  나. $ git checkout DIRECTFB_1_6_3

    1) git checkout를 누르고 더블 탭을 하면 태그목록이 뜸

  다. $ ./autogen.sh

    1) 일부 프로그램이 없을 경우

      가) $ sudo apt install libtool autoconf automake

    2) flux 에러 생길 경우

      가) $ git clone https://github.com/Distrotech/flux.git

      나) $ ./autogen.sh

        (1) AC_MSG에러 생길 경우

          (가) $ sudo apt install pkg-config

      다) $ ./configure

      라) $ make

      마) $ sudo make install

  라. $ ./configure --with-tests

    1) --with-tests 예제 파일을 생성함

  바. $ make

  사. $ sudo make install

  아. $ dfbtest_fillrect

    1) 공유라이브러리 로딩에러시

      가) $ sudo ldconfig

    2) /dev/fb0 에러 발생시

      가) $ sudo usermod -a -G video 사용자계정

      나) 로그아웃을 했다가 다시 로그인을 해야지 적용됨

    3) /dev/tty0 에러 발생시

      가) 홈디렉토리에 설정파일 생성

      나) $ vi ~/.directfbrc

        1) mode=800x600

          (가) 화면 크기

        2) system=x11

          (나) X윈도우 환경으로 출력

    4) 프로그램 실행은 되지만 화면 출력은 안될 경우

      가) $ sudo apt install libgles2-mesa-dev

      나) $ ./configure --with-gfxdrivers='gles2'

      다) $ make

      라) $ sudo make install

AND

0. 필요사항

  가. 팀뷰어로 원격제어할 경우 모니터가 없을 경우 화면이 검게 표시됨

  나. 가상 화면을 만들어서 가상 화면을 디스플레이함

  다. 가상 모니터를 만들 경우 실제 모니터를 연결해도 표시가 안됨

    1) xorg.conf를 삭제, 이동 또는 이름을 변경하면 됨(ex:xorg.conf.bak)


1. 가상 모니터 드라이버 설치

  가. $ sudo apt-get install xserver-xorg-video-dummy

  나. 아래의 파일을 xorg.conf 로 생성

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection
 
Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection
 
Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1024x800"
    EndSubSection
EndSection
cs

  다. $ cp xorg.conf /usr/share/X11/xorg.conf.d

  라. 재부팅

AND

log 관련 잡다

os/LINUX 2018. 11. 27. 14:52

0. 필요사항

  가. ubuntu 기준

  나. /var/log


1. syslog(messages)

  가. 일반 로그


. auth.log

  가. 사용자 로그인 및 인증 로그


. apport.log

  가. 애플리케이션 크래시 로그


. bootstrap.log

  가. 관련정보 부족으로 정확한 정보인지 모호함

  나. 데비안 시스템 설치관련 로그

  다. cdebootstrap가 생성


. btmp

  가. 로그인 실패 정보 로그

  나. $ last -f /var/log/btmp 사용


. dpkg.log

  가. dpkg 패키지 관련 로그


. faillog

  가. 로그인 실패 관련 로그

  나. ssh 실패는 확인 안됨

  다. 정확인 로그정보를 모르겠음

  라. $ faillog 명령어 사용


. kern.log

  가. 커널 관련 로그


. lastlog

  가. 마지막 로그인 관련 로그

  나. $ lastlog 명령어 사용


. wtmp

  가. 로그인 정보 로그

  나. $ last -f /var/log/wtmp 사용


AND

ubuntu mariadb 설치

os/LINUX 2018. 11. 13. 19:06

0. 준비사항

  가. ubuntu 18.04


1. 설치

  가. $ sudo apt update && sudo apt install mariadb-server mariadb-client -y


2. 설정

  가. 보안

    1) $ sudo mysql_secure_installation

      가) root 패스워드 변경, 익명유저 제거, root 원격 로그인, 테스트 db 삭제, 권한 테이블 리로드 설정

  나. 외부접속허용(3306포트)

    1) $ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

      가) [mysqld] 섹션의 bind-address = 127.0.0.1 -> bind-address = :: 으로 변경

    2) $ sudo systemctl restart mysql <-- 재시작

  나. 원격접속권한(root)

    1) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

 FLUSH PRIVILEGES;

AND

0. 준비사항

  가. Ubuntu

  나. 참고 사이트

    1) https://github.com/randy3k/RemoteSubl


1. rsub 설치 및 실행

  가. 서버측 설치

    1) $ curl -o rsubl https://raw.githubusercontent.com/aurora/rmate/master/rmate

       $ curl -o rsubl https://raw.githubusercontent.com/kajuha/rmate-python/master/bin/rmate

    2) $ chmod +x rsubl

    3) $ sudo mv rsubl /usr/local/bin

  나. 로컬측 설치

    1) sublime text의 Package Control에서 RemoteSubl을 설치

  다. 로컬측 실행

    1) ssh 접속

      가) ssh -R 52698:localhost:52698 서버ID@서버주소

      가) ssh -R 52698:127.0.0.1:52698 서버ID@서버주소

        (1) 예 : ssh -R 52698:localhost:52698 user@google.com

        (1) 예 : ssh -R 52698:127.0.0.1:52698 user@google.com

        (2) 실행측의 .ssh/config 파일안에 아래를 적으면 위의 원격을 매번 안쳐도 됨

             특정 호스트만 적용하려면 * -> 아이피주소로 변경하면 됨

          (가) Host *

          (나) RemoteForward 52698 127.0.0.1:52698

    2) 서브라임 텍스트 실행

    3) ssh에서 rsubl 편집할 파일명

      가) 예 : rsubl test.txt

AND

0. 준비사항

  가. Ubuntu 18.04.1 Server


1. 상황

  가. 콘솔에서 virtualenv를 설치하려고 함

    1) $ sudo apt install virtualenv

  나. 패키지를 찾을 수 없다는 에러가 발생


2. 해결

  가. /etc/apt/sources.list의 마지막에 universe를 추가함

    ex) 기존 : deb http://archive.ubuntu.com/ubuntu bionic main

         수정 : deb http://archive.ubuntu.com/ubuntu bionic main universe


3. 의미

  가. 우분투 소프트웨어 저장소의 종류

    1) Main - Officially Supported, Open-Source Software

    2) Restricted – Officially Supported, Closed-Source Software

    3) Universe – Community-Maintained, Open-Source Software

    4) Multiverse – Unsupported, Closed-Source and Patent-Encumbered Software


AND

0. S/W 준비사항

  가. Ubuntu 18.04 LTS

  나. 사용자ID 및 홈디렉토리는 user로 가정

  다. 작업디렉토리는 /home/user/ws/jupyter로 가정

    1) mkdir -p /home/user/ws/jupyter

  라. 가상환경디렉토리는 /home/user/venv/jupyter로 가정

    1) mkdir -p /home/user/ws/jupyter

  마. 자신의 IP는 192.168.0.1로 가정


1. 추가 S/W 설치

  가. 파이썬 가상환경 설치 및 실행

    1) $ sudo apt install virtualenv

    2) $ virtualenv --python=python3 /home/user/venv/jupyter

    3) $ . (<-점, 포인트) /home/user/venv/jupyter/bin/activate

      가) $ source /home/user/venv/jupyter/bin/activate (<- 동일한 방법)

  나. 쥬피터 노트북 설치

    1) $ pip install jupyter


2. 쥬피터노트북 설정

  가. 설정 파일 생성

    1) $ jupyter notebook --generate-config

      가) 홈 디렉토리에 .jupyter 설정 디렉토리가 생성됨

        (1) $ cd /home/user/.jupyter

      나) jupyter_notebook_config.py 파일을 수정

        (1) 설정파일은 사전에 백업을 해둘 것

          (가) cp jupyter_notebook_config.py jupyter_notebook_config.py.bak

  나. 설정 파일 편집

    1) $ vi jupyter_notebook_config.py

    2) 외부 접속 허용

      가) c.NotebookApp.allow_origin = '*'

    3) 시작시 브라우저 실행 안함

      가) c.NotebookApp.open_browser = False

    4) 암호 설정(1번 방법)

      가) $ jupyter notebook password

      나) 설정할 패스워드 입력하면 완료

    5) 암호 설정(2번 방법)

      가) $ python3 실행

        (1) from notebook.auth import passwd 엔터

        (2) passwd() 엔터

        (3) 설정할 패스워드를 입력하면 sha1 암호가 출력됨 저장해둘 것

      나) 쥬피터 설정파일에서 저장된 암호를 입력

        (1) c.NotebookApp.password = 'sha1:...............'

  다. 실행

    1) $ jupyter notebook --ip=0.0.0.0


3. 실행 스크립트 작성

  가. /home/user/ws에 jupyter.sh 스크립트 작성

    1) $ cd /home/user/ws

    1) $ vi jupyter.sh

      가) #!/bin/bash

      나)

      다) source /home/user/venv/jupyter/bin/activate

      라) cd /home/user/ws/jupyter

      마) jupyter notebook --ip=0.0.0.0

  나. 실행권한 설정

    1) chmod 755 jupyter.sh


4. 서비스 등록

  가. $ cd /etc/systemd/system

  나. $ sudo vi jupyter.service

    1) [Unit]

    2) Description=Jupyter Notebook

    3)

    4) [Service]

    5) Type=simple

    6) WorkingDirectory=/home/user/ws/jupyter

    7) ExecStart=/home/user/ws/jupyter.sh

    8) User=user

    9) Group=user

    10) Restart=always

    11)

    12) [Install]

    13) WantedBy=multi-user.target

  다. 서비스 시작 및 활성화

    1) sudo systemctl start jupyter.service

    2) sudo systemctl enable jupyter.service

  라. 서비스 수정후 데몬 리로드

   1) sudo systemctl daemon-reload


5. 끝

AND

0. 준비 사항

  가. 우분투 18.04

  나. ipTIME VPN서버 PPTP(암호화없음)


1. 네트워크 매니저(GUI 방식)

  가. 16.04에는 네트워크 편집기에 VPN 자동연결 항목이 있음, 18.04에는 없음

  나. 기존 네트워크 편집기로 수정하면 가능함

    1) nm-connection-editor 실행


2. 네트워크 매니저(CLI 방식)

  가. 네트워크 매니저 디렉토리에 새로운 연결을 만들 파일(vpn) 생성

    1) $ sudo vi /etc/NetworkManager/system-connections/vpn

    2) 본문내용

[connection]

id=vpn <-- 노출되는 연결명

uuid=aff531e3-47bf-41db-b8ee-a7017e3e3e8a

type=vpn

autoconnect=false

permissions=

[vpn]

gateway=123.456.789.000 <-- vpn 서버 주소

password-flags=0 <-- 비밀번호 입력을 자동으로 할 경우

user=guest <-- vpn 사용자

service-type=org.freedesktop.NetworkManager.pptp

[vpn-secrets]

password=00000000 <-- vpn 비밀번호

[ipv4]

dns-search=

method=auto

[ipv6]

addr-gen-mode=stable-privacy

dns-search=

method=auto

  나. 특정 연결이 네트웍에 연결될 경우 자동으로 vpn을 연결할 경우

    1) 특정 연결 열기 ex) $ sudo vi /etc/NetworkManager/system-connection/noname

    2) [connection] 섹션에서

      가) secondaries=연결할 vpn 연결 파일의 uuid를 입력

        (1) ex) secondaries=aff531e3-47bf-41db-b8ee-a7017e3e3e8a;

  다. 네트워크 매니저를 재실행

    1) $ sudo systemctl restart NetworkManager

  라. 네트워크 현황 보기

    1) $ nmcli conn

  마. 특정 네트워크 연결 및 해제

    1) $ sudo nmcli conn up 특정 연결명(/etc/NetworkManager/system-connection)

    2) $ sudo nmcli conn down 특정 연결명

    

AND

tmux in ubuntu

os/LINUX 2017. 12. 31. 06:42

0. 설치


  가. $ sudo apt install tmux : ubuntu, (apt or apt-get)


1. Session 관련(여러개 세선 생성 가능)


  가. $ tmux new-session -s [session_name] -n [window_name] : screen_name 및 window_name 을 가지는 세션 생성, -s, -n을 지정하지 않으면 임의 이름 생성됨


  나. $ tmux attach-session -t [session_name] : 지정 session_name을 가지는 세션으로 접속, 화면 공유 같이됨


  다. 세션(윈도우-팬)에서 Ctrl + b + d : 세션 detach


  라. 세션(윈도우-팬)에서 Ctrl + b + $ [session_name] : session_name으로 세션 이름 변경


2. Window 관련(세션 내에는 여러 윈도우 생성 가능)


  가. Ctrl + b + c : 새로운 윈도우 생성


  나. Ctrl + b + , : 윈도우 이름 변경


  다. Ctrl + b + 0~9 : 지정 번호의 윈도우로 이동


  라. Ctrl + b + & 또는 exit : 윈도우 삭제


3. Pane 관련(윈도우 내에서는 여러 팬 생성 가능)


  가. Ctrl + b + " : 팬 가로 분할


  나. Ctrl + b + % : 팬 세로 분할


  다. Ctrl + b + 방향키 : 팬 이동


  라. Ctrl + b + [ : 스크롤(방향키업다운 또는 페이지업다운 )


  마. exit : 팬 삭제


4. Session 공유(A:공유권한자, B:공유사용자)


  가. $ tmux attach-session -t [session_name] : 지정 session_name을 가지는 세션으로 접속, 화면 공유 같이됨


  나. 가는 동일한 유저일 경우 간편하게 사용가능함, 하지만 다른 유저일 경우는 아래와 같이 사용


  다. A : $ tmux -S /tmp/socket


    1) -S /tmp/socket는 다른 유저에게 공유할 소켓 경로 이름


  라. A : $ chmod 777 /tmp/socket


    1) 다른 유저가 공유할 수 있도록 접근권한 변경


  마. B " $ tmux -S /tmp/socket attach-session

AND

1. 우분투 설치(16.05.3기준)

  가. 써드파티 드라이버 & 라이센스 설치

  나. LVM을 가진 전체 디스크로 설치

    1) 기존에 LVM으로 설정된 내장 또는 외장 디스크가 있을 경우 설치가 안될 수도 있으므로 LVM을 삭제해야함.

    2) 이것을 모르고 디스크 용량이 부족한 것으로 판단하였음

      가) 우분투에서 디스크 용량 부족 경고를 띄웠음

      나) 아무런 표시도 없이 현재 창을 다시 보여주는 것도 있었음

2. LVM

  1) microSD 64GB 삽입

  2) LVM으로 기존 논리 볼륨에 추가

  3) 확장 참고

    가) http://zelda.tistory.com/entry/lvm?category=177187

3. 원격 제어

  1) 인터넷이 안되므로 USB-LAN이나 무선랜을 장착해서 이후 진행

  2) sudo apt update

    가) 안될 경우 Software & Updates의 저장소를 변경하면 됨

  3) sudo apt install ssh screen

  4) 이후부터는 ssh로 접근해서 사용

4. ssh로 접속

  1) sudo apt upgrade -y

  2) sudo apt git libncurses5-dev libssl-dev

  3) sudo apt kernel-package

5. WLAN 드라이버 인식

  1) 참고

    가) http://zelda.tistory.com/entry/%EC%9D%B8%ED%85%94-%EC%BB%B4%ED%93%A8%ED%8A%B8-%EC%8A%A4%ED%8B%B1STCK1A8LFC-%EB%AC%B4%EC%84%A0%EB%9E%9CWiFi-%ED%99%9C%EC%84%B1%ED%99%94?category=177187

6. HDMI가 없을 경우 부팅 안됨

  1) 초기에는 H/W 문제로 판단됨

    가) 이걸로 인해 엄청난 삽질을 했음

    나) 결론은 바이오스 업데이트로 해결

  2) 해당 쓰레드

    가) https://communities.intel.com/thread/84871?start=15&tstart=0

  3) 바이오스 업데이트 사이트

    가) https://downloadcenter.intel.com/download/26540/Compute-Stick-BIOS-Update-FCBYT10H-86A-?v=t

AND

1. 인텔 컴퓨트 스틱 내장 8기가 eMMC

  가. 외장 64기가 microSD


2. 내장 8기가에 우분투 16.04설치

  가. 설치시 lvm으로 설치


3. 디스크 크기 확인

  가. df -h


4. 물리볼륨 확인

  가. pvscan, pvdisplay, pvs


5. 물리볼륨 생성

  가. pvcreate /dev/mmcblk2


6. 볼륨그룹 확인

  가. vgscan, vgdisplay, vgs


7. 볼륨그룹 확장

  가. vgextend ubuntu-vg /dev/mmcblk2


8. 논리볼륨 확인

  가. lvscan, lvdisplay, lvs


9. 논리볼륨 확장

  가. lvextend -L+60G /dev/ubuntu-vg/root

  나. +60G는 60G를 추가한다는의미, 외장 크기에 따라 입력할 것


10. 파일시스템 확장

  가. resize2fs /dev/mapper/ubuntu--vg-root


11. 디스크 크기 확인

  가. df -h

AND

1. 아마존에서 컴퓨트 스틱 구매

 가. https://www.amazon.com/gp/product/B00W7KAABK/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

  나. 사양

    1) CPU : Z3735F, RAM : 1GB, FLASH : 8GB

    2) Ubuntu 14.04 preinstalled

  다. 플래시 8기가중 실제 4기가만 사용가능, 나머지 4기가는 프리인스톨된 우분투 복구 파티션(7.1기가 정도로 인식되고 2기가는 복구용 5.1기가는 리눅스용)


2. MicroSD 64GB 장착 및 우분투 16.04 설치

  가. MicroSD 64GB 장착

  나. 우분투 16.04를 MicroSD에 설치

    1) 우분투 16.04 LTS : 

    2) 기존 8기가 파티션은 삭제(그대로 두면 리눅스에서 인식이 되므로 특별한 필요가 없다면 다른 용도로 사용)


3. 우분투 16.04 사용

  가. 와이파이 안됨, 프리인스톨된 우분투에는 와이파이 드라이버가 설치되어서 가능한 경우임, 컴퓨트 스틱의 와이파이는 rtl8723bs SDIO 드라이버가 필요함

  나. 우분투 16.04의 커널은 4.10.0-28임

    1) config 파일을 boot 디렉토리에서 복사

  다. 구글링 결과 커널 4.14에 staging driver에 rtl8723bs SDIO 드라이버가 포함되어 있음

  라. 커널 컴파일시 기본 포함이 아니므로 rtl8723bs를 모듈로 포함해야함

    1) make menuconfig -> Device Drivers -> Staging Drivers -> Realtek RTL8723BS SDIO Wireless LAN NIC driver

      가) 커널 컴파일 참고 : http://zelda.tistory.com/entry/Ubuntu-Kernel-Compile?category=177187

  마. 설치된 커널로 부팅시에도 와이파이 사용불가

  바. 와이파이의 펌웨어 파일을 설치해야함

    1) https://github.com/hadess/rtl8723bs

    2) make install


4. 정상동작

  가. 와이파이 설정후 사용

    1) GUI에서 networkmanager 사용

    2) console에서 nmcli 또는 nmtui 사용

AND

Ubuntu Kernel Compile

os/LINUX 2017. 5. 11. 12:47

0. 절차

  가. 설치한 우분투 버전의 커널 버전과 동일한 커널 컴파일 및 설치


  나. 커널 버전 업 및 다운 그레이드를 위한 커널 컴파일 및 설치


1. 준비사항

  가. OS: Ubuntu 16.04.2 LTS 64bits


  나. Linux Kernel: 4.8.0


2. 커널 준비

  가. $ sudo apt update && sudo apt upgrade: 커널 컴파일에 필요한 툴을 설치하기 전 현재 패키지를 업데이트

    1) sudo: root 권한으로 명령어 수행

    2) apt: 우분투 패키지 매니저

      가) update: 패키지 업데이트

      나) upgrade: 패키지 업그레이드

    3) &&: 앞의 명령어가 정상 종료(성공)했다면 다음 명령어를 실행

    4) sudo apt upgrade로 커널 업그레이드됨(4.8.0-36 -> 4.8.0-51)

  나. $ sudo apt install build-essential kernel-package libncurses5-dev bison flex libssl-dev


3. 커널 컴파일(설치한 우분투 버전과 동일한 커널 버전)

  가. 커널 가져오기

    1) $ uname -r: 커널버전 확인

      가) uname: 시스템 정보 출력

        (1) -r: kernel release

      나) 4.8.0-51-generic: 커널 4.8.0

    2) https://www.kernel.org/pub/linux/kernel/ 에서 설치된 커널과 동일한 커널 가져오기

      가) https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.8.tar.xz 받기

      나) gz, bz2(V2.x이하 대), xz이 있으며 압축 형식만 다름

    3) 컴파일용 디렉토리 생성 및 커널 압축해제

      가) $ mkdir kernel: 사용자 홈디렉토리에 생성(ex) /home/user/kernel)

      나) kernel 디렉토리에 linux-4.8.tar.xz 이동(ex) ~$ mv Downloads/linux-4.8.tar.xz kernel/

      다) 압축해제

        (1) tar xvJf linux-4.8.tar.xz: xz파일 확장자를 가지는 압축 파일을 해제

          (가) tar: 파일을 묶거나 풀기(압축 및 해제 지원)

            (1) x: 풀기

            (2) v: 확인(묶거나 풀리는 파일을 표시)

            (3) J: xz 파일 포맷, bz2는 j, gz는 z

            (4) f: 파일지정

        (2) linux-4.8 커널 디렉토리가 생성됨

      라) linux-4.8 커널 디렉토리가 생성됨


  나. 커널 컴파일

    1) $ cd linux-4.8: linux-4.8 커널 디렉토리로 이동

      가) $ cd linux-4.8

    2) 커널 config 파일 가져오기

      가) $ cp /boot/config-4.8.0-51-generic .config: boot 디렉토리의 커널 컨피그 파일을 .config로 변경

        (1) .config가 실제 컨피그 설정파일이며 boot 디렉토리에는 현재 커널시 설정한 컨피그 파일이 저장되어 있으므로 그 파일을 활용

      나) $ make menuconfig: 콘솔에서 커널 설정

        (1) curses.h 에러가 나므로 해당 패키지 설치

          (가) $ sudo apt install -y libncurses5-dev

            a. install: 패키지 설치

            b. -y: 패키지와 관련한 의존성 패키지가 있을 시 물어보지 않고 설치

      다) 현재 설치된 커널과 동일한 설정을 가지는 커널 컴파일 상황이므로 빠져나가기(ESC)

    3) 커널 컴파일 및 설치

      가) $ fakeroot make-kpkg -j 2 --initrd --append-to-version=-user kernel-image kernel-headers: 커널 컴파일

        (1) fakeroot: 실제 root 권한없이 빌드시 필요한 root 권함을 줌

        (2) make-kpkg:

          (가) -j: 컴파일에 사용할 프로세서 수

          (나) --initrd: 램디스크 생성

          (다) --append-to-version: 컴파일된 커널의 버전 뒤에 붙는 이름

          (라) kernel-image: 커널 이미지 생성

          (마) kernel-headers: 커널 헤더 생성

            (a) 최근에는 kernel-headers 생성서 에러가 발생함

            (b) touch REPORTING-BUGS로 해결

        (3) make-kpkg 명령이 없어서 에러 발생하므로 해당 패키지 설치

          (가) $ sudo apt install -y kernel-package

        (4) 커널 컴파일중 opensslv.h 에러 발생

          (가) $ sudo apt install -y libssl-dev

      나) $ cd ..: 상위 디렉토리에 컴파일된 커널.deb가 생성

      다) $ sudo dpkg -i *.deb: 커널 이미지 및 헤더를 설치

        (1) dpkg: 데비안 패키지 매니저

          (가) -i: 설치

    4) 컴파일된 커널 확인

      가) uname -r을 하여 컴파일된 커널을 확인


4. 최신 커널 컴파일

  가. git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git: git으로 최신 커널 가져오기

    1) git 명령이 없어 에러가 나므로 git 설치

      가) sudo apt install git

    2) git으로 가져오는 것이 웹에서 가져오는 것보다 느림


  나. cd linux-stable: linux-stable 디렉토리로 이동


  다. cp ../linux-4.8/.config .: 상위 디렉토리의 하위 디렉토리 linux-4.8에서 커널 컨피그 파일을 최신 커널 디렉토리에 복사

    1) ..: 상위 디렉토리

    2) .: 현재 디렉토리


  라. make oldconfig: 이전 커널 버전의 설정 파일을 이용하여 최신 커널 버전의 설정 파일로 적용하고 추가된 기능을 사용 유무를 확인

    1) 모르는 기능에 대해서는 넘기기(엔터)를 함

  마. 이후의 사항에 대해서는 전과 동일함

AND

screen in ubuntu

os/LINUX 2017. 4. 5. 16:57

0. 설치


  가. $ sudo apt install screen : ubuntu, (apt or apt-get)



1. Session 관련(여러개 세션 생성 가능)


  가. $ screen -S [session_name] : session_name을 가지는 세션 생성


  나. $ screen -r [session_name] : session_name을 가진 세션으로 reattach


  다. $ screen -x [session_name] : session_name과 같은 세션 화면 공유(2명이서 화면을 같이 사용)


  라. 세션(윈도우)에서 Ctrl + a + d : 세션detach


  마. 세션(윈도우)에서 Ctrl + a + :sessionname [session_name] : session_name으로 세션 이름 변경


  바. $ echo $STY : 현재 세션 이름 확인



2. Window 관련(세션 내에는 여러 윈도우 생성 가능)


  가. Ctrl + a + w : 윈도우 목록을 하단에 표시


  나. Ctrl + a + " : 윈도우 목록을 표시하고 이동 선택 가능


  다. Ctrl + a + c : 새로운 윈도우 생성


  라. Ctrl + a + A : 윈도우 이름 변경


  마. Ctrl + a + 0~9 : 지정 번호의 윈도우로 이동


  바. Ctrl + a + k : 윈도우 삭제

AND