1CD FreeBSDの作り方

ISOイメージの作成の準備

まず、CD-ROMをルートファイルシステムに割り当てます。
ISOイメージの作成時に fstab を切り替えるようにしてあるので、元々の fstab を fstab.orig として、
保持しておき新たに fstab.cdbsd というファイルで作成します。

# cp /etc/fstab /etc/fstab.orig
  • /etc/fstab
/dev/acd0a	/	cd9660	ro	0	0
proc		/proc	procfs	rw	0	0

 

# cp /etc/rc /etc/rc.orig
# cp /etc/rc /etc/rc.cdbsd

 

--- /etc/rc.cdbsd Fri Nov 19 17:10:23 2004
+++ /etc/rc.cdbsd   Fri Nov 19 17:03:03 2004
@@ -52,6 +52,12 @@
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 export HOME PATH

+# for CD-ROM boot.
+#
+if [ -r /etc/rc.cdrom ]; then
+       . /etc/rc.cdrom
+fi
+
 # BOOTP diskless boot.  We have to run the rc file early in order to
 # retarget various config files.
 # See /usr/share/examples/diskless/clone_root for details on how

そして、 /etc/rc から呼び出される /etc/rc.cdrom を作成します。

  • /etc/rc.cdrom
############################################################
# 1CD FreeBSD Router
#  Making for MFS & Settings Copy Ver.0.1
#  Customized Tatsuya Ueda.
#    (http://tatsuya.info/pukiwiki/pukiwiki.php?1CD%20FreeBSD%20Router)
############################################################
# Original ShellScript by Sakai Hiroaki.
#   (http://www.saturn.dti.ne.jp/~hsakai/cdbsd/)
############################################################

# Error Check
chkerr() {
	case $1 in
	0)
		echo "$2"
		;;
	*)
		echo "$2 failed: dropping into /bin/sh"
		/bin/sh
		# RESUME
		;;
	esac
}

# Making for MFS
remountmfs() {
	if [ -d $1 ]; then
		/bin/mkdir /tmp$1/
		/bin/cp -Rp $1/ /tmp$1/
		chkerr $? "cp $1 to /tmp$1 MFS"

		/sbin/mount_mfs -s 11000 -T qp120at -b 8192 -f 1024 dummy $1
		chkerr $? "MFS mount on $1"
		/bin/chmod 755 $1

		/bin/cp -Rp /tmp$1/ $1/
		chkerr $? "cp /tmp$1 to $1 MFS"

		rm -rf /tmp$1/
	fi
}

# Settings Copy
copyetc() {
	echo $1
	if [ -d /mnt/etc ] ; then
		echo "Found /etc on FD. Now copying FD to /etc"
		/bin/cp -Rp /mnt/etc/ /etc/
		chkerr $? "cp /etc on FD to /etc MFS"
	else
		echo "Not found /etc on FD"
	fi
	/sbin/umount /mnt
	chkerr $? "Unmounted FD"
}

# Create an MFS /tmp to temporarily hold files from /etc until we
# can bootstrap /etc as an MFS.

/sbin/mount_mfs -s 11000 -T qp120at -b 8192 -f 1024 dummy /tmp
chkerr $? "MFS mount on /tmp"

# Create an MFS /etc
remountmfs /etc

# Create an MFS /root
remountmfs /root

# Create an MFS /home
remountmfs /home

# check FD inserted
dd if=/dev/fd0a of=/dev/null count=1 > /dev/null 2>&1
case $? in
	0)
		echo "FD inserted. Now trying to mount FD."
		if /sbin/mount_msdos -l /dev/fd0a /mnt > /dev/null 2>&1 ; then
			copyetc "FD mounted as msdosfs"
		elif /sbin/mount -t ufs /dev/fd0a /mnt > /dev/null 2>&1 ; then
			copyetc "FD mounted as ufs"
		else
			echo "Unknown format FD"
		fi
		;;
	*)
		echo "No FD inserted"
		;;
esac

# Setting Permission
/bin/chmod 600 /etc/ipf.rules /etc/ipf6.rules /etc/ipnat.rules
/bin/chmod 600 /etc/snmpd.conf
/bin/chmod 600 /etc/mpd/mpd.conf /etc/mpd/mpd.links
/bin/chmod 700 /etc/mpd/mpd.linkup

# Unmount /tmp
/sbin/umount /tmp

# /var, /dev mount by MFS.
diskless_mount="/etc/rc.diskless2"

ISOイメージの作成

全ての準備が出来たら、作業用のHDDからFreeBSDを起動し以下のシェルスクリプトを使ってISOイメージを作成します。

#!/bin/sh

############################################################
# 1CD FreeBSD Router
#  Making for ISO ImageFile Ver.0.1
#  Customized Tatsuya Ueda.
#    (http://tatsuya.info/pukiwiki/pukiwiki.php?1CD%20FreeBSD%20Router)
############################################################
# Original ShellScript by Sakai Hiroaki.
#   (http://www.saturn.dti.ne.jp/~hsakai/cdbsd/)
############################################################
# Using:
#  ./mkimg.sh [directory] [label] [output-file]
# Example:
#  ./mkimg.sh /mnt BSDROUTER ./bsdrouter.iso
############################################################

# Copying Customized "/etc/fstab" & "rc"
cp $1/etc/fstab.cdbsd $1/etc/fstab
cp $1/etc/rc.cdbsd $1/etc/rc

# Delete of Temporary Files
rm -rf $1/tmp/.[A-z]* $1/tmp/*
rm -rf $1/var/tmp/.[A-z]* $1/var/tmp/*
echo > $1/var/log/auth.log
echo > $1/var/log/cron
echo > $1/var/log/lastlog
echo > $1/var/log/messages
echo > $1/var/log/security
echo > $1/var/log/userlog
echo > $1/var/log/wtmp

# Delete of History Files
rm -f $1/root/.history
rm -f $1/home/user/.history

# Making ISO ImageFile
mkisofs -A $2 -R -J -b boot/cdboot -no-emul-boot -o $3 $1

# Copying Original "/etc/fstab" & "rc"
cp $1/etc/fstab.orig $1/etc/fstab
cp $1/etc/rc.orig $1/etc/rc

 

# mount /dev/ad2s1a /mnt
# ./mkimg.sh /mnt BSDROUTER ./bsdrouter.iso

引数は順に、イメージ側HDDをマウントした場所、CDのラベル、作成するISOファイル名です。
ここまでの作業で、ISOイメージが作成されます。

ISOイメージの書き込み

ISOイメージが作成できたら、CD-R(RW)に書き込みをします。

FreeBSD書き込む場合は以下のようにします。

# burncd -s 4 data ./bsdrouter.iso fixate

s オプションで速度を指定し、ISOイメージファイルのパスを指定します。
CD-RWを利用する場合は以下の方法で事前にメディアを空にする必要があります。

# burncd blank

参考ページ

  1. コメントはありません。

  1. トラックバックはありません。

アーカイブ

2017年2月
« 3月    
 12345
6789101112
13141516171819
20212223242526
2728