Èç¹û¿ÉÄܵĻ°£¬Ç빺Âò OpenBSD ¹Ù·½ÖÆ×÷µÄ CD Ì××°¡£
½Å±¾µÄʹÓ÷½·¨£º
$ ./mk_openbsd_iso-0.1.sh 3.9 i386
ÄúÖ»ÒªÖ¸¶¨ÐèÒªÖÆ×÷µÄ OpenBSD °æ±¾ºÍƽ̨¼Ü¹¹£¬¼´¿ÉÉú³É¶ÔÓ¦µÄ ISO Îļþ¡£
´Ë½Å±¾ÐèÒª wget / mkisofs ÕâÁ½¸ö¹¤¾ß²ÅÄÜÖÆ×÷ISO¡£
wget ÓÃÓÚÏÂÔØÎļþ£¬mkisofs ÓÃÓÚÖÆ×÷ ISO¡£
×¢ÒâÊÂÏ
²¢²»ÊÇÿ¸öƽ̨¶¼¿ÉÒÔʹÓà CD Æô¶¯°²×°£¬ÏêÇéÇë·ÃÎÊ£º
ĬÈÏ´´½¨µÄ ISO Îļþ²»»á´øÓÐÈÎºÎµÄ packages£¬Èç¹ûÄãÐèÒª½« packages °üº¬½øÈ¥£¬
ÇëÔĶÁ½Å±¾Öк¯Êý FETCH_PKGS() µÄ˵Ã÷¡£
ÒÔÏÂÊÇÍêÕûµÄ½Å±¾£º
ÒýÓÃ:#!/bin/sh
# Author : MichaelBibby
# Date : 2006.07.22
# Purpose : Automatic download file sets and create an OpenBSD -release or
# -snapshots ISO.
# Version : 0.1
# Usage : ./mk_openbsd_iso.sh [3.9|4.0|snapshots] [i386|amd64|sparc64]
VERSION="$1" # Special OpenBSD version, like 3.9, 4.0, snapshots.
ARCH="$2" # Maechine architecture, like i386, amd64.
TMP_ARCHIVE="$HOME/tmp/openbsd" # Store all openbsd file sets.
SETS_ARCHIVE="$TMP_ARCHIVE/$VERSION/$ARCH" # Store all installation file sets.
PKGS_ARCHIVE="$TMP_ARCHIVE/$VERSION/$ARCH/packages" # Store all packages.
FETCH_CMD="wget"
CDROM_FS=$(basename ${SETS_ARCHIVE}/cdrom*.fs)
# Check the following URL to choose a mirror near you:
MKISOFS_CMD="mkisofs -vrlTJV "OpenBSD_${VERSION}_$ARCH" \
-b $VERSION/$ARCH/${CDROM_FS} \
-c boot.catalog \
-o $HOME/OpenBSD_${VERSION}_$ARCH.iso $TMP_ARCHIVE"
USAGE()
{
if [ X"$#" != X"2" ]; then
echo "USAGE: $0 VERSION ARCH"
echo "e.g.: $0 [3.9|4.0|snapshots] [i386|amd64|...]"
exit 255
fi
}
CHECK_APPS()
{
# Set all nessessary applications into an ARRAY: APPS.
APPS_ARRAY="mkisofs $FETCH_CMD"
echo "Checking neccessary applications..."
for i in $APPS_ARRAY
do
if [ ! $(whereis "$i") ]
then
echo "ERROR: $i is not installed, you should installed first"
case $i in
mkisofs)
echo "mkisofs is always included in package 'cdrtools'.";;
esac
exit
fi
done
}
CHECK_DIRS()
{
# Set all nessessary dir into an ARRAY: DIRS.
DIRS_ARRAY="$SETS_ARCHIVE $PKGS_ARCHIVE"
echo "Checking neccessary directories..."
# Check and create dirs.
for dir in ${DIRS_ARRAY}
do
if [ ! -d "$dir" ]; then
echo -ne "\tWARNNING: $dir NOT exist, creating it..."
mkdir -p $dir
echo "DONE"
fi
done
}
# Fetch OpenBSD's installation file sets, like base39.tgz, comp39.tgz.
FETCH_SETS()
{
TMP_OB_FILES_SETS="/tmp/ob_file_sets"
# If you want to specify which file sets will be contained in the iso file,
# you should comment the following 2 lines, and create '/tmp/ob_file_sets'
# manually, and then write the file sets' names in it. Finally, maybe you
# want to comment the line following: 'rm -f $TMP_OB_FILES_SETS'.
# ------------------------------------------------------------------------
echo "Downloading OpenBSD file sets' index file..."
$FETCH_CMD -O $TMP_OB_FILES_SETS $MIRROR/$VERSION/$ARCH/index.txt
# ------------------------------------------------------------------------
for i in $(cat $TMP_OB_FILES_SETS)
do
echo "Downloading file set: $i..."
$FETCH_CMD -c -O $SETS_ARCHIVE/$i $MIRROR/$VERSION/$ARCH/$i
done
#rm -f $TMP_OB_FILES_SETS
}
FETCH_PKGS()
{
TMP_OB_PKG_SETS="/tmp/ob_pkg_sets"
# If you want to specify which packages will be contained in the iso file,
# you should comment the following 2 lines, and create '/tmp/ob_pkg_sets'
# manually, and then write the packages' name in it. Finally, maybe you
# want to comment the line following: 'rm -f $TMP_OB_PKG_SETS'.
# ------------------------------------------------------------------------
#echo "Downloading OpenBSD package sets' index file..."
#$FETCH_CMD -c -O $TMP_OB_PKG_SETS $MIRROR/$VERSION/packages/$ARCH/index.txt
# ------------------------------------------------------------------------
for i in $(cat $TMP_OB_PKG_SETS)
do
echo "Downloading package: $i..."
$FETCH_CMD -O $PKGS_ARCHIVE/$i $MIRROR/$VERSION/packages/$ARCH/$i
done
#rm -f $TMP_OB_PKG_SETS
}
# ----------- SCRIPT MAIN -------------
clear
echo -e "\n\
\t# --------------------------------------------------------------------------#
\t# ------- We recommend you buy OpenBSD's Offical CD sets to support ------#
\t# ------- ongoing development of OpenBSD. There are many good reasons ------#
\t# ------- to own an OpenBSD CD set: ------#
\t# --------------------------------------------------------------------------#
\t# ------- Warnning: Not every platform supports all boot options. For ------#
\t# ------- more information, see also: ------#
\t# --------------------------------------------------------------------------#
\t# ------- Note: If you want to include some packages in the ISO file, ------#
\t# ------- please read the function: FETCH_PKGS, and uncomment the ------#
\t# ------- function at the end of script: ------#
\t# ------- FETCH_PKGS && \ ------#
\t# --------------------------------------------------------------------------#
"
sleep 10
USAGE "$@" && \
CHECK_APPS && \
CHECK_DIRS && \
FETCH_SETS && \
#FETCH_PKGS && \
$MKISOFS_CMD && \
echo "GOOD, ISO has been created:\n\t$HOME/OpenBSD_${VERSION}_${ARCH}.iso"
aya2443 ÓÚ 2006-07-26 17:20:54·¢±í:
dddddd