X86内核启动分析五 保护模式小荷尖尖角
2017-08-06 18:02
706 查看
第一次进入保护模式,解压缩内核
跳转到解压缩内核之后,使能页模式
startup_32: //head.S (c:\linux\linux-2.6.23\arch\i386\boot\compressed) =>//Do the decompression, and jump to the new kernel.. => Jump to the decompressed kernel.
跳转到解压缩内核之后,使能页模式
里面有一个重要的宏定义: [linux-2.6.23]$ cat .config | grep CONFIG_PAGE_OFFSET CONFIG_PAGE_OFFSET=0xC0000000 [linux-2.6.23]$ ENTRY(startup_32) //head.S (c:\linux\linux-2.6.23\arch\i386\kernel) =>Copy bootup parameters out of the way. //主要是boot_params =>// Initialize page tables =>//Enable paging =>call setup_idt =>je is386 =>jmp start_kernel =>setup_arch(&command_line); =>bootloader_type = LOADER_TYPE; =>init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk = init_pg_tables_end + PAGE_OFFSET; code_resource.start = virt_to_phys(_text); code_resource.end = virt_to_phys(_etext)-1; data_resource.start = virt_to_phys(_etext); data_resource.end = virt_to_phys(_edata)-1; =>parse_early_param(); =>max_low_pfn = setup_memory(); =>paging_init(); =>console_init(); //8250.c (c:\linux\linux-2.6.23\drivers\serial) =>(void) tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY); =>call = __con_initcall_start; while (call < __con_initcall_end) { (*call)(); =>console_initcall(serial8250_console_init); =>serial8250_isa_init_ports(); =>register_console(&serial8250_console); call++; } =>rest_init(); =>kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); =>init_post(); =>run_init_process("/sbin/init"); run_init_process("/etc/init"); run_init_process("/bin/init"); run_init_process("/bin/sh"); =>pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES); kthreadd_task = find_task_by_pid(pid); =>cpu_idle();
相关文章推荐
- X86内核启动分析四 打开保护模式之门
- X86内核启动分析三 内核的实模式阶段
- x86内核启动分析一 看看打印吧
- x86实模式到保护模式及Linux启动协议的演变
- x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器
- Linux内核启动过程分析 ___x86
- x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器
- Activity的启动模式分析-之一
- 基于x86体系结构分析linux-2.6.26的启动过程(一)——linux映像的make过程分析。
- x86保护模式的几点思考——IRQ、中断号和中断向量
- linux内核启动内核解压过程分析
- Android Activity启动模式分析
- 跟踪分析Linux内核的启动过程
- U-Boot启动内核分析
- 第二次启动保护模式
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)---Android系统的三种启动模式
- U-Boot启动内核分析
- x86保护模式下GDT表
- 基于x86体系结构分析linux-2.6.26内核编译过程
- 嵌入式Linux内核启动部分代码分析