转载时请注明出处和作者联系方式
文章出处:http://blog.youkuaiyun.com/jack0106
作者联系方式:冯牮 fengjian0106@yahoo.com.cn
最近看内核驱动,想在chroot环境下自己编译meego的内核玩玩,结果碰到个问题,chroot使用的img镜像文件太小了,编译内核的时候img中的空间不够用。上网google了一番,找到解决方法。好记性不如烂笔头,在此记录一下。
原贴请看 http://www.manyco.com/02/001.htm
说明:
加入add.img就是我们要增加的空间大小50M
old.img就是我需要增加空间的img文件,原先为100M
准备工作:原先old.img有个文件manyco.txt,内容为"hello,manyco.com"
[root@manyco ~]# losetup /dev/loop0 /old.img
[root@manyco ~]# mount /dev/loop0 /tmp
[root@manyco ~]# cd /tmp
[root@manyco tmp]# ls
lost+found
[root@manyco tmp]# echo "hello,manyco.com" > manyco.txt
[root@manyco tmp]# cat manyco.txt
hello,manyco.com
正式开始:
1.创建一个50M大小的文件
[root@manyco tmp]#dd if=/dev/zero of=/add.img bs=1M count=50
2. 把这个文件关联成一个块设备,losetup就是干这件事情的
因为把它关联成块设备,我们好格式化个
[root@manyco tmp]#losetup /dev/loop0 /add.img
3. 查看关联是否成功
[root@manyco tmp]# losetup -a
/dev/loop0: [fd00]:173960 (/add.img)
4. 把它格式化成ext3文件系统
[root@manyco tmp]#mkfs.ext3 /dev/loop0
5,卸载关联关系,再查看
[root@manyco tmp]#losetup -d /dev/loop0
[root@manyco tmp]#losetup -a
6.给原img文件增加空间
注意:这里是>>符号来追加,不是>,>是新写入!!
[root@manyco tmp]#cat /add.img >> /old.img
7. 扫描检查
[root@manyco tmp]#e2fsck -f /old.img
8. 重新设置其大小属性,到这一步为止我们的工作的可以结束了
但是作为一名有经验的高级研发人员,我们还得进行
[root@manyco tmp]#resize2fs /old.img
9,开始检查正确性
[root@manyco ~]# losetup /dev/loop0 /old.img
#要把这个虚拟的块设备mount到一个文件系统/tmp
[root@manyco ~]# mount /dev/loop0 /tmp
[root@manyco]cd /tmp
10,创建一个比原old.img空间大的文件,看看能否成功,如果能表明我们的做法OK了
如果不能,你还得继续排查
[root@manyco tmp]# dd if=/dev/zero of=11.img bs=1M count=130
130+0 records in
130+0 records out
136314880 bytes (136 MB) copied, 12.2855 seconds, 11.1 MB/s
[root@manyco tmp]# [root@manyco tmp]# du -lh
12K ./lost+found
131M .
OK,we are success!!!