- 本文将利用
linux
的dd
命令往软盘的0道0面1扇区(即主引导扇区)
写入数据; - 实现在屏幕上显示
asm
这个三个字符的功能; - 由于
Ubuntu
系统以软盘(floppy disk)
作为启动盘,当选择系统从软盘启动时,将自动执行软盘主引导扇区的代码;
软盘创建
- 无论是XP系统还是Ubuntu系统,使用VM虚拟机创建和使用软盘的步骤都是一致的(见下方参考链接)
在 VMware Workstation 中创建一个虚拟软盘
https://blog.csdn.net/apollon_krj/article/details/72026944
二进制文件.bin来源
[003][x86汇编语言]开发环境配置:检测点4.2 从虚拟硬盘主引导扇区启动 虚拟机 VirtualBox
https://www.jianshu.com/p/9cb95d936451
- 得到的
.bin
文件,重命名为asm.bin
,以进行下面的实例
软盘读写实例 step-by-step
首先、对虚拟机的操作
1、开机之前,点开 编辑虚拟机设置,取消"勾选启动时连接"
1、开机之前,确认,没有勾选启动时连接2、点击,开启此虚拟机
3、开机之后,再次点开 编辑虚拟机设置,对软盘,勾选"已连接"
-
如果这里,不勾选"已连接",相当于空有软驱,没有插入软盘!
开机之后,再次点开 编辑虚拟机设置,对软盘,勾选"已连接"
然后、在命令行操作
-
0、软盘通常的设备名是
需要格式化,见下面的步骤/dev/fd0
-
1、
fdformat
格式化软盘 以及mkfs
为软盘创建一个FAT
文件系统
$ sudo fdformat /dev/fd0
[sudo] password for anno:
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$ sudo mkfs -t msdos /dev/fd0
mkfs.fat 3.0.26 (2014-03-07)
软盘格式成功的话, 可以双击图标点开,并且右键查看属性,如下
Ubuntu 软盘
- 2、将整个软盘的数据(此时为空)拷贝到一个镜像文件
disk.img
(如果不存在就会自动新建一个)中
$ sudo dd if=/dev/fd0 of=disk.img bs=512 count=2880
2880+0 records in
2880+0 records out
1474560 bytes (1.5 MB) copied, 1.6708 s, 883 kB/s
$ ls
asm.bin disk.img Downloads Music Public Templates
Desktop Documents examples.desktop Pictures src Videos
- 3、将
asm.bin文件
的写入boot.img
(如果不存在就会自动新建一个)的0到0面1扇区
$ sudo dd if=asm.bin of=boot.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0245008 s, 20.9 kB/s
$ ls
asm.bin disk.img examples.desktop Public Videos
boot.img Documents Music src
Desktop Downloads Pictures Templates
- 4、用
disk.img
填满boot.img
的全部剩余扇区,skip=1
表示跳过第一个扇区(即0道0面1扇区
)
anno@anno-m:~$ sudo dd if=disk.img of=boot.img skip=1 seek=1 bs=512 count=2879
2879+0 records in
2879+0 records out
1474048 bytes (1.5 MB) copied, 0.0275185 s, 53.6 MB/s
anno@anno-m:~$ ls
boot.img Documents asm.bin Public Videos
Desktop Downloads Music src
disk.img examples.desktop Pictures Templates
- 5、将
boot.img
复制到软盘
$ sudo dd if=boot.img of=/dev/fd0
2880+0 records in
2880+0 records out
1474560 bytes (1.5 MB) copied, 3.84448 s, 384 kB/s
最后、再对虚拟机的操作
1、关闭客户机
2、再次点开 编辑虚拟机设置,对软盘,勾选"启动时连接"
- 因为现在软盘的主引导扇区里面已经有代码了
3、开启此虚拟机,可以看到屏幕显示了asm三个字符,表示写软盘成功!
开启此虚拟机,可以看到屏幕显示了asm三个字符,表示写软盘成功!相关实例
- 软盘读写:Window系统,MASM编译器 ,VM虚拟机
[082][汇编语言]编程:应用BIOS int 13H中断例程对 软盘A 进行读写
https://www.jianshu.com/p/bfeed0397631
- 软盘读写:Window系统,NASM编译器,Bochs虚拟机 + VirtualBox虚拟机
[003][x86汇编语言]开发环境配置:检测点4.2 从虚拟硬盘主引导扇区启动 虚拟机 VirtualBox
https://www.jianshu.com/p/9cb95d936451
[005][x86汇编语言]开发环境配置:硬盘主引导扇区代码:显示标号偏移地址 基础Bochs调试命令
https://www.jianshu.com/p/e8eea9f2ceb5
[013][x86汇编语言]从硬盘主引导扇区启动,显示hello world的“迷你操作系统”
https://www.jianshu.com/p/eddf4298e236
- 软盘读写:真实软盘
[089][汇编语言]真实机器从软盘启动,引导自己写的"迷你操作系统"
https://www.jianshu.com/p/5d5a1d3d7efe
参考引用
- 《linux命令行大全》15.4格式化软盘 15.5直接从/向设备转移数据
dd if=input_file of=output_file [bs=block_size [count=blocks]]
https://www.jianshu.com/p/accaef5bc096
- How do I write a bin file (512 bytes) to the first sector (sector 0) of a floppy disk?
- 制作img镜像文件的5种方法
网友评论