Samba-JP Top Page [ News | Documentation | Knowledge Base | Project | Event | Users Group | Mailing List ]

counter

Floppy一枚でSambaサーバを立ち上げる

2000/07/10 Ver1.01
このシステムの趣旨
 元々社内で大量のNotePCのセットアップをなんとか簡略化出来ないかというのが事の始まりです。 一度に数十台のパソコンのセットアップなんて考えただけでもおぞましい物です。購入直後ならば Windowsのプリインストールとハードウェア認識などは特に問題を起こしませんが(起こす機種もあり) MS−Officeのインストール、ブラウザの設定(Proxyなど)、不要なアイコンの削除などなど。
 その上、折角セットアップしたパソコンも数ヶ月のうちには、「なんだか調子が悪い」といって戻ってきます。 こうなると、購入直後のパソコンより手間が増えます。 ハードディスクの再フォーマット、Windowsの再インストール、周辺機器のドライバーインストール 機種が多くて、どのドライバーを使えばいいを見つけるのも結構な手間暇です。その上、最悪なのが、 「既にハードディスク上にあるデータは救済して欲しい」という要望。まだなんとかWindowsが 走っていて、LANが使えればどうにでもなるけれど、そうでなかったら・・・夜も眠れません。

 そこで作ったのがこの「FD-Samba」です。フロッピー一枚でSambaが立ち上がり、マシンに内蔵している HDDをネットワーク越しに読み書きする物です。例えば、最初に紹介したノートパソコンの大量購入時の セットアップの時は、まず、一台のノートパソコンを完璧な状態でインストールし、その後、このFD-Sambaを 立ち上げ、ハードディスクの中身を丸ごと一旦吸い上げます。2台目以降のノートパソコンには この吸い上げた中身を戻してあげれるだけで、セットアップ作業の95%は終わり。 機種毎のマシン名やTCP/IPの設定だけすれば完了です。なんらかのトラブルで再セットアップが必要に なった時も同じ要領です。ハードディスクにある大事なデータも抜き取るのは容易に可能です。

このシステムの構成

Linux(Plamo 1.44)
Kernel-2.0.36 VFAT-JP a.out形式
Samba
Samba-1.9.18p10
フロッピー一枚にLinuxを入れるのはそんなに難しく無いのですが、Sambaも入れてフロッピー一枚というのは かなりきつかったです。その上、PCMCIAをサポートさせなければなりません。ディスクトップパソコンだって ある程度サポートしたいです。取りあえず、最低限必要な物を詰め込んでなんとか形になったのでここに公開 します。

ダウンロードと使い方

フロッピーイメージファイル(基本的にこれだけあれば可能です)
floppy-pcmcia.img 1,474,560 Byte Note用
floppy-desktop.img 1,474,560 Byte Desktop用
この2つの違いはありません。下記説明の /NETWORK で PCMICA=YESかNOかの違いだけ。
modules(別の構成では必要に応じて入れ替え)
modules2036_v2.tgz 657,898 Byte
floppy.binをフロッピーに書き込んで下さい
dd if=fdsamba-{pcmcia|desktop}.img of=/dev/fd0 bs=4k
このフロッピーでマシンをブートするだけです(多分次に示す TCP/IPの設定は必要です)
成功すれば、別のWindowsパソコン(TCP/IPが動いていること)のネットワークコンピュータを開いて boot_root(デフォルトの名前)というコンピュータを探します.testというWORKGROUP名を使用しています。
※見つからない場合は「他のコンピュータの検索」でboot_rootを探してみて下さい
boot_rootをダブルクリックするとroot,mnt1,mnt2,mnt5が見えます。パスワードは 全てデフォルトでboot_rootになっています。

カスタマイズの方法

