自制操作系统之创建虚拟硬盘

创建虚拟硬盘

利用Oracle VM virtualBox创建一块4M的虚拟硬盘,步骤如下
在这里插入图片描述
选择固定大小
在这里插入图片描述
选择文件位置与大小
在这里插入图片描述
创建完成。

查看文件内容

工具生成一个后缀名为.vhd大小为4MB的文件
在这里插入图片描述
用HexView打开,发现文件内容全部被0填充,只有在0X00400000,十进制的 262145行有其它内容
在这里插入图片描述

简单分析一下格式

VHD: Microsoft 虚拟化产品中常用的镜像格式是虚拟硬盘 (VHD) 镜像格式

636f 6e65 6374 6978 0000 0002 0001 0000
ffff ffff ffff ffff 2dc3 4fdc 7662 6f78
0006 0000 5769 326b 0000 0000 0040 0000
0000 0000 0040 0000 0078 0411 0000 0002
ffff e7ec e5dc 5215 4050 0042 937d 7908
02ce ab69 0000 0000 0000 0000 0000 0000

固定方式的VHD格式分为两个结构:数据区和尾部。尾部结构共有512字节
在这里插入图片描述

  • 标识 占8字节。表明是否一个合法的VHD文件,固定写入了“conectix”字符串。

  • 特性 占4字节。这个字段说明该文件支持的特定功能,常用特性有:无,临时,保留。无特性表明该文件没有嵌入特定功能;特性为临时,表明这是一个临时的VHD文件,当关机时会被删除;保留特性,这一位始终被设置为1。无:0,临时1,保留:2

  • 版本 占4字节,表明VHD的文件格式版本信息。

  • 数据偏移占8字节。这个字段以字节存储了从文件开始到下一结构的绝对字节偏移量。该字段保存从文件开头到下一个结构的绝对字节偏移量。该字段只用于动态盘和差异盘,不用于固定盘。对于固定磁盘,该字段应设置为0xFFFFFFFF

  • 时间戳占4字节。(图片标错了)存储了文件的创建时间,这是自2000年1月1日0时0分UTC/格林尼治时间以来的秒数。

  • 创建者信息占12字节。共有三个字段:创建者(占4字节);应用版本(占4字节),前两字节是主版本号,后两节是小版本号;应用系统(占4字节)。创建者指创建该VHD文件的应用,应用版本是创建文件的应用版本信息;应用系统指出创建VHD文件的平台,如windows.

  • 初始长度占8字节,以字节为单位写入了创建时的初始大小。

  • 即时长度占8字节。以字节为单位写入了当下VHD文件的大小。对于固定方式的VHD文件,初始长度与即时长度相同。

  • 磁盘结构占4字节。描述了硬盘的C/H/S结构参数。目前已很少用到。此字段存储硬盘的磁道,磁头和每磁道的扇区值。
    在这里插入图片描述

  • 类型占4字节。描述VHD文件的类型。其常见类型如: 空:0 ;固定方式:2;动态方式:3;差分方式:4;
    在这里插入图片描述

  • 尾部校验和占4字节。这个字段只检验VHD文件的尾部,检验和是由尾部中除校验和字段的信息计算得到。如果校验和出错,则认定文件损坏。

  • 通用唯一识别码占16字节。每一块硬盘都有一个识别码,用来识别硬盘,即128位的通用唯一识别码。

  • 标志占1字节。用来表示硬盘是否处于保存状态。如果磁盘处于保存状态,那该字段置为1,不能执行对磁盘的压缩或拓展等动作。

  • 保留字段占427字节。

向虚拟硬盘写入文件

直接将编译好的img文件内容替换vhd文件的前512字节就可以了

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值