|
このページは「24環境」の情報です 第15回 パッケージのビルド・追加実践編(CAT709) †海老原祐太郎
2003/7/2
第11回 nfsルートで大規模UNIX環境 、第12回 Debianパッケージのセルフビルド を参考にしていただいて、 今回は実際にパッケージをビルドして、CAT709のユーザーランドイメージに組み込む作業を実践してみます。 例題として 送信専用メールソフト ssmtp、ファイル添付メール送信プログラム mpack を導入してみます。 NFS-ROOTで立ち上げる †第11回 nfsルートで大規模UNIX環境の通り、CAT701の電源を入れてROMモニターから c をタイプして >c console=ttySC0,115200 root=/dev/nfs nfsroot=192.168.7.123:/SOMEWHERE/cat709-root-dir (実際には改行入れずに1行) ip=192.168.7.100:192.168.7.123:192.168.7.1:255.255.255.0:supercat s を押してNFS-ROOT環境で立ち上げます。 パッケージのビルド †以下の操作はすべてCAT709で行います。 ssmtp パッケージのソースをダウンロードします。 ~/# cd build ~/build# apt-get source ssmtp Reading Package Lists... Done Building Dependency Tree... Done Need to get 160kB of source archives. Get:1 http://ftp.jp.debian.org sid/main ssmtp 2.60.3 (dsc) [510B] Get:2 http://ftp.jp.debian.org sid/main ssmtp 2.60.3 (tar) [159kB] Fetched 160kB in 15s (10.5kB/s) dpkg-source: extracting ssmtp in ssmtp-2.60.3 ssmtp パッケージをビルドします。 ~/build# cd ssmtp-2.60.3/ ~/build/ssmtp-2.60.3# dpkg-buildpackage -uc -us -B dpkg-buildpackage: source package is ssmtp dpkg-buildpackage: source version is 2.60.3 dpkg-buildpackage: source maintainer is Matt Ryan <mryan@debian.org> dpkg-buildpackage: host architecture is sh3 : 【略】 dpkg-deb: building package `ssmtp' in `../ssmtp_2.60.3_sh3.deb'. dpkg-genchanges -B dpkg-genchanges: arch-specific upload - not including arch-independent packages dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) ~/build/ssmtp-2.60.3# ssmtp_2.60.3_sh3.deb パッケージが出来上がりました。 同様にして mpack パッケージも作ります。 ~/build# apt-get source mpack Reading Package Lists... Done Building Dependency Tree... Done Need to get 160kB of source archives. Get:1 http://ftp.jp.debian.org sid/main mpack 1.5-9 (dsc) [703B] Get:2 http://ftp.jp.debian.org sid/main mpack 1.5-9 (tar) [155kB] Get:3 http://ftp.jp.debian.org sid/main mpack 1.5-9 (diff) [4077B] Fetched 160kB in 10s (15.8kB/s) dpkg-source: extracting mpack in mpack-1.5 Not setting time of file decode.c (time mismatch) Not setting time of file unixos.c (time mismatch) Not setting time of file unixpk.c (time mismatch) Not setting time of file unixpk.man (time mismatch) Not setting time of file unixunpk.man (time mismatch) Not setting time of file uudecode.c (time mismatch) mpack パッケージをビルドします。 ~/build# cd mpack-1.5/ ~/build/mpack-1.5# dpkg-buildpackage -uc -us -B dpkg-buildpackage: source package is mpack dpkg-buildpackage: source version is 1.5-9 dpkg-buildpackage: source maintainer is Richard Braakman <dark@xs4all.nl> dpkg-buildpackage: host architecture is sh3 : 【略】 dpkg-deb: building package `mpack' in `../mpack_1.5-9_sh3.deb'. dpkg-genchanges -B dpkg-genchanges: arch-specific upload - not including arch-independent packages dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) mpack_1.5-9_sh3.deb パッケージが出来上がりました。 パッケージのインストール †(私の環境では メール送信に exim が動いているので exim をアンインストールしてから ssmtp を入れています) ~/build# dpkg -r exim ~/build# dpkg -i ssmtp_2.60.3_sh3.deb ~/build# dpkg -i mpack_1.5-9_sh3.deb ちなみに、ssmtp は /etc/ssmtp/ssmtp.conf に設定ファイルがあり、重要なのはmailhub= の行になります。 # The person who gets all mail for userids < 1000 root=postmaster mailhub=YOUR_SMTP_SERVER(ipaddress or hostname) hostname=supercat.si-linux.co.jp 動作試験をします。 ~# mail ebihara@si-linux.com Subject: test1 test1 . Cc: ~# mpack -s サブジェクト ファイル ebihara@si-linux.com 動作確認がとれました。 さてこの段階では NFS-ROOT上で動いているので動いて当然というか、 まず、ssmtpパッケージの構成ファイル一覧を取得し、覚えておきます。 (dpkg --contents コマンド) ~/build# dpkg --contents ssmtp_2.60.3_sh3.deb drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./ drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./etc/ drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./etc/ssmtp/ -rw-r--r-- root/root 200 2003-07-02 15:51:09 ./etc/ssmtp/revaliases drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./usr/ drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./usr/lib/ drwxr-xr-x root/root 0 2003-07-02 16:34:36 ./usr/sbin/ -rwxr-xr-x root/root 22292 2003-07-02 16:34:35 ./usr/sbin/ssmtp drwxr-xr-x root/root 0 2003-07-02 16:34:36 ./usr/share/ drwxr-xr-x root/root 0 2003-07-02 16:34:36 ./usr/share/doc/ drwxr-xr-x root/root 0 2003-07-02 16:34:37 ./usr/share/doc/ssmtp/ -rw-r--r-- root/root 2259 2003-07-02 15:51:10 ./usr/share/doc/ssmtp/README -rw-r--r-- root/root 1619 2003-07-02 15:51:10 ./usr/share/doc/ssmtp/CHANGELOG_OLD.gz -rw-r--r-- root/root 664 2003-07-02 15:51:10 ./usr/share/doc/ssmtp/README.Debian -rw-r--r-- root/root 605 2003-07-02 15:51:10 ./usr/share/doc/ssmtp/copyright -rw-r--r-- root/root 4726 2003-07-02 15:51:10 ./usr/share/doc/ssmtp/changelog.gz drwxr-xr-x root/root 0 2003-07-02 16:34:35 ./usr/share/man/ drwxr-xr-x root/root 0 2003-07-02 16:34:36 ./usr/share/man/man8/ -rw-r--r-- root/root 422 2003-07-02 15:51:09 ./usr/share/man/man8/newaliases.8.gz -rw-r--r-- root/root 2710 2003-07-02 15:51:08 ./usr/share/man/man8/ssmtp.8.gz -rw-r--r-- root/root 381 2003-07-02 15:51:09 ./usr/share/man/man8/mailq.8.gz lrwxrwxrwx root/root 0 2003-07-02 16:34:35 ./usr/lib/sendmail - > ../sbin/sendmail lrwxrwxrwx root/root 0 2003-07-02 16:34:36 ./usr/sbin/mailq -> ssmtp lrwxrwxrwx root/root 0 2003-07-02 16:34:35 ./usr/sbin/newaliases -> ssmtp lrwxrwxrwx root/root 0 2003-07-02 16:34:35 ./usr/sbin/sendmail -> ssmtp lrwxrwxrwx root/root 0 2003-07-02 16:34:36 ./usr/share/man/man8/sendmail.8.gz -> ssmtp.8.gz この中から察するに、/usr/share/doc と /usr/share/man は組み込み機器には不要そうです。 同様に mpack パッケージも構成ファイル一覧を調べておきます。 ~/build# dpkg --contents mpack_1.5-9_sh3.deb drwxr-xr-x root/root 0 2003-07-02 16:27:38 ./ drwxr-xr-x root/root 0 2003-07-02 16:27:37 ./usr/ drwxr-xr-x root/root 0 2003-07-02 16:27:37 ./usr/bin/ -rwxr-xr-x root/root 20176 2003-07-02 15:44:11 ./usr/bin/mpack -rwxr-xr-x root/root 32664 2003-07-02 15:44:11 ./usr/bin/munpack drwxr-xr-x root/root 0 2003-07-02 16:27:38 ./usr/share/ drwxr-xr-x root/root 0 2003-07-02 16:27:38 ./usr/share/doc/ drwxr-xr-x root/root 0 2003-07-02 16:27:38 ./usr/share/doc/mpack/ -rw-r--r-- root/root 7111 1995-02-17 06:39:41 ./usr/share/doc/mpack/README.unix.gz -rw-r--r-- root/root 1858 2003-07-02 09:00:00 ./usr/share/doc/mpack/copyright -rw-r--r-- root/root 1117 2003-07-02 09:00:00 ./usr/share/doc/mpack/changelog.Debian.gz drwxr-xr-x root/root 0 2003-07-02 16:27:37 ./usr/share/man/ drwxr-xr-x root/root 0 2003-07-02 16:27:38 ./usr/share/man/man1/ -rw-r--r-- root/root 932 2003-07-02 16:25:41 ./usr/share/man/man1/mpack.1.gz -rw-r--r-- root/root 1569 2003-07-02 16:25:41 ./usr/share/man/man1/munpack.1.gz こちらは /usr/bin/mpack だけがあればokそうですね。 ~/build# ldd /usr/sbin/ssmtp libnsl.so.1 => /lib/libnsl.so.1 (0x29579000) libc.so.6 => /lib/libc.so.6 (0x2959d000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x29556000) libc とダイナミックリンカー(ld-linux)の 他には/lib/libnsl.so.1 が必要だということがわかりますが、 ~/build# ldd /usr/bin/mpack libc.so.6 => /lib/libc.so.6 (0x29579000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x29556000) mpack には libc だけあればokですね。 CAT709をFLASH ROMで起動する †CAT701を再起動してROMモニターから c をタイプしてカーネルコマンドラインを >c console=ttySC0,115200 root=1f02 ro root でログインして、flashメモリーに書き込めるようにします。 # rommode rw # mount 192.168.7.123:/home/ebihara/cat709-root-dir/ /mnt 先ほど調べて必要だと思われたファイルと設定ファイルなどを開発機のNFSからコピーしてきます。 ~# cp -a /mnt/etc/ssmtp /etc ~# cp -a /mnt/usr/sbin/ssmtp /usr/sbin/ ~# cd /usr/sbin/ /usr/sbin# ln -s ssmtp mailq /usr/sbin# ln -s ssmtp newaliases /usr/sbin# ln -s ssmtp sendmail /usr/sbin# cd .. /usr# cd lib/ /usr/lib# ln -s ../sbin/sendmail sendmail 同様に mpack もコピーしてきます。 ~# cp -a /mnt/usr/bin/mpack /usr/bin/ 最後に ライブラリが足りているか確認をしてみます。 ~# /lib/ld-linux.so.2 --list /usr/sbin/ssmtp libnsl.so.1 => /lib/libnsl.so.1 (0x29559000) libc.so.6 => /lib/libc.so.6 (0x2957d000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x52aaa000) ~# /lib/ld-linux.so.2 --list /usr/bin/mpack libc.so.6 => /lib/libc.so.6 (0x29559000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x52aaa000) さっきと同様に動作試験をします。 ~# mail ebihara@si-linux.com Subject: test1 test1 . Cc: ~# mpack -s サブジェクト ファイル ebihara@si-linux.com 動作しましたか?これで無事 CAT709単体で動作する装置の完成です。 ユーザーランドイメージファイルを作る †では量産に向けて、ユーザーランドイメージファイルを作ります。 今度は開発機で操作します。CAT709はしばらくお休みです。 ユーザーランドイメージファイルを展開します。 ~# mkdir project/shtips_rensyu ~# cd project/shtips_rensyu project/shtips_rensyu# tar xzfv /CDROM/userland/target-2003-06-17.tgz 先ほど、NFS-ROOT → CAT709のFLASHROM にファイルをコピーしたのと同じやり方で project/shtips_rensyu# cp -a /home/ebihara/cat709-root-dir/etc/ssmtp target/etc/ project/shtips_rensyu# cp -a /home/ebihara/cat709-root-dir/usr/sbin/ssmtp target/usr/sbin/ project/shtips_rensyu# cp -a /home/ebihara/cat709-root-dir/usr/bin/mpack target/usr/bin/ project/shtips_rensyu# cd target/usr/sbin/ project/shtips_rensyu/target/usr/sbin# ln -s ssmtp mailq project/shtips_rensyu/target/usr/sbin# ln -s ssmtp newaliases project/shtips_rensyu/target/usr/sbin# ln -s ssmtp sendmail project/shtips_rensyu/target/usr/sbin# cd ../lib project/shtips_rensyu/target/usr/lib# ln -s ../sbin/ssmtp sendmail project/shtips_rensyu/target/usr/lib# cd ../../../ project/shtips_rensyu# 次にイメージファイルを作成します。 project/shtips_rensyu# mkfs.jffs2 -r target/ -p -l -e 0x10000 -o rootfs.img project/shtips_rensyu# ls -l 合計 5377 -rw-r--r-- 1 root root 5505024 7月 2 16:59 rootfs.img drwxr-xr-x 18 root root 432 4月 5 04:55 target これで JFFS2 ファイルシステム形式の rootfs.img が出来上がりましたので 開発機で kermit を立ち上げます。すでに kermit が立ち上がっているときは ctrl+\ , C で (/home/ebihara/project/shtips_rensyu/) C-Kermit>cd project/shtips_rensyu (/home/ebihara/project/shtips_rensyu/) C-Kermit>ls 合計 5377 -rw-r--r-- 1 root root 5505024 7月 2 16:59 rootfs.img drwxr-xr-x 18 root root 432 4月 5 04:55 target (/home/ebihara/project/shtips_rensyu/) C-Kermit>rootfs rootfs.img rootfs download mode. send 'rootfs.img' file via xmodemdownload_and_write (start=80100000,len=00700000) buffer =8cSending rootfs.img, 43008 blocks: Give your local XMODEM receive command now. Xmodem sectors/kbytes sent: 79/ 9k rootfs を転送するマクロを使って rootfs.img ファイルをダウンロードします。 |