测试文件系统

一、本文主要内容

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=gcc
LD=ld
OBJCOPY=objcopy

CFLAGS=-c
TRIM_FLAGS=-R .pdr -R .comment -R.note -S -O binary

LDFILE_BOOT=solrex_x86.ld
LDFILE_DOS=solrex_x86_dos.ld
LDFLAGS_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 [email protected]

LOADER.BIN: loader.S
    $(CC) $(CFLAGS) loader.S
    $(LD) loader.o -o loader.elf $(LDFLAGS_DOS)
    $(OBJCOPY) $(TRIM_FLAGS) loader.elf [email protected]

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 *.BIN

distclean: clean
    @rm -f boot.img

release: clean
    @mv boot.img solrex.img

三、加载测试文件

不需要特殊处理,把要加载的文件名和文件名长度设置一下就可以了

四、转移控制权

在LABEL_FILE_LOADED后面加上

jmp        $BaseOfLoader, $OffsetOfLoader

四、编译

五、运行

(1)打印“Booting**”:引导程序开始执行

(2)打印“Loaded in”:找到了loader.bin

(3)打印“L”:跳转到loader.S的代码中

测试文件系统

时间: 2024-10-29 09:26:53

测试文件系统的相关文章

vdbench多节点测试文件系统读写

vdbench多节点测试文件系统读写 操作步骤: 1.首先在每台需要测试的节点上安装java(包含总控节点) 2.然后保证每节点的主机名不同,并且最好关闭每台防火墙 3.把需要测试的网络存储挂载到每台节点上 4.然后依次操作每节点,用cmd进入vdbench的目录,运行"vdbenchrsh"(进入监听模式) 5.到总控上打开host文件,写好每台节点的ip和主机名. 6.到总控节点,用cmd进入vdbench目录,运行"vdbench–f parmfile"(pa

pjd-test The test suite checks POSIX compliance - 测试文件系统posix 接口兼容性

pjd-fstest: 参考网址:https://www.tuxera.com/community/posix-test-suite/ fstest是一套简化版的文件系统POSIX兼容性测试套件,它可以工作在FreeBSD, Solaris, Linux上用于测试UFS, ZFS, ext3, XFS and the NTFS-3G等文件系统.fstest目前有3601个回归测试用例,测试的系统调用覆盖chmod, chown, link, mkdir, mkfifo, open, rename

Linux文件系统的几个性能测试软件小结

曾经测试Linux系统下的分布式集群系统的性能,使用了一些测试软件,公司让我给部门同事做一次基础培训,于是翻看以前所写的记录资料挑选了其中几个,所记之处并不完全,只记录使用的功能. 1.Iozone iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read, re-write, readbackwards, read strided, fread, fwrite, random read, pread,

Java 实现对文件系统的监控

在开发中经常会用到监控文件或是目录的状态,如果你还在手写轮巡扫描文件的话,那你久out了. 1. Commons io为我们提供了一套可靠.高性能的一套文件系统监控API 1.1. 需要的jar包如下,具体版本可根据自己需要选取: commons-logging-1.1.1.jar log4j-1.2.15.jar 1.2. 在文件监控系统的中,首先要理解几个角色: Observer:观察者,拥有文件路径.文件过滤器.文件比较器(监控器用它来判断文件的状态变化:新增.修改.删除.等等),可以向他

linux文件系统软链接硬链接

引子 目前,UNIX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统).ext3.ext4.ZFS和Reiserfs等等. 不论哪一种文件系统,总是需要存储数据.硬盘的最小存储单位是扇区,数据所存储的最小单位则不是扇区,因为用扇区来存储效率就太低了.一个扇区只有512字节,而磁头是一个扇区一个扇区地读取,也就是说,如果文件是10MB,那么为了读这个文件,磁头必须要进行读取20480次.这样效率是极其低下的. 逻辑块 为了提高效率,就有了逻辑块(Block)的概念,也可以叫做数据块

p?o?s?t?m?a?r?k?使?用

一.Postmark原理 Postmark是由着名的NAS提供商NetApp开发,用来测试其产品的后端存储性能. Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁.大量地存取小文件. Postmark的测试原理是创建一个测试文件池.文件的数量和最大.最小长度可以设定,数据总量是一定的.创建完成后,Postmark对文件池进行一系列的事务(transaction)操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,

[转]Oracle DB 移动数据

? 描述移动数据的方式 ? 创建和使用目录对象 ? 使用SQL*Loader 加载非Oracle DB(或用户文件)中的数据 ? 使用外部表并通过与平台无关的文件移动数据 ? 说明Oracle 数据泵的一般体系结构 ? 使用数据泵的导出和导入实用程序在Oracle DB 之间移动数据 移动数据:一般体系结构 移动数据:一般体系结构 主要功能组件: ? DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据. ? 直接路径API (DPAPI):Oracle

开机进入grub命令行之后。。。。

最近由于经常整理自己电脑上的文件,难免都会遇到误删系统文件或者操作失误导致系统不能够正常进入的情况.这时就会出现grub错误的提示,只能输入命令才能进入系统.那么该输入什么命令呢?其实非常简单. grub定义: GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器.用来引导不同系统,如windows,linux. 在X86架构的机器中,Linux.BSD 或其它Unix类的操作系统中GRUB.LILO 是大家最为常用,应该说是主流.

corosync(pacemaker)+drbd+web(apache)

环境:     vm1-hong:172.16.3.2/16     vm2-ning:172.16.3.10/16     VIP:172.16.3.100/16 一.drbd安装: 案例:配置主从primary/secondary的drbd设备(主从节点在高可用集群中,中从节点切换比较慢) 前提:     1.两节点之间必须时间同步.基于主机名能相互通信     2.准备的磁盘设备必须是同样大小的     3.系统架构得一样    包: drbd-8.4.3-33.el6.x86_64.rp