anatsuk1のウェブログ

ブログを書いてみたい!

Raspberry PiでMicroSDを使いたい

SDカードリーダーの購入

2枚のmSDを同時に書き換えたい。ビックカメラのカメラ売り場にある、mSDカードとカードリーダーを詳しく形状、仕様、を見ていたら、UHS-IIのカードリーダーが買いたくなった。機能を確かめると mSDを同時書き換え可能なリーダーで安心する。カラーは青が良い。残念なことに1つはSDのデュアルスロット。変換アダプターを使って対応する。

帰宅した後、風見鶏の楽天市場点で、有名なLexorが販売しているmSDとSDの同時読み書き可能な、形が三角形でカッコいいリーダーを購入する。こちらはUHS-I対応です。

カードのフォーマット

リムーバルディスクはexFATでフォーマットしたい。 fdiskとmkfsコマンドでする。

exFATモジュールをインストール

Raspberry Piは標準ではexFATファイルシステムを認識しない。モジュールをインターネットからインストールする。

コマンド実行

sudo apt install exfat-fuse exfat-utils

mSDのデバイスの名前を調べる

lsblkコマンドでmSDのデバイスの名前を調べる。パーティションのUUIDを知りたい、oオプションで指定する。初期表示に追加、+指示を使う。

コマンド実行

lsblk -o +UUID

コマンド出力(一部マスクする)

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT         UUID
sda           8:0    1 xxx.xG  0 disk 
mmcblk0     179:0    0  59.6G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot              xxxx-xxxx
└─mmcblk0p2 179:2    0  59.4G  0 part /                  xxxxxxxx-yyyy-xxxx-yyyy-xxxxxxxxxxxx

パーティション新規作成

パーティションを作成して、フォーマットの準備をする。 fdiskコマンドは対話式で、指示を複数回、入力する。

コマンド実行

sudo fdisk /dev/sda

コマンド出力

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): 

fdiskコマンドでの対話

o を入力して、パーティションテーブルを作成
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x8645c72b.

m を押して、helpを確認してみると、 o 指示はDOSパーティションテーブルの作成と分かる。

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table
n を入力して、パラメータを対話式に選択して、パーティションを新規作成
Command (m for help): n

プライマリパーティションに設定

デフォルトを選択するので、文字入力なしにリターンキーを押す。

Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.

パーティション番号を1、開始セクタ、終了セクタを最大する

デフォルトを選択するので、文字入力なしにリターンキーを押す。

Partition number (1-4, default 1): 
First sector (2048-60825599, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60825599, default 60825599): 
Created a new partition 1 of type 'Linux' and of size XX GiB.

パーティション番号1にファイルシステムシグネチャが含まれると、警告が表示される。入力は y でも n でもどちらでも良い。 後ほどパーティションをフォーマットするので。

Partition #1 contains a exfat signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
t を入力して、パーティションタイプをexFATにする
Command (m for help): t

7を入力して、HPFS/NTFS/exFAT(0x07)を選択する。

Hex code (type L to list all codes): 7
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.
w を入力して、変更をmSDに反映。
Command (m for help): w
The partition table has been altered.
Syncing disks.

パーティションをフォーマット

作成したパーティションexFATでフォーマット。LABELを付けて、PCでのmSDの名前にする。

コマンド実行

sudo mkfs.exfat /dev/sdb1 -n "SONY ALPHA7III"

コマンド出力

mkexfatfs 1.3.0
Creating... done.
Flushing... done.
File system created successfully.

フォーマット指定誤り

コマンドで誤ってデバイスを指定すると、デバイスがフォーマットされる。パーティションテーブルは上書き破壊される。

sudo mkfs.exfat /dev/sdb -n "SONY ALPHA7III"

回復したいので、ローレベルフォーマットをddコマンドで実施して、fdiskでパーティションテーブルを作成する。

sudo dd if=/dev/zero of=/dev/sda bs=16M
sudo fdisk /dev/sda