NanoPi NEO のbootパーティションをFAT32にしてみる

NanoPiの公式イメージはどういうわけかbootパーティションがEXT4。

```
root@LATITUDE:~/Downloads/fuse-ext2-0.0.7# fdisk -l
・
・
・
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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: 0x00000000

デバイス       起動  Start 最後から セクタ  Size Id タイプ
/dev/mmcblk0p1       49152   131071   81920   40M 83 Linux
/dev/mmcblk0p2      131072  7617185 7486114  3.6G 83 Linux
```

Raspberry PiはbootパーティションがFAT32なので、WindowsでもMacでも読み書きできる。そうした方が便利になるかも・・・ということでbootパーティションをFAT32に変更してみました。

bootパーティションに入っているのは2つのファイルのみ。

```
root@LATITUDE:/media/nanbuwks/boot# ls -alh
合計 4.4M
drwxr-xr-x  2 nanbuwks nanbuwks  16K  1月  1  1970 .
drwxr-x---+ 4 root     root     4.0K 11月 14 20:46 ..
-rw-r--r--  1 nanbuwks nanbuwks  34K  8月  5 02:13 script.bin
-rw-r--r--  1 nanbuwks nanbuwks 4.4M  8月  5 02:13 uImage
```

もうひとつのパーティションにbootディレクトリがあるが、空っぽです。

```
root@LATITUDE:~/Downloads/fuse-ext2-0.0.7# ls /media/nanbuwks/
boot/                             rootfs/
root@LATITUDE:~/Downloads/fuse-ext2-0.0.7# ls /media/nanbuwks/rootfs/
Settings  boot  etc   lib         media  opt   root  sbin  sys  usr
bin       dev   home  lost+found  mnt    proc  run   srv   tmp  var
root@LATITUDE:/media/nanbuwks/boot# ls /media/nanbuwks/rootfs/boot
root@LATITUDE:/media/nanbuwks/boot#
```

容量的には十分余裕があります。

```
root@LATITUDE:~/Downloads/fuse-ext2-0.0.7# df -h
Filesystem      Size  Used Avail Use% Mounted on
・
・
・
/dev/mmcblk0p1   40M  4.4M   36M  11% /media/nanbuwks/boot
/dev/mmcblk0p2  3.6G  595M  3.0G  17% /media/nanbuwks/rootfs
```

なので、rootfsパーティションにbootbackというディレクトリを作り、そこに避難させました。

```
root@LATITUDE:~/Downloads/fuse-ext2-0.0.7# cd /media/nanbuwks/boot
root@LATITUDE:/media/nanbuwks/boot# mkdir ../rootfs/bootback
root@LATITUDE:/media/nanbuwks/boot# cp * ../rootfs/bootback/
```

fdiskで操作します。

```
root@LATITUDE:/media/nanbuwks/boot# fdisk  /dev/mmcblk0

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


コマンド (m でヘルプ): p
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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: 0x00000000

デバイス       起動  Start 最後から セクタ  Size Id タイプ
/dev/mmcblk0p1       49152   131071   81920   40M 83 Linux
/dev/mmcblk0p2      131072  7617185 7486114  3.6G 83 Linux

コマンド (m でヘルプ): t
パーティション番号 (1,2, default 2): 1
Partition type (type L to list all types): L

 0  空              24  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux スワップ  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 拡張領域  c7  Syrinx         
 5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ   
 6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ
 8  AIX             4e  QNX4.x 第2パー  8e  Linux LVM       df  BootIt         
 9  AIX 起動可能    4f  QNX4.x 第3パー  93  Amoeba          e1  DOS access     
 a  OS/2 ブートマネ 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 ハ ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC  
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f4  SpeedStor      
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      f2  DOS セカンダリ 
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fc  VMware VMKCORE 
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fd  Linux raid 自動
1c  隠し W95 FAT32  75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  隠し W95 FAT16  80  古い Minix      be  Solaris ブート  ff  BBT            
```

FAT32はb,c,1b,1c,bcとあります。確か Raspberry Pi の場合はcだった気がするのでとりあえずパーティションタイプを「 c  W95 FAT32 (LBA)」にします。

```
Partition type (type L to list all types): c

Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

コマンド (m でヘルプ): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: デバイスもしくはリソースがビジー状態です

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
```

とりあえず確認。

```
root@LATITUDE:/media/nanbuwks/boot# fdisk -l
・
・
・
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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: 0x00000000

デバイス       起動  Start 最後から セクタ  Size Id タイプ
/dev/mmcblk0p1       49152   131071   81920   40M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072  7617185 7486114  3.6G 83 Linux
```

変わっているみたいなのでFAT32でフォーマット。

```
root@LATITUDE:/media/nanbuwks/boot# mkfs.vfat /dev/mmcblk0p1
mkfs.fat 3.0.28 (2015-05-16)
mkfs.vfat: /dev/mmcblk0p1 contains a mounted filesystem.
```

おっと。マウント解除しなきゃ。

```
root@LATITUDE:/media/nanbuwks/boot# mount
・
・
・
/dev/mmcblk0p1 on /media/nanbuwks/boot type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
root@LATITUDE:/media/nanbuwks/boot# cd ..
```

ファイルブラウザでマウント解除して、念の為に抜いてもう一度挿し直し

```
root@LATITUDE:/media/nanbuwks# mkfs.vfat /dev/mmcblk0p1
mkfs.fat 3.0.28 (2015-05-16)
```

ファイルブラウザでマウント解除して、念の為にsdカードを抜いてもう一度挿し直し。
マウントポイントが5522-FE25になった。

```
root@LATITUDE:/media/nanbuwks/rootfs# mount
・
・
・
/dev/mmcblk0p2 on /media/nanbuwks/rootfs type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2)
/dev/mmcblk0p1 on /media/nanbuwks/5522-FE25 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
```

bootにマウントされないと気持ち悪い。もしかしたらNanoPiもボリュームラベルを認識する可能性も考え、ボリュームラベルをちゃんと付けてみる。

```
root@LATITUDE:/media/nanbuwks# mkfs.vfat -n boot /dev/mmcblk0p1
mkfs.fat 3.0.28 (2015-05-16)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
```

うん？ worningですね。大文字にしたほうがいいのかな？　もしかして大文字で書いても、Linuxでマウントするときには小文字になったりするかな？

```
root@LATITUDE:/media/nanbuwks# mkfs.vfat -n BOOT /dev/mmcblk0p1
mkfs.fat 3.0.28 (2015-05-16)
```

BOOTにマウントしたので、元に戻します。

```
root@LATITUDE:/media/nanbuwks# mkfs.vfat -n boot /dev/mmcblk0p1
mkfs.fat 3.0.28 (2015-05-16)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
```

先ほどコピーした2つのファイルをコピーします。

```
root@LATITUDE:/media/nanbuwks# cp rootfs/bootback/* boot
root@LATITUDE:/media/nanbuwks# cd
```

これでマウント解除して取り外し、NanoPiに接続すると無事起動しました。
これらRaspberry Piだったら bootパーティションにはconfig.txtがあったりするのでWindowsやMacの場合は便利。けれどもNanoPiの場合はFAT32にしたところでそれだけだと嬉しいことは何もない。

「RaspberryPi3のWiFiファイルをSDに置いて起動時に読み込んで自動接続する」
http://qiita.com/miminashi/items/a5da8880ea37e017934e
のようなテクとの併せ技で嬉しくなるというお話でした。