美文网首页Linux学习之路程序员@IT·互联网
动手写自己的第一个“操作系统”

动手写自己的第一个“操作系统”

作者: ultraji | 来源:发表于2016-06-25 13:43 被阅读378次

    参考资料:《Linux内核完全剖析--基于0.12内核》

    1.首先编写代码

    boot.s代码如下:

    !
    ! boot.s -- bootsect.c的框架程序。用代码0x07替代串msgl中1字符,然后在屏幕第一行显示。
    
    BOOTSEG = 0x07c0
    
    entry start
    start:
        jmpi    go,BOOTSEG
    go: mov     ax,cs
        mov     ds,ax
        mov es,ax
        mov cx,#12                 !需要显示的字符个数,包括回车和换行
        mov dx,#0x1104             !从第18行,第5列开始显示
        mov bx,#0x000c             !颜色设置为红色
        mov bp,#msgl               !指向要显示的字符串
        mov ax,#0x1301
        int 0x10
    loop0:  jmp     loop0
    msgl:   .ascii  "Hello World"
        .byte   13,10              !回车和换行
    .org 510
        .word   0xAA55
    

    2.通过as86汇编语言程序的编译和链接生成我们需要的引导程序boot。

    as86 -0 -a -o Desktop/boot.o Desktop/boot.s     //编译。生成与as部分兼容的目标文件。
    ld86 -0 -s -o Desktop/boot Desktop/boot.o       //链接。去掉符号信息。
    

    3.然后,通过bximage命令生成虚拟软盘。


    bximagebximage

    4.之后将引导扇区写入软盘。这时需要注意刚才生成的boot是544B的,而不是512B,多出来的是MINIX的可执行文件的头结构,需要人工删除。所以用了dd命令删除了boot的前32B。

    dd bs=32 if=Desktop/boot of=a.img skip=1        //写入软盘或Image盘文件中
    

    5.然后配置bochs的配置信息bochsrc.
    我的配置信息(config4ji)如下:

    #BIOS映像文件和VGA BIOS映像文件
    romimage:file=/usr/local�6/bochs/BIOS-bochs-latest   
    vgaromimage:file=/usr/local�6/bochs/VGABIOS-lgpl-latest
    #这个是启动软盘,就是我们刚才做的那个
    floppya:1_44=a.img,status=inserted 
    #确定启动方式
    boot:floppy
    

    6.然后运行bochs。

    bochs -f Desktop/config4ji      
    

    结果如下:

    osos

    相关文章

      网友评论

        本文标题:动手写自己的第一个“操作系统”

        本文链接:https://www.haomeiwen.com/subject/iyladttx.html