PetaLinuxでSSH接続

※完全に自分のメモ用です。説明を省略した部分が多いです。


※前回の続きです
berota.hatenablog.com

はじめに

Zybo Z7-10にLinuxを入れたからにはSSH接続で色々やりたい。

将来的には入力をFPGA側で制御して、タイムスタンプ付きでテキストにまとめてホストしてるUbuntuに送る。みたいなことをしたい。

PetaLinuxは最低限のバイナリしか用意されていないのでconfigで色々設定してからProjectをビルドする必要がある。

どうやらdropbearが初期設定で登録されているようなので、これを無効化した上でsshを有効化する。

今回は同一LAN内、というよりVirtualBox内のUbuntuとボードの間のssh通信を試みる。一応同一LAN内の他のサーバーにも接続できたのでこの方法でやれば問題ないはず。

PetaLinuxでSSH接続

 一度やってしまえば楽なのだが、何かと設定が多い。

 …というより、この手順を明確にした公式ドキュメントないのかな…探すの疲れた

 それはそうと、ボードにLANケーブルを刺してネットワークに接続する必要があるので注意。

 ※PetaLinuxのバージョンは前回に引き続き2022.1です。

VirtualBoxの設定

設定 > ネットワーク > 割り当て > ブリッジアダプター に設定を変更

Ubuntuを起動しているなら再起動が必要。

PetaLinux projectの設定

projectのフォルダに移動する。

$ cd /home/username/project_1/peta_project

configからsshを有効化する手順

 configを開く

$ petalinux-config -c rootfs

 petalinux-configの画面が立ち上がるので次の手順で設定

SSHの設定とdropbear無効化
  1. Image Featuresを選択。
  2. ssh-server-dropbearをnで無効化、ssh-server-opensshをyで有効化。SaveしてExit

 Exitを1回押して

  1. Filesystem Packages > misc > packagegroup-core-ssh-dropbear
  2. packagegroup-core-ssh-dropbearを無効化

 SaveしてExit

  1. console > network > openssh
  2. openssh, openssh-sshd, openssh-sftp-server, openssh-scpを有効化
  3. Save > OK > Exit×5


・Packageの設定(これ必要?詳しい人教えてください)

  1. Image Features
  2. package-management 有効化
Petalinuxを再ビルド

$ LANG=C petalinux-build

$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot

$ sudo mount /dev/sdb1 /home/username/BOOT
$ sudo mount /dev/sdb2 /home/username/ROOT

 ここでread only(読み込み専用)と出る場合、SDカードのLockが付いてる場合があります。要注意。

$ cd /home/username/project_1/peta_project/images/linux/

$ sudo cp BOOT.BIN boot.scr image.ub /home/username/BOOT/
$ sudo tar xf rootfs.tar.gz -C /home/username/ROOT/
$ sync

 多分必要ないんだけど、念のためにVirtualbox側の設定でネットワーク > 割り当て >ブリッジアダプターに設定して再起動

gtktermの起動

 前回行った手順と同じ。USBのポートが異なる場合は対応するポートで設定してください。

$ sudo gtkterm

  1. gtktermが起動したらConfigration>portを選択。
  2. Portを/dev/tty/USB1
  3. Band Rateを115200
  4. Parityをnone
  5. Bitsを8
  6. Stopbitsを1
  7. Flow controlをnoneに設定。
  8. OKで設定が完了したら、Zyboの電源をONする。
  9. 一斉に文字が流れてPetaLinuxが起動する。
PetaLinuxにログイン

 login:petalinux
 password:てきとう

SSHする前にサーバー側で準備

 手ぶらで接続するわけにも行かないのでとりあえずサーバー側(Ubuntu)の設定を行う。
 
 前回と同じ環境なのでVirtualBox内のUbuntu20.04.1をサーバーとする。

 ローカルで接続するので鍵認証の設定は行わない。

$ sudo apt -y install openssh-server

※ここではサーバーに作成するユーザーを"peta"とした。基本的に任意。

$ sudo useradd -m peta
$ sudo passwd peta

 パスワードを設定する。忘れなければ何でもいい。

サーバーのIPが必要なので

$ ip -4 a

を実行してinetの後ろに書かれた数字をメモる。これがサーバーのIPアドレス


sudo権限を与えるなら

$ sudo visudo

で%sudoの下に

ユーザーネーム ALL=(ALL) ALL

を追加する。

SSH接続する。

 クライアント(gtktermウィンドウで実行する)でsshコマンドを使ってSSH接続する。
 

 メモしたIPアドレスを使って

$ ssh peta@IPアドレス


 以上。試しに$mkdirでディレクトリを作成し、Ubuntu側で確認すればよい。無事ディレクトリが作成されていれば成功。

$ exit

sshから抜ける