Raspberry Pi 3 Model B+ で CentOS7 をusb接続のssdから起動する

### FUSE for macOS をインストール
https://osxfuse.github.io

### fusexfs をインストール
https://sourceforge.net/projects/fusexfs/


### SSDのフォーマット
MacにSSDを接続しディスクユーティリティでフォーマットする
* フォーマット：fuse-xfs
* 方式：GUIDパーティションマップ


### SSDに空のxfsパーティションを作成
ディスクユーティリティでxfsパーティションを作成する
* フォーマット：fuse-xfs

### raspberry Pi 用の　CentOS img ファイルをダウンロード

> Download CentOS Linux ISO images ＞　AltArch Releases のraspberry Pi 用「Minimal image for RaspberryPi 2/3」をダウンロードする。

https://wiki.centos.org/Download


### xz コマンドをインストール
```
brew install xz
```
### CentOS イメージを解凍
```
$ xz -d CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz
```

### SSD　へ CentOS　パーティションを書込む
マウントを外してから、ddコマンドで書き込む
```
$ sudo dd if=CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1804-sda.raw of=/dev/disk4 bs=1m
Password:
2712+0 records in
2712+0 records out
2843738112 bytes transferred in 99.757702 secs (28506452 bytes/sec)
```

----


### raspberry-Pi を起動する
- 作成したsdカードを本体にさして起動

### CentOS へログイン
- rootの初期パスワードは `centos`

### yum アップデート
```
# yum update
```


### ネットワーク設定
```
# nmtui
```

nmtui で下記設定
- プロファイル名：eth0（デフォルトでは"Wired connection 1"となっている）
- IPv4 設定:手動
- アドレス
- ゲートウェイ
- DNS サーバー
- 「この接続には IPv4 アドレス設定が必要になります」にチェック
- 「自動的に接続する」にチェック

nmcliの場合

```
# nmcli c modify eth0 ipv4.addresses 192.168.1.x/24
# nmcli c modify eth0 ipv4.gateway 192.168.1.x
# nmcli c modify eth0 ipv4.dns 192.168.1.x
# nmcli c modify eth0 ipv4.method manual
# nmcli c modify eth0 connection.autoconnect "yes"
# nmcli c down eth0; nmcli c up eth0 
# nmcli d show eth0
```

# selinux 無効化


- 設定ファイルの SELINUX を "enforcing" -> "disabled" へ変更する

- 無効化しないと、この後、ルートパーティションをコピーしたssdで起動した際に`/bin/bash: Permission denied`となり、ログインできなくなる。

```
# vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled
```



### ssd を接続

ssdのデバイスファイルを確認

```
# fdisk -l
```

### パーティション作成
```
# parted /dev/sda
(parted) mktable msdos                                               
(parted) mkpart primary ext4 0% 2048M
(parted) mkpart primary ext4 2048M 100%
(parted) print
(parted) quit                                                             
```

### ファイルシステム作成
```
# mkfs.ext4 /dev/sda2
# mkswap -c /dev/sda1
```

### ssd に作成したルート用のパーティションをマウント
```
# mkdir /mnt/ssd
# mount /dev/sda2 /mnt/ssd/
```

### rsync インストール

```
# yum search rsync
# yum install rsync.armv7hl
```

### ルートパーティションのコピー
sdカードのルートパーティションをssdのルートパーティションにコピーする

```
# rsync -ax --progress / /mnt/ssd
```

### fstab 編集
blkid で調べた ssd の uuid へ変更する

```
# blkid /dev/sda1
/dev/sda1: UUID="f613c75c-a4a8-4dd5-aa6a-5a627ecc745a" TYPE="swap" 
# blkid /dev/sda2
/dev/sda2: UUID="53aafd84-bd9e-4624-9abe-1f50e76a04c6" TYPE="ext4"
vi /mnt/ssd/etc/fstab
```

### cmdline.txt 編集
ssd のOSから起動するように編集する

```
# cat /boot/cmdline.txt
console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait

# vi /boot/cmdline.txt
console=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait
```

### 再起動してssdから起動していることを確認

```
# df -a
```


----
### 参考
Raspberry Pi 3 に繋いだ USB 接続の SSD に CentOS7 を入れてみる
https://bucci.bp7.org/archives/40931

raspberry Pi3にcentos7を入れてみた
https://qiita.com/NAZA/items/38303564dde29977d79e

RaspberryPi 3 model B に CentOS7をインストール
https://qiita.com/revsystem/items/9989a18116e554c133b6