フロッピーイメージはext2形式なのでLinuxでマウントしてから修正します
mount -t ext2 /dev/fd0 /mnt
マウントすると幾つかファイルが見えますが、代表的なファイルについて説明します
  • RC
    起動時後に開始するスタートアップ部分です
  • MODULES
    moduleの読み込みを指定します。NIC(LANカード類)のドライバーやSCSIカードのドライバーを指定
  • NETWORK
    IPアドレスなどの設定とPCMCIAを使うかどうかを指定
  • bzImage
    Linux Kernel です。
  • rootfs.gz
    実際のrootファイルシステムを圧縮した物です。起動中はRAMに展開してRAMディスク上でシステムは動きます

  • /NETWORK 各人の環境に合わせて設定して下さい
    HOSTNAMEで指定した名前が Sambaサーバでのマシン名になります
    IPADDR="192.168.1.200"		# REPLACE with YOUR IP address!
    NETMASK="255.255.255.0"		# REPLACE with YOUR netmask!
    NETWORK="192.168.1.0"		# REPLACE with YOUR network address!
    BROADCAST="192.168.1.255"	# REPLACE with YOUR broadcast address
    HOSTNAME="boot_root"		# REPLACE with LIKE
    PCMCIA=NO			# NO or YES
    
    /MODULES フロッピーの関係でNIC系は4つ、SCSIは2つしか入っていません。
    これ以外が必要な場合はこの後でmoduleの追加(代わりに何かを削除)方法を説明します。
    insmod 3c509
    insmod 3c59x
    insmod eepro100
    insmod rtl8139
    insmod tulip
    insmod aha1542
    insmod aic7xxx
    
    /RC 特に凝った事はしていません。ただ PCMCIA=NO(/NETWORK)では /MODULESファイルを呼びません
    #!/bin/sh
    
    . /etc/NETWORK
    echo "$IPADDR	$HOSTNAME" >> /etc/hosts
    hostname -S $HOSTNAME
    uname -a > /etc/motd
    
    if test "$PCMCIA" = "YES" 
    then
    	/etc/rc.pcmcia start
    	sleep 5
    else
    	. /etc/MODULES
    	/etc/rc.inet
    fi
    
    
    mount -t vfat /dev/hda1 /mnt1
    mount -t vfat /dev/hda2 /mnt2
    mount -t vfat /dev/hda5 /mnt5
    
    
    nmbd -D -f /var/run/nmbd.pid
    smbd -D -f /var/run/smbd.pid
    
    echo "-------------------------------------------------------------------"
    cat /proc/modules
    echo "-------------------------------------------------------------------"
    cat /proc/mounts
    echo "-------------------------------------------------------------------"
    ifconfig eth0
    

    moduleの入れ代え作業

    言葉に表すとややこしいですが、Downloadした modules2036.tgzの中に全てのmodulesがあり これを展開したrootfs の中に追化(削除)する作業です。順を追って説明します。
    先に説明した modules2036.tgzを/tmpに展開します。
    cd /tmp; tar xvzf modules2036.gz
    floppy をマウントした中にある rootfs.gz を取り出し、解凍、マウントする
    cp /mnt/rootfs.gz /tmp
    gunzip /tmp/rootfs.gz
    mount -o loop /tmp/rootfs /mnt2
    /mnt2/lib/modules/2.0.36/以下に先ほど展開した /tmp/2.0.36/xxx から追加(削除)を行う。 現在、100%の状態なので追加する為には、不要なmoduleを削除しないと元に収まりません。 SCSI関係のmoduleは大抵の場合不要だと思います。またディスクトップの機種ではPCMCIA以下 をばっさり消すと良いでしょう。
    以上の作業が終わったら逆の手順で元に戻します
    umount /mnt2
    gzip -9 /tmp/rootfs
    cp /tmp/rootfs.gz /mnt
    一応念のため lilo コマンドを実行しておきましょう
    lilo -v -r /mnt
    以上で終りです。unmount して起動してみて下さい
    umount /mnt

    最後に
    このシステムを作るのにお世話になった下記メーリングリストの方々に感謝いたします。
    Plamo Linuxメーリングリスト・日本Sambaユーザ会メーリングリスト・FD-Linuxメーリングリスト