![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
grub
天麓
很懒的码农
展开
-
linux内核学习(2)建立段式内存映射
grub 在加载linux内核之前已经进入保护段式映射模式/* The code segment of the protected mode. */#define CODE_SEGMENT 0x10 // 0b'000 10 000 => 01 => 2, 第2个段选择子/* The data segment of the protected mode. */#define DATA_SEGMENT 0x18 // 0b'000 11 000 => 11 => 3,原创 2020-10-02 22:41:33 · 169 阅读 · 0 评论 -
grub学习(4) 启动linux内核
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 ...原创 2020-08-18 22:18:18 · 270 阅读 · 0 评论 -
grub学习(1) 第一阶段启动
深入理解 GNU GRUB - 02 boot.S 2.1 相关BIOS例程https://blog.csdn.net/cppgp/article/details/6360976grub2 1.95 源码分析之一 —— boot.S 分析及注释https://blog.csdn.net/cppgp/article/details/2060146原创 2020-08-02 12:43:51 · 262 阅读 · 0 评论 -
grub学习(2) 加载内核
grub_err_t grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]){ struct linux_kernel_header lh; struct linux_kernel_params *params; file = grub_file_open (argv[0]); //打开linux文件 grub_file_read (file, &lh, sizeof (.原创 2020-08-16 09:47:01 · 877 阅读 · 0 评论 -
grub学习(3) 加载initrd
grub_err_tgrub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]){ struct linux_kernel_header *lh; /* 打开initrd并计算其需要的页面 */ file = grub_file_open (argv[0]); size = grub_file_size (file); initrd_pages = (page_ali...原创 2020-08-18 22:08:56 · 408 阅读 · 0 评论