NanoPiにArmbianをインストールした

## 購入
秋月電子にて3500円くらい

https://akizukidenshi.com/catalog/g/gM-12301/


## イメージダウンロード
[ArmbianGeneral purposeNanopi Neo and Core イメージダウンロード](https://www.armbian.com/nanopi-neo/)

![Screenshot from 2023-07-01 08-35-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/b775a703-3924-daa8-7c51-68b6b80066e0.png)


xzでダウンロードします。
ダウンロードリンクボタンが下の方にあって分かりづらかったです。



## イメージインストール

![Screenshot from 2023-07-01 08-27-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/b9413a8d-3170-bb98-f947-f2db0b22cb9a.png)



マイクロSDカードへの書き込みはRaspberry Pi Imagerが使えます。
OSはダウンロードしてきたxzを選択して、マイクロSDは差し込んだものを選択します。
歯車アイコンでIDとかパスワードとか設定しようとしましたが、raspbian OSのときのようには設定してくれませんでした。「設定できませんでいた」というエラーウィンドウが出ますが、無視してSDカード抜きます。


## ハードウェアの接続
NanoPiに対して下記を接続します。

1. 書き込みしたマイクロSDカードを差し込みます。
1. ルータへ接続されたLANケーブルを接続します。
1. 5V給電マイクロUSB type Bケーブルを接続します。

USBケーブルを挿入した時点で勝手に電源が入ります。


## ssh接続
ホストPC側からsshで接続します。まずはNanoPiのIPアドレスを調べます。
私はUbuntu22.04を使っていますので`arp-scan`でLAN内の機器のIP情報を調べることができます。

```shell-session
$ sudo apt install arp-scan
$ sudo arp-scan --localnet
```

として新たに接続されたNanoPiのIPアドレスを調べます。

```
Interface: eno1, type: EN10MB, MAC: 2c:9d:92:33:24:66, IPv4: 192.168.10.107
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.10.1	02:10:82:91:55:96	(Unknown)
...
192.168.10.113	04:41:42:a3:a2:ea	(Unknown: locally administered)
...
```

新しめの番号が出てきたので、特定。

```shell-session
$ watch -n3 sudo arp-scan --localnet
```

とすると、接続の瞬間にハイライトされるのでわかりやすいかもしれません。


## 初回sshログイン


`arp-scan`で見つけたIPアドレスを使用して、`root@IPアドレス` でログインします。初期パスワードは`1234`で固定です。

```shell-session
$ ssh root@192.168.10.113
# パスワードは`1234`
```


参考に見ていたページではUSBシリアル変換がないと接続できないみたいなことが書いてあったので、ダメ元でやってみましたが、問題なくssh接続することができました。

> これでDHCPでLANから見えるんでしょ？
> と思ったらLAN上にそれらしきホストが確認できず。。
> arp -a とやっても知ってるマシンしか出てこない。。
> 起動失敗したかな、、？
（後で分かりますが、結果的にはこの時点で起動できてました。起動はできていましたが、この時点ではLANには繋がっていなかったようです）

> 何となくの「いけるだろ」って感じであまり調べずに買っちゃったってこともあるんだけど、たまたまUSBシリアルモジュール持ってたからなんとかなったものの、持ってなかったらもうちょっとハマってたな、これ。

> HDMI出力がないので、OSのセットアップには USBシリアル のモジュールを使用します。


[Nano Pi NEO 自宅サーバを再インストールしました](https://kanpapa.com/today/2021/02/nanopi-neo-buster-setup.html)
[NanoPi NEO に Armbian をインストールしようとしてつまづいた話](https://qiita.com/manontroppo1974/items/9a3023ef2ee5e2fc30d2)



## 初回設定
![Screenshot from 2023-07-01 08-14-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/861cf433-60c1-f004-29e7-1165ae62bc5b.png)

sshログインできました。


![Screenshot from 2023-07-01 08-18-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/33f1a6f8-91f8-8044-a48f-c914749d3263.png)

1. rootパスワード変更します。
1. shellの種類を選びます。
1. アカウント作成します。(UID, PW)
1. 地域は自動選択
1. locale自動選択

以上で設定終わり。簡単


## パッケージ更新

とりあえずすべてのパッケージをアップグレードします。


```shell-session
# apt update && sudo apt upgrade -y
```

ここまでやってディスク容量を確認してみます。

```
nanopineo:~:% df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            50M  2.5M   47M   6% /run
/dev/mmcblk0p1   29G  1.6G   27G   6% /
tmpfs           246M     0  246M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           246M     0  246M   0% /tmp
/dev/zram1       47M  828K   43M   2% /var/log
tmpfs            50M     0   50M   0% /run/user/0
tmpfs            50M     0   50M   0% /run/user/1000
```

ディスクを1.6GBしか使っていません。とてもエコです。



## ssh設定
クライアント側PCへ戻り、sshキーをNanoPiへ送ります。

```shell-session
$ ssh-copy-id u1and0@192.168.10.113
# 初回で設定したパスワードを入力します
```

これで次回から

```shell-session
$ ssh u1and0@192.168.10.113
```

でログインできます。



### sshで入りやすくする

さらに`~/.ssh/config`に追記します。

```~/.ssh/config
...
Host nanopineo
    Hostname 192.168.10.113
    User u1and0
    IdentityFile ~/.ssh/id_rsa
```

NanoPi初期設定時にホスト名は`nanopineo`に勝手にされるようですので、`Host nanopineo`、
HostnameにIPアドレスを書きます。

これで

```shell-session
$ ssh u1and0@nanopineo
```

でログインできます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/e801a22a-26c8-1fcd-ce00-08fdfa439db5.png)



### パスワードログイン不可にする
公開鍵認証でログインできることを確認したら、パスワード認証ログインの必要がないので、設定を書き換えます。

ホスト側(NanoPi)でsshd_configを書き換えます。

```shell-session
# sudo vim /etc/ssh/sshd_config
```

`PasswordAuthentication yes`となっているところを

```/etc/ssh/sshd_config
PasswordAuthentication no
```

に書き換えます。

```
# sudo systemctl restart sshd.service
```

そして、sshデーモンを再起動します。

これでパスワードログインが不能になりました。
確認するときはNanoPiのユーザーで`~/.ssh/authorized_key`というファイルをリネームしてからsshしてみてください。
ログインが弾かれるはずです。

```shell-session
$ ssh u1and0@nanopineo
u1and0@192.168.10.113: Permission denied (publickey).
```


## sudoをパスワード無しで実行できるようにする
/etc/sudoersというファイルを編集すればいいのですが、しくじると一生sudoできなくなる代償の大きい呪いにかかるので、普通は`visudo`コマンドというsudoersのシンタックスをチェックしてくれるsudoers編集に特化したコマンドがあります。



```shell-session
$ sudo visudo
```

NanoPiではそのまま実行するとnanoというエディタで開きます。

:::note warn
Vimmerの人以外はここはスルーして次に進んでください。
:::

vimで開くにはvimをインストールしてからvimで開くように下記のようにします。

```shell-session
$ sudo apt update && sudo apt install -y vim
$ EDITOR=/usr/bin/vim sudo visudo
```

sudersファイルが開いたら、下記のように特定にユーザーがすべてのコマンドをパスワード無しで実行できるように書きます。

```txt:/etc/sudoers
u1and0  ALL=(ALL:ALL) NOPASSWD:ALL
```

これでユーザー名u1and0はsudoコマンドを使うときにパスワードを求められなくなりました。
ただし、運用には十分注意してあたってください。
(絶対パスワードログインできないようにする、公開鍵認証で絶対に秘密鍵を漏らさない、等)

参考: [sudo のパスワードを入力なしで使うには](https://qiita.com/RyodoTanaka/items/e9b15d579d17651650b7)