Current filter: »tinyCore« (Click tag to exclude it or click a conjunction to switch them.)
May 24, 2023
HP Probook 450 G9, mpd, libsamplerateで高品質アップサンプリングを試みる(6月1日、4日、追記)
前回のエントリーでは、TC64-11.1 mpdサーバーをHP Probook 450 G9で動かした。
どこまでやれるか試しているのだが、ここで問題がある。
カタログ上、450 G9のCPUは最高4.9GHzで動く筈だが、3.7GHzまででしか動いてくれない。
インテルのCPUにはターボ・ブースト・テクノロジーというのがあって、負荷がかかると自動的にクロック周波数を上げるのだけど、それが充分に機能してない?ようなのだ。
原因が分からない。
ネット上で調べたところ、原因として考えられるのは、熱の問題、電力の問題、BIOSのバグ、これらは該当しないだろう。
あと、AVX2、AVX-512のような遅いSIMDがクロックを下げるとか。
これはよく分からない。アクティブなコアが増加するとクロック周波数の上昇率が下がるということらしいが、mpdサーバーで動いているプロセスは少ない。
ほとんどのコアは仕事をしてないようにすら見えるので、これも違う気がする。
うちのmpdサーバー EliteBook 820 G2の状況をメモ。
tc@box:~$ grep MHz /proc/cpuinfo cpu MHz : 2886.755 cpu MHz : 2831.833 cpu MHz : 2697.611 cpu MHz : 2694.282 tc@box:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave powersave powersave powersave tc@box:~$ grep 'model name' /proc/cpuinfo model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz tc@box:~$
powersaveで動いている。
CPUは2.30GHzだが、動くときには2.8GHz以上で動いている。i5-5300Uのターボ・ブースト利用時の最大周波数は2.90 GHzであり、ブーストが機能している。
(powersaveでもブーストは効くんだね)
そういうわけで、Probook 450 G9のi7-1255Uでターボ・ブーストが機能しない?のが残念な状況だ。
正直、買って試してみないと分からないな、というのはあったので想定内といえばそうなんだけど、820 G2で動いてるんだから多分いけるだろう、と甘い判断をしたわけだ。、、
Probook 450 G9をmpdサーバーとして動かしてみたときの状況。
tc@box:~$ grep MHz /proc/cpuinfo cpu MHz : 2608.375 cpu MHz : 2643.276 cpu MHz : 3700.000 cpu MHz : 3700.000 cpu MHz : 820.543 cpu MHz : 1357.115 cpu MHz : 2889.705 cpu MHz : 1141.198 cpu MHz : 2205.000 cpu MHz : 2569.790 cpu MHz : 1859.254 cpu MHz : 888.040 tc@box:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave *snip* tc@box:~$ grep 'model name' /proc/cpuinfo model name : 12th Gen Intel(R) Core(TM) i7-1255U *snip* tc@box:~$
こんな感じで3.7GHzが上限になっている様だ。なんでかねえ、、、
https://www.intel.co.jp/content/www/jp/ja/products/sku/226259/intel-core-i71255u-processor-12m-cache-up-to-4-70-ghz/specifications.html
インテル® Core™ i7-1255U プロセッサー
上記のインテルのサイトによると、
Performance-coresの数 2、Efficient-coresの数 8
Performance-core最大ターボ・フリークエンシー 4.70 GHz
Efficient-core のターボ・ブースト利用時の最大フリークエンシー 3.50 GHz
とある。
https://xtech.nikkei.com/atcl/nxt/column/18/02268/111800001/
最新のインテルCPU、第12世代Coreシリーズは何が違うのか
日経クロステック 2022.12.12
上記記事によると第12世代のインテルCPU、つまりi7-1255Uは、PコアとEコア、2種類のコアを積んでいると。
高い性能が必要な処理はPコア、負荷は低いが常時実行するような処理はEコアが向いているそうだ。
性能を重視した従来のCPUコアがPコアであり、性能よりも電力効率を重視したのがEコアで物理的サイズはPコアの4分の1と。
そんな構造なので、スレッドごとの処理を適切なコアに割り振る「スレッド・ディレクター」というのがCPUに組み込まれていて、負荷が高い処理はPコアに振り分けされるらしい。
実際、topでの挙動を見ると、mpdの処理は専ら「CPU0」と「CPU2」、2つのスレッドが代りばんこに受け持っているようだ。CPU0~3がPコアのスレッドなのかな。
これは、4つのスレッド全てでリレーする、820 G2のi5-5300Uの挙動とは異なる。
しかしそれなら、4GHz以上で動いてもいいと思うのだが、、、
ネット上を調べていたら、CPUの動作クロックを設定する「cpufreq」というツールがあり、Tiny Core 11では「cpupower.tcz」という形でリポジトリ上にあるらしいということが分かった。
インストール。
tc@box:~$ cpupower Usage: cpupower [-c|--cpu cpulist ][ ] Supported commands are: frequency-info frequency-set idle-info idle-set set info monitor help Not all commands can make use of the -c cpulist option. Use 'cpupower help ' for getting help for above commands. tc@box:~$ cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 400 MHz - 4.70 GHz available cpufreq governors: performance powersave current policy: frequency should be within 400 MHz and 4.70 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 405 MHz (asserted by call to kernel) boost state support: Supported: yes Active: yes tc@box:~$ tc@box:~$ sudo cpupower frequency-set -g performance Setting cpu: 0 Setting cpu: 1 Setting cpu: 2 Setting cpu: 3 Setting cpu: 4 Setting cpu: 5 Setting cpu: 6 Setting cpu: 7 Setting cpu: 8 Setting cpu: 9 Setting cpu: 10 Setting cpu: 11 tc@box:~$ cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 400 MHz - 4.70 GHz available cpufreq governors: performance powersave current policy: frequency should be within 400 MHz and 4.70 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 657 MHz (asserted by call to kernel) boost state support: Supported: yes Active: yes tc@box:~$ tc@box:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
「powersave」を「performance」に変更。
これで、CPUがパフォーマンス優先にセットされた。
これでどうかというと、やはり、3.7GHzまで。
どうしたものかな、と思いながら使っていたら、ときに3.7GHzより少し上が出る。コンスタントには出ない。しかし、どうやら出せないわけじゃないんだろうなと。
そこで、BIOS関係で節電に関する設定を調整してみることにした。
ネット上に公開されているHPのマニュアルから引用。
HP PC Commercial BIOS (UEFI) Setup
Administration Guide
For Commercial Platforms using HP BIOSphere Gen 7-9 2020 -2022
Runtime Power Management | When checked, enables the processor to run at lower frequencies (P-states) when higher performance is not needed. When unchecked, the processor always runs at maximum frequency. |
Extended Idle Power States | When checked, enables the processor to rest in lower power states (C-states) when idle. |
Power Control | When checked, enables the notebook to support power management applications such as IPM+ that help enterprises reduce power costs by intelligently managing the battery usage of the notebook. |
Battery Health Manager | Sets charging policy based on optimizing for battery life or for battery duration. The possible settings are: • Maximize my battery health • Let HP manage my battery charging |
しかし設定できる項目が少ない。こんなもんなのかなあ。
ネット上の日本語マニュアルは古いので英語の方を読む。日本語版には書いてないようなことが書いてある。
とりあえず、下記のように設定してみた。
Runtime Power Management | on → off |
Extended Idle Power States | on |
Power Control | on → off |
Battery Health Manager | Let HP → Maximize |
設定変えたら、ほとんど動いていなかったEコアたちが一斉に動きだし、音が途切れるように。
Pコアに重要な仕事を降るということをしなくなったようだ。
変更した設定を戻していく。
Power Controlを「on」に。
Pコアに仕事を降るようになった?ようだが、それでも音が途切れる。
tc@box:~$ cpupower frequency-info analyzing CPU 0: no or unknown cpufreq driver is active on this CPU CPUs which run at the same hardware frequency: Not Available CPUs which need to have their frequency coordinated by software: Not Available maximum transition latency: Cannot determine or is not supported. Not Available available cpufreq governors: Not Available Unable to determine current policy current CPU frequency: Unable to call hardware current CPU frequency: Unable to call to kernel boost state support: Supported: no Active: no tc@box:~$ tc@box:~$ grep MHz /proc/cpuinfo cpu MHz : 841.518 cpu MHz : 1462.869 cpu MHz : 1700.000 cpu MHz : 1703.346 cpu MHz : 634.992 cpu MHz : 1034.485 cpu MHz : 1013.223 cpu MHz : 1197.852 cpu MHz : 1119.194 cpu MHz : 977.032 cpu MHz : 1196.461 cpu MHz : 1198.542 tc@box:~$
なんか、すごく上手くいってないっぽい。IntelのCPUだという認識が出来ていない。
クロック周波数も上がっていない。
Runtime Power Managementを「on」に戻す。
Power Controlを「off」に。
これで、まともに音が出るようになった。
tc@box:~$ cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 400 MHz - 4.70 GHz available cpufreq governors: performance powersave current policy: frequency should be within 400 MHz and 4.70 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 966 MHz (asserted by call to kernel) boost state support: Supported: yes Active: yes tc@box:~$ sudo cpupower frequency-set -g performance Setting cpu: 0 Setting cpu: 1 *snip* tc@box:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance tc@box:~$
これで700kHz台を出そうとしたが、やはり10秒ほどでぶちぶち途切れる。
300kHz台だと問題なく音が出る。
音が出ているときのCPUのクロック周波数の上限は3.7GHz付近で変わらない。
まともに音が出ていないときは、クロック周波数も上がっていない、ということがある。ここの辺り挙動が謎だ。
ちょっと気になったのが、BIOSの説明書に出てきた「IPM+」というもの。
電源管理を行うソフトらしい。
Windowsで起動したら設定できるらしいので、セキュリティブートを有効にしてWindowsを起動し確認してみたら、インストールされていないようだったので、ほっとくことにする。
結局、BIOSの電源関係はあまり関係ないように思われた。
もしかして、Tiny Core OSの問題?とも思ったりもするが、調べてもはっきりしないし、確信もない。
この件は、当面、保留である。
そういうわけで、HP Probook 450 G9 mpdサーバーは、libsamplerateの設定を「Best Sinc Interpolator」、アップサンプリング設定を384kHzで動かしている。
そこそこ余裕を持って動いているように見える。
というのは、topで見るとmpdを担当するCPU0、CPU2、2つのスレッドがともに休んでいる時間がそこそこ見えるからだ。
比較したら、820 G2でMedium、768kHzで動かす方がもっと余裕がある挙動で動く。
Bestの設定は、やはり相当、重いのだと思う。
音はそれに見合うものがあると思うのだけど、音質の確認は流し聴きだけで、十分にはしていない。
音源によってはリアリティがMedium、768kHzより高いと思う。
Medium、768kHzと、Best、192kHzだと、どっちがいいかは好みにもよるかも、みたいな感じだった。これらも真剣に比較しないまま今に至ってるんだけど、Best、384kHzは、それらの水準を超えると思う。
今後、余裕がある時に確認していこうと思う。
課題はいろいろ残っているけど、無理せず、焦らず、という感じ。
6月1日、追記。
なぜCPUのクロック周波数が3.7GHzまでしか上がらないのか。
結論からいうと、Tiny Core OSが原因だった。
TC64-11.1のカーネルは5.4.3。これが古かったのだ。
TC64-14のカーネルは6.1.2。「corepure64」と「vmlinuz64」をコピー&ペーストで入れ替え、mpdサーバーのOSをバージョンアップしてみた。こういうやり方はソフトが上手く動く保証がないけど、簡単に出来る。動けば恩の字だ。
mpdはちゃんと動いた。
CPUも、4.7GHzで機能した。新しいCPUだから新しいカーネルが必要だったのだろう。
しかしlibsamplerate、Bestの設定を使った700kHz台へのアップサンプリングは、音が途切れて無理だった。
実際、300kHz台で鳴らした時点で、なんとなく予想はしていた。3.7GHzでなんとかなるレベルだから、700kHz台で動かすなら最低でも5GHz以上が必要じゃないかと思った。それでも無理かもしれない。
今回のOSのバージョンアップで問題だったのは、sshが使えなくなったことだ。mpdサーバー本体のキーボードから操作せざるを得なくて少し面倒だった。しかし、そう複雑なことはしてないので出来たという感じ。
sshが使えるようだったらサーバーを入れ替えたかもしれない。今回はそうはせず今までのまま、TC64-11.1で運用継続だ。入れ替えは暇が出来たらということになる。
6月4日、追記。
sshは、openssh.tczをTC14のリポジトリから再インストールしたらつながるようになった。
そういうわけで、めでたくサーバーは入れ替えた。今のところ、問題ないように見える。CPUも4.7GHz近くで動いている。
May 18, 2023
最新ノートPCで起動できるTiny Core 64 mpdサーバーを過去の資産の切り貼りで作る
今月は、TC64関係のエントリーを2つ上げている。
HP Probook 450 G9で起動できるTC64-14を作るところまでこぎつけた。
今回は、450 G9でmpdサーバーを動かそう、というものだ。
動かすといったって、いちからmpdなどなどをインストールしてサーバーを構築しようというのではない。けっこう大仕事なので、そこまでする余裕はない。
現在、使っているTC64-11.1 mpdサーバーと同じものを、450 G9で動かそうということだ。
もちろん、そのままでは起動できない。
ブートローダーが新しいBIOSである「UEFI」に対応してないからだ。
しかし、Tiny Core Linuxというのは、かなり融通無碍なディストリビューションだ。
タイトルにあるように、過去の資産を使って、動くものを設えようというのが今回の話。
そんなに長い話にならない。
準備するのは、
1) インストールするためのUSBメモリ、1つ。
2) 現在のPCオーディオシステムに使っているmpdサーバーTC64-11.1のイメージファイル。
3) 先日作った450 G9で起動できるTC64-14のイメージファイル。
さて、手順だ。
上記の2)、3)を日常使いのPC(うちのOSはFedora)上に準備する。
(今回の場合、2)は過去にバックアップしたimgファイルがある。3)も先日作ったのをパーティションイメージとして保存している。)
USBメモリを日常使いのPCに刺し、インストールするパーティションを作る。
mpdサーバーのimgファイルの大きさは500MB強なので、1GBもあれば十分以上。
使うソフトはユーティリティの「ディスク」。
ファイルシステムは「FAT」を選択。
パーティションが出来た時点で、自動的にシステム上にマウントされファイルブラウザに表示される。ここにmpdサーバーをインストールしていく。
次に、mpdサーバーTC64-11.1のイメージファイルを「ディスクイメージマウンター」でマウントする。ファイルブラウザ上に表示されたimgファイルアイコンを右クリックで、メニューからアプリ選択するので手軽で簡単だ。
マウントしたmpdサーバーTC64-11.1のボリュームから、「tce」フォルダをコピー、USBメモリの1GBのボリュームにペーストする。
次に、TC64-14のイメージファイルを同様にしてマウントする。
マウントしたTC64-14のボリュームから、「EFI」フォルダと「syslinux.cfg」をコピー、USBメモリの1GBのボリュームにペーストする。
以上で出来上がりだ。
450 G9でブートできる。
こういうコピー&ペーストでOSインストールする方法は、Tiny Coreの入門書に書いてある。
http://tinycorelinux.net/book.html
過去にこうしたやり方は何回か試みたことがあったんだけど、なぜかついぞ上手くいったことが無かった。
だから今回、これで動くようなので、僕自身がびっくりしている。
(ファイルシステムに無頓着だったから上手くいかなかったのかもしれない)
そのうち、暇が出来たら使ってみようと思う。
しかし、使えるのかな、これ、、、
(使えました、、取り敢えずBest Sinc Interpolatorで384kHz、この音はいいかもしれない、、、)
May 14, 2023
TinyCorePure64で、UEFI対応のPCで動くTiny Core 64をUSBメモリにインストールする
前説
今回は、いよいよオーディオからは縁遠いので、pcのカテゴリーに入れている。
(17日の時点で、読みにくいな、分かりにくいな、と思ったところを多少書き直した。内容は変わっていない。)
前回、うちで使っているTiny Core 64-11.1をインストーラーに転用して、UEFI対応のTC64-14をUSBメモリにインストールした。
しかし簡単にインストーラーに出来るTCを持っている人はそういない。
Tiny Core Linuxのサイトからダウンロードできるものと最小限の機材で、UEFI対応のTCを作るにはどうするのがいいのか、今回はそういうことを考えてみた。
つまり、TinyCorePure64-14.0とPC1つと有線LANのネット環境で、どうしたらいいかということだ。
下記urlからTinyCorePure64-14.0.isoをダウンロードできる。
http://tinycorelinux.net/14.x/x86_64/release/
USBメモリなりに焼いて、ブートする。
HP ProBook 450 G9だとgrubのブート画面が出るんだけど、そこでenterを押したらモニターが真っ暗になる。
ここで「sudo reboot」を打つとPCが再起動するので、OSは起動していることが分かる。
しかしこれでは使えない。
http://forum.tinycorelinux.net/index.php/topic,25015.msg159414.html#msg159414
TCのフォーラムに似たような事例が上がっている。
BIOSの設定で解決した事例のようだけど、うちのケースはどうも違うようだ。
ここではgrub画面から設定変更して起動させる方法も書かれている。これも、うちでは効果は無かった。
結局、今までのところ、450 G9でTinyCorePure64-14.0を起動したときに正常に表示させる方法は発見できていない。
ProBook 450 G3だったら、BIOSのBoot Menuから「Legacy」を選択すると普通に起動できる。
実は450 G3、普通に起動できた後、ちょっとした手数で比較的簡単にUEFI対応のTC64をUSBメモリにインストールできることが分かった。こうして作ったTC64-USBメモリは、450 G9で普通に正常にブートできる。
だから今回は、ProBook 450 G3で、450 G9でも使えるTC 64-14.0を作る方法の記録、ということになる。
以下に記載。
インストールに使うTinyCorePure64-14.0を450 G3で起動
先ず、「TinyCorePure64-14.0」のisoファイルをダウンロードしUSBメモリに書き込みPC(450 G3)に刺す。
下記からダウンロード。
http://tinycorelinux.net/14.x/x86_64/release/TinyCorePure64-14.0.iso
今回は、インターネットに有線LANでつながる環境が必要。
TCのサーバーからダウンロードするものがあるからだ。
PC起動、escキー、f10キーからBIOS設定画面に移行。
Advanced画面を開く。
Secure Boot Configurationから、Configure Legacy Support and Secure Boot を「Legacy Support Enable and Secure Boot Disable」に設定。
Boot Optionから、起動優先順位でUSBを上げる。
Main画面を開き「Save Changes and Exit」を選択。「Yes」をクリック。
PCが再起動。
grubの起動画面が表示される。
(BIOSを設定済みであれば、f9キー、Boot Menuからだけで起動できる。)
今回、450 G3だからBIOS設定はこんな流れだが、当然他の機種なら違ってくる。

