运行自己的操作系统(linux版)

大部分内容来自WB. YANG的一本书,书名忘记了

1.linux所需要的安装的工具

vim, virtualbox,g++

2.编写自己的操作系统,懒得在linux上装个输入法,只好用蹩脚的英文写的注释,阅读时请自带避雷针

系统引导程序:boot.S

  1 .code16#使用16位模式汇编  2 .text#代码段开始  3         mov     %cs, %ax#初始化栈寄存器、数据段寄存器和通用段寄存器  4         mov     %ax, %ds  5         mov     %ax, %es  6         call    DispStr         #调用字符串显示函数,call function to display string  7         jmp    .               #while(1),无限循环  8 DispStr:#字符串显示函数  9         mov     $BootMessage, %ax 10         mov     %ax, %bp        #ES:BP = address of string 11         mov     $16, %cx        #CX = length of string 12         mov     $0x1301, %ax    #AH = 13, AL = 01h 13         mov     $0x00c, %bx     #page number = BH=0, word color = BL = 0Ch 14         mov     $0, %dl 15         int     $0x10            #进入中段10h is interrupt number 16         ret#返回 17 BootMessage:.ascii "Hello, OS world!" 18 .org 510                        #fill 0 in first 510 BYTE 19 .word 0xaa55                    #end with 0xaa55

连接脚本:solrex_x86.ld

  1 divS  2 {  3     . = 0x7c00;  4     .text :  5     {  6         _ftext = .; /*program will be loeaded to 0x7c00*/  7     } = 0  8 }

编译连接文本Makefile

  1 CC=g++  2 Ld=ld  3 LDFILE=solrex_x86.ld  4 OBJCOPY=objcopy  5   6 all:boot.img  7   8 #Step 1:g++ call as, boot.S -> boot.o  9 boot.o:boot.S 10     $(CC) -c boot.S 11  12 #Step 2:ld call link script, boot.o -> boot.elf 13 boot.elf:boot.o 14     $(LD) boot.o -o boot.elf -e c -T$(LDFILE) 15  16 #Step 3:objcopy remove the useless div(such as .pdr, .commemnt, .node) i    n boot.efl,  17 #strip all signal information, the output is boot.bin 18 boot.bin:boot.elf 19     @$(OBJCOPY) -R .pdr -R .comment -R .note -S -O binary boot.elf boot.bin 20  21 #Step 4:generate bootable software image 22 boot.img:boot.bin 23 @dd if=boot.bin of=boot.img bs=512 count=1   #用 boot.bin 生成镜像文件第一个扇区 24 # 在 bin 生成的镜像文件后补上空白,最后成为合适大小的软盘镜像 25 @dd if=/dev/zero of=boot.img skip=1 seek=1 bs=512 count=2879 26 27 clean: 28 @rm -rf boot.o boot.elf boot.bin boot.img

boot.S -> boot.o -> boot.elf -> boot.bin ->boot.img

3.生成os的镜像文件

把以上三个文件放在同一个目录,并输入make,则在同一目录生成boot.img

4.加载和运行

运行virtualbox

new一个新的操作系统

setting->storage->Add controller->Add floopy controller->add floopy deviec->choose disk->导入上一步中生成的boot.img

start

自己不喜欢的人,可以报之以沉默微笑;

运行自己的操作系统(linux版)

相关文章:

你感兴趣的文章:

标签云: