openSUSE Advent Calendar 9日目です。

M5Stack は 5.5 cm 角のディスプレイとバッテリー付きのマイコンです。SoC は ESP32 で、Wi-Fi も使えます。近々 Arduino のハンズオンを行う予定で、M5Stack を Arduino 互換ボードとして開発する環境を openSUSE 上に整えてみました。

ハードウェアのセットアップは簡単で、openSUSE が動く PC に接続するだけで cp210x として認識されます。ただし、少し前の brltty にバグがあり、アップデートが適用されていないと、M5STACK が点字ディスプレイとして持って行かれてしまいますのでご注意下さい。

[145368.714737] usb 1-1: new full-speed USB device number 15 using xhci_hcd
[145368.864518] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[145368.864523] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[145368.864526] usb 1-1: Product: CP2104 USB to UART Bridge Controller
[145368.864529] usb 1-1: Manufacturer: Silicon Labs
[145368.864531] usb 1-1: SerialNumber: 01CA75D7
[145368.866438] cp210x 1-1:1.0: cp210x converter detected
[145368.871368] usb 1-1: cp210x converter now attached to ttyUSB0

Arduino の開発環境である Arduino IDE は以下のサイトからダウンロードして、適当なディレクトリに展開します(/opt/arduino など)。Flatpak でインストールしたいところですが、ESP32 のコンパイラが Python を必要とするため、Python を同梱していない Flatpak 版は使用できません。
https://www.arduino.cc/en/Main/Software

インストールした Arduino IDE を起動して、ESP32用のツールをダウンロードします。「環境設定」を開いて「追加のボードマネージャのURL」に次のURLを設定します:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

「ツール」から「ボードマネージャ」を起動し、ESP32 の開発環境をインストールします。

ボードマネージャを使用しない方法は以下を参照:
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

1つだけインストールしなければならないのが python2-pyserial です。ビルド時に ESP32 のビルドツールが使用します。zypper か YaST からインストールして下さい。

あとは、「ツール」 > 「シリアルポート」を /dev/ttyUSB0 (dmesg に出てきたデバイス名)に設定したら準備完了です。

Arduino IDE は Java アプリで、デフォルトの設定ではフォントがきれいでないのが残念。この設定変更はまたの機会に。

OSC Tokyo/Fall 行ってきました

By Syuta Hashimoto @ 2019-12-08 18:47

この記事はopenSUSE Advent Calendar 2019の8日目です。

ftakeさんなどユーザー会の人たちと一緒に、11/23、24に明星大学で開催されたOSC Tokyo/Fall 2019に参加してきました。ftakeさんのレポートはこちらです。

セミナーは川上さんの「最近よく聞く!? ― eBPF (extended Berkeley Packet Filter) を用いた PostgreSQL の性能測定」でした。そこそこ聴衆も集まったようです。eBPF、私も使ってみたい・・・

ということで、私は他に自分のセミナーもなかったので、ブース対応と、セミナーを少し聞いてきました。

ブース

いやぁ、やっぱり特大ぎーこくん、人気者ですね。今回はお子様も多く、特大ぎーこくんは大人気でした。(一部、大人の方にも人気でした)

ブースに来てくださった方に、openSUSE知ってます?と尋ねると、知ってますよー、と返してくださる方が増えた印象です。今回は新ネタもとくになかったこともあり、YaSTやKubicのお話を中心にさせて頂きました。

また、Netpbmの漆畑さんが同じ部屋にブースを出していらっしゃって、行列などの数学の本をお勧めして頂きました。私は体系的に数学を学んでいないにもかかわらず、機械学習やりたいなーとか思っているので、ものすごく助かりました。

セミナー

主に以下のセミナーを聴かせて頂きました。

ストレージもSoftware Definedな時代です。OpenSDS,始めてみませんか。

伊藤さんによる、OpenSDSのセミナーです。OpenSDSは興味を持っていて、私は5月のopenSUSE Conference 2019では、OpenSDSの概要とKubicから使う方法についてセミナー持たせて頂きました。

OpenSDSは名前が「SODA」に変わり、そのローンチイベントを12/17日に日本で行うそうです。参加したいのですが、その日はあいにく・・・

ちなみに、OpenSDSは、Software Defined Storageのソリューションで、簡単に言いますと、ストレージのプロビジョニング、レプリケーション、バックアップなどを行うコントローラーです。それも抽象化されたコントローラーで、実際の動作は各ドライバに委譲しています。各ドライバのための統一インターフェース、といったところでしょうか。Kubic(Kubernetes)からも使えるので、Kubic(Kubernetes)のストレージ利用を柔軟にしてくれます。

コンテナーにてBittorrentメカニズムを使ったデプロイサーバの実行