画像はスマホで撮った写真からトリミングしたもの。
ブートする方法が4つ選択できる。画像では「waitusb=5」を選択している。
そのほうがゆっくり慎重に起動するので無難、という感じ。
今回は、command line onlyではなく、GUIで操作するウィンドウマネージャを使う。
使えるPCが1台なので、sshで遠隔操作できない。
そうなると日本語キーボードを使えない。TinyCorePure64素のままでは設定できないのだ。USキーボードの設定のままで操作するので、キーボードを打つ操作は極力減らしたい。なしには出来ないが。
「enter」キーで、Tiny Core 起動。
ブート画面は以下。


上の画像は、OS起動後の画面キャプチャしたファイルなんだけど、実際の画像ファイルは、ブラウザ上の表示よりも縦尺が長い。
というか、実際のPCモニター上で、表示画面の縦を圧縮した表示になっているのだ。
だからスマホのカメラでとったBIOS画面と、OS起動後にデスクトップ(というのか?)をキャプチャした画像ファイルで、縦横の尺が違う。上下圧縮していない画像が、キャプチャ画像ファイルとして保存されるからだ。
今回、キャプチャ画像を、実際にPC上に表示された縦横比に近い感じで、ウェブブラウザ上で表示するように設定している。つまり、ブログ上ではキャプチャ画像ファイルの上下を縮めて表示している。
キャプチャ画像が大きすぎて読みにくいということもあったので。
インストールの準備 マウントツール、ターミナルを起動

まず、いくつかのソフトを起動。
上の画面、下の方、アイコンが7つ並んでいる。
右から2つ目、マウントツールをクリックしたら左上のカラフルな小さなウインドウが開く。これで、パーティションやドライブのマウント、アンマウントを管理できる。
OS起動の時点で、起動しているTCのディスク「sdb」が緑、マウントされていることが分かる。
sda1~3は、450 G3のHDDで、普段使っているOS(うちの場合Fedora。世間一般的なPCだったらWindowsが多いか)がインストールされている。
やろうと思えば、ここにTCをインストールできる。
もちろん、そんなことをしたら、HDDの内容はすっかり上書きされて消えてしまう。
つまり今回、ここは触ってはいけない領域、ということだ。
慎重を期すなら「fdisk -l」コマンドでドライブ構成を確認したほうがいいのだけど、今回は省略した。1~3があるのが普段使っているOSのドライブで、マウントされてるsdbで1しかないほうが現在起動しているTCだというのは分かるから。
画面の下、一番右の四角いアイコンで、ターミナルが起動する。上の長四角い灰色のウィンドウがそれだ。
ここからいろいろ操作する。
キャプチャ画面上、ターミナルに「tce」と入力している。入力後、enterキーで、ターミナル上でtceが動く。
tceは、Tiny Coreのソフトウェア管理・インストーラアプリだ。
インストールの準備 OSインストーラー(tc-install)と、grub2をインストール

キャプチャ画面、ターミナルウィンドウの表示。
tceが、スタンバイモード(とでもいえばいいのか)で起動されている。
Search、Provides、Keywords、Quit、と表示されているが、キーボードのキーを打つことで操作する。
Search の「s」を入力。

tce が検索モードになる。「tc-install」と打って、enter。

TCのリポジトリ上で、検索に引っかかったソフトが表示される。
(マウスの操作でターミナルのウィンドウを大きくしている。)
1. tc-install-GUI.tcz
2. tc-install.tcz
tc-installは、TC-OSのインストーラ。これがないとOSをインストールできない。
ちなみに「tcz」は、TCで使うソフトウェアを個々にパッケージ化したもの。tczの形でリポジトリに置かれているのをダウンロードするということだ。
今回使うのは「2」、ターミナル上で操作していく。「1」ならGUIで操作できるはずだが、今回は使ってない。意外と、ターミナル上で操作するのも簡単で不便ではない。
2 を入力し、enter。

tc-install.tcz の簡単な説明が表示される。
このソフト説明表示画面は、しばしば重要な内容が記載されていることがある。

ここで「q」を打つと説明表示からスタンバイモードに移行する。「i」キーで、先に検索表示したソフトのインストールが始まる。
インストール作業が進むに連れて文字列が上に上がっていく。
必要なアプリやライブラリのインストールが終わると、スタンバイモードに戻るんだけど、キャプチャはしていない。

tc-installのインストールは終了し、tceスタンバイモードから「s」で検索。
上のキャプチャ画面は、tceから「grub2」を検索し結果が表示された場面。
検索で引っかかるのは「grub2-multi.tcz」だけなので、ソフト選択画面は表示されず、すぐに説明画面が表示される。
この説明画面の文面は、あとで使う。詳しくは後述。

「q」キー、「i」キーで、grub2-multiをインストール。
関連するソフトも同時にいろいろダウンロード、インストールされる。
インストールが終わったら、「q」で、tce を終了。
これで、USBメモリにTC-14をインストールするために必要なアプリケーション2つを、TC-14にインストールした(ややこしい)。
ターミナル一番下の「clear」はターミナル画面を埋め尽くした文字をクリアし掃除するコマンドだ。
これでenterを押したら、画面がまっさらになる。
インストーラを起動、TC-OSをダウンロード

PCに、TCをインストールするUSBメモリスティックを刺す。
キャプチャ画面上、左上、マウントツールに、自動的に「sdc1」が追加される。
「sdc」がUSBメモリスティック、「sdc1」がUSBメモリスティック上のパーティションということだ。
ターミナルから、OSインストールのコマンド「sudo tc-instoll.sh」を打つ。

キャプチャ画面、ターミナル上、tc-instollが起動している。
インストールの設定開始。
Install from [R]unning OS, from booted [C]drom, from [I]so file, or from [N]et. (r/c/i/n): n
今回、ネット上のTiny CoreのサーバーからOSをダウンロードしインストールする。
ターミナル上、「n」を入力し、enter。
ネットインストールを選択したら最新のOSが自動的に選択されるらしい。
古いのを使いたければ、isoファイルをダウンロードして、USBメモリに書き込んだ上でPCに刺し「i」を選ぶんだけど、キーボードから手打ちでisoファイルの場所を指定しないといけないので手間がかかる。今回はしない。
Running OSという選択もある。
今回、インストールに使っているOSはTC64-14で最新なので、もしかしたらこっちの方が手軽だったかもしれない。
(実際やってみたら、全く手軽ではなかった。ネットインストールがずっと楽だ。)

ネットインストールで、OSを32bitか64bitか選択できる。今回は「64」で、enter。

ネットインストールなので、OSがダウンロードされる。
TC-OSインストール設定、インストール

ダウンロード終了したら、インストール方法を設定していく。
説明が英語で表示されている。Frugal、HDD、Zipの3通り。
Frugalが通常のインストールらしいが、説明を読むと、HDDがUSB接続のデバイスにインストールする場合で、今回はこれを選択。
ちょっと、まぎらわしい。
「h」、enter。

インストール先をどこにするか設定。
ここは要注意。
前述したが、本来インストールすべきではないところにインストールしたらすっかり上書きされて失くしてはいけないものが消えてしまう。
sdbとsdcは「On a removable device.」と表示されている。
間違えないように注意換気しているようだ。
今回は「sdc」にインストールするので、「3」、enter。
そうしたら、下記表示される。
Install Extensions from this TCE/CDE Directory:
追加インストールするものを、動かしているTCから移行できるらしい(触ってないので実は知らない)。
過去に使ってきた資産から使えるようにという配慮なのだろう。ただ、インストールするOSが異なるバージョンだった場合、tczのバージョンも違う可能性があるので、すんなり使えるとは限らないと思われる。
今回は何もないので、enterキーでいい。

フォーマットの選択。
今回はTCをインストールしたUSBメモリを起動ディスクにするので、あとから「grub2」をインストールする。
そのためにはフォーマットが「vfat」でなければならないようだ。
前に「HDD」を選択しているが、説明書きに「A single FAT partition will be made」と書かれてあった。だから、ここでvfat以外を選択したらどうなるのか分からない。
4. vfatなので、素直に「4」、enter。
Enter space separated boot options:
Example: vga=normal syslog showapps waitusb=5
これは、ブートローダーの設定らしい。
入れておいた方が無難かな、と思って僕はこのままコピペして設定している。
入力後、enter。
今回、GUIでTCを操作しているのは、マウスでこうした文面をコピペして入力できるのが便利だからだ。
繰り返しになるが、USキーボード設定なので、日本語キーボードでは使いにくい。
コピー&ペーストで済むのはかなり楽なのだ。
ただし、「ctrl + c」「ctrl + v」ではコピぺできない。マウスのホイールボタン、中央クリックでコピペする。これは個別の環境によって違うかもしれない。
Last chance to exit before destroying all data on sdc1
Continue (y/..)?
「y」、enter。
これでインストール開始。

キャプチャは、インストール終了した画面。
Press Enter key to continue.とあるので、enter。
UEFIに対応できるGrub ブートローダーをインストール

キャプチャ画面、ターミナルウィンドウが2つに増えている。
下のターミナルウィンドウで、tceを起動。

「grub2」を検索。
何をしようとしてるかというと、grub2の説明画面を表示しようとしている。
そこに記載された文面が必要なのだ。

表示を拒否された。
「can't open '/tmp/select.aus': Permission denied」とある。権限が無いということだ。
一旦、「q」を打ってtceを閉じて、「sudo chmod 777 /tmp/select.aus」と打ち込んで権限を変更してから、再度、tceを起動しgrub2を検索したら表示されるようになる。
ここらはキャプチャし忘れた。
どうも表示を拒否される場合とされない場合があるようで、理由がよくわからない。
拒否された場合は権限を変更したら対処できる。

下のターミナル画面、grub2-multiの説明が表示されている。
ここから、上のターミナル画面に、ブートローダーのインストールコマンドをコピペする。
前述したが、コピペはマウスの中央クリックで行う。
コピペしたコマンドはこれ。
sudo grub-install --target=x86_64-efi --boot-directory=/mnt/sdc1/EFI/BOOT --efi-directory=/mnt/sdc1 --removable
コマンドには「--target=x86_64-efi」と記述されている。
これは「UEFI」に対応するブートローダーをインストールする設定だ。
今回は、Legacy BIOSに対応しない、UEFIでしか動かない新しいPCで起動できるTCを作るのが目的なので、対応できるブートローダーをインストールする必要がある。
コマンドの文面には、インストール先が「/mnt/sdc1」と記載、設定されている。
今回、ブートローダーのインストール先はOSインストール先の「sdc1」なので、コマンドの文面を書き換える必要がない。当然、違うのであれば書き換える必要がある。
さて、enterキーでインストール開始する前に、sdc1をマウントする必要がある。
キャプチャ画面左上、マウントツールで「sdc1」をクリックし、緑に。
これでsdc1が「/mnt/sdc1」にマウントされ、インストールが可能になる。
これをしなかったら、インストールできないので注意。

enterキーで、インストール。
警告は表示されるが、「Installation finished. No error reported.」で、問題ない。
これでブートローダーがインストールできた。
しかしまだやることがある。
grub.cfg を設定
grub.cfg を設定しておかないと、ブートしてもうまくいかない。
新規OSインストールした「sdc1」にはgrub.cfgがないので作る。これも「sdb」のgrub.cfgから可能な限りコピペしていく。
一般的にはgrub.cfgはユーザーが弄るものではないようなんだけど、Tiny Coreの場合はユーザーが作る。

下のターミナルは、「sdb」側を表示。lessでgrub.cfgの内容を表示。
less /mnt/sdb/EFI/BOOT/grub/grub.cfg
上のターミナルは、「sdc1」側を表示し、ここでgrub.cfgをviエディタで作る。
vi /mnt/sdc1/EFI/BOOT/grub/grub.cfg

下から上に、コピペできるところはコピペして作る。
(viの使い方はここでは触れない。
と言いながら、書き忘れ。USキーボードなので「:」は「; + shift」で入力する。これで「:wq」が打てる筈。)
しかし実は、後で気付いたのだけど、vfatのフォーマットで作っているので、ふつうにUSBメモリをWindows PCとかにでも刺してファイル作成、編集が出来る。
viを使ってやるよりも、そっちのほうが楽な場合もあるかもしれない。
インストールに使ったTCをシャットダウン、インストールしたUSBメモリスティックから起動

これで一通り、作業終了。
上のキャプチャ画面下、一番左のアイコンをクリックするとPCをシャットダウンできる。

