Raspberry Pi 軽量Webブラウザ Surf を使う

raspbian歴代のデフォルトブラウザはMidori,Epiphanyそして現在はChromiumとなっています。

現在のstretch+Chromiumsは以前と比べるとネット環境の改善もあってかかなり安定しています。

メインのブラウザはChromiumとしてもサブとしてまたほかの用途でも使えそうなブラウザを試してみました。

Surf https://surf.suckless.org/
レンダリングエンジンにWebKitを採用しています。開発元アップルのsafari、PiのMidori,Epiphanyにも使われています。
stretchでもパッケージ化されています。

# apt install surf

インストールしたら実行してみます。

$ surf https://surf.suckless.org/


メニューもない極めてシンプルな画面です。右クリックメニューも必要最低限の項目だけになっています。
ブラウズはWebKitを用いているのでyoutubeも普通に再生できます。

但しmoode audio 4.0はepiphany同様表示してくれません。

このブラウザを常用するには必要なファイルやパッチを当てて使用するよう設計されていると思います。

キーボードからは十分webブラウズは可能ですね。
Ctl+gで画面上部にurl入力バーが出現します。

$ man surf

Ctlキーを軸に大抵の操作は可能のようです。

詳しくは$ man surfで

aptでインストールされるsurfはsurf0.7ベース(WebKit1.0)だと思います。
surfのホームページにはWebKit2ベースのsurf2.0(ソースコード)が公開されているのでちょっと試してみることにしました。

ホームページ一番下のDownload surf 2.0 (2017-03-28)をクリックダウンロードして展開します。
作業(実行)マシンはraspberry pi 3
必要なライブラリをインストールします。多くのパッケージ(150MB位)がインストールされますがほとんどが所定のディレクトリに配置するだけなのでダウンロードが終わればほぼすぐに完了します。

# apt install xorg-dev libglib2.0-dev libgtk-3-dev libgcr-3-dev libjavascriptcoregtk-4.0-dev libwebkit2gtk-4.0-dev

READMEに添ってrootで実行

# make clean install
------- snip ----------
CC -o surf
installing executable file to /usr/local/bin
installing manual page to /usr/local/share/man/man1

時間は10秒位で完了、多少warningが出ますが無事通りました。

aptからインストールしたsurfは/usr/binに置かれます。
ビルドしたsurfは/usr/local/binにできます。

実行してみましょう

$ /usr/local/bin/surf moode


moode audioも表示できました。しかし少しcpu使用率が高いですね。
youtubeで動画を再生するとcpu使用率はさらに上がってきます。(映像もカクカク)
但し静的なページでは問題ありません。
どうもarmでは動画系の最適化がうまく行ってないような感じです。
(手順としてもう少しなにか必要なのかもしれません)

moodeのpulseaudioが起動していない状態でChromiums実行中起動したpulseaudioを利用するには一旦Chromiumsは再起動が必要になります。そんな時はこのような軽量のwebブラウザを利用するのが便利です。
ここは諦めてaptからインストールしたsurfを使うことにしましょう。但し両ブラウザを起動したままにしておくとメモリを浪費するのでじっくり視聴する時はどちらか1つにしたほうが良さそうです。

だいぶ前置きが長くなってしまいましたがここから本題です

実はこちらが本来の目的だったりします。
こっちのほうは基本動画系のページは表示しないこととしてsurf 2.0を使用してみたいと思います。自前でビルドして嬉しい点は起動時の画面サイズを自由に作れることにあります。
ソースファイル(surf.c) 1200行目付近

surf.c
gtk_window_set_default_size(GTK_WINDOW(w), 800, 600);

デフォルトの起動画面サイズは800×600 これを340×480で作り直してみます。

surf.c
gtk_window_set_default_size(GTK_WINDOW(w), 340, 480);

# mv /usr/local/bin/surf /usr/local/bin/surf.default
再度実行
# make clean install
# mv /usr/local/bin/surf /usr/local/bin/surf_340x480

実行してみます

$ /usr/local/bin/surf_340x480 piz0/index.php


