TinyCore linuxを試してみる(1)~インストール・SSH接続

Tiny Cpre」というLinuxディストリビューションがあります。

その設計思想はブート時点で全てのソフトをディスクからメモリに呼び出し、メモリから実行させるというもので、基本的には「lightmpd」と同じです。ただし、USBから起動できればほとんどのPCで使えるという汎用性があります。
ミミズ工房」さんのところで紹介されていたので興味を持って眺めていたのですが、残念なことに「次回はusbに作成したシステムをssdに移し起動させる方法です。」と書かれた昨年10月以降から更新が止まっています。
ただし、「usbに作成したシステムをssdに移し起動」させなくても、USBから起動させればその上でMPDを走らせて音質確認できますので、この1週間ほど暇があるたびに他レンジしてみました。

ただし、試してみた結果、、音質面に関して言えばほぼ「lightmpd」と同じような傾向です。ただし、32bitOSでRTカーネルでもないようなので、「lightmpd」と比べるとややまったり感があります。
ですから、「lightmpd」と比べればインストールと設定にとんでもなく手間がかかる「Tiny Cpre」にどれほどの意味があるのかと聞かれれば困ってしまうのですが、あえて言えば「ブラックボックス化されていない・・・(^^;」の一点に尽きます。

ですから、「システムのポリシーなんて関係ない!!とにかくいい音で簡単に音楽を聴くことができればいい」という「普通の人」にとってはホントに・・・、そうホントに(^^;・・・意味のないページですの、それは先に了承しておいてください。
基本的には「ミミズ工房」さんが提供してくれている情報をもとにしたのですが、私の環境ではどういうわけか上手くいかない部分もありましたので、そのあたりをメインに少しばかり報告しておきます。

Live CDからのインストールと最低限の設定

Tiny Cpre」は空いている「Linux PC」があれば「Live CD」を使って簡単にインストールができます。

私は「APU1C」で使うことを前提にしたので、「VorteBox」をインストールしてあるLinuxPCを使って、「USBカードリーダーに差し込んだSDカード」にインストールしました。
Live CDから起動するとこんな画面が出ます。

Tiny_1

「Boot Core withX/GUI (TinyCore) + Instllation Extension」というメニューを選ぶとこんな感じで起動します。

Tiny

この画面で、ターミナル画面を起動して、「fdisk -l」コマンドでSDカードの位置を確認しておいた方がいいようです。「/dev/sda1」なのか、「/dev/sdb1」なのか、はたまた「/dev/sdc1」なのかはインストールに使ったLinuxPCの環境によって異なってきますから、きちんと自分の目で確認しておきましょう。

この後、一番下に並んでいる右側のアイコンをクリックするとインストールが始まります。
ここで、先ほど確認したSDカードの場所を選びます。大したことではないのですが、それでもここが一番悩む場面でしょうか。

Tiny_2

次の画面でいろいろなオプションを設定できるようなのですが、よく分からないので何もせずにパスしました。

Tiny_3

次はこの画面です。
当然のことながら一番シンプルな「Core Only」を選びます。

Tiny_4

ここで準備は全て完了、「Proceed」をクリックすればインストールが始まります。

Tiny_5

さらに詳しいインストールの仕方は「ミミズ工房」さんのサイトを参考にしてください。

しかし、ここからまず最初の問題が発生します。
それは、インストールが完了した時点のSDカードを「APU1C」に差し込んで起動させても、「SSH」接続ができないので何もできないと言うことです。ですから、インストールが完了したら、そのインストールに使った「LinuxPC」のディスプレイからいくつかの設定を行っておく必要があります。
SSH接続ならWindowsPCから「コピー&ペースト」で設定していくことができるのですが、「LinucPC」のディスプレイからだとキーボードから入力していくしかありません。不便極まりないのですが、「SSH接続」ができるまでの辛抱ですので、それまでは手入力で頑張るしかありません。

まずは、「USBカードリーダーに差し込んだSDカード」から「Tiny Core」を起動させます。
起動すると、「tc」というユーザーで自動的にログインします。

login as: tc
(-
//\ Core is distributed with ABSOLUTELY NO WARRANTY.
v_/_ www.tinycorelinux.com

tc@box:~$

こんな感じです。
普通はユーザー名を入力してパスワードを入力してログインという手筈なのですが、すでに「tc」というユーザーでログインしています。最初は気がつかずに一寸戸惑いました。

しかし、「tc」ユーザーにパスワードがないと「SSH」ではログインできませんので、まずはパスワードを設定します。

tc@box:~$ sudo passwd tc
Changing password for tc
New password:
Bad password: too weak
Retype password:
Password for tc changed by root
tc@box:~$

rootでログインしていないので、「passwd」のようにroot権限の必要なコマンドは全て「sudo」が必要です。面倒くさいですが、そう言うセキュリティ思想なので仕方がありません。

次に「openssh」をインストールします。
インストールは「tce」というコマンドを使い、対話的に行います。

tc@box:~$tce
tce-ab ? Tiny Core Extension: Application Browser

S)earch P)rovides K)eywords or Q)uit:S

「s」と入力して「Enter」します。

Enter starting chars of desired extension, e.g. abi:openssh

「openssh」と入力して「Enter」します。

tce ? Tiny Core Extension browser

1. openssh-doc.tcz
2. openssh.tcz

Enter selection ( 1 – 2 ) or (q)uit:2

「2」と入力して「Enter」します。
そうすると、ズラズラと説明が出てきますので、取りあえずは最後まで読んで「q」とすると

A)bout I)nstall O)nDemand D)epends T)ree F)iles siZ)e L)ist S)earch P)rovides K)eywords or Q)uit:i

「i」と入力して「Enter」をすれば「openssh」がインストールされます。
こうして言葉にすると非常にややこしいのですが、実際に手を使って動かしてみれば意外と良くできたシステムです。

