You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSL Ubuntu执行make时遇mcopy错误:No directory slots

解决WSL Ubuntu中mcopy "No directory slots"错误

针对你在WSL Ubuntu中制作FAT12软盘镜像时遇到的mcopy报错问题,以下是几种可行的解决思路:

1. 强制指定FAT12根目录项数

默认情况下mkfs.fat创建的FAT12镜像可能因WSL环境差异,导致根目录槽位识别异常。可以手动指定1.44MB软盘标准的根目录项数(224项),修改Makefile中的mkfs.fat命令:

mkfs.fat -F 12 -n "IZOS" -R 224 $(BUILD_DIR)/main_floppy.img

2. 改用挂载镜像的方式复制文件

避免mtools直接访问镜像的潜在问题,通过losetup挂载镜像后用普通cp命令复制:
修改Makefile中main_floppy.img的生成规则:

$(BUILD_DIR)/main_floppy.img: bootloader kernel
    dd if=/dev/zero of=$(BUILD_DIR)/main_floppy.img bs=512 count=2880
    mkfs.fat -F 12 -n "IZOS" $(BUILD_DIR)/main_floppy.img
    dd if=$(BUILD_DIR)/bootloader.bin of=$(BUILD_DIR)/main_floppy.img conv=notrunc
    # 挂载镜像并复制kernel.bin
    sudo losetup /dev/loop0 $(BUILD_DIR)/main_floppy.img
    sudo mkdir -p /mnt/floppy
    sudo mount /dev/loop0 /mnt/floppy
    sudo cp $(BUILD_DIR)/kernel.bin /mnt/floppy/kernel.bin
    sudo umount /mnt/floppy
    sudo losetup -d /dev/loop0

注意:执行此操作需要sudo权限,可能需要输入用户密码。

3. 切换WSL内部文件系统存放镜像

如果你的BUILD_DIR位于Windows挂载目录(如/mnt/c/xxx),NTFS文件系统的特性可能干扰镜像文件的二进制读取。将BUILD_DIR改为WSL内部路径(如~/build),重新执行make。

4. 替换mtools为fatcopy工具

安装fatcopy替代mtools:

sudo apt install fatcopy

然后修改Makefile中的mcopy命令为:

fatcopy $(BUILD_DIR)/kernel.bin $(BUILD_DIR)/main_floppy.img::kernel.bin

内容的提问来源于stack exchange,提问作者xunleqitrazer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:43:15