LINUX
Posts
487 posts[라즈베리파이] 커널 섹션 정보
아래 명령어로 라즈베리파이 소스 다운로드를 하고,git clone --depth=1 크로스 컴파일러 툴을 설치한 다음에,git clone 커널 빌드를 하면 vmlinux을 추출할 수 있습니다.make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j12 아래 명령어로 라즈베리파이 섹션 정보를 파악할 수 있는데요. 조금 더 짚어 보겠습니다../objdump -x vmlinux | more 섹션이란 용어에 대해서 설명을 하겠습니다. 섹션은 임베디드 소스 빌드 시 쓰이는 개념인데, 비슷한 속성의 코드들을 묶어서 처리하
[라즈베리파이] 리눅스 커널: 전처리 파일 추출
라즈베리파이3 용 커널 코드를 다운로드 받고 아래 패치를 적용하여 커널 빌드를 하면 전처리 파일을 추출할 수 있습니다.austin.kim@LGEARND7B16:~/src/raspberry_kernel/linux$ git diff Makefilediff --git a/Makefile b/Makefileindex 4a7e6df..313dbbe 100644--- a/Makefile+++ b/Makefile@@ -395,6 +395,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -Werror-implic
chsh - 리눅스에서 로그인 셸(login shell) 변경하기
리눅스에서 chsh 명령으로 어느 셸(shell)을 사용할 것인지 설정할 수 있다. -s 옵션으로 셸을 지정해 주면 된다. 예를 들어 현재 사용자의 셸을 /bin/bash로 설정하고 싶다면 아래와 같이 입력하면 되겠다. # 현재 사용자의 shell을 /bin/bash로 설정 chsh -s /bin/bash 사용자 암호를 입력하면 셸 설정이 변경된다. 만약 루트 권한으로 특정 사용자의 셸을 설정하고 싶다면 인자에 사용자 계정을 지정하면 된다. 아래와 같이 할 수 있다. # 사용자 계정 john의 shell을 /bin/bash로 설정 sudo chsh -s /bin/bash john
인터럽트(2) - 인터럽트 핸들러는 누가 언제 호출하나?
인터럽트 핸들러는 누가 언제 호출할까요? 인터럽트가 떴을 때 인터럽트 벡터가 실행되어 인터럽트 핸들러를 호출합니다.인터럽트 핸들러를 호출할 때 프로세스는 정해져 있지 않습니다. 어떤 프로세스가 돌던 인터럽트가 뜰 수 있기 때문입니다. 그럼 인터럽트 핸들러는 누가 호출한다고 대답해야 할까요? 정답은 없지만 인터럽트 벡터라고 말할 수 있습니다. 참고로 인터럽트 벡터는 ARM이 실행시킵니다. 인터럽트가 뜨면 인터럽트 벡터인 __irq_svc 심볼로 시작해서 handle_irq_event_percpu 함수까지 처리됩니다.이후 handle_irq_event_percpu 함수 내 action->handler 함수 포인터가 실행될 때 인터럽트 핸들러를 호출하죠 이 때 파라미터가 해당 인터럽트의 디스크립터와 pri


