首页 > 代码库 > 测试文件系统
测试文件系统
一、本文主要内容
1.制作一个可执行文件,用于测试
(1)在一个新的文件loader.S中写一段测试代码,及相应的.ld文件
(2)修改makefile,使loader.S编译成loader.bin
(3)把loader.bin拷贝到boot.img上
2.加载测试文件
对上一篇文件的代码稍做修改,使得能搜索并加载指定文件《loader.bin》到内存指定位置
3.控制权转移到内存指定位置
二、写一个测试文件
(1)loader.S
.code16.text mov $0xb800, %ax mov %ax, %gs mov $0xf, %ah mov $‘L‘, %al mov %ax, %gs:((80*0+39)*2) jmp .
(2)solrex_x86_dos.ld
这里我不太懂,加载的时候es:bx说明加载的位置,这个ld有什么用呢?
SECTIONS{ . = 0x0100; .text : { _ftext = .; } = 0}
(3)makefile
a.增加loader.S –> loader.bin的make
b.增加make copy, 用于把loader.bin拷贝到boot.img上
CC=gccLD=ldOBJCOPY=objcopyCFLAGS=-cTRIM_FLAGS=-R .pdr -R .comment -R.note -S -O binaryLDFILE_BOOT=solrex_x86.ldLDFILE_DOS=solrex_x86_dos.ldLDFLAGS_BOOT=-T$(LDFILE_BOOT)LDFLAGS_DOS=-T$(LDFILE_DOS)all: boot.img LOADER.BIN @echo ‘#################################################################‘ @echo ‘# Compiling work finished, now you can use "sudo make copy" to‘ @echo ‘# copy LOADER.BIN into boot.img‘ @echo ‘#################################################################‘boot.bin: boot.S $(CC) $(CFLAGS) boot.S $(LD) boot.o -o boot.elf $(LDFLAGS_BOOT) $(OBJCOPY) $(TRIM_FLAGS) boot.elf $@LOADER.BIN: loader.S $(CC) $(CFLAGS) loader.S $(LD) loader.o -o loader.elf $(LDFLAGS_DOS) $(OBJCOPY) $(TRIM_FLAGS) loader.elf $@boot.img: boot.bin @dd if=boot.bin of=boot.img bs=512 count=1 @dd if=/dev/zero of=boot.img skip=1 seek=1 bs=512 count=2879# You must have the authority to do mount, or you must use "su root" or# "sudo" command to do "make copy"copy: boot.img LOADER.BIN @mkdir -p /tmp/floppy;\ mount -o loop boot.img /tmp/floppy/ -o fat=12;\ cp LOADER.BIN /tmp/floppy/;\ umount /tmp/floppy/;\ rm -rf /tmp/floppy/;clean: @rm -f *.o *.elf *.bin *.BINdistclean: clean @rm -f boot.imgrelease: clean @mv boot.img solrex.img
三、加载测试文件
不需要特殊处理,把要加载的文件名和文件名长度设置一下就可以了
四、转移控制权
在LABEL_FILE_LOADED后面加上
jmp $BaseOfLoader, $OffsetOfLoader
四、编译
五、运行
(1)打印“Booting**”:引导程序开始执行
(2)打印“Loaded in”:找到了loader.bin
(3)打印“L”:跳转到loader.S的代码中
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。