Linuxブート用フラッシュメモリのイメージ圧縮と縮小、UUID変更とか

apt updateやファイルの削除や追加を繰り返すとファイルシステム容量は同程度でもイメージ圧縮したらやたらとファイル容量が増えている事がある

なので8GBのフラッシュメモリのイメージファイルを圧縮してみる->/dev/sdb
以下操作は極めて危険、間違っても/(ルート)へマウントされいるデバイスで行わない、ブート用フラッシュメモリだから出来るのかも!

フラッシュメモリのゼロクリア
dd if=/dev/zero of=/dev/sdb bs=100M count=80

原本イメージファイルの先頭をコピー
dd if=IOT-House_old_pc_0.01.img of=/dev/sdb bs=100M count=1

ファイルシステムを再度作成
mkfs.ext4 /dev/sdb1 ->新UUIDが作成される
新UUIDの確認
blkid
/dev/sdb1: UUID=”99c77a0d-06ac-477d-bd14-XXXXXXXXXXXX” TYPE=”ext4″

source/ 以下のシステムファイルを全コピー(事前にsource/にブート出来る全ファイルが有ると仮定)
mount /dev/sdb1 hdd/
cp -ap source/* hdd

fstabのUUIDを書き換え
cp hdd/etc/fstab .
vi fstab
# /etc/fstab: static file system information.
#
# Use ‘blkid’ to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb1 during installation
UUID=99c77a0d-06ac-477d-bd14-XXXXXXXXXXXX / ext4 errors=remount-ro 0 1

grub設定ファイルのUUID書き換え
cp hdd/boot/grub/grub.cfg .
chmod +w grub.cfg
vi grub.cfg
set root=’hd0,msdos1′
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,
msdos1 –hint-baremetal=ahci0,msdos1 XXXXXXXX-6cb0-45a1-a45c-0b5f8cd84a73
else

esc
:%s/XXXXXXXX-6cb0-45a1-a45c-0b5f8cd84a73/99c77a0d-06ac-477d-bd14-XXXXXXXXXXXX/g

27 substitutions on 27 lines
escZZ

chmod -w grub.cfg
cp fstab hdd/etc/fstab
cp grub.cfg hdd/boot/grub/grub.cfg
sync
umount hdd/

再起動後
update-grub

7zrでイメージ圧縮後の比較、今回は1.4GB->1.1GB
-rw-r–r– 1 root root 1406841479 5月 11 15:24 20210511_IOT-House_old_pc_0.01.7z
-rw-r–r– 1 root root 1124491210 5月 15 13:55 IOT-House_old_pc_0.01.7z

Follow me!

IOT

次の記事

WindowsとMACでIOTをする