#! /bin/sh # # makeiso.sh -- ハードディスク消去用ブートCDの作成 # # revision history: # 0.0: Oct. 26, 2001 by Dai ISHIJIMA # 0.1: Oct. 22, 2002 (add diskinfo) # 0.2: May 1, 2004 (4.8R, disklabel, random data) # 0.3: May 1, 2004 (makefd.sh -> makeiso.sh) # # usage: # # sh makefd.sh # # workdir=/home/dai/wipe-out/current rc=$workdir/startup-j.sh binaries="$workdir/check $workdir/diskinfo $workdir/stuff" scripts="$workdir/*-j.sh" kernel=/sys/compile/GEMINIJ/kernel bins="dd echo sh test expr" sbins="init mount_cd9660" devs="all" output=/tmp/wipe-out-02j.iso # 日本語表示 (static link で作った kon) konbin="/usr/local/bin/kon /usr/local/bin/fld" koncfg="/usr/local/etc/kon.cfg" fonts="/usr/local/share/fonts/bdf/paw*.bdf" # if [ ! -f /usr/src/release/write_mfs_in_kernel.c ] ; then echo 'unable to compile "write_mfs_in_kernel"' exit 1 fi if [ ! -f $kernel ] ; then echo 'no kernel found' exit 1 fi echo "Making write_mfs_in_kernel..." # # write_mfs_in_kernel を作る # mkdir /tmp/write_mfs_in_kernel cd /tmp/write_mfs_in_kernel cp /usr/src/release/write_mfs_in_kernel.c . cc -o write_mfs_in_kernel write_mfs_in_kernel.c echo "Making file system onto MFS..." # # MFSに入れるファイルシステムを作る # cd /tmp # 18セクタ, 80シリンダ -> 9kバイト/トラック, 480トラック dd of=mfs-image if=/dev/zero count=480 bs=9216 vnconfig -s labels -c /dev/vn0 mfs-image # ディスクラベル disklabel -w -B -b /boot/boot1 -s /boot/boot2 /dev/rvn0c minimum3 newfs -t 2 -u 18 -l 1 -c 80 -i 4096 -m 5 -o space /dev/rvn0c # -t [track/cylinder] # -u [sectors/track] # -l [interleave factor] # -i [bytes/inode] # -m [MINFREE] # -o [optimize] echo "Mounting MFS..." # # MFSをマウントする # mount /dev/vn0c /mnt echo "Making device files..." # # デバイスファイルを作る # mkdir /mnt/dev cd /mnt/dev cp /dev/MAKEDEV . for i in $devs; do ./MAKEDEV $i done echo "Making tmp..." # # /tmp ディレクトリを作る # mkdir /mnt/tmp chmod 777 /mnt/tmp mkdir /mnt/mnt mkdir /mnt/cdrom echo "Making etc..." # # /etc ディレクトリを作る # mkdir /mnt/etc cd /mnt/etc echo 'root:*:0:0:Charlie &:/:/bin/sh' > /mnt/etc/passwd echo 'root:*:0:0::0:0:Charlie &:/:/bin/sh' > /mnt/etc/master.passwd pwd_mkdb -d /mnt/etc /mnt/etc/master.passwd # # # cp $rc /mnt/etc/rc chmod +x /mnt/etc/rc echo "Copying binaries..." # # /bin # mkdir /mnt/bin cd /mnt/bin for i in $bins; do #gzip < /bin/$i > /mnt/bin/$i #chmod +x /mnt/bin/$i cp /bin/$i /mnt/bin/$i done cd /mnt/bin ln 'test' '[' cp $binaries /mnt/bin cp $scripts /mnt/bin chmod +x /mnt/bin/menu-j.sh # # /sbin # mkdir /mnt/sbin cd /mnt/sbin for i in $sbins; do #gzip < /sbin/$i > /mnt/sbin/$i #chmod +x /mnt/sbin/$i cp /sbin/$i /mnt/sbin/$i done # # kon # mkdir -p /mnt/usr/local/bin cp $konbin /mnt/usr/local/bin mkdir -p /mnt/usr/local/etc cp $koncfg /mnt/usr/local/etc mkdir -p /mnt/usr/local/share/fonts/bdf cp $fonts /mnt/usr/local/share/fonts/bdf mkdir -p /mnt/var/run mkdir -p /mnt/var/tmp cp /usr/src/etc/etc.i386/ttys /mnt/etc cp /usr/src/etc/group /mnt/etc # # MFSをアンマウント # cd /tmp umount /mnt vnconfig -u /dev/vn0 echo "Compressing kernel..." # # # cp $kernel /tmp /tmp/write_mfs_in_kernel/write_mfs_in_kernel /tmp/kernel /tmp/mfs-image # # カーネルを圧縮 # cd /tmp gzip --best < /tmp/kernel > /tmp/kernel.gz chmod +x kernel.gz #exit 0 echo "Making boot floppy image..." # 18セクタ, 80シリンダ -> 9kバイト/トラック, 320トラック dd of=floppy-image if=/dev/zero count=320 bs=9216 vnconfig -s labels -c /dev/vn0 floppy-image # ディスクラベル disklabel -w -B -b /boot/boot1 -s /boot/boot2 /dev/rvn0c minimum2 newfs -t 2 -u 18 -l 1 -c 80 -i 65536 -m 0 -o space /dev/rvn0c # # フロッピーイメージをマウント # mount /dev/vn0a /mnt # # 圧縮したカーネルをコピー # mkdir /mnt/boot cp /boot/boot1 /mnt/boot cp /boot/boot2 /mnt/boot cp /boot/loader /mnt/boot cp -f /tmp/kernel.gz /mnt/kernel.gz cd /tmp umount /mnt vnconfig -u /dev/vn0 rm -rf /tmp/cdfs mkdir /tmp/cdfs vnconfig -c /dev/vn0 mfs-image mount /dev/vn0c /mnt (cd /mnt; tar cf - . ) | (cd /tmp/cdfs; tar xf -) cp /tmp/kernel /tmp/cdfs cp /tmp/floppy-image /tmp/cdfs umount /mnt vnconfig -u /dev/vn0 mkisofs -d -D -V ERASEHDJ -f -J -r -b floppy-image -o $output /tmp/cdfs # -d 「.」なしのファイル名, -D 深いディレクトリ階層を再配置しない # -V ボリュームID, -f シンボリックリンクをたどる, -J Windows向けJoliet拡張 # -r ファイルモード設定, -b ブートイメージ(ターゲット相対), -o 出力先 # # # おしまい #