作成開始 : 令和2年(2020年)02月09日(日) 最終更新 : 令和6年(2024年)02月03日(土)

軽量Linux Q4OS  で遊んでみた。


会社勤めだった頃にもらっていた超々低スペックなPC、しばらくは「シンクライアント」として遊んでいましたが、今ひとつ面白くなかった ので放置していました。
超々低スペックなPCでも軽快に動くOSを探していたら「Q4OS」というLinuxがあることを知りました。

うちの超々低スペックなPCではどうかな? (また悪い癖が!!)
かなり無謀かと思いましたがインストールして遊んでみました♪


1.Q4OS とは

Q4OS はドイツで開発されている軽量で Windows XP っぽい Linux ディストリビューションです。
古いPCでも、高いセキュリティと信頼性、安定性などに重点を置いた Linux ディストリビューションです。

【概要】
ベース: Debian (Stable)
アーキテクチャ: aarch64, armhf, i686, x86_64
デスクトップ環境: KDE Plasma, Trinity
パッケージ管理: dpkg (ATP)
カーネル: 4.19.67

今回は Trinityデスクトップのをインストールしました。
最小スペックは次のとおりです。
PU: 300 MHz
RAM: 128 MB
DISK: 3 GB
Display: XGA 1024 x 768

2.インストールしたPC



NEC VersaPro VJ10M/MH-2

CPU : インテル(R) Celeron(R) Mプロセッサー 超低電圧版 423
クロック周波数 : 1.60 GHz
メモリ : 内蔵 512MB 増設 2GB (仕様では最大1,280MBですが2GBプラスでも認識しました)
ディスプレイ : 12.1型TFTカラー液晶(XGA)
HDD : 40GB

他は 商 品仕様 を参照ください。

Windows XP 時代のPCです。

Android x86をインストールしてしばらく遊んでいましたが、どうにも遅い上に動かないアプリが結構あってやめました。

3.ダウンロードとインストールCDの作成

SOURCEFORGE または Q4OS公式サイトからダウンロードしま す。

今回は「q4os-3.10-i386-instcdr2.iso (455.1MB)」をダウンロードしました。
ダウンロード、インストールはその時点で最新のものにしましょう。

USBメモリに焼いて起動用にする手もありますが、サイズがCDに収まるので、XfburnでCDに焼きました。

このバージョンは、少なくとも2024年7月までサポートされます。


4.インストール
例によって画像が無いのでテキストベースです。
画像付きのは他のサイト (例えば Q4OS 2.4 セットアップ [あちあち情報局]とか・・・)
1.PCがCDから起動できるようにBIOS設定します。

2.インストールCDをセットしてPCの電源をONにします。

3.起動オプションの「Classic insatll」を選択します。

4.select a langageで「Japanese-日本語」を選択します。

5.場所の選択で「日本」を選びます。

6.キーボードの設定で「日本語」を選択します。

7.ユーザの本名(フルネーム : 恐らく表示用かと)を入力します。

8.アカウント名を入力します。

9.パスワードを入力します。
   さらに、確認入力でもう一度パスワードを入力します。

10.ディスクのパーティショニングが始まります。
10-1 ハードディスクの初期化を手動で行うかを選択します。自分は「ガイド - ディスク全体」を選択しました。
10-2 インストールするディスクの選択をします。
10 -3 内容が確認できたら「パーティショニングの終了とディスクへの書き込み」を選択します。
10 -4 ディスクに変更を書き込みますか? で「はい」を選択するとディスクの初期化とデータのコピーが開始されます。
11.インストール完了の画面でCDを取り出し「続ける」を選択するとOSの再起動が開始されます。

12.ログイン画面で設定したユーザ名とパスワードを入力して「Login」をクリックします。

13.Language - setup:基本言語を「Japanese」にするか質問されるので「Yes」を選びます。

14.初期デスクトップが立ち上がります。


    ↑
これは日本語化した後の画面です。実際は見事に文字化けして何が何だかわからんようになります。勘で処理しました。

←こんな感じです。こういうのは久しぶりに見ました。

※4.7をインストールしてみましたが、文字化けはなく簡単にインストールできました。(令和4年[2022年]04月25日 [月] 追記)
15.Welcome screen から Run Desktop Profiler をクリックして OS以外のアプリのインストール設定をします。3つから選んで「Install」をクリックします。


Full ・・・ブラウザやゲームなどインストール 520MB程度必要。少し時間がかかります
The Basic ・・最低限の環境設定ツールのみインストールします。
Keep ・・何もインストールしない(アプリは自分でインストールします)

私は「Full」を選択しました。

Desktop Profilerのインストール完了画面で「Finish」をクリックします。

Congratulations,setup has finished 画面で「OK」をクリックするとインストール終了になります。

ただし、デスクトップの日本語表示が文字化けしているので「日本語入力」の設定が必要です。
(文字化けしない場合もあるのかな!?)


5.文字化け対策
Synaptic パッケージマネージャから「fonts-noto-cjk」をインストールしました。



この後、ログアウト -> ログインで文字化け解消しました。


6.リモート環境その1
さて、ここまで出来たので続きはリモート接続できるようにしてみました。
ネットで調べながら設定とかする時に一々PCの近くまで行かなくても済むからです。

おっと、その前にネットワーク機器ですが、インストール当初、外付けのUSB無線カードを付けていました。
カード自体は認識しておりましたのでタスクバー右下にあるアイコンから「Wired Connection(enp3s8)」を使って設定してみました。
とっつきにくかったのですが、無線LAN接続ができました。有線接続はもちろんそのままでOKです。

VNCは画面が小さいし設定とか調べないといけないので「xrdp」をインストールしてみました。

Synaptic パッケージマネージャから「xrdp」をインストールしました。


そして、クライアントPCからリモートデスクトップ接続で接続します。私は「Remmina リモートデスクトップクライアント」を使いました。
Windowsであればそのまま RDP(リモートデスクトップ接続)でできますね。


    ↑
Session : Xorg でユーザ名、パスワードを入力しOKをクリックします。
令和5年(2023年)05月01日(火) 追記 4.7をインストールする機会があって xrdp をインストール
xrdpのログイン画面が表示されアカウント情報を入れてもずっとブランクスクリーンのままでした。

/etc/X11/xrdp/xorg.conf を以下のように修正したらOKになりました。
現行リマーク、コピーしてデバイスをカット

#Option "DRMDevice" "/dev/dri/renderD128"
Option "DRMDevice" ""


    ↑
できました。これで作業しやすくなります。


7.デスクトップの自動ログイン
このPCもテレビに画面を映して画像や動画を見たいので、ユーザ名、パスワードを入力せず自動ログインできるようにして みました。

起動時の「Welcome screen」の「Set Autologin」をクリックして設定します。

※「Welcome screen」は以下でも起動できます。
 スタート -> Applications -> アプリケーション -> Accessories -> システム -> Q4OS Welcome Screen




これでOS再起動してみます。


8.リポジトリの変更
debian testing repositoryは国内サーバーに変更します。synapticを使用し、repositoryの"ftp.debian.org"の箇所をすべ て、"ftp.jp.debian.org"に変更します。



その後synapticからシステムアップデート・アップグレードを行います。


9.viエディタをインストール
自分はコマンド操作でviエディタの方がGUIのエディタより使いやすいのでインストールしました。
標準ではviすらインストールされていません。
なので、Synaptic パッケージマネージャからインストールしました。



これで使いやすくなりました。


10.日本語入力
初期状態では日本語入力できないことから「fcitx-mozc」をインストールして日本語入力ができるようにします。

Synaptic パッケージマネージャからインストールしました。



