田岡智志
広島大学工学部第二類
http://www.infonets.hiroshima-u.ac.jp/~taoka/
1996年10月11日
本パッケージは,FreeBSDを1枚のフロッピーディスクで動かすことのできるフロッ ピーディスク(以下,1FD BSDと省略)を作成するためのものです.PC/AT版と98 版があり,PC/AT版は2.2-961014-SNAP, 2.2-960801-SNAPと2.1.5-RELEASE,98版 は2.1.0-RELEASEのkernelとコマンド群を作ってあります.1FD BSDでは,kernel をkzipと言うコマンドにより圧縮し,またコマンド群は1つのcrunched binary fileとして作成した後,それをgzipで圧縮してあります.1FD BSD附属のkernel は,kernelのコンフィグファイルGENERICを元に作っています.但し,NFSサーバ にはなれません(クライアントにはなれます).また,1FD BSDで使えるコマン ドは以下の通りです.
マルチユーザモードで立ち上げパスワードを入力しloginできたり,pppを使っ てtelnetしたり,等ができます.1FD BSDで使うコマンドの追加,削除をするこ とも可能です(4.2章参照).
(注意)suコマンドはきちんと動いていません.psコマンドは,オプションuを付ける ことができません.passwdは1FD BSDの空き容量が少ないためこのままでは実行 できません.カーネルを作り直して小さくするか,または,コマンドを少なく しなければなりません.
(注意)本パケージで作ったFreeBSDでは,パスワードの暗号化に(FreeBSDでデフォル トの)md5方式を使うように1FD BSDのコマンドをコンパイルしています.des方 式を使いたいならば,$1FD_BSD/floppy/bin/shを$1FD_BSD/des/shと入れ 換えてから1FD BSDを作り直して下さい.(4.2章参照).
(注意)PC/AT版2.1.5-RELEASE,98版はあまりテストしていません.
1FD BSDのイメージファイルを用いた作成(UNIXマシーン:FreeBSDでなくて もできるはずです)
% su
# zcat 1FD_BSD1.1.tar.gz | tar xvf -もし,GNUのtarがあれば,
# gtar xvfz 1FD_BSD1.1.tar.gzとする.それから,新たにできるディレクトリ1FD_BSDに降りる.
# cd 1FD_BSD
(注意)以下では,このディレクトリを$1FD_BSDと表します.
# dd if=image/boot.flp of=/dev/rfd098版は
# dd if=image/boot.flp of=/dev/rfd0 bs=15k count=80とします.もし,パスワードの暗号化としてdes方式を使いたければ,
# dd if=des/boot.flp of=/dev/rfd0とする.
1FD BSDのイメージファイルを用いない作成方法(FreeBSD上に限る)
# cd $1FD_BSD
# su
# make
(注意)フロッピーディスクをマウントするポイントは/mntとしています.これ を変更したいならば,$1FD_BSD/Makefile中の変数MOUNT_PTを変更して 下さい.
PC/AT版は$1FD_BSD/kernel_conf/EMERGENCYを /sys/i386/confに,98版は$1FD_BSD/kernel_conf/EMERGENCY98を /sys/pc98/confにコピーし,編集する. 編集の方法は,FreeBSDに附属している
/usr/share/doc/handbook/handbook.asciiなどを参考にして下さい.実行例はPC/AT版は
# cd $1FD_BSD # cp kernel_conf/EMERGENCY /sys/i386/conf # cd /sys/i386/conf # vi EMERGENCY # config EMERGENCY # cd ../../compile/EMERGENCY # make depend; makeとなり,98版は
# cd $1FD_BSD # cp kernel_conf/EMERGENCY98 /sys/pc98/conf # cd /sys/pc98/conf # vi EMERGENCY98 # ./config EMERGENCY98 # cd ../../compile/EMERGENCY98 # make depend; makeとなります.
(注意)コンフィグレーションファイルEMERGENCY中のpseudo-device gzip # Exec gzipped a.out'sは消さないで下さい.
次に,作成したkernelをkzipと言うコマンドで圧縮し,kernel.kzができます.
# kzip kernel # ls -l kernel kernel.kz -rwxr-xr-x 1 root bin 1266947 Sep 4 15:47 kernel -rwxr-xr-x 1 root bin 578646 Sep 4 15:47 kernel.kzこれを,$1FD_BSD/floppyへkernelと言う名でコピーします.
# cp kernel.kz $1FD_BSD/floppy/kernelこの後,1FD BSDを作って下さい.既に作っている場合は,そのフロッピーをマ ウントした後,kernel.kzをkernelと言う名でフロッピーへコピーすれば良いで しょう.なお,kzipを用いて圧縮したkernelには制限が付きます.詳しくは, 5章を参考にして下さい.
(98版の注意)kzipは/usr/lib/kzhead.oと/usr/lib/kztail.oをリンクして kernelを圧縮します.デフォルトではこの2つのファイルはPC/AT用なので, /sys//pc98/boot/kzipbootでmake, make installを実行して98用ものに入れ換 えて下さい.
(注意)もし,作り直したカーネルが MAKEDEV std wd0 wd1 wd2 sd0 sd1 sd2 cuaa0 cuaa1 cuaa2 cuaa3 fd0 fd1 cd0 mcd0 scd0 matcd0 wcd0 st0 ft0 wt0 tun0 vty4 pty0で生成されるデバイスファイル以外のものを使うのならば, $1FD_BSD/Makefile中の変数DEVICEに追加して下さい.エントリーの名前は, /dev/MAKEDEVを見て下さい.既に,フロッピーに1FD BSDを作っているのならば, 例えば,以下のように実行します.# cd /mnt/dev # ./MAKEDEV snd0
1FD BSDのコマンド群は特殊な方法で作ってあります./bin/shが実体で,その他 のコマンドはすべてshへのハードリンクです.詳しくは,crunchのマニュア ルを見てください.なお,/usr/src以下のソースファイルすべてを展開してお く必要があります.
USRBIN = passwd login ftpとすると,/usr/bin/に入ります.
# cd $1FD_BSD # make mount_fd # make reinstall_comms
(注意)$1FD_BSD/Makefile中の変数 CRUNLIB に,コマンド群をコンパイルする時に必 要なライブラリを加える必要がある場合があります.
(注意)routeをコンパイルするところで,cc -O -I. -c route.c route.c:87: keywords.h: No such file or directory *** Error code 1 Stop. *** Error code 1 Stop. *** Error code 1 Stop. *** Error code 1 Stop.と,エラーが出ることがあります(大概はこうなります).2.2-961014-SNAPで はエラーが出ませんでした./usr/src/sbin/route
でmakeを実行 する時にkeywords.h
を作るからです.この場合はusr/src/sbin/route
でmakeを実行してから,make commsを実行し て下さい.
コマンドを減らす場合,BIN, SBIN, USRBIN, USRSBIN, USRLIBEXECにあるコマン ド名を削除してmake commsを実行して下さい.tar, gzipは容量が大きいの でこれらを削除すれば容量が小さくなります.但し,ps, telnet, telnetd, tarのどれかを削除する場合,$1FD_BSD/Makefile中の変数 CRUNLIB のエント リからps は -lm, telnet と telnetd は -ltelnet, tar は -lgnuregex を消す ことができます.
1FD BSDの暗号化はmd5方式(FreeBSDのデフォルト)を使っています.もし,des 方式に変更する場合は$1FD_BSD/Makefile中の変数 CRUNLIBの -lscrypt を -ldescryptに変更して下さい.
アカウントの作り方として,
# cd /etc # ed master.passwd 763 a sample::3302:300::0:0:Mr. Sample:/home/sample:/bin/sh . wq 817 # ed passwd 662 a sample:*:3302:300:Mr. Sample:/home/sample:/bin/sh . wq 712この操作で,master.passwd及びpasswdファイルの最下行に,エントリー されます.
# cd /etc # echo sample::3302:300::0:0:Mr. Sample:/home/sample:/bin/sh >> master.passwd # echo sample:*:3302:300:Mr. Sample:/home/sample:/bin/sh >> passwd(注意)``
>>
''を``>
''としてはいけません.
# cat "user:*:300:" >> /etc/group
# pwd_mkdb -d . master.passwdオプション「-d .」は,この場合省略可能です.省略するとパスワード のデータベースを /etc に作ります.もし,/etc以外の場所の master.passwdに対してpwd_mkdbを実行する場合は,必ず「-d directory」を付けて下さい.詳しくは,マニュアルを見て下さい.
次に,パスワードを設定します.
# passwd sample
# mkdir /home/sample # chown 3303.300 /home/sampleもしくは,
# mkdir /home/sample # chown sample.user /home/sample
次に,後者の場合のアカウントの作り方を説明します. 前者とはパスワードファイルの編集方法が異なるだけです.
# cd $1FS_BSD/floppy/etc # vi master.passwd # grep "^sample" master.passwd sample::3303:300::0:0:Mr. Sample:/home/sample:/bin/sh # vi passwd # grep "^sample" master.passwd sample:*:3303:300:Mr. Sample:/home/sample:/bin/sh # vi group # grep "user" group user:*:300:
この後,1FD BSDを作成し,それを立ち上げてから, (3)--(5)を行なって下さい. 1FD BSDを作る前に,$1FD_BSD/floppy中で(3)--(5)と同 様なことができます.ただし,この場合,pwd_mkdbのオプションとして「-d .」 を必ず付けて下さい.そうしなければ,ハードディスクのデータベースを書き換 えますので特に注意して下さい.
なお,デフォルトでは空き容量が少ないのでpasswdは実行できません.kernelま たはコマンドを小さくして下さい.他の方法はとして,パスワードをmd5方式に より暗号化した文字列を適当なOSから持ってきて,(1)のところでそ れも一緒に入力し,pwd_mkdbを用いてデータベースを書き換えて下さい.もし des方式(SunOSなど)のOSしかない場合は,1FD BSDもdes方式のものにして下さ い.
/etc
中の各ファイルは,基本的に2.2-960801-SNAPの
/usr/src/etc
または,/usr/src/etc.i386
のものを使って
います(PC/AT版2.1.5-RELEASE,98版も).不必要と思われるものは省
いています.1FD BSDに含まれるもので変更したファイルは/etc
中の master.passwd, rc, rc.local, rpc, services, sysconfig,
/usr/share/misc/termcap
です.rpc, services, termcapは必要
なも以外は削っています.rc, rc.local, sysconfigは1FD BSD用にアレ
ンジしてあります.これらは主に1FD BSDにないコマンドに関するものを
コメントアウトとしました.
echo 'makeing passwd database' mkdir /var/etc pwd_mkdb -d /var/etc /etc/master.passwd ln -s /var/etc/pwd.db /etc/pwd.db ln -s /var/etc/spwd.db /etc/spwd.dbを実行しています.もし,kernelやコマンドの容量を十分少なくしたな らばこれらを削除して下さい.
/var
は,memory filesystemを720K byteほどマウント
するようにしています.ブート時にrcで,PC/AT版は
mount_mfs -s 720 -c 1 -m 0 /dev/fd0.1400 /var98版は
mount_mfs -s 720 -c 1 -m 0 /dev/fd0.1200 /varを実行して領域を確保しています.ただしブート時に
Warning: changing optimization to space because minfree is less than 8%なるワニングが出ます(これはどうにかならないでしょうか).
/tmp
は/var/tmp
へのシンボリックリンクにしています.
/usr/src/sys/i386/boot/kzipboot/README
に以下のように書かれ
ています.
The main problem with packed kernel is the lack of symbol table, so all commands that require it, will not run. Among them: ps, savecore, *stat, etc.psコマンドのオプションuが使えないのはこのせいでしょう.もし netstatなどkernelのsymbol tableを必要とするコマンドを使いたいなら ば,kernelやコマンドを小さくしてkernelをkzipで圧縮しないで下さい.
# moused -p /dev/cuaa0 -t mousesystems # vidcontrol -m onとすれば,使えるようになります.mousedのUsageは
Usage is moused [options] -p <port> -t <mousetype> Options are -s Select 9600 baud mouse. -f Don't become a daemon -d Enable debugging messages -c Enable ChordMiddle option <mousetype> should be one of : microsoft mousesystems mmseries logitech busmouse mouseman ps/2 mmhittabとなっています.
(注意)もし,Xを立ち上げた時にはconflictするのでマウスの動き が変になります.
助言,提案,訂正等は大歓迎します.また,PC/AT版2 2.2-961014-SNAP, . 2-960801-SNAP,2.1.5-RELEASE,98版2.1.0-RELEASE 以外のバージョンで kernel, shをコンパイルされた方は,kernel, shとその時のMakefile等の変更点 を添えて送って下さい.
山形大学の阿部康一様はPC/AT版2.1.5-RELEASE用のパッケージ作成の際に協力し て頂き,ありがとうございました.
宮川晋,増田佳泰,古場正行,BSDを256倍使うための本, アスキー出版,pp. 222--240.
小松直人,1枚のFDで実現するルーターの構築法, UNIX USER(ソフト バンク), Vol. 5, No. 2,,pp. 46--53 (1996).
FreeBSDをフロッピーディスク1枚で 動かすためのパッケージ
この文書は LaTeX2HTML 翻訳プログラム Version 95 (Thu Jan 19 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds, を日本語化したもの(95 (Wed Mar 1 1995) 版)を用いて生成されました。
コマンド行は以下の通りでした:
jlatex2html -split 0 README.tex.
翻訳は Satoshi Taoka によって Fri Oct 11 09:47:50 JST 1996 に実行されました。