美文网首页
[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin -

[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin -

作者: AkuRinbu | 来源:发表于2018-10-14 22:39 被阅读117次
    • 本文将利用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、开机之前,点开 编辑虚拟机设置,取消"勾选启动时连接"

    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?

    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 -

          本文链接:https://www.haomeiwen.com/subject/pkwtzftx.html