先日、ftdiのUSBシリアルドライバがない、ということで久しぶりにカーネルのコンパイルをやりましたが、せっかくなのでSlitazでカーネルの差し替えをやってみることにしました。実はwww.kernel.orgに3.2系の更新があがった(3.2.93)のを見つけた、というのも理由の一つだったりします。

 

何せ、現行のSlitazカーネル(3.2.71)はモジュールを見るとvermagicに386などと平気で返してきます。Linuxが本物の386を切ってからかなり経ちますし、いくら互換性の為とはいえあまりにも格好悪いと思うのですね。

 

とりあえず、先日構築した仮想環境にソースを展開し、低遅延、cpuファミリをpentium-M, 浮動小数点ライブラリを切る、でビルドしてみました。以前は命令の使い方でもう少しいじるところがあったような覚えがあるのですが、今は自動で見てくれるのでしょうか(単に見落としているだけかも知れない)。

 

出来上がったら、仮想環境にそのままインストール、/boot/grub/menu.lst を書き換えて起動するかどうか確認。その後、任意のディレクトリにモジュールとファームをインストールし、vmlinuzは手動でコピーしてtar.xzに固めてLAN経由で仮想環境から松下のCF-R2にコピー。既存のモジュールディレクトリをリネームしておいてから、手動で展開してコピー、/boot/grub/menu.lstを書き換えて起動。

 

ここでミスを連発。まず、grub4dosのpause時間を0のままにしておいたので新しいカーネルを選択する間もなく従来カーネルで起動してしまいました。また、以前散々苦労して探し出したwifiドライバを3.2.93側にコピーし忘れてwifiが不通になってしまいました。どちらも直ぐに修正して事なきを得ましたけど。

 

使い勝手はまったく変わりません。なんとなく音が悪くなったような気がしますが、気のせいでしょう。このハードで熱心に音楽を聴くということもないし。

 

vermagicを眺めて悦に入る(馬

 

 

カーネルの調整も凝り始めるとキリがないので今回はこの辺で止めます。今ならPCよりもボードコンピュータとかでやったほうが余程勉強になるでしょう。

 

自分宛メモ

 

モジュールのインストール先の変更
生成したモジュールをインストールするのは

make modules_install


この際、環境変数 INSTALL_MOD_PATH があれば、それがインストール先になる。

例)
make
make modules
export INSTALL_MOD_PATH=/home/tux/Downloads
make modules_install

 

/home/tux/Downloads/lib 以下にモジュール一式が展開される。

 

モジュールの圧縮
Slitazではモジュールは圧縮されている(例えばhogehoge.ko.xz)が、圧縮されていないファイルでも読み込まれる。

 

Slitazはftdiのドライバを持っていない。

 

ftdiというのはチップメーカー(でいいのか?)の名前で、秋月電子とかで売っているシリアル-USB変換モジュールの中身のチップを製造している。その名前を冠した、Linuxのカーネルモジュールが見当たらない。

 

ワタシが開発に使っているマシンのOSはLinuxMintで、これにはドライバがあったし、そんなに新しいチップでもないので他のLinuxディストリビューションでも当然組み込まれているものだと思っていた。

 

しかし、先程、自作した温度センサーを音出しサーバーに繋いで事は露見したのですね。最初、長らく使っていなかったUSBポートの物理的トラブルかと思いました(何せUSBメモリも認識しなかった)が、どうも様子がおかしいので調べたのですね。LinuxMint(つまりUbuntu)ではftdi_sioとして存在しているモジュールがありません。当然、デフォルトで組み込まれているなんて事も無し。

リポジトリにはftdiのデバイスを使うためのライブラリ、というのがありました(だいぶ以前のバージョンのようだけど)から、必要であればこれを使って書け、ということかも知れません。

 

うーむ、これは困ったことになりました。

 

対策は以下の四択です。

 

1 カーネルをリビルドする。
カーネルのリビルドは数年前まではしばしばやりましたが、最近は既存のカーネルで充分なパフォーマンスが得られる為やっていません。時間は掛かるし、ディストリビュータが使いやすいパッチツールを供給していない場合、パッチ漏れを起こして不安定なカーネルになりかねません。

 

2 モジュールのみビルドする。
一番現実的な方法だと思いますが、やり方を忘れています。

 

3 ライブラリを使って必要なものを自作する。
前述のライブラリを使ってターミナルあたりから新規作成する、というものです。

 

4 OSをSlitazからdebianあたりに変更する。
何をいまさら。

 

 

ああ、どれも今ひとつだね。

 

自分宛てメモ

 

X無しでVirtualBox上のSlitazを動かすようになって気づいたのだが、時刻の遅延が甚だしい。dateで直しても、ものの数分で遅れてきてしまう。

 

システムクロックに何を用いているかは以下で確認できる。

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

 

今回はkvm-clockとなっていた。ネットを漁ったところ、これが原因のようである。

 

 

他に何が使えるか確認するのは次の通り。
cat /sys/devices/system/clocksource/clocksource0/available_clocksource

 

結果は次の通りだった。
kvm-clock tsc acpi_pm

 

 

このうち、tsc は実際のPCにインストールしたSlitazで使われている。ので、最初こちらを試したのだがうまく行かなかった。acpi_pmに変更したところ、時計は正しく動くようになった。

