![dd 命令指示磁盘空间不足 - 尝试为树莓派格式化 SD 卡](https://linux22.com/image/106757/dd%20%E5%91%BD%E4%BB%A4%E6%8C%87%E7%A4%BA%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3%20-%20%E5%B0%9D%E8%AF%95%E4%B8%BA%E6%A0%91%E8%8E%93%E6%B4%BE%E6%A0%BC%E5%BC%8F%E5%8C%96%20SD%20%E5%8D%A1.png)
我一直在尝试用最新的格式化SD卡debian jessie-lite与树莓派一起使用的图像。使用dd命令时,它指出复制10兆后设备上没有剩余空间。我搜索过 SE 并尝试使用各种问题的答案,但我总是回到同一个地方。以下是您可能感兴趣的 dd、fdisk、df 和 ls 命令的输出。
/dev/sdb 是 sd 卡
dd bs=4M if=/home/user/Downloads/2017-02-16-raspbian-jessie-lite.img of=/dev/sdb
dd: error writing ‘/dev/sdb’: No space left on device
3+0 records in
2+0 records out
10485760 bytes (10 MB) copied, 0.0137885 s, 760 MB/s
fdisk -l /dev/sdb
Disk /dev/sdb: 10 MiB, 10485760 bytes, 20480 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: 0xdbcc7ab3
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 137215 129024 63M c W95 FAT32 (LBA)
/dev/sdb2 137216 2807807 2670592 1.3G 83 Linux
ls -al /dev/sdb*
-rw-r--r-- 1 root root 10485760 Mar 3 22:04 /dev/sdb
brw-rw---- 1 root disk 8, 17 Mar 3 22:05 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Mar 3 22:05 /dev/sdb2
brw-rw---- 1 root disk 8, 19 Mar 3 22:05 /dev/sdb3
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 226G 7.3G 207G 4% /
udev 10M 10M 0 100% /dev
tmpfs 1.6G 9.3M 1.6G 1% /run
tmpfs 3.9G 112K 3.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 792M 4.0K 792M 1% /run/user/119
tmpfs 792M 8.0K 792M 1% /run/user/1000
答案1
-rw-r--r-- 1 root root 10485760 Mar 3 22:04 /dev/sdb
/dev/sdb
是常规文件,而不是设备。你一定rm /dev/sdb
在某个时刻跑步过。它是在插入设备时自动创建的,但是当您以 root 身份运行命令时,您可能会弄乱它。现在这/dev/sdb
是一个常规文件,它存储在内存中的文件系统上,该文件系统的大小限制较低,因为它仅包含设备文件没有这样的内容,因为它们只是“调用此设备驱动程序来存储内容”的标记。
删除该文件(rm /dev/sdb
以 root 身份)。然后,要重新创建正确的文件/dev/sdb
,最简单的方法是弹出 SD 卡并将其重新插入。完成此操作后,您可以使用您正在使用的命令复制图像,或者简单地
</home/user/Downloads/2017-02-16-raspbian-jessie-lite.img sudo tee /dev/sdb >/dev/null
答案2
我还得到了“空间不足”的信息,但那是因为我从 iso 映像设备转储 (dd) 到分区 /dev/sdb1,该分区太小了!而且它永远无法启动! 4 年后我添加了这条评论,因为一个答案弄错了如果你想要一个可启动的 USB 记忆棒该怎么办,因此我对此做了一些详细的阐述:
如果您有一个 USB 记忆棒 /dev/sdb(或 sdc、sdf,等等),您可以使用 dd 命令(或 cat)从 iso-boot-image(通常具有 iso9660 分区)制作可启动磁盘
dd if=/distfiles/debian-11.1.0-amd64.iso of=/dev/sdb bs=4M
最后一个参数 bs=4M 不是必需的,它只是为了速度。请注意,创建了分区 sdb1,也可能创建了 sdb2 abd(甚至更多分区)。
检查它是否存在:
ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 32 Oct 22 20:59 /dev/sdb
brw-rw---- 1 root disk 8, 33 Oct 22 20:40 /dev/sdb1
brw-rw---- 1 root disk 8, 34 Oct 22 20:33 /dev/sdb2`
第一列中的 b 显示它们是块设备(“磁盘”)。在本例中,iso 映像上有 2 个分区!然后你可以安装它:
mount /dev/sdb1 /nod1
df -mT /nod1
/dev/sdb1 iso9660 378 378 0 100% /nod1
如果您想将 iso 映像存储在磁盘或 USB 记忆棒上,但不作为启动 USB 记忆棒,则使用 USB 记忆棒上现有的文件系统(分区)(也许使用 mkfs 或 easist 对其进行格式化,使用分区编辑器)然后挂载该分区
mount /dev/sdb1 /nod1
df -mT /nod1
Filesystem Type 1M-blocks Used Available Use% Mounted on
/dev/sdc1 vfat 14844 6935 7910 47% /nod1
那么如果你想存储 iso img 供以后使用,你可以这样做:
dd if=/distfiles/debian-11.1.0-amd64.iso of=/nod1
(但请注意,您不能从 USB 记忆棒启动它)
(据我所知。也许将来可能?!:)
现在,如果您列出设备的分区,它们仍然是 fx.ext2 或 vfat 分区,而不是 iso9660,并且会有一个文件称为 debian-11.1.0-amd64.iso
答案3
要写入映像,您需要格式化分区。/dev/sdb
是你的设备。您有两个分区,/dev/sdb1
并且/dev/sdb2
.所以命令是:
dd bs=4M if=/home/user/Downloads/2017-02-16-raspbian-jessie-lite.img of=/dev/sdb2