kernel编辑一helloworld!!

来源:互联网 发布:xmlbar软件下载 编辑:程序博客网 时间:2024/06/16 07:31

学习网址来源:https://www.askpure.com/course_MK6ID9VN-61X7K41I-FHS3WLM2-USIK4S6G.html

工具: codeblock,windows10 64位,dd for window(百度下载的,类似Linux下dd功能),vmvare


通过浏览学习网站知道:电脑启动流程:通电——>CPU的CS:IP初始值为:0xffff:0x0000——>找到BIOS系统加载到内存,执行BIOS,执行int 0x19中断——>加载硬盘或者软盘等存储器第一个柱面、第一个磁道、第一个扇区512字节内容,加载到0x7c00位置上——>启动系统内核


第一步,环境部署:codeblocks 在电脑管家上搜索就行,直接安装非常方便,省去很多时间安装编译环境

dd for window https://pan.baidu.com/s/1bo3QCEF 提取:g8qv

vmvare 试用30天 版,不会破解,到日子再说吧

      软件设置:

vmvare :(下载安装省略,百度下载的)创建新的虚拟机——》自定义——》其他,剩下默认下一步吧,反正又不是安装正是系统,关闭cd/dvd启动时连接

codeblocks : 创建一个empty project 选择MakeFile方式,完成之后,点击项目添加一个文件boot.s和MakeFile,再右键构建选项,make 命令选项里删     除说有$target

编写boot.s:

#ifndef _BOOT_S_#define _BOOT_S_.code16    .global     _start.section    .data.section    .text_start:movw    $0xb800,    %axmovw    %ax,          %esmovw    $0x07c0,    %axmovw    %ax,          %dsmovw    $_str,         %sixorw      %di,           %di_copy:cmp       $0,             %ds:(%si)je           _loopmovb    %ds:(%si),   %almovb    $0x07,         %ahmovw    %ax,           %es:(%di)addw       $1,            %siaddw       $2,            %dijmp         _copy_loop:jmp         _loop_str:.string     "hello World!!!!\0".org         0x1fe, 0x90.word      0xaa55#endif

编写Makefile:注意第七行和第八行,windows 下mingw-make.exe 执行的是createProcess函数,与Linux有所区别所有改为绝对路径,改成你程序所在地

BUILD = buildall:mkdir  $(BUILD)gcc boot.s -c -m32 -std=c99 -o $(BUILD)/boot.old -m i386pe -Ttext 0x0 -e _start $(BUILD)/boot.o -o $(BUILD)/bootobjcopy -O binary $(BUILD)/boot $(BUILD)/boot.binF:\tool\dd.exe bs=512 count=2880 if=/dev/zero of=$(BUILD)/boot.imgF:\tool\dd.exe bs=512 count=1 if=$(BUILD)/boot.bin of=$(BUILD)/boot.imgclean:rm -rvf $(BUILD)

最后将生成boot.img放到vmvare中作为主要启动项,新建的虚拟机点击编辑设置,勾掉启动时连接,再然后,选项里并没有软盘启动方式,点击编辑,然后点击添加软盘驱动器

,将刚才生成build目录下boot.img放到箭头所指位置,最后启动虚拟机,

codeblocks文件结构:


原创粉丝点击