カテゴリ
リンク

ご迷惑をおかけします。以前の記事とリンクが切れています。ただいま修復中です。
当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

2007年6月...アーカイブ

■どうしてスタティック・リンクのバイナリ?
  通常の Linux の実行ファイルは、ダイナミック・リンクで構成されています。C などで書かれたプログラムは、標準関数などライブラリに入っている関数を多く利用しています。そういったライブラリを、コンパイル時にプログラムと結合するのがスタティック・リンク、実行時に結合するのがダイナミック・リンクです。
  ダイナミック・リンクの場合には、実行時に必要なライブラリがないといけません。ここで使う tar は、Debian etch でコンパイルしますが、実行は玄箱PROのフラッシュ起動環境です。そのため、必要なライブラリ・ファイルがなく、実行できません。ライブラリをコピーする方法もありますが、ここではスタティック・リンクとします。
■カーネルをテストする
  再構築したカーネルは、入れ替える前にテストしてみます。まず、uImage.buffalo を収めているディレクトリをマウントします。root で、以下を実行します。
mount /dev/sda1 /mnt
 uImage をコピーします。カーネルをコンパイルしたディレクトリで、以下を実行します。
■カーネル・モジュールを作成する
  カーネル・モジュールを作成するには、カーネルを構築したのと同じディレクトリで以下を実行します。
make modules
 実行すると以下のようになります。
■カーネルの再構築
 
 いよいよ、カーネルを再構築します。再構築には、gcc, make, patch コマンドなどが必要です。apt を使ってインストールしておきます。まず、CD-ROM から、カーネル・ソースlinux-2.6.12_lsp.1.10.3.src.tar.gz を玄箱PRO にコピーしておきます。.
 config ファイルとパッチをまとめたファイルkern-patch.tar.gz[1]もコピーします。適当なディレクトリに、カーネル・ソースと kern-patch.tar.gz を展開します。
■mkimage のコンパイル
 
 カーネルの起動イメージを作成するのに必要な mkimage を作成します。玄箱PRO付属のCD-ROM から u-boot.src.tar.gz をコピーします。コピーしたら適当なディレクトリで展開します。
tar xzf u-boot.src.tar.gz
 展開された u-boot ディレクトリに移動し、
■開発環境を整える (apt-get install)
 インストールした直後は、gcc などの開発環境はインストールされていないので、apt で追加します。
apt-get install gcc make libc-dev libc6-dev
 実行すると以下のようになりました。
■アップデートする
  Deian化した後の環境を整えます。まず、root でログインするか、su で root になります。パッケージ・リストをアップデートし、パッケージをアップグレードします。最初に、次を実行します。
apt-get update
 実行すると次のようになります。
■HDD 起動に設定している場合の Debian 化
 すでに HDD 起動するように設定したハードディスクの場合は、上記のスクリプトでは失敗します。そこで手で最初の作業をします。以前のデータはすべて消去されるので注意してください。

■フラッシュから起動する
  まず TeraTerm などでシリアル・コンソールが使えるようにしておきます。そして uBoot が、<<system_bootend>> を出した次の Hit any key to stop autoboot: で何か文字を入力して起動を中断します:

■Debian 化とは
  ここでの Debian 化では、ファイルは HDD にインストールし、玄箱Pro を HDD から起動できるようにします。HDD 起動するための玄箱Pro オリジナルの手順は以下のようになっています。

(1) HDD のフォーマット(パーティションを切って、フォーマットする)/dev/sda1 ext3fs 50MB uImage 用 (uImage.buffalo だけを収める)
  /dev/sda2 xfs 3GB / パーティション
  /dev/sda3 swap 128MB swap パーティション
  /dev/sda4 xfs 残り 空きパーティション
