Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Actualización de las aplicaciones de KDE de diciembre de 2020

Me complace anunciar la actualización de las aplicaciones de KDE de diciembre de 2020, una actualización con presentación de un nueva aplicación: KDE Itinerary y la mejora de muchas otras.

Actualización de las aplicaciones de KDE de diciembre de 2020

Es complicado llevar al unísono todo el ecosistema que representa el proyecto KDE. No obstante creo que la Comunidad lo lleva bastante bien al dividir su trabajo en tres ramas diferenciadas: entorno de desarrollo KDE Frameworks, escritorio Plasma y aplicaciones KDE.

Actualización de las aplicaciones de KDE de diciembre de 2020
El ritmo de lanzamiento del Proyecto KDE se merece una agenda para él solo.

Esta estructura de trabajo parece funcionar bastante bien desde hace mucho tiempo (concretamente desde el lanzamiento de Plasma 5) siendo la última rama de ellas, el de las aplicaciones KDE, la que más problemas puede dar ya que es complicado que todas los programas sigan el mismo ritmo de desarrollo. No obstante hay que destacar que la mayor parte de ellas siguen el paso que se espera de ellas.

De esta forma, mes a mes los desarrolladores lanzan una gran actualización de sus aplicaciones, os animo a seguir la de noviembre o meses anteriores para poder ver esta evolución constante.

Actualización de las aplicaciones de KDE de diciembre de 2020
Decenas de aplicaciones pueblan el ecosistema del Proyecto KDE.

Así que las actualizaciones destacadas de KDE de este diciembre 2020 son:

  • Presentación de KDE Itinerary, una aplicación que te proporciona toda la información que necesitas mientras estás de viaje. Este asistente de viaje digital nos proporciona horarios y ubicaciones de trenes, aviones e itinerarios de autobuses de larga distancia, así como información sobre reservas de hoteles o eventos.

Actualización de las aplicaciones de KDE de diciembre de 2020
  • Kontact, el administrador de información personal, ha mejorado la sincronización de Google y ha activado las notificaciones cuando es necesario volver a autenticar la cuenta de Google.
    • También ha adquiridos un nuevo complemento que nos permite configurar las preferencias de varias carpetas de correo al mismo tiempo.
    • Kleopatra, el gestor de certificados de Kontact, admite ahora más tipos de tarjetas inteligentes. Además, su interfaz de usuario también se ha simplificado y ahora resulta más fácil cambiar entre las vistas principales.
    • Akonadi, la infraestructura de almacenamiento de datos subyacente para Kontact, admite ahora, entre otras mejoras, el algoritmo de compresión LZMA para almacenar datos, reduciendo el uso del disco hasta en un 30%.
    • Por último destacar que se ha añadido el servicio EteSync con el que nos permite el uso de de sincronización segura, cifrado de extremo a extremo y que, además, respeta la privacidad para los contactos, calendarios, tareas y notas.
  • Dolphin, el gestor de archivos y carpetas de KDE, ha recibido varios cambios en la interfaz de Dolphin le facilitan la navegación por los dispositivos de almacenamiento y los documentos, fotos, canciones y directorios.
  • Konsole tiene ahora una barra de herramientas configurable
  • Y mejoras adicionales en Konversation, KDE Connect y Spectacle, que comentaremos a fondo en próximos artículos.

Más información: KDE

a silhouette of a person's head and shoulders, used as a default avatar

マニュアルのみのRPMファイルを作ってみた

Samba には日本語マニュアルがあるのにパッケージ化されていません。ですので、日本語マニュアルのtar.gz ファイルを持ってきて展開することになります。このままですと管理が不便なので、RPMファイルを作ってみることにしました。ただ、一から作るのも大変なので、Linuxのコマンド日本語マニュアルのRPMファイルをベースにして作ってみることにしました。

まず、openSUSE 15.2 のSRPMファイルを入手し、rpm コマンドでインストールします。すると ホームディレクトリ配下のrpmbuild/SPECS ファイルにspecファイルが展開されます。これをベースに修正することにしました。…. が単にマニュアルファイルを所定のディレクトリにコピーするだけ、という単純なものかと思いきや、ちょっとしたテクニックが使われていました。

細かなことをやっているのは install セクション。ここでは、既存のディレクトリにインストールしようとするファイルと同じものがある場合、RPMファイルに含めないようにしています。また、複数のパッケージの日本語マニュアルをまとめているため(たとえば sudo とか tcpdump とか)、各パッケージ毎のサブディレクトリがあり、その中にさらにmanのカテゴリ毎(man1とかman8とか)に分けて日本語マニュアルが格納されています。このままではSambaの日本語訳ファイルアーカイブとは合わないため調整しました。そうして各ファイルをインストールする部分は以下のようになりました。

