>시스템 튜토리얼 >리눅스 >Linux 커널 모듈의 신비를 탐험해보세요

Linux 커널 모듈의 신비를 탐험해보세요

WBOY
WBOY앞으로
2024-02-14 17:10:17753검색

Linux 운영 체제에서 커널은 컴퓨터 하드웨어와 소프트웨어 간의 상호 작용을 제어하는 ​​핵심 부분입니다. 커널 모듈은 커널에서 중요한 개념으로, 런타임 시 커널에 동적으로 로드되어 커널 기능을 확장할 수 있습니다. 이 기사에서는 Linux 커널 모듈이 작동하고 구성되는 방식에 대해 자세히 알아보고 직접 작성하는 방법을 설명합니다.

Linux 커널 모듈식 설계

1. Linux 커널 설계: 단일 커널, 모듈식(동적 로딩 및 언로딩)

(1) Linux: 단일 커널 설계이지만 마이크로커널 시스템 설계의 장점을 완전히 활용하여 커널에 모듈식 메커니즘을 도입합니다. (2) 커널 구성 요소:
커널: 일반적으로 bzImage 형식의 커널 코어로, 일반적으로 vmlinuz-VERSION-release라는 이름의 /boot 디렉토리에 있습니다. 이 파일은 시스템 시작 후에는 더 이상 사용되지 않습니다. 쉽게 관리할 수 있도록 메모리에 로드되고 /boot 아래에 배치되기 때문입니다
커널 객체: 커널 모듈, 일반적으로 /lib/modules/VERSION-release/
에 위치 커널 모듈과 커널 코어 버전은 엄격하게 일치해야 합니다.

2. 커널 모듈: 컴파일 선택 모드

[ ]: 아니요, 이 부분은 컴파일하지 마세요

[M]: 모듈 방식으로 컴파일된 모듈은 임시 로드가 가능하고 디스크 공간을 차지하며 커널 공간을 차지하지 않습니다

[*]: 커널 코어에 컴파일된 Y는 직접 호출할 수 있습니다

3.ramdisk: 보조 파일, 필요하지 않음, 커널이 rootfs가 있는 장치를 직접 구동할 수 있는지 여부에 따라 다름

ramdisk: 루트 파일 시스템의 단순화된 버전입니다. 사용 가능한 드라이버는 다음과 같습니다.

SCSI 장치 드라이버와 같은 대상 장치 드라이버

LVM 장치 드라이버와 같은 논리 장치 드라이버
xfs 파일 시스템과 같은 파일 시스템

커널 모듈 정보 획득 및 관리 명령

1.ldd: 바이너리 애플리케이션이 의존하는 라이브러리 파일 인쇄 - 공유 라이브러리 종속성 인쇄

형식: ldd [옵션]… 파일…

디스플레이:

1) 종속 라이브러리 파일 이름 => 종속 라이브러리 파일 경로(메모리 로딩 심볼릭 링크 매핑 지점에 해당)
2) 전체 시스템콜 라이브러리 입장
으아악

Linux 커널 모듈의 신비를 탐험해보세요2.uname: 커널 정보 획득 - 시스템 정보 인쇄

형식: uname [OPTION]…

uname -a: 모든 커널 정보 표시

uname -v: 커널의 컴파일된 버전 번호
uname -r: 커널 릴리스 번호
uname -n: 호스트 이름


Linux 커널 모듈의 신비를 탐험해보세요

3.lsmod: 커널 모듈 나열

표시된 커널은 /proc/modules

에서 제공됩니다. 모듈 이름, 크기, 인용 횟수 및 인용 내용



Linux 커널 모듈의 신비를 탐험해보세요

4.modinfo 명령: 지정된 모듈의 자세한 정보를 표시합니다

형식: modinfo [-F 필드] [-k 커널] [모듈 이름|파일 이름…] -k kernel: 여러 커널이 공존하는 경우 다른 커널의 모듈 정보를 쿼리합니다

-F 필드: 지정된 필드에 대한 정보만 표시합니다. -n: 파일 경로 표시

/lib/modules/#######/* 파일


의 원본 데이터를 읽어 관련 정보를 표시합니다. 표시 내용: 파일 이름, 프로토콜, 설명, 작성자, 별칭, RHEL에 적용 가능한 버전 번호, 종속 모듈, 서명 단위, 서명, 암호화 알고리즘
Linux 커널 모듈의 신비를 탐험해보세요

Linux 커널 모듈의 신비를 탐험해보세요5.modprobe: 모듈 로드 및 언로드를 실현하고 종속 모듈도 마운트합니다

형식: modprobe [-r] 모듈_이름 모듈의 동적 로딩: modprobe module_name

