Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Raspberry pi 分区';df-h中的大小与/proc/partitions中的大小完全不同_Raspberry Pi_Mount_Partition_Buildroot_Linux Df - Fatal编程技术网

Raspberry pi 分区';df-h中的大小与/proc/partitions中的大小完全不同

Raspberry pi 分区';df-h中的大小与/proc/partitions中的大小完全不同,raspberry-pi,mount,partition,buildroot,linux-df,Raspberry Pi,Mount,Partition,Buildroot,Linux Df,我正在使用buildroot为我的raspi a+构建一个定制的linux系统 使用genimage,我在1 GB SD卡上创建了两个分区。第一个分区是引导分区。它是vfat,并且32mb。第二个分区是ext4,它是rootfs,大小512MB 一旦我用新烧坏的SD卡启动raspi并键入df-h后,我在输出中得到以下信息: Filesystem Size Used Available Use% Mounted on /dev/root

我正在使用buildroot为我的raspi a+构建一个定制的linux系统

使用genimage,我在1 GB SD卡上创建了两个分区。第一个分区是引导分区。它是vfat,并且32mb。第二个分区是ext4,它是rootfs,大小512MB

一旦我用新烧坏的SD卡启动raspi并键入
df-h
后,我在输出中得到以下信息:

Filesystem                Size      Used Available Use% Mounted on
/dev/root                17.1M     14.0M      1.8M  89% /
devtmpfs                200.6M         0    200.6M   0% /dev
tmpfs                   200.7M         0    200.7M   0% /dev/shm
tmpfs                   200.7M         0    200.7M   0% /tmp
tmpfs                   200.7M      4.0K    200.7M   0% /run
正如您所看到的,
/dev/root
是17.1MB,而不是512MB

然后,我发布
cat/proc/partitions

major minor  #blocks  name

  1        0       4096 ram0
  1        1       4096 ram1
  1        2       4096 ram2
  1        3       4096 ram3
  1        4       4096 ram4
  1        5       4096 ram5
  1        6       4096 ram6
  1        7       4096 ram7
  1        8       4096 ram8
  1        9       4096 ram9
  1       10       4096 ram10
  1       11       4096 ram11
  1       12       4096 ram12
  1       13       4096 ram13
  1       14       4096 ram14
  1       15       4096 ram15
179        0     969728 mmcblk0
179        1      32768 mmcblk0p1
179        2     524288 mmcblk0p2
我们清楚地看到SD卡(mmcblk0)是1GB,引导分区(mmcblk0p1)是32MB,rootfs分区(mmcblk0p2)是512MB

因此,为了让自己确信mmcblk0p2分区可能已被重要装载,我使用
mount-text4-o rw/dev/mmcblk0p2/mnt
再次装载它,然后再次发布
df-h

Filesystem                Size      Used Available Use% Mounted on
/dev/root                17.1M     14.0M      1.8M  89% /
devtmpfs                200.6M         0    200.6M   0% /dev
tmpfs                   200.7M         0    200.7M   0% /dev/shm
tmpfs                   200.7M         0    200.7M   0% /tmp
tmpfs                   200.7M      4.0K    200.7M   0% /run
/dev/mmcblk0p2           17.1M     14.0M      1.8M  89% /mnt
我再次看到mmcblk0p2的大小是17.1MB

因此,我的问题是为什么
cat/proc/partitions
返回我的rootfs分区的预期大小而
df-h
返回完全不同的伪大小?
TL;灾难恢复:将
BR2\u目标\u ROOTFS\u EXT2\u块设置为524288。

您必须区分分区和分区上的文件系统

分区大小和偏移量在分区表中指定,您可以使用
cat/proc/partitions
查看它们。分区是使用类似于
fdisk
的工具创建的(或者当您使用Buildroot时,它通常由
genimage
创建)

文件系统大小在文件系统超级块(filesystem superblock)中指定,这是一段元数据,用于指定文件系统的大小、任何选项(例如,如果使用日志记录)、集群大小等。这是由类似
mke2fs
的工具创建的。当您直接在分区上使用
mke2fs
时,它将为文件系统使用分区的全部空间,这通常是您想要的。但是,当您在对SD卡进行分区之前创建文件系统时(通常是使用Buildroot生成映像时),必须将大小指定为
mke2fs
(cfr.the:第二个参数是
块计数

在Buildroot中,通常将映像创建为文件,而不是直接写入SD卡。这是因为SD卡的大小是未知的,而且您必须是root用户才能写入SD卡。因此,在创建文件系统时,Buildroot无法知道ext4文件系统应该有多大。在Buildroot的2017.05版本发布之前,它将尝试估计文件系统应该有多大才能容纳所有内容,并创建一个正好如此大小的文件系统。你可能处于那种情况

要解决此问题,您应该将配置变量
BR2_TARGET_ROOTFS_EXT2_BLOCKS
设置为524288
(=512MB in 1024字节块)。或者,如果您使用的Buildroot比2017.05版本更新,
BR2_TARGET_ROOTFS_EXT2_SIZE
设置为512M
(新选项以字节为单位,但允许后缀K、M、G)。

;灾难恢复:将
BR2\u目标\u ROOTFS\u EXT2\u块设置为524288。

您必须区分分区和分区上的文件系统

分区大小和偏移量在分区表中指定,您可以使用
cat/proc/partitions
查看它们。分区是使用类似于
fdisk
的工具创建的(或者当您使用Buildroot时,它通常由
genimage
创建)

文件系统大小在文件系统超级块(filesystem superblock)中指定,这是一段元数据,用于指定文件系统的大小、任何选项(例如,如果使用日志记录)、集群大小等。这是由类似
mke2fs
的工具创建的。当您直接在分区上使用
mke2fs
时,它将为文件系统使用分区的全部空间,这通常是您想要的。但是,当您在对SD卡进行分区之前创建文件系统时(通常是使用Buildroot生成映像时),必须将大小指定为
mke2fs
(cfr.the:第二个参数是
块计数

在Buildroot中,通常将映像创建为文件,而不是直接写入SD卡。这是因为SD卡的大小是未知的,而且您必须是root用户才能写入SD卡。因此,在创建文件系统时,Buildroot无法知道ext4文件系统应该有多大。在Buildroot的2017.05版本发布之前,它将尝试估计文件系统应该有多大才能容纳所有内容,并创建一个正好如此大小的文件系统。你可能处于那种情况


要解决此问题,您应该将配置变量
BR2_TARGET_ROOTFS_EXT2_BLOCKS
设置为524288
(=512MB in 1024字节块)。或者,如果您使用的Buildroot比2017.05版本更新,
BR2_TARGET_ROOTFS_EXT2_SIZE
设置为512M
(新选项以字节为单位,但允许后缀K、M、G)。

您的引导是否使用某种形式的根轴旋转?也就是说,您是否开始装载RAM映像,然后交换到根文件系统?这只是一个粗略的猜测,但是对于initramfs映像来说17M看起来是一个不错的大小,我想知道/dev/root实际上是否不再挂载在/?上不,我不使用任何形式的根旋转。我唯一的根文件系统是mmcblk0p2中的文件系统。没有initramfs之类的吗?您是否已将mmcblk支持直接编译到内核中?我之所以这样问,是因为/dev/root通常指的是initramfs,“真正的”rootfs通常被旋转到适当的位置,或者安装在/的顶部。在这两种情况下,您都会在/dev/root上留下一个initramfs,但它不起任何作用