文件管理 · 2023年11月14日

文件写入虚拟软盘的第一个扇区|如何在linux下制作一张可启动的虚拟软盘镜像

❶ FAT32文件系统的第一个扇区(DBR扇区)包含哪些基本信息

1.每扇区字节数。 2.每簇扇区数。 3.保留扇区数。 4.FAT表个数。 5.文件系统大小(扇区数)。 6.每FAT表大小(扇区数)。 7.根目录起始簇号。 8.其他附加信息。

❷ 请教U盘模拟软驱的方法

帮你找来的,希望对你有帮助最近开始看于渊的《自己动手写操作系统》这本书,刚开始看就发现做系统的引导盘竟然是软盘!心里那个汗啊!现在都是U盘了,谁还用软盘。于是考虑用U盘。于是开始以下步骤:1、既然书上说给先要把软盘做引导盘,那我就类似地把U盘做成引导盘。在网上找了半天,发现USboot,于是就用它给自己的U盘做了一个引导盘。2、把编译后的boot.bin文件用绝对扇区工具写入U盘就万事大吉了。同样,在网上找到了winhex(还有ultraiSO,这个没有什么用),可是这个关键的一步,自己不知道怎样用winhex将bin文件写入U盘。那可着急啊。。。弄了两个小时,还是没有成功。于是想,能否就用虚拟软盘?好,就开始重新找思路。最后终于找到和我一样困境的人,他的解决方法就是采用虚拟软盘,将bin文件写入镜像文件.img中,然后最为启动文件挂载到虚拟软盘中,就实现了自己的名义上的第一个操作系统—-Hello,OSworld!具体方法是:1、用作者提供的floppywriter将bin文件写入作者提供的TINIX.IMG文件中2、在vmware(也可以用virtualpc)中创建新虚拟机,注意操作系统和版本都选other。3、vmware编辑虚拟机设置,具体如图所示:注意软盘的设置:如果你有两个虚拟系统的话,虚拟光驱的设置也要改一下最后启动自己的系统即可。

❸ 如何从零开始写一个简单的操作系统

如何动手制作这样的引导扇区呢?这个过程十分简单,(1)首先按照要求写一个合法的引导程序(通常用汇编,机器码也可以,呵呵);(2)然后将其通过汇编程序,如NASM汇编成二进制文件;(3)最后,将这个二进制文件写入到目标盘的第一个扇区。第一步:写代码; 文件名:boot.asm; 代码如下,注意,汇编中通常用“;”来表示注释内容; 此段代码参考《自己动手写操作系统》(于渊);; 初始化函数org 07c00h ; 告诉编译器将此段程序加载; 到内存0x0000:07C00处mov ax, csmov ds, axmov es, axcall PrintStr ; 调用屏幕打印函数jmp $ ; 无限循环PrintStr: ; 屏幕打印函数mov ax, HelloWorld ; 将字符串拷贝到axmov bp, ax ; es:bp = 串地址mov cx, 24 ; cx = 串长度mov ax, 01301h ; ah = 13, al = 01hmov bx, 000ch ; 页号为0(bh = 0) 黑底红字(bl = 0ch,高亮)mov dl, 0int 10h ; 10h号中断retHelloWorld: db "Welcome to Lee's OS *_*" ; 字符串负值times 510-($-$$) db 0 ; 用0x0填充剩余的空间使生成; 的二进制代码刚好为512字节dw 0xaa55 ; 结束标志; 整个程序结束!很短吧第二步:汇编假设你已经安装了NASM程序,那么进入命令行模式,然后输入以下命令:C:[PATH]\ nasm boot.asm -o boot.bin其中“C:[PATH]\”为boot.asm代码文件所在位置。现在如果不出意外的话,你已经拥有了boot.bin二进制文件,这个就是引导程序!第三步:制作引导盘由于不能随便更改硬盘,否则系统无法进入原来的操作系统,所以我们用软盘来试验。那么,我们准备一张软盘。现在,我们要自己写一个程序将我们汇编得到的二进制文件写到软盘的第一个扇区。C语言程序代码如下:/***************START***************/#include#includeint main(void){FILE *in;unsigned char buffer[520];if((in = fopen("boot.bin", "rb"))==NULL){printf("Error loading file\n");exit(0);}fread(&buffer, 512, 1, in);while(biosdisk(3, 0, 0, 0, 1, 1, buffer));fclose(in);return 0;}/****************END****************/注意,这个程序必须同boot.bin文件在同一目录下,然后将软盘放进软驱,运行此程序。第四步:GOGOGO好了,现在你拥有了一张从头到尾完全自制的引导盘,由于有了她,你想运行你的电脑再也不需要微软插手了,而且这很可能是你第一次能在裸机上运行一个自己的程序哦,哈哈!重新启动你的机器,记得把软盘放进去,现在你看见什么了?一行醒目的红字:Welcome to Lee's OS *_*打印在屏幕上!

❹ 一个扇区是什么意思

扇区是硬盘数据存储管理的基本单位,或者说是数据存储的基本计量单元。通俗解释如下:

