isLandcenter 非番中

ブログトップ | ログイン

Zabbix 5.2 on openSUSE Leap 15.2 Install

openSUSE Leap 15 の良い所は、有償版 SUSE Linux Enterprise 15 (SLE15) と、バイナリレベルの互換性があり、openSUSE Leap 15 から SLE へのアップデートが保証されている、という点です。SLE から openSUSE へ乗り換えても、ほとんど操作に違和感がなく、スムーズに移行できます。

openSUSE Leap は RHEL --> CentOS の様な、ソースレベルの互換性、クローンではありません。有償版 SLE のサブスクリプション購入の前に、openSUSE Leap で、とりあえず検証、トレーニングを行ってから、SLEに移行するというパスが用意されています。

ー zabbix

zabbix はヨーロッパ・ラトビア生まれのオープンソースライセンスのネットワーク管理ツールです。エージェントを使ったサーバーの負荷やリソース管理、SNMP を使ったルータやスイッチのトラフィック監視、Ping などサービスの死活監視など、広い用途でネットワークを監視できます。この種のソフトウェアとしては急速に利用者が増えており、キラーアプリケーション化して育ったプロダクトです。

何よりUIがブラウザという事で、操作に必要なプラットフォームを選びません。サーバーは主要なディストリビューションを網羅しています。

という事で、openSUSE Leap 15.2 に SLE 15 用の zabbix 5.2をインストールする手順を検証してみました。

zabbix5.2 をインストールする前の、openSUSE Leap 15,2 のインストール、Web LAMP のインストールは、次の記事、動画を参考にしてください。

ー Install openSUSE Leap 15.2

openSUSE Leap 15.2 のインストールは次の記事、動画を参考にしてください。

openSUSE Leap 15.2 Install First Look.(インストール)
https://www.youtube.com/watch?v=TvzrveD5lys (動画、音出ます)

※ /var は異なる仮想ディスク、別パーティションにしています。/var/lib/mysql/zabbixdb に zabbix データベースが作られます。/ パーティションは BtrFS 16Gb 以上、/var は別な仮想ディスクとして XFS フォーマット、10Gb 程度あれば、規模にもよりますがとりあえず充分でしょう。

ー Install Web LAMP on openSUSE Leap 15.2

openSUSE Leap がインストールできたら、Web LAMP 環境を導入します。大体の手順は次の動画を参考にしてください。

openSUSE Leap 15.2 Web LAMP install with YaST(動画、音出ます)

それでは zabbix5 をインストールします。

ー mariadb  の有効化

まずは、mariadb をスタートさせ、起動を有効化します。

 YaST > System > Service Manager から mariadb Start/Enable します。もしくは systemctl で起動します。

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13190152.png


ー Download and install Zabbix

https://www.zabbix.com を開いて右上の DOWNLOAD リンクを開きます。 

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13202641.png

バージョン > Distribution(SLES) > Version(15) > DBタイプ(MySQL) > Web Server(Apache) の順でクリックするか、ここでは次の URL を開きます。


Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13210736.png

このページに、必要なコマンドラインのサジェスチョンが記載されているので、順に実行します。

ー リポジトリの登録

rpm -Uvh --nosignature https://repo.zabbix.com/zabbix/5.2/sles/15/x86_64/zabbix-release-5.2-1.sles15.noarch.rpm
zypper --gpg-auto-import-keys refresh 'Zabbix Official Repository'

YaST で確認します。

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13220703.png

次の操作は openSUSE Leap では不要です。

# SUSEConnect -p sle-module-web-scripting/15/x86_64

― パッケージのインストール

zypper か YaST を使って次のパッケージをインストールします。

zabbix-server-mysql
zabbix-web-mysql
zabbix-apache-conf
zabbix-agent
zabbix-web-japanese (<- 日本語化する場合必要)

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13224643.png


ー MySQL の開始/設定

事前に決定しておく事。ここでは次のユーザ名、パスワード、データベース名を使います。適時おき替えてください。

mysql の root パスワード : mysqlpwd
Zabbix Database 名: zabbixdb
Zabbix Database ユーザ/パスワード: zabbix/zdbpwd 

ー mysql の DB 作成

mysql -uroot -p
mysqlpwd
mysql> create database zabbixdb character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zdbpwd';
mysql> grant all privileges on zabbixdb.* to zabbix@localhost;
mysql> show databases;
mysql> quit;

ー スキーマ拡張

zcat /usr/share/doc/packages/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbixdb
Enter password: zdbpwd

5分待ちます。

ー zabbix_server.conf の書き換え

zabbix_server.conf の次の三か所を必要に応じて書き換えます。

gedit /etc/zabbix/zabbix_server.conf &

DBUser=zabbix
DBName=zabbixdb
DBPassword=zdbpwd

ー restart zabbix_server

YaST か systectl コマンドで zabbix_server/agent, apache2 を onboot  start/enable にします。

systemctrl restart zabbix_server zabbix_agent apache2
systemctrl enable zabbix_server zabbix_agent

yast > System > Service Manager

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13232630.png

ー フロントエンドの起動、セットアップ


言語の選択 > とりあえず英語のまま次へ

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13250432.png

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13253426.png

データベースへ接続

Database name: zabbixdb
user: zabbix
password: zbxpwd

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_14225710.png

Server Detail : 特に変更なくNext

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13262909.png


Default Time Zone : UTC+9 Asia/Tokyo

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13271759.png


Summary

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13273531.png

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13281075.png

WebUI ログイン

Login:
Admin/zabbix (デフォルト初期値です case sensitive 大文字小文字注意)

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13283014.png


Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13284376.png

フロントエンドのセットアップが終わると、ダッシュボードが起動します。ダッシュボードの時計がローカルタイムになっている事を確認してください。

Monitering > Hosts > Zabbix Server が(ZBX 緑)になっていれば、サーバー/エージェント共に稼働中です。

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13290074.png

グラフも出てきました。

Zabbix 5.2 on openSUSE Leap 15.2 Install_a0056607_13291878.png

ー ポイント(忘れがちなこと)

・データベース名、DBユーザ名、パスワードは事前に決めておく事です。ダウンロードページの指示通りでも構いませんが、デフォルト password じゃいかにもですからね。大抵、何らかのエラーが起こるとすれば、この三つの設定がおかしい。
・Web LAMP のインストール手順が、サジェスチョンに含まれていないので、事前にインストールして mariadb を起動しておく事。
・WebUI へのログインは Admin/zabbix です。ケースセンシティブ、大文字小文字注意です。クラウド運用する時は早めに変更しておく事。
・ UI のURLは、http://ip-address/zabbix です。/index.html を書き換えて、リダイレクトすると良いでしょう。

ー まとめ

openSUSE Leap 15.2 で zabbix5.2 をインストールしてみました。公式サポートは SUSE Linux Enterprise 15 ですが、インストール自体は幾つかの間違えやすい点に注意すれば、特にストレスなく行えます。

