新品のMicroSD等をLinuxでマウントする際の手順メモ

前書き
-
新品のMicroSDカードをLinuxでマウントした際の手順メモ

新品のMicroSD等を挿入した時のデバイス名を確認
-

```cmd:実行コマンド&ログ
/home/user/source# dmesg
[ 4387.255594] vccio_sd: unsupportable voltage range: 3300000-3000000uV
[ 4387.290541] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[ 4388.085171] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0)
[ 4388.095117] mmc0: new high speed SDHC card at address 1234
[ 4388.105045] mmcblk0: mmc0:1234 SA08G 7.43 GiB
[ 4388.113590]  mmcblk0:
```
挿入したMicroSDをmmcblk0として認識している


パーティション分割
-

```cmd:実行コマンド&ログ
/home/user/source# fdisk /dev/mmcblk0

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


Command (m for help): n  ######新規パーティションを作成######
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p ######プライマリパーティションを指定######
Partition number (1-4, default 1): 1  ######パーティションは全領域を使うので1つ######
First sector (2048-15572991, default 2048): 2048  ######デフォルト指定######
Last sector, +sectors or +size{K,M,G,T,P} (2048-15572991, default 15572991): 15572991  ######デフォルト指定######

Created a new partition 1 of type 'Linux' and of size 7.4 GiB.

Command (m for help): t ######システムIDを指定する######
Selected partition 1 ######パーティション1を指定######
Partition type (type L to list all types): L ######パーティションの一覧を確認したい場合は、Lで確認######

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT
Partition type (type L to list all types): b ######約8GのMicroSDなのでFAT32(CHS)を指定######
Changed type of partition 'Linux' to 'W95 FAT32'.

Command (m for help): p ######設定内容を確認する######
Disk /dev/mmcblk0: 7.4 GiB, 7973371904 bytes, 15572992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaec7a37e

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       2048 15572991 15570944  7.4G  b W95 FAT32

Command (m for help): w  ######書き込んで終了######
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
```


先頭パーティション mmcblk0p1が/dev配下に出現
-

```cmd:実行コマンド&ログ
/mnt# ll /dev/mmcblk
mmcblk0       mmcblk1       mmcblk1boot1  mmcblk1p10    mmcblk1p3     mmcblk1p5     mmcblk1p7     mmcblk1p9
mmcblk0p1     mmcblk1boot0  mmcblk1p1     mmcblk1p2     mmcblk1p4     mmcblk1p6     mmcblk1p8     mmcblk1rpmb
```

mkfs.vfatコマンドでフォーマット
-

```cmd:実行コマンド&ログ
/mnt# mkfs.vfat -v -c -F 32 /dev/mmcblk0p1
bash: mkfs.vfat: コマンドが見つかりません
/mnt# apt-get install mkfs
/mnt# mkfs.vfat -v -c -F 32 /dev/mmcblk0p1  ##### -v：詳細な進捗を表示、-c：不良ブロックの精査を行う、-F 32：FAT32形式でのフォーマットの指定。
mkfs.fat 4.1 (2017-01-24)
/dev/mmcblk0p1 has 4 heads and 16 sectors per track,
hidden sectors 0x0800;
logical sector size is 512,
using 0xf8 media descriptor, with 15570944 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 15184 sectors, and provides 1942568 clusters.
There are 32 reserved sectors.
Volume ID is 48a27e27, no volume label.
Searching for bad blocks 67296... 135904... 204384... 272480... 340576... 409312... 477920... 546400... 615136... 683872... 752608... 821344... 890080... 958816... 1027552... 1096416... 1165152... 1233888... 1302752... 1371488... 1440224... 1508960... 1577440... 1645920... 1714272... 1783136... 1851744... 1917920... 1982560... 2046944... 2111456... 2175712... 2240224... 2304608... 2368992... 2433120... 2497504... 2562016... 2626400... 2690912... 2755424... 2819936... 2884320... 2949088... 3013728... 3078240... 3142752... 3207264... 3271776... 3336288... 3400800... 3465184... 3529696... 3594080... 3658464... 3722848... 3787232... 3851744... 3916640... 3981280... 4046048... 4110688... 4175456... 4240096... 4304864... 4369632... 4434656... 4499808... 4564832... 4629856... 4694880... 4759904... 4824544... 4889440... 4954208... 5018848... 5083360... 5148000... 5212640... 5277152... 5341792... 5406560... 5471072... 5535712... 5600224... 5664864... 5729376... 5794016... 5858784... 5923296... 5987680... 6052320... 6116832... 6181344... 6245856... 6310368... 6374880... 6439008... 6503392... 6567904... 6632288... 6696672... 6760928... 6825056... 6889312... 6953568... 7017696... 7081952... 7146208... 7210592... 7274976... 7339232... 7403488... 7467744... 7532256... 7596640... 7660768... 7725024...
/mnt#
```