1、扇区自然是存在于硬盘的磁性盘片上(机械硬盘),是以磁信号记录数据的很一小块面积。SSD固态硬盘是电子盘,即以电平信号记录数据的,原理、结构都与机械硬盘不同,但它的管理模式也是模拟机械硬盘传统管理方式;

2、1个扇区容量,由512个字节(byte)构成,而1Byte 由8个0或1二进制bit(位)组成,故可储存4096个二进制数;

3、硬盘的使用管理方式中,若干个扇区又因分区容量划分不同,被分配为一个“簇”来管理,若干个簇组合成一个分区,被记录在硬盘的分区表中;

4、各类数据,都是以文件形式保存在硬盘上的,由硬盘的管理系统分配它们具体的存储位置,赋与统一编号;

5、数据存储操作时,如复制文件,是以簇为单位开始的,即该簇的第一扇区开始写入,由于文件大小不同,小体积文件写不满簇中扇区,其它文件也不会被分配补写扇区的。而大体积文件写满簇后,继续下一簇中续写数据;

6、各文件存储的簇链逻辑关系地址,记录在硬盘的文件分配表FAT、目录分配表FDT中保存,用来管理调度数据的寻址与读写操作。

❺ 如何将自己写的引导代码写入u盘的第一扇区

在linux下, 可以将可执行文件看做一个文件,将软盘看做另一个文件,简单的读写即可。

❻ 做一个简单是操作系统

写一个PC机的引导程序比我们想象的容易很多,事实上所需要了解的只是知道PC机是怎样启动的。在网上看到不少类似的文章,说的很多,有的很麻烦,笔者觉得仅仅是写一个引导程序完全没有必要牵涉太多东西,知道足够的知识用于去实际地写一个出来看看是很多人最初的目的,那这篇文章就刚好适合你了。这篇文章的立足点就是短、简单、一看就懂,而又不会看完了什么都不知道就写出一个连自己都看不懂的代码。另外,机器人天空重新改版,笔者兴奋的看到了一个真正的机器人网站,囊括了机器人科学与技术这样庞大的系统工程的各个方面,在此献上这篇文章给机器人天空的操作系统专栏,祝愿机器人天空越办越好,并能够为中国的机器人爱好者们带来更多更丰富的信息与资源,做更多的实事!同时,也希望广大的机器人爱好者和有识之士都能出一份力,为祖国更美好的明天共同努力!笔者与您共勉。现在,让我们开始引导程序初探! [什么?] 很多文章中把写一个引导程序称作是开发一个最简单的操作系统,其实这是非常片面的,引导程序算不上操作系统,虽然此程序可以运行在裸机上。所谓引导程序,直观的说就是在系统加电启动时BIOS第一个执行的程序。 引导程序要想发挥作用,让机器识别,就必须安置在一个特别的位置,这个位置就是磁盘的第一个扇区(0面0磁道1扇区,备注:没有0扇区),而一个包含引导程序的扇区叫作引导扇区。一个合法的引导扇区(1)通常包含512个字节(当然喽,一个扇区通常本来就是512个字节),(2)并且以0xAA55这样一个占用两个字节的数据结尾作为标志符。(备注:0x前缀说明这是一个十六进制数)。也就是如果把引导扇区看成一个字符数组的BootSector[]话(因为一个字符,即char,刚好为一个字节),那么这个数组就拥有512个元素,如果用C语言申明的话即为char BootSector[512];接着,一个合法的引导扇区必须以0xAA55结束,即BootSector[510] = 0x55;BootSector[511] = 0xAA;除了结束标志必须符合上面的要求之外,中间虽然还有510字节的空间,但执行代码可以少于510字节,用无意义字符(通常用0x0)填充剩余空间即可。[过程!]PC是通过BIOS来启动机器的,当PC机加电之后BIOS启动相应的程序完成机器的自检,然后就寻找可以引导的驱动器,即大家通常所说的启动盘。在BIOS中可以设置从哪个盘启动,但通常总要检查硬盘,所以当BIOS检查完前面的启动设备之后,如果没有发现任何引导程序,那么就会开始检查主硬盘,即C盘。如果此时在C盘上找到了合法的引导扇区,那么就会将引导扇区的内容(共512字节)装载到内存0x0000:07C00处。此时BIOS把控制权限交给这段引导程序。那么,接下来,引导程序通常会简单的执行一些指令,比如输出一段文字,显示一个启动界面等等,但最重要的,引导程序将会启动一个更大的程序,然后把权限交给他,这通常就是我们所说的操作系统内核。额外补充一句,目前对操作系统的定义有不少,但笔者比较赞成的观点如下:从形式上看,操作系统是:从计算机启动到结束的过程中始终在运行的程序。而这通常就是我们所说的操作系统内核。从功能上看,操作系统:管理和维护所有的硬件、软件、数据资源,并为上层应用或服务提供一个抽象的接口。从某种层面上看,第二中定义更接近于虚拟机。(闲话一段^_^)[如何?]现在,已经了解了这些基本的概念,那么,如何动手制作这样的引导扇区呢?这个过程十分简单,(1)首先按照要求写一个合法的引导程序(通常用汇编,机器码也可以,呵呵);(2)然后将其通过汇编程序,如NASM汇编成二进制文件;(3)最后,将这个二进制文件写入到目标盘的第一个扇区。[跟我做:-P]上面说的很简单吧?那好,现在我们来写一个吧!第一步:写代码; 文件名:boot.asm; 代码如下,注意,汇编中通常用“;”来表示注释内容; 此段代码参考《自己动手写操作系统》(于渊);; 初始化函数org 07c00h ; 告诉编译器将此段程序加载; 到内存0x0000:07C00处mov ax, csmov ds, axmov es, axcall PrintStr ; 调用屏幕打印函数jmp $ ; 无限循环PrintStr: ; 屏幕打印函数mov ax, HelloWorld ; 将字符串拷贝到axmov bp, ax ; es:bp = 串地址mov cx, 24 ; cx = 串长度mov ax, 01301h ; ah = 13, al = 01hmov bx, 000ch ; 页号为0(bh = 0) 黑底红字(bl = 0ch,高亮)mov dl, 0 int 10h ; 10h号中断ret HelloWorld: db "Welcome to Lee's OS *_*" ; 字符串负值times 510-($-$$) db 0 ; 用0x0填充剩余的空间使生成; 的二进制代码刚好为512字节dw 0xaa55 ; 结束标志; 整个程序结束!很短吧 第二步:汇编假设你已经安装了NASM程序,那么进入命令行模式,然后输入以下命令:C:[PATH]\ nasm boot.asm -o boot.bin其中“C:[PATH]\”为boot.asm代码文件所在位置。现在如果不出意外的话,你已经拥有了boot.bin二进制文件,这个就是引导程序!第三步:制作引导盘由于不能随便更改硬盘,否则系统无法进入原来的操作系统,所以我们用软盘来试验。那么,我们准备一张软盘。现在,我们要自己写一个程序将我们汇编得到的二进制文件写到软盘的第一个扇区。C语言程序代码如下:/***************START***************/#include #include int main(void) { FILE *in; unsigned char buffer[520];if((in = fopen("boot.bin", "rb"))==NULL) { printf("Error loading file\n"); exit(0); } fread(&buffer, 512, 1, in); while(biosdisk(3, 0, 0, 0, 1, 1, buffer));fclose(in); return 0;} /****************END****************/注意,这个程序必须同boot.bin文件在同一目录下,然后将软盘放进软驱,运行此程序。第四步:GOGOGO好了,现在你拥有了一张从头到尾完全自制的引导盘,由于有了她,你想运行你的电脑再也不需要微软插手了,而且这很可能是你第一次能在裸机上运行一个自己的程序哦,哈哈!重新启动你的机器,记得把软盘放进去,现在你看见什么了?一行醒目的红字:Welcome to Lee's OS *_*打印在屏幕上!过来的,我照着做过,呵呵,比较简单的!想出现什么文字,直接打把一部汇编的Welcome to Lee's OS *_*改一下就可以了