(2) uImage (uImage.buffalo) のコピー
(3) hddrootfs.tar.gz の展開
(4) uboot の環境変数の書き換え

 EABI, OABI 問題を発生させるのは (1) です。なにが起きるかというと、Debian GNU/Linux 4.0 (etch) にあわせて OABI でコンパイルしたカーネルで起動して、EABI でコンパイルされた mkfs.xfs でフォーマットした /dev/sda2, /dev/sda4 を mount すると、パーティションの内容を壊してしまいます。

 また (3) で展開するときにフラッシュ・メモリに収められている tar がパーミッションなどを正しくセットできない制限版であるという問題があります。

■問題の解決のために
 そこで、xfs ではなく、ext3fs (Debian etch でコンパイル、スタティック・リンク)でフォーマットし、

■追加パッケージのインストール
 
 最後に最低限、必要なパッケージをインストールしておきます。まず、/etc/apt/sources.list を更新(コピー)した場合は aptitude を実行します。
 aptitude update
 追加で telnet, ssh, dhcpcd, less をインストールします。
 aptitude install telnet ssh dhcpcd less
 しばらくすると、

■/etc を整える
 前回までに、debootstrap の実行が終了しました。次に /etc を整えます。/etc ディレクトリのファイル fstab, hostname, hosts, inittab, resolv.conf, default/halt, network/interfaces, apt/sources.list を変更します。

 いまの設定を引き継ぐならコピーします。またresolv.conf は、DHCP を使う場合はコピーしなくてかまいません(DHCP で上書きされるため)。コピーする場合は次のようにします。


■はじめに
 Debian 化するのに利用した hddrootfs.tar.gz はどうやって作るのでしょうか。ここでは、Debian GNU/Linux インストールガイドD.3. Unix/Linux システムからの Debian GNU/Linux のインストール, にしたがって、インストール後のディレクトリを構築し、それを hddrootfs.tar.gz としてまとめていく手順を紹介します。すべての作業は、Debian 化した玄箱PRO で行います。
 以降の作業は root で行います。kurobox ユーザの場合は su コマンドで root になってください。

kurobox@kurobox:~$ su
Password:           ← root のパスワード (kuroadmin) を入力する
kurobox:/home/kurobox#

 作業用ディレクトリは、/home/work, インストール・イメージは /home/root とします。それぞれのディレクトリを、
mkdir /home/work
mkdir /home/root

として作成しておきます。/home には 200Mバイト から 250Mバイト の空きが必要です。

■Debian とは
 
 Debian は Linux のディストリビューションの一つです。Linux の開発はカーネルと周辺(ユーザランド)のプログラムが分かれていますが、実際に使う場合には両方が必要です。両方をまとめたものをディストリビューションと呼んでいます。Debian の特徴は、パッケージング・システムが強力なことにあります。

 一方、FreeBSD, NetBSD, OpenBSD などは、カーネルとユーザランド・プログラムの開発・配布はまとめて行われています。これは歴史的な経緯が関係しています。興味がある方はLinux, *BSD の歴史を調べてみると面白いでしょう。

■Debian 化するメリット
 ディストリビューションを使わず、必要なプログラムを一つずつコンパイルしてインストールしていくことも、もちろん可能です。


■玄箱PROとは
  玄箱PROは、Linux を搭載した小型のコンピュータです。CPU は、ARM9 ベースの組み込み向けプロセッサです。購入した時点では HDD を内蔵していませんが Serial-ATA の HDD を内蔵することができます。内部にS-ATA のコネクタが二つ(内蔵できる HDD は1台)、シリアル・ポート(3.3V レベル), I2Cポート、GPIOポート、PCI-Express スロット, 背面には USB 2.0 コネクタが二つとイーサネット・コネクタがあります。

  玄箱Pro 外箱玄箱Proの内容物

■シリアルコンソールを利用するための準備をする

  玄箱PRO が正しく動作しているときには、ネットワークからログインをすることができます。しかし、カーネルの書き換えやネットワーク設定が間違っている場合などは、ログインできなくなってしまいます。そこで、シリアル・コンソールを利用するための準備をします。


おすすめ書籍
Powered by
Movable Type 4.1