メモリ再生(13)~RTカーネルバージョンの「Tiny Core」

さてさて、「Tiny Core」によるメモリ再生も行き着くところまでたどり着いたようで、終に「64ビット版Tiny Core」のカーネルを「リアルタイムカーネル(以下、RTカーネル)」を入れ替えます。
おそらく、現時点では、これが音質的には「ベスト」かと思われますが、その判断はそれぞれのユーザーにお任せします。

なお、RTカーネルのビルドは全面的にピーマンさんに頼っています。以下のサイトからダウンロードができますので、興味のある方は試してみてください。
カーネル本体を一からビルドするのは大変ですが、ビルドされたカーネルが配布されているときは基本的にはコピーするだけですので至って簡単です。

https://onedrive.live.com/?authkey=%21AD1ataEKvKB_5Nk&id=1252AFBFD9573EE9%21138&cid=1252AFBFD9573EE9

カーネルの本体は「corepure64.gz」と「vmlinuz64」です。
ピーマンさんのサイトでは「corepure64-11.gz・vmlinuz64-11」「corepure64-12.gz・vmlinuz64-12」「corepure64-13_hiFace.gz・vmlinuz64-13_hiFace」の3種類が配布されています。私のような「hiFace Evo」ユーザーの人は「corepure64-13_hiFace.gz・vmlinuz64-13_hiFace」を使わないと認識しませんのでご注意ください。

カーネルって何処にあるの?

まず、当たり前の話ですが、カーネルを入れ替えるにはカーネルが見える状態になってる必要がありますので、「メモリ再生(11)~64bit版 Tiny Coreを使ってみる。~その3(音楽再生専用)」を参考にして「Tiny Core」をインストールしてください。

さて、その様にしてインストールした「Tiny Core」が何処にあるのかなのですが、それは当然の事ながら起動用のUSBメモリ(または、SDカード)の中にあります。
そそて、この起動用のUSBメモリは「Tiny Core」が起動した後は「/mnt/sda1」などにマウントされます。この「sda1」は環境によって「sdb1」などに変わることもあるのですが、「APU」の場合は基本的には「sda1」としてマウントされています。

では、この部分を「sftp接続」できる「RLogin」deで見に行きます。
USBメモリはこういう風に「sda1」としてマウントされています。