CentOS8 の将来性に不安があるのなら、無償でオープンフリーの openSUSE Leap は、SLE の信頼性を引き継いでおり、rpm に慣れていて Debian/Ubuntu 系はちょっと、というシステム管理者にとっては一つの代替手段になります。

大規模なデータセンターでもなく、数十台のサーバー、スイッチなどのデバイスを管理したい中小規模のネットワークなら openSUSE Leap + zabbix の組み合わせは一つの良い選択になります。既に仮想環境が用意できているのなら、Zabbix5 は是非試して欲しいネットワーク管理ツールです。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定

zabbix4.2 を zabbix5.0 アップデート







by islandcenter | 2021-02-25 13:48 | SUSE | Comments(0)

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバーを稼働させます。

知らなかったで済まされなかったンですが、いろいろ言い訳はありますよ。古い SLES11 を NTP サーバーとしていたので気にならなかったのですが、openSUSE Leap 15.2 に変えてからどうもNTPサーバーがおかしい。ってか全然機能していない。

よく見たらフレッシュにインストールした openSUSE Leap 15.2 って ntpd のサービスが YaST Service Manager にないんです!こりゃおかしいと思って調べてみました。

SUSE 15(SLE15/openSUSE15)では、ntpd ってなくなっていたんですね。その代わりに chrony というパッケージに置き換わっていました。


という事で、 SUSE Linux 15 (SLE15/openSUSE Leap 15) で NTP サーバー chronyd を動かしてみました。

31 Time Synchronization with NTP

chronyc(1) Manual Page

ー chrony パッケージ

chrony パッケージは、デフォルトで SLE/openSUSE 15x のインストーラがインストールしてクライアントとして機能します。別途インストールする必要はないのですが、なければ 1 クリックインストールします。こちら

chrony System Clock Synchronization Client and Server

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバー_a0056607_12343156.png


ー /etc/chrony.conf の書き換え

デフォルトでは chronyd はクライアントとして動作します。 YaST > Network Services > NTP Configuration で」タイムソースを指定すると、 /etc/chrony.conf ファイルは YaST により更新されます。

YaST で更新されない部分が allow の行です。ここはコメントアウトされているので、自身がタイムソースとなる場合、提供する相手の IP アドレスを次の様に指定します。

chrony.conf を書き換えたら、chronyd を YaST > System > Service Manager か systemctl コマンドで再起動します。

suse15:~ # cat /etc/chrony.conf | grep llow

# Allow the system clock to be stepped in the first three updates
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.1.0/24
suse15:~ # systemctl restart chronyd
suse15:~ # systemctl status chronyd
● chronyd.service - NTP client/server 

: 以下略

SUSE の場合、YaST > Network Services > NTP Configuration から、タイムソースを追加して、TEST ボタンを押すと、NTP ソースとして機能しているかをテストすることができます。

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバー_a0056607_12345406.png

どうやら動いているようです。

ちなみにタイムソースを設定する場合、デフォルトで "Quick Initial Sync" にチェックがはいっており、iburst オプションが有効になります。

SLES 15 は SLES12 よりアップデートしたものなので、ntpd が残っていたのですが、YaST > Software Maanagement から削除してしまいました。

ー slew モードと step モード

chrony のデフォルトは step モードです。デフォルトで、タイムソースとの一秒以上の時刻ズレを3回以上検出すると、一挙に時刻合わせを行います。時刻のズレが大きいとアプリケーションによっては深刻な誤動作(時刻戻りによる)が発生する場合があるので、slew モード(徐々寄せモード)にするのが良いでしょう。ただし slew モードは時刻ズレが大きいと同期に時間がかかります。時刻ズレがあまり影響ない場合はデフォルトの Step モードでも構いません。

# makestep 1.0 3 # Comment Out
leapsecmode slew # <--- Add Line

デフォルトではポーリング間隔(Polling interval) minpoll 64sec / maxpoll 1024sec です。詳細はマニュアルでご確認ください。

chrony.conf(5) Manual Page


isLandcenter.jp





by islandcenter | 2021-01-08 12:38 | SUSE | Comments(0)

openSUSE 15.2 でルータ(らしきもの)を作ってみました。

openSUSE Leap15.2 でルータを作ってみた_a0056607_13060411.jpg

そんなに資材がある訳ではないので、 SUSE Linux Enteprise (SLE15) で動いている KVM 仮想環境に、仮想ブリッジと仮想クライアント(openSUSE 15)を作り、仮想化された内部ルータ(openSUSE 15)で、仮想別セグメントのクライアントから、構内ネットワークとインターネットに繋がる、と言うのが目標です。

ちょっとややこしいので簡単な図

openSUSE Leap15.2 でルータを作ってみた_a0056607_11512216.png

動機は、ADSLに繋がっているルータの調子が悪く、Wifi の干渉が酷くて、無線を止めて有線化したかったのですが、Wifi ルータは安いのに有線ルータは、結構値が張ります。また、内部向けに DNS があるのですが、安い Wifi SOHO ルータは DHCP をオフにできず、Wifi ルータの DHCP が イントラ向けの DNSを自分自身に勝手にしてくれるものが多く、実に使い勝手が悪い。
という事で、安く有線ルータが出来ないかなという理由です。

Windows でも似たような事をやってみました。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ

実際の環境で作るとなると零細とは言えSOHOネットワーク全体にトラブルが出てしまうので、まずはテスト環境で、という事で、openSUSE 15.2 でルータを作ってみたわけです。

ー 仮想ブリッジを作る

KVM ホストとなる SUSE Enterprise 15 (SLES15) で yast > system > Network Settings から、Add で Device Type : "Bridge" を作ります。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11521120.png

この KVM ハイパーバイザーには、Amazon で 1000円で買った USB HUB 付 NIC が付いているのですが、今回はこれは使いません。空白。

"br2" という仮想ブリッジが作られます。設定はしません。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11525879.png

SLE のインストールはこちら

SLE15 Linux Enterprise sp2 (SLES15sp2) のインストール(動画付き)

openSUSE で KVM を使う場合はこちら

openSUSE Leap 15.1 で初めての KVM, 仮想化

次に、今回ルーターとなる openSUSE 15.2 を virt-manager から create します。1枚目の仮想 NIC は、ホストサーバーの実 NIC の1番目にバインドされているブリッジデバイスに、二枚目の NIC は br2 の仮想ブリッジにバインドします。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11571289.png
ここでは、openSUSE をインストールして、

openSUSE Leap 15.2 Install (動画付き)

YaST > System > Network Settings から

Eth0 には 192.168.1.254 で、本体のローカルネットワーク(192.168.1.0/24)にバインドします。
Eth1 の仮想ネットワーク側に 192.168.10.254 のアドレスをバインドします。 192.168.10.0/24 は KVM の中だけに存在する、仮想ネットワークです。

ルータとなるシステムのネットワーク設定はこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png
ついでに DNS もインストールします。

速攻 1分で DNS on SUSE12 by YaST