동적 제거: modprobe -r module_name

참고: 기본적으로 로드된 모듈을 제거하지 마세요



Linux 커널 모듈의 신비를 탐험해보세요6.depmod:-modules.dep 및 맵 파일 생성

커널 모듈 종속 파일 및 시스템 정보 매핑 파일을 생성하기 위한 도구

7.insmod, rmmod: 모듈 로드 및 언로드, 모듈 종속성을 자동으로 해결할 수 없습니다

insmod [파일 이름] [모듈 옵션…] 파일 이름: 모듈 파일의 파일 경로 rmmod [모듈_이름]

램디스크 파일 관리

1.mkinitrd(CentOS 5): 현재 사용되는 커널용 램디스크 파일을 리메이크합니다

# mkinitrd [옵션…] [] –with=: 기본 모듈 외에도 initramfs에 로드해야 하는 모듈입니다. –preload=: initramfs가 제공하는 모듈에는 사전 로드된 모듈이 필요합니다. 예: ~]# mkinitrd /boot/initramfs-(uname -r)


2.dracut(CentOS 6/7, 5와 호환): – initramfs 이미지 생성을 위한 하위 수준 도구

# dracut [옵션…] [ []] 예: ~]# dracut /boot/initramfs-(uname -r)

커널 정보 출력 의사 파일 시스템

1./proc: 커널 상태 및 통계 정보에 대한 출력 인터페이스는 /proc/sys

구성 인터페이스도 제공합니다.

(1) 매개변수:
읽기 전용: 정보 출력(예: /proc/#/, 프로세스 관련 정보
Linux 커널 모듈의 신비를 탐험해보세요
) 쓰기 가능: 사용자는 커널의 특정 기능이나 기능을 구성하기 위해 "새 값"을 지정할 수 있습니다. 형식: /proc/sys: net/ipv4/ip_forward는 net.ipv4.ip_forward

Linux 커널 모듈의 신비를 탐험해보세요
(2) 매개변수 수정 방법 1) sysctl 명령
/proc/sys 디렉토리의 매개변수 값을 보거나 설정하는 데 특별히 사용됩니다. [옵션] [변수[=값]] 보기: #sysctl -a #sysctl 변수
해당 값을 수정합니다: # sysctl -w 변수=value
2) 파일 시스템 명령(cat, echo)
확인: # cat /proc/sys/PATH/TO/SOME_KERNEL_FILE
설정: # echo "VALUE" > /proc/sys/PATH/TO/SOME_KERNEL_FILE
3) 구성 파일: /etc/sysctl.conf, /etc/sysctl.d/
.conf
즉시 적용되는 방법: sysctl -p [/PATH/TO/CONFIG_FILE]

(3) 중요한 커널 매개변수 net.ipv4.ip_forward: 코어 전달
vm.drop_caches:
kernel.hostname: 호스트 이름
net.ipv4.icmp_echo_ignore_all: 모든 ping 작업을 무시합니다.

2./sys 디렉토리: 커널 2.6 버전 이후 도입

sys 파일 시스템: 커널이 인식한 각 하드웨어 장치의 관련 속성 정보를 출력하며, 하드웨어 특성에 대한 커널의 설정 가능한 매개변수도 포함합니다. 이러한 매개변수를 수정하면 하드웨어 장치의 작동 특성을 맞춤 설정할 수 있습니다.


udev: /sys 디렉토리에서 하드웨어 장치 정보를 읽어 필요에 따라 각 하드웨어 장치에 대한 장치 파일을 생성합니다. udev는 사용자 공간 프로그램입니다: devadmin, hotplug; udev가 장치에 대한 장치 파일을 생성하면 사전 정의된 규칙 파일을 읽습니다
일반적으로 /etc/udev/rules.d/ 디렉토리와 /usr/lib/udev/rules.d/ 디렉토리에 있습니다. Linux 커널 모듈의 신비를 탐험해보세요요약하자면, 커널 모듈은 Linux 커널의 매우 중요한 부분으로, 커널에 풍부한 확장 기능을 제공하고 사용자가 특정 하드웨어 또는 애플리케이션 시나리오에 더 잘 적응할 수 있도록 도와줍니다. 커널 모듈을 사용할 때에는 커널의 안정성과 보안성을 훼손하지 않도록 주의해야 하며, 꼭 필요한 경우에만 커널 모듈을 사용하고 작성하는 것을 권장합니다. 나는 이 글의 내용이 독자들이 리눅스 커널 모듈을 더 잘 이해하고 적용하는 데 도움이 될 것이라고 믿습니다.

위 내용은 Linux 커널 모듈의 신비를 탐험해보세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제