在嵌入式学习之QT学习—11 QT系统移植之构建文件系统的第六步整理最小文件系统时,本是没有遇到大的问题的{都是根据手册(【北京迅为】QT学习手册v1.0.pdf的3.3节搭建qt文件系统)上一步一步执行的,也没什么技术性可言}
想着马上就可以制作好文件系统镜像啦,但是!这个时候报错了,记录一下遇到的问题吧。
执行完下面这条语句之后,报错信息为:error: do_inode_allocate_extents: Failed to allocate 1146 blocks
root@ubuntu:/home/topeet/Linux+QtE5.7# make_ext4fs -s -l 314572800 -a root -L linux system.img root
Creating filesystem with parameters:
Size: 314572800
Block size: 4096
Blocks per group: 32768
Inodes per group: 6400
Inode size: 256
Journal blocks: 1200
Label: linux
Blocks: 76800
Block groups: 3
Reserved block group size: 23
error: do_inode_allocate_extents: Failed to allocate 1146 blocks
虽然报错了,但还是生成了想要的镜像文件。然后从文件夹里面去看一下生成的镜像文件的属性,看到大小是0字节,呐,这不就是妥妥的做错了么,还是把它删了吧。
root@ubuntu:/home/topeet/Linux+QtE5.7# ls
root system.img
root@ubuntu:/home/topeet/Linux+QtE5.7# rm system.img
查了很多资料,还是不会解决这个问题,后来还是被我看穿了,就是分配的空间不够导致的。来计算一下命令中的“314572800”是多大的内存。
314572800/1024=307200,单位是B
307200/1024=300兆
意思是给分配了300兆的空间,试一下给它分配大一点的空间,比如1G
,那就是1024M x 1024 x 1024=1073741824
,把命令中的数字改成这个试一下,如下所示:
root@ubuntu:/home/topeet/Linux+QtE5.7# make_ext4fs -s -l 1073741824 -a root -L linux system.img root
Creating filesystem with parameters:
Size: 1073741824
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 4096
Label: linux
Blocks: 262144
Block groups: 8
Reserved block group size: 63
Created filesystem with 17801/65536 inodes and 120688/262144 blocks
ok,这下运行成功了。从文件夹里面去查看一下system.img的属性,发现其大小是四百多兆的,所以就是给分派的空间太小了。
这个问题是解决啦,新的问题又来了。当我用SSH软件将生成的镜像文件拷贝到烧写镜像文件夹(USB_fastboot_tool)开始烧写时,刚开始比较正常,但是system.img烧写到一半那个超级终端就卡住了,不会动了。emmm,大概是对文件系统的分区配置有问题吧,暂时不会解决这个问题,就先放一放,暂且不给开发板烧写qt5.7系统了。