AndroidスマホのみでRaspberry PiをHeadlessインストールする

# はじめに
[Japanese Raspberry Pi Users Group](https://www.raspi.jp/2019/06/watching-raspberry-pi-4-model-b/)でも紹介されていますが、RasPi4が発売になりましたね。
合わせて、Raspbian Busterもリリースされました。

そんなわけで、今後BusterのSDカードを作る機会が増えると思います。
恒例のセットアップ方法を書いてもつまらないので、今回Androidのみを用いて変態的にRasPiを立ち上げたいと思います。

今回例として、Raspbianをセットアップしていこうと思いますが、とくにほかのディストリでもOrange Piなど他のSBCでも変わらないと思います

# 準備(ハード)
基本的にAndroidスマホが1台あれば事足りますが、必要であればmicroSDカードリーダーを購入してください。イメージを大量作成するなら、カードリーダーがあると便利です。microSDスロットがSIMスロットと一体化している機種などは抜き差しでOSが再起動するので注意が必要です。(1000円程度です)

|必要物|内容|
|:----|:----|
|必須|Android端末(アプリの関係でVer5以上)|
|あれば便利(用意したAndroid端末にmicroSDスロットがない場合は必須)|microSDカードリーダー[Amazonでの例](https://www.amazon.co.jp/dp/B07P1XB7BG/ref=pe_2107282_266464282_TE_dp_2)|

あとは当たり前にRasPiです。
筆者は、Nexus6P(Android8.1)と例に挙げたmicroSDカードリーダーを使いました。

# 準備(ソフト)
RasPiの立ち上げ手順が頭に入っている人は、内容、機能の項目を読めば、この後の記事を読まなくても終わってしまいます(汗)。
ただ、運用だけを考えても.Local FinderとJuiceSSHの組み合わせは便利です

||必要物(リンク)|内容、機能|リンク先のQRコード|
|:----|:----|:----|:----|
|(1)|[Download Raspbian for Raspberry Pi](https://www.raspberrypi.org/downloads/raspbian/)|RasPiのイメージ|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/078a8450-6afb-ee25-b064-230a8df4e11d.png)|
|(2)|[Cx File Explorer](https://play.google.com/store/apps/details?id=com.cxinventor.file.explorer&hl=ja)|ファイラー(ZIPファイル解凍,microSDカード読み書き,SSHファイル作成)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/6fe52266-7ee5-fe24-596b-aee0961ea6f4.png)|
|(3)|[EtchDroid [NO ROOT] - Write ISOs and DMGs to USB](https://play.google.com/store/apps/details?id=eu.depau.etchdroid&hl=ja)|DDイメージをmicroSDに焼く|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/eabb5bbb-00b7-4e1d-8e1a-359d94fa3347.png)|
|(4)|[.Local Finder](https://play.google.com/store/apps/details?id=com.dokoden.dotlocalfinder&hl=ja)|mDNSによりraspberrypi.localをネットワークから検索し、IPを表示する|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/60ccb3c3-b6f2-3de4-abbf-a94c40bb283f.png)|
|(5)|[JuiceSSH - SSH Client](https://play.google.com/store/apps/details?id=com.sonelli.juicessh&hl=ja)|SSHクライアント|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/a33a38cd-8231-0f2b-98b5-75e27b55277a.png)|

# microSD焼き込み
## Raspbianのダウンロードと解凍
上記(1)のリンクをchromeなどのブラウザで開き、Lite、Desktopなど好きなイメージをダウンロードします。
その後、(2)Cx File Explorerを使い、イメージファイルのZIPファイルを解凍すると、imgファイルが出てきます。
具体的には普通にダウンロードしたならば、ダウンロードフォルダの中にあるため、Cx File Explorerのダウンロードをタップし、表示されるファイル一覧から対象のZIPファイルを選択します。その他の詳細メニューに解凍がありますので解凍を選択するとimgファイルが出てきます
<img width="300" alt="054744f8-967e-4890-20f7-ebe9a905e97c.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/054744f8-967e-4890-20f7-ebe9a905e97c.png"><img width="300" alt="cbacd9e4-de53-93cd-53d0-ed1d05f4ec2b.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/cbacd9e4-de53-93cd-53d0-ed1d05f4ec2b.png"><img width="300" alt="afce93d3-1320-625b-dda4-b60ae4ef7c43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/afce93d3-1320-625b-dda4-b60ae4ef7c43.png"><img width="300" alt="13a20ebf-af0f-7996-3a13-adb0bb9a6357.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/13a20ebf-af0f-7996-3a13-adb0bb9a6357.png"><img width="300" alt="46caeee0-ad7b-1b6d-7bf8-64327fee16a0.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/46caeee0-ad7b-1b6d-7bf8-64327fee16a0.png">

## 念の為microSDカードをフォーマット
RaspbianのmicroSDは通常とは違ったパーティションを切ってあるため、他の用途に使ったことがあるのならば念の為フォーマットします。
Cx File ExplorerでUSBストレージを長押しすると、設定というサブウィンドウが開くため、タップします。するとUSBドライブというウィンドになりますので、フォーマットをタップするとフォーマットが出来ます。
<img width="300" alt="0cf75d8c-7b1b-f52f-fded-022f4f174e70.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/0cf75d8c-7b1b-f52f-fded-022f4f174e70.png"><img width="300" alt="270688c6-649f-bf79-a628-b10b17d8c6f3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/270688c6-649f-bf79-a628-b10b17d8c6f3.png"><img width="300" alt="109a2bc3-909c-951a-afd3-0b7762353abe.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/109a2bc3-909c-951a-afd3-0b7762353abe.png">

## Raspbian焼き込み
(3)EtchDroidを使いimgファイルを焼き込みます
ここで注意です。microSDカードリーダーの種類によっては、EtchDroidが認識できるスロットが限られている場合があります。筆者が購入したmicroSDカードリーダーは、SDカードスロットとmicroSDカードスロットが付いていました。Cx File Explorerからは両方のスロットが認識されるのですが、EtchDroidからはSDカードスロットしか認識されないため、変換アダプタを用いSDカードスロット側で書き込みを行っています。
<img width="300" alt="f24f9220-d9ce-bbb2-c77e-6d88ef836941.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/f24f9220-d9ce-bbb2-c77e-6d88ef836941.jpeg">

EtchDroidを開き、「Write raw image or ISO」をタップし、先程解凍したimgファイルを選択します。
<img width="300" alt="c3b8e5e2-4ac5-f462-1629-5e3cbdef35a1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/c3b8e5e2-4ac5-f462-1629-5e3cbdef35a1.png"><img width="300" alt="a853a980-5e34-88b0-1c07-8d7158c20fcb.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/a853a980-5e34-88b0-1c07-8d7158c20fcb.png">

続いて、SDカードスロット選択画面が出ますので、該当のスロットを選択すると、パーミッションの許可画面が出るのでOKをタップします。
<img width="300" alt="32acacc8-f8b1-28ec-9c95-7b74e59d2745.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/32acacc8-f8b1-28ec-9c95-7b74e59d2745.png"><img width="300" alt="e11ee54b-20fb-4557-6641-086c778eb2d5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e11ee54b-20fb-4557-6641-086c778eb2d5.png">

あとは、流れに沿っていけばmicroSDは作成されます。
<img width="300" alt="4bf29792-7a0b-737f-2fe0-52faac243ca8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/4bf29792-7a0b-737f-2fe0-52faac243ca8.png"><img width="300" alt="c1a45e13-0227-47d3-809e-770ca16d0fb3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/c1a45e13-0227-47d3-809e-770ca16d0fb3.png"><img width="300" alt="bdc7ffd4-06e1-47dc-3bbb-5fcb545aeb7b.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/bdc7ffd4-06e1-47dc-3bbb-5fcb545aeb7b.png">

## 一旦アダプタ(microSD)を抜き、挿入しなおす
これは重要です。そのまま次の工程に進むと、うまく書き込めません

## RaspbianのSSH許可設定
アダプタを挿入しなおすと、Cx File ExplorerにUSBが見えるようになるため、開きます。
このフォルダに拡張子なしでファイル名SSHの空ファイルを作成すると後の工程でRaspbianにSSH接続できるようになります
<img width="300" alt="08e0ad42-8c25-79ae-7018-9ed496d96c6e.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/08e0ad42-8c25-79ae-7018-9ed496d96c6e.png"><img width="300" alt="3a14c24f-4271-a783-3fc7-85f9dbcd82ce.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/3a14c24f-4271-a783-3fc7-85f9dbcd82ce.png"><img width="300" alt="253664/a565d2c0-11c1-feff-1535-b124b35c0f64.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/a565d2c0-11c1-feff-1535-b124b35c0f64.png"><img width="300" alt="9c8ef21a-6b78-1433-455a-fd2ae8eb9b02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/9c8ef21a-6b78-1433-455a-fd2ae8eb9b02.png">

# RasPiのグローバルIPを探し出しSSH接続
## Raspberry PiをBoot
先ほど作ったmicroSDカードをRaspberry Piに接続し、Bootさせます。初回起動時はmicroSDの領域を拡張し再起動するため、さらにBusterからは1日1回のアップデートが走るようになりました。あまりにBootが遅いようなら、電源を入れ直すとアップデートは回避されます。
じっと待つなら15分くらい放置しておいたほうが無難です。

## mDNSを使いRasPiのグローバルIPを探す
(4).Local Finderを用いRasPiのグローバルIPv6を探し出します。プロトコルはmDNSを使っています。Raspbianの初期ホスト名はraspberrypiですので、それを入力します。次の工程のJuiceSSHはIPv6に[]が不要なため、"IPv6"を選択します。初期状態は[]付きの"[IPv6]"になります。
なお、ネットワークがIPv6対応していなかった場合、fe80::で始まるリンクローカルIPを返してきますが、このネットワーク内でしか使用しないならリンクローカルIPを使っても構いません。もちろんIPv4でも構いません。
表示されたIPでよければ「COPY IP」をタップし、IPをコピーします。
mDNSについての詳細は以下のリンクを参照ください
https://qiita.com/maccadoo/items/48ace84f8aca030a12f1
<img width="300" alt="ba281665-3123-d5eb-6801-22aec4e02763.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/ba281665-3123-d5eb-6801-22aec4e02763.png"><img width="300" alt="e92fe25c-2cb8-6cac-25db-![Screenshot_20190626-232931.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e7e4cb3f-656d-f203-e7b3-a9b543868205.png)
af6753e72202.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e92fe25c-2cb8-6cac-25db-af6753e72202.png">

ちなみに他のディストリだと、IPv6を複数返してくるものがあります(Ubuntuなんか)。片方は匿名アドレスなので、注意してください。匿名アドレスでもアクセスはできるんですが、rebootしたりするとアドレスが変わってしまうので注意です。

余談ですが、このソフト筆者のお手製です。AndroidがmDNS対応してくれなくて作りました。

## SSH接続を行う
(5)JuiceSSHを立ち上げ、先ほど探したグローバルIPv6を貼り付けます。User名/Passwordはいつものpi/raspberryです。
<img width="300" alt="0ea624b5-5508-8ddb-29f4-9d7b6d87091d.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/0ea624b5-5508-8ddb-29f4-9d7b6d87091d.png"><img width="300" alt="d014268b-aced-78ed-aaf1-654f397e0efa.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/d014268b-aced-78ed-aaf1-654f397e0efa.png"><img width="300" alt="deaf7fe0-653b-4ef5-e511-937b0199ba2a.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/deaf7fe0-653b-4ef5-e511-937b0199ba2a.png"><img width="300" alt="3d149057-50d0-7248-aa7c-ce96ffbb99ee.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/3d149057-50d0-7248-aa7c-ce96ffbb99ee.png"><img width="300" alt="d91e6008-0948-be69-d7b4-8d7c0d4385af.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/d91e6008-0948-be69-d7b4-8d7c0d4385af.png"><img width="300" alt="e7adf41a-d51c-80e6-5097-52ad4d2be252.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e7adf41a-d51c-80e6-5097-52ad4d2be252.png"><img width="300" alt="2d2487f9-c0c3-95dd-eb87-83b53311e2ea.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/2d2487f9-c0c3-95dd-eb87-83b53311e2ea.png"><img width="300" alt="c70c8627-8009-ef30-35d6-9565df9016a9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/c70c8627-8009-ef30-35d6-9565df9016a9.png">

# おまけ
RasPiにWebサーバーなどを立ち上げた場合、.Local Finderでカッコつきの"[IPv6]"のアドレスを拾いchromeに張り付ければアクセスできます。

なお、RasPiを外部に公開したい場合は、IPv6を変更したほうがセキュリティ的に良いです。
詳しくは以下のリンクをご覧ください
https://qiita.com/maccadoo/items/84c8ebaa4ad541ccea3b

また、NTTでIPv6を契約されている方は、本気でルーター設定を見直したほうが良いです。外部公開しないので、pi/raspberryで良いやと思っている方、デフォルトの設定のままだとSSHで入られます。
https://qiita.com/maccadoo/items/41e4cde50d1a288a19d6

NASAですらこんなことが起こりますので、本気で注意です
https://www.gizmodo.jp/2019/06/nasa-hacker-raspberry-pi.html