(メモ)Raspberry Pi用SDカードの作成

#はじめに
Raspberry Pi用のSDカードを作ってみる。マイクロSDカードの条件は以下の通りである。

- FAT32でフォーマットされていること(本件で取り扱う問題64GB以上のSDXCカードはexFATがデフォルト)
   - Linux 5.3以前の制限。[Linux 5.4](https://lkml.org/lkml/2019/11/24/187)がディストリビューションに取り込まれれば解消される見込み.
- 容量256GB以下であること(3B+以降なら256GB以上に対応)
   - [Raspberry PiのSoCの版数により制限を受ける。](https://www.raspberrypi.org/documentation/installation/sd-cards.md)また、[NOOBSでは起動しない問題も報告されている](https://github.com/raspberrypi/noobs/issues/540)。
- マイクロSDカードであること
   - 最古のRaspberry PiはフルサイズSDカードであったが、それ以降(B+ 512)はマイクロSDカード)
   - [なお、I/O性能については、クラス10を満たしていれば特に問題ない。](https://www.raspberrypi.org/documentation/installation/sd-cards.md)(SDカードに対するアクセス性能がゆるいといえる。いわゆるランダムアクセス性能はあまり変わらないため。)

##FAT32とは
DOS用に開発された歴史的なファイルシステムである。[ファイルサイズの最大値は4GB,ディスクサイズの最大値は32GBから2TB等の制限がある。](https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits)なお、ディスクサイズの制限は、OS実装依存である。一般に2000年以前の古いOSを使うとディスクサイズの最大値が32GB程度になるが、ここ10年のOSなら問題はない。

##FAT32が必須の理由
Raspberry Piの前提となるLinuxでは、起動できるのはFAT32形式のみで、exFAT形式には対応していない。
これは、exFATが、Microsoft独自の仕様かつ特許等の危惧があったため開発されてこなかったことに由来する。なお、[exFAT仕様自体は最近Microsoftより公開](https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/)された。この進展により[Linux Kernel 5.4(2019/11/24)](https://lkml.org/lkml/2019/11/24/187)ではexFATが取り込まれた。ただし、Ubuntu等に取り込まれるには、それから1年程度は必要かと思われる。

##SDカード容量が256GBであるか確認すべき理由
[Raspberry Piのドキュメントによると、3+以前のSoCでは制限により起動できない](https://www.raspberrypi.org/documentation/installation/sd-cards.md)と記載されている。

#手順
## FAT32にディスクフォーマットを変更する。
フォーマッタ―で、ディスクフォーマットをFAT32に変更する。今のところ、[`Disk Formatter`](https://www.buffalo.jp/support/download/detail/?dl_contents_id=60879#1)もしくは、[`MiniTool Partition Wizard`](https://www.partitionwizard.jp/partitionmanager/raspberry-pi-sd-card-format.html)あたりが良いかと思う。

## Raspberry Pi用イメージを書き込む

[公式イメージ等](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)があるので、適当なものを選んでインストールする。

## 起動してみる。
普通に、Raspberry Pi 3Bで起動できた。
参考までに、使ったマウスは、[ELECOMのM-XT3UR](https://www.amazon.co.jp/dp/B016QCPO0G)である。

#参考資料
##フォーマッター
- パーティションをきったり、ファイルシステム形式を選べるもの(FAT32を選べる)
   - [(Buffalo)Disk Formatter](https://www.buffalo.jp/support/download/detail/?dl_contents_id=60879#1)
   - [(MiniTool Partition Wizard)Raspberry Piで 使うSDカードのフォーマット－FAT32に再フォーマット](https://www.partitionwizard.jp/partitionmanager/raspberry-pi-sd-card-format.html)
- パーティションを変更できない。ファイルシステム形式自動選択(exFAT)
   - [SDメモリカードフォーマッター](https://www.sdcard.org/jp/downloads/formatter/index.html)

##Raspberry Pi資料
- [DOCUMENTATION > INSTALLATION](https://www.raspberrypi.org/documentation/installation/)
   - [Installing operating system images](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)
      - [NOOBS](https://www.raspberrypi.org/documentation/installation/noobs.md)
         - [Setting up your Raspberry Pi](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up)
   - [SD cards](https://www.raspberrypi.org/documentation/installation/sd-cards.md)
-  [github/raspberrypi](https://github.com/raspberrypi)
   - [raspberrypi/noobs　Issues](https://github.com/raspberrypi/noobs/issues?q=is%3Aissue+is%3Aopen)
      - [NOOBS won't boot on SDXC (256 & 512GB) cards #540](https://github.com/raspberrypi/noobs/issues/540)
   - [raspberry/linux](https://github.com/raspberrypi/linux)
- [The Best Memory Cards for Raspberry Pi](https://www.mymemory.co.uk/blog/the-best-memory-cards-for-raspberry-pi/)

##SDカード
- [性能規格等](https://www.sandisk.co.jp/how-to-choose-sd#section2)

##exFAT
- [Raspberry Pi exFAT: Adding Support for exFAT File System](https://pimylifeup.com/raspberry-pi-exfat/)
- [(LKML)Linux 5.4](https://lkml.org/lkml/2019/11/24/187) exFATがマージされた版
- [exFAT in the Linux kernel? Yes!
](https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/)
    - [Microsoft exFAT File-System Mailed In For Linux 5.4 Along With Promoted EROFS & Greybus](https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.3-Staging-Changes)
    - [Microsoft Will Publish exFAT Spec, but Linux Devs Aren’t Happy](https://www.extremetech.com/computing/297565-microsoft-will-publish-exfat-specification-linux-devs)
    - [The Existing Linux exFAT Code Is "Horrible" But Could Soon Be In Staging](https://www.phoronix.com/scan.php?page=news_item&px=Linux-exFAT-Code-Staging)

##ファイルシステム
- [ファイルシステム（FAT16、FAT32、NTFS、exFAT）について](http://qa.elecom.co.jp/faq_detail.html?id=4047#1)
- [(Wikipedia)Comparison of file systems](https://en.wikipedia.org/wiki/Comparison_of_file_systems)