いい感じのサイズで起動してくれます。
ほとんどwebブラウザとは感じさせません。
webブラウジングできると思わせない(させたくない)用途にはピッタリですね。

moode4.0ではradikoがうまく動かなくなってしまいました。
そのためファイルサーバーのzeroをradikoサーバーに仕立てています。
pulse audio対応です。

zeroサーバーのradikoはまた次回に!!

moOde Audio 4.0 rootfsを複製する

moOde Audio4は4GBのカードでインストール可能ですね。現在は16GBや32GBのカードも手軽に利用できます。
moOde Audioもraspbian strech-liteベースのディストリビューションでmoOde独自の部分はありますがraspbian同様いろいろ遊べます。

ですがせっかくインストールした環境を壊したくないですね。
通常はカードをコピー、挿し替えて試してみるという方法になると思いますがこれも面倒です。

今回の手法はwheezyの頃から使われているUSB-HDDから起動する方法と基本同じでディスクの空き領域を利用して複数のrootfsを使い分けて起動してみようというものです。
具体的にはデフォルト設定のrootfsをバックアップ用として保存してもう一つのrootfsを自由に試してみるとか運用はいろいろ考えられます。

但し、カードのパーティションを切り分けることによりカードのUUIDが変わってしまうので変更する必要があります。
この方法は当サイトでもraspbianでよく利用しています。

試してみるにはカードのコピーを取るか新規インストールしたカードを使うのがいいでしょう。
カードは8GBでも可能ですが16GB以上合ったほうがいいですね。
今回は新規インストールした16GBのディスクを使いました。

作業環境はraspberry pi 3 ディスクトップ
pi3にはgpartedをインストールしておきます。

# apt install gparted

gpartedを起動

右上でカードを選択(間違えないように)
当サイトのpi3ではsdbで認識しています。


未割り当てを右クリックしてNew-新規パーティションの作成
パーティションは4つまで作成できます。
moodeと同じ3000MiBで作成


追加をクリックして同様に残りの領域も作成
メニューのチェックマークをクリック
確認ダイアログが出て適用クリックするとカードに書き込みます。

UUIDを確認(カードによりすべて違ってきます)

# blkid /dev/sdb
/dev/sdb: PTUUID="90aedea8" PTTYPE="dos"

PARTUUIDは順番に90aedea8-01〜90aedea8-04となります。
pi3ではmedia/pi/以下にオートマウントされます。
/media/pi/boot/cmdline.txtの編集(以下は1行)

net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=90aedea8-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

/media/pi/rootfs/etc/fstabの編集

PARTUUID=90aedea8-01  /boot           vfat    defaults          0       2
PARTUUID=90aedea8-02  /               ext4    defaults,noatime  0       1

編集が終わったらカードを挿し込んで起動することを確認しましょう。

再度pi3に戻してddを実行(/dev/sdb2を/dev/sdb3へコピー)

# dd if=/dev/sdb2 of=/dev/sdb3 bs=1M
3000+0 レコード入力
3000+0 レコード出力
3145728000 bytes (3.1 GB, 2.9 GiB) copied, 541.189 s, 5.8 MB/s

ddした/dev/sdb3は/dev/sdb2のクローンになります。ラベルの名称も同じになるためわかりやすいように名前を付け替えます。(gpartedでも可能ですがこっちが簡単)/dev/sdb4も適当なラベル名に

# e2label /dev/sdb2 moode
# e2label /dev/sdb3 moode2
# e2label /dev/sdb4 ext

マウントして/dev/sdb3のfstabを編集

PARTUUID=90aedea8-01  /boot           vfat    defaults          0       2
PARTUUID=90aedea8-03  /               ext4    defaults,noatime  0       1

ここで/boot/cmdline.txtのroot=PARTUUID=90aedea8-02を03に変更してddした/dev/sdb3も正常に起動することを確認します。

以上で/boot/cmdline.txtの変更だけで2つのrootfsを使い分けることができるようになりました。

