
안녕하세요. 땅파서 남주자 오늘의 포스팅은 리눅스 커널 패치 작업에 대해 알아보겠습니다. 리눅스 커널 소스는 요즘 소스 버전관리를 위해 많이 사용하는 git저장소를 통해서도 제공하지만 소스코드의 전체 스냅샷이나 앞선 버전에서 변경된 패치도 함께 제공합니다. 오늘날짜로 stable 버전 커널이 6.0.12이고 메인라인과 각 롱텀 지원 버전에 대해서 패치를 제공하는 것을 볼수 있습니다. 6.0.11에서 현재 최신 버전인 6.0.12로 패치를 적용해 보겠습니다. 리눅스 커널 저장소에서 patch-6.0.11-12.xz를 다운로드 받습니다. $ curl -O https://cdn.kernel.org/pub/linux/kernel/v6.x/incr/patch-6.0.11-12.xz 다운로드 받은 patch-6.0..
땅파서 남주자 오늘은 리눅스 커널에서 사용하는 printk함수의 포맷 문자열에 대해 알아보도록 하겠습니다. 리눅스 커널이 대부분 C언어로 작성되어 있지만 어플리케이션과 다르게 libc를 사용하지 못하기 때문에 라이브러리가 없다고 볼수 있습니다. 단지 커널 이미지 내에 포함된 함수들만 사용 가능하다고 볼 수 있습니다. 하지만 다양한 서브시스템과 유용한 함수들이 이미 잘 작성되어 있으니 차근차근 찾아서 쓰는 재미가 있습니다. printk는 printf와 비슷하지만 차이가 있다면 %f, %e등 실수(floating point)형에 대해 캐스팅을 지원하지 않습니다. 리눅스 커널내에서는 실수에 대한 연산을 여러 이유가 있겠지만 대표적으로 성능상의 이유로 지원하지 않습니다. 거두절미하고 예시부터 먼저 보겠습니다. ..
땅파서 남주자 오늘은 업그레이드한 리눅스 커널 4.10.10의 간단한 'Hello World' 커널 모듈을 만들어 보겠습니다. 왜 맨날 헬로우 월드이냐.. 그건 저도 모르겠습니다. 리눅스 커널은 일부 플랫폼 종속적인 코드를 제외하고는 대부분이 C언어로 구현되어 있습니다. 따라서 커널 모듈을 작성할때도 C언어를 사용하여 구현합니다. 하지만 큰 차이는 당연히 커널모듈이기 때문에 커널모드에서 실행됩니다. 일반 어플케이션 프로그램은 유저모드에서 동작되고 시스템콜을 통해 커널모드에 접근합니다. 그리고 일반 어플리케이션으로 컴파일하면 실행가능한 바이너리 파일이 만들어 지지만, 커널 모듈로 컴파일 하면 오브젝트 파일이 생성되고 이것을 insmod명령으로 커널에 적재시켜서 커널에서 동작 시킵니다. 설명은 간략히 이정도..
안녕하세요. 땅파서 남주자 오늘은 리눅스 커널 컴파일하는 방법과 빌드된 커널 이미지를 적용하는 방법에 대해 알아 보겠습니다. 1. 현재 적용된 버전 확인 먼저 현재 적용되어 있는 리눅스 커널 버전을 확인하는 방법입니다.아래의 그림과 같이 uname -a 명령을 실행하면 커널버전과 빌드날짜, 플랫폼 정보가 나옵니다.적용되어 있는 버전은 3.11.0-15-generic 버전인 2014년 1월 30일에 빌드된 커널 이미지임을 확인할 수 있습니다. /boot 디렉토리의 파일들을 보면 아래의 그림과 같이 크게 abi, config, initrd, System.map, vmlinuz로 구성되어 있습니다. 위에서 확인한 커널 버전과 같이 모두 3.11.0-15-generic으로 되어 있습니다. 간단히 보면 abi(A..
땅파서 남주자 오늘의 포스팅은 리눅스 커널 최신소스 다운받는 방법입니다.리눅스 커널소스의 최신버전은 www.kernel.org에서 공식적으로 배포하고 있습니다. 웹사이트에 접속해 보면 아래의 화면과 같고 오늘 날짜 기준으로 최신 안정화 배포 버전이 4.10.10임을 확인할 수 있습니다. 저는 아래의 화면과 같이 우분투 환경에서 wget을 이용해서 다운로드 받았습니다.여담으로 리눅스 커널 2.4때 처음으로 접했었는데.. 벌써 어느덧 4.X의 버전을 사용하네요 ㅎㅎ 리눅스 커널 3.20으로 업데이트 차례에 갑자기 4.0으로 업데이트 점프를 뛰었는데 토발즈가 온라인으로 투표를 통해 결정했다는 이야기도 있고.. 영화 터미네이터의 T-800의 커널버전이 4.X라서 맞추려는 의도도 있었다고 합니다. 참고 : htt..
- Total
- Today
- Yesterday
- Linux Kernel
- 버퍼덤프
- 맥주소
- Mathjax
- 커널 컴파일
- 커널다운로드
- patch
- 커널빌드
- 맥주소출력
- 커널
- Linux
- 커널개발
- 커널컴파일
- 리눅스커널
- 웹수식
- Sigmoid
- 커널 패치
- Kernel
- printk
- 커널모듈
- 수식
- 커널분석
- 리눅스 커널
- 시그모이드
- 리눅스 patch 명령
- 커널프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |