ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2020年7月12日日曜日

Linuxで使える軽量のイメージビューア「gPicView」

普段メインで使っているPCには、Xubuntuをインストールしています。
Xubuntuでは、xfceプロジェクトがメンテしているRistrettoって画像ビューアが標準で付属しています。
このRistrettoはよくできているんですが、イメージファイルを開くときに同じフォルダの中に入っている全てのイメージファイルをスキャンするようで、イメージファイルがたくさん入っているディレクトリ、特にネットワークドライブ上のイメージファイルを開くと、やたらと時間がかかります。
色々設定を吟味してみましたが、この動作を抑止するような方法が見つかりませんでした。

ということで、他のビュアーを色々と吟味してみましたが、GPicViewが一番いい感じです。

apt install gpicview

でインストールできますので、同じ現象でお困りの方はお試し下さい。

2020年3月11日水曜日

Xubuntuの「システムプログラムの問題が見つかりました」のダイアログ表示対策、再び

家使っているXubuntuですが、最近また、
 システムプログラムの問題がみつかりました
のダイアログが表示されるようになりました。

「/var/crash」には、起動ごとに「_usr_lib_xorg_Xorg.0.crash」というダンプが吐かれているので、xorg関連の不具合だと思うのですが、一向に修正される気配がないので、クラッシュレポート自体を止めることにしました。

Ubuntu/Xubuntuでは、クラッシュレポート機能はapportで提供されていますので、これ自体を止めてしまいます。
apportの設定ファイルは「/etc/default/apport」ですので、この中にある「enabled=1」の記述を「enabled=0」に変更します。

多少乱暴な気がしますが、これでもう暫く様子を見てみることにします。

2020年1月12日日曜日

phantomjsからchromiumのheadlessモードへ引っ越す

今まで、livedoorブログやfc2ブログなどの定期監視にphantomjsを使っていました。
 本来ならwgetが使えればよいのですが、最近のブログサービスはjavascriptバリバリで、javascriptを解さないUAでは意味のあるHTMLソースを取得できません。
そんな中、FreeBSDのjail環境上で比較的軽量に動くphantomjsは大変重宝していました。

phantomjsはすでにプロジェクトが終了しているので、そのうち代替のソリューションに乗り換えなければ、とは思っていました。
そうこうしているうちに、phantomjsがFreeBSDのportsから削除されました、容赦なく。
メンテナンスのために、pkg update/upgradeしたら削除されてしまいました、マジか。

phantomjsが打ち切られた理由の一つに、chromeにheadlessモードが追加されたことがあるようです。
chromeは、FreeBSD向けにはビルド済みバイナリは提供されていませんが、chromeのコミュニティ版であるchromiumならばpkg形式で提供されています。

ということで、chromiumのheadless機能を使ってphantomjsの代替にしたいと思います。

google検索をかけると、seleniumやWebDriverに関して書かれた記事がたくさん引っかかるのですが、私が欲しいのは「javascriptを解するwget」ですので、chromiumだけでjavascript実行後のHTMLソースを取得してみたいと思います。

まずはchromiumの導入から。
pkg install chromium
これでchromiumがインストールされます。
インストールに伴い、chromium以外にも依存関係のあるライブラリ群も導入されます。
まっさらなjail環境にインストールすると、ライブラリ等含め、1GB程度のディスクスペースが必要なようです。

インストールが済んだら、以下のようにしてheadlessモードで動作するか確認します。
chrome --headless --disable-gpu --dump-dom https://www.kishiro.com/ > ./result.html
これでchromiumが持つDOMのデータをHTML形式で取得できます。

Xの設定とか色々いるのかと思いきや、普通にコマンドラインで動きますね。
確かにphantomjsの開発意義が失われてしまう感じかも。

なお、chromeはブラウザを終了させてもプロセスが残ることがあり、上記のようなコマンドをシェルスクリプトで連続して呼び出した場合、残ったプロセスによりchromeがうまく起動しない場合があります。
この場合には「--disable-background-mode」 を指定するとよいです。

ということで、chromiumのheadlessモードでphantomjsの代替はできそうです、よかった。

最後に、phantomjsの作者さん、今までどうもありがとう!

2019年11月22日金曜日

Xubuntuの「システムプログラムの問題が見つかりました」のダイアログ表示対策

家ではXubuntuを使っているのですが、最近ログインした後に、
システムプログラムの問題がみつかりました
というダイアログが表示されるようになりました。
 調べて見ると、「/var/crush」にcoreがダンプされていると、この表示が出るようです。
