摘要: /***Copyright(C)1991,1992LinusTorvalds**EnhancedCPUdetectionandfeaturesettingcodebyMikeJagdis*andMartinMares,November1997.*/.text#include<linux/threads.h>#include<linux/init.h>#include<linux/linkage.h>#include<asm/segment.h>#include<asm/page_types.h>#include<asm/pgta 阅读全文
posted @ 2012-10-10 21:28 Stay Hungry 阅读(899) 评论(0) 推荐(0) 编辑
摘要: /**linux/boot/head.S**Copyright(C)1991,1992,1993LinusTorvalds*//**head.Scontainsthe32-bitstartupcode.**NOTE!!!Startuphappensatabsoluteaddress0x00001000,whichisalsowhere*thepagedirectorywillexist.Thestartupcodewillbeoverwrittenby*thepagedirectory.[Accordingtocommentsetcelsewhereonacompressed*kerne... 阅读全文
posted @ 2012-10-10 21:26 Stay Hungry 阅读(519) 评论(0) 推荐(0) 编辑
摘要: /**Theactualtransitionintoprotectedmode*文档:*/arch/x86/include/asm/segment.h【1】*/arch/x86/boot/pmjump.S【本文】*/#include<asm/boot.h>#include<asm/processor-flags.h>#include<asm/segment.h>#include<linux/linkage.h>.text.code16/*16位汇编*//**voidprotected_mode_jump(u32entrypoint,u32boot 阅读全文
posted @ 2012-10-10 21:25 Stay Hungry 阅读(727) 评论(0) 推荐(0) 编辑
摘要: /**Preparethemachinefortransitiontoprotectedmode.*从实模式向保护模式跳转*文档:*/arch/x86/include/asm/segment.h【1】*arch/x86/boot/pm.c【2】本文*arch/x86/boot/a20.c【3】*/#include"boot.h"#include<asm/segment.h>/**Invoketherealmodeswitchhookifpresent;otherwise*disableallinterrupts.**bootloaderhooks*当加载器运行的 阅读全文
posted @ 2012-10-10 21:23 Stay Hungry 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 1.1 GRUB2特色本文所用GRUB2版本为1.99,GRUB2是为了取代GRUB而完全重写的第二版,引用:GRUB 2, which is a rewrite of GRUB, is alive and under development. GRUB 2 aims at merging sources from PUPA in order to create the next generation of GNU GRUB. A mailing list and a wiki have been setup for discussing the development of GRUB 2.G 阅读全文
posted @ 2012-10-10 21:08 Stay Hungry 阅读(1671) 评论(1) 推荐(2) 编辑
摘要: 1问题使用GRUB2不能正确引导X86_64 linux-2.6.21 bzImage内核。为解决这一问题,本文展开研究GRUB2加载方式,X86_64 bzImage生成结构、解压缩和启动过程。2 X86_64 bzImage生成结构bzImage的生成步骤如下:1)内核vmlinux是由arch/x86_64/kernel/vmlinux.lds文件链接规则由LD链接而成的elf64格式文件;本文称之为第一个vmlinux;2) objcopy将vmlinux转成二进制的vmlinux.bin;本文称之为第一个vmlinux.bin;3) gzip将vmlinux.bin压缩成vmlinu 阅读全文
posted @ 2012-10-10 20:54 Stay Hungry 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: 本文简要介绍X86-32架构下的Linux kernel被boot loader(如grub)加载到内存后,如何从最初的实模式,切换到保护模式,并开启分页机制。本文不涉及boot loader如何将内核加载到内存,因为这是boot loader的事,跟内核自己无关(当然他们之间一定要有种事先约定的协议来沟通)。因为启动代码并不经常变化,所以对这部分的分析基本适用于较早的2.6.24至现在的3.0.4版本。为了简化起见,我们主要关注不启动PAE机制的一般情况。看这篇文章前,先确定你对实模式,保护模式及分页机制的基本原理有了解。 先来看boot loader将内核加载到什么位置。下图... 阅读全文
posted @ 2012-10-10 20:36 Stay Hungry 阅读(768) 评论(0) 推荐(0) 编辑
摘要: Backdoor and Linux LKM Rootkit(中文)http://www.3our.com 未知 2004-8-9 Backdoor and Linux LKM Rootkit(中文) 翻译:e4gle(大鹰) Backdoor and Linux LKM Rootkit - smashing the kernel at your own risk 来源:CS290I Project Report 译: alert7<alert7@m4in.org>,el8<el8@m4in.org> from m4in security teams. CS290I P 阅读全文
posted @ 2012-09-29 11:24 Stay Hungry 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 以32位x86,bzImge为例grub版本为0.971、计算机上电2、0xFFFFFFF0当cpu检测reset引脚上的信号后便将指令指针寄存器的值设置为0xfff0——INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986, Chapter 10此时为实模式,cpu将执行物理地址0xFFFFFFF0处的指令访址的时候,硬件将该地址映射到BIOS的ROM中BIOS中的指令将MBR复制到物理地址0x7c00处,并跳转到该处执行3、0x7C00MBR中的指令由grub安装而来,为grub-0.97/stage1/stage1.Sstage1将stag 阅读全文
posted @ 2012-09-29 10:57 Stay Hungry 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 前言本文源于这样一个问题:内核镜像存储在硬盘下特定文件系统中,bootloader必须先加载文件系统驱动,才能读取内核文件。类似的,内核要读取根文件系统中的文件,也需要先加载文件系统驱动。如果文件系统驱动存储在硬盘中,启动时没有驱动无法读硬盘,将导致整个启动过程的失败。那么Grub和内核如何解决这个问题的呢?启动过程中需要读硬盘的时刻:1. BIOS读硬盘中MBR,将控制权交给MBR中Grub Stage12. Stage 1读硬盘中的Stage 1.5,Stage 1.5读Stage 2;或者Stage 1 直接读取 Stage 23. Stage 2读Kernel4. Kernel挂载根文 阅读全文
posted @ 2012-09-24 22:38 Stay Hungry 阅读(636) 评论(0) 推荐(0) 编辑