このディレクトリを「/mnt」→「/sda1」→「/tce」→「/boot」と辿っていくとこういう画面になります。画面は既に、ピーマンさんが配布してくれているカーネルがコピーされた状態です。それから、「corepure64-13_hiFace.gz・vmlinuz64-13_hiFace」は長すぎるので(^^;、「corepure64-13.gz・vmlinuz64-13」とリネイムしています。

つまりは、カーネルを入れ替えるというのは、こういう感じコピーをして、起動時に新しいカーネルを読み込ませるようにすればいいだけなので、実に持って簡単なのです。

起動時に新しいカーネルを読み込まませる

では、どうすれば、起動時に新しいカーネルを読み込ませるのかと言えば、それはさらにこの下にある「extlinux」ディレクトリにある「extlinux.conf」を編集するだけです。


tc@box:~$ sudo vi /mnt/sda1/tce/boot/extlinux/extlinux.conf 

DEFAULT corepure64
LABEL corepure64
KERNEL /tce/boot/vmlinuz64
APPEND initrd=/tce/boot/corepure64.gz quiet 2 waitusb=5:UUID="85e9e091-3f51-4db8-b7a0-fbc878e5064f" tce=UUID="85e9e091-3f51-4db8-b7a0-fbc878e5064f" 

これを、起動した目的のカーネルに書き換えるだけです。


DEFAULT corepure64-13
LABEL corepure64-13
KERNEL /tce/boot/vmlinuz64-13
 APPEND initrd=/tce/boot/corepure64-13.gz quiet 2 waitusb=5:UUID="85e9e091-3f51-4db8-b7a0-fbc878e5064f" tce=UUID="85e9e091-3f51-4db8-b7a0-fbc878e5064f"   

ただ、注意が必要なのは、ここで編集をミスると「Tiny Core」は起動しなくなりますので、あくまでも自己責任でチャレンジしてみてください。間違っても上の記述をそのままコピーして貼り付ける・・・等と言うことはしないでください。

ALSA起動に関わる不具合を修正

カーネルの入れ替えは基本的にはこれだけなのですが、すでにALSA等を組み込んであるときは、カーネルの入れ替えに関連して若干の修正が必要になります。
それは、「/mnt/sda1/tce/optional/alsa.tcz.dep」と「/mnt/sda1/tce/optional/alsa-modules-4.2.9-tinycore64.tcz.dep」がカーネルに依存しているからです。


tc@box:~$ sudo nano /mnt/sda1/tce/optional/alsa.tcz.dep

alsa-modules-KERNEL.tcz
libasound.tcz
ncurses.tcz

この「alsa-modules-KERNEL.tcz」を以下のように「alsa-modules-4.2.9-tinycore64.tcz」とはっきりと明示します。


alsa-modules-4.2.9-tinycore64.tcz
libasound.tcz
ncurses.tcz

同じく「alsa-modules-4.2.9-tinycore64.tcz.dep」も以下のように「input-joystick-KERNEL.tcz」となっています。


tc@box:~$ sudo nano /mnt/sda1/tce/optional/alsa-modules-4.2.9-tinycore64.tcz.dep

input-joystick-KERNEL.tcz

これも「input-joystick-KERNEL.tcz」を「input-joystick-4.2.9-tinycore64.tcz」と明示してあげます。

なお、このALSA関係の修正はRTカーネルへの入れ替えだけでなく、その他のカーネルに入れ替えるときにも必要になるようです。・・・と言うか、例えば古いヴァージョンのTiny Coreをインストールしていて、そこへ新しいカーネルを入れたいなどと言うときもこれと同じ方法で可能なようなのですが、その時もALSAに関しては同様の修正が必要なようです。
その時は、一連のライブラリは「/mnt/sda1/tce/optional」に収納されていますから、然るべき番号のライブラリを確認してから編集すればいいようです。

なお、こちらの編集に関しては、たとえミスッてもALSAが起動してこないだけなので致命的なことにはなりません。

「extlinux.conf」を編集を失敗して起動しなくなったとき

基本的にはどうしようもなくて一からインストールしかないのですが、もしも何か「Linux」が動作しているPCがあれば簡単にレスキューできます。

編集をミスした起動用のUSBメモリを「LinuxPC」に差しこんで、「fdisk -l」でどのように認識されているのか確認します。
もしも、「/dev/sdf1」として認識されていれば、

mount /dev/sdf1 /mnt

とでもすれば、USBメモリが「/mnt」にマウントされますので、後は通常のやり方で「extlinux.conf」を編集すれば助かります。
私のデスクトップの横に転がっている「Vortexbox」では以下の媼作業になります。


[vortexbox.localdomain ~]# mount /dev/sdf1 /mnt/  //マウントする
[vortexbox.localdomain mnt]# cd /mnt/tce/boot/extlinux/ //「extlinux.conf」の場所へ移動
[vortexbox.localdomain extlinux]# ls //あった!!よかった。
extlinux.conf  ldlinux.sys

あとは、

[vortexbox.localdomain extlinux]# vi extlinux.conf

で、幸せになれるはずです。

イメージファイルの配布

とはいえ、その様な致命的なことにもなりかねないので、取りあえずは不要かと思われますが、64ビットRTカーネルの「Tiny Core」のイメージファイルを配布しておきます。
デフォルトのカーネルはピーマンさんが配布してくれている「corepure64-13_hiFace.gz・vmlinuz64-13_hiFace」のヴァージョンです。

64bit_RT_Tiny_Core_MPD_DHCP.ddi

tc@box:~$ uname -a
Linux box 4.4.6-rt14-tinycore64 #1 SMP PREEMPT RT Sat May 7 14:45:06 UTC 2016 x86_64 GNU/Linux

起動して、こんな風になっていればRTカーネルになっています。

tc@box:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: hiFace [hiFace], device 0: USB-SPDIF Audio [USB-SPDIF Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

無事にALSAも起動していて、「hiFace Evo」も認識しています。


3件のコメント

  1. すいません、カーネルの入れ替えで質問させて下さい。
    tc@box:/mnt/sda1$ ls -R
    としても.と:しか表示されません。

    tc@box:/mnt/sda1$sudo ls -R
    でも表示内容に変化はありません。

    何かおかしいのでしょうか。
    sftp接続で見てもsda1以下はからっぽです。

    最後になりますがサイトが復活してほっとしております。
    これからも参考にさせて頂きます。

    1. 考えられることは2つです。

      1. USBが「sda1」として認識されていない。(あまり考えられない)
      2. または、(私はよくやってしまうのですが)、USBメモリから起動させたあとに必要がなくなるのでUSBメモリを抜いてしまっている。

      それからもう一つは、Tiny Coreをインストールするときにブートローダーをインストールする仕様にしていない・・・でしょうか。

      インストール時に「z」ではなく「f」を選択しないとカーネル部分をみることができません。

      tc@box:~$ sudo sh ./tc-install64.sh

      Core Installation.

      Install from [R]unning OS, from booted [C]drom, or from [I]so file. (r/c/i): i
      Enter the full path to the iso. (EXAMPLE: /tmp/Core-4.7.iso): CorePure64-7.0.iso

      Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): f //「z」ではなく「f」を選択

      考えられるのはこれくらいでしょうか?

  2. 原因が分かりました。
    /mntの下に
    sda1とsdc1があり、sdc1以下にyungさんが記載したディレクトリがありました。
    なぜかsdb1は存在していません。
    TinyCcoreは自分でインストールしたものではなく、yungさんが配布してくれた
    イメージファイルを使用しています。ひょっとしたら一番最初だけ、
    LightMPDの入ったSDカードを刺したまま認識させたのかも知れません。(よく覚えていない)ちなみにAPUICです。
    ご返信を頂きありがとうございました。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です