Linux下mount命令问题

时间:2022-02-15 06:31:12
我把boot.bin用dd命令写入a.img(由bximge生成的软盘镜像)后,用file命令查看得到结果
"a.img: x86 boot sector, code offset 0x65"
之后我用mount 命令加载 sudo mount -o loop  a.img  /mnt/floppy 出错
“mount: 您必须指定文件系统类型”
不知道怎么办才好,求指导

12 个解决方案

#1


那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。

#2


我是通过先mount挂载操作完毕之后在dd写入a.img,然后在通过bochs加载曲线救国的 

#3


楼主很有想法呀,呵呵,那就指定下文件系统类型呗,成功的话说一下,学习学习

#4


-fat -fat32

#5


之后我用mount 命令加载 sudo mount -o loop a.img /mnt/floppy 出错
===============
可以试试iso9660,man mount了下,没有发现有合适的选项

#6


应该是boot.bin里面没有文件系统的信息导致的,如果在boot.s最开始加上如下的代码:

jmp LABEL_START
nop
#下面是 FAT12 磁盘的头
BS_OEMName:     .ascii "HelloWLD"   # OEM String, 必须 8 个字节
BPB_BytsPerSec: .short 0x200          # 每扇区字节数
BPB_SecPerClus: .byte 0x1            # 每簇多少扇区
BPB_RsvdSecCnt: .short 0x1            # Boot 记录占用多少扇区
BPB_NumFATs:    .byte 0x2            # 共有多少 FAT 表
BPB_RootEntCnt: .short 0xE0          # 根目录文件数最大值
BPB_TotSec16:   .short HEADS*SECTORS_PER_TRACK*CYLINDERS         # 逻辑扇>区总数
BPB_Media:      .byte 0xF0         # 媒体描述符
BPB_FATSz16:    .short 0x9            # 每FAT扇区数
BPB_SecPerTrk:  .short SECTORS_PER_TRACK           # 每磁道扇区数
BPB_NumHeads:   .short HEADS            # 磁头数(面数) 
BPB_HiddSec:    .int 0x0            # 隐藏扇区数
BPB_TotSec32:   .int 0x0            # wTotalSectorCount为0时这个值记录扇区

BS_DrvNum:      .byte 0x0            # 中断 13 的驱动器号
BS_Reserved1:   .byte 0x0            # 未使用
BS_BootSig:     .byte 0x29          # 扩展引导标记 (29h)
BS_VolID:       .int 0            # 卷序列号
BS_VolLab:      .ascii "Tracy_Zhang"# 卷标, 必须 11 个字节
BS_FileSysType: .ascii "FAT12   "   # 文件系统类型, 必须 8个字节

再去mount的时候就会知道这是个FAT12的分区(以上代码有几个宏没贴出来,需要根据具体的介质来定义大小,我是用了一个10M的image:bochsrc里面有一行 ata0-master: type=disk, path="disk_10M.img", mode=flat, cylinders=20, heads=16, spt=63,来指定,然后烧到U盘里去启动的,如果是软盘的话,这几个值也是很好算出来的),如果楼主的boot.bin里这样的信息没有的话,就算指定了vfat,fat32也是没有用的。另外楼主如果想用fat32的文件系统的话,可以去查下fat32在mbr中的信息是如何存储的。
PS:楼主是如何将boot.bin dd到a.img里的? 是dd if=boot.bin of=a.img 吗?如果是这样的话,a.img就不是1.44M了,大小是boot.bin的大小。

#7


引用 6 楼 zhang19871112 的回复:
应该是boot.bin里面没有文件系统的信息导致的,如果在boot.s最开始加上如下的代码:
Assembly code

jmp LABEL_START
nop
#下面是 FAT12 磁盘的头
BS_OEMName:     .ascii "HelloWLD"   # OEM String, 必须 8 个字节
BPB_BytsPerSec: .short 0x200          # ……

PS:楼主是如何将boot.bin dd到a.img里的? 是dd if=boot.bin of=a.img 吗?如果是这样的话,a.img就不是1.44M了,大小是boot.bin的大小。
谢谢这位朋友那么热心的解答:
现在我的情况是我 dd if=boot.bin bs=512 of=a.img count=1 conv=notrunc 用了非截断参数conv=notrunc,那么a.img应该还是原样把

#8


引用 5 楼 lgxwqq111 的回复:
之后我用mount 命令加载 sudo mount -o loop a.img /mnt/floppy 出错
===============
可以试试iso9660,man mount了下,没有发现有合适的选项

谢谢这位朋友,有空就试试

#9


引用 1 楼 lishanchao 的回复:
那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。

谢谢你,按照你的方法解决了。不过上次我也用同样的命令试过,好像有什么错误提示,我也忘了,如果遇到的话再提问了

#10


引用 1 楼 lishanchao 的回复:
那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。


顶。

#11