インストールできたら、スタートボタン(左下のアイコン)→「Turn Off」→「現在のセッションを終了」、再ログインしたらユーザー名とパスワードを入力し「ログイン」します。

再ログイン後に右下のタスクトレイにキーボードのアイコンが出ていればインストール完了です。


日本語入力の出来るアプリを起動し、文字入力状態になったら「半角/全角」または「Ctrl+スペース」でMozcが起 動し日本語入力ができるようになります。

※Mozcが使えるようになっても標準ブラウザ「Konqueror」・スタートボタンから表示される検索フォーム・メモ帳「KWrite」 などは日本語入力に対応していません。
    ブラウザは Chromium ウェブブラウザ、メモ帳は Mousepad、ファイルマネージャは PCManFMをインストールしました。


11.TigerVNCのインストール
このPCもテレビにつないで画像とか動画とかリモートで操作して見たいので直接コンソール画面に接続するため TigerVNC をインストールしました。
VNCについては、TigerVNCの前に vino と vnc4server をインストールして調整しましたが、スキルが足らず断念。
接続できているようだけど画面が黒だったり、空白だったりでした。

そこで、直接コンソール画面に接続できる x0vncserver を使うことにしました。

Synaptic パッケージマネージャからインストールしました。


    ↑
tigervnc-scrapting-sever もインストールします。これないと x0vncserver がインストールされません。
ターミナルプログラム(Konsole)でログインし sudo vncserver とすると パスワードの入力を求められます。
確認のためにもう一度パスワードを入力します。
これで、 ~/.vnc の下に passwd が保存されます。
もし保存されていなかった場合、/root/.vnc に出来ていると思います。
その場合、以下で保存します。
/home/takaq/.vnc にいるものとします。

sudo su
cp /root/.vnc/passwd .
chgrp takaq passwd
chown takaq passwd

