[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0

  • 本文将利用linuxdd命令往软盘的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、开机之前,点开 编辑虚拟机设置,取消"勾选启动时连接"

[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0_第1张图片
1、开机之前,确认,没有勾选启动时连接

2、点击,开启此虚拟机

3、开机之后,再次点开 编辑虚拟机设置,对软盘,勾选"已连接"

  • 如果这里,不勾选"已连接",相当于空有软驱,没有插入软盘!


    [Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0_第2张图片
    开机之后,再次点开 编辑虚拟机设置,对软盘,勾选"已连接"

然后、在命令行操作

  • 0、软盘通常的设备名是/dev/fd0

    [Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0_第3张图片
    需要格式化,见下面的步骤

  • 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]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0_第4张图片
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三个字符,表示写软盘成功!

[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0_第5张图片
开启此虚拟机,可以看到屏幕显示了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?

https://stackoverflow.com/questions/32893607/how-do-i-write-a-bin-file-512-bytes-to-the-first-sector-sector-0-of-a-floppy

  • 制作img镜像文件的5种方法

https://blog.csdn.net/nethanhan/article/details/8096772

你可能感兴趣的:([Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0)