録箱

[last updated:2006/04/08] [since:2005/12/09]

64MB CompactFlash Linux

PCカードスロットから起動する64MBのコンパクトフラッシュを作ってみました。 このコンパクトフラッシュで、私の所持するDynabook SS S5とDynabook SS S9 の起動に成功しています。

このページは、コンパクトフラッシュLinux環境(以下、CF-Linux)作成の 手順メモと顛末記です。

目次

メモ編

要求・仕様

まず、マシンとして以下を仮定している。

メモリは256MBをRAMDISKとして利用する。

基本的な仕様は次の通り。

システム構築メモ

ソフトウェアリスト

[LFS]はLFS-6.1のパッケージ、[LFS*]はLFS-6.1のパッケージから バージョンを上げたもの、[add]が追加したパッケージ。

ソフトウェアパッケージメモ

全体的なこと
ncurses
net-tools
file
grub
modules-init-tools
bc
jfbterm
openssl
dhcpcd
mew
openssh
unzip
zip
ruby
rdtool
wireless-tools
cadaver
fuse
pkg-config
sshfs-fuse
prime
prime-el
wget
subversion
w3m
iptables
nvi
X11R6-6.8.2

なお、host.defとlinux/config.hの問題については、HLFSの文書を参考にした。

hiki
stunnel
acpid
pcmciautils

制限事項など

顛末編

VMware

今回の構築では、VMwareが大活躍しました。 特に、スナップショットが便利で、要所要所で取っておくと、 失敗しても元に戻せます。何度も助けられました。

とりとめのない時系列メモ

構築当時のログを挙げます。 [注]は、ログを後で見返した上での注記を付加しています。

2005/05/30 発端〜考察

随分と無謀なことを考えたものだ。

2005/05/30 クラッシュ対応

注1
当時はPlan9フルシステムがあって、3台のマシンにPlan9をインストールしていた。 後に、すべてOSを入れ替えた。
注2
何度か壊れているので、これ以上の修理は金の無駄。 独自規格だと苦労する。ThinkPadではHDDを簡単に入れることができたのに…。

2005/05/30 CF boot Linux考

実際のマシンは、デフォルト256MBを512MBに増設していた。 ここでの容量検討は、あくまで計画の話。

2005/05/31 CF boot Linux考(つづき)

これもまた無謀な…。

2005/06/01 CF boot Linux考(つづき)

予備領域として、/dev/hda3を2GBほど空けていた。

2005/06/05 CF boot Linux考(つづき)

2005/06/05 コンパイル

/mnt/floppyへ/dev/hda3をマウントした。なお、この時点では、 LFSを参考にすると考えておきながら、独自の方法で構築しようと しているあたり、無謀にも程があるというものである。

2005/06/07 LFS関連

注1
2005/06/06も何かごにょごにょしてたらしいが、メモが残っていない。
注2
WWWで調べた限りでは、回避方法はなかった。 どこかのメーリングリストのログで同じ現象が報告されていたが、情報源を失念。

2005/06/08 LFS関連(つづき)

2005/11/20[注] LFSつづき

別にやることができてしまったため(ぶっちゃけ情報処理技術者試験の試験勉強)、 ずいぶん間が空いてしまった。 この間に、メインマシンへのVMware 5導入などを行っている。

2005/11/20 LFSの導入について

2005/11/20 LFSに関する現在までの知見

2005/11/20 とりあえずつづき

注1
TERM環境変数にktermまたはxtermが設定されていたためかと思われる。
注2
カーネル起動後、ユーザーランドに処理が移るときの話。

2005/11/21 Steps[注]

  1. Linux on VMwareを用意(VMをコピーすればよいか)
  2. LFSのインストール
  3. LFSからソフトウェアのバージョンを上げてインストール
  4. LFSからソフトウェアを削ってインストール
  5. LFSのcramfs化
  6. ソフトウェアの追加(Mewなど)
  7. システムのcramfs化
  8. Dynabook SS/S5での起動ができるようにする
もちろん、現実には、この通りに進んでいない。予定は未定である。

2005/11/25 とりあえず試行錯誤

説明書はよく読みましょう。

2005/11/28 試行錯誤つづき

注1
実は、なくても起動できる。
注2
initrdイメージのルートファイルシステムに入るファイルは除く。

2005/11/29 ちょっと計画

後述するが、設定ファイルは置くことができなかった。

2005/11/29 ブートの実際

Dynabook SS/S5で行った。

2005/11/30 構築する環境の検討

2005/12/01 Temporary Systemから

ここで挙げたリストは、この段階では不完全で、あとでいろいろとトラブルを 引き起こしている。

2005/12/02 Temporary Systemから(つづき)

注1
繰り返しになるが、ここで挙げたリストは、この段階では不完全で、 あとでいろいろとトラブルを引き起こしている。
注2
本当はsubversionなどで必要になると思っていた。しかし、 ソフトウェアをインストールする過程でバージョンの不適合が起こったため、 インストールをキャンセルした。これらライブラリに依存するソフトウェアでは、 ソフトウェアに同梱されたライブラリを使っている。 キャンセルは、VMwareのスナップショット機能で行った。
注3
LFS bookに記述されている。
注4
ログにはこれしか書いてなかったが、実際にはカーネルソースコードの ディレクトリを指定しているはずである。
注5
ncursesでも特定のconfigureオプションが必要ということ。

