スポンサーリンク

Raspberry Pi 4でubuntu server 20.04 LTSをUSBブート【準備~起動編】

LINEで送る
Pocket

 はじめに

現在、当サイトで運用しているサーバーOSに CentOS 8を使用していますが、
既知の情報通り、2021年12月末で CentOS 8のサポートを終了するとの衝撃的なアナウンスにより、新しい環境を構築しなければならなくなりました。
現時点(2021年6月)では、新たに代替の候補として以下のディストリビューションがリリースされています。
 ・AlmaLinux
  公式サイト: https://almalinux.org/

 ・RockyLinux
  公式サイト: https://rockylinux.org/

条件付きではありますが、本家 RedHat Enterprise Linuxも利用できるみたいです。

AlmaLinuxについては、移行ツールによる CentOS 8からの移行が簡単にできるとのこと。
当サイトでも、移行ツールにより、AlmaLinuxで既に運用中なのですが、ここは敢えて Raspberry Pi 4で構築してみようと、重い腰を上げて作業開始となった次第です。

 前提

1.今回は、microSDを使用せず、直接 USB接続の SSDから起動させます。
2.本作業は、途中から Windows PCで TeraTermによる SSH接続にて作業を行います。
3.なるべく分かり易いように説明していますが、部分的に端折っている箇所もあります。

 事前準備

0.今回、以下のものを揃えて構築します。
 ・Raspberry Pi 4 Model B (4GB or 8GB RAM) ※以降、ラズパイと記載
  一応、両方購入しましたが、今回は 4GB版で構築します。
 ・専用ケース(FAN付き) ※最近のはFANが光るんですね!
 ・5V 3Aに対応する USB type-Cの ACアダプター
 ・microSD 4GB以上
 ・microSD USBカードリーダー/ライター
 ・M3 内蔵型 mSATA 128GB SSD
  Zheino M3 内蔵型 mSATA 128GB SSD (30 * 50mm) mSATAIII 3D Nand 採用 6Gb/s mSATA ミニ ハードディスク
 ・mSATA用 USB変換ケース
 ・Geekworm Raspberry Pi 4 X857 mSATA SSD ストレージ拡張ボード
  ※ただ現在は、在庫切れで再入荷予定は立っていないようなので、代替として
   Geekworm Raspberry Pi 4 Model B X862 V2.0 M.2 NGFF SATA SSD ストレージ拡張ボードや
   同 X873 M.2 NVMe SSD ストレージ拡張ボードを使用してもいいでしょう。
 ・mini HDMIケーブル(もしくは変換ケーブル)
 ・USB接続のキーボードまたは、USBレシーバーのワイヤレスキーボード

 USB接続のSSDから起動させる準備

1.microSDへ Raspberry Pi OSを書込み
 ラズパイ3では、初期状態で USB起動が有効になっていましたが、ラズパイ4では microSDカードが初期起動デバイスとなっているため、USBからの起動を優先するように設定する必要があります。
 そのため、Raspberry Pi OSにて諸々の設定を行っていきます。

 まず、Raspberry Pi OS (64bit)を下記より最新のファイルをダウンロードして、microSDカードへ書き込みます。(カードリーダー経由)
 ※32bit版でも問題ないのでお好きな方を。

  ・Raspberry Pi OS (64 bit)
   https://downloads.raspberrypi.org/raspios_arm64/images/

  ・同 Lite version
   https://downloads.raspberrypi.org/raspios_lite_arm64/images/

 今回は、コンソールモードの Lite版を使用します。ファイルサイズも小さいので。
 記事執筆時点のイメージは、2021-03-04-raspios-buster-arm64-lite.zip です。
 通常のデスクトップ版を使用する場合は、別途、USB接続のマウスも必要になるので、用意しておきます。
 イメージの書込みに Raspberry Pi Imagerを使用します。
 https://downloads.raspberrypi.org/imager/imager_latest.exe

 Raspberry Pi Imagerを PCにインストール後、起動します。
 「CHOOSE OS」に上記でダウンロードしたイメージを選択し、「CHOOSE STORAGE」に microSDをセットしたカードリーダーを指定します。

 続いて、事前に SSHやタイムゾーン等の設定も行えるようになっているので、画面上で以下のキーを押下します。

  [Ctrl] + [Shit] + [X]

 すると設定画面が表示されるので、「Enable SSH」をチェックし、「Use password authentication」を選択。
 SSHから接続するためのパスワードを設定します。
 ※このパスワードはログイン時の「raspberry」とは別の新しいSSH用のパスワードを入力します。

 次に「Set locale settings」をチェックし、「Keyboard layout」は jpへ変更。
 ※デフォルトの usであってもアクセス元のキーボード配列が適用されるようです

 「Write」にて、書き込みを実施。


 書き込みが完了したら、Raspberry Pi Imagerを終了し、カードリーダーを取り出して microSDをラズパイへセットします。

