SiliconLinuxBuilder2.0


SiliconLinuxとは、ROMDISK上で動作するlinuxディストリビューションです。
SiliconLinuxBuilder とは 自分用にカスタマイズしたSiliconLinuxを作るためのツールです。


目次

無保証

ここに書かれたドキュメント及びここで説明している実行ファイルは無保証である。

ライセンス

  • silinuxbuilder 実行プログラム(シェルスクリプト)は海老原祐太郎が著作権を持つ著作物である。GPLライセンスの元に改定・再配布可能である。
  • si-linux-chroot.tgz は Debian GNU/Linux の main セクションに含まれているプログラムで構築された。各プログラムの著作権は各プログラムの作者が所有する。
  • si-linux-chroot.tgz にはシェル(bash)やエディタ(vi)等が収録されている。これらのソースリストは以下のいずれかの方法で入手できる。
  1. DebianのFTPサイトからダウンロード可能 (ftp://ftp.debian.org/debian/dists/woody/main/source/)

SiliconLinuxBuilder概要 

siliconlinux-2.00pre1 は Debian 3.0(woody) Kernel2.4.19 ベースになっています。
本プログラムを実行する手順について概要を書きます。
(ここは深く考えずに読み飛ばしてもらっても大丈夫です。)

  1. 開発機にて、SiliconLinuxのベースアーカイブ(si-linux-chroot.tgz)を展開する。(新規プロジェクト開始)
  2. これをターゲット機の「とりあえずの」実行環境とする。(「とりあえずの」実行環境は ./chroot/ ディレクトリ)
  3. 「とりあえずの」実行環境を編集するときは開発機にて chrootコマンドで入り込み、apt-get 等を 利用して必要なパッケージを追加・削除を行う。
  4. 「とりあえずの」実行環境には実行時には不要なファイルがたくさんあるのでこれを取り除き、実行時に必要なファイルのみを抽出する。(抽出したファイルは ./target ディレクトリに置かれる)
  5. 補佐的に、この時点で /var/log 等の不要なファイルのサイズを0に切り詰めるなどの処理を行う。
  6. 最後に抽出したファイルを /mnt にマウントしたコンパクトフラッシュ等に 圧縮しながら格納する。 SiliconLinuxBuilder を使えばこれらの作業を半自動的に行ってくれる。

開発機の準備

開発用PCを用意してください。

  • Debian GNU/Linux Version3.0 (woody)を基準にしています。Redhat9でも大丈夫でした。
  • CompactFlash をマウントできること必須。 (pcmcia-csやUSBカードリーダーなど)
  • X-Window system は必須ではないがあったら便利。
  • apt が使えると便利
  • sudo を入れておきましょう。
  • SiliconLinuxBuilderでは カーネルとモジュールは一切扱いません。(後述)

SiliconLinuxBuilderのインストール

  • FTPサイトから SiliconLinuxBuilder の最新版をダウンロードしてください。
    ftp://ftp.si-linux.co.jp/pub/silinux/
    http://ftp.si-linux.co.jp/pub/silinux/
    必要なファイルは以下の2個です。
    • silinuxbuilder-2.00pre1 プログラム本体(シェルスクリプト)
    • si-linux-chroot_2.00pre1.tgz ベースアーカイブ ダウンロードしたファイルを以下のディレクトリに配置します。
      # chmod 755 silinuxbuilder-2.00pre1
      # cp silinuxbuilder-2.00pre1 /usr/local/bin/silinuxbuilder
      # cp si-linux-chroot-2.00pre1.tgz /usr/local/share/si-linux-chroot.tgz
  • sudoの準備

sudoは必須ではありません。どうしても sudo を入れたくない場合は入れなくてもかまいませんが、/usr/local/bin/silinuxbuilderコマンド を root ユーザーで実行する必要があります。そうすると、キータイプ間違いなどで悲惨な事故を起こす可能性があります。できる限り sudo を入れたほうがよいと思います。

# apt-get install sudo

で sudo が入ります。/etc/sudoers ファイルを編集します。sudoについては他のドキュメントを参照してください。ここでは著者の /etc/sudoers ファイルの一部を参考に載せておきます。

# visudo (/etc/sudoers ファイルは直接編集せずかならず visudo コマンドで編集する)
# User alias specification
User_Alias      SLBLDER = ebihara, iww

# User privilege specification
root            ALL=(ALL) ALL
SLBLDER         ALL=NOPASSWD: /usr/local/bin/silinuxbuilder

意味 SLBDERというエイリアス(グループ)に ユーザー ebiharaとiwwを登録。
SLBDERの人たちは、 /usr/local/bin/silinuxbuilder というコマンドを root 権限で使える。(パスワード無しで) 以上で準備が整いました。

SiliconLinuxBuilderの使い方 

sudoがセットアップされていれば、作業は一般ユーザーで行えます。sudoが無い場合は rootユーザーになって実行してください。

$ silinuxbuilder

とオプション無しで打つとヘルプが表示されます。

ebihara@boss:~$ silinuxbuilder
SiliconLinux Builder version 2.00
(C) Jan 20/ 2001  Yutaro Ebihara ebihara@si-linux.com
this software is free-ware

Usage: silinuxbuilder {new|edit|build|install|clean}
$ silinuxbuilder コマンド 
new 新規プロジェクトの開始
edit 編集
build ファイルの抽出
install /mnt 以下にインストール
clean プロジェクトの消滅

1.新規プロジェクトの開始

$ mkdir rensyu1
$ cd rensyu1
$ sudo silinuxbuilder new
$ ls
chroot

これで rensyu1 ディレクトリの下に chroot というディレクトリができます。これがSiliconLinuxの元になります。ユーザーが開発したプログラムはこの chroot の下にコピーします。

2.パッケージの追加削除

$ sudo silinuxbuilder edit
SiliconLinux Builder version 2.00
(C) Jan 20/ 2001  Yutaro Ebihara ebihara@si-linux.com
this software is free-ware

[edit] edit chroot directory
type 'exit' when you want to exit.
bash-2.03#

キャラクタ環境の場合は 新規にシェルが起動されます。 X-Window System の場合は、新規にターミナルウィンドウが開きます。 新しい環境はターゲット木の環境の模擬なのでここで apt-get 等を利用してパッケージの追加・削除などを行ってください。 終わりましたら exit を打ってください。

3.ファイルの抽出

chroot ディレクトリの下にはターゲット機実行時には不要なファイルがたくさんあります。この時点で約80メガバイトほどのディスクを消費しています。これをROMに格納するのは無理なので実行時に必要なファイルのみを抽出します。

$ sudo silinuxbuilder build
SiliconLinux Builder version 2.00
 (C) Jan 20/ 2001  Yutaro Ebihara ebihara@si-linux.com
this software is free-ware

[build] build ./target directory
step 0 cleanup old ./target
step 1 copying files
step 2 delete unnessesary dir and files
step 3 remove log files
step 4 calc disk space
20M     ./target
Finish
okay, now, mount CompactFlash on /mnt and 'silinuxbuilder install'
$ ls
chroot  target

これで ./target/ というディレクトリに実行時に必要なファイルが抽出されます。標準の chroot-2.00を使う場合は約20メガバイト程度になります。

4.コンパクトフラッシュにインストール

あらかじめ準備の段階でCOMPACT-FLASHが使えるようになっているとします。

# cfdisk /dev/hdc (コンパクトフラッシュが /dev/hdc メディアだとして)
# mke2fs /dev/hdc1
# mount /dev/hdc1 /mnt

$ sudo silinuxbuilder install これで /mnt 以下にファイルが格納されます。
# umount /mnt 

してから取り出してください。 PCM5820用のカーネルとドライバが付属しています。PCM5820を利用の 場合は下記インストール手順に従って解凍するだけでOKです。PCM5820 以外のボードで利用する場合はカーネルとドライバをコンパイルし、 入れ替えてください。

5.カーネルとモジュールについて

silinuxbuilder ではカーネルとモジュールは取り扱いません。実行機に合わせてカーネルを構築してください。

  • カーネル linuxカーネルソースディレクトリの arch/i386/boot/bzImage を chroot/boot/ にコピーしてください。
  • モジュール linuxカーネルソースの Makefile に INSTALL_MOD_PATH= を指定すると make modules_install したときに指定したディレクトリにインストールされますので、これを利用して
    INSTALL_MOD_PATH=~sameone/proje1/chroot/
    等として対応できます。

おまけ

RTLinux

関連ツール

  • CFのバックアップリストアには DD for Windows が便利です。