2005/12/03 環境の調整

注1
Makefileに問題。 jfbterm.confでは/usr/share/fonts/jfbterm/[ファイル名]という フォントファイルを要求している。一方、/usr/share/fonts/jfbterm というディレクトリが存在しないままmake installすると、 フォントファイルが/usr/share/fonts/jfbtermという名前でコピーされる。 /usr/share/fontsディレクトリが存在しないと、make installがこける。
注2
HLFSについては、LFSのサイトに文書がある。 もっとも、この文書を捜し当てるときはgoogleを利用した。
注3
ログによると、-I/usr/includeも付けていたようだ。 取消線がしてあるので、不要だったということであろう。 /tools/libは、flexライブラリ用である。
注4
LFSに記述されている。記述されているのに忘れてしまうことは、 よくあることである(本当か?)。
注5
後のhost.defまとめを見ると、記述されていない。不要なのかもしれない。
注6
なかなかコンパイルに成功しないので、不要なオプションを削除する方向で 設定している。
注7
全てのファイルの<linux/config.h>という行を削除しているだけである。
注8
先日のlibexpatインストールは、ここで気付いた。 多分、subversionが犯人であろうが、本当の事は判らない。
注9
ここには取消線がいくつか入っている。取り消されたのは以下。

2005/12/04 環境の調整・X fonts for jfbtermまとめ(BUILD手順以外)

2005/12/04 環境の調整

注1
ここでのコマンドは、当然、chroot環境でのものである
注2
もちろん、他の実行形式とライブラリはLFS bookにあるようにstripしてある。

2005/12/05 これまでの知見など[注]

これらは特にfixしていない。とりあえず動いているので。

2005/12/05 予定

2005/12/05 追加パッケージ

ここでは/etc/acpidとなっているが、本当は/etc/acpiのはずである。

2005/12/05 状況

注1
定期的なfsckを無効にする。
注2
GNU cpでは、デバイスファイルも問題なくコピーできる。 但し、このオプションでは、シンボリックリンクはリンク先のファイルを コピーしてしまうので、更に-dも必要。-aオプション一つで-dpRと同じ効果がある。

2005/12/05 現在の問題

注1
このときは、まだ、起動したシステムからCFが読めると思っていた。
注2
/etc/acpi/acpi_handler.shに渡される引数 (正確には/etc/acpi/eventsの設定を経由するが)を/var/log/messages で確認できる。
注3
くどいようだが、本当は/etc/acpiのはずである。
注4
ログが出ると、RAM diskを圧迫する。これは望ましくない。

2005/12/06 Dynabook SS/S5のフレームバッファ

…というのは間違いである。が、他の設定よりはましである。 オプションについては、カーネル付属のドキュメントを参照されたい。

2005/12/06 acpidスクリプトについて

実は、先に自動起動スクリプトを作成していた。 LFSには、自動起動スクリプトのテンプレートがついているので、 記述は難しくないであろう。

2005/12/06 CFからの初期設定コピー[注1]

注1
まだ気付いていない。が、破局はすぐそこである。
注2
ハードウェア的に不安定だった可能性もある。
注3
この自動起動スクリプトも作成済みだったようである。 このスクリプトは、起動時に設定ファイルをRAM diskへコピーするための スクリプトである。

2005/12/07 現在の問題[注1]

注1
ここでは、まだ問題の本質を掴んでいないところから始まっている。 よって、アタリの付け所が間違っているところもある。
注2
ログではスロットと書いてあったが、PCカードを挿すスロットと混同するので、 ソケットと書いてある。以下の「ソケット」も同様。
注3
お粗末さまでした。 :-)
注4
初期の計画ではDynabook SS/S5のみをターゲットとしていたが、 できれば他のマシンでも使いたくなるのが人情というものである。 もっとも、そのために泥沼に嵌まるのはお約束である。
注5
ここでは、VMwareの仮想マシンを起動している。
注6
詳細は忘れたが、/var/log/messagesを追いかけて、 カーネルのソースコードやGentooの設定ファイルなどを当たり、 HOTPLUGのイベントにhotplugスクリプトが応答してファームウェアをロードする ことを突き止めた。
注7
udevにもファームウェアをロードする仕組みがあるはずだが、LFS 6.1では hotplugがその役目を負っていたようである。 なお、この設定は実験であり、一時的なものである。

2005/12/08 hotplug + udev

当時のDynabook SS/S5のGentooを参考にした。 最新のGentooではudev中心の方法を取っていて、この方法では行っていない。

2005/12/08 あとの作業

これについては特に書くことはないであろう。 もっと具体的には、.bashrcとか.emacsとかの作成などである。

2005/12/08 CF-Linuxの今後の展望[注]

これも、「予定は未定」ということで。

2005/12/08 仕上げ

この文書のことであるのは言うまでもない。

2005/12/09 LSF buildもうちょい

この実験は、Dynabook SS/S9で行った。

録箱

anraku@lemon.plala.or.jp