El primer módulo del kernel (módulo Hello World)
El código es el siguiente: Ver código # include < linux /init.h > # include < linux /module.h > MODULE_LICENSE (" Dual BSD /GPL "); static __init int hello_init (void) {//la función printk se define en el núcleo para el módulo, el núcleo necesita sus propias estadísticas de impresión //porque se ejecuta solo y no hay una función de biblioteca correspondiente. //El módulo puede llamar a printk porque el insmod está cargado, el módulo está vinculado al kernel //el símbolo público del kernel llamable, KERN_ALERT es la prioridad del mensaje printk (KERN_ALERT " HELLO WORLD \\ n "); return 0; Static __exit void hello_exit (void) {printk (KERN_ALERT " GoodBye \\ n ");} module_init (hello_init); module_exit (hello_exit);
Dos funciones están definidas en este módulo, una está cargada en el módulo Las llamadas al núcleo (hello_init) y las otras llamadas (hello_exit) cuando se elimina el módulo del núcleo, en el código anterior, module_init y module_exit son dos definiciones de macro del núcleo que le indican al núcleo dónde comenzar y dónde salir, MODULE_LICENSE La macro se utiliza para declarar que el módulo es compatible con una licencia gratuita, de lo contrario aparecerá una advertencia cuando se cargue el núcleo. Bien, ahora puede probar el programa anterior según corresponda. Debe escribir el Makefile correspondiente antes de probar. La compilación del módulo es diferente de la compilación del programa normal.
Makefile
El código es el siguiente: Ver código #makefile for hello world # KERNELRELEASE es la primera variable definida en el código fuente del núcleo ifneq ($ (KERNELRELEASE),) #determinar si la variable está vacía (no definida durante la primera ejecución) # 未定义Ejecute la instrucción else obj-m: = HelloWorld.o # indica que hay un módulo que se creará desde el archivo de directorio HelloWorld.o. Después de crearlo, asígnele el nombre # HelloWorld.ko #Si hay un módulo llamado module.ko, provienen de dos El archivo de origen, asumiendo que file1.c y file2.c # debe ser tal que obj-m: = module.o # module-objs: = file1.o file2.o else KDIR: = /lib /modules /$ (shell uname - r) /build all: # Cuando el objetivo de make es all, -C $ (KDIR) salta al directorio de origen del kernel y lee Makefile #M = $ (PWD) para regresar al directorio actual para continuar leyendo, ejecute el Makefile actual, Cuando se haya ejecutado de nuevo, se ha definido # $ (KERNELRELEASE), make se leerá antes que else. Haga que los módulos de -C $ (KDIR) M = $ (PWD) estén limpios: rm -rf * .ko * .o * .mod.o * .mod.c * .symvers endif
La explicación correspondiente es la anterior. Abrir como kernel compilado: debe ser superusuario Introduzca la marca en la ruta actual Compile, ingrese insmd HelloWorld.ko para cargar el kernel, use dmesg
ACL es una abreviatura de la Lista de Control de Acceso, el propósito principal es proporcionar al p
Según las estadísticas de statcounter, la cuota de mercado del sistema operativo global en marzo sig
La función de un controlador de dispositivo .linux Kernel: se utiliza para administrar los recur
Varios Linux Ahora el tema, sombrero rojo Enterprise Edition es relativamente seguro. Para la vers
Archivo .zip de descompresión del sistema Linux Debian5
Linux adsl marca y comparte internet
Linux pierde el archivo Grub.conf para iniciar el servidor
Comando de linux detallado mkdir
Usando el proxy de calcetines bajo la línea de comando de Linux
Archivo de configuración de Linux
El comando de pantalla de gran alcance en el sistema Linux
Tutorial básico de conversión de codificación de Linux
Un método de seguridad después de que el servidor Linux se bloquee
Comparte el método de visualización d progreso d
Método para ajustar la frecuencia de actualización de la pantalla en un sistema Linux
Instalar XP y Windows 7 sistema dual instrucciones detalladas
Win10 Home Edition no puede abrir el navegador de borde cómo resolver
Windows7 reproducir película video pantalla azul cómo hacerlo
Win8.1 impulsó bugreport.exe solución de errores de aplicación
Cómo usar la función de grabación de pantalla que viene con Win7
Cómo hacer un disco de arranque U de Win8 simple
Win8 Consumer Edition instalación de disco duro tutorial captura de pantalla (4)