Clonezillaさんのセッションです。Clonezillaはディスクを複製するソリューションですね。

アプリケーションをコンテナ実行し、Bittorrentを使って配信することで、利用を簡単・効率的にしたとのことです。コンテナにはDockerではなくSingularityを使っているそうで、理由としてSingularityの、権限制御を簡素化したりしてコンテナのアプリを動かすという所にフォーカスした設計をあげていました。また、デプロイにはBittorrentが効率的に配信できてよい、とのことです。

ITエンジニアが誤解している2020年度からの「小学校プログラミング教育」

さくらインターネットさんの前佛さんのセッションです。さくらインターネットさんは地域貢献の一環として、学校でのプログラミング授業の補佐を行っているそうで、現場視点での現状をお話してくださいました。「主役は子供」というフレーズを語る前佛さん、かっこよかったです。

まだIT業界視点、また、学校視点でも、「プログラミング教育」というものに対する誤解や不理解が多いらしく、そのあたりを整理して解説していました。プログラムをかけるようにする、という視点ではなく、プログラムが書けるような思考力を養う、また、問題を解くときにプログラムを利用するような発想ができるようなる、という視点での教育だということを強調していました。

懇親会

初日夜に開かれた懇親会に参加しました。ここでは、おーぷん万葉の(東海道LUGの?日本openSUSEユーザ会の?)橋本雅彦さんやUbuntuの柴田さんと、ibusと橋本さん作のかな漢字変換エンジンをつなぐ部分の仕様詰めなどをさせて頂いたり、さくらインターネットさんの前佛さんとコンテナのことやプログラミング教育のことについて、色々とお話させて頂いたりしました。まさに懇親会、私なりにネットワーキングさせて頂きました。

次回は

OSC Tokyo/Spring 2020は、都内駒沢大学にて、2/21(金)、2/22(土)で開催予定です。日本openSUSEユーザ会も、もちろん出展・セミナー予定ですので、是非そこでお会いしましょう!

さて、Advent Calendarの明日は、ftakeさんによる「openSUSE で M5STACK の開発環境を整える」です。IoTよりのお話ですね。乞うご期待です。

この記事はopenSUSE Advent Calendar 2019の7日目です。

さて、一年越しの遊びたいねぇを実施したいと思います。

openSUSEのコンソールで作業していると、タイプミスやパッケージの未インストールなどで、システムにないコマンドを打ってしまうことがあります。

そんな時、コンソールには次のようなメッセージが表示されると思います。

$ ifconfig

‘ifconfig’ が入力間違いでなければ、下記のように入力することで command-not-found を利用してパッケージを検索することができます:
   cnf ifconfig

ネットワーク関連のコマンドはipやssというコマンドになったため、ifconfigはdeprecatedになっていて、システムには入っていません。

ここで私はzypper seで検索したり、ぐぐったり、と、コマンドを探しに行くわけですが、簡単にどこにあるかを探してくれるコマンドがありました。

そう、それがメッセージで親切にも教えてくれている、”cnf”です。

cnf – Command Not Found

cnfはCommand Not Foundの頭文字を並べたコマンドで、そのコマンドがどのパッケージに入っているかを探してくれたり、$PATHに設定がないのでは、などのNot Foundとなってしまう理由を表示したりしてくれます。なお、command-not-foundというコマンドも同じ模様。

$ cnf ifconfig

                        …  
プログラム ‘ifconfig’ は下記のパッケージに存在しています:
 * net-tools-deprecated [ パス: /bin/ifconfig, リポジトリ: zypp (repo-oss) ]
 * net-tools-deprecated [ パス: /usr/bin/ifconfig, リポジトリ: zypp (repo-oss) ]

下記を利用してインストールしてみてください:
   sudo zypper install net-tools-deprecated

net-tools-deprecatedパッケージにあることと、zypperコマンドでインストール可能なことが表示されました。ここでdeprecatedと名前のついているパッケージに入っているので、ぐぐる意味がでてきそうです。

コマンド名からパッケージが推測できる場合はzypper seで探すことも簡単ですが、そうでない場合などは有効ですね。たとえば、brctlなど。

ちなみに、私はbrctlを導入済みです。この状態でcnfを実行するとどうなるでしょうか。(導入済みなのに、brctlとコマンドを打ってもNot Foundとなってしまった想定)

$ cnf brctl

                     …  
プログラム ‘brctl’ は、システムにインストール済みのパッケージ ‘bridge-utils’ 内に存在します。

絶対パス ‘brctl’ は ‘/usr/sbin/brctl’ を指しています。そのため、このコマンドを実行するにはスーパーユーザ (root など) の権限が必要
かもしれません。

