竹丸です、こんばんは。
年末年始にちょっとアルバイトなどしておりまして(^_^;; ML的にはちょっと
ご無沙汰になっておりました〜。
Tibiな計算機を使った計測システムの通信部分をお手伝いすることになった
のですが、気が付いたら使用機種がMicroPCになっていたり、その上で動かす
Linuxが必要になっていたりしてました(^_^;;
年末年始の休み中にLinuxをスクラッチから作っていたのですが、どうしても
納期に間に合わず、結局 Debian GNU/LinuxをCompact Flash上に作って
急場をしのぎました(^_^;;
ですがこれ、使ってみると案外良い。CFのサイズが32MB予定から、128MBに
なってしまいましたが、それ以外はかなり良好です。CFの書き換え制限にも
ある程度対応しましたし、普通にapt-getして必要なものをそろえたりも
できます(^_^) ある程度の仕事ならHDはいりませんね。これで開発して
そのまま納品までできちゃう(笑)
自画自賛しておりましたら、以前こちらで三戸さんが発表されていたSS-Linux
と中身は同じなんですね(^_^;; ターゲットがPathNavigatorか、MicroPC
かの違いという・・。
せっかく勉強したので、私も成果を発表させていただいちゃいます(^_^)
バイナリもサーバにあげておきますので、遊んでみたい方、どうぞ。
竹丸がいじっているのは fstabとmountall.sh程度です。最小限のinstallに、
私がアルバイトで必要としたパッケージをapt-get installただけの、普通の
Debian GNU/Linux 3.0r2 です。仕事などにも安心して使っていただけます。
不具合ございましたら、修正しますので連絡下さい。
# スクラッチから作っていたやつもいつか発表しようと思ってます。
# 16MB CFに入りそう(^_^)
----- 以下詳細
GRUB + Debian GNU/Linux 3.0r2 on Compact Flash
==============================================
- Debian GNU/Linux 3.0r2 ベース
- Compact Flash bootable (HD不用)
- MicroPC Geode/Eden にて動作
- システムサイズ
Compact Flash 128MB (100MB使用)
Memory 128MB (システム30MB/RAMDISK32MB使用)
- Compact Flashの書き換え回数制限対応
- no swap
- /tmp, /var, /data 等の RAM DISK(tmpfs)使用
- root filesystem の noatime mount
- 完全RAM DISK運用ではないので、終了時にはshutdownしてください。
- Debianのパッケージにて自由にカスタマイズ/アップデート可能
Bootable CFの作り方
===================
% wget http://www.takemaru.com/download/minideb128_20040126.img.gz
% gunzip minideb128_20040126.img.gz
% su root
# dd if=./minideb128_20040126.img of=/dev/hdc
Login
=====
login : root
password : Debian
ネットワーク設定変更
====================
起動時には192.168.1.100 に仮設定しています。
# vi /etc/hosts
# vi /etc/hostname
# vi /etc/resolv.conf
# vi /etc/network/interfsces
# vi /etc/networks
# sync; sync; sync; reboot
Debian パッケージ管理
=====================
Debianのパッケージ管理がそのまま使えますので、システムを自由に拡張できます。
Ethernetに接続され、外部にアクセス可能なことが条件です。
# dpkg -l (インストールされているパッケージ一覧)
# apt-get install PKG_NAME (パッケージのインストール)
# apt-get --purge remove PKG_NAME (パッケージ削除)
# apt-cache search KEYWORD (KEYWORDを含むパッケージ探し)
システムの構成詳細
==================
takemaru@debian:~$ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hdc1 121203 100654 14291 88% /
tmpfs 32768 1092 31676 4% /dev/shm
/dev/shm/tmp 32768 1092 31676 4% /tmp
/dev/shm/tmp 32768 1092 31676 4% /var/tmp
/dev/shm/lock 32768 1092 31676 4% /var/lock
/dev/shm/log 32768 1092 31676 4% /var/log
/dev/shm/run 32768 1092 31676 4% /var/run
/dev/shm/data 32768 1092 31676 4% /data
takemaru@debian:~$ mount
/dev/hdc1 on / type ext2 (rw,noatime,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,size=32m)
/dev/shm/tmp on /tmp type none (rw,bind)
/dev/shm/tmp on /var/tmp type none (rw,bind)
/dev/shm/lock on /var/lock type none (rw,bind)
/dev/shm/log on /var/log type none (rw,bind)
/dev/shm/run on /var/run type none (rw,bind)
/dev/shm/data on /data type none (rw,bind)
takemaru@debian:~$ free
total used free shared buffers
cached
Mem: 238548 29020 209528 0 2008
20200
-/+ buffers/cache: 6812 231736
Swap: 0 0 0
takemaru@debian:~$ ps -ef | grep -v takemaru | sort
UID PID PPID C STIME TTY TIME CMD
root 1 0 2 11:02 ? 00:00:03 init [2]
root 2 1 0 11:02 ? 00:00:00 [keventd]
root 3 0 0 11:02 ? 00:00:00 [ksoftirqd_CPU0]
root 4 0 0 11:02 ? 00:00:00 [kswapd]
root 5 0 0 11:02 ? 00:00:00 [bdflush]
root 6 0 0 11:02 ? 00:00:00 [kupdated]
root 7 1 0 11:02 ? 00:00:00 [i2oevtd]
root 109 1 0 11:02 ? 00:00:00 [eth0]
root 161 1 0 11:03 ? 00:00:00 /sbin/syslogd
root 164 1 0 11:03 ? 00:00:00 /sbin/klogd
root 170 1 0 11:03 ? 00:00:00 /usr/sbin/inetd
root 174 1 0 11:03 ? 00:00:00 /usr/sbin/cron
root 177 1 0 11:03 tty1 00:00:00 /sbin/getty 38400 tty1
takemaru@debian:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump>
<pass>
/dev/hdc1 / ext2 errors=remount-ro,noatime
0 1
proc /proc proc defaults 0
0
tmpfs /dev/shm tmpfs size=32m 0
0
takemaru@debian:~$ cat /etc/init.d/mountall.sh
#
# mountall.sh Mount all filesystems.
#
# Version: @(#)mountall.sh 2.83-2 01-Nov-2001
miquels@cistron.nl
#
. /etc/default/rcS
#
# Mount local file systems in /etc/fstab. For some reason, people
# might want to mount "proc" several times, and mount -v complains
# about this. So we mount "proc" filesystems without -v.
#
[ "$VERBOSE" != no ] && echo "Mounting local filesystems..."
mount -avt nonfs,nosmbfs,noncpfs,noproc
mount -at proc
mkdir /dev/shm/tmp
mkdir /dev/shm/lock
mkdir /dev/shm/log
mkdir /dev/shm/run
mkdir /dev/shm/data
mount --bind /dev/shm/tmp /tmp
mount --bind /dev/shm/tmp /var/tmp
mount --bind /dev/shm/lock /var/lock
mount --bind /dev/shm/log /var/log
mount --bind /dev/shm/run /var/run
mount --bind /dev/shm/data /data
chmod -R 1777 /tmp
chmod -R 1777 /var/tmp
#
# We might have mounted something over /dev, see if /dev/initctl is
there.
#
if [ ! -p /dev/initctl ]
then
rm -f /dev/initctl
mknod -m 600 /dev/initctl p
fi
kill -USR1 1
#
# Execute swapon command again, in case we want to swap to
# a file on a now mounted filesystem.
#
doswap=yes
case "`uname -r`" in
2.[0123].*)
if grep -qs resync /proc/mdstat
then
doswap=no
fi
;;
esac
if [ $doswap = yes ]
then
swapon -a 2> /dev/null
fi
: exit 0
---
Koichiro Takemaru (竹丸広一郎)
mailto:takemaru@takemaru.com, cdmaone@takemaru.com
http://www.takemaru.com/
# Just running, Keep me running