Raspberry Pi 4 でHDDをrootにしてarch Linuxでサーバにしてみる（前編）

#概要

初めての投稿になります！
Raspberry Piの4が出てUSB周りが強化されサーバ向けにピッタリになりました。ということで、Raspberry Pi 4をHDDで動作するようにして、arch Linuxで安定に動作させてみることにしました。
arch Linuxは数あるディストリビューションの中でも、自分で何でもセットアップするという信条で作られている軽量ディストリビューションなので、Linux環境を自分でセットアップして勉強するのにもってこいのディストリビューションです。公式サイトのセットアップ等のドキュメントが親切で、少し慣れれば使いこなせると思います。特にLinux初級者に挑戦してもらって、楽しんでもらいたいです。
なお、書いていて長くなったので、前後編に分けて、今回はインストールからログインのところまで書いてみます。

※2020/9/5追記
Archlinuxもraspberry Pi4用の64bit版が出ましたが、そのバージョンでは、この方法は使えないことが分かっております。下記リンクの記事を参考にしてください。
[Archlinux 64bit Raspberry pi 4でUSB bootするまで(MBRディスクのみ)](https://qiita.com/yoshiki9636/items/f1290930f848b1ab2bb0)


#参考サイト

arch Linux公式 raspberry Piセットアップ
[Rasperry Pi - ArchWiki](https://wiki.archlinux.jp/index.php/Raspberry_Pi)

arch Linux ARMダウンロードサイト
[Downloads Arch Linux ARM](https://archlinuxarm.org/about/downloads)

[Raspberry Pi 4 でHDDをrootにしてarch Linuxでサーバにしてみる（後編）](https://qiita.com/yoshiki9636/items/4c2c4677686eb7b115f3)

#目次

- 必要なもの
- HDDのセットアップとarch Linuxインストール
- 初期設定（後編）
- 各種ソフトのインストール（後編）

#必要なもの

arch Linux armにはインストーラがありません。インストールするためには、他のLinuxマシンが必要となります。以下材料一覧です。
- Linux PC
- USB HDD
- SDカード


###Linux PC
例えば、raspbian/x86とか、ubuntu PCなどです。ここでは、ネットブックPCにraspbian/x86をインストールしたものを使用しています。raspberry Piでは、SDカードをマウントできないので、できればSDカードをマウントできるものが良いです。

###USB HDD
Raspberry Pi 4の力を発揮したいのであれば、USB3.0のものを用意するとよいです。2TBまでと3TB以上では手順が少し変わるので注意。現在空であること前提。

###SDカード
Raspberry Piブート用。2GBもあればOK。予めPCでFAT32フォーマットしておくのが楽です。

#HDDのセットアップとarch Linuxインストール
まずはLinux PCにUSB HDDとSDカードを接続して起動します。
作業が面倒なので、rootになります。
``` $ sudo su ```

まずはUSB HDDとSDカードがつながっているか確認します。
``` # fdisk -l```

今接続されているディスクとSDカードの一覧が出ます。
以降、USB HDDは2TBで /dev/sdb、SDカードは/dev/mmcblk0とします。

USB HDDのパーティションを以下のように切っていきます。
/dev/sda1  /  64GB
/dev/sda2  swap  5GB
/dev/sda3  /work  それ以外全部

``` # fdisk /dev/sdb```
内部コマンド

- nで新規パーティション作成
    - 最初にパーティション番号
    - 開始はenterのみ（言い値の数字）
    - 終了は+64GBとか+5GB　それ以外全部の場合はenter

- pで作ったパーティション一覧表示
- wで書き込み&終了

sda1とsda3をext4でフォーマットします。
``` # mkfs.ext4 /dev/sdb1```
``` # mkfs.ext4 /dev/sdb3```

/mntにsdb1をマウントします。
``` # mount /dev/sdb1 /mnt```
/mnt/bootにmmcblk0p1をマウントします。

``` # cd /mnt```
``` # mkdir boot```
``` # mount /dev/mmcblk0p1 /mnt/boot```

適当な場所にRaspberry Pi 4用のarch Linuxのtar ballをダウンロードします。

``` # cd /home/pi```
``` # wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-4-latest.tar.gz```

bsdtarで展開します。（普通のtarコマンドでもOK）このとき-pオプションを必ずつけてください。あとで動かなくなります。

``` # bsdtar -xpf ArchLinuxARM-rpi-4-latest.tar.gz -C /mnt```

/mnt/etc/fstabを編集します。間違えて本体のfstab編集しないでください。

``` # cd /mnt/etc```
``` # vi fstab```

```:/mnt/etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1  /boot   vfat    defaults        0       0
/dev/sda1       /       ext4    defaults        0       1
/dev/sda2       none    swap    defaults        0       0
/dev/sda3       /work   ext4    defaults        0       0
```
/boot/cmdline.txtを編集してroot=/dev/mmclk0p2をroot=/dev/sda1にします。

``` # cd /boot```
``` # vi cmdline.txt```

```:cmdline.txt(befor)
root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 pl
ymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200
 elevator=noop
```
```:cmdline.txt(after)
root=/dev/sda1 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 pl
ymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200
 elevator=noop
```
ディスクのマウントポイントを作ります
``` # cd /```
``` # mkdir work```


ここまで出来たらインストールは終了なので、アンマウントします。
``` # umount /mnt/boot /mnt```

これでLinux PC上での作業は終了します。
USB HDDとSDカードを取り外してRaspberry Pi 4に取り付けます。
同時にネットワークケーブルを接続します。
今回はネットワークへは有線でDHCPでつながっていることを前提にしております。
ディスプレイはつないでおりません。

電源を入れるとHDDへ連続アクセスしている様子が観察できます。
立ち上がり切ったいと思ったら、teratermなどで接続をします。
応答があったら、デフォルトでログイン。
ログイン名： alarm
パスワード： alarm

これでログインできたら、インストールまでできました。

（環境設定等後編に続きます）