❼ 怎么将引导文件写入u盘第一个分区

将引导文件写入u盘第一个分区?无法引导启动?是启动u盘?1、是量产的话,只能编辑原PE的ISO导入引导文件,并重新量产2、不是量产的话,是UD,最好要重写入时导入引导文件3、不是量产,不是是UD,是一般写入的话,用"引导扇区维护工具BOOTICE"将u盘主引导设为USB-HDD即可

❽ 第一个 NTFS 引导扇区无法写入

如果你的是GHOST系统,就是安装过程没看到各种提示的,可以在安装之前用光盘里的工具把磁盘格式化,或者等装完系统后,点“我的电脑”-右键“管理”-磁盘管理,把别的区格式化。如果是原版的,安装过程(复制完文件不久)会弹出界面要你选择分区的,这时可以把全部分区删除再建立一个C盘装系统,也可以只删除C盘,装完后用上面的方法建立分区。其实提示都是中文的,留意看提示就没问题的。。

❾ 如何在linux下制作一张可启动的虚拟软盘镜像

LINUX 下制作软盘镜像制作流程1.先生成一个空白软盘镜像: dd if=/dev/zero of=data.img bs=512 count=28802.使用losetup命令,把data.img作为loop device使用: sudo losetup /dev/loop0 data.img3.格式化这个loop device sudo mkfs.msdos /dev/loop0 //如果没有mkfs.msdos 命令,请检查系统是否安装了dosfstools包4.检查文件系统: sudo fsck.msdos /dev/loop05.删除 loop device: sudo losetup -d /dev/loop06.这时候,data.img已经格式化完成,以可读写选项挂载空白软盘镜像 sudo mount -o loop,rw data.img /mnt/floop 7.往软盘所挂载的节点上写入文件,容量不超过 1.44M 就好了! sudo cp file.c /mnt/floppy8.卸载软盘 sudo umount /mnt/floop9.但是这样还不可以引导,需要写一个简单的引导程序, 编译后生成 boot , 大小不能超过512Byte,然后 dd bs=512 if=boot of=/dev/loop/0 count=1 把这个引导程序写入软盘镜像的0扇区。