そしてsshが動くようにシステムを設定します。

sudo cp /usr/local/etc/ssh/sshd_config.example /usr/local/etc/ssh/sshd_config
sudo /usr/local/etc/init.d/openssh start

これで、漸くにしてSSH接続ができるようになりましたので、ここからはSSh接続して作業した方が「コピー&ペースト」が使えますので楽です。
その前に、DHCPサーバーから割り振られているIPアドレスを確認しておいた方がいいでしょう。

tc@box:~$ ifconfig
eth0 Link encap:Ethernet HWaddr BC:5F:F4:55:09:F8
inet addr:192.168.0.104 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:64629 errors:0 dropped:2424 overruns:0 frame:0
TX packets:40403 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8657331 (8.2 MiB) TX bytes:4806962 (4.5 MiB)

言うまでもないことですが、「inet addr:192.168.0.104」というのはお使いの環境によって異なってきます。

SSH接続を確認

さて、ここで困ったことが起こりました。
SSH接続には「Poderosa」というソフトを使っているのですが、何故かエラーが出て接続できないのです。
「Tiny Core」の方を確認すると問題なくSSHは起動しています。
そこでもう一度エラーメッセージを見なおすと「server does not support diffie-hellman-group1-sha1 for key exchange」なんぞと言っています。

どうやら、「Tiny Core」側の問題ではなくて「Poderosa」側の問題のようです。

そこで、昔懐かしい「Tera Term」を引っ張り出してくると無事に接続できました。
「Poderosa」ではどうして接続できないのか理由を探ろうと思ったのですが、「Tera Term」で接続できれば困ることは何もないので、そう言う無駄なことをするのはやめにしました。

