Slide 1

Slide 1 text

Buildrootでsftpサーバーをビルド 鹿児島Linux勉強会 2024.2 2024. 2. 18 か ず え だ kazueda 1

Slide 2

Slide 2 text

kazueda(かずえだ)の紹介 • 大阪出身、丙午、おとめ座、O型 • 科学者(化学) • 2003年4月から浜松で、働き始める • 自転車での移動が生活の足 • 趣味は「ラジオを聴くこと」、「アメ リカのコミックの邦訳を読むこと」 @kazueda 2 slideshare speaker deck https://qiita.com/kazueda

Slide 3

Slide 3 text

これまでの話 • GPIO搭載の安価なLinuxボード「Milk-V Duo」用のPythonプ ログラムをビジュアルプログラミング環境で行いたい 3

Slide 4

Slide 4 text

これまでの話 • GPIO搭載の安価なLinuxボード「Milk-V Duo」用のPythonプ ログラムをビジュアルプログラミング環境で行いたい • 「ビジュアルプログラミング」で「フィジカルコン ピューティング」を行う環境の構築 4

Slide 5

Slide 5 text

これまでの話 • ビジュアルプログラミング:Windows10上の「Mind+」 – 「Mind+」はpythonを利用可能なブロックプログラミング環境 • フィジカルコンピューティング:Linuxボードの「Milk-V Duo」 – 「Milk-V Duo」では、buildrootで環境構築 5

Slide 6

Slide 6 text

Milk-v duo 6 - CVITEK CV1800B (C906@1Ghz + C906@700MHz) - Dual RV64 Core up to 1GHz - 64MB RAM - Provides 10/100Mbps Ethernet via optional add-on board - Technology supports running both Linux and RTOS 「Milk-v duoでPython」秋葉原ロボット部 第131回、2023. 8. 27

Slide 7

Slide 7 text

Milk-v duo 7 - CVITEK CV1800B (C906@1Ghz + C906@700MHz) - Dual RV64 Core up to 1GHz - 64MB RAM - Provides 10/100Mbps Ethernet via optional add-on board - Technology supports running both Linux and RTOS 「Milk-v duoでPython」秋葉原ロボット部 第131回、2023. 8. 27 特徴 ● コミュニィティ主体で展開 ● 情報の鮮度が短い(すぐ、自動でパッチが当てられなくな る、ソースへのマージを待つ方が時間の節約)。 ● 情報の主な言語が中国語(ソフトはBaidu、ハードは Oshwhub、利用にはWeChatのIDが必要) ● Raspberry pi (pico)の情報や周辺機器を転用可能 ● オープンハードウェアとオープンソフトウェア ● Linuxのリソース ● pinpongライブラリを介してPythonで制御

Slide 8

Slide 8 text

Mind+ 8 https://mindplus.cc/en.html

Slide 9

Slide 9 text

Mind+ 9 https://mindplus.cc/en.html 特徴 ● Scratch3.0から派生 ● ブロックを使ったビジュアルプログラミング環境 ● 対応言語は、Arduino CとPython ● ブロックプログラムをテキストファイルに ● 対応マイクロコントローラは、Arduino、microbit、ESP32ベ ースのデバイス等

Slide 10

Slide 10 text

Mind+ 10 https://mindplus.cc/en.html 特徴 ● Scratch3.0から派生 ● ブロックを使ったビジュアルプログラミング環境 ● 対応言語は、Arduino CとPython ● ブロックプログラムをテキストファイルに ● 対応マイクロコントローラは、Arduino、microbit、ESP32ベ ースのデバイス等 ● Debian OSで動作するUNIHIKER

Slide 11

Slide 11 text

Mind+ 11 https://mindplus.cc/en.html 特徴 ● Scratch3.0から派生 ● ブロックを使ったビジュアルプログラミング環境 ● 対応言語は、Arduino CとPython ● ブロックプログラムをテキストファイルに ● 対応マイクロコントローラは、Arduino、microbit、ESP32ベ ースのデバイス等 ● Debian OSで動作するUNIHIKER <ーMilk-v duoでも使える?

Slide 12

Slide 12 text

これまでの話 • ビジュアルプログラミング:Windows10上の「Mind+」 – 「Mind+」はpythonを利用可能なブロックプログラミング環境 • フィジカルコンピューティング:Linuxボードの「Milk-V Duo」 – 「Milk-V Duo」では、buildrootで環境構築 • クライアント―サーバー間はSSH接続 12

Slide 13

Slide 13 text

これまでの話 1. 「Mind+」上でプログラムを作成 2. 「Mind+」から「Linuxボード」に作成したプログラムの ファイルをsftpプロトコルで転送 3. 「Linuxボード」上で、転送されたプログラムからpython スクリプトを取り出す 4. プログラム実行 13

Slide 14

Slide 14 text

これまでの話 1. 「Mind+」上でプログラムを作成 2. 「Mind+」から「Linuxボード」に作成したプログラムの ファイルをsftpプロトコルで転送 3. 「Linuxボード」上で、転送されたプログラムからpython スクリプトを取り出す 4. プログラム実行 14 Linuxボード(Raspberry pi)上で 「Project upload error, Error: No such file or directory」 が表示されてファイル転送に失敗

Slide 15

Slide 15 text