2.ラズパイの USB起動を設定する
 ラズパイの電源を入れ、Raspberry Pi OSを起動します。
 しばらく待ってから、Windows PCより TeraTermでラズパイにアクセスします。
 ※IPアドレスは、調べてください。

 無事にアクセスできると、以下のようにプロンプト画面が表示されます。

 Lite版ではなく、Full版で確認する場合は、ディスプレイにログインプロンプトが表示されるので、以下でログインします。

  ユーザー名: pi
  パスワード: raspberry

 ログイン後の状態では、ロケールやキーボード配列が日本仕様になっていないため、その設定を行います。
 私は、「sudo」ってするのが面倒なので、いつも rootになって作業しています。ここはそれぞれのやり方で行ってください。
 rootになるには、以下のコマンドを入力します。

pi@raspberrypi:~ $ sudo -s

 プロンプトが「$」から「#」に変われば、rootになっています。
 事前に設定していない場合、もしくは、SSH接続していない場合は、以下のコマンドを入力します。

root@raspberrypi:/home/pi# raspi-config

 するとメニュー画面が表示されるので、タイムゾーンやキーボード等の設定を行う場合は  「5 Localisation Options」を[↓]で選択して、Enterを押下します。
 それぞれを[↓]で選択して、諸設定を行ってください。
 設定が終わったら、[Tab]で<Finish>へ移動させ、Enterで終了します。

 プロンプトに戻ったら、次は、ラズパイの EEPROMを更新します。
 この EEPROMのバージョンが最新でないとUSBからの起動ができません。
 以下のコマンドで確認します。

root@raspberrypi:/home/pi# rpi-eeprom-update

 表示されたタイムスタンプが、「2020/9/3」より前の日付の場合は、以下のコマンドを入力することで EEPROMも更新されます。
 ※この中に rpi-eeprom パッケージがあり、最新の EEPROMも含まれています
 ※上記画像では、既に更新された状態になっています

root@raspberrypi:/home/pi# apt update
root@raspberrypi:/home/pi# apt full-upgrade

 ここで一度、再起動させます。

root@raspberrypi:/home/pi# reboot

 再度、ラズパイにアクセスして EEPROMのバージョンを確認します。

root@raspberrypi:/home/pi# rpi-eeprom-update

 「2020/9/3」以降の日付に変わっていることを確認します。
 ここで、最新版の EEPROMがアナウンスされている場合は、以下のファイルの内容を編集します。

root@raspberrypi:/home/pi# nano /etc/default/rpi-eeprom-update
  -----------------------------------------------------
  FIRMWARE_RELEASE_STATUS="default"
   ↓
  FIRMWARE_RELEASE_STATUS="stable"
  -----------------------------------------------------

 [Ctrl] + [o(オー)]で保存します。保存するファイルを聞かれますので、そのまま Enterを押下します。
 [Ctrl] + [x]でエディタを終了します。
 手動にて EEPROMを更新します。

root@raspberrypi:/home/pi# rpi-eeprom-update -a

 ここで一度、再起動させます。
 再度、ラズパイにアクセスして EEPROMのバージョンを確認します。

root@raspberrypi:/home/pi# rpi-eeprom-update

 最新の日付に変わっていれば、本来の目的となるUSB起動の手順を行います。
 タイムゾーン等を変更したメニューを表示します。

root@raspberrypi:/home/pi# raspi-config

 「6 Advanced Options」を選択します。

 続いて「A6 Boot Order」を選択します。

 更に「B2 USB Boot」を選択します。

 何か処理が行われ、「USB is default boot device」のメッセージ画面が表示されたら、OK(Enter)を押下します。

 メニューを終了します。
 「Would you like to reboot now?」の問いに対し、No(Enter)を押下します。
 プロンプトに戻ったら、ラズパイをシャットダウンします。

root@raspberrypi:/home/pi# halt

 以上で、EEPROMの更新およびUSB起動の設定が完了です。
 ラズパイの電源を切り、microSDを取り出します。

 SSD起動準備

ここからは、USB接続したSSDから起動させるための手順となります。

3.ubuntu OSイメージを下記のサイトから入手します。
 https://ubuntu.com/download/raspberry-pi

 ※Raspberry Pi 3および Raspberry Pi 4は、同じイメージファイル
 ※LTSの最新版である Ubuntu Server 20.04.2 LTS を使用