バックアップイメージの作成
rootfsをいじる前に4番目のパーティション(ext)にバックアップを作成します。
作成したカードを取り付けて起動するとデバイス名は/dev/mmcblk0p1〜p4となります。
現稼働中のパーティションはddできません。現在/dev/mmcblk0p3で運用しているとして/dev/mmcblk0p2を4番目のパーティション(ext)に適当なファイル名でddします。
また/bootもコピーを取っておくといいでしょう。

# dd if=/dev/mmcblk0p2 of=/media/ext/moode4_default.img bs=1M
# cp -r /boot /media/ext

適当なポイントでまたバックアップイメージを作成していくといいでしょう。

バックアップしたイメージファイルを再度書き込みたい時は(/dev/mmcblk0p2で運用中として)

# umount /media/moode2
# dd if=/media/ext/moode4_default.img of=/dev/mmcblk0p3 bs=1M

オートマウント再起動(udisks-glue)

# systemctl daemon-reload
# systemctl restart rc.local

書き込んだ/dev/mmcblk0p3は/etc/fstabの確認、変更が必要
各rootfsの”/”あたりにはわかるようにデバイスナンバーや設定やインストール記録のテキストファイルを記載しておくのがいいと思います。fstabの設定を間違うと意図したrootfsと違うほうが起動していることがあります。

イメージファイルをマウントする
ddしたイメージファイルを確認するには次のコマンドでマウントします。マウントポイントは/srv/tmpを作成

# mkdir /srv/tmp
# mount -t ext4 -o loop /media/ext/moode4_default.img /srv/tmp
アンマウント
# umount /srv/tmp

/srv/tmpからファイルの参照、編集が可能です。

以上のように区画が同一サイズであればパーティション単位で保存、復元が可能です。ほかのカードで作成したmoode(BETA12)も同一カード上で起動、動作を確認しています。(part-uuidの変更が必要)
sshの鍵を同じにしたい場合は/etc/sshをコピーすることで~/.ssh/known_hostsはそのまま使用できます。(ローカルでは特に問題ないと思います。自己判断で!)

Raspberry Pi Pulse Audio を起動停止するスクリプト

moOde Audioを導入している環境ではmoOdeが音響関連の中心になるかと思います。

現在のネット環境そしてraspbian stretchではPulse Audioを導入するとyoutubeなど快適に視聴できます。(まぁ時々は引っかかりますが)

Pulse Audioで煩わしいのはmoOde Audioにログイン可能な誰かがPulse Audioを起動してくれないと利用できないというところでしょうか。

そこでPi3ディスクトップから制御できるよう下記のサイトを参考に簡単なスクリプトを作成してみました。(そのまんまです)
参考サイト 「PHP」SSH2 関数さわってみた

Pi3にはphpをインストール、phpからsshでログイン、Pulse Audioを起動します。

pulseサーバー(リモートスピーカー)は手動でPulse Audioを正常に起動、停止できているものとします。

pulseクライアント(raspbianディスクトップ)の設定
PHPのインストール

# apt install php7.0-fpm php-ssh2

スクリプトは3ファイルになってしまいましたがどっか適当なディレクトリに一緒に置いておきます。
pulse.sh

#!/bin/sh

ACTION=$(zenity --list --radiolist \
  --hide-header \
  --title="Pulse Audio" \
  --text="Pulse Audio start or kill" \
  --column="Select" --column="Action" TRUE "Pulse Audio--Start" FALSE "Pulse Audio--Kill")
RET=$?
if [ "$ACTION" = "Pulse Audio--Start" ]; then
    /usr/bin/php ./pulse-start.php
elif [ "$ACTION" = "Pulse Audio--Kill" ]; then
    /usr/bin/php ./pulse-kill.php
else
   echo "cancel"
fi

pulse-start.php

#!/usr/bin/php

<?php
$connect = ssh2_connect("192.168.0.111", 22);
if($connect == true){
  $pass = ssh2_auth_password($connect, "pi", "moodeaudio"); 
  if($pass == true) {
    
    // mpd stop
    ssh2_exec($connect, "mpc stop");

    // pulse start
    ssh2_exec($connect, "pulseaudio --start");
  }
}
?>

pulse-kill.php

#!/usr/bin/php

