centos 装载.img错误:文件系统类型错误、选项错误、/dev/loop 1上的超级块错误、缺少代码页或帮助程序或其他错误

35g0bw71  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(252)

我试着写一个简单的操作系统,从boot.asm开始。


# nasm boot.asm -o boot.bin

编译源代码,然后使用


# dd conv=sync if=boot.bin of=os.img bs=512 count=1

来制作一个.img文件。我用VMware运行这个img,成功开机。
现在我想把loader.bin添加到这个.img中,所以首先我使用


# losetup /dev/loop1 os.img

将其设置为循环设备。然后


# mount /dev/loop1 /tmp

。但是,出现错误:

mount: /tmp: wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error.

以下是关于os.img的一些详细信息:


# file os.img

os.img: DOS/MBR boot sector

# fdisk -l  os.img

Disk os.img: 512 B, 512 bytes, 1 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot      Start        End    Sectors   Size Id Type
os.img1          778530409 2158795926 1380265518 658.2G 42 SFS
os.img2         1145130828 2321654160 1176523333   561G 20 unknown
os.img3         1109414469 1109434509      20041   9.8M 4c unknown
noj0wjuj

noj0wjuj1#

您需要构建文件系统,请在bash/root中逐一运行以下命令。

img=diskimage.img
cd /tmp 
dd if=/dev/zero of=$img bs=1048576 count=128
fdisk $img <<< $'g\nn p\n1\n2048\n+8M\nt 1\n1\nw'

# You need to change "LOADER BIN" to "LOADER.BIN" in boot.asm. Compile loader.asm to LOADER.BIN

dd if=boot.bin of=$img conv=notrunc bs=446 count=1 
dd if=boot.bin of=$img conv=notrunc bs=1 count=2 skip=510 seek=510
loop=$(losetup --show -o $((2048*512)) --sizelimit $((16*1024*1024)) -f $img)
echo "loop device is $loop"
mkfs.vfat -F 16 -n "EFI System" $loop
mount=/tmp/boot; mkdir -p $mount
mount $loop $mount
cp LOADER.BIN $mount/ 
umount $mount
losetup -d $loop

现在您可以在VMWare中使用diskimage.img作为软盘。

相关问题