Index: [Article Count Order] [Thread]

Date:  Mon, 26 Jan 2004 23:37:19 +0900
From:  Koichiro Takemaru <takemaru@takemaru.com>
Subject:  [tibi-ml:0630] Debian GNU/Linux on Compact Flash
To:  tibi-ml@bakkers.gr.jp
Message-Id:  <24F3E01E-500D-11D8-8D67-000A956DA368@takemaru.com>
X-Mail-Count: 00630

竹丸です、こんばんは。

年末年始にちょっとアルバイトなどしておりまして(^_^;; 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