ということで、
 suro rm /var/crash/*
でcoreファイルを削除して再起動、これでダイアログが出なくなりました。
暫くこれで様子をみてみることにします。

2019年1月11日金曜日

LineageOS導入済みNexus5xで表示される「ベンダーイメージの不一致」エラーの対処法

LineageOSをインストールして使っているNexus 5Xですが、ある時から起動時に以下のメッセージが出るようになりました。
Androidシステム
ベンダーイメージの不一致を検出しました。
ベンダーイメージが最新でない可能性があります。
ベンダーイメージがOPM7.181205.001と一致しているか確認してください。
ちょっと調べてみましたが、このメッセージは、端末に書き込まれているベンダーイメージ(flashのvendor領域に保存されているイメージ)のバージョンと、LineageOSが期待するベンダーイメージのバージョンに違いがある場合に出るようです。

Nexus 5Xについては、2018/12現在、まだサポートが継続していて、ファクトリーイメージが更新される度に、ベンダーイメージやブートローダー、無線関連のファームウェアなどが更新されています。

一方、LineageOSの方も、Nexus5Xに最新のベンダーイメージがインストールされていることを期待しているようで、LineageOSがバージョンアップされる際に、そのタイミングで提供されている最新のベンダーイメージがインストールされているかを確認するように修正しているっぽいです。

ということで、このエラーを出ないようにするには、Nexus 5Xの最新のファクトリーイメージを取得し、そのアーカイブの中からベンダーイメージを抜き出して、本体に書き込んでやればよいです。

例えば、Factory Images for Nexus and Pixel Devicesからダウンロードできる2018/12のNexus 5Xのファクトリーイメージ、
bullhead-opm7.181205.001-factory-5f189d84.zip
の中には、アーカイブ「image-bullhead-opm7.181205.001.zip」が含まれており、その中に、
vendor.img
が存在しています。

ついでに、元のアーカイブの直下には、ブートローダー及び無線ファームウェアである
bootloader-bullhead-bhz32c.img
radio-bullhead-m8994f-2.6.42.5.03.img
が含まれています。

これらをfastbootを使って本体に書き込んでやればよいです。
(今回の問題はvendor.imgだけ更新すれば解決しますが、ブートローダーと無線関連のファームウェアは新しいに越したことはないので、合わせて更新します。)
fastboot flash bootloader bootloader-bullhead-bhz32c.img
fastboot reboot-bootloader

fastboot flash radio radio-bullhead-m8994f-2.6.42.5.03.img
fastboot reboot-bootloader

fastboot flash vendor vendor.img
fastboot reboot
みたいな感じです。
再起動後にはエラーメッセージが出なくなっている筈です。


余談ですが、NexusやPIXELのファクトリーイメージには、オリジナルのリカバリーであるrecovery.imgが含まれているようで、LineageOSを導入するためにリカバリーをTWRPに書き換えてしまっても、完全に元の状態に戻せそうです。

ASUS Zenfoneでは、オリジナルのリカバリーは配布されていないのに比べて、とても親切ですね、さすがGoogleです。

2018年12月21日金曜日

Linuxでfriioを使う(実用編)

Linuxでfriioを使う(構築編)

の続きです。

前の記事では、Xubuntu 18.04でrecfriioをビルドする方法をご紹介しましたが、これを実際に動作させるには、更に以下のパッケージが必要です。
pcscd
pcsc-tools
これらのパッケージをapt installで導入してください。

また、以下のようにして、カードドライバであるpcscdを予め起動させておく必要があります。
systemctl start pcscd
尚、最近のLinuxカーネルには、dvb_usb_friioなるドライバモジュールが予め内包されており、friioを接続するとこのドライバモジュールが自動的にロードされデバイスを専有してしまいます。(recfriioを使おうとしても、デバイスがbusyである旨のエラーが表示されます。)

このため、dvb_usb_friioドライバが自動的にロードされないよう、ブラックリストを作成します。
echo 'blacklist dvb_usb_friio  > /etc/modprobe.d/blacklist-dvb.conf
設定が完了したら、システム再起動します。

これでrecfriioが使えるようになります。
recfriio --b25 27 60 result.ts
とやることにより、27チャンネル(東京スカイツリーからの放送波でNHK総合に該当)を60秒録画したりできます。
放送されているチャンネルの割当は地方によって違いますので、以下のページからお住まいの場所のチャンネルの割当のご確認ください。

地上デジタル放送 チャンネル一覧表
 https://www.maspro.co.jp/contact/bro/bro_ch.html

ハードオフで安く購入した白フリーオですが、上記のコマンドで無事に録画できました。

良い買い物でした。

Linuxでfriioを使う(構築編)

先日、近所のハードオフに行くと、ジャンクコーナーで白Friioが540円で売られていました。

ルータが入った箱の中に、乱雑に詰め込まれていました。
店員さんが何なのか分からず、面倒になって適当に値段をつけてジャンク箱に放り込んだっぽいです。

動けばもうけものなので、早速購入しました。
今回はこれをハックしてみたいと思います。

まず、最初に残念なお知らせから。
フリーオの純正ドライバー類は購入者のメールアドレスがないとダウンロードできないようです。
とは言いつつも、まだネット上には有志の方々が残した互換ドライバなどが存在していて、丹念に探して行けば使えそうです。

普段家ではLinuxを使っているので、Linuxで使うための情報を探してみましたが、recfriioというコマンドラインツールで録画ができるようです。

recfriioについては、以下のサイトにあがっていたのを使わせて頂きました。

Friio関係ファイル置き場
http://www2.wazoku.net/2sen/friioup/

ここから以下のファイルをダウンロードします。
up1206.zip recfriio r5本体
up1210.zip recfriio r5のパッチ
ただし、これらのファイルは、私が使っているXubuntu 18.04ではビルドすることはできませんでした。

色々試行錯誤して、ビルドできるようにソースコードを修正しました。
こちらに上げておきますので、ご利用されたい方はどうぞ。
試していないですが、恐らくUbuntuでも動くと思います。

なお、Xubuntu 18.04でビルドするには、以下のパッケージが必要でした。
それぞれ、apt installでインストールしてください。
make
pkg-config
libboost1.65-all
libpcsclite-dev
ソースコードのtarアーカイブを展開した後、recfriior5のディレクトリに移動してmakeすればOKです。

お使いの環境にもよりますが、2〜3分でビルドが完了し、recfriioの実行ファイルが生成される筈です。

2018年12月20日木曜日

JavaScript実行後のHTMLソースを取得する

とあるブログ(blog.jpドメインのlivedoorブログ)を定期的に確認し、更新があったら保存するような仕組みを作りたくなり、シェルスクリプトとwgetでなんとかしようと試行錯誤したのですが、取得したHTMLから記事のURLを抽出できませんでした。

おかしいなと思って取得したHTMLソースを見たところ、記事の中身や写真はすべてJavaScriptでレンダリングされているようです。
多分クローラー避けなんでしょうが、最近はこういうサイトが多くて嫌になります。

残念ながらwgetはJavaScriptを処理してくれないため、このままでは記事を抜き出すことは不可能です。
ということで、JavaScriptを実行した後のHTMLを取得する方法を調べてみたのですが、PhantomJSを使うのが一番簡単そうなので試してみました。

PhantomJSは、様々なOSのディストリビューションでパッケージとして提供されています。

Xubuntuでは、
sudo apt install phantomjs
FreeBSDでは、
pkg install phantomjs
でインストールすることが可能です。

使い方はこんな感じです。
phantomjs script.js ${url_target} ${user_agent}
「script.js」は、以下のような感じで記述します。
var system=require('system');
var webpage=require('webpage');
var url=system.args[1];
var user_agent=system.args[2];
var delay=3000;
var page=webpage.create();
page.settings.userAgent=user_agent;
page.open(url,function(status){
    setTimeout(function(){var html=page.evaluate(function()
    {return document.documentElement.outerHTML;});
    system.stdout.write(html);phantom.exit(0);},delay);})
PhantomJSが第一引数で指定した上記JavaScriptを実行してコンテンツを取得、保存します。

保存したHTMLから、無事に記事のURLを抽出できるようになりました。

尚、PhantomJSを使う以外にも、「Selenium+WebDriver+ブラウザ(ヘッドレスモード)」っていう選択肢もあるようです。
(ブラウザを実行させるためにXなどのGPU環境が必要になるなど、若干重た目かも…)

このように便利はPhantomJSですが、既に開発が終了しているようで、ちょっと残念です。

以下のページを参考にしました、ありがとうございました。
https://teratail.com/questions/19039

2018年5月10日木曜日

HITACHI FLORA Se210(RK2)に軽量Linuxをインストール

先日メモリとディスクを交換したFLORA Se210(RK2)ですが、今日はこのPCにOSをインストールして使える状態にしてみたいと思います。
インストールするのは、軽量Linuxディストリビューション。

・非力なネットブックでもそこそこ動作すること
・継続的なサポートがあること

を基準に、LubuntuとXubuntuを試してみました。

結局、個人的に使いやすそうと感じたXubuntuの方を常用することにしました。

インストール後、特に追加のパッケージをインストールすることなく、日本語の表示や入力も可能でした。
標準エディタのmousepadで日本語入力をしてみたが、なかなか快適です。

最近のLinuxすごいです。

特に何も考えずにi386(32bit版)をインストールしてしまいましたが、Atom N450が64bit対応なことに後で気が付きました。
今度機会があれば、64bit版のXubuntuも試してみたいと思います。