設定しても再起動で揮発するので、ブートローダの設定を変更する。


/boot/grub/menu.lst
kernel /boot/vmlinuz-3.2.71-slitaz root=/dev/sda1 video=-32 clocksource=acpi_pm quiet

 

 

ちなみに、ホストOS(Thinkpad R500LinuxMint17.3(amd64, xfce4)) では hpet が使われている。

 

音源ファイルのリサンプルで音質が良くなった、という記事を見かけるが良くなったかどうかは個人差がある。リサンプルするよりグライコを通しただけのほうが具合が良いということもあるだろう。

 

手元のプレイヤーではAudacious 3.9がプラグインで対応しているので試してみた。高音域のディティールが良くなったような気がするが、一方で妙に聴き疲れするような気もする。

 

 

自分宛てメモ

 

pactl list sinks
これでsinksしているカードのサンプル仕様が取れる。手元のシステム(Thinkpad R500, LinuxMint17.3)だとs32le,2ch 96000Hz。

 

audaciousの設定にて、出力をpulseaudio, 深度32bitに変更。

 

リサンプルプラグイン(SoXリサンプラーも)にて、96000Hzに変更。192kHzと176.4kHzはそのまま。

192kHzに上げてもいいのだが、flacなんかを再生するとスペアナの遅延が酷く、明らかに重くなっているので止めた。

自分宛てメモ


vboxmanage を使うのが定石らしいが、既存のvm設定を使う場合はフロントエンドのvirtualboxにコマンドライン引数を付けて呼び出しても、それらしい操作はできる。

 

例)ゲストOSにSlitazを使う場合


 virtualbox  --normal --startvm slitaz &

※Slitaz側でX無し(rcS.confのLOGIN_MANAGERを空にする)しておくこと。

後はホストOSからsshでログインすれば良い。-xc をつければX11ポートフォワーディングも使える。

 

自分宛てメモ

 

例によってBusybox

 

設定は /etc/daemons.conf

 

サーバーとして使う場合は -l を付ける。

ubuntuが用意しているqemu用のイメージをVirtualBoxで動かそうという件。どうしてVirtualBoxなのかというと、個人的にqemuが苦手なので。(特にネット周り)

 

以下、途中まで自分宛てメモ。

 

このあたりから、amd64用kvm向けのイメージを入手する。この際、ubuntu SSO account が必要になるので、無ければ登録する。このアカウントは後々使う。
https://developer.ubuntu.com/core
https://developer.ubuntu.com/core/get-started/kvm

 

解凍と形式変換
xzなので何らかの方法で解凍する。4GB近いimgファイル(rawディスクイメージ)が出てくる。virtualboxがこれをそのまま扱えれば良いのだが、できなかったのでqemuのツールを使ってvirtualboxが解釈する形式に変換する。
qemu-img convert -f raw -O vdi ubuntu-core-16-amd64.img ubuntu-core-16-amd64.vdi

 

VirtualBoxの設定
2コア、RAM512M、仮想化支援有効、FD・光学ドライブ無、等。ネットワークアダプタはブリッジにしておく。

 

普通のディストリビューションだと起動後にコンソールが動いたりディスプレイマネージャが動いて何らかのデスクトップ環境が起動したりするのだが、coreはそんな気の利いたことはしない。外部から(今回は仮想環境なのでホスト環境から)loginしなければならない。ブリッジにしておけばLAN内のルーターがアドレスを振ってくれるのでひと手間省けるだろう、ということ。

 

起動すると初回に限り簡単な設定画面が出る。設定、といってもIPアドレスの確認とメールアドレスの入力のみ。このメールアドレスには、先だって作成したubuntu SSO account で使ったアドレスを使う。

全部終わるとログイン待ちになるので、ホストにて仮想端末を開いてsshでログインする。

メモ終わり。

 

どうしてcoreなんぞに手を出したかというと、やっすいボードPCのOSに採用されていたりするから、である。これはラズパイより安い、というか売れ残りのH8/Tinyと拡張ボードの合わせ買い位の値段でしかない。但し、ストレージや電源も用意しなくてはならないけれど。

 

そんな訳で、いずれボードPCのほうも試してみようかと。

 

自分宛てメモ

 

呼び出しそのものは問題なく実行できるが、引数の受け渡し方法がない。ネットを漁ったらCGIモジュールがあるのでそれを別途インストールして使うらしい。CGIだけでなくデータベース関連もインストールしなくてはならず、結構煩わしい。しばらく、Python2.7で書こう。
尚、SlitazのLuaは5.2である。debian/ubuntuやeLuaは5.1で、かなり違いがあるので使うときは注意が必要。5.1のソースを持ってきて自分でビルドしたほうが良いかも知れない。

 

トレースバックを効かせていると、こんなにド派手なエラー画面が表示される。(右下の時計はxfceのパネルです、念の為。)

 

とりあえず、サーバーに問い合わせることでグラフを描いて返すようにはなった。余り格好良くないけど。

しかし肝心のセンサーノード側で問題が生じており、結構深刻な状況だったりするのですよ。


Search

Calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>

Archive

Mobile

qrcode

Selected Entry

Link

Profile

Search

Other

Powered

無料ブログ作成サービス JUGEM