resize2fs: Operation not permitted While trying to add group #25
嵌入式平台,在pc上制作好ext4 rootfs.img,然后烧写到嵌入式设备emmc上
1. 制作ext4 img使用命令
make_ext4fs -l 2200M -L ROOTFS rootfs.img rootfs/制做一个2.2G的rootfs.img, Lable为:ROOTFS
2. 命令 resize2fs /dev/mmcblk0p3,目的是为了扩容,出现以下问题
为什么要执行以下命令,因为mmcblk0p3分区大于rootfs.img大小,想要充分利用空闲空间root@3559a-demo:~# resize2fs /dev/mmcblk0p3
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mmcblk0p3 to 3670016 (4k) blocks.
resize2fs: Operation not permitted While trying to add group #25
kernel log:[67518.949653] EXT4-fs warning (device mmcblk0p3): reserve_backup_gdb:968: reserved block 144 not at offset 143
[67518.949670] EXT4-fs (mmcblk0p3): resized filesystem to 3670016
[67518.976268] EXT4-fs warning (device mmcblk0p3): ext4_group_add:1605: No reserved GDT blocks, can't resize
3. 从内核log是来看,是因为No reserved GDT block不够用,导致resize失败
root@3559a-demo:~# dumpe2fs /dev/mmcblk0p3
dumpe2fs 1.42.13 (17-May-2015)
Filesystem volume name: ROOTFS
Last mounted on: /
Filesystem UUID: 03d6de4c-f8cc-185f-a500-0e4c1efbf842
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode filetype needs_recovery extent sparse_super large_file uninit_bg
Filesystem flags: unsigned_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Remount read-only
Filesystem OS type: Linux
Inode count: 195600
Block count: 819200
Reserved block count: 255
Free blocks: 246460
Free inodes: 149798
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 143
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 7824
Inode blocks per group: 489
Last mount time: Wed Sep 11 13:08:29 2019
Last write time: Wed Sep 11 13:23:12 2019
Mount count: 4
Maximum mount count: -1
Last checked: Thu Jan 1 00:00:00 1970
Check interval: 0 ()
Lifetime writes: 140 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: tea
Journal backup: inode blocks
Journal features: journal_incompat_revoke
Journal size: 343M
Journal length: 88000
Journal sequence: 0x0000009c
Journal start: 536
Reserved GDT blocks: 143
共保留了143个block, 然而 Group describe大小为32bytes, 那么1个BLOCK为4096bytes,
4096/32 = 128, 一个block 可以保存128组 Group describe(组描述符),所以143个GDT block已经足够使用,那么这个错误是什么引起的呢
4. 尝试解决方案
(1)有人说是Journal size小引起的,在制作 rootfs.img时可以指定大一点的Journal size,参数为-j
(make_ext4fs -l 2200M -L ROOTFS rootfs.img rootfs/ -j 88000)约指定343M,已足够使用,然而还有上面扩容的问题。
(2)有人说是GDT不足引起的,尝试修改源码增加GDT reserver数量,修改为512, 问题依旧。
5. 使用make_ext4fs做的rootfs.img,有问题没有解决,目前正在探索,可能跟制做参数有问题,也可能是其他问题。
6. 使用以下方法解决resize2fs 问题
换一种方式,可以resize成功。原因为知。。。。
1. 空的文件,根据所需创建
dd if=/dev/zero of=rootfs.img bs=1M count=2200
2. 格式化rootfs.img 为ext4
losetup /dev/loop3 rootfs.img
mkfs.ext4 /dev/loop3
3. 拷贝你所需的所有文件到到ext4 rootfs.img
mount /dev/loop3 /mnt
cp file /mnt
umount /mnt
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
