o generado a partir del proceso de compilación y enlazado vmlinux visualizarla, unidos por un grupo de .o archivo se hace, el primero es el núcleo \\ arco \\ brazo \\ kernel \\ cabeza ArMV. O, pero también vemos un archivo de enlace lds kernel \\ arco \\ brazo \\ vmlinux.lds, se debe analizar la primera entrada (sText) //punto de entrada es sText estaría en las cabeceras de armv.s en secciones {. = 0xC0008000; //dirección base, la dirección virtual del núcleo comienza a .init: {/* Init co .type __arm920_proc_info, # object__arm920_proc_info: .long 0x41009200.long 0xff00fff0.long 0x00000c1e @ mmuflagsb __arm920_setupok, por lo que sabemos que añadir PC, R10, # 12, donde el salto ir, porque la barra de direcciones sólo hay que poner una instrucción de salto en cuenta la declaración de b es una dirección relativa, no se requiere la conversión de direcciones, ya que es saltar __arm920_setup, pero la declaración se adr LR, __ret, establece __arm920_setup devolver dirección es __ret, por lo que después de ejecutar __arm920_setup Volver __ret ejecución cabeza-armv.s numeral continúa .__ ret: LDR LR, __switch_da para el lenguaje C no es difícil entender la lock_kernel (); printk (linux_banner); setup_arch (&command_line); printk (" línea de comandos Kernel:% s \\ n ", saved_command_line); parse_options (command_line); trap_init (); init_IRQ (); sched_init (); softirq_init (); time_init (); es una gran cantidad de inicialización, persiguiendo a cada función optimista start_kernel última llamada {kernel_thread (init, NULL, CLONE_FS |
CLONE_FILES |
CLONE_SIGNAL); unlock_kernel (); current- > need_resched = 1; cpu_idle ();} kernel_thread estableció con un proceso init, se realiza en lock_kernel función main.c init (); do_basic_setup (); la do_basic_setup llamada do_initcalls función de varios de conducción se realiza en do_initcalls (void) do_initcalls static void __init (void) {* initcall_t llamada; llamada = &__ initcall_start; do {(* llamada) (); llaman ++;} while (call < &__ initcall_end); flush_scheduled_tasks ();} __ initcall_start se asigna en los vmlinux.lds, se tendría que encontrar el segmento .initcall.ini kernel \\ include \\ Linux \\ init.h se pueden encontrar en #define __init_call __attribute__ ((no utilizado, __ section__ (" .initcall.init "))) int typedef (* initcall_t) (void); # definir __initcall (fn) \\ estática initcall_t __initcall _ ## fn __init_call fn = bajo un cuidadoso estudio encontraron esta es la dirección de la función de inicialización en el segmento función de inicialización .initcall.init para que pueda continuar a llamar al conductor si no hay una definición de módulo, #define module_init (x) __initcall (x); por lo tanto, Si desea compilar el controlador en el kernel es muy simple y es la última execve si init (execute_command) (execute_command, argv_init, envp_init); execute_command con pase PPCBoot argumentos de línea de comandos son relevantes Oh, es init = /linuxrc por lo que debe linuxrc secuencia de comandos para ejecutar en la raíz de esta secuencia de comandos para realizar busybox busybox y fue a realizar la escritura /etc/init.d/rcS que fue sobre la implementación de /usr/etc/rc.local
una función rest_init static void (void)
DNS (Sistema de nombres de dominio), una base de datos distribuida en Internet que asigna nombres de
El método de operación del disco U en Linux y los métodos de operación en el sistema de Windows aú
Ver el formato de codificación predeterminado de mysql para mostrar variables como " charac
¿Cuál es el proceso de arranque para Linux? ¿Cómo completar el inicio del sistema a través de grub
Método de arranque sin disco de Linux detallado
Tizen 1.0 lanzó el sistema operativo móvil basado en Linux
Como registrarse en el marco del servicio de Windows nginx
Gestión de sitios web Comandos SSH comunes
Nueve reglas para la seguridad del sistema Linux
Configuración de CentOS 6.5 yum instalación Nginx
Configurando VNCSERVER en RHEL5
Cómo configurar vsftpd virtual de número de cuenta
Modificar el método de nombre de usuario del host VPS Linux en la nube de Ali
Visión general de los procesos en Linux
Win10 gratis actualización de crédito? Win8.1 compartir global primero super XP
Consejos: Win8 /Win8.1 para recuperar la función de escaneo con el botón derecho de WD
Solución de problemas y contramedidas para la falla de la conexión de red win8
Win10 devuelve la barra de tareas a la parte inferior de la pantalla de dos maneras
ASUS push deformation tablet nuevo miembro Windows8 whirlwind strike
Calendario de todo el año 2016, ¡deja que el calendario te dé un buen aspecto
Win10 Build 15007 versión que no es muy diferente experiencia de 10 llamativo pequeño cambio?