ー ip forward Enable

YaST > SYstem > Network Settings > の Router のタブはこの様になりました。実ポートが繋がっている側にはデフォルトゲートウェイが設定されています。

ルータ化するため、Enabele IPv4(6) Forwarding は両方ともチェックしておきました。

(早く IPv6 にも慣れないと...)

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png

YaST を終了させるとネットワークの設定は自動的に再起動されます。

フォワードが有効かどうかは次のプロセス ip_forward が "1" (Enable) になっていればOKです。/etc/sysctl.conf を設定する必要はSUSE Linux では必要ないようです。

router:~ # cat /proc/sys/net/ipv4/ip_forward
1
router:~ #

ip route で確認、

router:~ # ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.254
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.254


※ 従来の route コマンドは Depricated - 非推奨 - なので YaST > Software Manegement から明示的に Net-tools パッケージをインストールすると使えます 。

ー NAT とマスカレードの設定

ここからがハマりどころでした。結論としては、NATとマスカレードを有効にしろという事です。次のコマンドを実行したら、内側のネットワークから、本線とインターネットに通信ができる様になりました。ネットワークを変換して仮面舞踏会に参加させます。

ただし、SOHO 本線側からは、デフォルトゲートウェイが違うため通信はできません。

router:~ # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ネットワークサービスを再起動します。

router:~ # systemctl restart network

永続的に設定するためには、ファイアウォールの設定が必要か、起動時に iptables コマンドを実行させる方法を探す必要があります。(挫折)

opensuse152desktop:~ # ip a | grep 192
inet 192.168.10.20/24 brd 192.168.10.255 scope global eth0
opensuse152desktop:~ #
opensuse152desktop:~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=5 ttl=111 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=111 time=31.1 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=111 time=31.4 ms
^C
--- 8.8.8.8 ping statistics ---
7 packets transmitted, 3 received, 57% packet loss, time 6097ms
rtt min/avg/max/mdev = 31.157/31.620/32.294/0.508 ms


ー より深く設定するには firewall-config を使う

具体的には firewall-config という GUI アプレットをインストールして設定するようです。openSUSE 15.2/SLES15 のリポジトリにあるので YaST からインストールできます。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12005594.png

第14章 マスカレードとファイアウオール

fire-wall-config アプレットを起動します。

router:~ # firewall-config &

で起動できます。 firewalld が Active/Boot Enable の場合でないと、起動できません。YaST > System > Service Management メニューから firewalld を有効にしておきます。

アプレットのUIはこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12012822.png

ー まとめ

とりあえず目標とする事はできました。うまく設計すれば、仮想環境だけで物理ポートが2つあれば、DMZ を含んだインターネットとのバウンダリシステムを作る事ができます。今時は SaaS でメールやウェブページを運用するのが一般的なのでしょうが、例えば DNS や DHCP、 認証/パススルー・プロクシのようなコンテンツキャッシュやコンテンツフィルタリングなど、オフィスのバウンダリ・エッジで必要とされる機能は数多くあります。これらを一つの仮想化パッケージとして運用するのも一つの手段です。

何しろ余計な UPS や HUB、ケーブルが必要なくて実にスッキリします。

あいにく、私はネットワークシステムについては不勉強です。でもファイアウォールの設計やテスト、小規模な開発環境を構築するには、なかなか便利な経験でした。

次の目標は firewall-config ツールを使いこなして、Fire Wall の勉強です。






by islandcenter | 2020-12-16 12:01 | SUSE | Comments(0)

Apple M1 シリコン mac で脚光を浴びてしまった ARM アキテクチャ。「これからは ARM の時代かも」なんちゃってです。

という事で openSUSE 15.2  x86-64 環境でどこまで ARM の開発環境、エミュレーション、仮想化などができるか調べてみました。

はじめは

「Linux の x86-64 環境で ARM の仮想環境作れないかなぁ」

という不純な動機だったのですが、どうも KVM なんかで動く ARM のイメージなんてないわけですね。で色々調べてみたら、クロス開発環境や、バイナリのエミュレーションはできるらしい。ほとんどの情報は Ubuntu 上でのクロス開発環境なんですが、これ openSUSE でできないかという課題です。

昔、マイコン機器を開発してた頃は、クロス開発で、x86 のC言語を Sparc でクロス開発していました。実に快適でした。実機だと1時間かかる「コンパイルとリンク」がわずか一分で終わってしまう。コーヒーとトイレに行こうと立ち上がった時には終わっている。感動というかのんびりした時代も終わったナ、と呆れたというかでした。

ARM の実機上で開発するとなると、いろいろな実機の制限や非力な実機スペックでは中々開発も難しい。となると一般的な x86-64 PC 上でクロス開発する方が色々と都合がよろしいンでしょう。少なくとも、コードとドキュメントを書いて、コンパイルとリンクまではパワーのある Intel PC ワークステーション上で行い、実機なり ICE なりにバイナリを転送してデバックする。という事です。

当たり前かな、と思ったのですが意外と情報が少なかったので苦労しました。皆さんどうやって ARM の開発環境つくっているんでしょうか。まぁ参考までに openSUSE 15.2 でどこまでできるか、あまり開発系には詳しくない素人なので入門です。他のディストリビューションを使っている方にも参考になれば幸いです。

ー クロスコンパイラのインストール

software.opensuse.org へ行って cross-arm-linux-gnueabi-gcc パッケージを検索します。ここにありました。

cross-arm-linux-gnueabi-gcc

Expert Download のリンクを開きます。

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10063840.png

Add repository and install manually にあるコマンドを実行します。

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10071171.png

そのままだと余計な SLE のリポジトリも追加しようとしてエラーが出ましたが、無視してリポジトリをインストールします。

ー cross-arm-linux-gnueabi-gcc をインストール

zypper addrepo https://download.opensuse.org/repositories/home:duwe:crosstools2/openSUSE_Leap_15.2/home:duwe:crosstools2.repo
zypper refresh

Zypper かYast でインストールできます。

# zypper install cross-arm-linux-gnueabi-gcc

YaST の場合

# yast2 & もしくは
# yast

から Software Management で ”cross” などをキーワードサーチしてインストールします。

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10074212.png


SUSE では /opt/cross にインストールされます。

opensuse152:~/test # ls /opt/cross/arm-linux-gnueabi -al
total 0
drwxr-xr-x 1 root root  64 Dec  8 13:26 .
drwxr-xr-x 1 root root 136 Nov  6 03:45 ..
drwxr-xr-x 1 root root  92 Dec  6 20:20 bin
drwxr-xr-x 1 root root   6 Dec  6 20:20 include
drwxr-xr-x 1 root root 532 Dec  6 20:20 lib

ー stdio.h: No such file or directory となる

まずは「はじめてのC」を書きます。

opensuse152:~/test # cat test.c
#include <stdio.h>
int main()
{
        printf("Hello World\n");
        return(0);
}


コンパイルしてみます。