<?php
$connect = ssh2_connect("192.168.0.111", 22);
if($connect == true){
  $pass = ssh2_auth_password($connect, "pi", "moodeaudio"); 
  if($pass == true) {

    // pulse kill
    ssh2_exec($connect, "sudo killall pulseaudio");
    
    // mpd play
    // ssh2_exec($connect, "mpc play");
  }
}
?>

各ファイルのパーミッション php(600) pulse.sh(755)
phpには接続先とユーザーのパスワードが書いてあります。現状に合わせて変更してください。

-rw------- 1 pi pi 318  2月 16 11:17 pulse-kill.php
-rw------- 1 pi pi 306  2月 16 11:17 pulse-start.php
-rwxr-xr-x 1 pi pi 417  2月 16 11:17 pulse.sh

ターミナルから./pulse.shを実行するとzenityのダイアログが出ます。ターミナルには多少のwarningが出ますが起動すればOKです。
パスの通ったところに置くとphpファイルを見つけられないことがあります。置き場所が決まったらpulse.shにフルパスで指定してください。

pulse-start.php
moode playerが再生中の場合は停止、数秒後にpulseが起動
pulseクライアントはpavucontrolを起動しておきます。

pulse-kill.php
pulseは起動したユーザーが停止できます。そのためroot権限でkillallしています。
またpulse停止後moode playerを自動再生させたい場合はコメントを外してmpc playを有効にしてください。

pulse.shはメニューに登録しておくとよいでしょう。
これだけでもずいぶん使い勝手は向上するものと思います。

Raspberry Pi moOde 4.0 を試してみる (解決)

前回の moOde Audio 4.0 リリース版ですがやっと原因がわかりました。

直接の原因はキャッシュでした。(おさがわせしました)

Beta版などを混在して使用しているとこの現象が出やすいようです。

という訳でキャッシュを削除します。

Piのキャッシュの在処はホームディレクトリ ~/.cache 以下にアプリケーション別にあります。

各アプリケーション以下でディレクトリごとバッサリ削除してもまたすぐ作ってくれます。


epiphanyとmidoriはキャッシュを削除しても残念ながらこんな感じで表示してくれませんでした。

ところでラジオ局のJazz24ですが昨日あたりからブツッといって曲名が取得できないようになっているようです。
Beta版も同様なのでラジオ局の仕様が変更になったのかもしれません。よく聞いているので対応してくれるとありがたいですね。
# これもキャッシュの影響だったようです。
曲情報は取得できるのですがgoogle searchがうまく更新できません。これはインストール方法の影響?

インストールに関しては結果的にBeta版同様の適当インストールでも結構動いてくれるようです。
もっとも当サイトではES9023-DACの枯れたデバイスと基本の機能しか確認していません。

では good pi Sound を!

Raspberry Pi moOde 4.0 を試してみる

moOde 4.0 が正式にリリースされましたね。

当サイトでも早速試してみることにしました。

UIもシンプルになっています。

手順としては前回のBeta版と同じ要領でインストールしています。

但しレシピも少々変更が入っていますね。

変更した箇所は以下の通り
step06では途中にrebootが追加されているので分けました。ほかは同じと思いますが再度確認したほうがいいと思います。
step06_1.txt
step06_2.txt
step08.txt
ネットワークを書き換え不可にした場合該当箇所はerrorになります。その他多少のerror,worningは出ますが気にしない。

Beta版同様インストールは完了したのですが最終的に立ち上げるとなんか様子が変なんですね〜

step12 chromium-browserで確認


step13 終了後起動するとこんな感じなんですね


chromium-browserで開いた設定画面

当初この画面から設定したのですが全然言うことを聞いてくれないですね


firefoxで開いた設定画面

こちらの画面からは今までどおりすんなりと設定できました。

この画面が正式な画面だと思います。


firefoxからはすべて正常に操作、再生できます。

Epiphany,Midoriもやはり白い画面のまま画像も表示されません。


正式な手順を踏んでインストールすれば改善することも考えられますがfirefoxからは正常に見えることからcssの作り込みかな?と思っています。

PIからはfirefox専用となってしまいましたがもう少しいじってみたいと思います。

次期バージョンに期待!!

Top