引用 10 楼 wenxy1 的回复:
引用 1 楼 lishanchao 的回复:

那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。


顶。

大阪也开始水了阿

#12


大版也要挣分的呀~~~

#1


那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。

#2


我是通过先mount挂载操作完毕之后在dd写入a.img,然后在通过bochs加载曲线救国的 

#3


楼主很有想法呀,呵呵,那就指定下文件系统类型呗,成功的话说一下,学习学习

#4


-fat -fat32

#5


之后我用mount 命令加载 sudo mount -o loop a.img /mnt/floppy 出错
===============
可以试试iso9660,man mount了下,没有发现有合适的选项

#6


应该是boot.bin里面没有文件系统的信息导致的,如果在boot.s最开始加上如下的代码:

jmp LABEL_START
nop
#下面是 FAT12 磁盘的头
BS_OEMName:     .ascii "HelloWLD"   # OEM String, 必须 8 个字节
BPB_BytsPerSec: .short 0x200          # 每扇区字节数
BPB_SecPerClus: .byte 0x1            # 每簇多少扇区
BPB_RsvdSecCnt: .short 0x1            # Boot 记录占用多少扇区
BPB_NumFATs:    .byte 0x2            # 共有多少 FAT 表
BPB_RootEntCnt: .short 0xE0          # 根目录文件数最大值
BPB_TotSec16:   .short HEADS*SECTORS_PER_TRACK*CYLINDERS         # 逻辑扇>区总数
BPB_Media:      .byte 0xF0         # 媒体描述符
BPB_FATSz16:    .short 0x9            # 每FAT扇区数
BPB_SecPerTrk:  .short SECTORS_PER_TRACK           # 每磁道扇区数
BPB_NumHeads:   .short HEADS            # 磁头数(面数) 
BPB_HiddSec:    .int 0x0            # 隐藏扇区数
BPB_TotSec32:   .int 0x0            # wTotalSectorCount为0时这个值记录扇区

BS_DrvNum:      .byte 0x0            # 中断 13 的驱动器号
BS_Reserved1:   .byte 0x0            # 未使用
BS_BootSig:     .byte 0x29          # 扩展引导标记 (29h)
BS_VolID:       .int 0            # 卷序列号
BS_VolLab:      .ascii "Tracy_Zhang"# 卷标, 必须 11 个字节
BS_FileSysType: .ascii "FAT12   "   # 文件系统类型, 必须 8个字节

再去mount的时候就会知道这是个FAT12的分区(以上代码有几个宏没贴出来,需要根据具体的介质来定义大小,我是用了一个10M的image:bochsrc里面有一行 ata0-master: type=disk, path="disk_10M.img", mode=flat, cylinders=20, heads=16, spt=63,来指定,然后烧到U盘里去启动的,如果是软盘的话,这几个值也是很好算出来的),如果楼主的boot.bin里这样的信息没有的话,就算指定了vfat,fat32也是没有用的。另外楼主如果想用fat32的文件系统的话,可以去查下fat32在mbr中的信息是如何存储的。
PS:楼主是如何将boot.bin dd到a.img里的? 是dd if=boot.bin of=a.img 吗?如果是这样的话,a.img就不是1.44M了,大小是boot.bin的大小。

#7


引用 6 楼 zhang19871112 的回复:
应该是boot.bin里面没有文件系统的信息导致的,如果在boot.s最开始加上如下的代码:
Assembly code

jmp LABEL_START
nop
#下面是 FAT12 磁盘的头
BS_OEMName:     .ascii "HelloWLD"   # OEM String, 必须 8 个字节
BPB_BytsPerSec: .short 0x200          # ……

PS:楼主是如何将boot.bin dd到a.img里的? 是dd if=boot.bin of=a.img 吗?如果是这样的话,a.img就不是1.44M了,大小是boot.bin的大小。
谢谢这位朋友那么热心的解答:
现在我的情况是我 dd if=boot.bin bs=512 of=a.img count=1 conv=notrunc 用了非截断参数conv=notrunc,那么a.img应该还是原样把

#8


引用 5 楼 lgxwqq111 的回复:
之后我用mount 命令加载 sudo mount -o loop a.img /mnt/floppy 出错
===============
可以试试iso9660,man mount了下,没有发现有合适的选项

谢谢这位朋友,有空就试试

#9


引用 1 楼 lishanchao 的回复:
那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。

谢谢你,按照你的方法解决了。不过上次我也用同样的命令试过,好像有什么错误提示,我也忘了,如果遇到的话再提问了

#10


引用 1 楼 lishanchao 的回复:
那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。


顶。

#11


引用 10 楼 wenxy1 的回复:
引用 1 楼 lishanchao 的回复:

那就指定文件系統,類似mount -t vfat /dev/sdb1 /mnt/usb。


顶。

大阪也开始水了阿

#12


大版也要挣分的呀~~~