opensuse152:~/test # /opt/cross/bin/arm-linux-gnueabi-gcc -o armhello test.c
test.c:1:10: fatal error: stdio.h: No such file or directory
   1 | #include <stdio.h>
     |          ^~~~~~~~~
compilation terminated.
opensuse152:~/test #


いきなり致命的な faital error です。

-v オプションを付けてコンパイルして「コンパイル中」の内容の詳細(verpose)をチェックします。stdio.h を探すと、ありました。どうもうまく見つけられない様です。


/opt/cross/arm-linux-gnueabi/include/c++/9.3.0/tr1/*


/opt/cross/arm-linux-gnueabi/include/c++/9.3.0/

に強引にコピー(cp)しました。


ー cannot find crt1.0: No such file or Directory ライブラリがない

インクルードヘッダファイルはコピーして一応通りましたが、リンクができません。 「crt1.o が見つからない」となります。どうも glibc が必要らしい、という事で arm 用の glibc ライブラリをインストールしました。ブラウザで software.opensuse.org へ行き、1クリックインストールします。

cross-arm-linux-gnueabi-glibc

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10084733.png

1クリックインストールできなかったので YaST > Software Management から "glibc" を探して arm 用の glibc をインストールします。

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10142147.png


opensuse152:~/test # find /opt/cross/ -name "crt1.o"
/opt/cross/arm-linux-gnueabi/sys-root/lib/crt1.o
opensuse152:~/test #


インストールされた様です。

opensuse152:~/test # /opt/cross/bin/arm-linux-gnueabi-c++ test.c -o test
test.c: In function ‘int main()’:
test.c:4:2: error: ‘printf’ was not declared in this scope
    4 |  printf("Hello World\n");
      |  ^~~~~~
test.c:2:1: note: ‘printf’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
    1 | #include <stdio.h>
  +++ |+#include <cstdio>
    2 | int main()
opensuse152:~/test # ls -al test
-rwxr-xr-x 1 root root 7976 Dec  8 13:33 test
opensuse152:~/test #

相変わらず、ヘッダファイルの警告は出ますが、リンクまで通った様です。
バイナリの中身を確認します。

opensuse152:~/test # file test
test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 3.2.0, not stripped
opensuse152:~/test #


ARMのバイナリができました。


ー qemu-arm を openSUSE にインストール

結論から言うと挫折しました。

しかし、一応 openSUSE のリポジトリに qemu-arm があるのでインストールはできます。

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10145571.png

openSUSE:Leap:15.2:Update プロジェクト提供の qemu-arm

openSUSE15.2  x86-64 環境でARMのクロスコンパイル_a0056607_10155210.png


opensuse152:~/test # qemu-system-arm --version
QEMU emulator version 4.2.1 (openSUSE Leap 15.2)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
opensuse152:~/test #
opensuse152:~/test # qemu-system-arm -M ?
Supported machines are:
akita                Sharp SL-C1000 (Akita) PDA (PXA270)
ast2500-evb          Aspeed AST2500 EVB (ARM1176)
ast2600-evb          Aspeed AST2600 EVB (Cortex A7)
borzoi               Sharp SL-C3100 (Borzoi) PDA (PXA270)
canon-a1100          Canon PowerShot A1100 IS
:
: 以下略
:
opensuse152:~/test #


29.2 General qemu-system-ARCH Options


qemu-system-arm • helpQEMU emulator version 2
https://helpmanual.io/help/qemu-system-arm/

どうも、エミュレーションに必要な、大量のパラメータが必要な様です。詰まった!

ここで挫折。

ー まとめ

x86-64 環境で。ARM のバイナリを動かせないか?という切り口から、なぜか「クロス開発なら openSUSE でもできる!」というオチになり、目標のバイナリエミュレーションまでには至らずでした。

しかし、ARM 以外にもクロス開発環境は豊富にありました。流石に z80 は有りませんが、PowePC  から m68k まで揃っています。なるほどオープンソースって面白いなと改めて感じさせられました。

クロス開発環境は Debian/ubuntu 系が強いようですが openSUSE もできる訳ですね。ただし情報が少ないのが難点です。










タグ:
by islandcenter | 2020-12-09 10:01 | SUSE | Comments(0)

Zabbix 5.2 がリリースされたので openSUSE 15.1 にインストールされた zabbix 5.0 からアップデートしてみました。

- Snapshot の削除と復元ポイントの作成 -

まず、大きな変更をする前に、システムのバックアップとスナップショットの確認をします。

もし KVM/XEN など、仮想化されたされたシステムをつかっているなら、仮想イメージのバックアップを取っておく事です。何が何でもバックアップは重要です。

次に、パーティションの空きを確保し、十分な空き容量があるかどうかを確認します。

yast2 > miscellaneous > Filesystem Snapshot (yast2 snapper) を起動して、スナップショットのうち、古いスナップショットを削除(Delete)します。スナップショットは定期的にメンテナンスされますが、パーティションの空きを最大確保するには、大きな変更点がある古いスナップショットを削除するのが最適とされます。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11173908.png

次に アップデート前の SnapShot を作成( Create ) します。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11185478.png

こちらの記事もご参考下さい。zypper up してシステム空き領域がなくなってしまってハマってしまう反省文です。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保

ちなみにデータベースは
/var/lib/mysql/zabbix
に作成される様です。ここは XFS フォーマットなのでスナップショットは取っていません。

本家 SUSE Enterprise Server のドキュメントもご参考下さい。

7 Snapperを使用したシステムの回復とスナップショット管理 REPORT DOCUMENTATION BUG#


- アップデート -

次のダウンロードページには SUSE Linux Enterprise 15 (SLES15) でのインストール手順です。今回はインストールではなくアップデートなので、

- リポジトリを変更して
- YaST でアップデート
- YaST で Zabbix を再起動

という手順です。

zabbix5.2 ダウンロード

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11222971.png

ダウンロードページにある次のコマンドを実行します。

# rpm -Uvh --nosignature https://repo.zabbix.com/zabbix/5.2/sles/15/x86_64/zabbix-release-5.2-1.sles15.noarch.rpm
# zypper --gpg-auto-import-keys refresh 'Zabbix Official Repository'

zabbix:~ # rpm -Uvh --nosignature https://repo.zabbix.com/zabbix/5.2/sles/15/x86_64/zabbix-release-5.2-1.sles15.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/5.2/sles/15/x86_64/zabbix-release-5.2-1.sles15.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-5.2-1.sles15 ################################# [ 50%]
Cleaning up / removing...
2:zabbix-release-5.0-1.el15 ################################# [100%]

zabbix:~ # zypper --gpg-auto-import-keys refresh 'Zabbix Official Repository'
Retrieving repository 'Zabbix Official Repository' metadata ................................[done]
Building repository 'Zabbix Official Repository' cache .....................................[done]
Specified repositories have been refreshed.
zabbix:~ #

次に YaST > Software Management > Software Repositories から、リポジトリが変更されている事を確認し "Enabeled" , "Autorefresh" の二つをチェックします。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11224356.png

次に YaST > Software Management から "zabbix" を Search して、Zabbix 5.2 のパッケージでチェック済み項目を全て、右ボタンで "Update" に変更します。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11232781.png

自動的にアップデートが始まります。

- サービスの再起動 -

YaST > System > Service Manager から、 Zabbix_Server/Agent の Start/Stop を切り替えて、サービスの再起動をして、状態が On boot/Active になっている事を確認します。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11235426.png


コマンドで再起動するには systemctrl コマンドを使います。

opensuse151:~ # systemctl restart zabbix-server.service
opensuse151:~ # systemctl restart zabbix-agent.service

サービスを再起動したら # tail /var/log/message して、エラーが出ていない事を確認しておきます。

アップデートが終わったら、 ブラウザで http://myzabbix_ip/zabbix にログインして、ダッシュボードの下中央にある Zabbix のバージョン番号を確認します。

openSUSE 15: zabbix5.0 から 5.2 へのアップデート_a0056607_11245526.png


どうやらうまく行ったみたいです。






by islandcenter | 2020-12-02 11:16 | SUSE | Comments(0)

Apple silicon M1 の衝撃は

「組み込み SoC でも、ちゃんとデスクトップアプリケーションが動く」

という点なンですね。

ARM といえば、低消費電力、低パフォーマンスの組み込み機器向けのプロセッサ、というイメージが強かったのです。それが、ごく普通のラップトップや Mac mini の様な小型デスクトップで Intel の Core i7 並、それ以上のパフォーマンスを出している、という点に驚かされている訳です。

「携帯電話程度の ARM アキテクチャで Final Cut Pro が Intel Core i7 並に動く」

となると、長年 PC をあつかってきた、PC ジャンカーとしては、

「じゃ ARM の自作 PC 市場はどうなのよ?」

という疑問がフツフツと沸いてくるわけなんです。

ーラズパイほぼ一択の ARM 市場ー

で色々調べたら、 ARM ベースの「自作の世界」というのはあるにはあるンだけど、ほぼ Raspberry Pi か、その他マイナーなワンボードコンピュータキットがあるだけで、いずれも IoT 機器のベースとなる極低消費電力、最低機能のワンボード低スペックのキットぐらいしか見つからないンです。

折角 SUSE が SUSE Enterprise for ARM (SLES ARM)の様な、ディストリビューションを提供していても、これだけ高機能なLinux ディストリビューションを動かすだけの お手軽高性能なハードウェアプラットフォームがない。

多くの Raspberry Pi のインプレッションを探してみると「デスクトップ用途ではやっぱり重い」とか「パッケージの導入には時間がかかる」とか、「使えるけどネガティブ」なインプレッションしか見当たらないのが残念なのです。最近では USB 3.0 搭載のラズパイもあるので、Samba にも使えそう、みたいなインプレッションがありますが、それ以上はない。

あくまでもラズパイは「教育用」であり、「組み込み用途」にも使えるキットなんです。

ーメモリは? 選べるマザーボード、ソケットやスロットは? 電源やストレージは選べるの?ー

ARM アキテクチャで、今までの感覚で、メモリや電源、ストレージを選べる「自作の世界」はかなり制限されているンですね。 Apple M1 も、ユニファイドメモリで、M1チップの中に DRAM が組み込まれている。

Apple M1 の成功は ARM の PC 自作機の夢を見せるか?_a0056607_11321862.jpg

つまり Apple Silicon Mac では、後でメモリ増設だとかは出来ないンです。Apple のことですから、M1 チップもロジックボードハンダ付けでしょう。

ー組み込みSoCの悲しさー

あくまでも ARM は開発会社であって、SoC や搭載機器を作るハードウェアベンダーではないというところにカナシサがあるのですね。ARM コアを中心に、どの様なチップセットを設計して搭載するか、あるいはチップセット内蔵の SoC を開発するかは、ハードウェアベンダーの裁量であり、おかげで、Apple M1 のような、省電力で高速メモリ内蔵のプロセッサが搭載できるのです。

おそらく PC-AT の世界で一般的な、電源、メモリソケットなどの規格が採用される可能性はないンじゃないかな?

そういう選択肢があっても、ARM が持つ省電力、低価格、高パフォーマンスを削ぐ事になるでしょう。

つまり、ARM アキテクチャを動かすための、ハードウェアの標準化はないし、あっても ARM アキテクチャを高効率で、省電力で動かす設計、エコシステムの構築が難しい。極省電力の ARM コアを動かして、3.3v 駆動の DDR4 のメモリスロットを4本、隣の PCIe 4.0 スロットに爆熱を出して、大量の電源を必要とする Radion のナンチャラ・グラフィックカードを秋葉原のショップで買ってきて、繋ぐためのハードウェア設計は考えにくいし、だったら電源は最低500Wは必要だね、みたいな。

そうなると、省電力、高効率な ARM アキテクチャと Intel 系 x86-64 との差別化がし難い。

ーそれでも欲しい ARM ベースの「パソコン」ー

Apple M1 が Intel に示したものは「x86-64アキテクチャの限界」なのです。それは、私達 PC ジャンキーもわかっている。だから、ARM ベースの PC が欲しい。まぁ、Microsoft Windows の世界は ARM で散々コケているから期待はしないけど、私達が望むのは、ARM アキテクチャで、一般的な Linux ディストリビューションがや Android や Chrome OS が動き、Gimp や、重たい CPU 処理などができるワークステーション。

あるいは、高速大容量の SSD と大量のメモリを積んだミドルクラス以上のサーバーや、仮想化プラットフォームなのです。そんなシステムが、私達 PC ジャンキーの手元にあればと思うわけです。

10 歩譲っても、GPU とメモリ、ミドルクラスの ARM コアがオンボード化されて、カスタマイズできる M.2 ストレージソケットが付いた Micro ATX ケース規格でATX 電源がそのまま使える様な。あるいは、GPU とメモリ内蔵の ARM コア搭載の マイクロプロセッサ用共通ソケット規格や、共通のバス規格。

そんなマザーボードキットがあれば、オモシロイと思うんですがいかがなものでしょう。

そのためには Intel 以外の「どこか」のハードウェアベンダーが PC-AT 規格のパーツと互換性のある「標準」を作らなければならないわけなんですね。




by islandcenter | 2020-11-23 11:48 | 雑文 | Comments(0)

訳あって、只今 macosがメインマシンとなっておりまして.....

mac の terminal から、SUSE Linux の yast2 GUI を使うにはどうすればいいのかなと....


まず、macOS には root という概念がないのでterminal から ssh するときは

$ ssh my_host_ip -l root

とすること。X11 の転送を許可するため -X か -Y (Upper Case Sensitive) オプションをつける事。

manページ — SSH

>>>>>
-X
X11 の転送を許可します。 これは設定ファイルによって、ホストごとに指定することもできます。
X11 の転送には注意が必要です。 リモートホスト上で (そのユーザの X 認証のための) ファイルアクセス権限を 無視できてしまうユーザがいる場合は、転送された接続を介してローカル側の X11 ディスプレイにアクセスできてしまうことになります。 すると攻撃側はキーストロークを盗み見るなどの行為が可能になってしまうかも しれません。

-x
X11 の転送を禁止します。
-Y
信用された X11 の転送を許可します。
<<<<<

という事で

macmini:~ knakaj$ ssh opensuse -Y -l root
Password: ********
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Sat Sep 26 14:54:39 2020 from 192.168.1.23
opensuse:~ # nautilus &
[1] 32090
opensuse:~ # libGL error: failed to load driver: swrast
Nautilus-Shae-Message: Called "net usershare info" but it failed: 'net usershare' returned error 255: net usershare: usershares are currently disabled


opensuse:~ # yast2 &
[2] 32219
opensuse:~ # libGL error: failed to load driver: swrast

opensuse:~ # firefox &
[3] 32256
opensuse:~ #
macOS でターミナルからopenSUSEにSSH でログインしてX GUIを使う_a0056607_16271881.jpg
どーん!

という事です。どうもWindows のmobaXterm に慣れていると、急遽忘れてしまうんですね。





タグ:
by islandcenter | 2020-09-27 16:44 | SUSE | Comments(0)

何かと引きこもりになりがちな今日この頃です。テーマを決めないと次の目標が見つからないので、電子メールのシステムを勉強してみる事にしました。

電子メールシステムは難しい? openSUSE Leap 15.2 でメールサーバ

- まずは Telnet でメールを送る -

これまで、馬鹿の一つ覚えの様に GroupWise 一辺倒だったのですが、これではイカンと一念発起です。

- openSUSE Leap 15.2 では Postfix はデフォルト -

openSUSE Leap 15.2 では、デフォルトで Postfix MTA がインストールされています。OSインストールの際にDNSと Hostname を設定したので、SUSE Linux では、自動的に、 /etc/postfix/main.cf の hostname 変数には FQDN がセットされています。

SUSE のデフォルトです。

mail:~ # cat /etc/postfix/main.cf | grep islandcenter
myhostname = mail.i.islandcenter.jp
mail:~ #

まずはここから何を行えるかを見てみましょう。

- telnet のインストール -

Postfix はじめ MTA を学ぶためには、一番基礎となるのが telnet を使った、メールの送信です。telnet で基本的な操作をして、メール(MTA) のプロトコル学んでください、という事ですね。

telnet は deprecated (非推奨) なプログラムなので、手動でインストールします。

yast > Software management > "telnet" を検索してスペースキーでチェックしてインストールできます。

メールサーバー入門、とりあえず openSUSE Leap 15.2 初期設定の postfix から telnet してみる_a0056607_12110468.png

- telnet でメールを送る -

次に、root に telnet でテストメールを送ってみます。太字は実際タイプした文字です。


knakaj@mail:~> telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.i.islandcenter.jp ESMTP
ehlo mail.i.islandcenter.jp
250-mail.i.islandcenter.jp
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
mail from: <knakaj@mail.i.islandcenter.jp>
250 2.1.0 Ok
rcpt to: <root@mail.i.islandcenter.jp>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Hello Root!

Hello Im your user...

.
250 2.0.0 Ok: queued as 064D8808541
quit
221 2.0.0 Bye
Connection closed by foreign host.
knakaj@mail:~> 

- mail コマンドでメールを読む -

デフォルト(無指定状態)では postfix は mbox 形式です。



mail:~ #
You have mail in /var/spool/mail/root
mail:~ #
mail:~ # ls /var/spool/mail/ -al
total 4
drwxrwxrwt  2 root root  18 Aug  7 17:06 .
drwxr-xr-x 11 root root 132 Aug  7 10:59 ..
-rw-------  1 root root 588 Aug  7 17:06 root
mail:~ # mail
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 knakaj@mail.i.isl Fri Aug  7 17:06   15/588   Hello Root!
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp  Fri Aug  7 17:06:08 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
Subject: Hello Root!
Date: Fri,  7 Aug 2020 17:03:40 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

Hello Im your user...


? quit
Saved 1 message in mbox
mail:~ # ls mbox -al
-rw------- 1 root root 599 Aug  7 17:07 mbox
mail:~ #


メールを読み終わると、/etc/spool/mail にあったメールは ~: mbox ファイルに本文がマージされ移動します。

- メールの保存形式を Maildir に変える -

- Maildir に変更 -

- mbox と Maildir との違い

mbox は、旧来のメール保管方式で、私が初めて触った HP-UX もこの方式でした。受信したメールは SUSE Linux では /var/spool/mail/User_name ファイルにスプールされ、mail コマンドで読むと /home/User_Home/mbox ファイルに切り貼りされます。

後方互換性は良いのですが、単一のテキストファイルをロックして、該当のメールを切り貼りするため、スプールや受信メールが破損しやすいという欠点があります。

一方、Maildir 方式は /home/User_Home/Maildir の下に tmp, new, cur, というディレクトリが作られ、メール本文はメール毎に別ファイルとして tmp -> new -> cur のそれぞれのディレクトリにスプール -> 未読 -> 既読、とステータスを変更しながらハードリンクを切り替える方式です。一見複雑ですが、動作が単純なので、現在はこの方法が主流の様です。

mail コマンドは、デフォルトで mbox を使いますが、openSUSE Leap 15.2 はじめ最新の Linux の mail コマンドでは

localhost :~ > mail -f ./Maildir

を実行することで従来の mail コマンドと同じ処理をしてくれるわけです。

/etc/postfix/main.cf の次の一行をコメントアウトして postfix を再起動します。

mail:~ # cat /etc/postfix/main.cf | grep home_mailbox
# The home_mailbox parameter specifies the optional pathname of a
#home_mailbox = Mailbox
home_mailbox = Maildir/
mail:~ #

mail:~ # postfix check
mail:~ #
mail:~ # systemctl stop  postfix.service
mail:~ # systemctl start postfix.service
mail:~ #

Telnet でメールを送ってみた。

mail:~ # ls -l ./Maildir/
total 0
drwx------ 1 root root  0 Aug  8 14:48 cur
drwx------ 1 root root 62 Aug  8 14:48 new
drwx------ 1 root root  0 Aug  8 14:48 tmp
mail:~ #
mail:~ # mail -f ./Maildir/
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"./Maildir/": 1 message 1 new
>N  1 knakaj@mail.i.isl Sat Aug  8 14:45   15/546
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp Sat Aug  8 14:45:48 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
subjecct: to root home_dir ...!
Date: Sat,  8 Aug 2020 14:45:48 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

open your mail dir !

Thnks....

? q
"./Maildir/" updated.
mail:~ #

一応、デフォルトの mbox から ~/Maildir/ 形式に変わったようです。





isLandcenter.jp










by islandcenter | 2020-08-14 12:11 | Linux | Comments(0)

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13230031.png

BtrFS の甘い罠、アップデートの前に空き容量を確保

どんなショボいシステムでも、安易に変更は加えない方がいいわけです。
openSUSE Leap 15.1 のシステムを

 # zypper dup

したところ、見事に罠にハマりました。BtrFS の罠です。スナップショットを取っているので、空き容量がなかったんです。
空き容量がないところでパッケージのアップデートなんかすると、openSUSE Leap 15x はルートパーティションが Copy On Write の BtrFS ですからファイルは上書きではなく、差分をドンドンと CoW してしまう。遂にディスクの空きを使い果たして、中途半端な zypper dup の結果、

「システムが立ち上がらない」

という最悪の結果に陥りました。BtrFS のスナップショットの残骸ってロック掛かっていて、レスキューディスクで起動しても消せないのですね。

という事で、BtrFS のファイルシステムに変更を加える場合は

「空き容量を確認して空きを確保してから行え」

という「鉄の法則」を学びました。



- BtrFS 空き容量確認 -

How much free space do I have? or My filesystem is full, and I've put almost nothing into it!

1 Linuxファイルシステムの概要

これらのドキュメントによると


 opensuse151:~ # btrfs fi show
Label: none  uuid: 8466aee4-2738-4b0a-924a-79edad4b4676
        Total devices 1 FS bytes used 8.13GiB
        devid    1 size 14.00GiB used 10.57GiB path /dev/vda2
opensuse151:~ #

"
ファイルシステムの合計サイズとその使用量を表示します。最後の行のこれら2つの値が一致する場合、ファイルシステム上の領域はすべて割り当て済みです。
"
上のケースでは14Gbのデバイスサイズのうち、 10.57Gb 使用中です。

opensuse151:~ # btrfs fi df /
Data, single: total=8.01GiB, used=7.50GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.25GiB, used=641.95MiB
GlobalReserve, single: total=30.22MiB, used=0.00B
opensuse151:~ #

"
ファイルシステムの割り当て済みの領域(total)および使用済みの領域の値を表示します。メタデータのtotalおよびusedの値がほぼ等しい場合、メタデータ用の領域はすべて割り当て済みです。

メタデータ 1.25 Gb 中、641Mb 使用中です。

opensuse151:~ # btrfs fi usage /
Overall:
    Device size:                  14.00GiB
    Device allocated:             10.57GiB
    Device unallocated:            3.43GiB
    Device missing:                  0.00B
    Used:                          8.76GiB
    Free (estimated):              3.93GiB      (min: 2.22GiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               30.22MiB      (used: 0.00B)

Data,single: Size:8.01GiB, Used:7.50GiB
   /dev/vda2       8.01GiB

Metadata,DUP: Size:1.25GiB, Used:641.95MiB
   /dev/vda2       2.50GiB

System,DUP: Size:32.00MiB, Used:16.00KiB
   /dev/vda2      64.00MiB

Unallocated:
   /dev/vda2       3.43GiB
opensuse151:~ #


前の2つのコマンドを組み合わせたのと同様のデータを表示します

つまり btrfs fi usage <mount_point> が一番使われやすいコマンドだという事です。

- ncdu, du コマンド -

duコマンドは当てになりません。ncdu でルートからスキャンしたらこれ。このシステムは物理的に25Gbしかない仮想VMです。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13232822.png

スナップショットサイズが「150Gb 使用中」と、あり得ない数字を示しています。

- 完全な見積は不可能 -

こちらの文書の中に

How much free space do I have? or My filesystem is full, and I've put almost nothing into it!

"
So, in general, it is impossible to give an accurate estimate of the amount of free space on any btrfs filesystem. Yes, this sucks. If you have a really good idea for how to make it simple for users to understand how much space they've got left, please do let us know, but also please be aware that the finest minds in btrfs development have been thinking about this problem for at least a couple of years, and we haven't found a simple solution yet.
"

Google 先生の翻訳によると

"
したがって、一般に、btrfsファイルシステムの空き容量を正確に見積もることは不可能です。はい、これは最悪です。ユーザーがどれだけのスペースを残したかを簡単に理解できるようにする方法について本当に良いアイデアがある場合は、私たちに知らせてください。また、btrfs開発の最高の心がこの問題について考えていることに注意してください。少なくとも数年間は、簡単な解決策はまだ見つかりませんでした。
"

とあり、もう BtrFS では、正確な空き容量確認は現時点で「不可能」と断じています。

そもそも、ファイルコピーの段階で、当然システムの API は空き容量を確認するわけですが、その元ネタは何なんだろうか? という疑問がわいてきます。

- BtrFS の鉄則 -

- 想定されるデータ量の倍のサイズのパーティション確保

例えば、openSUSE Leap 15.x では / (ルート)の BtrFS パーティションは、最低でも 15Gb のサイズ以上確保しておかないと、インストールの際、警告が出ます。実際のインストールで使用されるディスク容量は openSUSE Leap 15.2/SLE15 で 7.5 Gb 程度です。SLE12 では6Gb 程度でした。

空き容量の把握は難しいので、長期運用でバージョンアップに伴い必要とされる空き容量は、将来に渡って不明です。将来バージョンアップしたり、パッチを頻繁に充てるクリティカルなシステムなら 25Gb ~ 30Gb 程度のルートパーティションサイズが欲しいところです。「ディスク容量を食う」点は、誰も指摘していませんが BtrFS の隠されたデメリットです。

もし、コンパクトで JeOS な仮想サーバーを作りたいのであれば ext3、4 などの古来のファイルシステムを検討すれば 10Gb 程度でも使えるわけです。

- スナップショットの定期的なメンテナンス scrub

デフォルトではシステムは毎週 scrub によるメタデータの修復、デフラグ、破損ファイルの修復を実行します。scrub はファイルシステムの破損などがないかメタデータをチェックし、自動修復する機能です。sysconfig に設定されます。BtrFS の信頼性を確保するための重要な機能です。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13241420.png


手動で scrub するには

# brtfs scrub start <mount point>

を実行し、 btrfs scrub status -d -R <mount point> で結果を確認できます。

- スナップショットのメンテナンス

スナップショットの作成と削除は自動化されています。こちらの文書によると SUSE Linux(SLE15) においては

7.1.3.4 スナップショットのアーカイブの制御

"
デフォルトでは、最大10個の重要なインストールスナップショットと管理スナップショット、および最大10個の標準のインストールスナップショットと管理スナップショットが保持されます。これらのスナップショットがルートファイルシステムのサイズの50%超を占有する場合、追加のスナップショットは削除されます。最低でも、4つの重要なスナップショットと2つの標準スナップショットは常に保持されます。
"

とあり、この定義は snapper -c MySnapConfig create-config <partition> によって作成された /etc/snapper/configs/ にされた MySnapConfig ファイルによって定義されます。

7.4.1 既存の設定の管理

7.6.2 タイムラインスナップショットのクリーンアップ

それぞれ、スナップショットの作成と削除はタイムラインによって snapper -c MySnapConfig ファイルに作成されます。

opensuse151:/etc/snapper/configs # cat mysnapconfig  | grep TIMELINE
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
opensuse151:/etc/snapper/configs #

通常運用では問題にならないので、デフォルトの scrub のタイミングも、スナップショットを有効化した場合の、スナップショットのメンテナンス間隔は、そのままで構わないでしょう。

- アップデート前のスナップショットの削除

手動でのスナップショットの状態、最新のスナップショットの状態確認は YaST2 Snapper で確認し、内容のチェックとロールバック、削除などの操作を行います。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13250586.png

4.1.1 スナップショットとディスク容量

ヒント: 容量を空ける/ディスクの使用率
スナップショットを含むBtrfsパーティションの容量を空けるには、ファイルではなく、不要なスナップショットを削除する必要があります。古いスナップショットは、最近のスナップショットよりも多くの領域を使用します。






とある様に、アップデートに必要な空き領域を確保するには、古いスナップショット、意図的に取得した古いスナップショットを削除して、空き領域を確保し、 btrfs fi usage <Partition> か btrfs fi df <Partition> コマンドで空き容量を確認し、その後、明示的にアップデートからのスナップショットロールバック、復元ポイントを作ってから、アップデートを実施すべきでしょう。

忘れてはならないのは、zypper up や zypper patch など、あるいはメジャーアップデートする時、同じファイルであっても物理的なファイルそのものが上書きされずに、古いファイルはスナップショットに「移動」し、空き領域に新しいファイルが作られることです。

- まとめ -

BtrFs においては、ファイルの空き領域に常に注意し、ファイルコピーなどによる空きスぺースの Run Out には気をつけよ、という事です。








by islandcenter | 2020-07-26 13:28 | SUSE | Comments(0)

普段、SUSE Linux は、サーバー運用なので、メールの読み書きはしないのですが、、openSUSE Leap 15.2 のライブUSBを作ったので、メールも使える様にしました。 

メーラと言えば Thunderbird。 Netscape Mail 時代から、同じメールのプロファイルなので、古いメールのアーカイブも読める。 

という事で openSUSE GNOME デスクトップで Thunderbird を使おうの回です。

よく、SLE のアクティベーションキーを送ってほしい場合など、ブラウザで gmail 開いて.... とやっていたのですが、使い慣れてて、面倒な設定もソラでできる Thunderbird が使える事は個人的に嬉しい。

- ダウンロードとインストール -

Thunderbird は software.opensuse.org から1クリックインストールするのが一番確実です。しかし、openSUSE で配布しているものは英語版だけです。別に日本語の読み書きで不自由しなくて、メニューが英語でも構わないのですが、本家 Mozilla から日本語版をダウンロードして使う事にしました。

Thunderbird  日本語 Linux 版

ダウンロードしたら解凍して、解凍先の xx/xx/thunderbird を実行するだけです。ただ、あまりディレクトリに小間物屋を開きたくないので、<home>/bin に移動しました。

linux@localhost:~> echo $PATH
/home/linux/bin:/usr/local/bin:/usr/bin:/bin
linux@localhost:~>

/<userhome>/bin にパスが通っているので thunderbird 本体のシンボリックリンクを作ります。

linux@localhost:~/bin> ln -s  thunderbird/thunderbird thb

これで ~> thb だけで Thunderbird が起動します。

- プロファイル -

~> thunderbird -profilemanger を実行すると、手動でプロファイルを指定できます。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_16011417.png

- gnome のアプリケーションに登録 -

しかし、メールを読むのにイチイチターミナル開くのも面倒なので GNOME のパネルに登録します。そのためには alacarte (アラカルト)パッケージをインストールします。openSUSE Leap 15.2 の標準リポジトリにあるので、そのまま YaST でインストールするか、下の software.opensese.org から1クリックインストールします。

alacarte : Menu editor for GNOME

Alacarte is a simple freedesktop.org compliant menu editor for GNOME that lets you change your menus, simply and quickly. Just click and type to edit, add, and delete any menu entry.

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_15581983.png

Thunderbird を登録します。

~> alacarte &

「新しいアイテム」> 任意の名前を付けて、brows ボタンで実行ファイルを指定してOK

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_16004054.png

Activities に Thunderbird が出てきた。アイコンが気に入らないけど...

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_15594189.png

適当にアイコンを探して、alacarte に登録しました。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_11254795.png

- Thunderbird のプロファイルの管理 -

コマンドラインオプション

”Linux
ターミナルを開いて次のように入力します。
cd Thunderbird installation directory
./thunderbird -ProfileManager
上記の例は、Mozilla の Thunderbird メールクライアントで "-ProfileManager" コマンドラインオプションを呼び出しています。”

プロファイル、メールストレージは ~> .thunderbird に作成されます。このディレクトリをそっくり別メディアにコピーしてバックアップとします。

linux@localhost:~/.thunderbird> ls -l
total 20
drwx------ 9 linux users 4096  7月 14 17:12 7amog83k.default-release-1
drwx------ 3 linux users 4096  7月 14 15:02 Crash Reports
drwx------ 2 linux users 4096  7月 14 15:02 Pending Pings
-rw-r--r-- 1 linux users  190  7月 14 17:01 installs.ini
-rw-r--r-- 1 linux users  335  7月 14 17:01 profiles.ini
linux@localhost:~/.thunderbird>

※ちなみに Windows と macOS 版の ProfileManager の立ち上げ方は次の通りです。

Windows
C:\ >"\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" -p

macOS
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin -profilemanager
- PS. YaST からのインストール -

コメントいただきました。 openSUSE Leap 15.2 では、MozillaThunderbird-translations-common パッケージを入れると日本語化できました。アイコンも GNOME デスクトップに作られます。

YaST > Software Management から Thunderbird を検索して Thunderbird と一緒にインストールすれば OK です。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_13213361.png

usr/lib64/thunderbird/ にインストールされます。ただし一つ古い openSUSE Leap 15.1 ではリポジトリからインストールしても動かなかったこと、SUSE Linux Enterprise 15 (SLE15.0) にはそもそもパッケージに含まれていない事も併せて報告します。

システムにインストールせず、エンドユーザが個人的に使う目的であれば、本家 Mozilla からダウンロードして使う方が、システムへの影響も少ないとも言えます。

- まとめ -

Mozilla Thunderbird は高機能で使いやすく無料で使えるメールソフトウェアで、歴史も長く、マルチベンダー環境でも移行が簡単な、「いい線行ってる」メーラです。メール、ブラウザ、オフィスソフトウェアは、デスクトップで使える三種の神器です。Firefox, LibreOffice, Thunderbird があれば怖くはない。でもお気に入りのブラウザは Opera と Chrome なので、次はこれらを何とかしたいですね。







by islandcenter | 2020-07-15 16:03 | SUSE | Comments(0)