LINUX

포스트: 477|조회수: 0|TERM
Items

Posts

477 posts

MODULE_INIT("GPL") 분석 - "module license 'unspecified' tainting kernel"

Guillermo Austin Kim|2017년 12월 28일

MODULE_INIT("GPL") - "module license 'unspecified' tainting kernel" 모듈 타입 드라이버를 짤 때 주의해야 할 포인트를 공유드리고자 해요. 예전에 제가 처음 리눅스 드라이버를 처음 접할 때,아래와 같은 모듈 드라이버를 짠 다음에 컴파일 후 보드에 올려 봤어요.#include int init_module(void){ printk(" init_module() \n"); return 0; } void cleanup_module(void){ printk(" cleanup_module() \n");} insmod로 드라이버를 실행했는데요. 동작을 안해요. 커널 로그가 안 찍히구요.뭐가 문제일까요? 우선 커널 로그를

리눅스 민트(Linux Mint)에서 MySQL 설치

반달가면|2017년 12월 27일

MySQL 데이터베이스 관련해서 시험해 볼 것이 좀 있어서 리눅스 민트(우분투 계열)에서 설치해 보았다. mysql-server 패키지를 설치하면 된다. 터미널창에서 아래와 같이 입력. # S/W 저장소 정보 갱신 sudo apt-get update # MySQL 설치 sudo apt-get install mysql-server 설치가 진행되면서 중간에 mysql의 root 사용자 암호를 입력하라는 메세지가 나온다. 암호를 정해서 입력해 주면 된다. 설치가 완료되고 나면 아래와 같이 실행하면 되겠다. -u 옵션으로 사용자를 root로 지정하고 -p 옵션을 추가해서 암호를 입력받는다. mysql -u root -p 암호 입력후 mysql 프롬프트가 나오면 접속 완료.

[Linux][Kernel]뮤텍스 데드락(Mutex Deadlock) 락업(lockup) - "simpleperf" 디버깅

Guillermo Austin Kim|2017년 12월 27일

특정 시점부터 갑자기 디바이스가 락업되는 현상이 리포트가 되었거든요. 엄청 쏟아 졌었는데요.이 때 어떻게 디버깅을 해서 문제를 해결했는지 업데이트하고자 해요. 락업이 된 상태에서 디바이스를 받아 강제로 코어 덤프를 뜬 다음에 콜 트레이스를 봤는데요.아래 콜 스택이 확인되었어요. 프로세스 이름은 "atd" 이에요. reboot 시스템콜을 trigger한 다음에 각 종 시스템 드라이버를 종료하는 과정에서 mutex lock을 계속 기다리는 현상이 확인되네요.-000|context_switch(inline)-000|__schedule()-001|schedule_preempt_disabled()-002|spin_lock(inline)-002|__mutex_lock_common(inline)-002|__mute

IRQ Stack(ARM64) - Overview

Guillermo Austin Kim|2017년 12월 26일

IRQ Stack을 소개할까 해요. ARM64 비트 아키텍처 기반 리눅스 커널 4.4 버전부터는 IRQ Stack을 지원하거든요. 이게 뭔 소리냐?IRQ가 Trigger되면IRQ Stack Bottom 주소로 점프해서 IRQ Stack을 써서 함수 호출 및 로컬 변수를 처리한다는 거에요. 간단히 설명을 하면 A -> B -> C -> IRQ Trigger ->D 이런 순서로 호출된다고 보면 되요..[스택주소]0x9880x990 D0x9980xA000 irq_el1 //<<-- IRQ Stack Bottom 주소 // .. 생략 ...0x700x780x80 C0x880x90 B0x980xa00 A 그럼 왜 IRQ 용 스택을 따로 쓸까요? 여러가