ここまで環境設定をいろいろやってきました。
しかし、機能的には何も嬉しい事をしてません。
ここからは、いろいろインストールしたりとかしようと思っていますが、一旦ここでこの環境をセーブしておきたいと思います。
何か失敗してやり直したいと思うかも知れませんし、ファイルシステム破損してしまった時とかに、再度環境構築するのは面倒くさいですし、、、
本当のところは、現在使っているclass 4のmicro SDカードからclass 10のmicro SDカードに引越してみて、起動時間がどうなるか見てみたい、というのが一番だったりするのですが。。。
単純にディスクイメージを吸い出すだけでもいいのですが、それだとmicroSDのサイズのディスクイメージが出来てしまいます。
(32GBのmicroSDを使用していると使用/未使用を問わず32GBのディスクイメージファイルになります。)
圧縮すれば未使用部分は縮むのですが、それでも個人的にはディスクイメージファイル自体に縮んでいて欲しいのです。(容量の小さいmicroSDに引越し出来ないし)
ディスクイメージの引越しについて、ディスクイメージを弄くり倒して行なう別解を用意しました。
(ホストマシンに直接カードリーダが繋げない、gparted使えない、などの環境でも引越し可能なはずです。)
◆ rootfs パーティションを縮小
まず、Linux ホストマシンに Raspberry Pi で使用していたmicroSDを挿します。
以前に Linux Mint の仮想環境をVirtualBoxで作成したので、今回はそれを使おうと思います。
Linux ホストマシンで gparted を使用します。ないならインストールします。
gparted を使用し、Raspberry Pi の rootfs パーティション(2個目のパーティション)を適当なサイズに縮小します。
◆ ディスクイメージの出力
Raspberryp Pi 用microSD が /dev/sdb として認識されているものとして以下、記載します。
ここで、二個目のパーティションの終点の数値が最終セクタ番号になります。
なので、サイズとしては +1 した値を指定します。
◆ディスクイメージをマウントする
この時に表示された loop デバイスを使用します。(この例では loop0 を使用します)
下記のようにすることで、Raspberry Pi 用のディスクイメージの rootfs パーティションを /mnt/ にマウントできます。
せっかくマウントしたので、中をいじってみたいと思います。
bashの履歴ファイルを削除しておきましょう。
キャッシュもたぶん消しても大丈夫と思います。
(debconf ディレクトリは残しておいた方がよさそうです。apt 時に何かワーニング出ました。。。)
ディスクイメージの圧縮時に圧縮率が高まるように、未使用領域をゼロ埋めしておきます。
(下記のように実行することで空き容量がなくなるまで、中身が0で埋まったdummyというファイルを作成しています)
◆ディスクイメージをアンマウントする
◆おまけ1
Win32DiskImager で普通にディスクイメージを吸い出してもいいと思います。
上記を参考に、応用すれば必要部分のみのディスクイメージにすることが出来ます。
gparted は、コマンドラインで起動する場合、パラメータにデバイス意外にもイメージファイルを指定することができます。(イメージファイルの場合は、リサイズは出来ませんが...)
また、下記のようにすることで、イメージファイルを必要部分のみ切り出すことができます。
◆おまけ2
ちにみにclass 4のmicro SDカードからclass 10のmicro SDカードに変えてみましたが、起動時間は3秒ほど早くなっただけでした。(もう少し期待してたんですが。)
今回作成したディスクイメージは dd コマンド、または Win32DiskImager で microSD に書き込むことで、環境をいつでもリストア出来ます。
次回からは、心おきなく Raspberry Pi をいじくることが出来ますね。
しかし、機能的には何も嬉しい事をしてません。
ここからは、いろいろインストールしたりとかしようと思っていますが、一旦ここでこの環境をセーブしておきたいと思います。
何か失敗してやり直したいと思うかも知れませんし、ファイルシステム破損してしまった時とかに、再度環境構築するのは面倒くさいですし、、、
本当のところは、現在使っているclass 4のmicro SDカードからclass 10のmicro SDカードに引越してみて、起動時間がどうなるか見てみたい、というのが一番だったりするのですが。。。
単純にディスクイメージを吸い出すだけでもいいのですが、それだとmicroSDのサイズのディスクイメージが出来てしまいます。
(32GBのmicroSDを使用していると使用/未使用を問わず32GBのディスクイメージファイルになります。)
圧縮すれば未使用部分は縮むのですが、それでも個人的にはディスクイメージファイル自体に縮んでいて欲しいのです。(容量の小さいmicroSDに引越し出来ないし)
ディスクイメージの引越しについて、ディスクイメージを弄くり倒して行なう別解を用意しました。
(ホストマシンに直接カードリーダが繋げない、gparted使えない、などの環境でも引越し可能なはずです。)
◆ rootfs パーティションを縮小
まず、Linux ホストマシンに Raspberry Pi で使用していたmicroSDを挿します。
以前に Linux Mint の仮想環境をVirtualBoxで作成したので、今回はそれを使おうと思います。
Linux ホストマシンで gparted を使用します。ないならインストールします。
$ sudo apt-get install gparted
gparted を使用し、Raspberry Pi の rootfs パーティション(2個目のパーティション)を適当なサイズに縮小します。
◆ ディスクイメージの出力
Raspberryp Pi 用microSD が /dev/sdb として認識されているものとして以下、記載します。
$ sudo fdisk -l /dev/sdbとすると、
デバイス ブート 始点 終点 ブロック Id システムというように表示されたとします。
/dev/sdb1 2048 262143 130048 6 FAT16
/dev/sdb2 262144 5439487 2588672 83 Linux
ここで、二個目のパーティションの終点の数値が最終セクタ番号になります。
なので、サイズとしては +1 した値を指定します。
$ sudo dd if=/dev/sdb of=/media/sf_shared/raspi.img count=5439488 bs=512これでディスクイメージファイルが /media/sf_shared/raspi.img として出力されます。
◆ディスクイメージをマウントする
$ sudo kpartx -v -a /media/sf_shared/raspi.imgとすると、下記のような表示が出ると思います。
この時に表示された loop デバイスを使用します。(この例では loop0 を使用します)
add map loop0p1 (252:0): 0 260096 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 5177344 linear /dev/loop0 262144
下記のようにすることで、Raspberry Pi 用のディスクイメージの rootfs パーティションを /mnt/ にマウントできます。
$ sudo mount /dev/mapper/loop0p2 /mnt/◆ディスクイメージの中身を編集
せっかくマウントしたので、中をいじってみたいと思います。
bashの履歴ファイルを削除しておきましょう。
$ rm /mnt/home/pi/.bash_history
$ touch /mnt/home/pi/.bash_history
キャッシュもたぶん消しても大丈夫と思います。
(debconf ディレクトリは残しておいた方がよさそうです。apt 時に何かワーニング出ました。。。)
$ sudo rm -rf /mnt/var/cache/*
$ sudo mkdir /mnt/var/cache/debconf/
ディスクイメージの圧縮時に圧縮率が高まるように、未使用領域をゼロ埋めしておきます。
(下記のように実行することで空き容量がなくなるまで、中身が0で埋まったdummyというファイルを作成しています)
$ sudo dd if=/dev/zero of=/mnt/dummy bs=4096
$ sudo rm /mnt/dummy
◆ディスクイメージをアンマウントする
$ sudo umount /mnt/
$ sudo kpartx -d /media/sf_shared/raspi.img
◆おまけ1
Win32DiskImager で普通にディスクイメージを吸い出してもいいと思います。
上記を参考に、応用すれば必要部分のみのディスクイメージにすることが出来ます。
gparted は、コマンドラインで起動する場合、パラメータにデバイス意外にもイメージファイルを指定することができます。(イメージファイルの場合は、リサイズは出来ませんが...)
$ sudo gparted イメージファイル
また、下記のようにすることで、イメージファイルを必要部分のみ切り出すことができます。
$ sudo dd if=イメージ1 of=イメージ2 count=必要セクタ数 bs=512
◆おまけ2
ちにみにclass 4のmicro SDカードからclass 10のmicro SDカードに変えてみましたが、起動時間は3秒ほど早くなっただけでした。(もう少し期待してたんですが。)
今回作成したディスクイメージは dd コマンド、または Win32DiskImager で microSD に書き込むことで、環境をいつでもリストア出来ます。
次回からは、心おきなく Raspberry Pi をいじくることが出来ますね。