Skip to content

Latest commit

 

History

History
113 lines (66 loc) · 6.79 KB

system-linux.md

File metadata and controls

113 lines (66 loc) · 6.79 KB

Linuxシステム

SOLID for Raspberry Pi 4で使用するLinuxシステムについて説明します。

OSイメージ

LinuxシステムのOSイメージはRaspberry Pi OSの公式イメージ作成ツール pi-gen を使用してビルドされています。SOLID for Raspberry Pi 4固有のアプリケーション・デバイスドライバを追加していますが、それ以外は本家Raspberry Pi OS (64-bit) とほとんど変わりません。

カーネルイメージ

raspberrypi-kernel パッケージが提供する公式サポートされたLinuxカーネルを使用しますが、イメージにパッチを当ててブート段階を追加することでCPU0/1でSOLID-OSを最初に起動するようにしています。Linuxカーネルは残りのCPU2/3で起動します。

パッチは ghost-rpi4 パッケージが登録する /etc/kernel/postinst.d フックによってLinuxカーネルが更新されるたびに自動的に再適用されます。 /boot/config.txt で次のように指定することでパッチ済みカーネルからブートしています。

# Load the special kernel containing a Linux kernel and a SOLID-OS
# loadable application host ("Ghost").
kernel=ghost-rpi4.bin.gz

SOLID-OSのブートを一時的に無効化したい場合、この kernel ディレクティブをコメントアウトして再起動してください。 /boot はFATパーティションなのでWindowsからでもマウントして編集できます。

Ghostd

Ghostdはモニタデバッガからデバッグモニタへの通信やSOLIDアプリケーションからOS間通信機構を介して行われるファイルシステム・ネットワークAPIコールを仲介するデーモンプログラムです。これはsystemd unit ghostd.service として登録されており、 systemctl restart ghostd などのコマンドで動作を制御することができます。

設定ファイルは /etc/ghostd.toml にあり、ファイルシステム・ネットワークAPIコールをLinuxシステムコールに変換して処理するサーバー (OSCOM RPCサーバー) をどのユーザ・グループの権限で起動するか (rpc.{user,group}) などを指定できます。

注意: SOLID for Raspberry Pi 4では listen キー以下の設定を変更することはサポート対象外であり、IDEとの連携に支障をきたす可能性があります。また、rpc.{user,group} はセキュリティ機構として使用すべきではありません。

Ghost CLI

Ghost CLIはGhostdに付属するツールで、これを使用することで動作中のGhostdにコマンドを送信し、バージョンを取得したり、アプリケーションイメージ (.slo ファイル) をデバッガをアタッチせずにロードしたりすることができます。

  # アプリケーションをロードする
$ ghost load myapp.slo

  # バージョン情報を表示する
$ ghost version

/etc/ghostd-autorun.slo にアプリケーションイメージを置くとLinux起動時に ghostd-autorun.service systemd unitによって自動的にロードされます。

リモートアクセス

開発環境からLinuxシステムにリモートアクセスするには次の方法があります。

SSHリモートログイン

Raspberry Pi SelectorからRaspberry Piに接続するためには ライセンスの有効化 で説明しているようにSSHの設定が必須なため、開発環境からリモートログインするにはSSHが最も自然な方法です。

SSHを使用してリモートログインするには以下のコマンドを実行します。 piraspberrypi はそれぞれイメージ書き込み時にRaspberry Pi Imagerで指定したユーザー名とホスト名で置き換えてください。

> ssh pi@raspberrypi

初回接続時は以下のような確認メッセージが表示されます。yes と入力して続行してください。

The authenticity of host 'raspberrypi (192.168.1.2)' can't be established.
ED25519 key fingerprint is SHA256:qdCWQ6RypCF0acEqq4Lt26ykkImti+5ZowYNu8JnGSk.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

上の確認メッセージから続行すると、サーバー固有の識別子がホスト名と対応付けられて %USERPROFILE%\.ssh\known_hosts テキストファイルに記録されます。

公開鍵認証が設定済みで成功した場合はそのままシェルが表示されます。それ以外の場合はパスワードの入力が求められます。パスワードを入力 (画面には表示されません) して Enter を押してください。

(pi@raspberrypi) Password:

Linux raspberrypi 5.15.56-v8+ #1575 SMP PREEMPT Fri Jul 22 20:31:26 BST 2022 aarch64
  ⋮
pi@raspberrypi:~ $ _

Secure Copy

Secure Copy (scp) はSSHを経由してファイルをコピーするコマンドです。

  # カレントディレクトリにある myfile.txt を
  # リモートホストのホームディレクトリ (/home/pi) にコピーする
> scp myfile.txt pi@raspberrypi:

  # リモートホストのホームディレクトリ (/home/pi) にある myfile.txt を
  # カレントディレクトリにコピーする
> scp pi@raspberrypi:myfile.txt .

Samba

SambaはWindowsの「共有フォルダー」のプロトコルの実装です。LinuxではSambaをインストールすることにより、Linux上のフォルダーを共有したり、共有フォルダーをLinuxファイルシステムにマウントしたりできます。

設定方法に関してはRaspberry Pi公式ドキュメント (英語) を参照してください。

UARTシリアルコンソール

このOSイメージでは /boot/config.txtenable_uart がデフォルトで有効になっているため、UART (GPIO 14/15) はLinuxコンソールとして使用できます。ボーレートは115200に設定されており、デフォルト文字セットはUTF-8です。

注意: SOLID-OSの出力も同じUARTポートを使用するため、同時に出力が行われると出力内容が壊れることがあります。