%install
mkdir -p %{buildroot}%{_mandir}/ja
for i in find output/manpages/ -name *.*
do
SUBDIR=man${i##*.}
mkdir -p %{buildroot}%{_mandir}/ja/$SUBDIR
install -m 644 $i %{buildroot}%{_mandir}/ja/$SUBDIR
done

#find の所、バッククォートがうまく入力できないのですが実際にはあります。

Samba日本語マニュアルのアーカイブはmanpages というディレクトリ配下にすべてのカテゴリ(man1からman8まで)が含まれています。そこで、カテゴリ毎に振り分けが必要です。そのため、

  • findでファイル一覧を作って do ループに渡す
  • ${i##*.} で、拡張子のみを抜き出し、振り分け先のディレクトリ名を作る
  • そこにinstall する

という形になります。拡張子のみをどうやって抜き出すかが大変なのですが、bash の変数名の後に ## を付けると、変数展開時に前方一致した部分を削除することが出来るのですね。そこで、ピリオドより前の部分を全部そぎ落としてしまえば、拡張子のみが残るというしくみです。この辺はbashシェル職人じゃないと思いつかないところですね。

後は多少調整して無事RPMファイルを作成できました。これで、openSUSE でも簡単にSamba の日本語マニュアルを参照できます。出来上がったものは
Samba翻訳プロジェクト のダウンロードの所に置いておきました。
….なのですが、openSUSE 15.2のSambaはバージョン4.11.x なので、作成したものとはバージョンが違ってました…. まあだいたいの所は同じですけれど。

参考URL
https://qiita.com/t_nakayama0714/items/80b4c94de43643f4be51
https://qiita.com/mriho/items/b30b3a33e8d2e25e94a8

the avatar of Network Users Institute

Smartphone PinePhone sous openSUSE

Il y a quelque temps que la demande fuse autour d’un smartphone sous Linux. Vu ma charge de travail au quotidien, je ne me suis pas trop penché sur le sujet. Et voilà un article de Doug DeMaio du 8 décembre courant qui parle d’images openSUSE pour le PinePhone (compatible Linux) https://pine64.com/product-category/pinephone/?v=0446c16e2e66 et ce qui […]
a silhouette of a person's head and shoulders, used as a default avatar

Aktiva Mail Campaign & Transactional Email

Statistik layanan mail campaign/transactional email PT. Aktiva Kreasi Investama. Bisa digunakan untuk mengirimkan email tagihan, blast, newsletter dan transactional email (notifikasi, informasi, invoice dll).Salah satu klien yang menggunakan layanan, rata-rata mengirimkan 50 ribu email per jam (sekitar 500 ribu email per 10 jam atau > 1 juta email per hari).Jika berminat, bisa membaca detail informasinya disini : https://www.aktiva.co.id/mail-campaign/

a silhouette of a person's head and shoulders, used as a default avatar

#openSUSE Leap como reemplazo a #CentOS

¿No te gustan las noticias de Red Hat sobre el nuevo rumbo que le ha dado a CentOS? Quizás openSUSE Leap sea la solución que necesitas

Tal como podías leer en diferentes medios del mundillo de GNU/Linux (como por ejemplo en Muy Linux), a modo de resumen Red Hat anunció que:

CentOS pasará a ser una rama de desarrollo de RHEL

Ante esta situación, muchas personas están descontentas por este cambio de rumbo de esta distribución de GNU/Linux con orientación empresarial.

Gregory Kurtzer fundador del proyecto CentOS tampoco está muy contento con el cambio, por lo que se ha puesto manos a la obra para volver con Rocky Linux.

Pero este sería un proyecto incipiente, al que espera que muchos colaboradores de CentOS también descontentos con el nuevo rumbo de esta, se unan y empezar a crear algo similar.

Pero ¿por qué esperar a que una comunidad se forme desde 0 y empiecen a trabajar en un reemplazo a CentOS? Quizás la solución a la hora de migrar de CentOS ya sea una realidad.

openSUSE Leap puede ser la solución para aquellas personas que deseen probar una solución robusta, estable, comunitaria y confiable desde hace años.

openSUSE Leap es una distribución de GNU/Linux comunitaria, amparada por la empresa SUSE, una de las distribuciones de GNU/Linux con más historia que existen actualmente.

openSUSE Leap es una distribución de GNU/Linux con publicaciones regulares en el tiempo. Una versión mayor (a la hora de escribir esto es la 15) con actualizaciones de seguridad y parches cada año en forma de versiones menores o “service pack” que mantienen el sistema actualizado, parcheado pero con la vista puesta en la estabilidad.

Esto hace que estas actualizaciones menores mantengan la estabilidad del sistema mientras lo mantienen seguro. Estas actualizaciones menores, hacen que disfrutes de un sistema GNU/Linux actualizado con una vida de 36 meses, en los que no deberás preocuparte por actualizaciones que hagan caer tu sistema.

A partir del próximo openSUSE Leap 15.3, se crea un nuevo modo de desarrollo, ya que ya se está trabajando para que a partir de esa versión openSUSE Leap comparta binarios con SUSE Linux Enterprise.

Es decir, la versión empresarial SUSE con soporte de pago y la versión comunitaria openSUSE, serán idénticas, y en esta última solo se diferenciará que instalarás paquetes comunitarios empaquetados por miembros de la comunidad de openSUSE y por supuesto no tendrás soporte técnico profesional.

Aunque eso sí. Encontrarás una comunidad de foros, listas de correo, y otros medios en los que solventar tus dudas.

Además si después de estar utilizando openSUSE Leap durante un tiempo, quieres dar el salto a SUSE, tienes herramientas que hacen esa migración sencilla. Y desde SUSE Linux Enterprise podrás seguir usando además de los paquetes y repositorios de SUSE, también software comunitario.

Como ves hay flexibilidad de utilizar y adaptar tu openSUSE Leap a tus necesidades y con posibilidad de migrar a SUSE si necesitamos de soporte profesional en nuestros sistemas.

Como ves openSUSE Leap es totalmente lo opuesto al nuevo CentOS. openSUSE no es el banco de pruebas de SUSE, es la verdadera versión comunitaria de SUSE. Donde ambas partes se nutren y sacan beneficios.

openSUSE no tiene ingerencias por parte de SUSE. Esta empresa provee software e infraestructuras a la comunidad, pero es esta la que decide y la que hace cosas. Y no es extraño encontrar a desarrolladores de SUSE mantener paquetes comunitarios o trabajar en parches de los que se beneficia tanto la versión empresarial como la comunitaria.

También son desarrolladores de SUSE los que trabajan en mejorar la gran herramienta modular que es YaST. Un instalador del sistema, un gestor de repositorios y paquetes, un gestor de configuraciones, etc.

Pero como siempre digo, y creo que es algo poco conocido: openSUSE es más que una simple distribución de GNU/Linux como pueda ser CentOS.

openSUSE desarrolla herramientas liberadas para la comunidad y para ser utilizadas por todo el público. Herramientas que el propio proyecto utiliza para crear incluso la propia distribución y que cualquiera puede utilizar o instalar en su propio sistema para hacer un uso privado de esos recursos.

Entre las herramientas más importantes que utiliza openSUSE y que pone a disposición de todo el mundo podemos encontrar: openbuilservice, openQA, Kiwi, OSEM, Kubick… y muchas otras. Todas liberadas con el código fuente y con licencias libres.

Pero además de solo una distribución de GNU/Linux como es Leap, openSUSE ofrece muchas otras alternativas tanto en la propia distribución como en escritorios, arquitecturas, y otras opciones.

  • openSUSE Leap: la versión con publicaciones regulares en el tiempo.
  • openSUSE Tumbleweed: la distribución de GNU/Linux rolling release o de actualización contínua, testeada y probada
  • MicroOS
  • openSUSE ARM: openSUSE para placas con procesadores de arquitectura ARM (Raspberry Pi, Banana Pi, BeagleBone, etc)
  • openSUSE para PinePhone: Tu sistema openSUSE en tu teléfono inteligente
  • Jeos: Solo el sistema sin más añadidos ni escritorios
  • Argon y Krypton: Lo último de lo último, para desarrolladores

Todo esto y mucho más da cuenta que openSUSE es una comunidad con muchos aspectos, llena de proyectos y con ganas de adaptarse y llegar a nuevos retos.

Quizás es el momento de echar un vistazo a openSUSE Leap como el sustituto a tu sistema CentOS y empezar a descubrir lo que la comunidad te puede ofrecer y de qué manera puedes colaborar y ser parte de la comunidad de openSUSE.

Enlaces de interés

a silhouette of a person's head and shoulders, used as a default avatar

Mañana empieza la emisión de 24H24L

Por fin llegó el fin de semana clave, y mañana empieza la emisión de 24H24L, un evento de podcasting ambicioso que llenará todo mi podcaster de programas GNU/Linux y que no te puedes perder.

Mañana empieza la emisión de 24H24L

Publicado el cartel de emisión de 24H24L

Para quienes no lo sepan, 24H24L es un evento en forma de podcasting orientado hacia aquellos curiosos de GNU/Linux que no se han atrevido a probarlo e incluso para los que están empezando en el apasionante mundo del software libre.

Para ello se ha organizado una especie de maratón organizado por temáticas que pretenden llegar a todos los perfiles de usuarios. Ya nos hicimos eco de su comunicado de prensa hace un tiempo.

Finalmente ha llegado el día y mañana sábado 12 de diciembre, a las 16 hora española peninsular (UTC +1) empieza su emisión. Podéis seguirlo en su página oficial: https://24h24l.org/emision.html

A modo de promoción quiero compartir un audio que se ha grabado para la ocasión en «Somos Tecnológicos» de Radio Bétera a cargo de su presentador José Picón y del organizador del evento José Jiménez.

Y también quiero compartir el episodio de Mancomún Podcast en el que también se habla del evento:

Y como no podía ser de otra forma la Comunidad KDE está presente en varios podcast, concretamente:

  • Administraciones Públicas moderado por David Marzal y con la presencia de Baltasar Ortega, Salvador Aznar, Táfol Nebot y Julián Moyano el domingo 21 a las 10:00
  • Escritorios Linux moderado por Rubén Gómez y con la presencia de Aleix Pol, Alejandro, Diego Muñoz y Juanjo Salvador el domingo 21 a las 14:00.
  • Software Libre y software propietario moderado por Rubén Gómez y con la presencia de integrantes de Ubuntu y otras hierbas el domingo 21 a las 14:00.

¿Qué es 24h24l?

Recordemos que 24h24l tiene la finalidad primordial de informar y promover, de manera sincera y amena, sobre el desempeño de los sistemas operativos libre en las categorías de Redes, Empresa, Desarrollo, Hardware, Multimedia y GNU/Linux.

Los públicos objetivos son: usuarios quienes empiezan con GNU / Linux y aquellos interesados en probarlo

Puedes encontrar más información en redes sociales:

José Jiménez (Organización) #24H24L 24h24l@mailo.com

the avatar of openSUSE News

Tumbleweed Gets PulseAudio 14, Updates for Plasma, Firewalld

Four openSUSE Tumbleweed snapshots updated hundreds of packages in the rolling release this week.

There were two major versions to arrive this week and one of them, pulseaudio, has an important message for GNOME who plan on using the new major version.

An update of Mesa 20.2.4 and firewalld 0.9.1 arrived in the latest snapshot - 20201209. While no new features were added in Mesa 20.2.4, there was a rendering bugfix for Blender viewport with AMD NAVI 5700 XT GPUs. Firewalld 0.9.1 removed a patch and added a workaround for the Docker bridge. ModemManager 1.14.8 made minor improvements and fixed a daemon crash when a device is being removed during the initialization sequence. NetworkManager 1.28.0 unified some behavior affecting IPv4 and IPv6 connections with the boot configuration generator. A couple new features were added for the DNS server package bind 9.16.8 and a feature change affecting the EDNS buffer size has been changed from 4096 to 1232 bytes; the change log states that measurements were done by multiple parties and that the change should not cause any operational problems as most of the Internet “core” is able to cope with IP message sizes between 1400-1500 bytes. More color printer support was added in the hplip 3.20.9 update. Other packages to update in the snapshot were vim 8.2.2105, mutt 2.0.3, poppler and sudo 1.9.4, which allows the parser to detect when an upper-case reserved word is used when declaring an alias.

The 20201207 snapshot updated three packages. GNU Compiler Collection 10 received a minor update to enable fortran for offload compilers. The 6.2.1 version of gmp fixed a longtime AArch64 bug and gstreamer-devtools 1.18.1 fixed a memory leak and made various stability and reliability improvements.

Text editor nano updated to version 5.4 in Tumbleweed’s 20201205 snapshot. The changes made in nano varied from the cursor skipping over “combined zero-width characters” to “backspacing” to delete just one zero-width character at a time. KDE Plasma 5.20.4 fixed the dragging panel to resize for the top and right panels in the plasma-desktop package and the breeze package made a color scheme change notification. The plasma-workspace package had some fixes including a build fix with the newer Qt. ImageMagick 7.0.10.45 corrected the rotation parameter for an SVG transformation. Mozilla Thunderbird 78.5.1 took care of a stack overflow Common Vulnerabilities and Exposures that was caused by incorrect parsing of the SMTP server response codes. Apparmor 3.0.1 provided its first minor update, which added support for capability checkpoint_restore for the 5.9 and later Linux Kernels. The caching DNS resolver unbound 1.13.0 made a fixed that added unencrypted DNS over HTTPS support. There were incremental improvements in the update of libvirt 6.10.0 and some new Application Programming Interface implementations were added. Version 5.9.12 of the Linux Kernel had some s390 fixes and added bindings for Raspberry Pi firmware based PWM bus. Other packages to update in the snapshot were fwupd 1.5.2, yast2-storage-ng 4.3.27 and sqlite3 3.34.0, which enhanced the recursive common table expressions to support two or more recursive terms as is done by an SQL Server.

The 20201203 snapshot began the week and started to update the Plasma 5.20.4 packages, which were completed in the follow on 20201205 snapshot; the discover package in this snapshot fixed the sidebar size and height as well as fixed the incorrect usage of units on ApplicationDelegate. GNOME Web package epiphany 3.38.2 fixed a crash when a safe browsing database is corrupted. The browser also reduced the size of the storage access API permission request. A new major version of the GNU Project debugger, gdb 10.1, arrived in this snapshot; the package was filled with patches and added new commands like set exec-file-mismatch and tui new-layout. Another major version to arrive in this snapshot was pulseaudio 14. One highlight pointed out in the new major version is the build with --enable-stream-restore-clear-old-devices, which is considered a bit of a destructive option; it will clear the old PA routing once when upgraded prior to 14.0, but it’s required for GNOME; this should be a one-off action that won’t bother too much, but users are encouraged to read the release notes.

a silhouette of a person's head and shoulders, used as a default avatar

Open Build Service をセルフホストしよう

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

今日は Open Build Service(動画配信ソフトと紛らわしいですが、以下 OBS)をセルフホストする話です。

Open Build Service

ご存知の人も多いかと思いますが、まずは OBS についておさらいしておきたいと思います。OBS は openSUSE で使用しているパッケージの開発のためのシステムです。openSUSE で使用している OBS の Web UI には次のページからアクセスすることができます。
https://build.opensuse.org

OBS が提供する主な機能は以下のとおりです:

  • パッケージソースのバージョン管理
  • Pull request スタイルのパッケージ開発のコラボレーション
  • CI 環境(オンラインビルド、ビルド結果の配信)
    • rpm はもちろん、deb パッケージも扱えます!

OBS のセルフホスト

OBS 自体もオープンソースソフトウェアであり、openSUSE で使うインスタンスを SaaS として使うだけではなく、自身のサーバーにインストールして使うことができます。これにより、会社内で使用するビルドサーバーをローカルに構築することも可能です。

今回は openSUSE Leap 15.2 上にパッケージから OBS をセットアップする方法を紹介します。公式ウェブサイトのダウンロードページの目立つところには(2020年12月現在) 15.1 ベースの ISO イメージからインストールする簡単な方法が書かれていますが、15.1 のサポート期間もそろそろ終わることですし、この方法は今回は使わないことにします。
https://openbuildservice.org/download/

パッケージから OBS をインストール

それでは始めましょう。openSUSE Leap 15.2 はいつものようにセットアップしてください。私が今回実験する上では VirtManager で KVM の VM を作って試しました。

セットアップした後、Web アプリサーバーですので、OBS サーバーにアクセスするときに使用するホスト名の設定をしておいてください。この後の設定スクリプトでがこのホスト名でオレオレ証明書を作ってくれます(設定されていないと止まります)。ちゃんとしたドメインのホスト名でも良いですし、LAN 内の /etc/hosts に設定して回っても OK です。私はルーター (RTX810) の DNS で、LAN 内でのみ有効なホスト名を割り当ててます。

OBS サーバーのパッケージをインストールしましょう。リポジトリを追加して OBS_Server パターンをインストールするだけです。実際は機能ごとにサーバーを分けることもできますが、今回は全部入れてしまいます。

zypper ar -f https://download.opensuse.org/repositories/OBS:/Server:/2.10/openSUSE_15.2/OBS:Server:2.10.repo
zypper in -t pattern OBS_Server

※OBS を構成するサービスについては、ユーザーガイドに解説があります。今回はビルドも含めて一緒に動かします。
https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.architecture.html

OBS サーバーを起動するために色々設定しましょう。ここでも手を抜いて設定スクリプトを使います。/usr/share/doc/packages/obs-server/README.md に書かれている通り、次のスクリプトを実行して、あとは待つだけです。

/usr/lib/obs/server/setup-appliance.sh

OBS アプリケーションの設定

セットアップが終わったら、https://設定したホスト名/ にアクセスしてみましょう。オレオレ証明書の警告は出ると思いますので、続行するか信頼済みの証明書に登録するかはおまかせします。

まずは Admin アカウントでログインしてみてください。初期パスワードは opensuse です。そうすると、いつもの OBS の Web UI に見たことのない管理用のアイコンが並んでいます。(画像はプロジェクトとパッケージをいくつか追加した後の状態)

あとは、ユーザーを追加したり、プロジェクトとパッケージを追加したり、好きなようにできます。1つやっておいたほうがよいことは、openSUSE の OBS との連携設定です。というのも、セットアップした状態では、ビルドターゲットのディストリビューションの定義(パッケージ類)がない状態です。これを1から作る(パッケージをアップロードしたり)のは大変です。そこで、openSUSE の OBS とリンクします。これにより、openSUSE をはじめとしたディストリビューションの定義やパッケージを必要に応じて、自動的に openSUSE の OBS から取ってこられるようにできます。設定自体は簡単で、設定画面から「Interconnect」にあるボタンを1回クリックするだけで終わります。

詳しい情報

ユーザーガイドとアドミニストレータガイドがあるので、見ておくと良いでしょう。 https://openbuildservice.org/help/

a silhouette of a person's head and shoulders, used as a default avatar

Aplicaciones por categoría – Plasmoides de KDE (162)

Hoy os presento Aplicaciones por categoría, un simple lanzador de aplicaciones con el que llegamos a 162 los plasmoides presentados en el blog y que constata el hecho de que buscar y ejecutar los programas en el entorno de trabajo Plasma de la Comunidad KDE es altamente personalizable.

Aplicaciones por categoría – Plasmoides de KDE (162)

Seguimos con las posibilidades de personalización de Plasma 5 en cuanto a lanzadores de aplicaciones. Al lanzador tradicional, a su versión reducida, al lanzador de aplicaciones a pantalla completa y a Tiled Menu, el clon del menú de Windows, se les han unido poco a poco otros lanzadores como UMenu, Minimal Menu, Simple Menu, Launchpad Plasma, Ditto Menu, Kpple o los Menu X, Menu Z o NMenu.

Aplicaciones por categoría - Plasmoides de KDE (162)

A todos los anteriores se les une Apps by category, un simple lanzador de aplicaciones que solo muestra aquellas aplicaciones que están bajo la categoría que seleccionemos. Sus posibles usos son variados: tener las aplicaciones de oficina en un Actividad con ese mismo nombre o crear una barra de lanzadores de aplicaciones sobre una barra.

En el vídeo inferior podéis ver un posible uso.

Y como siempre digo, si os gusta el plasmoide podéis “pagarlo” de muchas formas en la fluida página de KDE Store, que estoy seguro que el desarrollador lo agradecerá: puntúale positivamente, hazle un comentario en la página o realiza una donación. Ayudar al desarrollo del Software Libre también se hace simplemente dando las gracias, ayuda mucho más de lo que os podéis imaginar, recordad la campaña I love Free Software Day de la Free Software Foundation donde se nos recordaba esta forma tan sencilla de colaborar con el gran proyecto del Software Libre y que en el blog dedicamos un artículo.

Más información: KDE Store

¿Qué son los plasmoides?

Para los no iniciados en el blog, quizás la palabra plasmoide le suene un poco rara pero no es mas que el nombre que reciben los widgets para el escritorio Plasma de KDE.

En otras palabras, los plasmoides no son más que pequeñas aplicaciones que puestas sobre el escritorio o sobre una de las barras de tareas del mismo aumentan las funcionalidades del mismo o simplemente lo decoran.

the avatar of Richard Brown

Building a openSUSE MicroOS RPi Network Monitor

How to use combustion to reproducibly configure MicroOS -

openSUSE MicroOS is one of openSUSE’s most exciting projects, and for me has replaced openSUSE Leap as my go-to server operating system of choice. I currently have 3 MicroOS installations, all running as podman with openSUSE containers. The machines are as follows:

  • A nice fanless Zotac x86-64 NUC running at home as my Nextcloud and ssh-based backup server/NAS
  • A VM on Hetzner Cloud running this blog, my saltstack master and a few other public facing services. (Kudos to Hetzner for adding the openSUSE MicroOS ISO to the list of Cloud ISOs so I could do a custom installation)
  • A VM on Linode for running a US-based proxy for some of my friends who otherwise might have too-high latency accessing services on the Hetzner host. (Kudos to Linode for consistantly supporting openSUSE Leap releases on the day of release and providing ways of doing custom installs of any OS)

And so, with all these MicroOS boxes in my life, as reliable as they may be, I wanted to have a simple way of keeping an eye on whether or not the machines are up or not, possibly evolving to more interesting checks in the future. I wanted this to be able to monitor my machines even when my main laptop at home is off, and I wanted to not have to worry about updating the monitoring system at all. So an idea formed, why not use MicroOS to monitor MicroOS?

RPi3 B+ running openSUSE MicroOS - dark

Hardware Used

I cobbled this little project together out of random bits of hardware I had lying around, namely:

  • Raspberry Pi 3B+ with the official RPi case
  • Joy IT 3.2” TFT display with 3 GPIO buttons
  • 32GB micro SDCard
  • 8GB random old USB stick

Software Used

I found a very nice command-line visualisation tool called sampler that perfectly fit my needs for this project. It’s nice and small, lets you draw graphs based on numbers it gets from whatever shell commands you run at whatever frequency you tell it to poll. It can also produce alerts if the results do not match expected values. So given the basic monitoring I want is basically just a ping and be alerted if they stopped responding, sampler is absolutely perfect. I packaged it for openSUSE as part of this project so it’s now available for regular Tumbleweed as well as MicroOS.

Installing MicroOS on the SDCard

First I needed to download the latest official openSUSE MicroOS aarch64 image for Rasbperry Pi from the official download page. For this project we’re using a plain old MicroOS image without any pre-installed services, not the Container Host images which come with podman.

wget https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-MicroOS.aarch64-RaspberryPi.raw.xz

Putting in the SDCard into the reader, I simultaniously extracted the image and wrote it direct to the image with the following command. (Substitue sdX with the correct name for your SDCard device)

xzcat openSUSE-MicroOS.aarch64-RaspberryPi.raw.xz | dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct status=progress; sync

And that’s it, the SDCard is ready to go…or is it?

But Wait!

By default, MicroOS images have no root password, no user accounts, and no services installed. I needed to have some way to setup the Pi when it first boots from the SDCard. MicroOS has two tools available for such first boot configuration:

  • Ignition, originally from CoreOS which has a lovely structured JSON config but a limited scope of what it can setup.
  • Combustion, written specifically for MicroOS and capable of doing anything you can write in a shell script.

As I already had a feeling I’d need to do some quirky things, especially to get the TFT display running, I opted to use combustion. I could have used ignition for the easy stuff and left combustion in combination for the trickier parts but it seemed silly to me to have to learn how to write a new JSON config file when I could just as easily write everything in a shell script.

Preparing a combustion USB stick

On first boot combustion looks for a device with a volume named combustion containing a directory called combustion and a script called script so that’s precisely what I did to my USB stick

mkfs.ext4 /dev/sdY
e2label /dev/sdY combustion
mount /dev/sdY /mnt
mkdir -p /mnt/combustion/
touch /mnt/combustion/script

After a few trial runs and a bit of hacking around the final script now looks like this:

#!/bin/bash
# combustion: network

## Copy config and device tree overlays for Pi TFT & GPIO buttons to /boot/efi
cp extraconfig.txt /boot/efi/
cp joy-IT-Display-Driver-32b-overlay.dtbo /boot/efi/overlays/
cp tft_keys.dtbo /boot/efi/overlays/

## Change boot params so framebuffer console goes to TFT display
sed -i "/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/\"$/ fbcon=map:10\"/" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

## Mount /var and /home so user can be created smoothly
mount /var
mount /home

## Make user
useradd -m ilmehtar

## Add user to sudoers
echo "ilmehtar ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ilmehtar

## Create ssh folder and populate authorized_keys for remote sshd
mkdir -pm700 /home/ilmehtar/.ssh
chown ilmehtar:users -R /home/ilmehtar/.ssh
cat authorized_keys > /home/ilmehtar/.ssh/authorized_keys

## Setup vconsole so framebuffer console has right font/keyboard layout (Optional)
cp vconsole.conf /etc/vconsole.conf

## Setup Wifi
cp wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
systemctl enable wpa_supplicant@wlan0.service
cp /etc/sysconfig/network/ifcfg-eth0 /etc/sysconfig/network/ifcfg-wlan0

## Disable IPv6 (Optional)
cp 90-disableipv6.conf /etc/sysctl.d/

## Install sampler
zypper --non-interactive install sampler
cp sampler.yaml /home/ilmehtar/sampler.yaml

## Make user login by default
mkdir -p /etc/systemd/system/getty@tty1.service.d
cp autologin.conf /etc/systemd/system/getty@tty1.service.d

## Make sampler run by default
echo "[ \$TERM = 'linux' ] && sleep 30 && sampler -c ~/sampler.yaml" >> /home/ilmehtar/.bashrc

## Reboot after setup
cp firstbootreboot.service /etc/systemd/system/
systemctl enable firstbootreboot.service

## Clear up mounts
umount /var
umount /home

The script references a number of additional files, all of which are placed alongside script in the combustion directory on the USB stick:

File Listing of the combustion directory

90-disableipv6.conf
authorized_keys
autologin.conf
extraconfig.txt
firstbootreboot.service
joy-IT-Display-Driver-32b-overlay.dtbo
sampler.yaml
script
tft_keys.dtbo
tft_keys.dts
vconsole.conf
wpa_supplicant.conf

Joy-IT-Display-Driver-32b-overlay.dtbo is a Device Tree overlay provided by the manufactorer of the TFT hat. tft_keys.dtbo is my own Device Tree overlay compiled from tft_keys.dts. All the other files are text files used to configure various aspects of the system to my liking and are documented at the bottom of this post for anyone wanting to use this idea as a basis for their own projects.

First Boot

And with all that prep work done, the first boot is now surprisingly easy. I inserted the SDCard, added the USB stick and connected the Pi to ethernet (The wifi won’t work until it’s configured by combustion). Powering on the Pi the whole device can be left alone for a few minutes. It boots itself, does all of the configuration, and the end result is a nice working desktop network monitor:

RPi3 B+ running openSUSE MicroOS - light

The GPIO switches on the top even work as the P and ESC keys for sampler, allowing me to pause the polling or dismiss any alerts. A little bit of hardware hacking (read: hot glue and acryrlic) finished of the project with a little stand so the whole thing sits on my desk at an angle easy for me to read.

The system doesn’t have any passwords, so can’t be logged in remotely with the exception of ssh using the non-root user using my existing public key. Simple and secure enough.

All this might seem like a little overkill, I realise it probably is, but one great benefit of having everything in this one combustion script is now I know I can wipe that SDCard or use a new Pi and get it back up and running to exactly how I like it directly from the first boot, without any manual intervention at all. Which I guess means I could reuse this Pi for other projects..anyone got any ideas?

Thanks and Have a Lot of Fun

Additional Config Files Used (For Reference)

90-disableipv6.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

autologin.conf

[Service]
ExecStart=
ExecStart=-/sbin/agetty -a ilmehtar %I $TERM

extraconfig.txt

dtoverlay=joy-IT-Display-Driver-32b-overlay:rotate=0,swapxy=1
dtoverlay=tft_keys
gpio=18,23,24=pu
dtparam=audio=on
max_usb_current=1
hdmi_force_hotplug=1
config_hdmi_boost=7
hdmi_drive=1
hdmi_ignore_edid=0xa5000080

firstbootreboot.service

[Unit]
Description=First Boot Reboot

[Service]
Type=oneshot
ExecStart=rm /etc/systemd/system/firstbootreboot.service
ExecStart=rm /etc/systemd/system/default.target.wants/firstbootreboot.service
ExecStart=systemctl reboot

[Install]
WantedBy=default.target

sampler.yaml

runcharts:
  - title: Status
    position: [[0, 2], [80, 40]]
    rate-ms: 1000
    triggers:
      - title: Node Down
        condition: '[ $cur = "DOWN" ] && echo 1 || echo 0'
        actions:
            visual: true
    legend:
        enabled: true
        details: false
    scale: 0
    items:
      - label: node1
        sample: ping -qc5 192.168.1.1 2>&1 | awk -F'/' 'END{ print (/^rtt/? $5:"DOWN")
            }'
      - label: node2
        sample: ping -qc5 192.168.1.2 2>&1 | awk -F'/' 'END{ print (/^rtt/? $5:"DOWN")
            }'
      - label: node3
        sample: ping -qc5 192.168.1.3 2>&1 | awk -F'/' 'END{ print (/^rtt/? $5:"DOWN")
            }'
      - label: node4
        sample: ping -qc5 192.168.1.4 2>&1 | awk -F'/' 'END{ print (/^rtt/? $5:"DOWN")
            }'
      - label: node5
        sample: ping -qc5 192.168.1.5 2>&1 | awk -F'/' 'END{ print (/^rtt/? $5:"DOWN")
            }'

tft_keys.dts

/dts-v1/;
/plugin/;
/ {
	compatible = "brcm,bcm2835";
	
	fragment@0 {
		target-path = "/soc";
		__overlay__ {
			tft_keys{
				compatible = "gpio-keys";
				autorepeat;
				key1 {
					label = "Key 1";
					linux,code = <1>;
					gpios = <&gpio 18 1>;
				};
                                key2 {
                                        label = "Key 2";
                                        linux,code = <25>;
                                        gpios = <&gpio 23 1>;
                                };
                                key3 {
                                        label = "Key 3";
                                        linux,code = <1>;
                                        gpios = <&gpio 24 1>;
                                };
			};
		};
	};
};

vconsole.conf (Because uk layout is best keyboard layout)

KEYMAP=uk
FONT=eurlatgr.psfu
FONT_MAP=
FONT_UNIMAP=

wpa_supplicant.conf

network={
   ssid="My-SSID"
   psk="MyPassword"
}