处理整个磁盘镜像文件的单个分区

从 csdn 搬移过来。

在嵌入式开发中,常参考开发板提供的原始的SD卡镜像,如:

1 $ fdisk -l ./sockit-gsrd-16.0-sdcard.img  
2 Disk ./sockit-gsrd-16.0-sdcard.img: 1.7 GiB, 1782579200 bytes, 3481600 sectors  
3 Units: sectors of 1 * 512 = 512 bytes  
4 Sector size (logical/physical): 512 bytes / 512 bytes  
5 I/O size (minimum/optimal): 512 bytes / 512 bytes  
6 Disklabel type: dos  
7 Disk identifier: 0x982b3f12  

根据自己的sd卡大小,手动分区:

 1 $ sudo fdisk -l /dev/sdb  
 2 [sudo] password for stephen:   
 3 Disk /dev/sdb: 1.9 GiB, 1997537280 bytes, 3901440 sectors  
 4 Units: sectors of 1 * 512 = 512 bytes  
 5 Sector size (logical/physical): 512 bytes / 512 bytes  
 6 I/O size (minimum/optimal): 512 bytes / 512 bytes  
 7 Disklabel type: dos  
 8 Disk identifier: 0x0eff6c7b  
 9   
10 Device     Boot   Start     End Sectors  Size Id Type  
11 /dev/sdb1          2048  526336  524289  256M  b W95 FAT32  
12 /dev/sdb2        528384 3897343 3368960  1.6G 83 Linux  
13 /dev/sdb3       3897344 3901439    4096    2M a2 unknown  

在这里,先确定sdb1和sdb3大小,进行分区,剩下的给sdb2;好了,格式化sdb1和sdb2。

 然后,复制各分区内容。

sdb3是RAW,Preloader和U-Boot总共不到1M,所以:

1 $ sudo dd if=./sockit-gsrd-16.0-sdcard.img of=/dev/sdb3 skip=3074050 bs=512 count=2048  
2 [sudo] password for stephen:   
3 2048+0 records in  
4 2048+0 records out  
5 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.923305 s, 1.1 MB/s  
6 $ sync  

然后mount image,在文件管理器中,使用 Disk Image Mounter 简单直接。

 其实文件占用空间不多,用df看看就知道了。

接下来就是 cp:

$ cp /run/media/stephen/DFFC-6E35/* /run/media/stephen/9CD0-451E/  
$ sudo cp -avx /run/media/stephen/3e0cd62a-cd24-4788-a146-93b02a913e89/* /run/media/stephen/b57ab8c3-9f55-4668-b0f0-3dcd8f4765ae/  
$ sync

umount, eject. Done.

 

 

posted @ 2017-12-01 09:09  cuclaoliu  阅读(286)  评论(0)    收藏  举报