上の写真は新規インストールしたOSから起動したところ。
しかし、本当に出来るようにしたいのは、450 G9によるTC64インストールだ。
起動画面表示の方法は、今後、暇なときに探していきたい。
May 07, 2023
最新のノートPCを最新のTiny Core 64で起動する
前説
最新のコンピューターを使うには新しい知識が必要だ。それらはどんどん古くなる。
アップデートしないといけないんだけど、僕の場合はどこかに書いておかないと忘れるので備忘録として書いておく。
今回、オーディオの話はないんだけど、Tiny Coreはうちではオーディオ以外で使うことはあまりなさそうなので、オーディオのエントリーにしておく。
まず今回、HP ProBook 450 G9を入手した。
HPのネットショップで注文。
メモリはデフォルトの8GB DDR4-3200のままだが、CPUを「Intel(R) Core(TM) i7-1255U」に変更。最大4.7GHzで走る。
新品のPC購入、しかも10万円以上なんて、たぶんMacBook Pro (Mid 2010)以来じゃないかな。
450 G9、とりあえずTiny Coreを走らせようとして分かったこと。
ブートはセキュリティがかかっている。
流石、最新型だ。
セキュアブートをOFFにしないとUSBからは起動しない。
OFFにしていたら、元々インストールされているWindows11からは起動できなくなる。ONに戻したら起動可能になる。
ちょっと、ややこしい。
側から見ただけではONなのかOFFなのか分からない。覚えておくか、BIOSの確認が必要だ。
32bit OSは起動しない。
つまり、Tiny Coreのインストール用イメージである「CorePlus」は起動できない。
2019年10月のエントリー(http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027a.htm)に書いてある手法は、そのままでは使えないことが分かった。
途中、ProBook 430 G5も弄ってみた。
先ず、「TinyCorePure64-14.0」のイメージをUSBメモリに書き込み、PCに刺す。
PC起動、escキー、f10キーからBIOS設定画面に移行。
Advanced画面を開く。
Secure Boot Configurationから、Configure Legacy Support and Secure Boot を「Legacy Support Enable and Secure Boot Disable」に設定。
Boot Optionから、起動優先順位でUSBを上げる。
Main画面を開き「Save Changes and Exit」を選択。「Yes」をクリック。
PCが再起動。
grub2の起動画面が表示される。
この時点で「tc」が選択されている。enterキー。
Tiny Core 起動。
こんな感じ。
このようにBIOSを設定したら、起動できる。
f9キーからのBoot Menuではどうかというと、USBからの起動で「UEFI」と「Legacy」を選択できる。
UEFI-xxxx(USBスティック名)からだと、f9を推さなかった時と同じ流れで起動。
Legacy-xxxx(USBスティック名)を選択したら、grubの起動選択画面が表示される。enterで起動。UEFIで起動したときと表示のされ方が違う。
こんな感じで、TinyCorePure64は起動するんだけど、「CorePure64-14.0」は起動できない。
違いは「EFI」ディレクトリの有無。
このディレクトリの奥にはefiboot.imgやgrub.cfgがある。CorePure64には、これがない。
どうやら、新しい機械で起動するには、EFIに対応している必要があるようだ。
こうして起動した「TinyCorePure64-14.0」だけど、「読み出し専用」でブートされるので実質的には使えない。ソフトのインストールや設定が出来ない。
理由は分からないのだけど、これらのイメージは元々CD-R用らしく、使えるようにするには「インストール」する作業が必要なのだろう。
インストール用イメージである「CorePlus」はどうか。
電源ボタンを押すだけでは起動できない。
BIOSから起動する必要がある。
f9キーを押してBoot Menuを表示。
UEFIからは起動しない。「TinyCorePure64-14.0」とは挙動が違う。
Legacyを選択すると、TinyCorePure64と同じ流れで起動できる。違うのは、どのようなOS、window managerを使うかとか、CLI(最近はCUIって言わないのかな)で起動するか、などを選択して起動させることが出来ることだ。
ProBook 450 G3ではどうか。
これは以前から普段使い用になっている古めのノートPC。
TinyCorePure64、CorePlusは起動できる。
BIOSからのBoot Menu。
UEFI-xxxx(USBスティック名)を選ぶと起動しない。
Legacy-xxxx(USBスティック名)を選ぶと起動できる。OS起動の選択画面表示、選択、enterで起動。
CorePure64は、起動しない。
さて、新型のProBook 450 G9ではどうか。「TinyCorePure64-14.0」の起動を試みる。
PC起動、escキー、f10キーからBIOS設定画面に移行。
Advanced画面を開く。Boot Optionから、起動優先順位でUSBを上げる。
Secure Bootの設定はここにはない。
Security画面を開く。
ここにSecure Boot Configurationがある。クリックで設定画面に移行。「Secure boot」のチェックを外す。
Main画面、「Save Changes and Exit」。
再起動。
f9キーで起動を選択。
legacy UEFIという選択肢は、ない。
UEFIから起動したら、grub起動画面が表示される。430 G5のときと同じような画面だ。
enterキー。
画面が真っ暗なままになる。
家庭内LANを確認したらIPアドレスは振られていてpingは通る。だけどこれでは手も足も出ない。ブラックボックスみたいなものでOSが起動しているのかどうかも分からない。
(5月9日追記。真っ黒な画面のまま「sudo poweroff」を打ったらPCがシャットダウンした。OSは動いている。)
他に手は無いか。
Security画面から、TPM Embedded Securityの設定画面に。
TPM Deviceを「hidden」に。これで起動してみたら、「Tpm Ppi」という画面が表示される。
TPMが切れるけどいいか?AcceptならF1だと。F1キーを押す。
再起動。
grub起動画面表示、enterキー、画面真っ暗。同じである。
関係ないのなら、危なっかしいのでTPMの設定は戻しておく。
他にも、grub起動画面から選択項目を変えてみたり、grubコンソールからの起動なども試みたが、同じ。
CorePlus、CorePure64は起動しない。f9から選択しても結局蹴られる。
試みにFedoraのインストール用イメージをUSBメモリに書き込んで起動を試みたところ、Secure boot有効でも起動する。流石、Fedora。
ままよ、なにはともあれ、起動できるTiny Coreをインストールできるか、やってみよう、、、
やってみたらなんとかなった。
前説、ここまで。
最新のTCを、最新のPCで動かす
まず、うちのオーディオシステムに使っているTiny CoreをOSインストーラーにする。
うちのPPAPシステムは、Tiny Core Pure64-11.1で作られている。
それらはimgファイルにバックアップしてあって、USBメモリに書き込めば利用できる。これに「tc-install.tcz」をインストールしたら、OSインストーラーとして使える。
インストールに使うハードはUEFI、Legacy、両方使える環境が必要。
ProBook 430 G5を選択。
mpdサーバーのimgファイルをUSBメモリに書き込んで、ProBook 430 G5で起動。
BIOSからLegacyを選択。
sshでLAN経由でログインし操作する。
tceコマンドで「tc-install.tcz」をインストール。
もう1本、USBメモリを用意してFATでフォーマット。なぜFATかというと、grub2をインストールするから。
これを430 G5に刺して、fdisk -lでデバイスを確認。
コマンド「sudo tc-install.sh」を打ち、このUSBメモリにTCをインストールする。ネットインストールを選択したら、最新のTiny Core Pure64-14をインストールできる。
以下、経過。
tc@box:~$ sudo tc-install.sh > Core Installation. Install from [R]unning OS, from booted [C]drom, from [I]so file, or from [N]et. (r/c/i/n): n > The latest version is 14.0 Enter architecture (32)bit, (64)bit or (q)uit: 64 > Select install type for /tmp/net_source/corepure64.gz Frugal * Use for frugal hard drive installations. Note: You will be prompted for disk/partion and formatting options. HDD * Use for pendrives. Your BIOS must support USB-HDD booting. * A single FAT partition will be made. Note: Requires dosfstools extension. Warning: This is a whole drive installation! Zip * Use for pendrives. Drive will be formatted into two FAT partitions. * One small one for USB_ZIP boot compatibility, and used to hold Tiny Core. * The remaining partition will be used for backup & extensions. Note: Requires dosfstools and perl extensions. Warning: This is a whole drive installation! Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): h > Select disk for corepure64 1. sda 2. sdb On a removable device. 3. sdc On a removable device. Enter selection ( 1 - 3 ) or (q)uit: 3 > Install Extensions from this TCE/CDE Directory: > Select Formatting Option for sdc1 1. ext2 2. ext3 3. ext4 4. vfat Enter selection ( 1 - 4 ) or (q)uit: 4 > Enter space separated boot options: Example: vga=normal syslog showapps waitusb=5 vga=normal syslog showapps waitusb=5 > Last chance to exit before destroying all data on sdc1 Continue (y/..)? y > Writing zero's to beginning of /dev/sdc Partitioning /dev/sdc Formatting /dev/sdc1 mkfs.fat 3.0.26 (2014-03-07) 1+0 records in 1+0 records out 440 bytes (440B) copied, 0.005070 seconds, 84.8KB/s UUID="E84A-CD33" Setting up corepure64 image on /mnt/sdc1 Applying syslinux. Installation has completed Press Enter key to continue. tc@box:~$
さて、最新の64-14をインストールしたUSBメモリが出来たら、ここから起動。
まだUEFIからは起動できない。
Legacyを選んで起動する。
パスワードを設定。
tceからopensshをインストール、設定、起動。
filetool.sh -bで保存。
LAN経由でログインし操作できるようにするのは、本体のキーボードが日本語キーボードとして使えないので不便だからだ。たぶんUSキーボードの設定になっている。「*」を打つのに「shiftと8」、「_」を打つのに「shiftと-」を打たないといけない。
ssh経由で操作したら、使い慣れた日本語キーボードを使うことが出来る。
これにtceで「tc-install.tcz」をインストール(後々、インストーラーとしても使えるようにするため)。
更に「grub2-multi.tcz」をインストール。grub-2.06がインストールされる(因みに64-11だったらリポジトリが異なるのでgrub-2.04だ)。
これだけでは、grub2は機能しない。
ブートローダーインストールのコマンドを打つ。
下記コマンドは、tceで表示されるgrub2-multi.tczの説明の中に表示された記述例に少し手を入れたもの。
tc@box:~$ sudo grub-install --target=x86_64-efi --boot-directory=/mnt/sdb1/EFI/BOOT --efi-directory=/mnt/sdb1 --removable Installing for x86_64-efi platform. grub-install: warning: cannot open directory `/usr/local/share/locale': No such file or directory. Installation finished. No error reported. tc@box:~$
警告出て大丈夫かと思ったが、警告だけでNo errorだからいいらしい。
再起動、UEFIから起動したら、grub2操作画面が表示された。grub2が表示されるということは、前進じゃん?
しかしbootを打っても起動しない。
何かエラーの表示の後で「booting in blind mode」と表示されて文鎮化する。
一般的には「grub.cfg」ファイルは、ユーザーがみだりに編集してはいけないということになっている。
しかしTiny Core Linuxは違う。フォーラムに書き込まれた内容によると、どうやらユーザーが編集して作ることになっているようだ。流石Tiny Core。
grub.cfgがないので、作る。
まずは、TinyCorePure64から流用し、あちこちネット上の情報を集め書き換え、下記の通り。
置き場は「EFI/BOOT/grub」でいいのだろう、と。
Legacy BIOSから起動して書き込む。「filetool.sh -b」を打たなくても保存される。
vi /mnt/sdb1/EFI/BOOT/grub/grub.cfg # Load Graphical modules insmod efi_gop set gfxmode=auto set gfxpayload=keep set gfxterm_font=unicode terminal_output gfxterm linux /boot/vmlinuz64 loglevel=3 vga=791 initrd /boot/corepure64.gz
これで、UEFIから起動したgrub2操作画面から「boot」を打つとOSが起動するようになった。
insmod の設定がないと、blind mode になるらしい。
ところが、Legacyで起動し動かしていた間にインストールしたopensshが起動していない。パスワードも失くしているようだ。
どうも、UEFIから起動するかLegacy BIOSから起動するかで、挙動が変わるらしい。
/opt/.filetool.lstも見当たらない。どこに行ったのか。というか、何で無くなってるのだろう。
仕方ない。
UEFIから起動したところから、環境を1から作り直してみる。どうなるんだろう、、、
残念。
何故か解らないが、構築した環境を保存できない。
これでは使えない。どうなってるんだろうかな、、、
ここからフォーラム等々調べて、grub.cfgの記載は下記の通りになった。
loadfont unicode insmod all_video terminal_output gfxterm linux /boot/vmlinuz64 loglevel=3 waitusb=5 vga=791 initrd /boot/corepure64.gz boot
waitusb=5 が無かったら、OS起動時にUSBメモリから読み込まないものが出るらしい。あるべきものが無いままにOS起動するので、パスワードを紛失したりtceでインストールが出来なくなったりするらしい。
記載追加することで、Legacyで起動したときと同じように問題なく動くようになった。
最下行に「boot」を追加。
これで、grub2操作画面にならずにOSが起動するようになった。
sshからrebootを打てば再起動してそのままsshで再ログインできる。棚の下に押し込んだままで再起動をかけることが出来るということだ。利便性は大きく向上する。
ProBook 450 G9でも動くかな、、、動きました!ミッションクリア!
しかし今回、なんとかなったけど、UEFIから起動するしかない、最新の機械しかない環境で、TCを動かそうとしたらどうしたらいいのだろうか。何か方法はあるんだと思うけど、未確認。
May 12, 2022
いわゆる直結を試みる
LANの直結を今まで試みていなかったのは、利便性が低下することと、色々やりかたを調べるのが面倒だったからだ、、、
しかし、やり残していることなのでやることにした。
さて、、、先立っての試験運用を何を使ってやるか。
LAN端子を2つ以上持っている機械は、うちにはapu2以外にない。メインシステムで試すしかないということだ。
トラブルがあっては面倒なので、apu2のSDカードをバックアップしておく必要があるかな、、、
普段からバックアップを取ってないのかといわれたら、どれがバックアップなのか分からなくなっているのだ。何をやってるのかまったく分からない。
そんなことを考えていたら、そういえば暫く前にBack EndのイメージをGoogleにアップしてたっけ、と思い出した。
あれを落としてきて試せばいいんじゃないの。
tc64-11-1-base1z-2020-04-05-PPAP-BE.img
https://drive.google.com/file/d/1kHhCtR4WCWs3_8i32JrVgGFin-YK9KIZ/view?usp=sharing
そういうわけで、ダウンロード。
カードに焼く。
物理的に遠くに離してあったMIddle EndをBack Endの近くに戻す。
まず状況。
( '>') /) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY. (/-_--_-\) www.tinycorelinux.net tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:40 inet addr:192.168.1.33 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:42922414 errors:0 dropped:2894 overruns:0 frame:0 TX packets:43024988 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:62288871488 (58.0 GiB) TX bytes:62314222899 (58.0 GiB) Memory:fe600000-fe61ffff eth1 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:41 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe700000-fe71ffff eth2 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:42 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe800000-fe81ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tc@box:~$
現在、IP固定の設定はしていない。DHCPサーバーからeth0にアドレスを取得している。
今回はeth1のIPを固定してみる。
ところで、どれが0でどれが2だったかいつも分からなくなるので写真を貼っておく。
シリアルケーブル端子に近い方が0である。

IP固定は昔、piCoreを使っていた頃はよく設定していた。
だけど、最近はしていないのですっかり忘れている。というか、Tiny CoreでのIP固定はしたことがない。
複数のイーサネットポートを扱うのも初めてだ。
どうなんだろ、piCoreみたく/optにeth1.shを作って置いといたらいいのかな、、、
Middle End の電源を落として、ケースの蓋を開ける。
SDカードを入れ替えて、起動する。
以下、sshでログインしてからの経過。
vi /opt/eth1.sh #!/bin/sh pkill udhcpc ifconfig eth1 192.168.10.2 netmask 255.255.255.0 broadcast 192.168.10.255 up route add default gw 192.168.10.1 # echo nameserver 192.168.10.1 > /etc/resolv.conf chmod +x /opt/eth1.sh sudo vi /opt/bootsync.sh #!/bin/sh # put other system startup commands here, the boot process will wait until they complete. # Use bootlocal.sh for system startup commands that can run in the background # and therefore not slow down the boot process. /usr/bin/sethostname box /opt/bootlocal.sh & /opt/eth1.sh & filetool.sh -b sudo reboot
viでeth1の設定ファイル「eth1.sh」を作成。IPを192.168.10.2で固定する。nameserverの記述は要らないのではないかと思ったのでコメント化した。
chmodで実行権限を与える。
bootsync.shファイルに「/opt/eth1.sh &」を書き加える。
filetool.sh -bで保存し、リブート。
リブート後、sshでログイン。
tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:40 inet addr:192.168.1.33 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:562 errors:0 dropped:28 overruns:0 frame:0 TX packets:246 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:52631 (51.3 KiB) TX bytes:35785 (34.9 KiB) Memory:fe600000-fe61ffff eth1 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:41 inet addr:192.168.10.2 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe700000-fe71ffff eth2 Link encap:Ethernet HWaddr 00:0D:B9:47:8A:42 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe800000-fe81ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tc@box:~$
eth1に「192.168.10.2」が振られている。
次はこれをMiddle Endにしていく。
過去エントリーを参考。
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20210824a.htm
PPAP Back-Endをタンデム化
sudo vi /opt/bootlocal.sh /usr/local/bin/ncat -kl 4400 -e "/usr/local/bin/ncat 192.168.10.10 4400" filetool.sh -b sudo reboot
bootlocal.shファイルに上記のようにコマンド記載。Back EndのIPを「192.168.10.10」とする。
これで動くのかな、、、
合わせて、Back Endのほうも設定し直していくということになる。
Back Endのほうは、イメージを焼くのは飛ばしてsshにログインして設定した。
Middle Endでの試行でIP固定の設定ぐらいまでは出来そうな目星は付いたので。
(6月8日、下記の書き間違いを修正した)
vi /opt/eth1.sh #!/bin/sh pkill udhcpc ifconfig eth1 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 up route add default gw 192.168.10.1 # echo nameserver 192.168.10.1 > /etc/resolv.conf chmod +x /opt/eth1.sh sudo vi /opt/bootsync.sh #!/bin/sh # put other system startup commands here, the boot process will wait until they complete. # Use bootlocal.sh for system startup commands that can run in the background # and therefore not slow down the boot process. /usr/bin/sethostname box /opt/bootlocal.sh & /opt/eth1.sh & filetool.sh -b sudo reboot
Middle Endと同じ手法で、eth1の設定を行っていく。
filetool.sh -bで保存し、リブート。
リブート後、sshでログイン。
tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0D:B9:50:86:58 inet addr:192.168.1.89 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:44 errors:0 dropped:0 overruns:0 frame:0 TX packets:35 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6283 (6.1 KiB) TX bytes:5919 (5.7 KiB) Memory:fe600000-fe61ffff eth1 Link encap:Ethernet HWaddr 00:0D:B9:50:86:59 inet addr:192.168.10.10 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe700000-fe71ffff eth2 Link encap:Ethernet HWaddr 00:0D:B9:50:86:5A UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe800000-fe81ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tc@box:~$
eth1に「192.168.10.10」が振られている。
さて、直結で機能するかどうか。
Back Endのeth0からLANケーブルを抜く。
MiddleとBackのeth1端子をLANケーブルでつなぎ、Midlle EndからsshでBack Endにログインしてみる。
tc@box:~$ ssh tc@192.168.10.10 The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established. ECDSA key fingerprint is SHA256:eICMkwr/u6JIomP1WNI9YocJTnDxmI8M7ICHoj/oeEY. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts. tc@192.168.10.10's password: ( '>') /) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY. (/-_--_-\) www.tinycorelinux.net tc@box:~$
いけました、、、
次、ncmpcppからFrontのmpdに音楽再生の指示を出してみる、、、音は出ました!
はあ、、やってみたら簡単なものである。
もとのつなぎ方と直結、両者の違いを図にしてみた。

音質はどうか。
例えばベールが1枚はがれたようなとか、、薄皮1枚のベール?、、
前とあんまり変わらないような。
正直、違いが分からない、、、どうなんだろう。
まあ、耳が悪いということなのかもしれない、、、
まあ、でも、せっかく設定したのだし、暫くはこれで使っていこうと思う。
暫く使った後で戻したら、こんなに違うんだっけ!ということもあるかもしれないし。
早々だけど追記。
Back Endのeth0とeth2は止めた方がいいという話があって、今回は合わせて止めることにした。
参考にさせていただいたのはこちら。
不要なネットワークデバイスを黙らせる PCオーディオ実験室
http://flac.aki.gs/bony/?p=3681
/opt/bootlocal.shに下記追記した。
pkill udhcpc sudo ifconfig eth0 down pkill udhcpc sudo ifconfig eth2 down
これでeth1以外は寝付く。
更に早々に追記。
音は良くなっていると思う。
簡単に切り替えて比べるということは出来ないので記憶が頼りだけど。
音色の性格が、明瞭になったというか。音場の中で重層化されている様相が見えやすくなったというか、なにしろよい方向。前には戻れないと思う。
Mar 21, 2021
DaphileとTiny CoreでDeezer hifiを768kHzにアップサンプリングする(ついでにPPAPで飛ばす - たびたび追記あり)
前回に引き続き、UPnPでデータを飛ばしてレンダラーに組み込んだlibsamplerateでアップサンプリングするプラン。
DebianやFedoraなどではリポジトリから読み込みが出来る様なんだけど(訂正。今のFedoraではソースからのインストールが必要。リポジトリからのインストールが出来たのはv30、31の頃のようだ)、今回は、Tiny Core Pure 64での試み。ソースからのインストールが必要になる。
これが本丸だ。
相当梃子摺るかと思ったが、案外順調にできてしまった。順調と言ってもPulseaudioと比べたら、だけど。
以下、経過を記載しておく。
今回、打ち込んだコマンド等、過程の詳細な記載は省略した。要点だけ書いている。
いつもはこまごまと書くんだけど、長くなりすぎるので。
Daphileの操作画面キャプチャ画像。
右下にTiny Coreのmpdがレンダラーに選択されているのが見える。MPD-90というのはipアドレスだ。
Daphileサーバーはcompaq 6730bに戻している。有線LANに繋がらない2570pは返品、返金となった。

準備
最初からTiny Core Pure 64を組んでいくのは面倒なので、以前にmpdを組み込み、Pulseaudioを組み込みして、昨年10月にバックアップしたイメージを使う。
ストリーミング音源をpulseaudioで転送しアップサンプリング再生する(10月15日、追記)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20201011a.htm
ハードはapu2c4。
以前はこれで768kHzへのアップサンプリング再生をしていたけど、最近は使っていなかった。
apu2c4で768kHzへのアップサンプリングに取り組む
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20181208a.htm
SDカードにイメージを書き込み、apu2c4に刺して起動。 sshでログイン。
まず、upmpdcliの説明サイトから引用。
Upmpdcli and associated libraries downloads
https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html#UPMPDCLI-PACKAGESFor building from source, you will need a C++ compiler with full C++11 support, and the development packages for the supporting libraries: libcurl, libmicrohttpd, libmpdclient, and libexpat.
Also the Python modules for streaming service support use the python-requests package, so you may need to install it (it is only needed at run time).
If you are using the source from the git repository, you will also need the autoconf, automake, libtool trio. Use the autogen.sh script to set things up.
この説明サイトは膨大で目が回りそうだけど、今回は要所だけ読んでなんとかした。
ライブラリとして、「libcurl, libmicrohttpd, libmpdclient, and libexpat」が必要と書いている。あと、python-requests、「autoconf, automake, libtool trio(トリオなんだ)」が要るような。
Tiny Coreの状況を確認。
curl expat2 expat2-devは既にインストールされている。
tceで、以下インストール。
# tce curl-dev.tcz libmicrohttpd.tcz libmicrohttpd-dev.tcz
libmpdclientはリポジトリにtczがないので、ソースからインストール。
最新のはインストールにmeson-ninjaを使う。
敢えて面倒な事はしたくなかったので、以前のバージョンを選択。
wget https://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.11.tar.xz # tce doxygen automake
doxygenがないよ、と指摘される。そうだったっけ?
一応、確認したらautomakeもない。既にインストールされてるとばかり思っていた、、、
更に、作業の前には時計を合わせておかないと、エラーになるので合わせる。
sudo ntpclient -s -c 1 -h ntp.nict.jp
./configure、makeの過程で以下警告あり。今回は気にせず進む。
/home/tc/libmpdclient-2.11/include/mpd/connection.h:98: warning: explicit link request to 'MPD_HOST' could not be resolved /home/tc/libmpdclient-2.11/include/mpd/connection.h:98: warning: explicit link request to 'MPD_PORT' could not be resolved /home/tc/libmpdclient-2.11/include/mpd/connection.h:99: warning: explicit link request to 'MPD_TIMEOUT' could not be resolved sudo make DESTDIR=../libmpdclient install libtool: error: '../libmpdclient/usr/local/lib' must be an absolute directory name sudo make DESTDIR=/home/tc/libmpdclient install
make installから、tczファイルを作って、/mnt/*/tce/optionalに保存する。
ここらへんで、python-requestsをインストールしとく(インストールし忘れていた)。
# tce python3.6-requests.tcz
upmpdcliをインストール
下記のソースコード配布ページからソースをダウンロード。
Upmpdcli and associated libraries downloads
https://www.lesbonscomptes.com/upmpdcli/pages/downloads.htmlCurrent version (tar files):
libnpupnp-4.1.1.tar.gz
libupnpp-0.21.0.tar.gz
upmpdcli-1.5.11.tar.gz
sc2mpd-1.1.8.tar.gz
順次、インストールしていく。
sc2mpdはOpenHome関連で、うちの環境とは関係ないのでインストールしていない(後でインストールしとけば良かったかなと思ったけど、動く環境作る方が優先なので)。
これらのソース、あちこちファイル読んでもインストールの手法が見つからない。
./configure、make、make--install、tcz保存、通常の流れでインストールできる。
wget https://www.lesbonscomptes.com/upmpdcli/downloads/libnpupnp-4.1.1.tar.gz ./configure make checking whether build environment is sane... configure: error: newly created file is older than distributed files!
時計を合わせるのを忘れたらこんな警告が出る。
sudo ntpclient -s -c 1 -h ntp.nict.jp
順次、インストール。
wget https://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.21.0.tar.gz wget https://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.5.11.tar.gz
途中で足りないライブラリがあると指摘され下記インストールしている。
# tce jsoncpp-dev.tcz
mpdを再インストール
さて、これで動くかというと動かない。下記、mpdの状況を確認。
tc@box:~$ mpd -V Music Player Daemon 0.20.20 Database plugins: simple pi@volumio:~$ mpd -V Music Player Daemon 0.19.1 Database plugins: simple proxy upnp Storage plugins: local smbclient nfs Neighbor plugins: smbclient upnp
Tiny CoreとVolumio 1.55のmpdの状況を比較。
使えるプラグインの表示が違う。Tiny Coreのほうはupnpの表示がない。
再インストールだ。
sudo ntpclient -s -c 1 -h ntp.nict.jp wget https://www.musicpd.org/download/mpd/0.20/mpd-0.20.20.tar.xz ./configure --enable-pipe-output
mpdインストールのいつもの工程で再インストールしたが、それだけでは動かなかった。
./configureのオプション指定を変える。
./configure --enable-pipe-output --enable-upnp configure: error: UPnP client support: libupnp not found # tce libupnp.tcz libupnp-dev.tcz
なんと、、ここでlibupnpがないと指摘された。
実は、tczリポジトリにはupnp関係のtczは沢山あって、でも何が要るやら分からなかったのでインストールしてなかったのだ。
tceでインストール。
その後は順調に進んで、インストールできた。
tc@box:~$ mpd -V Music Player Daemon 0.20.20 Database plugins: simple proxy upnp Storage plugins: local curl Neighbor plugins: upnp
インストール終了時点 概要
インストール終了時点でのonboot.lstは下記の通り。
sudo vi /mnt/*1/tce/onboot.lst openssh.tcz i2c-5.4.3-tinycore64.tcz alsa-modules-5.4.3-tinycore64.tcz alsa.tcz gcc.tcz boost-1.65-dev.tcz pkg-config.tcz bison.tcz autoconf.tcz libtool-dev.tcz bc.tcz cmake.tcz compiletc.tcz squashfs-tools.tcz ntpclient.tcz libsamplerate.tcz libsamplerate-dev.tcz lame.tcz lame-dev.tcz libmad.tcz libmad-dev.tcz nfs-utils.tcz nmap.tcz libcap-dev.tcz alsa-plugins-dev.tcz alsa-config.tcz alsa-dev.tcz gudev-lib.tcz dbus-dev.tcz pulseaudio-13.0.tcz libmicrohttpd.tcz libmicrohttpd-dev.tcz curl-dev.tcz doxygen.tcz automake.tcz libmpdclient-2.11.tcz python3.6-requests.tcz libnpupnp-4.1.1.tcz libupnpp-0.21.0.tcz jsoncpp-dev.tcz upmpdcli-1.5.11.tcz libupnp.tcz libupnp-dev.tcz mpd-0.20.20.tcz
upmpdcliを動かす
mpdを起動(うちではssh経由で起動するのがデフォルト)。
DaphileにUpNPレンダラーとして認識されたら、ウェブブラウザ操作画面のプレーヤー表示部に出てくるはずなんだけど、出て来ない。
upmpdcliがインストールしただけでは動いてないので、起動しないといけない。
Upmpdcli
https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.htmlIn most situations, upmpdcli will be run as follows:
upmpdcli -D -c /etc/upmpdcli.confThe -D option tells upmpdcli to fork and run in background. The -c option specifies a configuration file. See the upmpdcli(1) manual page for more information about the command line.
マニュアル、膨大なんだけど。
わけが分からないと言いながらあれこれ、、、
tc@box:~$ upmpdcli --help upmpdcli: usage: -c configfile configuration file to use -h host specify host MPD is running on -p port specify MPD port -d logfilename debug messages to -l loglevel log level (0-6) -D run as a daemon -f friendlyname define device displayed name -q 0|1 if set, we own the mpd queue, else avoid clearing it whenever we feel like it -i iface specify network interface name to be used for UPnP -P upport specify port number to be used for UPnP -O 0|1 decide if we run and export the OpenHome services -v print version info -m <0|1|2|3|4> media server mode (default, multidev|only renderer|only media|embedded|multidev) Upmpdcli 1.5.11 libupnpp 0.21.0 tc@box:~$
試行錯誤するうちに、こんなんが表示された(実は --help 以外でも、例えば --x とかでも表示される)。
ここから起動コマンドを考える。
upmpdcli -D -m 1 -f MPD-90 -d /home/tc/.upmpdcli.log -l 2 -O 0
sshから上記コマンドでupmpdcliを起動。
出来ました!
Daphileにupnpレンダラーとして認識された。これで、音が出る筈。
本当は、upmpdcli.confで設定して運用するほうがスマートなんだけど、当面はこれで動かすことにする。
upmpdcli.confの原本は下記に保存されている。コピーして使えばいいのだろうか。
まだ使い方が分からない。
/usr/local/share/upmpdcli/upmpdcli.conf-dist
PPAPで音を出す
実はこのTiny Core Pure 64、もともとのイメージファイルがPPAP Frontとして機能するように作られている。
768kHzにアップサンプリングして、PPAP Back-Endに送る設定がこの時点で既に出来ている。
USB DACを繋いでmpd.conf再設定とか面倒だったので、いきなりそれで使ってみることにした。
PPAP環境は常日頃から使っていて出来ているので、Daphileから音を出す操作をしたら、そのままPPAPシステムに繋がる筈ということだ。
こんなイメージ。

音は出ました。
Frontの状況。
CPU0: 45.8% usr 3.5% sys 0.0% nic 50.0% idle 0.0% io 0.0% irq 0.5% sirq CPU1: 10.7% usr 3.3% sys 0.0% nic 85.9% idle 0.0% io 0.0% irq 0.0% sirq CPU2: 9.9% usr 2.5% sys 0.0% nic 87.5% idle 0.0% io 0.0% irq 0.0% sirq CPU3: 43.7% usr 0.3% sys 0.0% nic 55.2% idle 0.0% io 0.0% irq 0.5% sirq Load average: 1.09 0.97 0.56 3/386 3852 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 6776 1 tc S 507m 12.8 0 26.5 mpd 2841 6776 tc S 16480 0.4 2 1.4 /usr/local/bin/ncat 192.168.1.89 4400 3637 6742 tc R 4016 0.1 1 0.2 top 15901 1 tc S 1743m 44.2 3 0.1 upmpdcli -D -m 3 -f MPD-90 -d /home/tc/.upmpdcli.log -l 2 -O 0
Back-Endの状況。
tc@box:~$ cat /proc/asound/card*/pcm0p/sub0/hw_params access: MMAP_INTERLEAVED format: S32_LE subformat: STD channels: 2 rate: 768000 (768000/1) period_size: 4096 buffer_size: 32768 tc@box:~$ Mem: 103904K used, 3925992K free, 18384K shrd, 5676K buff, 34188K cached CPU: 0.2% usr 2.1% sys 0.0% nic 97.1% idle 0.0% io 0.0% irq 0.5% sirq Load average: 0.06 0.04 0.00 3/113 17254 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 17204 1213 root S 15484 0.3 3 1.0 /usr/local/bin/ncat -kl 4400 -e /usr/local/bin/aplay -D hw:0,0 -M --period-size=4096 --buffer-size=32768 -t raw -f S32_LE -r768000 -c2 17205 17204 root S 4608 0.1 1 0.5 /usr/local/bin/aplay -D hw:0,0 -M --period-size=4096 --buffer-size=32768 -t raw -f S32_LE -r768000 -c2 30 2 root IW 0 0.0 1 0.1 [kworker/1:1-eve] 17254 17226 tc R 4016 0.1 2 0.0 top 1213 1094 root S 15484 0.3 1 0.0 /usr/local/bin/ncat -kl 4400 -e /usr/local/bin/aplay -D hw:0,0 -M --period-size=4096 --buffer-size=32768 -t raw -f S32_LE -r768000 -c2 17222 1211 root S 5872 0.1 0 0.0 sshd: tc [priv]
音の方は、NASの音に比べてDaphileからのほうが固いような気がする。NASが絹のような感触だとしたら、Daphileからのほうはガラスのような感触というか。
そもそもアップサンプリングサーバーがHP Elitebookとapu2c4で違う機械だとか状況が違うので、音も違うのが当たり前だと思う。
もう少しだけソフトだったらいいかなと思うけど、768kHzじゃないと出ない音が出ている。
運用しながら調整していきたい。
24日、追記。
apu2c4で768kHzは、限界を超えるということを忘れていた。
以前は705.6kHzで主に運用していた。
今回、しばらくして音が途切れ始めたので705.6kHzで運用開始し始めている。
Raspberry Pi 3B+をBack-Endにしている。
何とかなる筈だけど、どうだろうか。
更に追記、3B+、700kHz台のBack-Endには力不足だ。
さあ、どうすっかね、、、
27日、追記。
現状、PPAPは難しいのでapu2c4から384kHzでUSB DACに出力している。
悪くはないけど、物足りない。若干、pulseaudioからの方が良く聴こえるのはハードの差によるものだろうか。
31日、追記。
apu2c4とras pi3B+では無理なのでハード変更。
現在はHP Elitebook 820G2とapu2c4の組み合わせにしている。
820G2はスペック自体は問題ないんだけど、なんだかbiosが危なっかしいんだよね、簡単に入れなくて操作を繰り返すことがある。中古だしなあ、、、あんまり困るようなら買い替えるかも。
音の方は、これですっかり安定した。
CD品質相当のストリーミング音源を、768kHzにアップサンプリング、PPAP再生出来るようになった。
NAS音源と比較したら若干軽い音色だけど(これはハード的な違いによるものかな?)、同等の音が出ている。
Mar 20, 2020
700kHz台でPPAP(22日、4月7日追記)
piCore7でppap (piped pcm audio play)を試みる
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180301a.htm
上記のエントリーをあげたのがほぼ2年前。
当時のハードはraspberry pi2。aplayの仕様で192kHzまでが限界だった。
その後、PPAPはやめて、384kHz、更にapu2による700kHz台でのアップサンプリング再生に移行していた。
新しいバージョンのalsaを使える環境なら700kHz台でのPPAPは可能だろうと思っていたんだけど、手頃な環境がなかなか無かったので、機が熟すのを待っていた。
最近、tiny core pure64 11.0で、aplay: version 1.2.1、nmap.tczも用意されたので、やってみた。
簡単にPPAP back-endとして機能した。
でも700kHz台になると、安定して鳴らすには設定に気を使う感じだ。
まず、普段からmpd + libsamplerateで700kHzへのアップサンプリング再生に使っていたapu2c4のtiny core pure64 7.2の設定。というか、これは以前にnmap、ncatをインストールしてそのままなんだけど、そのときは動くことを確認しただけで、その後は使っていなかった。mpdも、そのときにpipe出力を使える形でインストールしていた。
今回、いよいよ本格的に使うことになる。
mpd.confに「pipe」出力の設定を書き込み、alsaの設定はコメントアウト。
これでmpdを再起動したら、PPAP Frontとして機能する。
OSのバージョンが古くて7.2、mpdは0.19.19のままなんだけど、それでも十分使える。というか、それ以外のバージョンは新しいのも含めて試していない。
audio_output { type "pipe" name "ppappipe" always_on "yes" command "/usr/local/bin/ncat 192.168.1.89 4444" } # audio_output_format "768000:32:2" audio_output_format "705600:32:2" audio_buffer_size "65536" buffer_before_play "50%"
多少試した結果、現状は上記の設定。
「command」の行には、PPAP back-endのipアドレスが書いてある。
最初は、apu1台でNASマウントアップサンプリング再生するよりもalsaが働かない分、負担が少ないのかと思った。聴きやすいスムーズな音が出てきたので、そんなふうに思ったのだ。しかし、再生時間が長くなってくると音切れ、ノイズが生じ始めた。こうなるとスムーズじゃない感じ。
結局、以前の設定、1台のapu2で音切れなく700kHz台の再生ができていたときと同じに戻して様子を見ている。これが安定しているのかなあ、、、
次に、back-end。
まず、tiny core pure64 11.0をSDカードに書き込む。
基本的に以前のエントリー(apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備) http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027a.htm)に書いた通りにやればいいんだけど、CorePlus-current.isoのバージョンによっては、opensshをインストールしただけじゃsshを起動できないんだね。sshd_config.origをコピー複製してsshd_configを作る操作が必要。
SDカードにOSの書き込みができたらapuに差し込む。うちではapu2d4を使っている。
起動したらsshクライアントpcからログイン。
「tce」で、alsa-tcz、alsa-modules-5.4.3-tinycore64.tcz、nmap.tczをインストール。
usbケーブルで、テスト用に使っているSMSL m100をつなぐと、すんなり認識する。
4月7日、追記。
tiny core pure64が早々に11.1にバージョンアップされて、そのせいかどうか分からないけど、上記のalsaインストールだけでは使えなくなった。
「alsa-config.tcz」もインストールしておかないと、libpcapが何とかというエラーが出て使えない(記録し忘れた)。
インストールしていたら動くようだ。
**** List of PLAYBACK Hardware Devices **** card 0: v10 [SMSL M100 v1.0], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 tc@box:~$
back-end化できるかどうかテストするために下記のコマンドを打った後、Frontのmpdで音楽を鳴らしてみる。
tc@box:~$ /usr/local/bin/ncat -kl 4444 -e "/usr/local/bin/aplay -D plughw:0,0 -M --period-size=4096 --buffer-size=32768 -t raw -f S32_LE -r768000 -c2" Playing raw data 'stdin' : Signed 32 bit Little Endian, Rate 768000 Hz, Stereo
768kHz/32bitで再生している。
実際にはいきなり768kHzではなく、192kHzから試して、段々サンプリング周波数などを上げていった。
period-size=1024だと、聴感上ははっきりしないけど「underrun!!! (at least 895.331 ms long)」といったようなエラーが出ていた。
2048、4096との設定だと、見られなくなった、かな。
さて、sshクライアントpcを、起動しっぱなしにして放置しておくわけにもいかないだろう。
sshでログインしているターミナルのウインドウを閉じたら、PPAP再生が止まってしまう。ターミナルからコマンドを打っているので、ターミナルを閉じたらコマンドも閉じる、ということかな。
これでは不便なので、apu2の電源投入、OS起動時に自動的にコマンドを読み込むようにする。
「bootlocal.sh」に、「/usr/local/bin/ncat -kl 4444 -e (以下略)」のコマンドを追記。filetool.sh -bで設定を保存。
これでOSを再起動したら、back-endとして機能する。
sudo vi /opt/bootlocal.sh /usr/local/bin/ncat -kl 4444 -e "/usr/local/bin/aplay -D plughw:0,0 -M --period-size=2048 --buffer-size=32768 -t raw -f S32_LE -r705600 -c2" filetool.sh -b sudo reboot
あれこれ試して、今はこんな感じの設定。
どうも768kHzだと音切れがある。apu2を1台で鳴らしていた時よりも音切れしやすい?
はっきりしないけど、ハード的なボトルネックがあるような気がするんだけど、気がするだけで特定できていない。
8月16日、追記。
PPAP back-Endの設定を考え直す(hwとplughw)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20200815a.htm
昨日のエントリーで、上記のコマンドの記述「-D plughw:0,0」が、フォーマットを正確に記載してあれば「-D hw:0,0」でも問題なく動くという事について書いている。音質やデータ伝送上の問題はなかったのではないかと思うのだけど、plughwとhwの差異というのはエラーの有無とかの問題を生じる可能性があると思うので、追記しておく。
22日、追記。ハードを変えたらどうなのかやってみた。
HP ProBook 650 G1を、PPAP Frontに使ってみる。
メモリは8GB DDR3L-1600。apu2c4よりも速く容量は2倍だ。
いつまでも日常使用のメインPCがcompaq 6730bなのはどうなのよと思って中古で買ったまま塩漬けになっていた機械なんだけど、こういう顛末で役に立つことに。
tiny core 64 10.1を焼いたSDカードをusbカードリーダーに刺してusbポートに繋ぐと起動できる。本当はbiosをいじれば直接SDカードからの起動も出来そうなんだけど、素人には手を出しにくい。
mpd 0.20.20をインストールした。
実はmpd 0.21も試したけど「broken pipe」とエラー表示されて使えなかった。というか、mesonでpipeを使えるようにインストールってどうやるのかね?
FrontがProBook 650 G1だと、768kHzでも難無く鳴らせる感じ。
やはり相応のメモリのスペックが必要ということだろう。
しかも、apu2c4より音色に余裕がある気がする。
こうなってくると、PCトランスポートシステムをどう組むかを考えないといけない。
音質は、、、まだ微妙。
まだ、安定した再生ができているか十分に確認できているわけでもない。
しかし、そこを差し引いても音色の色彩、表情は以前より向上している。実在感、安定感も増している。
96kHzや192kHzで聴いていた頃は、PPAP方式で大きな音質向上があった。そのときと比べたら大きな向上とは言えない。明らかに激変する!という感じじゃないのだ。
しかし、なんというか、戻れないのではないかという感触はある。
微細な表情はPPAPのほうが確かに上で、慣れてしまったら、意外に大きな差異に感じるのではないかと思える。
しかし、音質の向上というのは、どこまで行くのだろうか。限界はないのだろうか。
つい先日アップしたばかりだけど、現状のシステム構成図をアップしておく

Oct 29, 2019
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その4:動作確認)
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027a.htm
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その2:0.20 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027b.htm
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その3:0.21 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027c.htm
今回、Tiny CorePure64-10.1にmpd 0.20、0.21をインストールしたのでエントリーにした。
エントリーを分割して、これが最後、動かしてみてどうかという話を少しだけ。
テスト用に、700kHz台を受けることが出来るDACということでSMSL M100を入手して動作確認に使った。
tc@box:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: v10 [SMSL M100 v1.0], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 tc@box:~$ cat /proc/asound/card*/pcm0p/sub0/hw_params access: RW_INTERLEAVED format: S32_LE subformat: STD channels: 2 rate: 705600 (705600/1) period_size: 32768 buffer_size: 131072 tc@box:~$
まず気付いたのは、768kHzにアップサンプリングしたら明らかに音が途切れるということ。
mpdのログを確認したら、下記の記載が多発。
Dec 07 05:21 : player: Decoder is too slow; playing silence to avoid xrun
デコードが追いついていないと。
705.6kHzだと今のところ問題ない。といっても、まだそんなに長く聴き込んだわけではない。
以前、現在のメインシステムであるTiny CorePure64-7.2、mpd 0.19.19で鳴らしていたときに、768kHzはごくごく稀にクリックノイズが聞こえるような気がする、と思ったことがあったけど、もしかしたら実際にエラーがあったのかもしれない。うっかり者で、そのときのログは確認していない。
新しいシステムの方が、原因はmpdなのかtiny coreなのか分からないが(v0.20、v0.21両方なので、tiny coreのほうだと思うけど)、データが大量になった時の処理が苦手なのかもしれない。これは今後どうなのかを確認しながら使っていく必要があるかな。tiny coreの処理能力については、インストールした環境に足りないものがあるかどうか調べる必要がある。
音質の比較はまだ出来ていない。
さらにリピーターハブの評価もしないといけないのだけど、暇もない。
SMSL M100の音は1万円しないDACだと思うと大したものだと思うが、さすがにadi2-DACには及ばない。
評価は、adi2-DACじゃないと出来ないと思うけど、新しいシステムをつないでみることすら、まだ出来ていない。今後、余裕ができたらということになる。
Oct 27, 2019
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その3:0.21 インストール)
ここでは「mpd 0.21.16」のインストール手順を記載する。つまり、現時点での最新バージョンだ。
これは下記エントリーから続く。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027a.htm
準備が出来たところで、mpdインストールを開始。
v0.21.16インストールの備忘録。
コマンドを時系列で羅列。
sudo ntpclient -s -c 1 -h ntp.nict.jp wget https://www.musicpd.org/download/mpd/0.21/mpd-0.21.16.tar.xz xz -dv mpd-0.21* tar -xf mpd-0.21* cd mpd-0.21* mkdir ../mpd
まず、ntpクライアントを動かして、時刻を現在に合わせる。
これをしていないと、コンパイル作業自体が途中で停止する。
続いて、mpdのソースをダウンロードして展開。
ディレクトリを移動し、ホームにmpdディレクトリを作って、そこにインストールする。
ここはv0.20以前と同じ。
meson . ../mpd --buildtype=debugoptimized -Db_ndebug=true ninja -C ../mpd sudo ninja -C ../mpd install Installing mpd to /usr/local/bin Installing /home/tc/mpd-0.21.16/mpd.svg to /usr/local/share/icons/hicolor/scalable/apps Installing /home/tc/mpd-0.21.16/AUTHORS to /usr/local/share/doc/mpd Installing /home/tc/mpd-0.21.16/COPYING to /usr/local/share/doc/mpd Installing /home/tc/mpd-0.21.16/NEWS to /usr/local/share/doc/mpd Installing /home/tc/mpd-0.21.16/README.md to /usr/local/share/doc/mpd
v0.20以前は、./configure、makeでインストールしていた。
v0.21は、meson、ninjaを使う。
こんなん初めて使う。
上記のコマンドは、ダウンロードしたmpdソースの「user.rst」ファイルに記載してある、そのまんまである。
mesonは、必要な環境さえできていれば順調に進む。
ninjaも、順調に進むかに見える。
何処に何をインストールしてます、と最後に表示される。
v0.20以前のmakeだったら、tcホームディレクトリに作った「mpd」ディレクトリにmpdがインストールされて、その「mpd」ディレクトリをtczファイルに加工してoptionalに保存したらよかった。つまり、tczファイルに加工できる形に、makeがインストールしてくれていたのだ。
しかし、ninjaはそうはいかないことが分かった。ninjaの場合、上記に表示されたインストール場所にファイルが、一時的に、インストールされるだけ。「mpd」ディレクトリはインストールに使われる場所だけど、これをtczファイルに加工してoptionalディレクトリに移しても、今までどおりには動いてくれない。というか、mpdが起動しない。起動しない以前に「そんなコマンドはない」と蹴られる。
つまり、従来どおりのやり方ではインストールしたはずのものが消えてしまう、ということだ。
そこで、下記のような操作を行う。
cd mkdir mpdx mkdir mpdx/usr mkdir mpdx/usr/local mkdir mpdx/usr/local/bin cp /usr/local/bin/mpd mpdx/usr/local/bin
ninjaによるインストール終了後、cdでtcホームディレクトリに移動。
ここで「mpdx」ディレクトリを作る。
つまり、これをtczファイルを作る元のディレクトリにするのだ。
何処に何がインストールされたのかは、ninjaが最後に表示している。
/usr/local/bin にmpd、/usr/local/share以下に書類とアイコンらしきもの。
ということで、「mpdx」ディレクトリ内に/usr以下の階層構造を構築、実際の構造を「mpdx」内にコピーする。
/usr/local/share以下にインストールされたものは、mpdの動作には関係ない資料で、捨ててしまっても問題ない。
だから、/usr/local/bin/mpd だけ、~/mpdx/usr/local/binにコピーする。
mksquashfs mpdx mpd-0.21.16.tcz md5sum mpd-0.21.16.tcz > mpd-0.21.16.tcz.md5.txt sudo mv *tcz* /mnt/*1/tce/optional sudo vi /mnt/*1/tce/onboot.lst (write : mpd-0.21.16.tcz)
mksquashfsコマンドで、mpdxディレクトリをtczファイルに加工する。tczファイルからmd5.txtファイルを作る。
これらを、optionalディレクトリに移動。
更に、onboot.lstを開き、一番下に「mpd-0.21.16.tcz」と記載。
これで、インストール完了、、、、
この手法は、v0.20以前のインストールでmakeが作る「mpd」ディレクトリの構造を確認して、思い付いた。うまくいくかどうかは分からなかったけど、やってみたら上手くいった。
早々、追記。こうしたやり方についてどこかに書いてないかというので確認した。
http://tinycorelinux.net/book.html
Tiny Coreのサイトから、解説pdfがダウンロードできる。
このファイルの85ページにtczの構造について記述がある。
間違ったやり方ではなかったということで安心した。予め読んでおけということなんだろうけど、英文でなかなか読めない。
vi .mpdconf music_directory "/mnt/music" playlist_directory "~/.mpd/playlists" db_file "~/.mpd/database" log_file "~/.mpd/log" pid_file "~/.mpd/pid" state_file "~/.mpd/state" sticker_file "~/.mpd/sticker.sql" auto_update "no" #auto_update_depth "3" mixer_type "software" # optional audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" # optional # mixer_type "software" } filesystem_charset "UTF-8" resampler { plugin "libsamplerate" type "Fastest Sinc Interpolator" } audio_output_format "705600:32:2" mkdir .mpd mkdir .mpd/playlists sudo rm -rf mpd* filetool.sh -b sudo reboot
あとは、mpdの設定。内容は各自必要な感じで。
「samplerate_converter」の項目はなくなって、代わりに「resampler」の設定が追加になっている。これは使い方に注意が必要。
https://www.musicpd.org/doc/html/plugins.html#resampler-plugins
こちらmpdのサイトに設定法が書いてあるが、なんだか分かりにくい。
libsamplerateの場合、「type」で"Fastest Sinc Interpolator"等の設定をするようになっている。
設定ファイルに合わせて、必要なディレクトリを作成。
インストールに使って、いらなくなったファイルをまとめて削除。
設定保存のコマンド「filetool.sh -b」を打って、OSをリブート。
以上でmpd 0.21.16インストール終了。
meson、ninjaにはだいぶてこずったけど、なんとかなった。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その2:0.20 インストール)
ここでは「mpd 0.20.20」のインストール手順を記載する。
下記エントリーからつづき。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027a.htm
準備が出来たところで、mpdインストールを開始。
v0.20.20インストールの備忘録。
コマンドを時系列で羅列。
sudo ntpclient -s -c 1 -h ntp.nict.jp wget https://www.musicpd.org/download/mpd/0.20/mpd-0.20.20.tar.xz xz -dv mpd-0.20* tar -xf mpd-0.20* cd mpd-0.20* ./configure --enable-pipe-output make mkdir ../mpd sudo make DESTDIR=../mpd install
まず、ntpクライアントを動かして、時刻を現在に合わせる。
これをしていないと、コンパイル作業自体が途中で停止する。
続いて、mpdのソースをダウンロードして展開。
ディレクトリを移動し、ホームにmpdディレクトリを作って、そこにインストールする。
cd mksquashfs mpd mpd-0.20.20.tcz md5sum mpd-0.20.20.tcz > mpd-0.20.20.tcz.md5.txt sudo mv *tcz* /mnt/*1/tce/optional sudo vi /mnt/*1/tce/onboot.lst (mpd-0.20.20.tcz)
cdコマンドでtcホームディレクトリに戻る。
mpdがインストールされているディレクトリ「mpd」をmpd-0.20.20.tczファイルに加工。そこからtcz.md5.txtファイルを作成。
これらのファイルを、貯蔵庫のoptionalディレクトリに移動。
onboot.lstを開き、一番下に「mpd-0.20.20.tcz」と追記。
これで、インストールされたmpdがSDカードに保存され、OS再起動後にも使えるようになった。
vi .mpdconf music_directory "/mnt/music" playlist_directory "~/.mpd/playlists" db_file "~/.mpd/database" log_file "~/.mpd/log" pid_file "~/.mpd/pid" state_file "~/.mpd/state" sticker_file "~/.mpd/sticker.sql" auto_update "no" #auto_update_depth "3" mixer_type "software" # optional audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" # optional # mixer_type "software" } filesystem_charset "UTF-8" resampler { plugin "libsamplerate" type "Fastest Sinc Interpolator" } audio_output_format "705600:32:2" mkdir .mpd mkdir .mpd/playlists sudo rm -rf mpd* filetool.sh -b sudo reboot
mpdの設定ファイルを作成。内容は各自必要な感じで。
ただ、「samplerate_converter」の項目はなくなって、代わりに「resampler」の設定が追加になっている。これは使い方に注意が必要。
https://www.musicpd.org/doc/html/plugins.html#resampler-plugins
こちらmpdのサイトに設定法が書いてあるが、なんだか分かりにくい。以前のように「quality "Fastest Sinc Interpolator"」と設定したら読み込まれなくて、もしかして、と思って上記のように「type "Fastest Sinc Interpolator"」と書いたら機能した。
上記ページの設定法説明の記載、書いた人は分かりやすいつもりらしいが、ぱっと見、分からんよこれは。
フォーマットの指定をどこにしたらいいのかも書いていない。以前と同じにしていたら機能するみたいだけどさ。
設定ファイルに合わせて、必要なディレクトリを作成。
続いて、インストールに使っていらなくなったファイルをまとめて削除。
設定保存のコマンド「filetool.sh -b」を打って、OSをリブート。
以上でmpd 0.20.20インストール終了。
時間設定をしないとインストールできないこと以外は、tiny corePure64-7.2、mpd 0.19の場合と大差ない感じ。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備)
Tiny CorePure64-10.1にmpd 0.20、0.21をインストールしたので以下、備忘録。
今回はエントリーを分割する。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その2:0.20 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027b.htm
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その3:0.21 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027c.htm
まず、準備編。
といっても、ほとんどは以前のエントリーからの引用コピペだけど。
読み易くまとめておきたいというのはある。
SDカードにTiny CorePure64-10.1を焼き込むところから。
準備するものを列記。
1)CorePlus-current.iso:
Tiny Core Linuxのサイト(http://tinycorelinux.net/downloads.html)からダウンロードしたインストーラーOSのイメージファイル。「CorePlus」から落す。うちではCD-ROMに焼いたけど、条件が合うならusbメモリに書き込んで使ってもいい。
2)64bit PC:
インストールの母艦。
CorePlus-currentからの起動、SDカードへのOS書き込みと、SDカードにインストールしたTiny Coreからの起動を行う。だから、まず必要な機能はCorePlus-current.isoを書き込んだメディアからの起動と、SDカードからの起動ができること、だ。内蔵DVDドライブとかusb接続のカードリーダー、何でもいいから、使うことになるメディアから起動できる機械を用意する。且つ、CorePlus-currentから起動し、そこからSDカードに書き込みを行うので、2つのメディアを同時に使えるほうがいい(Tiny Coreはメモリ上で動くので、実はCorePlus-currentを起動した後はメディアは外せるんじゃないかと思うんだけど、試していない)。64bit OSを動かすから、当然64bit PCである必要がある。最近の機械なら大抵大丈夫だと思う。あと、sshで遠隔操作するのと、インストールするOSをダウンロードするので、ネットにつながる家庭内有線LANが使えること。無線で出来ないのかというのは、やってできないことはなさそうだけど、僕は面倒なのでしない。
うちではhp compaq 6730b、サブマシンのノートを使った。内蔵DVDドライブとusb端子4つとSDカード端子が付いていてSDカードからの起動もできて扱いやすい。usbカードリーダーからの起動も使おうと思えば使える。
3)sshクライアントPC:
ssh経由でOS、mpdのインストール操作からmpd起動までのほとんどを行うことになる。sshが使えたら普段使いのPCで構わないと思う。
4)apu2、SDカード:
apu2c4は現在は販売は終了しapu2d4が売られている。
準備ができたら、64bit PCを、CorePlus-current.isoを書き込んだメディアで起動する。
起動画面が表示されるので、下の方、「No X/GUI」と書いてあるのを選択し起動する。CUI画面で起動するので、以下、流れを羅列。
################## (boot 64bit PC CorePlus-current.iso CD-ROM No X/GUI : install openssh) sudo passwd tc tce s ssh 7 : 7. openssh.tcz q i q sudo /usr/local/etc/init.d/openssh start
CorePlus-currentが起動。ユーザーは「tc」になっている。
sshでログインできるように、passwdコマンドで「tc」のパスワードを設定。
tceコマンドで、opensshをインストールする。
「s」を打って「enter」、検索語入力になるので「ssh」、1からずらっと来て、7. openssh.tcz、と表示されるので「7」と打ち込むとopen.sshの説明が表示されるので「q」で閉じて、「i」でインストール。関連したものも含めてスイスイとインストールされる。「q」でtceを閉じる。
この「7」というのは、Tiny Coreのバージョンやリポジトリ?の状況で変るので、確認しながらインストールしていく。
「sudo /usr/local/etc/init.d/openssh start」と打ち込むと、sshサーバーとして起動する。
これで、他のパソコンからsshでログイン、コントロールできる。
2020.03.20. 追記。
上に、コマンドを打ち込むとsshサーバーとして起動すると書いたが、CorePlus-current.isoのバージョンによっては、それだけでは起動できないことが分かった。
このエントリーの下の方に書いているような、面倒な手順が必要になる。
sudo cp sshd_config.orig sshd_config sudo /usr/local/etc/init.d/openssh start
こんなコマンドを打ってsshd_configを作らないと、opensshを起動できない。
日本語キーボードには対応していないので「shiftキー」+「-キー」で「_」を入力してコマンドを打ち込む必要がある。
################## (change machine : ssh login 64bit PC : install tiny core OS installer) ssh tc@192.168.1.xxx tce-load -wi tc-install.tcz wget http://tinycorelinux.net/10.x/x86_64/release/CorePure64-10.1.iso cp `which tc-install.sh` . sed -e 's/vmlinuz/vmlinuz64/g' -e 's/core/corepure64/g' tc-install.sh > tc-install64.sh
おもむろに腰を上げて、sshクライアントとして使うPCに向かう。うちでは普段使いのノートPCを使った。sshでCorePlus-currentが動いているインストール母艦にログイン。ユーザー「tc」、パスは先刻設定したはず。ipアドレスは環境によって変わるので各個で確認のこと。
インストーラである「tc-install.tcz」をダウンロード、インストール。CorePlus-currentはインストールに使うOSなんだけど、なぜかインストーラをここでインストールしないといけないみたい。続いて、インストールするOSのイメージファイル「CorePure64-10.1.iso」をホームディレクトリに落とす。インストールスクリプト「tc-install.sh」をホームディレクトリにコピー。そのスクリプトの書き換え。これをしないと、インストールできないということらしい。
################## (insert SD card : OS install) fdisk -l sudo sh ./tc-install64.sh i :iso-file /home/tc/CorePure64-10.1.iso f :frugal 2 :partition 4 : 4. sdb1 y : Would you like to install a bootloader? Press Enter key : (Install Extensions from this TCE/CDE Directory) 4 : 4. ext4 y : Mark sdb1 active bootable? y/n vga=normal syslog showapps waitusb=5 : Enter space separated boot options y : Last chance to exit before destroying all data on sdb1 Installation has completed Press Enter key to continue. sudo poweroff
一旦、インストール母艦の64bit PCのところに戻って、SDカードを刺して、sshクライアントPCに戻る。「fdisk -l」と打つと、64bit PC上のメディアの状況が一覧表示される。その中からSDカードのデバイス名を確認(うちではsdb1だった)。この確認を間違えると、母艦のOSが上書きされたりする大事故につながるので要注意だ。
「sudo sh ./tc-install64.sh」で、インストールスクリプトを走らせる。
「i」で、isoファイルからのインストールを選択。次にファイルのアドレスを打ち込む。
「f」はfrugal。zipの「z」やHDDの「h」でもいいみたいだけど、今回は「f」。画面には説明が英文表示されている。
パーティションにインストールするかどうか訊いてくる。パーティションでいいので「2」と応答。
インストールするパーティションを選択。今回は表示された中からsdb1を探して「4」。この数字はどこにインストールするかによって変わる。
ブートローダーをインストールするかどうか訊いてくる。「enter」で先に進む。
ファイル形式を訊かれるので「4」でext4を選択。
インストールするデバイスで起動可能にするかどうか訊いてくる。起動しないと困るので「y(yes)」。
オプションを訊かれるので、提示された例をコピペ。
「Last chance to exit before destroying all data on sdb1」と訊かれる。OSインストールするのでsdb1のデータが消えるのは仕方ないので「y」。
10秒ぐらいでインストール終了。これでSDカードに「CorePure64-10.1」が書き込まれた。
「sudo poweroff」でインストール母艦をシャットダウンする。
################## (change machine : boot 64bit PC SD card : install openssh, nfs) uname -a sudo passwd tc tce s ssh 6 : 6. openssh.tcz q i s nfs 3 : 3. nfs-utils.tcz q i s i2s : i2c-4.19.10-tinycore64.tcz q i q cd /usr/local/etc/ssh ls sudo cp sshd_config.orig sshd_config sudo /usr/local/etc/init.d/openssh start
インストール母艦の64bit PCのもとに移動。SDカードのCorePure64-10.1から起動する(必要ならBIOSで起動ディスクの優先順位を調整する)。これからSDカードに書き込まれたCorePure64-10.1を使えるように設定していく。
sshでログインできるように、passwdコマンドで「tc」のパスワードを設定。
tceコマンドで、opensshをインストールする。「s」を打って「enter」、検索語入力になるので「ssh」、1からずらっと来て、6. openssh.tcz、と表示されるので「6」と打ち込むとopen.sshの説明が表示されるので「q」で閉じて、「i」でインストール。関連したものも含めてスイスイとインストールされる。続いて、うちではNASをマウントして使うつもりなのでnfsもインストールしておく。
CorePure64-7.2と違うのは、ここで「i2c-4.19.10-tinycore64.tcz」をインストールしておかないとipアドレスが振られなくなりsshでログインできなくなること。tceから「i2c」で検索すると説明表示されるので、「q」で閉じて、「i」でインストール。
最後は「q」でtceを閉じる。
sshサーバーとして動かすために、/usr/local/etc/sshディレクトリに移動。sshd_config.origをコピーしてsshd_configを作る。ここで問題になるのは「_」の入力が日本語キーボードの表示のままに出来ないこと。CorePure64は英語キーボード配列しか認識していない。日本語キーボードからだと「shiftキー」+「-キー」で「_」を入力できる。キーボードが英語キーボードだったら、こんな面倒はないかもしれない。コピーができたら、opensshを起動。
################## (change machine : ssh login 64bit PC : basic setting SD card) vi .ssh/k* ssh tc@192.168.1.xxx sudo vi /opt/bootlocal.sh /usr/local/etc/init.d/openssh start /usr/local/etc/init.d/nfs-client start mkdir /mnt/music mkdir /mnt/music/ariel mkdir /mnt/music/titan chmod -R 777 /mnt/music vi /opt/.filetool.lst etc/shadow etc/passwd usr/local/etc/ssh/sshd_config usr/local/etc/ etc/fstab etc/securetty etc/inittab sbin/autologin vi .ashrc alias titan="sudo mount -t nfs 192.168.1.80:/titan /mnt/music/titan" alias ariel="sudo mount -t nfs 192.168.1.120:/ariel /mnt/music/ariel" filetool.sh -b sudo poweroff ################## (change machine : boot apu2 SD card)
おもむろに腰を上げて、sshクライアントPCに向かう。sshでCorePure64-10.1が動いているインストール母艦にログインするんだけど、アクセスする前に「vi .ssh/k*」で.ssh/known_hostsファイルを編集する必要がある。母艦にはdhcpサーバーからipアドレスを割り振られているんだけど、CorePlus-currentとCorePure64-10.1に同じアドレスが割り振られた場合(そうなる場合が多いと思うけど)、CorePlus-currentからもらった鍵はCorePure64-10.1には合わないのでログインを蹴られるのだ。予めknown_hostsファイルに保存されているインストール母艦のアドレスの行を削除し、その上で母艦にアクセスする。ユーザーは「tc」。パスは先刻設定した奴。
ログインしたら「/opt/bootlocal.sh」の編集。
「openssh start」の設定は必須。これを設定しておかないと、起動したあとでログインできないSDカードが出来てしまう。
「nfs-client start」は、nfsなんて使わないという人には要らない。
「/mnt/music」ディレクトリに関する記載は、OS起動時にmpdのmusic_directoryとNASのマウントポイントを作るという当方固有の設定だ。music_directoryを他に設定する場合は不要な記載。
次に「/opt/.filetool.lst」の編集。シリアル接続できるようにする設定も保存できるようにしている。
sshで継がるなら必要ないといえば必要ないのだけど。設定方法は下記エントリーを参照のこと。
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191010a.htm
(apu2d4でTiny CorePure64 10.1を動かす)
「.ashrc」の編集、これはうちに固有の設定。うちではNASのマウントやmpdの起動はsshから行うのがデフォルトなのでalias設定している。
「filetool.sh -b」でSDカードに設定を保存、poweroff。これでインストール母艦の役割は一応終了。SDカードを母艦から抜き、apu2に刺して起動する。
################## (change machine : ssh login apu2 : setting) ssh tc@192.168.1.yyy tce-load -wi \ libsamplerate.tcz libsamplerate-dev.tcz alsa-config.tcz \ alsa-plugins.tcz alsa-modules-4.19.10-tinycore64.tcz \ alsa-dev.tcz alsa.tcz lame.tcz \ lame-dev.tcz libmad.tcz libmad-dev.tcz \ flac.tcz flac-dev.tcz curl.tcz tce-load -wi gcc.tcz meson.tcz ninja.tcz boost-1.65.tcz \ pkg-config.tcz bison.tcz binutils.tcz autoconf.tcz \ libtool-dev.tcz bc.tcz cmake.tcz compiletc.tcz tce-load -wi boost-1.65-dev.tcz tce-load -wi squashfs-tools.tcz tce-load -wi ntpclient.tcz
SDカードをapu2に刺して起動、apuのipアドレスを確認、sshクライアントPCからユーザー「tc」でログイン。
libsamplerateやalsa、flacなど必要なライブラリやプラグインをインストール。ここの項目は各々ユーザーのニーズに合わせて選択。
続いて、mpdインストールに必要な環境をインストール。mpd 0.21は、インストールにautotools、makeの代わりにmeson、ninjaを使う。0.20以前とはやり方が違っている。0.20のインストールには要らないんだけど、今回は環境が同じの方が手間がかからなかったので一緒にインストールしている。
boostは、boost-1.65.tczだけで事足りるかと思ったら、boost-1.65-dev.tczも必要。しかしこれをインストールしたら一緒にXシステムもインストールされるんだよね。。。ヘッドレスなのにいらんのではないのかと思うけど、なしでは何でかmpdのインストールと起動自体ができないので入れている。
squashfs-tools.tczがないと、ソースからインストールしたソフトをtczに加工できないのでインストール。
さらに、システムの時間を合わせないままだと「インストールに使うファイルがコンピューターの時間より新しいよ」みたいな警告が出てインストール作業ができない。ので、ntpクライアントをインストールする。セキュリティか何かの関係なんだろうか。これはCorePure64-7.2と違うところ。
ここらで、準備完了かな、、、
この段階でSDカードをイメージファイルにバックアップしておくと、あとあとmpdのインストールで失敗しても大丈夫。
mpdインストールは続きのエントリーで。
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その2:0.20 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027b.htm
apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その3:0.21 インストール)
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20191027c.htm
Oct 10, 2019
apu2d4でTiny CorePure64 10.1を動かす
今回はオーディオの話は出てこない。
何でオーディオのカテゴリにアップするのかといえば、オーディオに使うハードの話だから。
ここらはちょっと迷うとこだ。
うちではTiny Core Linux 7.2(x86-64)でapu2c4を動かし、音楽サーバーとして運用しているんだけど、なぜか上位バージョンのTiny Coreは使えずに来ていた。なんとか使えるようにしたんだけど、その辺りの顛末について備忘録として書いておく。
ちなみに一連の試行錯誤はサブ機として入手したapu2d4で行った。
使えない、とはどういうことかというと、Compaq 6730bを使って、SDカードに「TinyCorePure64-10.1」をインストールして(手法は過去のエントリー「apu2c4で768kHzへのアップサンプリングに取り組む」のとおり)、それをapu2に刺し起動させてsshでログインして操作したいのに、ipアドレスが割り振られないので、できない、という意味だ。
v7.2は問題なく使える。
それ以上のバージョンでは使えない。x86、x86-64両方とものようだ。
Compaq 6730b、Dell Inspiron11で動かす分には問題ないSDカードであるにも関わらず、apu2に刺して起動したときにはipアドレスが振られない。ということはsshでログインできないしpingすら打ちようがなく、どういう状態なのかも全く分からない。
LEDが光っているので、通電はしているようだけど。
では、問題がなく動いているv7.2の「vmlinuz」と「core.gz」を、v10.1のものに置き換えてみるのはどうか。簡単なバージョンアップの手法としてTiny Core Linuxのサイトにも挙げられている手法だ。
Compaq 6730b、Dell Inspiron11は、これで動く。
しかしapu2で起動したら、やはりipアドレスが振られない。
あれこれ試して、もう仕方がないので、シリアル接続を試みることにした。
シリアル接続って何?という感じなんですが。
シリアルケーブルというものを使ってapu2を他のコンピューターに直接継いで操作する、ということだ。
使うケーブルはこんな感じ(これはamazonの写真)。
https://www.amazon.co.jp/gp/product/B01N0F91GH/
![]()
片方はusb端子。もう片方はRS-232Cという規格の端子。
usbの方を、操作に使うマシンに刺す。
RS-232Cの方をapu2に接続する。
シリアル通信ソフトを起動したら、データやコマンドの送受信が可能になる。
おおざっぱに言うと、こんな感じ。
参考にしたサイトは下記。他にもあちこち見たけど忘れた。
http://flac.aki.gs/bony/?p=3155
https://netwiz.jp/linux-usb-serial/
http://enotyama.hatenablog.com/entry/2014/03/03/232305
https://qiita.com/miyabisun/items/73bb2e0b75c30fba9f3c
まず、ケーブルの入手。USBシリアルケーブルでネットショップ上を検索して入手。USB-RS232C変換ケーブルというらしい。「RS232」と「RS232C」があって何が違うのか迷ったりしたが、どうやら基本的に同じと思っていいらしい。クロスケーブルかどうかの表記かと思ったら、そうではない、らしい。
apu2に使えるのはクロスケーブルで「null-modem cable」と言われる物。なかなか分かりにくいんだけど。
https://pcengines.ch/howto.htm#serialconsole
The most common mistake people make is not using a null-modem cable: If you have a multimeter, check that the pins 2 and 3 are crossed. Do NOT use gender changers!
The default baud rate for alix boards is 38400,8n1 and for apu boards 115200,8n1.
なんか、シリアルケーブルの規格は複数あって、実際のところ、継いでみて使えるかどうかはやってみないと分からないことがあるらしい。詳しくはwikipediaあたりを読んで欲しい。読んで僕はちょっと驚いた。
SDカードにインストールしたTiny Core10.1に設定変更書き込み。
sudo vi /etc/securetty # For people with serial port consoles ttyS0
sudo vi /sbin/autologin exec /sbin/getty 115200 ttyS0 #exec /sbin/getty 38400 tty1
sudo vi /etc/inittab ttyS0::respawn:/sbin/getty -nl /sbin/autologin 115200 ttyS0 #tty1::respawn:/sbin/getty -nl /sbin/autologin 38400 tty1
sudo vi /opt/bootsync.sh echo “booting” > /etc/sysconfig/noautologin
これでヘッドレス化。シリアル通信できるはず。
操作に使うPCを準備する。うちでは6730bノートPC、OSはFedora。
シリアル通信に使うソフトは、とりあえず参考にしたサイトに倣い「cu」にした。
最初からは入ってないので「dnf」でインストール。
シリアルケーブルのusb端子を刺す。
ここで「dmesg」コマンドを打つと、仕組みはよく分からないけど、シリアルケーブルがFedoraに認識されていると表示されるので確認。かなり大量の行数が表示されて、下の方にちょこっと表示されるので分かりにくいが。
[1864782.993734] usb 6-1: pl2303 converter now attached to ttyUSB0
こんな感じ。スタンバイできてるということかな。
RS-232Cの方をapu2に接続し、apu2の電源を入れる。
「cu -s 115200 -l /dev/ttyUSB0」とコマンドを打つが「cu: ttyUSB0: Line in use」というエラー表示で繋がらない。
誰が使ってるんだ?
これは最初は良く分からなかったんだけど、結局、表示されてないけど「Permission denied」で蹴られているということらしい。
「sudo chmod 666 /dev/ttyUSB0」と打ってパーミッションを変更。
改めて「cu -s 115200 -l /dev/ttyUSB0」。
これで接続成功した。
なんだか大雑把な流れの記述なんだけど、シリアルケーブルというのはapu2が起動していようがいまいが関係なく何時に刺してもよくて、刺して「cu」コマンドを打った時点でやり取りされているデータを字面に表示するようだ。
ある意味、緊急時には融通が利いてありがたい通信手段なのだろう。
v10.1でapu2を起動し、シリアル接続したら下記のような字面が表示された。
[ab@fedora2 ~]$ cu -s 115200 -l /dev/ttyUSB0 Connected.
「Connected.」が表示されて止まるので、enterキーを叩く。
すると「box login:」が表示される。
「tc」でログイン。
Core Linux box login: tc Password: ( '>') /) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY. (/-_--_-\) www.tinycorelinux.net tc@box:~$
ちゃんとTiny Core 10.1は起動していることがわかった。
「ifconfig」と打つと下記の表示。
tc@box:~$ ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
「eth0」がない、、、
apu2にはイーサネットポートが3つあるので、eth0、eth1、eth2が表示されるはず。それらが表示されない。つまり有線LANが機能しない状態で起動している。「ping 127.0.0.1」と打つと応答が帰ってくる。ということは、TCP/IP自体は機能している。
なるほどだ、、、
ハードは認識できてるのか?
lspciを使えば分かるみたいだがインストールされていない。
「pciutils」というパッケージをインストールしたら使えるらしい。
6730bにSDカードを刺し替えて、家庭内LANからネットに継がる環境でインストールする。
インストールできたら、apu2に刺し直して起動して、シリアル接続から「lspci」と打ち込む。
tc@box:~$ lspci 00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 1566 00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 156b ( 略 ) 01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) 02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) 03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
「Ethernet controller: Intel Corporation I210 Gigabit Network Connection」と表示。
これは問題なく動いているTiny CorePure64-7.2と同じ結果だ。
つまり、イーサネットのデバイスは10.1でも認識されている。
ドライバはどうなっているのかな、、、
tc@box:~$ ls /lib/modules/4.2.9-tinycore64/kernel/drivers/net/ethernet 3com/ cadence/ fealnx.ko.gz natsemi/ sis/ 8390/ cavium/ fujitsu/ neterion/ smsc/ adaptec/ chelsio/ hp/ nvidia/ stmicro/ agere/ cisco/ icplus/ packetengines/ sun/ alteon/ dec/ intel/ qlogic/ tehuti/ altera/ dlink/ jme.ko.gz rdc/ ti/ amd/ dnet.ko.gz marvell/ realtek/ via/ atheros/ ec_bhf.ko.gz mellanox/ samsung/ wiznet/ broadcom/ emulex/ micrel/ sfc/ xircom/ brocade/ ethoc.ko.gz myricom/ silan/ tc@box:~$
tc@box:/$ ls /lib/modules/4.19.10-tinycore64/kernel/drivers/net/ethernet 3com/ broadcom/ fealnx.ko.gz netronome/ stmicro/ 8390/ brocade/ fujitsu/ nvidia/ sun/ adaptec/ cadence/ hp/ packetengines/ synopsys/ agere/ cavium/ huawei/ qlogic/ tehuti/ alacritech/ chelsio/ intel/ qualcomm/ ti/ alteon/ cisco/ jme.ko.gz rdc/ via/ altera/ dec/ marvell/ realtek/ wiznet/ amazon/ dlink/ mellanox/ samsung/ xircom/ amd/ dnet.ko.gz micrel/ sfc/ aquantia/ ec_bhf.ko.gz myricom/ silan/ atheros/ emulex/ natsemi/ sis/ aurora/ ethoc.ko.gz neterion/ smsc/ tc@box:/$
7.2と10.1、「intel」は両方に入っている。
もう少し奥に。
tc@box:~$ ls /lib/modules/4.2.9-tinycore64/kernel/drivers/net/ethernet/intel e100.ko.gz e1000e/ i40e/ igb/ ixgb/ ixgbevf/ e1000/ fm10k/ i40evf/ igbvf/ ixgbe/ tc@box:~$
tc@box:/$ ls /lib/modules/4.19.10-tinycore64/kernel/drivers/net/ethernet/intel e100.ko.gz e1000e/ i40e/ ice/ igbvf/ ixgbe/ e1000/ fm10k/ i40evf/ igb/ ixgb/ ixgbevf/ tc@box:/$
もう少し調べて、、、
tc@box:~$ lspci -vvv ( 略 ) 01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) Subsystem: Intel Corporation Device 0000 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-SERR- Kernel driver in use: igb ( 略 )
tc@box:~$ lspci -vvv ( 略 ) 01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03) Subsystem: Intel Corporation Device 0000 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-SERR- ( 略 )
7.2では「Kernel driver in use: igb」と表示される。
10.1では表示されない。「Control: BusMaster-」とはどういうことか?
ともあれ、igbが機能してないらしいのは分かった。
tc@box:~$ modinfo igb ( 略 ) depends: ptp,i2c-algo-bit vermagic: 4.2.9-tinycore64 SMP mod_unload
tc@box:/$ modinfo igb ( 略 ) depends: i2c-algo-bit intree: Y vermagic: 4.19.10-tinycore64 SMP mod_unload
10.1はmodinfo igbの「depends」に「ptp」が表示されない。どうなんかね、これは。
vermagicには、カーネルバージョンと主要なConfigオプションが記載されるという。
SMP mod_unloadってどういうことかな、、、
「igb」でtiny coreのフォーラムを検索してみる。
Topic: modprobe: can't load module igb (kernel/drivers/net/ethernet/intel/igb/igb.ko.gz
http://forum.tinycorelinux.net/index.php/topic,22744.msg142319.htmlIs the i2c-KERNEL extension loaded?
$ tce-load -i i2c-KERNEL
Topic: Network Ports are not detected - IntelR I210IT GbE LAN
http://forum.tinycorelinux.net/index.php/topic,18469.0.htmlI took a shot in the dark and appended the file name to the URL like this: http://tinycorelinux.net/6.x/x86/tcz/i2c-3.16.6-tinycore.tcz and pasted it into my browser; it worked!
I put the file in /mnt/sda1/tce/optional.
I edited onboot.lst and put i2c-3.16.6-tinycore.tcz right after glib2.tcz (about 1/3 of the way down the file).
Now it works!
なんかいきなり参考になりそうな事が書いてあるじゃないの。
6730bにSDカードを刺し替えて起動、「tce」でi2cを検索。
「i2c-4.19.10-tinycore64.tcz」があるので、これをインストール。
SDカードをapu2に戻して起動。
「ifconfig」を打つ。
tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0D:B9:50:86:58 inet addr:192.168.1.89 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:88 errors:0 dropped:4 overruns:0 frame:0 TX packets:43 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35816 (34.9 KiB) TX bytes:3813 (3.7 KiB) Memory:fe600000-fe61ffff eth1 Link encap:Ethernet HWaddr 00:0D:B9:50:86:59 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe700000-fe71ffff eth2 Link encap:Ethernet HWaddr 00:0D:B9:50:86:5A UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe800000-fe81ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:140 (140.0 B) TX bytes:140 (140.0 B) tc@box:~$
行けました! ipアドレスが振られている!
いやー、長かったなあ、、、sshで接続して操作するのも可能です。
これで多分、将来的なalsaやmpdのバージョンアップにも対応できます。
このエントリー書き上げてから気付く。 「serial experiments Lain」のserialって、これのことだったのね、多分。
シリアル接続からのログアウトの方法を書き忘れていた。
tc@box:~$ exit Core Linux box login: ~[fedora2]. Disconnected. [ab@fedora2 ~]$
tcでログインしている状態から「exit」。
「box login:」が表示された状態になるので「~」、[fedora2]が表示されるので「.」を打つ。これで、Disconnected.
下記は、シリアル接続しているpcにsshで他からログインして操作している場合(ややこしい)。
tc@box:~$ exit Core Linux box login: Connection to 192.168.1.64 closed. [ab@fedora1 ~]$
tcでログインしている状態から「exit」。
「box login:」が表示された状態になるので、「~」続いて「.」と打つ。
これで、Connection to 192.168.1.64 closed.
つまり、ssh接続もログアウトする。
ここらは環境によって表示が違うかも。
Dec 25, 2018
Compaq 6730bとTiny coreでアップサンプリング (768kHzアップサンプリングの音について)
うちにはhp社のCompaq 6730bが4台ある。先日までは3台だったが、増えて4台だ。
windows7が1台、Fedora27が2台。Tiny coreでアップサンプリングを試してるのが1台。同じ機種ばかり何台もあるのは、その方が機種固有の知識が少なくて済むということと、どれかが故障した時に簡単に代替が効くからだ。
今回、数が増えたのは故障のせいで、中古パソコン屋から新しいのが来るまでの間、思惑通りに他の機体で代替できたので、大きく困ることはなかった。
そんな6730bなんだけど、Fedora28をインストールしようとしたら上手くいかずに諦めたことがある。それ以降、どうもその機体が不調つづきで、今回、29をインストールしようとしても出来ず、というか、インストールしても起動せず「TPM Error 2」と表示されて、先に進まない。ついにはエラー表示もまともに出来なくなった。
諦めて、27に戻そうとしたら、内蔵HDDからは起動できなくなっていた。usbからの起動は可能なんだけど。
こんなことってあるのか?と調べたら、OSインストールでBIOSが壊れることがあるんだな。
Ubuntu 17.10にBIOSを「破壊」するバグが発覚!原因は?対応策はあるのか?問題の詳細と現状まとめ | Linux Fan
https://linuxfan.info/ubuntu-17-10-corrupting-bios
Insyde Software社のUEFIはHPでも採用してるようだけど、6730bがそうなのかはよく分からない。
fedoraをバージョンアップ出来ないのは、うちだけじゃないらしい。
Can't install F28 on my laptop, F27 installation works
https://forums.fedoraforum.org/showthread.php?318093-Can-t-install-F28-on-my-laptop-F27-installation-worksBug 1582810 - F28 Workstation, GRUB loader bug : After booting in Windows, then Linux, there is a "TPM Error 2"
https://bugzilla.redhat.com/show_bug.cgi?id=1582810
そんなわけで、普通には使えない6730bが1台できたというわけだ。
上記の件、対策があったのでエントリーを上げた。
HP Compaq 6730bでFedora 28以上を使うときの注意点
http://blown-lei.net/endive/blosxom.cgi/pc/20190103a.html
内蔵HDDから起動できないというのは、BIOSをインストールしたら治るのかね?、、、
usbから起動できるならTiny Core Linuxは使える。日常的な使用に組み込み向きのTiny Coreはきついかな、、、
でも、音楽サーバーにはなるんじゃね?
apu2c4(今はもう売ってないんだね。apu2d4になっている)は安定して運用継続中なんだけど、他の機械でどうなのか試してみるのは面白そうだ。apuと同じCorePure64-7.2とmpd-0.19.19をインストールして、768kHzへのアップサンプリングを較べてみた。
スペックだけど、
apu2c4は、AMD GX-412TC(1GHzクアッドコア)に、メモリはDDR3-1333、4GBで固定。
6730bは、Intel Core 2Duo P8600 (2.40GHzデュアルコア)に、メモリは800MHz DDR2、1〜8GBで変えることができる。
メモリはapu2c4のほうが速い。
CPUの差は知識もないので分からない。6730bのほうが上等と思っていいんだろうか。
今回、6730bのメモリを1、2、4、6GBと変えて音楽連続再生してみた。最大の8GBは手持ちのメモリ基板が足りなくて試していない。
まず1GBで始めてみた。
音は悪くない。意外と行けるか、と思ったらじきにjitteringというのかな?、鈴を振るような雑音が聞こえ始める。さすがにCPUが速くてもメモリ1GBは足りないかな。ちなみにras pi2のメモリはLPDDR2で単純比較はできないけど、同じ1GBでも6730bのほうが余裕があるようだ。
2GBだと、もう少し持つけど、やっぱり雑音が。
4GBだとかなり行ける。やはりメモリは4GB必要なのかと思っていたら、1時間ほど鳴らすうちにjitteringが。
6GBでどうか。、、1時間ぐらいで時にプチノイズが出て、その後は落ち着いたかと思ったけど、1時間半でjittering、、、
ということは、DDR3なら4GBあれば十分と思われ(減らせるかどうかは試せない)、DDR2なら6GBでも足りない、ということかな。jitteringが乗ったら、一時停止して再生再開したら正常に戻る。何かの処理が滞ってそんなノイズを生じるのだろう。
CPUの違いによる差異はというと、端末画面でsshからtopを打つと%CPUは25%強でそんなに変わらなかった。
それ以上の事はよくわからない。
実際のところ、機械によって必要なメモリとかスペックは違うだろうし、今回はこんな結果でした、という以上の結論は出ないと思う。
ちなみにapu2c4と6730bで、音質比較は難しかった。
ブラインドでは絶対わからないし、そうでなくても明確な指摘はできない。
やや6730bのほうが落ち着いた音色に聞こえるような気がするが、気のせいだと思う。そもそも1時間過ぎたらノイズが乗る。
768kHzアップサンプリングの音質について書いておく。
うちの女房は僕よりも音質に厳しかったりするんだけど、子供の頃のかなり厳しいピアノ教育の賜物で、音楽が鳴っていたら頭の中で勝手に音符に返還されるんだそうだ。何かしたいこと(例えばメールの文面を考えるとか)をしてる時でも、音楽が鳴っていると本人の意思とは関係なく脳が採譜を始めてしまうので、非常に困るのだという。最近は子供がピーナツにハマってて、いつも「Linus & Lucy」とか「Skating」を聞きたがるんだけど、繰り返し聞かされてウンザリだと言っていたのだ。
その女房が、768kHzになったら「これならいつでも鳴らしていい」と言ったのだ。
ちょっと信じられない。
いったい、なにが今までと違うというのだろう、、、
まあ、その後、実際にいつ鳴らしてよくなったかといえば、そうでもないんだけどさ。
以前、初めて384kHzで鳴らした時は、明らかに192Hz以下とは違うステージの音だと感じた。
これ以上に上がるのかと思っていたんだけど、実際、768kHzにしてみたら上がってしまった。
使用するDACによって違うだろうとは思う。
ブラインドで分かるかと言われたら微妙なところ。分かる人には分かるんじゃないだろうか。
高音域はより肌理細かくリアルに。それは想定内だったんだけど、中低域の見通しが良くなったのは意外だった。
いや、スーパーツィーターで低域が改善するのをずっと昔に体験してるので、高域を改善すると低域も改善するというのは当然有りだとは思うんだけど、今回の改善の仕方はそれとは何となく違うのだ。
上流の段階で改善してるのが分かるという感じ。
低音の質感、リアリティが上がり、かなり聴き取りやすくなった。低域のhi-fi再生のリアリティってこういう感じで良くなるものなんだ、と初めて知った気がする。たぶん、スピーカーの低域再生能力が高かったら明確に表現されるんじゃないかと思う。4425mk2はサイズの割に下まで伸びてるとはいえ、キャスターを使ったセッティングは最低域を支えるには限界があるだろうと思う。
なんというのか、、、
384kHzまでは、音が良くなる度に、これ以上の音があり得るのか?と感じていたんだけど、768kHzを聞くと逆に、ああ、これ以上の音ってありだ、と感じた。更なるオーディオ再生の高みがあると確信したというのか。まあ、うちのシステムレベルでは上があって当たり前なんだけど、そういう話ではなく、オーディオ技術的に目指すべき場所的な感覚で。
技術者ではない自分がそういう感覚を持ってしまったのが意外なところ。
だから、そういうレベルを目指すのかと言われたら、最早どうだか分からないという感じ。そういう心境になるのもよく分からないところだ。
上で書いていること、どういうことなんだろう、と考えていたんだけど、自分なりに納得できるかな、という説明を思い付いたので追記しておく。
僕は、Hi-Fiオーディオ再生とは「音によってバーチャルリアリティを生み出すこと」という理解をしていた。
それはSM-SX100と4425mk2で今のシステムのベースを組んだ10数年前から認識し始めたことで、ずっとそれでやってきているのだ。リスニングルームに展開される音像音場表現をより良いものにしたい、そうすれば聴く者の感覚を鷲掴みにして音響による異世界に引きずり込み放さないような、そんな力を持つ再生音が得られるはず、そういう感じでやってきた。
384kHzまで、それは目論見どおりだった。
それがどうも、768kHzでは勝手が違った。
音は良くなっている。
でも、音の世界に浸ることが出来なくなった、とは言わないけど、なんというんだろう、、、
ステレオ再生によるバーチャルな音だと理屈では分かっていて、その音はリアルの一歩手前にいる感じで、、、
だから、もっと上があるということが、逆に分かる。
上が見えるから、もう少しで手に届きそうだという感じがする。理屈ではなく実感として、オーディオ技術が目指すべき更なる到達点がそこにある、という気持ちになる。同時に、なぜか、ここが限界ではないかという予感がする。
人形制作やバーチャルリアリティに関係する概念で「不気味の谷」というのがある。
https://ja.wikipedia.org/wiki/%E4%B8%8D%E6%B0%97%E5%91%B3%E3%81%AE%E8%B0%B7%E7%8F%BE%E8%B1%A1
引用する。
写実の精度が高まってゆく先のかなり高度なある一点において、好感とは正反対の違和感・恐怖感・嫌悪感・薄気味悪さ (uncanny) といった負の要素が観察者の感情に強く唐突に現れるというもので、(以下略)
世の中には、よく出来たオーディオを聴いて「音がリアルすぎて気持ち悪い」という感想を抱く人がいると聞いたことがある。
僕は今回、音像再生の精度が高まることで負の要素が強まったとは感じていない。
むしろ音が良くなって嬉しがって聴いている。
ただ、なぜか、音に浸りながらも、その音の前で、どこか途方に暮れる自分がいる。
不気味の谷という概念を思い出して、ああ、これかも、、と納得できるような気がした。
つまり、壁に突き当たったということだ。情報量を引き出し再生音を研ぎ澄ませていくという手法が限界ではないのかと感じているのだ。
今までは、音の情報量、リアリティを追求する方向で進んできたけれど、ここから先は同じ方向で進んでも、Hi-Fi再生によるバーチャルリアリティの魅力、有効性を高めることにはならないのではないか、ということ。
音響再生にも不気味の谷があるとしたら、それに触れた人間の感覚は陶酔から引き離されることになる。そこから先に目指すことになるのは、不気味の谷を越えた、バーチャルだと人の聴覚が気付かない、人の感覚を完全に騙すバーチャルリアリティを求めることになる。単に上質なバーチャルリアリティを目指すことは、既に目標ではない。
そんな雲を掴むような話、どうやって先を目指せばいいのか皆目見当がつかない。
しかし、そうではない方向性を選ぶのは、後退に等しい。
単純に更にサンプリング周波数を上げたら、谷を超えた違う世界が見えてくるんだろうか。しかし、多分そこは今迄僕が一喜一憂していたバーチャルリアリティなオーディオの世界とは違うような気がする。
そういえば、昨今はTV画像は4Kとか8Kとか言っているけど、情報量が増えたら、人はそのバーチャルな映像世界に入り込みやすくなるんだろうか。それは人にとって安心して没入できる世界なんだろうか。映像の情報量が一定水準以上に増えた時、そこに求められる音声は、もしかしたら、従来のバーチャルリアリティなHi-Fiでは通用しなくなるんじゃないだろうか。8Kの映像に合わせる音響は従来のステレオでは持たなくなる可能性が、ある?、、、
話が逸れた。
いったい此の先、どうするだろうかなあ、、、
音がいいから、ずっと音楽に浸ってたらいいというのが結論かもしれないけど。
実際それは可能なわけだし、768kHzまでしか現実的に無理なのだから。
さっきは後退に等しいと書いたけど、水準を維持したまま音色を変えてみる方法論もある。高級なプリアンプ使うとかDACを高級なのに変えるとか高級なケーブルやスピーカーに変えてみるとか、、、なんか気が進まんなあ、、、
今、気になるのはMQA。
これは録音の段階まで踏み込んだフォーマットだ。
音を研ぎ澄ませていく方向性に未来があるのかどうか、これを聴いたら何か新しい目星が付くならいいんだけど。
Dec 08, 2018
apu2c4で768kHzへのアップサンプリングに取り組む
Raspberry Pi2をPCトラポとして運用しているんだけど、やってみての感触から受ける印象だけなんだけど、384kHz以上へのアップサンプリングはRas Pi2初期型ではハードウェア的にいっぱいかな、という気がしている。
つまり384kHzが限界なのだ。
768kHzへのアップサンプリングは頑張っても出力できないだろうと思う。
DACを新しくしたのは700kHzの音がどうなのか確認する意味もあったので、ちょっと残念な状況。
そこでどうしたらいいか、ということを考えてみた。
まず、ハードの限界と考えるのでハードを変える。
選択枝として、まず「Raspberry Pi 3b+」が考えられる。
CPUのスペックが900MHzから1.4GHzに5割増し。うちのPi2は初期型なので、ARMv7からARMv8(64bit)にもアップすることになる。つまり64bit化が可能になる。メモリは1GBで変わらない。
課題がいくつか。
900MHzから1.4GHzへのアップで、どの程度の改善が見込めるのかという点がまず1つ。
64bit OSで使えたら処理能力アップが見込めるけど、使えるのかという点が2つめだ。
どんなOSが使えるのか。
今使っているpiCoreは、3b+への対応待ちで使えない。そして64bitへの対応はいつになるかも分からない。
raspbianは3b+で使えるけど64bitには対応していない。32bitだ。
この際なので64bitで使いたい。
ということだと、実はUbuntu、Fedora、Arch Linux、openSUSE、、と、いろいろ3b+に対応したOSがあったりする。どれか選んで、mpdをインストールして使うということになる。
ハードの選択枝はRas pi 3b+だけではない。
実は以前に、PCEngines社の「apu2c4」を入手していた。4GBのメモリを積んでるのでRAMメモリ再生機として使うつもりで入手したんだけど、結局、Ras Pi2で運用継続してしまったので、しまい込んだままになっていたのだ。
CPUはAMD 1GHzクアッドコアでほぼRas Pi2と同等だが、OSにRas Pi2で使い慣れたpiCoreの同系「Tiny Core Linux」のCore Pure 64か、dCore x86_64が使えるのではないかと思う。Tiny CoreはRAM上で動くというのも優位性と考えられる。
問題は、このハードは触らないまま今まで来てるということ。
つまり勝手が分からないのだ。
しかし勝手が分からないのは3b+でFedoraとかでも同じだ。
そんなわけで、まずapu2c4をTiny Core 64bit OSで動かしてみることにした。
参考にさせていただいたのは下記のサイト。
Tiny Core 6.1 64bit版のインストールと、dockerを動かそうとしたメモ
https://qiita.com/tukiyo3/items/d61b2054560451c47fdcメモリ再生(8)~64bit版 Tiny Coreを使ってみる。~その1(イメージファイル配布)
http://flac.aki.gs/bony/?p=3535
インストールしたのは、CorePure64-7.2.iso。
CorePure64-9.0.isoは、SDカードへのインストールまでは出来たけどapu2c4で動かそうとしたら上手くいかなかった。
CorePure64-8.2.1.isoは試していない。
難儀したのは、なにしろ取り掛かって実際に触ってみないと、何をしたらいいのかよく分らなかったこと。何回か繰り返すうちに、だいぶ慣れた。
あと、OSインストールのベース機に使った64bitノートパソコンは日本語キーボードだったので、sshd_config.origのコピーに際して"_"の入力方法が分からなかったこと。Tiny Core OSには日本語キーボードのキー配列設定が入ってないのだ。
ネットで英語キーボードの配列を調べてなんとかした。「shiftキー」+「-キー」で"_"が打てた。
sshで接続したら、あとは概ね大丈夫だった。
tc@box:~$ uname -a Linux box 4.2.9-tinycore64 #1999 SMP Mon Jan 18 19:59:34 UTC 2016 x86_64 GNU/Linux tc@box:~$ cat /proc/asound/card*/pcm0p/sub0/hw_params access: RW_INTERLEAVED format: S32_LE subformat: STD channels: 2 rate: 768000 (768000/1) period_size: 32768 buffer_size: 131072
これで、768kHz/32bitへのアップサンプリングを問題なく再生できるようになったかな、、、
今のところ、1時間以上連続再生してもノイズはない。
Tiny Coreの32bit OSだったらどうなのかは試していない。
音質評価はまだしていない。
でもとりあえず、シンディローパーのタイムアフタータイムが素晴らしく生々しい感じ。
以下、インストールのコマンドや記載内容など流れを羅列。
実際に触ったことがない人が見ても良く分からないと思うけど、自分用の備忘録だ。
備忘録だけなのも味気ないなと思ったので、分かりやすくなるように追記してみる。 まず準備するものを列記。
1)CorePlus-current.iso: Tiny Core Linuxのサイト(http://tinycorelinux.net/downloads.html)からダウンロードしたインストーラーOSのイメージファイル。「CorePlus」から落す。 うちではCD-ROMに焼いたけど、条件が合うならusbメモリに書き込んで使ってもいい。
2)64bit PC: インストールの母艦。 CorePlus-currentからの起動、SDカードへのOS書き込みと、SDカードにインストールしたTiny Coreからの起動を行う。 だから、まず必要な機能はCorePlus-current.isoを書き込んだメディアからの起動と、SDカードからの起動ができること、だ。内蔵DVDドライブとかusb接続のカードリーダー、何でもいいから、使うことになるメディアから起動できる機械を用意する。 且つ、CorePlus-currentから起動し、そこからSDカードに書き込みを行うので、2つのメディアを同時に使えるほうがいい(Tiny Coreはメモリ上で動くので、実はCorePlus-currentを起動した後はメディアは外せるんじゃないかと思うんだけど、試していない)。 64bit OSを動かすから、当然64bit PCである必要がある。 あと、sshで遠隔操作するのと、インストールするOSをダウンロードするので、ネットにつながる家庭内有線LANが使えること。 うちではhp compaq 6730b、サブマシンのノートを使った。内蔵DVDドライブとusb端子4つとSDカード端子が付いていてSDカードからの起動もできて扱いやすい。usbカードリーダーからの起動も使おうと思えば使える。
3)sshクライアントPC: ssh経由でOS、mpdのインストール操作からmpd起動までのほとんどを行うことになる。 sshが使えたら普段使いのPCで構わないと思う。
4)apu2c4: これを忘れてはいけなかった。現在は販売は終了しapu2d4が売られている。
準備ができたら、64bit PCを、CorePlus-current.isoを書き込んだメディアで起動する。 起動画面が表示されるので、下の方、「No X/GUI」と書いてあるのを選択し起動する。 CUI画面で起動するので、以下、流れを羅列。
################## (boot 64bit PC CorePlus-current.iso CD-ROM No X/GUI : install openssh) sudo passwd tc tce s ssh 7 : 7. openssh.tcz q i q sudo /usr/local/etc/init.d/openssh start
CorePlus-currentが起動。ユーザーは「tc」になっている。 sshでログインできるように、passwdコマンドで「tc」のパスワードを設定。
tceコマンドで、opensshをインストールする。 「s」を打って「enter」、検索語入力になるので「ssh」、1からずらっと来て、7. openssh.tcz、と表示されるので「7」と打ち込むとopen.sshの説明が表示されるので「q」で閉じて、「i」でインストール。関連したものも含めてスイスイとインストールされる。「q」でtceを閉じる。
「sudo /usr/local/etc/init.d/openssh start」と打ち込むと、sshサーバーとして起動する。 これで、他のパソコンからsshでログイン、コントロールできる。
################## (change machine : ssh login 64bit PC : install tiny core OS to SD card) ssh tc@192.168.1.64 tce-load -wi tc-install.tcz wget http://tinycorelinux.net/7.x/x86_64/release/CorePure64-7.2.iso cp `which tc-install.sh` . sed -e 's/vmlinuz/vmlinuz64/g' -e 's/core/corepure64/g' tc-install.sh > tc-install64.sh
おもむろに腰を上げて、sshクライアントとして使うPCに向かう。うちでは普段使いのノートPCを使った。 sshでCorePlus-currentが動いているインストール母艦にログイン。 ユーザー「tc」、パスは先刻設定したはず。ipアドレスは環境によって変わるので各個で確認のこと。
インストーラである「tc-install.tcz」をダウンロード、インストール。CorePlus-currentはインストールに使うOSなんだけど、なぜかインストーラをここでインストールしないといけないみたい。 続いて、インストールするOSのイメージファイル「CorePure64-7.2.iso」をホームディレクトリに落とす。 インストールスクリプト「tc-install.sh」をホームディレクトリにコピー。 そのスクリプトの書き換え。これをしないと、インストールできないということらしい。
### (insert SD card) ### fdisk -l sudo sh ./tc-install64.sh i :iso-file /home/tc/CorePure64-7.2.iso f :frugal 2 :partition 4 : 4. sdb1 y : Would you like to install a bootloader? Press Enter key : (Install Extensions from this TCE/CDE Directory) 4 : 4. ext4 y : Mark sdb1 active bootable? y/n vga=normal syslog showapps waitusb=5 : Enter space separated boot options y : Last chance to exit before destroying all data on sdb1 Installation has completed Press Enter key to continue. sudo poweroff
一旦、インストール母艦の64bit PCのところに戻って、SDカードを刺して、sshクライアントPCに戻る。 「fdisk -l」と打つと、64bit PC上のメディアの状況が一覧表示される。その中からSDカードのデバイス名を確認(うちではsdb1だった)。この確認を間違えると、母艦のOSが上書きされたりする大事故につながるので要注意だ。
「sudo sh ./tc-install64.sh」で、インストールスクリプトを走らせる。 「i」で、isoファイルからのインストールを選択。 次にファイルのアドレスを打ち込む。 「f」はfrugal。zipの「z」でもいいみたいだけど、今回は「f」を選んだ。画面には説明が英文表示されている。 パーティションにインストールするかどうか訊いてくる。パーティションでいいので「2」と応答。 インストールするパーティションを選択。今回は表示された中からsdb1を探して「4」。この数字はどこにインストールするかによって変わる。 ブートローダーをインストールするかどうか訊いてくる。「enter」で先に進む。 ファイル形式を訊かれるので「4」でext4を選択。 インストールするデバイスで起動可能にするかどうか訊いてくる。起動しないと困るので「y(yes)」。 オプションを訊かれるので、提示された例をコピペ。 「Last chance to exit before destroying all data on sdb1」と訊かれる。OSインストールするのでsdb1のデータが消えるのは仕方ないので「y」。
10秒ぐらいでインストール終了。 これでSDカードに「CorePure64-7.2」が書き込まれた。 「sudo poweroff」でインストール母艦をシャットダウンする。
################## (change machine : boot 64bit PC SD card : install openssh, nfs) uname -a sudo passwd tc tce s ssh 6 : 6. openssh.tcz q i s nfs 3 : 3. nfs-utils.tcz q i q cd /usr/local/etc/ssh ls sudo cp sshd_config.orig sshd_config sudo /usr/local/etc/init.d/openssh start
インストール母艦の64bit PCのもとに移動。SDカードのCorePure64-7.2から起動する(必要ならBIOSで起動ディスクの優先順位を調整する)。 これからSDカードに書き込まれたCorePure64-7.2を使えるように設定していく。
「uname -a」でSDカードにインストールされたOSを確認できる。 Linux box 4.2.9-tinycore64 #1999 SMP Mon Jan 18 19:59:34 UTC 2016 x86_64 GNU/Linux、うちではこんな感じ。 sshでログインできるように、passwdコマンドで「tc」のパスワードを設定。
tceコマンドで、opensshをインストールする。 「s」を打って「enter」、検索語入力になるので「ssh」、1からずらっと来て、6. openssh.tcz、と表示されるので「6」と打ち込むとopen.sshの説明が表示されるので「q」で閉じて、「i」でインストール。関連したものも含めてスイスイとインストールされる。 続いて、うちではNASをマウントして使うつもりなのでnfsもインストールしておく。 最後は「q」でtceを閉じる。
sshサーバーとして動かすために、/usr/local/etc/sshディレクトリに移動。 sshd_config.origをコピーしてsshd_configを作る。ここで問題になるのは「_」の入力が日本語キーボードの表示のままに出来ないこと。CorePure64-7.2は英語キーボード配列しか認識していないからだ。日本語キーボードからだと「shiftキー」+「-キー」で「_」を入力できる。キーボードが英語キーボードだったら、こんな面倒はないかもしれない。 コピーができたら、opensshを起動。
################## (change machine : ssh login 64bit PC : basic setting SD card) vi .ssh/k* ssh tc@192.168.1.64 vi /opt/bootlocal.sh /usr/local/etc/init.d/openssh start /usr/local/etc/init.d/nfs-client start mkdir /mnt/music mkdir /mnt/music/ariel mkdir /mnt/music/titan chmod -R 777 /mnt/music vi /opt/.filetool.lst etc/shadow etc/passwd usr/local/etc/ssh/sshd_config usr/local/etc/ etc/fstab etc/securetty etc/inittab sbin/autologin /opt/bootlocal.sh vi .ashrc alias titan="sudo mount -t nfs 192.168.1.80:/titan /mnt/music/titan" alias ariel="sudo mount -t nfs 192.168.1.120:/ariel /mnt/music/ariel" filetool.sh -b sudo poweroff ################## (change machine : boot apu2c4 SD card)
おもむろに腰を上げて、sshクライアントPCに向かう。 sshでCorePure64-7.2が動いているインストール母艦にログインするんだけど、アクセスする前に「vi .ssh/k*」で.ssh/known_hostsファイルを編集する必要がある。母艦にはdhcpサーバーからipアドレスを割り振られているんだけど、CorePlus-currentとCorePure64-7.2に同じアドレスが割り振られた場合(そうなる場合が多いと思うけど)、CorePlus-currentからもらった鍵はCorePure64-7.2には合わないのでログインを蹴られるのだ。 予めknown_hostsファイルに保存されているインストール母艦のアドレスの行を削除し、その上で母艦にアクセスする。 ユーザーは「tc」。パスは先刻設定した奴。
ログインしたら「/opt/bootlocal.sh」の編集。 この項は、うちに固有の設定をメモ書きしていて、他の人の参考にならない部分が多い。 しかし「openssh start」の設定は必須。これを設定しておかないと、起動したあとでログインできないSDカードが出来てしまう。 「nfs-client start」は、nfsなんて使わないという人には要らない。 mkdir云々は、うちの固有設定だ。起動時にmpdのmusic_directoryとNASのマウントポイントを作るようにしている。
次に「/opt/.filetool.lst」の編集。 参考にさせていただいたサイトからコピーしたままで、うちの環境では本当は何が必要かどうかは全く検討していない。
「.ashrc」の編集、これはうちに固有の設定。 うちではNASのマウントやmpdの起動はsshから行うのがデフォルト。コントロールは端末ソフトからncmpcppで行うので、そうした操作は苦にならないのだ。
「filetool.sh -b」でSDカードに設定を保存、poweroff。 これでインストール母艦の役割は終了。SDカードを母艦から抜き、apu2c4に刺して起動する。
################## (change machine : ssh login apu2c4 : mpd install, setting) ssh tc@192.168.1.90 tce-load -wi \ ncurses-dev.tcz ncurses.tcz make.tcz gcc.tcz compiletc.tcz squashfs-tools.tcz \ perl5.tcz bash.tcz automake.tcz bc.tcz glib2-dev.tcz boost-dev.tcz icu-dev.tcz \ pkg-config.tcz glib2-python.tcz dbus.tcz dbus-dev.tcz flex-dev.tcz gdbm-dev.tcz \ bison.tcz binutils.tcz autoconf.tcz libtool-dev.tcz bc.tcz cmake.tcz tce-load -wi \ libsamplerate.tcz libsamplerate-dev.tcz \ alsa-config.tcz alsa-plugins.tcz alsa-modules-4.2.9-tinycore64.tcz alsa-dev.tcz alsa.tcz \ lame.tcz lame-dev.tcz libmad.tcz libmad-dev.tcz flac.tcz flac-dev.tcz curl.tcz wget https://www.musicpd.org/download/mpd/0.19/mpd-0.19.19.tar.xz xz -dv mpd-0.19* tar -xf mpd-0.19* cd mpd-0.19* ./configure make mkdir ../mpd sudo make DESTDIR=../mpd install cd mksquashfs mpd mpd-0.19.19.tcz md5sum mpd-0.19.19.tcz > mpd-0.19.19.tcz.md5.txt ls /mnt ls /mnt/*1 ls /mnt/*1/tce sudo mv *tcz* /mnt/*1/tce/optional sudo vi /mnt/*1/tce/onboot.lst vi .mpdconf sudo rm -rf mpd* cp /mnt/*1/tce/onboot.lst onbootlst.txt sudo vi /mnt/*1/tce/onboot.lst filetool.sh -b
SDカードをapu2c4に刺して起動、apuのipアドレスを確認、sshクライアントPCからユーザー「tc」でログイン。 あとは音楽再生環境を構築していく。
mpdインストールに必要な環境や、libsamplerateやalsaなど必要なライブラリをインストール。 今回はmpd-0.19.19をインストール。 ここらの流れは、詳細が必要なら他のエントリーを参照のこと。
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180103a.html
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180529a.html
このあたりにmpdのインストールについて書いている。piCore用のエントリーだけど、似たようなものだ。 注意点は「mpd-0.xx.xx.tcz」と「mpd-0.xx.xx.tcz.md5.txt」を保管するディレクトリがpiCoreとは違うこと。うちでは今回は「/mnt/mmcblk0p1/tce/optional」だった。環境によってどう違ってくるか分からないので、確認した方がいいかな。
.mpdconfは、各個の環境に合わせて設定。 不要になったファイルをrm -rfで消去。 最後に「onboot.lst」を整理して、filetool.sh -b、で保存。
ほとんど.ash_historyファイルとかからのコピーとか。
ipアドレスとかパーティションやディレクトリのNo.とか、環境が違ったら他の数値になったりすることがあると思う。