これまでのお話 • SSH接続してきたクライアントのログをとる • 「/etc/ssh/sshd_config」 の Log Level「-l log_level」 Jan 21 16:29:34 raspi4 sftp-server[2043]: received client version 3 Jan 21 16:29:34 raspi4 sftp-server[2043]: open "/usr/local/lib/python3.7/dist-packages/.pth" flags WRITE,CREATE,TRUNCATE mode 0666 Jan 21 16:29:34 raspi4 sftp-server[2043]: sent status No such file Jan 21 16:29:34 raspi4 sftp-server[2043]: debug1: read eof Jan 21 16:29:34 raspi4 sftp-server[2043]: session closed for local user root from [192.168.0.31] 15

Slide 16

Slide 16 text

これまでのお話 • 「/etc/ssh/sshd_config」 の Log Level「-l log_level」 Jan 21 16:29:34 raspi4 sftp-server[2043]: received client version 3 Jan 21 16:29:34 raspi4 sftp-server[2043]: open "/usr/local/lib/python3.7/dist-packages/.pth" flags WRITE,CREATE,TRUNCATE mode 0666 Jan 21 16:29:34 raspi4 sftp-server[2043]: sent status No such file Jan 21 16:29:34 raspi4 sftp-server[2043]: debug1: read eof Jan 21 16:29:34 raspi4 sftp-server[2043]: session closed for local user root from [192.168.0.31] 16 Linuxマシン側に "/usr/local/lib/python3.7/dist-packages を作成

Slide 17

Slide 17 text

buildrootでsftpサーバー • 「Milk-V Duo」はSCPプロトコルのみサポート <ーSFTPプロトコルを追加 1. SSHサーバーの「dropbear」とsftpサーバーの 「gesftpserver」の組み合わせ 2. SSHサーバーの「dropbear」とsftpサーバーの「openssh- sftp-server」との組み合わせ 3. SFTPプロトコル対応のSSHサーバーの「openssh-server」 17

Slide 18

Slide 18 text

buildrootでsftpサーバー • 「Milk-V Duo」はSCPプロトコルのみサポート <ーSFTPプロトコルを追加 1. SSHサーバーの「dropbear」とsftpサーバーの 「gesftpserver」の組み合わせ 2. SSHサーバーの「dropbear」とsftpサーバーの「openssh- sftp-server」との組み合わせ 3. SFTPプロトコル対応のSSHサーバーの「openssh-server」 18 https://www.greenend.org.uk/rjk/sftpserver/

Slide 19

Slide 19 text

buildrootでsftpサーバー • 「milkv-duo_musl_riscv64_defconfig」に追加 BR2_USE_WCHAR=y BR2_TOOLCHAIN_HAS_THREADS=y BR2_USE_MMU=y BR2_PACKAGE_LIBICONV=y BR2_ENABLE_LOCALE=y BR2_PACKAGE_GESFTPSERVER=y 19

Slide 20

Slide 20 text

buildrootでsftpサーバー • Python2がないと、ビルド失敗 • Python3ではなくPython2を使う場合も、ビルド失敗 • 「gesftpserver.mk」にパッチを当てて、 Python2を探さな いようにする 20 https://git.buildroot.net/buildroot/commit/?id=422fd73fadfbe33523e1687f90bbfecd3f7ab5d5

Slide 21

Slide 21 text

buildrootでsftpサーバー The build of gesftserver in an environment without Python fails with: checking for Python 2.4 or better... configure: error: cannot find Python 2.4 or better However, it turns out that Python is only needed for tests, which we don't run/use in Buildroot, so we can safely build gesftpserver without Python. 21 https://git.buildroot.net/buildroot/commit/?id=422fd73fadfbe33523e1687f90bbfecd3f7ab5d5

Slide 22

Slide 22 text

buildrootでsftpサーバー • Python2がないと、ビルド失敗 • Python3ではなくPython2を使う場合も、ビルド失敗 • 「gesftpserver.mk」にパッチを当てて、 Python2を探さな いようにする 22 https://git.buildroot.net/buildroot/commit/?id=422fd73fadfbe33523e1687f90bbfecd3f7ab5d5

Slide 23

Slide 23 text

buildrootでsftpサーバー @@ -23,6 +23,10 @@ GESFTPSERVER_DEPENDENCIES += ¥ $(if $(BR2_ENABLE_LOCALE),,libiconv) ¥ $(if $(BR2_PACKAGE_OPENSSH),openssh) +# Python on the host is only used for tests, which we don't use in +# Buildroot +GESFTPSERVER_CONF_ENV += rjk_cv_python24=false + # openssh/dropbear looks here define GESFTPSERVER_ADD_SYMLINK ln -sf gesftpserver $(TARGET_DIR)/usr/libexec/sftp-server 23 https://lore.kernel.org/buildroot/[email protected]/T/

Slide 24

Slide 24 text

buildrootでsftpサーバー $ cd builroot-2021.05 $ make clean $ make milkv-duo_musl_riscv64_defconfig $ make all 24

Slide 25

Slide 25 text

動作可能になりました 25

Slide 26

Slide 26 text

まとめ • 「buildroot」で「gesftpserver」の起動に成功 • GPIO搭載の安価なLinuxボード「Milk-V Duo」用のPythonプ ログラムをビジュアルプログラム「Mind+」で実現 • 後学のため、「openssh-sftp-server」、「openssh-server」 のインストール 26 今後の展開 おしまい