Outils pour utilisateurs

Outils du site


techniques:resize_an_img_file

Resize a raw image file for rbpi

# E1 : create a blank image, of the size you want to expand the original (in my example I use 5GB)
dd if=/dev/zero of=/path/to/temp_image bs=1048576 count=5000
# E2 : append this to the original image (rasperrypi.img)
cat /path/to/temp_image >> /path/to/rasperrypi.img
# E3 : resize the filesystem that lives at the end of the disk (usually this is the one you want bigger)
resize2fs -f /path/to/rasperrypi.img

Done! Your disk should now be 5GB bigger!

Resize raspbian partition on a rbpi sdcard

Explanation

What we resize is the RASPBIAN partition. Each rasperrypi pi raspbian sdcard is structured with such a structure :

  • a MS-DOS partition
  • a RASPBIAN partition

For example, my RBPI2 sdcard is structured like this :

  + Fat16 (0xc) : Contains              : windows file and sdcard/os boot process (BIOS equivalent)
	          first physical sector : 8192
	          last physical sector  : 122879
 
  + Ext4 (83)   : Contains              : raspbian OS, that will be booted
	          first physical sector : 122880
	          last physical sector  : 31152128

Remarque : Ici, les secteurs font 512octets.
⇒ La partition MS-DOS fait (122879-8192)*512=58.719 Mo environ
⇒ La partition RASPBIAN fait (31152128-122880)*512=15.9 Go environ

En effet, mes images de carte SD tenaient sur une clé de 16Go.

Pour aggrandir la partition RASPBIAN, il faut biensur comme prérequis avoir un SDCard qui était dans un RBPI. If you don't have one, use Rufus to burn the existing rasperrypi image (of whole sdcard) on a biggest sdcard.

Plug your sdcard on a linux PC, use GParted to resize Ext4 partition. Once done, put your sdcard back to your RBPI.

Backup a RBPI sdcard

OUTFILE=....._backup_sdcard_allparts_mmcblk0p2_et_mmcblk0p1.img
  ...
EMPTY_SPACE_AFTER=1000000
STARTP2=`sudo blockdev --report /dev/mmcblk0p2 | grep /dev/mmcb | sed -e "s/\s\+/ /g" | cut -d' ' -f5`
SIZEP2=`sudo blockdev --getsize64 /dev/mmcblk0p2`;
COUNT=1000000
SDSIZEINBYTE=$(($STARTP2+$SIZEP2+$EMPTY_SPACE_AFTER))
SDSIZE=$(( $SDSIZEINBYTE/$COUNT ))
sudo pv -tpreb /dev/mmcblk0 -s $SDSIZEINBYTE | dd of=$OUTFILE bs=$SDSIZE count=$COUNT

⇒ Constuit une image du disque allant de l'octet 0 à EMPTY_SPACE_AFTER après la fin de la partition /dev/mmcblk0p2.

ou, alors plus simplement :

sudo pv -tpreb /dev/mmcblk0 -s $SDSIZE | dd of=$OUTFILE bs=1M conv=sync,noerror iflag=fullblock

Resize a raw image file for linuxDeploy

# E1. Install and launch terminal emulator on your smartphone
# E2. resize the linux image (linux.img)  (ajoute 1Go)
dd if=/dev/zero bs=1048576 count=1000 >> /data/media/0/linux.img
 
# E3. check filesystem
e2fsck -f /data/media/0/linux.img
# E4. resize the filesystem
resize2fs /data/media/0/linux.img

Done! Your disk should now be 1GB bigger!

Annexes : deal with linux deploy image on smartphone with a PC

On your smartphone, install “SSH server” apk, launch it, and make it listen on port 44444. Make your smartphone connect to your local network (your FAI box).

A1 : Get linux deploy image file on your smartphone

  scp -P 44444 xavier@<IpAndroidPC>:/sdcard/linux.img.orig /home/pi/

A2 : Remove linux.img.orig on your smartphone

  ssh -p 44444 xavier@192.168.1.86
  cd sdcard
  rm linux.img.orig

A3 : Push enhanced linux deploy image on your smarphone

  scp -P 44444 /home/pi/linux.img.orig  xavier@<IpAndroidPC>:/sdcard/linux.img.orig
techniques/resize_an_img_file.txt · Dernière modification: 2020/10/03 12:13 (modification externe)