본문 바로가기

운영체제/Linux27

커널 소스 분석을 위한 ctags 사용법 1. ctags란? ctags는 소스 코드 파일을 분석하여 함수, 변수, 매크로 등과 같은 기호의 정의와 선언 위치를 저장한 태그 파일(tags)을 생성하는 명령어이다. 생성된 태그 파일을 Vim과 같은 에디터과 같이 사용하면 소스 코드 내에서 함수나 변수가 정의된 위치로 빠르게 이동할 수 있다.    2. ctags 설치 $sudo apt-get install exuberant-ctags     3. tags(태그 파일) 생성 리눅스 커널의 Makefile에는 tags를 생성하는 타겟 명령이 포함되어 있기 때문에 커널 소스가 위치한 디렉토리로 이동한 후 아래 명령어를 입력하면 tags를 생성할 수 있다. 커널 소스의 규모가 방대해서 이 과정은 몇시간 걸리니 할일 없을 때 실행시켜 놓으면 된다. $mak.. 2024. 9. 22.
Ubuntu 16.04 ] 고정 IP 설정 + 디폴트 게이트웨이 우선순위 변경 1. ifconfig 명령어를 사용해 이더넷 인터페이스 명 확인$ifconfig   2. 네트워크 설정 파일 수정에디터를 사용해 설정 파일을 연다.$sudo vim /etc/network/interfaces 만약 lo 설정이 있다면 루프백 인터페이스니 그냥 두면된다. 그리고 설정하려는 인터페이스가 dhcp로 설정되어있으면 주석처리 해주고 아래와 같이 고정 IP 설정을 한다.auto eth0iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 :wq로 파일 저장 후 빠져나온다.  3. 네트워크를 재시작한다.$sudo systemctl restart networking.service   고정.. 2024. 9. 18.
Minicom 사용법 1. Minicom이란?미니컴은 리눅스 환경에서 사용되는 터미널 에뮬레이터이다.  2. Minicom 설치하기# Debian/Ubuntu 계열$sudo apt-get install minicom 3. 디바이스 인식 확인디바이스를 연결한 후 dmesg 명령어로 시스템로그를 확인해 디바이스가 올바르게 인식되었나 확인해보자. USB 시리얼 통신 장치의 경우 보통 /dev/ttyUSBx와 같은 이름으로 나타난다. 만약 올바르게 인식되지 않았다면 디바이스 드라이버를 설치해야 할 수도 있다.dmesg  4. Minicom 설정하기Minicom을 처음 실행하기 전에 통신 설정을 구성해야 한다. 이를 위해 -s 옵션을 사용해 설정 메뉴를 열고 설정한다.sudo minicom -sSerial port setup: 직렬 .. 2024. 9. 16.
Ubuntu ] 터미널 관련 단축키 Ctrl + Alt + T : 새로운 터미널 창 열기Ctrl + Shift + T : 현재 터미널 창에서 새로운 탭 열기Ctrl + Shift + N : 새로운 터미널 창 열기Ctrl + D : 현재 터미널 탭이나 창을 종료Ctrl + Page Up/Page Down : 터미널 탭 간 이동Alt + 숫자키 : 해당 번째 터미널 탭으로 이동 exit : 터미널 세션 종료clear : 터미널 화면 지우기reset : 터미널 리셋 Ctrl + C : 현재 명령어 중지Ctrl + Z : 현재 작업을 백그라운드로 일시 중지, fg 명령어로 다시 실행 가능 Ctrl + Shift + C : 터미널에서 텍스트 복사Ctrl + Shift + V : 터미널에 텍스트 붙여넣기 2024. 9. 14.
Ubuntu ] 화면 캡쳐(스크린샷) 단축키 전체 화면 캡쳐 : PrtScPrint Screen 키를 누르면 현재 화면 전체가 캡쳐 된다. 캡쳐된 이미지는 ~/Pictures 폴더에 저장된다.현재 활성창 캡쳐 : Alt + PrtSc현재 활성화된 창만 캡쳐된다.선택 영역 캡쳐 : Shift + PrtSc마우스로 캡쳐할 영역을 선택할 수 있다.선택 영역 캡쳐 + 캡쳐한 사진 클립보드에 복사 : Ctrl + Shift + PrtSc선택 영역 캡쳐 이후 Ctrl + V 로 붙여넣기 가능하다. 2024. 9. 12.
Ubuntu ] Num lock 키 자동 활성화 하기 Ubuntu에서 부팅 시 Num lock 키가 비활성화 되어 있어 매번 눌러줘야 하는 불편함이 있다. 이를 해결하기 위한 방법을 소개한다.    1. numlockx 설치$ sudo apt install numlockx  2. LightDM 디스플레이 매니저 구성 파일을 에디터로 열기sudo vim /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf  3. 맨 아래 문구 추가하기greeter-setup-script = / usr / bin / numlockx on   이렇게 하면 로그인 화면에서 Num lock 키가 자동 활성화 된다. 2024. 9. 10.
Ubuntu ] 한영전환키 설정 설정 > 지역 및 언어 > 설치된 언어 관리를 눌러 language support가 완전히 설치되지 않았다는 안내 창이 뜨면 설치 후 재부팅한다. 입력 소스에서 한국어(101/104키 호환)은 삭제해준다.   만약 입력 소스에서 Hangul이 안보이면 다시 설치된 언어 관리를 눌러 키보드 입력기가 IBus로 선택되어 있는지 확인한다.   터미널에서 다음 명령어를 치고 입력기 > 추가를 눌러 Hangul을 추가한다.ibus-setup   다시 설정 > 지역 및 언어 > 입력 소스에서 Hangul의 톱니바퀴 버튼을 클릭하고 한영전환키 옆의 추가 버튼을 누른상태에서 한영 키를 누르고 확인을 누른다.  이후 한영전환키를 눌러 한글을 입력할 수 있다. 2024. 6. 5.
Ubuntu ] Some index files failed to download. 에러 해결 아래와 같은 문구가 뜨면서 sudo apt update가 안되는 현상이다. E: Some index files failed to download. They have been ignored, or old ones used instead.   링크 :https://www.tecmint.com/some-index-files-failed-to-download/ How to Fix “W: Some index files failed to download.” Error In UbuntuSometimes you might encounter the error “W: Some index files failed to download.” on Ubuntu when updating the system.www.tecmint.co.. 2024. 5. 28.
Ubuntu ] 시스템 복원 도구 timeshift 설치 우분투에서는 이것저것 설치하다가 의존성 문제로 도중에 망하고 첨부터 다시 시작하고 싶어지는게 한두번이 아니기 때문에 시스템 restore를 위한 timeshift 부터 설치해줬다. sudo apt-get install timeshift   우분투 버전이 20.04 미만이면 먼저 timeshift PPA repository를 추가해야한다. lsb_release -a 명령으로 우분투 버전을 확인할 수 있다.sudo add-apt-repository ppa:teejee2008/timeshift   GUI timeshift 앱을 실행한다. ext4 파일시스템을 사용하는 경우 스냅샷 타입 RSYNC를 선택한다. 파일시스템 타입은 cat /etc/fstab 명령으로 볼 수 있다.   그 다음 스냅샷을 저장할 디스크.. 2024. 5. 27.
Ubuntu ] 안쓰는 ssd 사용하여 우분투 멀티부팅가능하게 설치하기 1. Rufus 다운로드 https://rufus.ie/ko/    2. Ubuntu 이미지 다운로드 Ubuntu 18.04 : https://releases.ubuntu.com/18.04/    3. Rufus로 Ubuntu 부팅 USB 만들기 부팅이미지를 선택하고 USB 장치가 올바르게 선택됐는지 확인한 후 설정값을 아래와 같이 하고 시작을 누른다. 경고문구가 뜨면 디폴트값 또는 예를 선택해주면 된다.     4. 안쓰는 ssd 메인보드에 장착 내 데스크탑 메인보드는 ASUS EX-A320M Gaming인데 m.2 슬롯이 하나 있다. 그래픽카드 아래 위치한 형태라 ssd 방열판이 있으면 더 좋았을뻔했지만 일단 장착해줬다.    5. ssd 디스크 정리 diskpartlist disksel disk c.. 2024. 5. 25.
리눅스 커널 Kernel 커널 Kernel 커널은 운영체제의 가장 핵심적인 역할을 하는 부분으로 하드웨어와 응용 프로그램 간의 인터페이스 역할을 한다. CPU, 메모리, 프로세스, 파일시스템, 입출력 등 주요 하드웨어 자원을 관리한다.부팅 시 메모리에 로드된다.항상 메모리에 올라가 있으며 하드웨어와 프로세스를 관리하는 소프트웨어이다.  커널의 주요 기능 커널의 주요 기능은 컴퓨터의 하드웨어 자원을 추상화하여 관리하고, 시스템 콜을 통해 사용자 및 응용 프로그램이 하드웨어 자원에 접근할 수 있도록 하는 것이다. 프로세스 관리 : 물리적 자원인 CPU를 추상적 자원인 Task로 제공메모리 관리 : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segment로 제공파일 시스템 : 물리적 자원인 디스크를 추상적 자원인 파일로 제공.. 2023. 12. 17.
파일 디스크립터 파일 디스크립터(File Descriptor, FD)란 Linux 혹은 Unix 계열 운영체제에서 프로세스가 파일 또는 네트워크 소켓과 같은 입출력 리소스에 대해 접근할 때 사용하는 추상적인 식별자이다. 윈도우에선 HANDLE이라고 부른다. 파일 디스크립터는 0이 아닌 정수값을 가지며 C언어에서는 int 형식으로 표현된다. 유효하지 않거나 오류인 경우를 나타내는 음수값과 다른 목적으로 고정된 0부터 2를 제외하고, 프로세스가 파일을 열거나 소켓을 생성할 때 일반적으로 3부터 시작해 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당한다. 이렇게 할당된 파일 디스크립터를 사용하여 프로세스가 열려있는 파일에 시스템 콜을 사용하여 접근할 수 있다. Reference: https://en.wikiped.. 2023. 9. 28.
gdb의 플러그인 pwndbg 설치 https://github.com/pwndbg/pwndbg GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy Exploit Development and Reverse Engineering with GDB Made Easy - GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy github.com 설치는 간단하다. ​ 위 사이트를 git clone 하고 pwndbg 폴더에 들어가 setup.sh 파일을 실행하면 설치가 된다. 그리고 디버그할 실행파일이 있는 곳으로 이동해서 gdb 명령어를 입력하면 p.. 2022. 10. 18.
Linux ] cat 명령어, > 리다이렉션 📝 cat 명령어 사용법 cat [옵션][파일명] 📝 파일 내용 출력하기 cat file.txt cat -n file// 행번호 표시해서 출력 cat file1 file2// 여러 파일을 연속해 출력 📝 리다이렉션 사용해 파일 만들기 cat 명령어와 > 리다이렉션 사용해 파일 만들기 cat > file// 기존에 있던 내용을 지우고 저장 cat >> file// 기존 파일 내용 뒤에 연속해 기록 치면 파일 내용을 입력할 수 있게 커서가 깜빡거린다. 내용 입력 후 엔터를 치고 Ctrl + D 를 누르면 입력한 내용이 파일에 저장이 된다. echo 명령어와 > 리다이렉션 사용해 파일 만들기 echo "Hi" > hi.txt 기타 명령어의 출력 내용을 파일에 기록하기 ll > file.txt ls -al > .. 2022. 10. 10.
Linux ] gcc -O 최적화 옵션 플래그 컴파일러의 최적화 수준을 설정 옵션 최적화수준 -O0 최적화를 수행하지 않는다. (기본값) -O1 또는 -O 코드 크기와 실행 시간을 줄이는 것을 제외한 최적화는 실행하지 않는다 -O2 메모리 공간과 속도를 희생하지 않는 범위내의 모든 최적화를 수행한다 loop unrolling과 function inlining에 대한 최적화를 수행하지 않는다 -O3 O2 최적화에 인라인 함수와 레지스터에 대한 최적화를 추가로 수행한다. -Os O2 최적화를 수행하지만 코드 크기를 증가시키는 최적화는 생략한다. -Ofast 사용이 권장되지 않는 최적화 옵션 ※ 커널 컴파일 시 최적화 옵션 -O2만 사용하는 이유 커널은 최적화된 수행 속도를 위해 의도적으로 인라인 함수를 사용하고 있다. -O3 최적화는 컴파일러가 판단해서.. 2022. 10. 9.
Linux ] gdb 디버거 사용법 -g 옵션을 넣고 컴파일 한다. gcc main.c -g -o main 컴파일 최적화 옵션은 사용하지 않는 것이 좋다. gdb 실행파일명으로 실행한다. gdb ./main 또는 gdb로 실행중인 프로세스의 식별자인 PID를 load 하는 것도 가능하다. 소스코드 보기 l : main 심볼부터 소스코드 출력 l 10: 10행을 기준으로 소스코드 출력 l - : 이전행의 소스 출력 l func: 해당 함수의 소스 출력 l file.c:func: 해당 파일의 해당 함수 부분을 출력 l file.c:10 : file.c 파일의 line 10을 기준으로 출력 set listsize 20 : l 명령의 기본 출력 코드 수를 20라인으로 설정 어셈블리 코드 보기 disas 라인/함수명 분기 jump 행번호/함수명 엔.. 2022. 10. 9.
Linux ] rm 명령어 rm (옵션) 삭제할 파일 또는 디렉토리 명 옵션 -r : 일반 파일은 그냥 지우고 디렉토리는 리렉토리 포함 하위 경로의 파일을 모두 지운다. -i : 지우기 전에 사용자의 확인을 받는다. (y/n) -f : 확인하지 않고 지운다. ex. rm -rf * 현재 디렉토리에 속한 모든 파일과 디렉토리를 물어보지 않고 삭제한다. 2022. 10. 9.
Linux ] 연속으로 명령 실행시키기 ; & && || pipe a; b : 앞의 명령어가 실패해도 다음 명령어 실행 a && b : 앞의 명령어가 성공했을 때 다음 명령어가 실행 a & b : 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행 a || b : 앞의 명령어가 성공했을 때 다음 명령어 미수행, 앞의 명령어 실패 시 다음 명령어 실행 그 외 a | b : pipe, a의 수행 결과를 b가 받아서 수행 ex. cat /etc/passwd | grep mail 시스템의 계정정보가 들어있는 /etc/passwd 파일을 출력하는데 mail 이란 문자열이 들어간 라인만 필터링 tail -20 /etc/passwd | cat -n /etc/passwd 파일을 뒤에서 20줄 출력하는데 cat -n 옵션인 줄번호를 붙여 출력 2022. 10. 9.
Linux ] mv, rename 명령어 사용법, 파일명 변경, 파일 이동, 확장자 일괄 변경 📝 mv 명령어 사용 파일명 변경 mv 기존파일명 변경파일명 📝 mv 명령어 사용 파일 이동 mv 기존파일경로/기존파일명 옮길경로/변경파일명 파일이 위치를 이동하면서 파일명을 변경하는 것도 가능 📝 rename 명령어를 사용하기 위해 설치 sudo apt install rename 📝 테스트용 빈 파일 만들기 touch test1.c && touch test2.c 📝 rename 명령어 사용하여 확장자 또는 파일명 일괄 변경하기 rename 's/변경전문자열/변경후문자열/' 변경대상 rename 's/.c/.txt/' *.c rename 's/.txt/.c/' *.txt rename 's/test/TEST/' *.c 2022. 10. 9.
VMware ] Linux Ubuntu 에서 한영키 사용하기 root 권한으로 로그인 쉘 스크립트 파일을 만든다. vi hangul.sh 아래와 같이 입력 후 저장하고 닫기 #!/bin/bash setkeycodes 72 122 setkeycodes 71 123 스크립트 파일 실행하기 chmod +x hangul.sh ./hangul.sh 한영키가 잘 먹히는것을 확인할 수 있다. 이제 systemctl 을 통해 부팅시마다 변경한 설정이 적용될 수 있도록 설정한다 아래 경로로 가서 서비스 새로 등록 cd /etc/systemd/system vi hangul.service 아래와 같이 입력 후 저장하고 닫기 [Unit] Description=Change Hangul keycode [Service] ExecStart=/[스크립트 파일이 있는 경로]/hangul.sh [.. 2022. 8. 14.
Linux Ubuntu ] Waiting for cache lock : Could not get lock /var/lib/dpkg/lock-fro 오류 해결 apt update 또는 apt install 시 아래 문구가 무한 반복되는 오류 잠긴 캐시 파일을 다음 명령어로 삭제 sudo rm /var/lib/dpkg/lock* 2022. 8. 14.
Linux ] Vim 에디터 단축키 및 설정 커서 이동gg : 맨 위로 커서 이동G : 맨 아래로 커서 이동[Home] : 현재 줄의 맨 앞으로 커서 이동[End] : 현재 줄의 맨 뒤로 커서 이동shift + h : 현재 보이는 페이지 기준으로 맨 위로 커서 이동shift + m : 현재 보이는 페이지 기준으로 중간 위치로 커서 이동shift + l : 현재 보이는 페이지 기준으로 맨 아래로 커서 이동d : 현재 단어의 맨 앞으로 커서 이동 원하는 줄번호로 커서 이동:줄번호  스크롤Page Up : 한 페이지 위로 스크롤Page Down : 한 페이지 아래로 스크롤Ctrl + u : 반 페이지 위로 스크롤Ctrl + d : 반 페이지 아래로 스크롤Ctrl + y : 한 줄 위로 스크롤Ctrl + e : 한 줄 아래로 스크롤  복사/붙여넣기/잘라내.. 2022. 8. 14.
VMware 에 Linux Ubuntu 설치하기 VMware 다운로드 경로 : https://www.vmware.com/kr/products/workstation-player/workstation-player-evaluation.html 설치 우분투 iso 이미지 다운받기 최신 버전은 공식 홈페이지에서 다운받고 예전 버전은 아래 사이트에서 다운 받는다. http://old-releases.ubuntu.com/releases/ Ubuntu 20.04.3 LTS 데스크탑버전으로 다운받았다. 여유 공간이 있는 드라이브에 원하는 이름으로 폴더 생성 나중에 설치 선택 아까 만들어둔 폴더 경로 선택 디스크 용량을 지정하고 가상 머신의 내용을 하나의 파일에 저장할 것인지, 여러 파일에 나눠 저장할 것인지를 선택 생성후 edit 가상 머신에 설치된 리눅스의 동작에 .. 2022. 8. 13.
[ VMware ] 에서 USB 인식이 안될 때 문제 해결 윈도우키+R키로 실행창을 열고 services.msc 를 입력 VMware USB Arbitration Service 를 찾아서 시작유형은 자동으로 하고 시작을 눌러 상태를 실행중으로 바꿔줌 VMware 세팅창을 열어 Hardware 부분에 USB Controller가 add되어 있고 Connections에는 show all USB input devices 가 체크되어 있는지 확인 이제 가상환경에서 usb를 꽂으면 게스트os에 연결할지 묻는 창이 뜨고 확인을 누르면 된다. lsusb 명령어로 확인해 보니 잘 인식 됨. 2022. 4. 5.
[ Mediapipe ] Ubuntu Linux에 설치하고 실행해보기 with python on VirtualBox 실행환경 Virtual Box Ubuntu 20.04.4 LTS desktop ver Python 3.8.10 OpenCV 4.5.5 0. 파이썬 설치되어있는지 확인하고 안되어있으면 설치하기 Ubuntu 20.04버전을 깔았다면 Python 3.x 버전이 이미 설치되어있다. dpkg -l 명령어로 현재 깔려있는지 알 수 있으며 안깔려 있는 경우 다음 명령어로 설치가능 sudo apt-get install python3 1. pip 설치하기 sudo apt-get update sudo apt-get install python3-pip 2. pip로 OpenCV 라이브러리 설치 pip3 install opencv-python 잘 설치가 됐다 warning이 떴으니 ~/.bashrc 를 열어 PATH 추가도 .. 2022. 4. 4.
[ Cygwin ] 설치 및 패키지 설치 Cygwin 은 윈도우에서 여러 리눅스 프로그램과 명령어 배쉬셸을 사용할 수 있게 해주는 프로그램이다. 시그윈 설치 https://www.cygwin.com/install.html 빠른속도를 위해 kr이 붙은 미러사이트 선택 중간에 Select Packages 화면에서 유용한 패키지 들을 같이 설치해 줄 수 있는데 All-catecory를 열고 devel 카테고리에서 gcc-core, make나 cmake 등 editor 카테고리에서 vim 등을 같이 설치해주자. 드롭다운을 열고 버전 선택 추후 apt-cyg 명령어를 사용해 필요한 패키지를 Cygwin 콘솔에서 설치할 수 있게 하기 위해 wget도 같이 설치해준다. 아니면 나중에 설치파일을 다시 실행해서 패키지를 추가 설치해줄 수 도 있다. 참고로 Cy.. 2022. 4. 4.
[ Cygwin ] home directory 바꾸는 법 Cygwin을 설치한뒤 cd ~ pwd 를 치면 현재 홈디렉터리를 알 수 있는데 초기 홈디렉토리는 /home/user name 으로 설정되어있다 만약 다른 드라이브로 가고 싶다면 cd /cygdrive/d or e 등을 터미널에 입력하면 된다. 그럼 사용상 편리함을 위해 홈디렉터리를 바꿔보자 cygwin이 설치된 폴더를 찾아가 cygwin64\etc\nsswitch.conf 파일을 에디터로 연다 다음과 같이 db_home: 부분을 주석처리 해제하고 원하는 경로로 수정해준뒤 껐다 키면 적용이 된다. 바꾼 후 echo $HOME 을 입력하여 잘 바뀌었는지 확인해보자 2022. 3. 31.