をを、親切にも、/usr/sbin下だから、sudoいるんじゃないの?と、アドバイスをしてくれます。

他にも、一般コマンドで試してみると、

$ cnf podman

                      …  
プログラム ‘podman’ は、システムにインストール済みのパッケージ ‘podman’ 内に存在します。

絶対パス ‘podman’ は ‘/usr/bin/podman’ を指しています。左記のパスがお使いの環境での $PATH 変数に含まれているかどうかご確認ください。

ちゃんと、$PATHに指定されているかをアドバイスしてくれます。

チュートリアルをしているときなどで、コマンドが見つからなかった場合、まずcnf叩いてみるのが有効そうですね。ただ、私の環境では1-clickで追加したリポジトリにあるパッケージを認識しなかったりしたので、ちょっとチューニングがいるのかもしれません。(Cloud:OpenStack:Masterに入っている、genisoimageなど)

まとめ

  • cnfはそのコマンドがNot Fonudとなる理由を表示するユーティリティで、これ自体は勝手に何かをインストールしたりはしないので、気軽に使える
  • コマンド名からパッケージ名の推測が難しいときや、パッケージ入れたのに使えないときに使用する
  • 認識しないリポジトリがある?←要調査
  • manを見ると、厳密にはハンドラでbashやzshに統合されてるらしい
  • 他ディストリビューションでは同様コマンドはあるのでしょうか?情報お持ちの方、是非ご教示ください

OSC 2019 Tokyo/Fall に参加しました

By ftake @ 2019-12-04 00:42

openSUSE Advent Calendar 3日目です。

11月23日、24日に東京都日野市の明星大学で開催されたオープンソースカンファレンス2019 Tokyo/Fall に日本 openSUSE ユーザ会として参加しました。

今回は久しぶりに超特大カメレオンぬいぐるみが登場!宅急便で送ることのできるぎりぎりのサイズの箱に詰められてやってきました。

ブースでは フリーチラシ版の Geeko Magazine を配布しました。

セミナーは川上さんによる「最近よく聞く!? ― eBPF (extended Berkeley Packet Filter) を用いた PostgreSQL の性能測定」で、Asia Summit の内容を日本語で話してもらいました。難しい内容でしたが、そこそこの人数が集まったので良かったです。

次回は2月21日(金)、22日(土)で、会場は9年ぶりに23区内に戻り駒澤大学です。

Podmanを使ってみた

By Syuta Hashimoto @ 2019-12-02 22:31

この記事は openSUSE Advent Calendar 2019 の二日目です。

Kubicでは、コンテナを制御するコマンドに、dockerでなくてpodmanが採用されています。Podmanは、デーモンレス、ルートレスなコンテナ制御ソリューションで、主にRed Hatで開発されています。せっかくなので、podmanを使ってみました。

インストール

KubicやTumbleweedが新しいバージョンをパッケージングしているのに対し、Leap 15.1用は若干バージョンが古いようです。Podman は日進月歩で成長してますので、極力なら新しいバージョンを使いたい所。私はTumbleweedの派生であるMicroOSを使って、新しいバージョンを使っています。

ネットワーク設定ファイルパッケージ podman-cni-config も同時にインストールする必要がありますが、podmanの推奨に設定されていて、podmanのインストールだけで自動的に入ってくれるかもしれません。

zypper in podman podman-cni-config

MicroOSはトランザクショナルサーバーのため、私はtransactional-updateコマンドでインストールしました。(このあたりの詳細はGeekoMagazineに書いています。)

デーモンレス

Dockerを動かす時、Dockerのサーバーを起動させますよね。podmanはサーバーを使わない設計なので、サーバーを起動させる必要はありません。また、サーバー型であることに起因する脆弱性も回避しているとのことです。

ルートレス

Dockerはルート権限で実行するか、Dockerグループに追加したユーザーで実行する必要があり、これが脆弱性に結びつくのでは、と言われています。podmanは一般ユーザー権限でも動作するように設計されていて、この問題を回避しています。

ただ、私が使ってみた感じですと、一般ユーザーでボリュームマウントがうまくいかないんですよね・・・おいおい調査したいと思います。

Docker互換

もちろん、Dockerイメージをそのままrunすることができます。また、コマンドもDockerと同じように設計されていて、dockerの部分をpodmanに置き換えるだけでほとんどのコマンドを実行できます。実際に、dockerコマンドをpodmanのエイリアスにする、という代替方法も紹介されています。

  • コンテナ実行 podman run 【イメージ名】
  • コンテナ一覧 podman ps
  • コンテナ停止 podman stop 【コンテナIDやコンテナ名】
  • コンテナ削除 podman rm 【コンテナIDやコンテナ名】