マウントする
-

```cmd:実行コマンド&ログ
/mnt# mount -t vfat /dev/mmcblk0p1 /mnt/sd/
/mnt# ll /mnt/sd/
合計 8
drwxr-xr-x 2 root root 4096  1月  1  1970 .
drwxr-xr-x 3 root root 4096  6月 11 11:05 ..
/mnt#
```


自動マウントの設定
-

```cmd:実行コマンド&ログ
/home/user/source# vim /etc/systemd/system/mnt-sd.mountunit
#####ファイル名は、mount point のパス名を -(ハイフン) でつなげた名前にする#####
```

```mountunit:mnt-sd.mountunit
[Unit]
Description=MicroSDCard

[Mount]
What=/dev/mmcblk0p1
Where=/mnt/sd
Type=vfat

[Install]
WantedBy=multi-user.target
```

起動時に自動で実行させるため、有効化

```cmd:実行コマンド&ログ
/home/user# systemctl daemon-reload
/home/user# systemctl enable mnt-sd.mount
```

再起動して確認すると、/mnt/sd にマウントされていることが確認できる

```cmd:実行コマンド&ログ
/home/user# systemctl status mnt-sd.mount
● mnt-sd.mount - MicroSDCard
   Loaded: loaded (/etc/systemd/system/mnt-sd.mount; enabled; vendor preset: enabled)
   Active: active (mounted) since Fri 2021-06-11 11:36:17 JST; 25s ago
    Where: /mnt/sd
     What: /dev/mmcblk0p1
  Process: 385 ExecMount=/bin/mount /dev/mmcblk0p1 /mnt/sd -t vfat (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   Memory: 12.0K
      CPU: 23ms
   CGroup: /system.slice/mnt-sd.mount
/home/user# mount |grep /mnt
/dev/mmcblk0p1 on /mnt/sd type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=936,iocharset=utf8,shortname=mixed,errors=remount-ro)
```

おまけ：指定したサイズのファイルを作るコマンド
-
容量オーバーのテストしたい時とかに使用
サイズ確認を確認する

```cmd:実行コマンド&ログ
/mnt/sd# df 
ファイルシス    1K-ブロック    使用  使用可 使用% マウント位置
/dev/root           8194488 3827600 3931080   50% /
devtmpfs            1003820       0 1003820    0% /dev
tmpfs               1004364       0 1004364    0% /dev/shm
tmpfs               1004364   17336  987028    2% /run
tmpfs                  5120       4    5116    1% /run/lock
tmpfs               1004364       0 1004364    0% /sys/fs/cgroup
/dev/mmcblk1p7        64229    6134   54819   11% /oem
/dev/mmcblk1p10     6707126    3855 6703271    1% /userdata
/dev/mmcblk0p1      7770272       4 7770268    1% /mnt/sd
tmpfs                200872       8  200864    1% /run/user/1000
```

7770267KByteのファイルを作成

```cmd:実行コマンド&ログ
/mnt/sd# dd if=/dev/zero of=test bs=1K count=7770267 
```