そこで、無事にSSH接続ができたので、システムの起動時にSSHも起動するように「/opt/bootlocal.sh」に以下の一行を追記しておきます。
「コピー&ペースト」が使えます(^^v

vi /opt/bootlocal.sh
/usr/local/etc/init.d/openssh start

しかし、まだ安心するのは早いです。
何故ならば、「Tiny Core」は全てがメモリ上で動作していますので、ここでシャットダウン、もしくはリブートをしてしまうと、ここまで頑張って行った設定が全て消えてしまいます。
これが、こういうメモリ上で動作するディストリビューションの厄介なことです。

そこで、シャットダウンしても設定が消えないようにするためのお呪いが必要です。
お呪いのもとは「/opt/.filetool.lst」というファイルです。中味を覗いてみます。

tc@box:~$ less /opt/.filetool.lst

opt
home

となっています。
つまりは、ここに記入されている「opt」と「home」はデフォルトで変更が保存されるのです。
ちなみに、「tce」コマンドでインストールされたソフトは全て「opt」以下で管理されるので、シャットダウンしても消えてなくなることはありません。

ですから、消えてなくなるのは、この時点までの設定で言えば「パスワードの設定」と「sshの設定」の二つです。
ですから、「/opt/.filetool.lst」に「パスワードの設定」と「sshの設定」の二つを追記しておきます。

tc@box:~$ vi /opt/.filetool.lst

opt
home

etc/shadow
etc/passwd
usr/local/etc/ssh/sshd_config

これで保存してしてから、この設定をシステムのデータベースに反映させます。
反映させるコマンドは「filetool.sh -b」らしいです。

tc@box:~$ filetool.sh -b

Backing up files to /mnt/sdb2/tce/mydata.tgztc@box:~$

「/mnt/sdb2/」は環境によっては「/mnt/sda2/」等々いろいろ変わるようですが、こういうメッセージが出ればOKのようです。

つまりは、「設定変更」→「/opt/.filetool.lst に追記」→「filetool.sh -b お呪い!!」という3段階の操作が必要なのです。
おそらく、これで「パスワードの設定」と「sshの設定」の二つが反映しているはずなので、ここで勇気を持って「rboot」します。

tc@box:~$ reboot

これで、SSH接続ができれば第1段階完了です。・・・ふーっ!!
次はヘッドレス対応とMPDのインストールと設定、そして最鬼門のNASのマウントと進みます。

こんな面倒くさいの、誰が使うんだろう(^^;;


14件のコメント

  1. はじめまして、いつも興味深く拝見させていただいております。
    私も、みすず工房さんのTinyCoreの記事の更新を首を長くして楽しみにしていた1人です。
    管理人様が、こうしてTinyCoreを取り上げて下さる事は、Linuxに不慣れな私にとって、大変有難く感謝しております。
    私は「APU1D4」にsataケーブルで(音楽データ用)HDDを接続している関係で、NASの使用前提(?)で作られた「lightmpd」は興味があるものの使用できないでいます。
    メモリー上でOSを動作させれば、音質上有利であることは想像に難くないのですが、NASまでお金が回りません(苦笑)。
    現在、みすず工房さんの大分昔の記事『メモリファイルで MPD 再生する』を参考にemacsを使い、音楽ファイルをメモリーにコピーして再生していますが、そこで、登場したTinyCoreです!
    音楽ファイルもOSもメモリー上で完結すれば……と心躍ります。
    (mpd.confでbuffer_before_play100%にしていますが、予め音楽ファイルをメモリーにコピーしていた方が引き締まった音で再生されるような気がします。プラシーボ効果かもしれませんが……)

    これからの管理人様のTinyCoreレポ楽しみにしております。

    1. 私は「APU1D4」にsataケーブルで(音楽データ用)HDDを接続している関係で、NASの使用前提(?)で作られた「lightmpd」は興味があるものの使用できないでいます。

      なるほど、そういう事情もあったりするんですね。
      ただ、「使い勝手」と言うことを考えればNASをマウントするのが一番便利なので、取りあえずはそれを前提として、MPDをTiny Coreの上で走らせて音楽再生ができるところまでを次回に報告したいと思います。

      ただ、Tony Coreがlightmpdに対して優位性を主張できるとすればその点だけでしょうから、暇があればチャレンジしてみたいと思います。

  2. yung様、こんばんは。

    もうオワコンかもしれませんが、TinyCoreのカーネルをカスタマイズしてみたところ、
    「そのままのTinyCoreとは次元の違う音」になりましたので、ご報告しようと思った次第です。

    Preemtion Modelをデフォルトの
    「Voluntary Kernel Preemption (Desktop)」から
    「Preemptible Kernel (Low-Latency Desktop)」に変更し、
    さらにTinyCoreのbootlocal.shに“chrt”コマンドでUSBの優先度を上げ、
    “setpci”コマンドで(DCCがUSB2.0接続のため)EHCIをlatency_timer=ff
    で動作させています。

    カーネルをカスタマイズしようとしたきっかけは、
    mpdのbuffer_timeとperiod_timeのパラメータを突き詰めようとしても、「音切れ」は起きていないのにも拘らず、
    ある時点で「音が暴れて」しまい、それ以上突き詰められなかったことと、
    みすず工房さんの掲示板(TinyCoreのスレッド)に「解像度もvoyageやlightmpdと遜色はないです」とあったからです。

    私はLinuxに関しての知識はミジンコ並みでしたが、「あきらめなければ、何とかなる」スピリットで
    何とか成功するまで2週間程かかりました(苦笑)。

    個人的な意見になりますので「話六分の一」程度で読んで頂ければと思いますが、
    私の音楽再生機器は高くても1機5万円に満たないエントリーモデルですが、こんな音が出るとはチョットびっくりしています。
    OSも含め、私がうまく機器を使いこなしていなかったんですね。反省しきりです。
    音の流れる空気感・力強さ・解像度全てにおいて、voyageよりも遥かに好きです。
    また、もし「lightmpdと遜色がない」のなら、「ligntmpdって、めちゃくちゃスゴイ!」とも思いましたし、
    ぜひとも、yung様をはじめとする「違いの判る皆様」のご意見を聴いてみたとも思いました。

    そこで、厚かましいお願いで大変恐縮ですが、もしご迷惑でなければ、こちらの掲示板に
    「TinyCoreのカーネルのカスタマイズ方法」について投稿させて頂けませんでしょうか?

    Linuxに精通されている方でしたら、カスタマイズなんて造作もないことでしょうが、
    私と同様に知識を持たない方にとっては、心理的にかなりハードルの高い作業になります。
    さらに、TinyCoreのカスタムカーネルの作成方法について言及された日本語のサイトについては殆どありません。
    TinyCoreWikiの「Creating a Custom Kernel」で英語で書かれていますが、
    (私のような“ものぐさ”にとって)和訳しなければないのもハードルになります。
    また「Creating a Custom Kernel」について言えば、あれをそのまま作業すると、あとで面倒を抱えることになります。

    私のようなLinuxの知識を持たない方でも脱落することなく誰でも出来るように、判りやすく・丁寧に書きたいと思います。
    とはいえ、私の知識はミジンコですから、他の方の質問に答えることはおそらく出来ません。そこで自己解決出来る様、
    私がカスタマイズをする際に参考にしたサイトも必要な箇所で逐次(URLで)紹介出来たらと思っております。

    お忙しいとは存じますが、どうぞご検討お願い申し上げます。

    1. そこで、厚かましいお願いで大変恐縮ですが、もしご迷惑でなければ、こちらの掲示板に
      「TinyCoreのカーネルのカスタマイズ方法」について投稿させて頂けませんでしょうか?

      嫌々とんでもない、厚かましいどころか大歓迎です。
      私の方も、何にもしていない「基本形」の状態で放置したままです。というのも、結局は「APU+lightmpd」の音に何の不満も感じないので、最近はさぼり気味なのです。(^^;

      ミミズ工房さんの方も「基本形」で終わっていますので貴重なトライだと思います。

  3. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(1) 作業の流れなど ~~

    はじめまして、頭はピーマンと申します。みすず工房さんの掲示板(TinyCoreのスレッド)でカスタマイズカーネルに興味を持ち、艱難辛苦を乗り越えてやってみました。私の経験が皆さんのお役に立てれば幸いです。

    まずは、この場をお貸しくださったyung様に感謝いたします。本当にありがとうございます。

    では、本題に入ります。
    TinyCoreのカスタマイズカーネルの作成については、“Tiny Core Linux Wiki”の‘ Custom Kernel(Creating a Custom Kernel)’にありますので引用して、1~10の項目を見てみます(以降『本家』と表現します)。
    http://wiki.tinycorelinux.net/wiki:custom_kernel

    1.Get the sources for the version of the standard Linux kernel that you are going to base your kernel on
    2.Get the patches you intend to apply – both TC kernel patches and possibly others (in my case the RT-patches)
    3.Unpack the linux sources and cd into the top level directory of the source package
    4.Apply the patches using (in most cases) “patch -p1 < patchfile” for each patch file
    5.Move the kernel config file from the standard TC kernel into the same directory and rename it to ”.config”
    6.Do “make oldconfig” and answer all questions, in case you have no clue on the answer just provide the default ones (i.e. just hit Return)
    7.Do “make menuconfig” and make any changes you need to the configuration
    8.Do “make bzImage” to build the kernel itself
    9.Do “make modules” to build the loadable modules
    10.Do “make INSTALL_MOD_PATH=/path modules_install firmware_install” where /path is a path to a directory where you expect to find the modules.

    1はTinyCoreのサイトのアーカイブに“linux-X.XX.XX-patched.txz”というtinyCoreのパッチのかかったファイルを使いますので必要ナシです。

    2はリアルタイムパッチを利用して“Fully Preemptible Kernel(RT)”を導入したい方のみ、ダウンロードして下さい。ただ、RTに関して言えば、RTを当てたTinyCoreを起動することは出来るのですが、alsaをインストールする際コケます。alsaに依存するファイル“alsa-modules-”をダウンロードしようとすると、カーネルのバージョンに合ったmoduleを探すらしく、カスタマイズされたRTカーネルのmoduleなど存在しない為、そこでストップしてしまいます。
    Downloading: alsa-modules-3.8.13-rt16-tinycore.tcz
    Connecting to repo.tinycorelinux.net (89.22.99.37:80)
    wget: server returned error: HTTP/1.1 404 Not Found
    md5sum: alsa-modules-3.8.13-rt16-tinycore.tcz.md5.txt: No such file or directory
    Error on alsa-modules-3.8.13-rt16-tinycore.tcz
    実際、RTカーネルを導入された方もいらっしゃるみたいですので、お分かりの方は教えていただければ大変助かります。今回はPreemptible Kernel (Low-Latency Desktop)の導入を目指したいと思います。
    https://www.kernel.org/pub/linux/kernel/projects/rt/

    4もRTカーネル導入の方だけ。“patch -p1 Sound -> Advanced Linux Sound Architectureの項目を確認します。

    6. make bzImage実行します。(所要時間45分程度)

    7. make modules実行します。(所要時間10分程度)

    8. 適当なディレクトリー(/path)を作成して“make INSTALL_MOD_PATH=/path modules_install firmware_install”

    ————————————————————

    本家にはこの様に書いてありますので、判る人には判るのでしょうが、和訳しても「Linuxの知識がミジンコ並み(以下[ミ])」の私にとってはサッパリです(苦笑)。そもそも「カーネルを作成」するとは「何を作成」するのか全くわかりません。

    長くなりましたので、今回はここまでにしたいと思います。
    次は[ミ]でも判るように「何を作成」するから書くつもりでいます。
    なお、興味がおありの方が今週末にカーネル作成が出来る様、金曜日まではと頑張って書きたいと思っています。

  4. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(1・追記) 作業の流れなど ~~

    (「4もRTカーネル導入の方だけ」~「Sound -> Advanced Linux Sound Architecture」まで文が中抜けしてしまいましたので、追記します。)

    4もRTカーネル導入の方だけ。“patch -p1 Sound -> Advanced Linux Sound Architectureの項目を確認します。

    6. make bzImage実行します。(所要時間45分程度)

    7. make modules実行します。(所要時間10分程度)

    8. 適当なディレクトリー(/path)を作成して“make INSTALL_MOD_PATH=/path modules_install firmware_install”

    ————————————————————

  5. yung様、大変申し訳ありませんでした。

    文中に大なりマークと小なりマークを使ってしまい、両者がかなり離れていたため気づかず、投稿内容が中抜けしてしまったばかりか、同じ内容を連投する形になってしまい。大変ご迷惑をお掛けしてしまいました。

    本当に申し訳ありませんでした。

  6. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(2) わかる人向け作業の流れなど ~~

    昨日、私、頭はピーマンの知識不足のため、掲示板を汚してしまいました。
    yung様を始め、ご覧になっている方々にご不便をお掛けしていることに対してお詫び申し上げます。

    そういう私のミスの為、昨日の投稿の一部が欠けてしまっております。
    今後作業する上で重要ですので、昨日投稿した内容も一部重複いたしますが、ご容赦ください。

    『本家』(http://wiki.tinycorelinux.net/wiki:custom_kernel)の情報を元に、まとめますと、全体の流れは以下のようになります。

    —【 わかる人向け全体の作業の流れ (linux-3.8.13の場合)】—

    1. 必要なファイル“linux-3.8.13-patched.txz”と“config-3.8.13-tinycore”“core.gz”を集めます。
    http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/src/kernel/
    http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/distribution_files/core.gz
    もしくは今のTinyCoreのバージョンが5.4でしたら、ブートパーティションにある“core.gz”をコピーします。

    2. makeに必要なtczをダウンロード・インストールします。
    “make.tcz”“gcc.tcz”“compiletc.tcz”“squashfs-tools-4.x.tcz”

    3. linux-3.8.13-patched.txzを解凍し、linux-3.8.13-patchedディレクトリーにconfig-3.8.13-tinycoreを“.config”という名でコピーします。

    4. make localmodconfig実行します。

    5. make menuconfigでPreemptible Kernel (Low-Latency Desktop)を選択、Device Drivers – Sound – Advanced Linux Sound Architectureの項目を確認します。

    6. make bzImage実行します。(所要時間45分程度)

    7. make modules実行します。(所要時間10分程度)

    8. 適当なディレクトリー(path)を作成して
    make INSTALL_MOD_PATH=/path modules_install firmware_install

    ————————————————————

    本家にはこの様に書いてありますので、判る人には判るのでしょうが、和訳しても「Linuxの知識がミジンコ並み(以下[ミ])」の私にとってはサッパリです(苦笑)。そもそも「カーネルを作成」するとは「何を作成」するのか全くわかりません。そこで、ブートパーティション(/dev/sd*1)にあるファイルをlsコマンドで見てみます。

    core.gz  ldlinux.sys syslinux.cfg   vmlinuz

    更にsyslinux.cfgの中身をlessコマンドで覗きます。

    DEFAULT core
    LABEL core
    KERNEL vmlinuz
    APPEND initrd=core.gz quiet clocksource=hpet kmap=qwerty/jp106 lang=ja_JP.utf8 noutc tz=JST-9 waitusb=5:UUID=”XXXX-XXXX” tce=UUID=”XXXX-XXXX

    vmlinuzとcore.gzがダブっています。(vmlinuzはカーネルですし)何だかTinyCoreの起動に必要な感じがします。core.gzの前にあるinitrdって何だろうと調べてみますと、どうやらカーネルの一部を外部化したものらしいです。
    http://www.geocities.jp/sugachan1973/doc/funto72.html

    よって、今回のTinyCoreのカスタマイズカーネルの作成というのは「vmlinuzとcore.gzを作成すること」になります。
    結論を言いますと、vmlinuzは上記の【わかる人向け全体の作業の流れ (linux-3.8.13の場合)】の6で作成されたbzImageがそれに当たります。また、core.gzは同じく上記の8のpathディレクトリーにあるmodulesとfirmwareを材料に作ります。つまり以下の作業が追加されます。

    9. bzImageをブートパーティションに移動させます。

    10.pathディレクトリーにあるfirmwareとmodulesを解凍したcore.gzに詰め込んで、再びgzに圧縮し、ブートパティションに移動させます。

    これが作業のすべてです。

    次回は[ミ]でも100パーセント成功するやり方を、脱落者を出すことなく皆出来るように説明していきたいと思います。

    1. 貴重な情報ありがとうございます。
      コメント欄においておくのは勿体ないので、ある程度まとまった時点で、「ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成」としてページの方にまとめてさてもらおうと思います。

      いただいた情報で、私も時間のあるときに試してみます。
      (ただし、今は年度替わりで一年で一番忙しい時期です。)

      1. 恐れ入ります。
        お暇でネタがないとき遊びでしていただければ幸いです。
        お体に気をつけてくださいませ。

  7. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(3) わからない人向け[1] ~~

    今回からLinuxの知識がミジンコレベル([ミ])でも判るように説明していきたいと思います。[ミ]の定義ですが、こちらPCオーディオ実験室の「TinyCore linuxを試してみる」を実際にしたことがあるレベルの方とします。
    なお、私は最終的には100パーセントカーネルの作成に成功していますが、その環境は以下のようになります。

    [PC]APU.1D4 [起動ドライブ]USBメモリー8G・SDカード8G [OS]TinyCore5.4(カーネル3.8.13) [音楽データHDD接続]SATA [音楽再生デバイス] JAV X-DDC plus(USB2.0接続)

    ですから、NASのことはサッパリ判りませんし、他のPCについてもハテナです。ですが、カーネル作成に関してすることは変わりません。場合によってはmake menuconfigでNASや他PCに必要なドライバー(や設定)が必要かもしれませんが、不必要なような気もします。
    OSに関してですが、TinyCore5.4(カーネル3.8.13)のマシーンでLinuxカーネル3.8.13のカスタマイズをします。他のバージョンについては……余りにも多くの回数・パターンを試み、失敗してきたので覚えていません(苦笑)。ただ、マシーンのカーネルのバージョンとカスタマイズしたいカーネルのバージョンが違うとあまりうまく行かなかったような気がします。失敗した時は次の様になります。

    ・makeでErrorが出る (makeに必要なtczが不足しているか、マシーンのとカスタマイズのカーネル不一致(?))
    ・makeに成功しカスタマイズカーネルで起動させたが立ち上がらない (環境に必要なモジュールが不足している可能性大。make menuconfigを見直す)
    ・カスタマイズの起動に成功したが、音楽の再生が出来ない(“aplay -l”コマンドで音楽再生のデバイスが表示されなければ、alsaがカーネルのバージョンに合ってない)

    あくまでも一例ですので、他の不具合があるかもしれません。このような不具合に私、頭はピーマンがお答えできればいいのですが、何せ[ミ]ですので期待薄です。その為、自己解決できる様にカスタマイズの際参考にさせてもらったサイトについてURLを豊富に載せたいと思います。

    (0)環境を整える – TinyCore5.4のインストールと設定 [所要時間45分]

    — 作業の流れ —

    【TinyCoreインストール】-【パスワード設定】-【opensshのインストールと設定・実行(+IPアドレスの固定化)】-【NAS(SATA)のマウント】-【alsaのインストール】-【mpdのインストール】-【音楽再生デバイスの確認】

    ——————

    こちらの「TinyCore linuxを試してみる(1~3)」通りに基本的に進めればOKです。異なる点だけ説明したいと思います。
      ・現時点で「ヘッドレス化」はしていません。
      ・alsaとmpdはtczをインストールしているのみです
    なるべく設定をシンプルにして、トラブルを抱え込まないようにします。
    さらに、TinyCore5.4のインストールと設定後、「確実」に以下のことをしてください。
      ・音楽再生デバイス(USB-DACやUSB-DDC)を接続し認識しているのを“aplay -l”で確認
      ・音楽データの入ったNASやSATA接続HDDをマウント
    aplayは私の場合以下のように表示されます。
      tc@box:~$ aplay -l
      **** List of PLAYBACK Hardware Devices ****
      card 0: J20 [JAVS USB Audio 2.0], device 0: USB Audio [USB Audio]
      Subdevices: 1/1
      Subdevice #0: subdevice #0

    また、SATA接続(NTFSの)HDDのマウントは次のようにしています。
      tc@box:~$ sudo mount -t ntfs -o nls=utf8,noatime /dev/HDDディレクトリー /music(マウント先)

    (1)必要なファイルlinux-3.8.13-patched.txzとconfig-3.8.13-tinycore、core.gzを集める [所要時間10分]

    — 作業の流れ —

    【linux-3.8.13-patched.txzをダウンロード】-【config-3.8.13-tinycoreをダウンロード】-【TinyCoreのブートパーティションからcore.gzをコピー】-【linux-3.8.13-patched.txzを解凍】-【linux-3.8.13-patchedにディレクトリーに移動】-【config-3.8.13-tinycoreをlinux-3.8.13-patchedにディレクトリーに.configという名でコピー】

    ——————

    【linux-3.8.13-patched.txzをダウンロードします】
      tc@box:~$ wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/src/kernel/linux-3.8.13-patched.txz
    【config-3.8.13-tinycoreをダウンロードします】
      tc@box:~$ wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/src/kernel/config-3.8.13-tinycore
    【core.gzをコピーします】
      tc@box:~$ sudo mkdir /b
      tc@box:~$ sudo mount /dev/sd*1 /b
      tc@box:~$ sudo cp /b/core.gz cr.gz
      tc@box:~$ sudo umount /b
    マウントポイントの/bに特に意味はなくbが好きなだけです。またコピーしたcore.gzは後に名前がバッティングしないようにcr.gzにしています。*印は環境によりますので、fdisk -lコマンドでTinyCoreのブートパティション(Boot欄に*が立っています)を調べてください。
    【linux-3.8.13-patched.txzを解凍します】
      tc@box:~$ tar xvf linux-3.8.13-patched.txz
    解凍すると、linux-3.8.13-patchedというディレクトリーが出現します。これがカーネルの素になります。makeする時はこのディレクトリー内で行います。
    【linux-3.8.13-patchedにディレクトリーに移動します】
      tc@box:~$ cd linux-3.8.13-patched
    【config-3.8.13-tinycoreを今のディレクトリーに.configという名でコピーします】
      tc@box:~$ sudo cp ../config-3.8.13-tinycore .config
    .configファイルはカーネル作成(make)するための設計図みたいなものです。カーネルにどういうドライバー(や設定)を組み込むかを記録しています。configファイル(config-3.8.13-tinycore)とカーネル(linux-3.8.13-patched.txz)とcore.gzは必ずカーネルのバージョンが同じなもの(ここでは3.8.13)を用意します。

    (参考サイト)
    http://www.asu.ac.jp/hachi/v3/tinycore51ja.html

    (2) カーネル作成(make)に必要なtczをtceからダウンロード・インストール [所要時間5分]

    — 全体の流れ —

    【make.tczをダウンロード】-【gcc.tczをダウンロード】-【compiletc.tczをダウンロード】-【squashfs-tools-4.x.tczをダウンロード】

    ——————

      tc@box:~$ tce-load -wi make.tcz gcc.tcz compiletc.tcz squashfs-tools-4.x.tcz
    tceで個々にダウンロード可能ですが、面倒くさいので上記の一発ダウンロードです。

    次回はいよいよmakeをします。

  8. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(3) わからない人向け[1] ~~

    今回からLinuxの知識がミジンコレベル([ミ])でも判るように説明していきたいと思います。[ミ]の定義ですが、こちらPCオーディオ実験室の「TinyCore linuxを試してみる」を実際にしたことがあるレベルの方とします。
    なお、私は最終的には100パーセントカーネルの作成に成功していますが、その環境は以下のようになります。

    [PC]APU.1D4 [起動ドライブ]USBメモリー8G・SDカード8G [OS]TinyCore5.4(カーネル3.8.13) [音楽データHDD接続]SATA [音楽再生デバイス] JAV X-DDC plus(USB2.0接続)

    ですから、NASのことはサッパリ判りませんし、他のPCについてもハテナです。ですが、カーネル作成に関してすることは変わりません。場合によってはmake menuconfigでNASや他PCに必要なドライバー(や設定)が必要かもしれませんが、不必要なような気もします。
    OSに関してですが、TinyCore5.4(カーネル3.8.13)のマシーンでLinuxカーネル3.8.13のカスタマイズをします。他のバージョンについては……余りにも多くの回数・パターンを試み、失敗してきたので覚えていません(苦笑)。ただ、マシーンのカーネルのバージョンとカスタマイズしたいカーネルのバージョンが違うとあまりうまく行かなかったような気がします。失敗した時は次の様になります。

    ・各makeでErrorが出てmakeが出来ない (makeに必要なtczが不足しているか、マシーンのとカスタマイズのカーネル不一致(?))
    ・makeに成功しカスタマイズカーネルで起動させたが、TinyCoreが立ち上がらない (環境に必要なモジュールが不足している可能性大。make menuconfigを見直す)
    ・カスタマイズの起動に成功したが、音楽の再生が出来ない(“aplay -l”コマンドで音楽再生のデバイスが表示されなければ、alsaがカーネルのバージョンに合ってない)

    あくまでも一例ですので、他の不具合があるかもしれません。このような不具合に私、頭はピーマンがお答えできればいいのですが、何せ[ミ]ですので期待薄です。その為、自己解決できる様にカスタマイズの際参考にさせてもらったサイトについてURLを豊富に載せたいと思います。

    (0)環境を整える – TinyCore5.4のインストールと設定 [所要時間45分]

    — 作業の流れ —

    【TinyCoreインストール】-【パスワード設定】-【opensshのインストールと設定・実行(+IPアドレスの固定化)】-【NAS(SATA)のマウント】-【alsaのインストール】-【mpdのインストール】-【音楽再生デバイスの確認】

    ——————

    こちらの「TinyCore linuxを試してみる(1~3)」通りに基本的に進めればOKです。異なる点だけ説明したいと思います。
      ・現時点で「ヘッドレス化」はしていません。
      ・alsaとmpdはtczをインストールしているのみです
    なるべく設定をシンプルにして、トラブルを抱え込まないようにします。
    さらに、TinyCore5.4のインストールと設定後、「確実」に以下のことをしてください。
      ・音楽再生デバイス(USB-DACやUSB-DDC)を接続し認識しているのを“aplay -l”で確認
      ・音楽データの入ったNASやSATA接続HDDをマウント
    aplayは私の場合以下のように表示されます。
      tc@box:~$ aplay -l
      **** List of PLAYBACK Hardware Devices ****
      card 0: J20 [JAVS USB Audio 2.0], device 0: USB Audio [USB Audio]
      Subdevices: 1/1
      Subdevice #0: subdevice #0

    また、SATA接続(NTFSの)HDDのマウントは次のようにします。
      tc@box:~$ sudo mount -t ntfs -o nls=utf8,noatime /dev/HDDディレクトリー /music(マウント先)

    (1)必要なファイル“linux-3.8.13-patched.txz”と“config-3.8.13-tinycore”“core.gz”を集める [所要時間10分]

    — 作業の流れ —

    【linux-3.8.13-patched.txzをダウンロード】-【config-3.8.13-tinycoreをダウンロード】-【TinyCoreのブートパーティションからcore.gzをコピー】-【linux-3.8.13-patched.txzを解凍】-【linux-3.8.13-patchedにディレクトリーに移動】-【config-3.8.13-tinycoreをlinux-3.8.13-patchedにディレクトリーに.configという名でコピー】

    ——————

    【linux-3.8.13-patched.txzをダウンロードします】
      tc@box:~$ wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/src/kernel/linux-3.8.13-patched.txz
    【config-3.8.13-tinycoreをダウンロードします】
      tc@box:~$ wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/src/kernel/config-3.8.13-tinycore
    【core.gzをコピーします】
      tc@box:~$ sudo mkdir /b
      tc@box:~$ sudo mount /dev/sd*1 /b
      tc@box:~$ sudo cp /b/core.gz cr.gz
      tc@box:~$ sudo umount /b
    マウントポイントの/bに特に意味はなくbが好きなだけです。またコピーしたcore.gzは後に名前がバッティングしないようにcr.gzにしています。*印は環境によりますので、fdisk -lコマンドでTinyCoreのブートパティション(Boot欄に*が立っています)を調べてください。
    【linux-3.8.13-patched.txzを解凍します】
      tc@box:~$ tar xvf linux-3.8.13-patched.txz
    解凍すると、linux-3.8.13-patchedというディレクトリーが出現します。これがカーネルの素になります。makeする時はこのディレクトリー内で行います。
    【linux-3.8.13-patchedにディレクトリーに移動します】
      tc@box:~$ cd linux-3.8.13-patched
    【config-3.8.13-tinycoreを今のディレクトリーに.configという名でコピーします】
      tc@box:~$ sudo cp ../config-3.8.13-tinycore .config
    .configファイルはカーネル作成(make)するための設計図みたいなものです。カーネルにどういうドライバー(や設定)を組み込むかを記録しています。configファイル(config-3.8.13-tinycore)とカーネル(linux-3.8.13-patched.txz)とcore.gzは必ずカーネルのバージョンが同じなもの(ここでは3.8.13)を用意します。

    (参考サイト)
    http://www.asu.ac.jp/hachi/v3/tinycore51ja.html

    (2) カーネル作成(make)に必要なtczをtceからダウンロード・インストール [所要時間5分]

    — 全体の流れ —

    【make.tczをダウンロード】-【gcc.tczをダウンロード】-【compiletc.tczをダウンロード】-【squashfs-tools-4.x.tczをダウンロード】

    ——————

      tc@box:~$ tce-load -wi make.tcz gcc.tcz compiletc.tcz squashfs-tools-4.x.tcz
    tceで個々にダウンロード可能ですが、面倒くさいので上記の一発ダウンロードです。

    次回はいよいよmakeをします。

  9. ~~ ミジンコでも出来るTinyCoreのカスタマイズカーネルの作成(3) わからない人向け[2] ~~

    (2) カーネル作成(make) [所要時間65分(make bzImage=45分・make modules=10分)]

    — 作業の流れ ————————————————————–

    【USB-DAC(DCC)の認識確認】-【音楽データNAS(HDD)の認識確認】-【make localmodconfig実行】-【make menuconfig実行】-【make bzImage実行】-【make modules実行】-【make INSTALL_MOD_PATH……の実行】

    ——————————————————————————

    『本家』(http://wiki.tinycorelinux.net/wiki:custom_kernel)のサイトをご覧になった方の中には「なんで“make oldconfig”しないの?」と思われる方もいらっしゃるかもしれませんので、まず説明したいと思います。
    “localmodconfig”の代わりに“oldconfig”をし、以降同じ過程でbzImage(=vmlinuz)とcore.gzの作成は何の問題もなく出来るのですが、いざブートパーティションに載せようとする際、問題が生じます。作成されたbzImageのサイズは2.9M程度。また同じくcore.gzのサイズはgzで圧縮された状態で凡そ20.0Mほど。トータル20~23Mのサイズになります。たかが20M程度で問題ないように思われますが、なんとブートパーティションのサイズは15.9Mしかありません。つまりブートパーティションに乗らないのです。そうすると以下のような選択を強いられます。
    1.menuconfigで頑張って不必要なドライバー(設定)を削って最終的にcore.gzを12M程度になるようにする
    2.別途USBメモリ(SDカード)を用意し、ブートパーティションを拡大させた2つのパーティションを作成し引越す
    3.別のラクチンな方法を考える
    すべての方法を試しました。1は何度も何度も試す必要がありその度に2時間浪費し心が折れますし、2は需要があれば説明いたしますが、不必要なモジュールを組み込んでいるのが釈然としません。よって3の方法を選択します。
    “localconfig”は何をしているかというと、「利用しているモジュールを確認し、カーネルにロードされていないものを自動的にコンフィグから外してくれる」という、私のような[ミ]には大変有難い機能みたいです。「カーネルにロードされている」というのが具体的に何を指しているのか[ミ]にはよく判りませんが、「音楽再生に必要なデバイスが認識され、alsaやmpdがオンブートでロードされている」ような状態で試してみたところ、うまく行きました。サイズもcore.gz=4.3M、vmlinuz=2.9Mと余裕で乗せられるようになりExcellentです。
    よって今一度、音楽再生デバイスが認識されているか確認します。

    【USB-DAC(DCC)の認識確認】
      tc@box:~/linux-3.8.13-patched$ aplay -l
    【音楽データNAS(HDD)の認識確認】
      tc@box:~/linux-3.8.13-patched$ df
    【make localmodconfig実行】
      tc@box:~/linux-3.8.13-patched$ make localmodconfig
    しばらく待ちますと“tc@box:~/linux-3.8.13-patched$”の入力待ちに戻ります。この入力待ちの一つ上の行で“Error”の表示がなければ、うまく行っています。(以降、各makeでも同様で、一つ上の行で“Error”がなければOKです)
    【make menuconfig実行】
      tc@box:~/linux-3.8.13-patched$ make menuconfig
    しばらくすると、カラフルな画面に変わります。「上下キー」で項目の移動をし、矢印がある項目は「Enterキー」で更に詳しい設定画面に移動。「スペースキー」を押して、[]は除外・[*]はビルトイン(起動時に自動的に読み込まれるらしいです。おそらくvmlinuzに(?))・[M]はモジュール(必要に応じて読み込まれる?core.gzに?)になります。
    色々な設定項目がありますが、[ミ]である私は3項目だけ設定確認します。

    (1)Preemptible Kernelの設定
    「Processor type and features」-「Preemption Model (Voluntary Kernel Preemption (Desktop))」-「Preemptible Kernel (Low-Latency Desktop)」を選択
    (2)ファイルシステムの設定
      2-1 SATA接続(NTFS)HDDの場合
    「File systems」-「DOS/FAT/NT Filesystems」-「NTFS file system support」に“M”or“*”
      2-2 NASの場合(私には判りませんので推測です)
        「File systems」-「Network File Systems」に[*]。さらに詳細項目へ-「??」
    (3)alsa関連の設定ですが、詳しくはhttps://www.gentoo.org/doc/ja/alsa-guide.xmlを参照
    「Device Drivers」-「Sound card support」で“M”か“*”になっているのを確認。さらに詳細項目へ-「Advanced Linux Sound Architecture」Mor*さらに詳細項目-「USB sound devices」を確認

    設定がおわりましたら、menuconfigのトップに戻り、確実に「Save an Alternate Configuration File」でEnterを押し.configに保存します。
    【make bzImage実行】
      tc@box:~/linux-3.8.13-patched$ make bzImage
    45分待ちます。
    【make modules実行】
      tc@box:~/linux-3.8.13-patched$ make modules
    10分待ちます。
    【make INSTALL_MOD_PATH……の実行】
    まず、カスタマイズされたcore.gzを作るための材料になるmodulesとfirmwareを格納するディレクトリーを外に作り、そこにインストールします。
      tc@box:~/linux-3.8.13-patched$ sudo mkdir ../m
      tc@box:~/linux-3.8.13-patched$ sudo make INSTALL_MOD_PATH=../m modules_install firmware_install

    次回はvmlinuzとcore.gzを作成します。

    (参考サイト)
    http://slashdot.jp/story/09/12/04/082257/
    http://d.hatena.ne.jp/meech/20101212/1292165676
    http://www.itmedia.co.jp/help/howto/linux/kernel24/09.html

  10. こんにちは。私はTinyCoreLinux V7.2(x86版)で同じようにmpdのインストールとlowlatencyカーネルの生成までやってみました。

    理論的には同じカーネルバージョン+同じハードウェアタイプでカーネルを作成すればinitrdとモジュールのパッケージは流用できますが、最近のカーネルはマジックナンバーが一致しないと「モジュールが一致しない」と出力されて認識できません。そこで、下記の方法で対応しました。

    1.カーネルバージョンは標準版と被らないように”-lowlatency”をバージョン末尾に追加。

    2.initrdは以下の方法で作成
     頭はピーマンさんのinitrdの作り方がその後掲載されていないようですので補足です。(bzImageはブートローダがgrub1の場合はそのままブートしました)
     私の場合はx86環境のcore v7.2でlowlatencyカーネルをビルド出来ましたが、下記のwikiの記載通りに元のinitrdをカーネルソースとは別のフォルダに解凍しておき(このフォルダを”initrd”とする)、
    その上に “make INSTALL_MOD_PATH=../initrd modules_install firmware_install”
    をかぶせて対応しました。
    http://wiki.tinycorelinux.net/wiki:remastering

    このやり方だと、元のinitrdのイメージにそのまま新しいカーネルモジュールとファームウェアが別ディレクトリ(/lib/modules/4.2.9-tinycore-lowlatency)に追加されます(元のモジュールディレクトリを削除すればサイズもほぼ同じになります)。

    3.alsa-modules他純正カーネルモジュールパッケージの回避方法
     自分の環境ではMP4(AAC)のファイルがあり、これの再生がmpd-minimalでは不可能だったため、ソースコード(v0.19.5 最新版でないのはx86版のffmpegがv1.2.2と古く最新版ではコンパイルに失敗するため)からmpdをビルドしました。
    この場合はalsa-modules以外にも以下のカーネルモジュールパッケージ(i2c・mpd・filesystems・firewire・input-joystick・v4l-dvb)が必要でそのままではブート時の正常なパッケージ読込に失敗しましたが、これら全て-lowlatencyバージョンの「空の」tczファイルを作って回避しています(必要なモジュールは全てinitrdに入っておりtczファイルでの追加は不要なため)。
    tczパッケージは下のリンクのgrandma氏のReply #4 記述通りmksqashfsで可能です(カーネルモジュール用の空のtczパッケージの場合は、/lib/modules/「カーネルバージョン」/kernelという名前のディレクトリのみ作っておくだけ。当然「カーネルバージョン」はその際のカーネルのバージョンに合わせます)。
    http://forum.tinycorelinux.net/index.php?topic=17585.0

返信を残す

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