などなど。

使ってみて

コマンドがDockerと同じなので、同じように使えて、違和感とかは全くありませんでした。サーバー起動に気を使わなくていいのは、素直に楽ですね。調査すればDockerとPodmanの差みたいなところもでてくると思うのですが、そこまで使い込むのはもうちょっと先になりそうです。(通常の使用では差がわかりませんでした。)

イメージ作成

Podmanは、Dockerのコンテナ制御、イメージ作成、の機能のうち、コンテナ制御を受け持っています。イメージの作成はbuildahというソリューションで行うことができます。アドベントカレンダーの中で、buildahについても紹介できればと思っています。

明日は ftakeさんによる、OSC Tokyo/Fallのイベントレポートです。・・・そういえば、私も参加させて頂いていました。 ftakeさんの後にイベントレポート書きますね!

この記事は openSUSE Advent Calendar 2019 一日目の記事です。

openSUSEには安定版のLeap、ローリング・リリース(最新バージョンを追いかける感じ)のTumbleweedがありますが、その他にもKubernetes用OSのKubicなどもリリースされています。Leapにしても、ライブ用があったりしたので、ダウンロードサイトを覗いて何があるのか見てみました。

ダウンロードサイトへの導線はメインページにあります。ここを見ると、左側にTumbleweed、右側にLeapの見出しがまず目に入ると思います。マウスオーバーすると「Tumbleweedのインストール」「Leapのインストール」という、ダウンロードサイトへのリンクボタンが表示されます。

前はダウンロードサイトへのリンクがどこかわかりづらかったのですが、大分見やすくわかりやすいデザインにかわりましたね。

Leapのダウンロードサイト

選べるのは以下の4つです。

インストール x86_64

通常のLeapです。

JeOS x86_64

JeOSってなんだろう?と思って調べてみると、openSUSEのwikiがありました。仮想環境やクラウドで利用するための、LeapをスリムにしたOSのようです。JeOSを元に自分なりのカスタマイズをしたイメージをKiwiで作成する、みたいな使い方もあるようですね。表示されている容量を通常のLeapと比較すると、スリムさがよくわかります。

ライブ x86_64

CDやUSBなどから起動できるライブイメージですね。

移植版 aarch64 ppc64le

説明に、「openSUSE Leap の PC 以外のアーキテクチャへの移植版は、本体とは異なる少人数のコミュニティチームでメンテナンスされております。」とありました。メンテナの方たちに感謝です。

Tumbleweedのダウンロードサイト

こちらも4種類ありました。

インストール x86_64 i586 aarch64 ppc64le

通常のTumbleweedです。

Kubic x86_64 aarch64

Kubernetesをすぐ動かせるOSです。MicroOSという、Tumbleweedから派生した、スリムでコンテナを動かすことを目的としたOSを元にしています。・・・このあたりの関係性や定義はちょっとずつかわるらしく(あるいは私が正確に把握していなくて)、サイトを久しぶりに見ると表現が変わっていたりします。

私がGeekoMagazineに構築記事を書いたり、OSC東京のセミナーで紹介させて頂いたのが、このOSです。

JeOS x86_64

TumbleweedのJeOSですね。今度使ってみようと思います。やはり、こちらも通常版とのサイズの差がはっきりしてます。

ライブ x86_64 i686 aarch64

Tumbleweedのライブイメージです。

所感

JeOS、Kubicあたりが、目新しい単語でしょうか。私はKubernetes構築をKubicでしているのでKubicには馴染みがありましたが、JeOSは単語だけ聞いたことがある程度でした。今度使ってみようと思います。

何気に、ライブイメージも使ったこと無いので、どんな感じなのか使ってみたいですね。

さて、次は・・・・次?みなさん、Advent Calendar に登録がありません!!是非登録してください!

橋本修太です

私が、では無く、ユーザ会で、なのですが、「日経Linux 9月号」に「openSUSE Leap 15.1がリリース 会議では今後の方針も明らかに」と題してレポートを書かせて頂きました。(文責は私でございます。)

内容は、「GeekoMagaze 2019 夏」号で武山さんが記事にされているLeap15.1の紹介から要点と、5月にニュルンベルグで開催されたopenSUSE Conference 2019のレポートです。

Leap 15.1は、マイナーバージョンアップリリースなので目玉機能とかよりは15.0からのスムーズな移行に重点が置かれているのですが、それでも細かい所は結構かわっていて(YaSTやカーネルへのパッチなど)、openSUSEユーザはもちろん、ユーザで無くとも興味を持って頂ける記事となっています。

是非、この記事で状況を把握していただいて、openSUSE Leap 15.1 を使ってみましょう

日経Linux 9月号 オフィシャルはこちら