4.SSD(mSATA)にイメージファイルを書き込み
 SSDへのイメージ書き込みについては、Raspberry Pi Imagerにて行います。
 Raspberry Pi Imagerは、下記URLからダウンロード。
 https://www.raspberrypi.org/software/

 Raspberry Pi Imagerを起動します。
 「CHOOSE OS」をクリックするとリストが表示されるので、リストの一番下にある「Use custom」を選択。

 手順3でダウンロードしたイメージが格納されたフォルダへ移動し、ファイルを選択します。


 「CHOOSE STORAGE」に USB接続の SSDがセットされた外付けケース等のドライブを指定します。

 「Write」にて、書き込みを実施。

 ラズパイの設定ファイルを編集

 イメージの書き込み完了後、[ウィンドウズキー] + [E]でファイルエクスプローラを起動し、「sysytem-boot」と書かれたドライブを開きます。
 ※「sysytem-boot」が見つからない場合は、[F5]を押下して最新情報に更新してください。
  それでも表示されない場合は、一度、USBアダプターを取り出し、再度、USBへ接続してください。

 その中の config.txtをメモ帳やテキストエディタで開きます。
 使用するラズパイのセクションを以下のように変更します。
 ※例では、共通定義とラズパイ4の箇所([pi4]と[all])を変更しています。

[pi4]
#kernel=uboot_rpi_4.bin	←コメント
max_framebuffers=2
dtoverlay=vc4-fkms-v3d	←追加
boot_delay		←追加
kernel=vmlinuz		←追加

[pi2]
kernel=uboot_rpi_2.bin

[pi3]
kernel=uboot_rpi_3.bin

[all]
arm_64bit=1
#device_tree_address=0x03000000		←コメント
initramfs initrd.img followkernel	←追加

 config.txtを保存します。
 続いて、X857拡張ボードから起動させるために、cmdline.txtを開いて、先頭に以下を追加します。

usb-storage.quirks=152d:0578:u

 cmdline.txtを保存します。
 事前にIPアドレスを固定で設定しておきたい場合は、network-configを編集します。

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
  ↓
network:
    ethernets:
        eth0:
            addresses:
            - 192.168.0.10/24  ←環境に合わせて変更してください
            dhcp4: false
            dhcp6: false
            nameservers:
                addresses:
                - 192.168.0.1  ←環境に合わせて変更してください
            optional: true
    version: 2

※無線LANを有効にする場合
    wifis:
        wlan0:
            access-points:
                {SSID名}:                      ←無線LANルーターのSSID名
                    password: {パスワード}     ←無線LANルーターに接続するパスワード
                ※記述例
                aterm-123abc-a:
                    password: 1a23bc4d
            dhcp4: true
            dhcp6: true
            optional: true

 network-configを保存します。
 完了後、USB接続したSSDを取り出します。

 ubuntuの起動とリモート接続

 イメージを書き込んだ SSDをX857拡張ボードにセットし、ラズパイとUSB接続します。
 ラズパイの電源を入れ、ubuntuを起動します。
 X857拡張ボードのUSB側にあるLED(青色)が点滅してれば、SSDにアクセスしている状態です。
 点滅していなかったら、設定に不備があるか、正しくUSBが接続されていない等が考えられます。
 設定の見直しや、接続の確認をしてください。

 しばらく待ってから、Windows PCより TeraTermでラズパイにアクセスします。
 ※IPアドレスは、事前に設定したものです。

 無事にアクセスできると、プロンプト画面が表示されます。
 ここまでで、起動プロセスが表示されていれば、次の作業に入ります。

■IPアドレスを設定していない場合のIPアドレス確認方法
 LAN内で使用されているIPアドレスを走査

 [Windows(コマンドプロンプト)の場合] ※例では、192.168.0.1 ~ 192.168.0.50までを確認します

for /l %i in (0,1,50) do ping -w 1 -n 1 192.168.0.%i && arp -a 192.168.0.%i >> d:\in_use_ip.log

 [Linuxの場合] ※例では、192.168.0.1 ~ 192.168.0.254までを確認します

echo 192.168.0.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl

■ログイン
 ログインプロンプトの状態なので、ユーザー名とパスワードを入力します。
 初期ユーザーとパスワードは、以下の通りです。

  login username is “ubuntu”
  password is “ubuntu”

■パスワードの変更
ログイン後、直ぐにrootパスワードの変更が求められるので、新しいパスワードを設定します。

ここまで来れば、あとはサーバーの設定やサービスのインストールを行っていく手順になります。
その辺は、次回で。
お疲れさまでした。





当ブログをご覧いただきありがとうございます!
当ブログの記事が、少しでも役に立っているようでしたら、投げ銭でのサポートをしていただけると嬉しいです。投げ銭は、Amazonギフト券で行っていただいてます。
金額は 15円から自由に設定が可能です。
投げ銭のサポート方法については、こちらをご覧ください。