/root/.vnc/passwd を /home/takaq/.vnc へコピーし
passwdのパーミッション(グループとオーナーを takaq に変更します。

x0vncserver -display :0 -passwordfile ~/.vnc/passwd とし x0vncserver を起動します。

クライアントPCのVNCクライアントから接続し、画面表示できたらOKです。

※令和4年(2022年)02月22日(火) q4os 4.7 に tigervncをインストールして前記コマンド実行しクライアントPCのVNCクライアントから接続したら「接続が拒否されました」となりました。
 よくよく調べると -localhost no を加えないと他のPCから接続できないことを発見! (これ発見に4日くらい悶々としました)

 x0vncserver -localhost no -display :0 -passwordfile ~/.vnc/passwd とし x0vncserver
を起動しま す。
 ・・・・です♪


    ↑
無事接続できました。
前の項で自動ログインにしたので、せっかくだから x0vncserver を自動起動してみます。

まずは、起動スクリプトを作成し実行テストします。
スクリプトは以下のようにしました。


よかったら以下コピペどうぞ!!!

#!/bin/bash

# set by 2020/01/28
ProcessName=x0vncserver

count=`ps -ef | grep $ProcessName | grep -v grep | wc -l`
if [ $count = 0 ]; then
        echo "$ProcessName is dead"
        x0vncserver -display :0 -passwordfile ~/.vnc/passwd
else
        echo "$ProcessName is alive"
fi

上記を例えば x0vnc.sh で保存します。
パーミッションに実行権を付与します。 (Ex. sudo chmod +x x0vnc.sh)

まず、x0vncserver が実行されていない状態でスクリプトを実行します。 (Ex. sudo sh x0vnc.sh または x0vnc.sh)
画面に x0vncserver is dead と表示され、x0vncserver が起動したらOKです。
x0vncserver の起動は ps aux | grep x0vncserver か VNCクライアントから接続してデスクトップ表示したらOKです。

さらに、x0vncserver が実行されている状態で上記 スクリプトを実行します。
画面に x0vncserver is alive が表示されたらOKです。

そしたらいよいよ自動起動の設定です。
これがまた特殊であります。

自動起動は、ホームフォルダー直下の .trinity/Autostartにデスクトップファイルを作成する事により行なえます。
ここでは web browserとしても使用できるKonquerorを使用してこれを作成する流れを書きます。

Konquerorを起動します。


    ↑
”ホーム”ボタンをクリックし、ホームディレクトリ直下を表示させます。


    ↑
.trinity フォルダーをダブルクリックします。


    ↑
Autostartフォルダーをダブルクリックします。


    ↑
マウスボタン右クリック→”アプリケーションへのリンク”を選択実行します。
    ↓

    ↑
名称は適当に変更できます。例えば「x0vncserverへのリンク」とか・・・


    ↑
アプリケーション(A)タブで適宜入力設定します。


    ↑
デスクトップファイルが作成され、次回login以降自動起動対象となります。


    ↑
こんなの出来てます。



12.Numlockの解除
TDEのデフォルトでは、Numlock Onの状態となっています。これをoffにするには、”コントロールセンター”→”周辺機器”→”キーボード”から Numlock ”オフ”にチェックします。




13.DPMSを無効にしてみた & ノートPCのフタを閉じた時にサスペンドしないようにする。

リモートで使ったりするのにサスペンドとかスリープは不要で使い勝って悪いので調整してみました。

・・・ですが!

スタート -> コントロールセンタ -> システム管理 -> Monitor & Display -> 設定 - TDE コントロールモジュール -> Power Managementタブ で スタンバイやサスペンドの設定値を見ると「しない」という選択肢がありません。
最大で360分(6時間)です。


    ↑
これではいかんなぁー・・・と考えて「Enable DPMS Power save modes」のチェックを外し無効にしましたが、どうにも効きません。
ある時間になるとサスペンド状態になってしまいました。


    ↑
「Global Settings」タブの「Enable global display control」のチェックを外してやっとサイペンドしなくなりました。

それと、ノートPCのフタを閉じた時にサスペンドするのも対処しようとしましたが・・・・

/etc/systemd/logind.conf に HandleLidSwitch=ignore を追加してもだめでした。

色々調べてもサスペンドするのでなかば諦めたところ気になった記事を発見!

それによると・・・

「PCの電源をONにしてBIOSとかロゴ表示してすぐにフタを閉じる」・・・やってみました。

なるほど、こりゃーいい!。
リモートとかサーバー用途にいいですね。ナイスです。


14.デスクトップ・アイコンのサイズを小さくする。(デスクトップスケールの調整)
インストール後はデスクトップのスケーリングが1.65倍になっているため以下の手順で1倍に変更します。

Welcome screen -> More options > (右下) -> Setup Screen scaling


    ↑
Apply をクリックしてOS再起動すれば1倍表示に変更されます。


15.samba で smb共有を設定する。

なんか、q4osでもWebサーバー apache 使って公開できそうなので、手始めに例によってコンテンツ用に共有設定をしてみました。
Synaptic パッケージマネージャでインストールしようとしたら、既にインストールされていました。
先に共有するフォルダを作成しました。

端末konsole でログイン

$ cd /usr
$ sudo mkdir html
$ chmod 777 html
LAN内から自由に書きこめればいいので、ユーザ認証とかなしにしました。

$ cd /etc/samba
$ sudo cp smb.conf smb.conf.org -> 念のため初期confを保存しときます。
$ sudo vi smb.conf

・・・以下のようにして保存しました。
そして、sudo service smbd restart します。

 ↓
見えました。
ファイル書き込みもOKです。
バージョン確認すると・・・

 ↑
・・・・・ですね。

16.ssh を設定する。

VNC とか xrdp で接続しメンテするのもいいけど、ssh でシンプルに接続したいので設定してみました。
Synaptic パッケージマネージャでインストールします。
次に、/etc/ssh/sshd_config を端末から vi で編集します。

ファイル内にport等の記述がありますが、初期設定を残しておく為、最終行に以下の内容を記述します。
<記述内容>
Port 22
PermitRootLogin no
PasswordAuthentication yes
そして、sudo service sshd start
では、Windows PC から TeraTerm で繋いでみます。

 ↑
やりました。これで作業しやすくなります。

17.sendmail でメール送れるようにしてみる。

cgiやphpのスクリプトからメール送信できるようにしてみます。
いわゆるメールサーバーではなく、単に送信(SMTP)だけとします。(メールサーバーとして機能する時はもう少し設定追加が要ります)
sendmail でやってみます。
Synaptic パッケージマネージャでインストールします。
各種の作業は /etc/mail で行います。
sshd がインストールできたので CUI ベースで接続してやってみます。

 ↑
インストール直後の状態です。
a.aliases を編集してroot からのメールを特定のメールアドレスへ送信します。
# root: me@my.domain
   ↓
root: webmaster@dns12.takaq.jp

dns12.takaq.jp は、LAN内に設置してあるメールサーバーです。

編集したら、sudo make aliases でデータベースに反映されます。(aliases.db が更新されます)
b.access を編集して中継を LAN内 のみ有効にします。
以下を 追記します。
Connect:192.168       RELAY

※192.168.0.0/16 は中継許可するの意味です。

編集したら、sudo make access.db でデータベースに反映されます。(access.db が作成・更新されます)
c. 中継サーバーの指定
外部へのメール中継を LAN内メールサーバー(dns12.takaq.jp) -> ぷららの中継サーバー にしているためです。
これは、WebサーバーのCMSやBBSで外部のメールサーバー宛送信することがあるためです。
・viでsendmail.mc 内に以下を追加し有効に しました。
define(`SMART_HOST', `dns12.takaq.jp')dnl
・make します。
takaq@q4os-vy80m:/etc/mail$ sudo make sendmail.cf
Updating databases ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases...
Updating Makefile ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile...
Updating sendmail.cf ...
いいみたいです。
sendmail.cf が update されています。。
・sendmailを再起動します。
$ sudo service sendmail restart

$ ps aux | grep sendmail ・・・・・でプロセスあったらOKです。
・テストしてみます。
sendmail コマンドでLAN内にあるメールサーバーへのテストします。
この時、LAN内のDNS(LAN内にDNSサーバーが無い時はメールを受信する側の /etc/hosts) に送信側のホスト名が正しく登録されている必要があります。
でないと・・・・

----- Transcript of session follows -----
... while talking to dns12.takaq.jp.:
>>> MAIL From:<takaq@q4os-vy80m> SIZE=514
<<< 553 5.1.8 <takaq@q4os-vy80m>... Domain of sender address takaq@q4os-vy80m does not exist
501 5.6.0 Data format error

・・・になります。久しぶりにやったので忘れていました。

$ sudo sendmail takaq@dns12.takaq.jp

TEST
ABCDE
.
$

上記「ABCDE」の後の「.」(ドット)でメール送信されコマンドプロンプトに戻ります。
同 様にして、プロバイダのアカウントや携帯電話のアカウントへ送信してみます。
こ れでOKならひとまず終わりです。

18.Webサーバー Apache + PHP + Perl

今回は、q4os の検証と有志の会用として使うので SSL化はしません。

Synaptic パッケージマネージャでインストールします。
インストール直後にもうプロセスが動いています。
クライアントPCのブラウザから http://IPアドレス もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名 でアクセスします。

 ↓
Debian固有のパッケージだけあって独特です。
主たる設定ファイルは、/etc/apache2/apache2.confであり、includeされるファイルは、 mods-enabled/、sites-enabled/、conf.d/ の各ディレクトリ下に置かれるファイルと ports.confファイルとのことです。

http.confの記述内容が、Debianでは、apache2.confとmods-enabled/、sites-enabled /下のファイル、ports.confに分かれて記述してあります。
DebianのApache2設定ファイル
設定ファイル 説明
/etc/apache2/apache2.conf 主要なApache2設定ファイル
Section1:Global Environmentについて記述
/etc/apache2/mods-enabled/ 現在有効なApache2のモジュール を置くディレクトリ
普通は、mod-available/ディレクトリにリンクを貼ることで有効にする
/etc/apache2/mods-available/ Apache2のインストールされたモ ジュールを置くディレクトリ
mod-enabled/ディレクトリにリンクを貼ることで有効になる
/etc/apache2/sites-enabled/ 現在有効なWebサイトの固有設定を置 くディレクトリ
普通は、sites-available/ディレクトリにリンクを貼ることで有効にする
/etc/apache2/sites-available/ 利用可能なWebサイトの固有設定をお くディレクトリ
sites-enabled/ディレクトリにリンクを貼ることで有効になる
/etc/apache2/ports.conf デフォルトではポート番号80が設定さ れている
/etc/apache2/conf.d/ Apache2の追加設定を置くことが できるディレクトリ
デフォルトではcharsetのファイルが置かれている
Debianの考え方は、「必要なパッケージ、モジュールのみインストールする、あるいは有効にする」とのことで す。このことは、モジュールの取り扱いにも現れていて、各Webサーバの個別ニーズにより、使用するモジュールを個々に選択し、有効にす る必要があります。
mods-available/またはsites-available/に格納されているモジュールまたはWebサイトの個別設定ファイ ルを、専用コマンドでリンクを貼ることで有効化しています。
Debianのapache2 では、/etc/apache2/*-enabled で対応します。 /etc/apache2/apache2.conf には、以下のような行が書いてあり、 *-enabled配下の設定ファイルをすべて読み込んで起動します。

 IncludeOptional mods-enabled/*.load
 IncludeOptional mods-enabled/*.conf
 IncludeOptional conf-enabled/*.conf
 IncludeOptional site-enabled/*.conf
◆では、apache2.conf を設定します。

今回は、先のsambaインストールで /usr/html をコンテンツ用としてLAN内共有しています。
適当に index.html を置いておきます。

$ sudo vi /etc/apache2/apache2.conf
# HostnameLookups Off
HostnameLookups On
    ↓
「On」にすることでウェブサーバーのログにクライアント側のドメイン名を記録します。

後、関係なさそうなディレクティブはリマークしました。

delegate配下でリモートアドレスが取得できるようにしました。
後で mod_remoteip を有効化します。

# LogFormat "%h %l %u %t \"%r\" %>s %b" common 
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common

ログは標準では /var/log/apache2 に出力されます。
なお、設定のチェックは sudo apache2ctl configtest です。
Syntax OK となったらOKです。
sudo apachectl -V でも確認できます。
takaq@q4os-vy80m:/etc/apache2/sites-available$ sudo apache2ctl -V
Server version: Apache/2.4.38 (Debian)
Server built: 2020-08-25T20:08:29
Server's Module Magic Number: 20120211:84
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 32-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
◆そして、sudo vi /etc/apache2/sites-available/000-default.conf で設定します。
VirtualHostでの設定になっていますね。
ServerAdmin と DocumentRoot を設定しました。
それと、delegate 経由での接続IPアドレスを取得するため以下のようにしました。

# CustomLog ${APACHE_LOG_DIR}/access.log combined
        ↓
CustomLog ${APACHE_LOG_DIR}/access.log common
$ sudo a2ensite 000-default.conf
$ sudo service apache2 restart

・・・・で、クライアントPCのブラウザから http://IPアドレス もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名 でアクセスし、希望通りのトップページが表示されたらOKです。

/etc/apache2/sites-enabled に /etc/apache2/sites-available/000-default.conf のシンボリックリンクは既にあるので・・・。

Site 000-default already enabled になりました。あえて a2ensite はいらなかったかな!?



ちなみに、000-default.conf をコピーして例えば domainname.conf とかした場合・・・・

$ sudo a2dissite 000-default.conf
$ sudo a2ensite domainname.conf

・・・で一旦000-default.confを削除して、domainname.conf とすればよいようです。
◆/etc/apache2/conf-available/security.conf の次のところを変更します。
ServerTokens Prod <--- OS をProdに変更。サーバーの情報(バージョン、OSなど)を表示しないようにします。
一旦設定を削除して再登録します。

$ sudo a2disconf security.conf
$ sudo a2enconf security.conf

 ↑
security.conf のシンボリックリンクが更新されましたね。
◆モジュールの組み込み
cgiやssiが動くようにしてみます。

enableにするモジュールはcgi cgid include perl php7 rewrite userdirなどです。

cgi cgiプログラムの実行をサポート
cgid cgiプログラム(スレッド)の実行をサポート
include ページ内に埋め込むSSI(Server Side Includes)のサポート
rewrite 要求されたURLの動的な書き換えをサポート
userdir http://ホスト名/~hogehoge/のページを許可する。

初期で有効化されているモジュールは次のようです。

  ↑
.loadがロードされているモジュールです。
 access_compat
 alias
 auth_basic
 authn_core
 authn_file
 authz_core
 authz_host
 authz_user
 autoindex
 deflate
 dir
 env
 filter
 mime
 mpm_event
 negotiation
 reqtimeout
 setenvif
 status.load
ロードできるモジュールは次のようです。
試しに remoteip をロードしてみます。
delegate配下でログにリモートアドレスが取得できるようにするモジュールです。
$ sudo a2enmod remoteip
Enabling module remoteip
To activate the new configuration, you need to run:
systemctl restart apache2

これで、/etc/apache2/mods-available で remoteip がシンボリックリンクされます。
apache2 をリスタートしてくださいと言っているのでリスタートします。

$ sudo systemctl restart apache2
この要領で、cgi cgid include perl php5 rewrite userdirをロードしておきます。

後は利用環境に応じてロードします。
◆PHPのインストールと設定
Synaptic パッケージマネージャでインストールします。

 ↑
関連パッケージが選択されていますね。
apache2のモジュールは自動的に有効となっていました。

/etc/apache2/mods-enabled に php7.3 があります。
apache2モジュール用のphp設定は/etc/php/7.3/apache2/php.iniを編集しま す。
日本語設定のため mbstring を設定します。

$ sudo vi /etc/php/7.3/apache2/php.ini

[mbstring]のところを以下のようにしました。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 1
一応、sudo systemctl restart apache2 しときます。
そして、ドキュルントルートあたりにテスト用のファイルを test.php とかにして保存します。
<?php
phpinfo();
?>
クライアントPCのブラウザから http://IPアドレス/test.php もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名/test.php でアクセスします。

 ↑
いいようですね。
◆cgi環境の設定
Perlは apache2 をインストールした時にインストールされています。
モジュール cgi、cgid は先に有効化していますので、実行確認と実行環境を設定してみます。
デフォルトで [/usr/lib/cgi-bin] 配下が CGI 実行許可されます。
よって、例えば [/usr/lib/cgi-bin/test.cgi] スクリプトを作成して配置することで、[http://(Apache2 サーバー)/cgi-bin/test.cgi] へアクセス可能となります。 なお、この設定は [/usr/lib/cgi-bin] 配下のファイルを全て CGI と扱うため、CGI 以外のファイルは表示不可です。
$ sudo vi /usr/lib/cgi-bin/test.cgi で以下を保存

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI\n";

$ sudo chmod 705 /usr/lib/cgi-bin/test.cgi
$ sudo perl /usr/lib/cgi-bin/test.cgi

Content-type: text/html

Hello CGI
・・・でOKです。
デフォルト以外のディレクトリで CGI の実行を許可する場合は以下のように設定します。
例として、[usr/html/cgi-test] 配下で CGI の実行を許可します。なお、CGI として扱う拡張子を指定しているため、html 等も配置可能です。
$ sudo vi /etc/apache2/conf-available/cgi-test.conf

<Directory "/usr/html/cgi-test">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>

$ sudo mkdir /usr/html/cgi-test
$ sudo a2enconf cgi-test
Enabling conf cgi-test.
To activate the new configuration, you need to run:
systemctl reload apache2
$ sudo systemctl reload apache2
設定したディレクトリで CGI テストページを作成して動作確認をします。

$ sudo vi /usr/html/cgi-test/test.cgi で以下を保存

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI\n";

$ sudo chmod 705 /usr/html/cgi-test/test.cgi
クライアントPCのブラウザから http://IPアドレス/cgi-test/test.cgi もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名/cgi-test/test.cgi でアクセスします。

Hello CGI と表示したらOKです。
◆エラーページをカスタマイズする。
※ここから delegate を通しての URL になります。

標準のままだと、例えばドキュメントの無いページを指定した場合、ブラウザは以下を表示します。
これをカスタマイズしてみます。
ファイルは /etc/apache2/conf-available/localized-error-pages.conf です。
$ sudo vi /etc/apache2/conf-available/localized-error-pages.conf

方法は色々あるみたいですが、自分は /usr/html/error に関連ファイルを用意してから以下のようにしました。

# Customizable error responses come in three flavors:
# 1) plain text
# 2) local redirects
# 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
そして、$ sudo systemctl restart apache2 します。

 ↑
うん、いいですね。
◆ログのローテートについて
ディフォルトではlogrotateにより1日単位でApacheのログローティションさせているようです。
設定ファイルは /etc/logrotate.conf で Include されているフォルダ /etc/logrotate.d にある apache2 です。

 ↑
include /etc/logrotate.dですね。
/etc/logrotate.d には多くの関連ファイルがあります。

 ↑
日単位でローテートし、ローテート数は14個という感じでしょうか。

/var/log/apache2/*.log -> ローテートするファイル
daily -> ローテションを行う間隔を指定 daily(毎日) weekly(毎週) monthly(毎月)
missingok -> missingok(ログファイルがなくてもエラーにならない) nomissingok(ログファイルがない場合エラーにする)
rotate 14 -> 保存されるアーカイブファイルの数 ここでは14個残している
notifempty -> ifempty(ログファイルが空でもローテーションする) notifempty(ログファイルが空の場合はローテーションしない)
sharedscripts -> /var/log/apache2/*logに該当するファイルが複数ある場合でも postrotateからendscriptまでの実行は1回のみという設定
postrotate 〜 endscripまでのコマンドを実行
ですが、自分は毎週一回でローテート数を7にしたいので daily -> weekly rotate 14 -> rotate 7 にしました。

構築したサイトは こちら です。


19.ちょっとハマったり、調べて勉強になったこと。
■root になる。
q4os では、ユーザでログイン後 su しても root パスワードを要求されて root になることができません。
sudo su と入力すれば パスワード要求なし(もしくはユーザーパスワード)で root になることができます。
takaq@q4os-vy80m:~$ sudo su
[sudo] takaq のパスワード:
root@q4os-vy80m:/home/takaq#

■テキストファイルの改行コード変換
perlスクリプトを設置していたら 「エラー500」で apache のエラーログに「 (2)No such file or directory: exec of」あり。
perlのパスは間違っていないし、パーミッションも実行権限有り・・・検索したら改行コードに問題あり。
ftpかsftpでテキストモードで転送すればよかったのですが、LinuxクライアントからLinuxサーバーのSamba共有フォル ダへファイルマネージャで転送してました。
cat -e ファイル名 とした時に「^M$」となっていました。
Windows系の使われている改行コードの「CRLF」となっておりCGIが動いているLinuxサーバーと改行コードが違うため動作 しなかったようです。

あらためて ftpかsftpでテキストモードで転送すればよかったのですが、面倒なので変換方法を検索しました。
root になって以下で変換できます。(Windows形式 -> UNIX)
tr -d \\r <windows元ファイル.txt >unix新ファイル.txt
unix新ファイル.txt はパーミッションやowner、group を環境に合わせて設定しましょう。

これで、無事に cgi が実行されました。
■FileZilla FTPクライアントを使ってみた。
とあるサーバーから ftp でファイルを取得する必要があって調べてみました。
コマンドレベルでの方法もいいですが、Windows 上で動く FFFTP みたいな GUI のがいいなぁーと思いました。
まぁ、何個かソフトあるんですが、「FileZilla FTPクライアント」を使ってみました。
インストールは Synaptic パッケージマネージャ で FileZilla で検索し適用しました。


    ↑
うん、いい感じです。
■古いNASへのファイルマネージャによるマウント対策
わが家には FreeBSD 7.0 ベースの FreeNAS が動いていますが、先日インストールした q4os 4.7 にインストールした PCManFM からアクセスすると、共有フォルダは見えるのですが、フォルダをクリックしても「Windows共有をマウントできませんでした。接続を中断しました。」 になってマウントできない事態に遭遇しました。
FreeBSD 12.2 の共有フォルダには正常にアクセスしてマウントできるのにです。

q4os 4.7にデフォルトでインストールされるSambaが4.13.xとなり、デフォルト設定でSMB1が無効となっていることが原因のようです。
なお、smbclient はインストール済です。

sudo vi /etc/samba/smb.conf  で 以下を[global]セクションに追加します。
client min protocol = core
あらためてPCManFM からアクセスすると無事にマウントできました。
■IPv6を無効にする。
我が家には、LAN内の名前解決用dnsサーバーがあります。
PC端末のIPv6が有効になっていると、名前解決ができずLAN内のサーバーにコンピュータ名でアクセスできませんでした。
そこで、以下でIPv6を無効にしました。

sudo vi /etc/sysctl.conf  で以下の記述を追加します。
net.ipv6.conf.<インターフェース>.disable_ipv6 = 1
そして、sudo sysctl -p します。即有効になります。
これで、使い勝手が良くなりました。
■ファイルマネジャ PCManFM でサムネイルを表示する。
なぜか大きなファイルサイズのサムネイル表示をしてくれませんでした。
写真編集時に不便なので大きいサイズの写真でも表示できるようにします。

編集 -> 設定 -> ディスプレイ -> このサイズよりも大きなファイルにはサムネイルを表示しない のサイズを「2048」から「10240」にします。
これで表示されます。

編集作業が楽になりました。
■ホスト名を変更する。(q4os 4.7 [debian 11.0ベース])
なぜかインストール時「q4os-desktop 」になるので・・・。
ホスト名の確認
takaq@q4os-desktop:~$ sudo hostname
q4os-desktop
takaq@q4os-desktop:~$ sudo hostnamectl
   Static hostname: q4os-desktop
         Icon name: computer
        Machine ID: a3851877cd13464885d494ce552052d2
           Boot ID: a27bb4b569954451aa141c34ecdbc6cb
  Operating System: Debian GNU/Linux 11 (bullseye)
            Kernel: Linux 5.10.0-12-686-pae
      Architecture: x86
ホスト名の変更(恒久的に)
takaq@q4os-desktop:~$ sudo hostnamectl set-hostname q4os-flora330w
takaq@q4os-flora330w:~$ sudo hostnamectl
   Static hostname: q4os-flora330w
         Icon name: computer
        Machine ID: a3851877cd13464885d494ce552052d2
           Boot ID: 7f3ce6fdfe344dfead07688ae31c2847
  Operating System: Debian GNU/Linux 11 (bullseye)
            Kernel: Linux 5.10.0-12-686-pae
      Architecture: x86

コマンドで何かしようとすると「q4os-flora330w の名前解決ができません: 名前またはサービスが不明です」になるので!
sudo vi /etc/hosts で 127.0.0.1 を以下のように変更する。

127.0.0.1        q4os-desktop
   

127.0.0.1        q4os-flora330w
■無線接続で WPA に接続できるようにしてみた。
友人からずーっと前にいただいた「DELL INSPIRON 1300」(無線内蔵)に 4.7 をインストールしましたが、タスクバー下のツールでは見えているのに無線LANへの接続で WPA の無線LANに接続できませんでした。
あまりに古い機種のためファームウェアが対応していないのかもしれません。それか内蔵無線LANアダプタの不調かも!!
そこでちょっと前に購入した USB 無線アダプタをセットしてみました。
即認識しタスクバー下のツールにはデバイス名「wlx7cdd90961aab」が表示されました。
この状態でタスクバー下のツールから WPA の無線LANに接続しようとしましたが、歯車は回転するもエラー表示して接続できません。
そこで検索・・・

以下で接続できました。

wpasupplicantというソフトウェアでWPAへの対応ができるそうなので、Synaptic パッケージマネージャで「wpasupplicant」を検索しインストールしました。

1./etc/network/interfaces に以下記述追加しました。
auto wlx7cdd90961aab
allow-hotplg wlx7cdd90961aab
iface wlx7cdd90961aab inet dhcp
wpa-ssid sendaicity
wpa-psk ad1e3506efa38fe051e11747d245fc8018dc057c79fb2c269061f2730c60f123
gateway 192.168.2.1
netmask 255.255.255.0

内容は雰囲気で・・・
SSID : sendaicity に WPA-PSK にて 自動接続でIPアドレスをDHCPで取得・・・かな!!
2.wpa-psk は下記コマンドで表示されます。
sudo wpa_passphrase sendaicity takaq123

network={
        ssid="sendaicity"
        #psk="takaq123"  -> これは後で削除しておきます。セキュリティのため!
        psk=ad1e3506efa38fe051e11747d245fc8018dc057c79fb2c269061f2730c60f123
}

※ wpa_passphrase "接続したいSSID" "WiFiのパスワード" です。
3.起動・停止実験
この状態で以下実施
sudo ifup wlx7cdd90961aab        -> 起動
sudo ifdown wlx7cdd90961aab  -> 停止
しかし、なんかエラー出てうまくできませんでした。
ip address しても当然ネットワーク情報取得できていませんでした。

そこで、OS再起動
再起動後 ip address すると。

takaq@q4os-desktop:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul  t qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOW N group default qlen 1000
    link/ether 00:15:c5:67:42:83 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group  default qlen 1000
    link/ether 00:16:ce:68:ca:b7 brd ff:ff:ff:ff:ff:ff
4: wlx7cdd90961aab: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP   group default qlen 1000
    link/ether 7c:dd:90:96:1a:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.15/24 brd 192.168.2.255 scope global dynamic wlx7cdd90961aab
       valid_lft 39318sec preferred_lft 39318sec
    inet6 2405:6583:1200:4100:7edd:90ff:fe96:1aab/64 scope global dynamic mngtmp  addr
       valid_lft 13338sec preferred_lft 11538sec
    inet6 fe80::7edd:90ff:fe96:1aab/64 scope link
       valid_lft forever preferred_lft forever


    うまくできました。
インターネット接続も良好です。
タスクバー下のツールでは管理外となって×になってます。

ちなみに、上記を内蔵無線LANアダプタ(wlan0)にもしてみましたが、ネットワーク設定情報は取得できませんでした。
やはり不調なのでしょうね。

■Sylpheedで受信メールの通知音が鳴るようにしてみました。
自分はLinux Beanの頃よりSylpheedというメールソフトを使用しています。軽量で使いやすく、大変重宝しております。
ただ、他のメールクライアントを使っている人にとってはとっつきにくく不便と思うかもしれませんが、自分は好きです。
常時起動して30分間隔でメールをチェックするよう設定していますが、席を離れている時に通知音で知ることができないか調べてみました。
・・・やっぱりされている方いました。ありがたいです。

好きな音のサウンドファイルをダウンロードしました。
Outlook Express や outlook で使っていた音です。

ここ に置いておきます。よかったらどうぞ!!

そのファイルと後述のスクリプトファイルを置くフォルダ /home/takaq/Mail/mail_sound を作成します。
そして、そこにまずはダウンロードしたサウンドファイルを保存します。

次に、同フォルダに次のようなスクリプト を作成し(例えば mail_sound.sh )します。
chmod u+x mail_sound.sh で実行権を与えます。
#!/bin/sh
aplay -q /home/takaq/Mail/mail_sound/mail_sound.wav
ここで、ファイルマネージャもしくは端末から mail_sound.sh を実行し音が出たらOKです。

設定>全般の設定>受信>新着メッセージが到着したらコマンドを実行するにチェックを入れてコマンド欄に作成したシェルスクリプトの場所 を書き込みます。
以上でメールを受信すると着信音が再生されます。


これで使い勝手が良くなりました♪
■Sylpheedで迷惑メール対策をしてみました。
迷惑メールがやたらと増えてきたので対策してみました。
最初、bogofilter を設定してみたのですが、いくら「迷惑メールに指定する」で学習させたつもりでも、1件も自動判定して振り分けしてくれませんでした。
なので、bsfilter を設定してみました。

Synaptic パッケージマネージャで「bsfilter」を検索しインストールしました。

設定>全般の設定>迷惑メールで以下のように設定しました。


以下をチェック

1.迷惑メール対策を有効にする。
2.プリセットを選択で bsfilter を選択
3.迷惑メールフォルダを「ゴミ箱」に指定 -> Sylpheed終了で全て削除したいため。
4.振り分けた迷惑メールを既読にするのチェック外し -> 受信のたびに迷惑メールがあったことを確認するため。
   そして、未読の迷惑メールを確認し、迷惑メールでないものがあった場合、「迷惑メールではない」にするため。
    以降、これの繰り返しで学習させます。
メールの受信処理が若干遅くなりますが使い勝手いいです。
■デスクトップに時計を配置してみた。
ちょっと前まで、ディスプレイの真ん中上あたりにかなり前にダイソーで購入した時計を壁に下げて時間を見ていまし た。
それが、つい先日(電池新しくても)時間が遅れるようになったので廃棄しました。
そうなると腕時計見るか、ディスプレイ近くに小さな時計を置くか、別の方を見て壁掛け時計を見るかしなければなりません。
別の時計購入したくないし、壁掛け時計を見るのも面倒なので、デスクトップ用の時計が無いか調べてみました。
何点かあったけど、希望に沿ったのがなかったのですが、xclock という時計があることを発見しました。
X11がインストールされていれば、コンソールから xclock で起動するそうです。
さっそく実行・・・
設定項目がなく、ただ秒針の無いアナログ時計を表示するだけなのでいいかーと思いました。
← ついでにショートカット作成しときました。


    ↑
うん、いい感じです。
■yt-dlp で Youtube から動画をダウンロードしてみた。
ちょっと前まで Youtube から動画をダウンロードするのに youtube-dl を使っていました。
先日、いい曲があったので youtube-dl でダウンロードしようとしたらなんかエラーでダメでした。
youtube-dl は 2022年のあたりで更新がストップしているようです。
最近 Youtube で仕様変更でもあったのかもしれません。
そこで、検索!
どうやら youtube-dl より高速に動作する yt-dlp があることを知りました。
でもパッケージになかったので以下のようにしてセットアップしました。
ダウンロードして実行権を付与してます。
konsoleから・・・
takaq@q4os-flora330w:~$ sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
takaq@q4os-flora330w:~$ sudo chmod a+rx /usr/local/bin/yt-dlp

そんで、バージョン確認!

takaq@q4os-flora330w:~$ yt-dlp --version
2023.03.04

おお、最近ですね。
んでとりあえずダウンロードしてみました。
konsoleから・・・
takaq@q4os-flora330w:~$ yt-dlp https://www.youtube.com/watch?v=xJWxbgoq_rU -f mp4
[youtube] Extracting URL: https://www.youtube.com/watch?v=xJWxbgoq_rU
[youtube] xJWxbgoq_rU: Downloading webpage
[youtube] xJWxbgoq_rU: Downloading android player API JSON
[info] xJWxbgoq_rU: Downloading 1 format(s): 22
[download] Destination: マカロニえんぴつ「リンジュー・ラヴ」MV [xJWxbgoq_rU].mp4
[download] 100% of   16.41MiB in 00:00:02 at 7.12MiB/s
takaq@q4os-flora330w:~$


オプションは検索してみてください。いい感じです。

◆令和5年(2023年)09月22 日(金) 追記
この時の q4os は Ver 5.10 (debian12) で yt-dlp は パッケージからインストールしたものです。

takaq@q4os-v200:~/ダウンロード$ yt-dlp https://www.youtube.com/watch?v=4oNElYlHF5I -f mp4
[youtube] Extracting URL: https://www.youtube.com/watch?v=4oNElYlHF5I
[youtube] 4oNElYlHF5I: Downloading webpage
[youtube] 4oNElYlHF5I: Downloading android player API JSON
[info] 4oNElYlHF5I: Downloading 1 format(s): 22
ERROR: unable to download video data: HTTP Error 403: Forbidden

どうやら、YouTubeでまた仕様が変わったらしく、インストール済の yt-dlp でエラーになってしまう。
現在の debian パッケージ版は 2023.03.04-1 である。
まだ新しいのがきていない。
残念ーーーーと思ったけど、検索してみたら GitHub に使えるのがあった。
さっそくダウンロード

https://github.com/yt-dlp/yt-dlp#update

Recommended で yt-dlp の Platform-independent zipimport binary. Needs Python (recommended for Linux/BSD)
をダウンロードしました。

ダウンロード先は /home/takaq/ダウンロード にした。
バージョンは version 2023.07.06 である。
そして、konsole にて sudo chmod +x yt-dlp で実行権を付与
既インストール済のを実行しないように /home/takaq/ダウンロード にて以下コマンドで実行

takaq@q4os-v200:~/ダウンロード$ ./yt-dlp https://www.youtube.com/watch?v=4oNElYlHF5I -f mp4
[youtube] Extracting URL: https://www.youtube.com/watch?v=4oNElYlHF5I
[youtube] 4oNElYlHF5I: Downloading webpage
[youtube] 4oNElYlHF5I: Downloading ios player API JSON
[youtube] 4oNElYlHF5I: Downloading android player API JSON
[youtube] 4oNElYlHF5I: Downloading m3u8 information
[info] 4oNElYlHF5I: Downloading 1 format(s): 22
[download] Destination: Perfume ⧸ WMoonW Dance Practice Video [4oNElYlHF5I].mp4
[download] 100% of   18.19MiB in 00:00:02 at 8.85MiB/s

無事にできましたーーーー

パッケージが更新されたら最新パッケージをインストールします。それまでこれでいこう。

■古いOSにSSHで接続できなかったので色々試してみた。

かなりハマって検索しまくってやっと以下に至りました。
でも、古いOSが無い場合は関係無いです。

接続先 : delegate2 FreeBSD 4.11 RELEASE ssh ver OpenSSH_3.5p1
接続元 : q4os-v200 q4os 5.10 (debian 12) ssh ver OpenSSH_9.2p1

# 接続してみた。
takaq@q4os-v200:~$ ssh takaq@delegate2
Unable to negotiate with 192.168.1.9 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

# 鍵交換方法の指定をする。
takaq@q4os-v200:~$ ssh delegate2 -oKexAlgorithms=diffie-hellman-group-exchange-sha1
Unable to negotiate with 192.168.1.9 port 22: no matching host key type found. Their offer: ssh-dss
# OpenSSH の 7.0 から DSA(ssh-dss) の脆弱性により無効にされたことが原因らしい。

接続元の /etc/ssh/ssh_config に

HostKeyAlgorithms ssh-dss,ssh-rsa

を追記

# 鍵交換方法の指定をする。
takaq@q4os-v200:~$ ssh delegate2 -oKexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
Unable to negotiate with 192.168.1.9 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

接続元の /etc/ssh/ssh_config に

# 実際の通信を暗号化する暗号化アルゴリズムを指定
Ciphers aes128-cbc

を追記

# 鍵交換方法の指定をする。

# 鍵交換ができたっぽい
takaq@q4os-v200:~$ ssh delegate2 -oKexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
The authenticity of host 'delegate2 (192.168.1.9)' can't be established.
DSA key fingerprint is SHA256:WXzNE4ZbRhRAlfUSb1keD2wf3PHg54OFKAdHwPp+XDc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'delegate2' (DSA) to the list of known hosts.

# パスワード聞いてきた
(takaq@delegate2) Password:

# ログインできたよーーー♪
Last login: Tue Sep 12 14:19:15 2023 from lenovo.takaq.jp
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 4.11-RELEASE (GENERIC) #0: Fri Jan 21 17:21:22 GMT 2005

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc distribution has
   been installed, they're also available formatted in /usr/share/doc.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
man page.  If you are not familiar with man pages, type `man man'.

You may also use /stand/sysinstall to re-enter the installation and
configuration utility.  Edit /etc/motd to change this login announcement.

# それでも、下の接続コマンドだとダメっす。
takaq@q4os-v200:~$ ssh takaq@delegate2
Unable to negotiate with 192.168.1.9 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

でも、接続できたから良しとしよう。

# ・・・と思ったけど、もうちょっと頑張ってみた。
接続元の /etc/ssh/ssh_config に

KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

を追記

ssh takaq@delegate2 で接続できました。よかったーーー、苦労しました。♪

takaq@q4os-v200:~$ sudo ssh takaq@delegate2
The authenticity of host 'delegate2 (192.168.1.9)' can't be established.
DSA key fingerprint is SHA256:WXzNE4ZbRhRAlfUSb1keD2wf3PHg54OFKAdHwPp+XDc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'delegate2' (DSA) to the list of known hosts.
(takaq@delegate2) Password:
Last login: Thu Sep 14 18:50:38 2023 from q4os-v200.takaq
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 4.11-RELEASE (GENERIC) #0: Fri Jan 21 17:21:22 GMT 2005

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc distribution has
   been installed, they're also available formatted in /usr/share/doc.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
man page.  If you are not familiar with man pages, type `man man'.

You may also use /stand/sysinstall to re-enter the installation and
configuration utility.  Edit /etc/motd to change this login announcement.

$                                              


結論


接続元の /etc/ssh/ssh_config に

KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
HostKeyAlgorithms=+ssh-dss,ssh-rsa
Ciphers aes128-cbc

を追記


※ちなみに、接続元ユーザの /etc/ssh/ssh_configに書く前に、接続元ユーザの .ssh/configを作成して以下のように書いてもダメでした。

Host 192.168.*.*
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
HostKeyAlgorithms=+ssh-dss,ssh-rsa
Ciphers aes128-cbc

さて、これで Console での ssh では、自宅にある全てのサーバー(FreeBSD 4.11, FreeBSD 12.2, FreeBSD 13.3, q4os全PC)に接続できました
これで無事解決・・・の筈でした。

解決かと思ったら「Remmina リモートデスクトップクライアント」が、それまでできていた FreeBSD 12.2, FreeBSD 13.3, q4os に以下のエラーで接続できなくなりました。
まぁ、FreeBSD 4.11への接続は元々できませんでしたが・・・
Console からは全てのサーバーに ssh で接続できているのに、どういうこと!?

Remmina の画面キャプチャが横に大きすぎるので、デバック・モードでのログ抜粋で記載します。

●FreeBSD 4.11への接続
init session error:SSH セッションを開始できませんでした: kex error : no match for method server host key algo: server [ssh-dss], client [ssh-rsa]
●FreeBSD 12.2
init session error: SSH セッションを開始できませんでした: kex error : no match for method kex algos: server [curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1], client [diffie-hellman-group1-sha1]
●FreeBSD 13.3
init session error: SSH セッションを開始できませんでした: kex error : no match for method kex algos: server [curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256], client [diffie-hellman-group1-sha1]
●q4os 5.2 (debian 12)
nit session error: SSH セッションを開始できませんでした: kex error : no match for method kex algos: server [sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256], client [diffie-hellman-group1-sha1]

以下を /etc/ssh/ssh_config の KexAlgorithms に追記して Remmina デバックモードで接続してみます。

diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256

●FreeBSD 4.11への接続
init session error: SSH セッションを開始できませんでした: kex error : no match for method server host key algo: server [ssh-dss], client [ssh-rsa]
    ↑
変わりないですね。

●FreeBSD 12.2
接続できました。
●FreeBSD 13.3
init session error: SSH セッションを開始できませんでした: kex error : no match for method encryption client->server: server [chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com], client [aes128-cbc]
    ↑
変わりましたね。鍵交換方法の指定が要る感じ。
●q4os 5.2 (debian 12)
init session error: SSH セッションを開始できませんでした: kex error : no match for method server host key algo: server [rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519], client [ssh-rsa]
    ↑
変わりましたね。鍵交換方法の指定が要る感じ。

以下を /etc/ssh/ssh_config の HostKeyAlgorithms、 Ciphers  に追記して Remmina デバックモードで接続してみます。

HostKeyAlgorithms に rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
Ciphers に chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com

●FreeBSD 4.11への接続
init session error: SSH セッションを開始できませんでした: kex error : no match for method server host key algo: server [ssh-dss], client [ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519]
    ↑
変わったね。でも、これってどういうこと!?
●FreeBSD 12.2
接続できました。
●FreeBSD 13.3
接続できました。
●q4os 5.2 (debian 12)
接続できました。
んーーー、頑張ってみましたがここまでです。以上をまとめると・・・・

▲/etc/ssh/ssh_config に記載前
Konsoleから
FreeBSD 4.11    ×
FreeBSD 12.2    ○
FreeBSD 13.3    ○
q4os5.2              ○
Remmina
FreeBSD 4.11    ×
FreeBSD 12.2    ○
FreeBSD 13.3    ○
q4os5.2              ○
▲/etc/ssh/ssh_config にちょっと追加記載
Konsoleから
FreeBSD 4.11    ○
FreeBSD 12.2    ○
FreeBSD 13.3    ○
q4os5.2              ○
Remmina
FreeBSD 4.11    ×
FreeBSD 12.2    ×
FreeBSD 13.3    ×
q4os5.2              ×
▲/etc/ssh/ssh_config にかなり追加記載
Konsoleから
FreeBSD 4.11    ○
FreeBSD 12.2    ○
FreeBSD 13.3    ○
q4os5.2              ○
Remmina
FreeBSD 4.11    ×
FreeBSD 12.2    ○
FreeBSD 13.3    ○
q4os5.2              ○
なので、運用としては FreeBSD 4.11 の時は、アカウントとコンピュータ名を書いたテキストファイルを用意して利用する。
他の最近のOSについては、Remmina で接続する。

という感じで、ここまでにします。

■マルチディスプレイの片方が映らなくなった。

今日(令和5年[2023年]10月04日(水)、夕方に起動してみたらマルチディスプレイの右側(グラボの DVI->Dsub->アナログDsubケーブル->ディスプレイのDsub)がデスクトップ画面の時に映らなくなった。
ちなみにグラフィックボードは「AMD Radeon HD7470 GDDR3 1GB  楽天市場で購入 1,650円(送料無料)」


    ↑
起動時のBIOS画面と起動メッセージはOK


    ↑
グラフィカル画面を表示する直前で右のディスプレイが暗くなる。信号が行ってない。


    ↑
こんな感じ。OS再起動しても、デスクトップの設定を見てももう一台のディスプレイが見えてこない。
んーーー、ドライバがおかしいのか、どこか破損したかぁーーーー・・・で一時はOS再インストールやubuntu等他のLinux入れようか なぁーなんて考えた。
でも、それ結構大変なのでもう少し調べてみた。
割とある現象らしい。
その中でいい記事を見つけた。

第48回 デュアルディスプレイを使う

デスクトップの設定で見ると・・・


    ↑
一つしか見えない。
    ↓


xrandrコマンドで⁠接続さ れているディスプレイデバイスの一覧の取得」をしてみます。


    ↑
出力のうち、⁠connected/disconnected」 とある部分が認識されているディスプレイの接続されたポートの名称です。
どちらも ⁠connected になっていますね。それなのに右ディスプレイ(DVI-0)が映りません。
ここで、右ディスプレイ(DVI-0)が disconnected になっていたらコマンドで有効にでき、シェルスクリプトで自動設定できるのですが、connected になっているので、それは止めました。

lxrandr でグラフィカルに設定してみます。
Synaptic パッケージマネージャでインスールしました。
実行してみると・・・


    ↑
こんな感じです。


    ↑
xrandrコマンドでの表示内容から各モニタの最高解像度とリフレッシュシートを設定し「適用」しました。


    ↑
そうするとこうなります。おぉ感動しました。めでたしです。


    ↑
ちゃんと2つ見えていますね。
    ↓


さて、ここまでで希望どおりのディスプレイ表示となりましたが、OS再起動すると最初の状態になって右側が映らなくなります。
xrandr コマンドを使ってシェルスクリプトで永続的な設定にする方法があるようです。
当面は lxrandr でOS起動の都度設定しますが、後でxrandr コマンドを使ってシェルスクリプトで永続的な設定にすることを試してみます。

んで、xrandr コマンドを使って自動設定しました。
コマンドは以下のとおりです。
[Linux] デュアルディスプレイの配置をコマンドで変える(xrandr)を参考にしました。

xrandr --output DisplayPort-0 --mode 1280x1024 --primary --output DVI-0 --mode 1600x1200 --right-of DisplayPort-0

DisplayPort-0の解像度を1280x1024でprimaryに設定、DVI-0の解像度を1600x1200にして DisplayPort-0の右側に表示する・・・という意味です。


    ↑
Konquerorで /home/takaq/.trinity/Autostart にアプリケーションへのリンクを作成し、xrandr のコマンドを記述しました。
本当はポートの状態監視とかして気の利いたシェルスクリプト書けばよいのでしょうが、それはまた別の機会にします。



そして、OSを再起動したら希望どおりの画面表示となりました。
やれやれ、苦労しました。

■確定申告書のpdfファイルが文字化け
確定申告書作成の時期が近づいたので、確認のため昨年の確定申告書のpdfファイルを開いてみました。
しかし、ディフォルトでインストールされている KPDF, KGhostView, libreOffice Draw で見たら KPDF, KGhostView では文字化けし、libreOffice Draw では「バージョンが違います」で開くことがでません。
そこで、クグッてみたら以下に記事がありました。
linux で pdfファイルが文字化け
さっそく、Chromium で開いてみたら、なるほど、無事に正常表示することができました。
Firefox等の他のブラウザでもできると思います。

アプリケーションとして Mupdf をSynaptic パッケージマネージャでインストールして試してみました。
プログラム・メニューには登録されなかったので、ターミナルからコマンド指定してみました。
takaq@q4os-v200:~$ mupdf
usage: /usr/lib/mupdf/mupdf-x11 [options] file.pdf [page]
        -p -    password
        -r -    resolution
        -A -    set anti-aliasing quality in bits (0=off, 8=best)
        -C -    RRGGBB (tint color in hexadecimal syntax)
        -W -    page width for EPUB layout
        -H -    page height for EPUB layout
        -I -    invert colors
        -S -    font size for EPUB layout
        -U -    user style sheet for EPUB layout
        -X      disable document styles for EPUB layout
takaq@q4os-v200:~$ mupdf smb://freenas/data/MyData/kakei/2022/%E4%BB%A4%E5%92%8C4%E5%B9%B4%E7%A2%BA%E5%AE%9A%E7%94%B3%E5%91%8A%E6%9B%B8.pdf
error: cannot open smb://freenas/data/MyData/kakei/2022/%E4%BB%A4%E5%92%8C4%E5%B9%B4%E7%A2%BA%E5%AE%9A%E7%94%B3%E5%91%8A%E6%9B%B8.pdf: No such file or directory
mupdf: error: cannot open document

smbファイルをパスをコピーして直接開くことはできないようです。ファイル名の関係かな!?
そこで、ローカルのドキュメントフォルダにコピーしました。

takaq@q4os-v200:~$ ls -l
合計 44
drwxr-xr-x  8 takaq takaq 4096  7月 28  2023 Mail
drwxr-xr-x  4 takaq takaq 4096  1月  1 22:45 note_sample_headerImage
drwxr-xr-x 10 takaq takaq 4096  1月 21 15:39 seamonkey
drwxr-xr-x  2 takaq takaq 4096  2月  1 22:46 ダウンロード
drwxr-xr-x  2 takaq takaq 4096  7月 27  2023 テンプレート
drwxr-xr-x  2 takaq takaq 4096 12月  8 23:13 デスクトップ
drwxr-xr-x  3 takaq takaq 4096  2月  3 23:07 ドキュメント
drwxr-xr-x  2 takaq takaq 4096  1月  3 21:11 ビデオ
drwxr-xr-x  2 takaq takaq 4096  9月 24 22:08 音楽
drwxr-xr-x  3 takaq takaq 4096  1月 30 18:42 画像
drwxr-xr-x  2 takaq takaq 4096  7月 27  2023 公開
takaq@q4os-v200:~$ cd ドキュメント
takaq@q4os-v200:~/ドキュメント$ ls -l
合計 172
drwxr-xr-x 11 takaq takaq   4096  7月 28  2023 USB
-rw-r--r--  1 takaq takaq  19464 12月 31 23:16 login_pass.txt
-rw-r--r--  1 takaq takaq   3970  9月  1 23:16 lspci.txt
-rw-r--r--  1 takaq takaq    163 10月  5 21:24 mode.txt
-rw-r--r--  1 takaq takaq     47  4月  6  2023 v200_PCI.txt
-rw-r--r--  1 takaq takaq   5193  1月  8 19:04 ぷららIPoE_PPPoE.xlsx
-rw-r--r--  1 takaq takaq   3982  1月 29 16:16 日記途中.txt
-rw-r--r--  1 takaq takaq 110210  2月 23  2023 令和4年確定申告書.pdf
-rw-r--r--  1 takaq takaq  12781  2月  3 21:45 令和5年 確定申告の準備.xlsx
takaq@q4os-v200:~/ドキュメント$ mupdf 令和4年確定申告書.pdf

これで表示できました。
以後は、pdfファイルのコンテキストメニューに Mupdf が現れますので、コマンドでなくても動作します。

今日はここまで・・・・令和6年(2024年)02月03日(土)


サイトトップへ