博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
grub学习(4) 启动linux内核
阅读量:4068 次
发布时间:2019-05-25

本文共 1189 字,大约阅读时间需要 3 分钟。

 

grub_err_tgrub_linux_boot (void){	struct linux_kernel_params *params;	int e820_num;		params = real_mode_mem;		/* 获取内存分布 */	int NESTED_FUNC_ATTR hook (grub_uint64_t addr, grub_uint64_t size, 			     grub_memory_type_t type)    {      switch (type)        {        case GRUB_MEMORY_AVAILABLE:	  grub_e820_add_region (params->e820_map, &e820_num,				addr, size, GRUB_E820_RAM);	  break;        case GRUB_MEMORY_ACPI:	  grub_e820_add_region (params->e820_map, &e820_num,				addr, size, GRUB_E820_ACPI);	  break;        case GRUB_MEMORY_NVS:	  grub_e820_add_region (params->e820_map, &e820_num,				addr, size, GRUB_E820_NVS);	  break;        case GRUB_MEMORY_BADRAM:	  grub_e820_add_region (params->e820_map, &e820_num,				addr, size, GRUB_E820_BADRAM);	  break;        default:          grub_e820_add_region (params->e820_map, &e820_num,                                addr, size, GRUB_E820_RESERVED);        }      return 0;    }	e820_num = 0;	grub_mmap_iterate (hook);	params->mmap_size = e820_num;		/* 跳转 */	state.ebp = state.edi = state.ebx = 0;	state.esi = real_mode_target;	state.esp = real_mode_target;	state.eip = params->code32_start;	return grub_relocator32_boot (relocator, state);}

 

转载地址:http://mflji.baihongyu.com/

你可能感兴趣的文章
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>
分布式存储系统设计(1)—— 系统架构
查看>>
MySQL数据库的高可用方案总结
查看>>
常用排序算法总结(一) 比较算法总结
查看>>
SSH原理与运用
查看>>
SIGN UP BEC2
查看>>
S3C2440中对LED驱动电路的理解
查看>>
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>