#!/bin/sh
#
# Copyright 2001 2002 Edson Brandi <ebrandi.home@uol.com.br>
# All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY EDSON BRANDI ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT EDSON BRANDI BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
############################################
echo "Gerando o /dev em MFS..."
mount_mfs -s 24000 -c 20 -o noatime swap /dev 2>&1
tar -xzpf /mfs/dev.tgz -C / >/dev/null 2>&1
cd /dev
./MAKEDEV all >/dev/null 2>&1
#
# Detecta os discos IDE e os slices existentes e monta todos os slices que forem do tipo FAT, NTFS, UFS, EXT2FS
#
#
echo "Detectando slices disponiveis..."
#
for i in `dmesg | egrep "ad0:|ad1:|ad2:|ad3:" | awk -F":" '{print $1}' | sort | uniq`
do
a=1
for x in `fdisk /dev/$i | grep sysid | awk -F"," '{print $1}' | awk '{print $2}'`
do
case ${x} in
5)
echo "Particao FAT16/32 encontrada em /dev/${i}s${a}, montando em /mnt/dos.${a} ..."
mount -t msdos /dev/${i}s${a} /mnt/dos.${a}
;;
6)
echo "Particao FAT16/32 encontrada em /dev/${i}s${a}, montando em /mnt/dos.${a} ..."
mount -t msdos /dev/${i}s${a} /mnt/dos.${a}
;;
12)
echo "Particao FAT16/32 encontrada em /dev/${i}s${a}, montando em /mnt/dos.${a} ..."
mount -t msdos /dev/${i}s${a} /mnt/dos.${a}
;;
7)
echo "Particao NTFS encontrada em /dev/${i}s${a}, montando em /mnt/ntfs.${a} ..."
mount -t ntfs /dev/${i}s${a} /mnt/ntfs.${a}
;;
131)
echo "Particao EXT2FS encontrada em /dev/${i}s${a}, montando em /mnt/ext2fs.${a} ..."
mount -t ext2fs /dev/${i}s${a} /mnt/ext2fs.${a}
;;
165)
echo "Particao UFS encontrada em /dev/${i}s${a}, montando em /mnt/ufs.${a} ..."
mount /dev/${i}s${a} /mnt/ufs.${a}
;;
esac
a=`expr $a + 1`
done
done
####
####
#
# Verifica se existe o diretorio FreeBSD em cada slice montado, existindo ele busca os arquivos .flp para atachar como um virtual node
#
echo "Verificando disponibilidade de Virtual Nodes..."
#
for i in `df -k | egrep "ufs|dos|ntfs|ext2fs" | awk '{print $6}'`
do
if [ -r ${i}/freebsd ]; then
if [ -r ${i}/freebsd/tmp.flp ]; then
vnconfig -c /dev/vn1c ${i}/freebsd/tmp.flp
sleep 2
mount /tmp
fi
if [ -r ${i}/freebsd/var.flp ]; then
vnconfig -c /dev/vn3c ${i}/freebsd/var.flp
sleep 2
mount /var
fi
if [ -r ${i}/freebsd/etc.flp ]; then
vnconfig -c /dev/vn4c ${i}/freebsd/etc.flp
sleep 2
mount /etc
. /etc/rc.conf
fi
if [ -r ${i}/freebsd/home.flp ]; then
vnconfig -c /dev/vn5c ${i}/freebsd/home.flp
sleep 2
mount /home
fi
if [ -r ${i}/freebsd/root.flp ]; then
vnconfig -c /dev/vn6c ${i}/freebsd/root.flp
sleep 2
mount /root
fi
if [ -r ${i}/freebsd/local.flp ]; then
vnconfig -c /dev/vn7c ${i}/freebsd/local.flp
sleep 2
mount /usr/local
fi
if [ -r ${i}/freebsd/X11R6.flp ]; then
vnconfig -c /dev/vn8c ${i}/freebsd/X11R6.flp
sleep 2
mount /usr/X11R6
fi
fi
done
# Verifica se os virtual nodes foram montados (atraves de um arquivo de controle) se encontrar o arquivo da a particao como montada, se nao encontrar gera a particaoo em MFS e descompacta os arquivos necessarios.
#
if [ -r /tmp/XYZ123_ ]; then
echo "O /tmp foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o nodev,noexec,nosuid,noatime swap /tmp 2>&1
echo "Gerando /tmp em MFS"
fi
if [ -r /var/XYZ123_ ]; then
echo "O /var foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o noatime swap /var 2>&1
/usr/sbin/mtree -deU -f /etc/mtree/BSD.var.dist -p /var >/dev/null 2>&1
logs=`/usr/bin/awk '$1 != "#" { printf "%s ", $1 } ' /etc/newsyslog.conf`
if [ -n "$logs" ]; then
/usr/bin/touch $logs
fi
/usr/bin/touch /var/log/lastlog
echo "Gerando /var em MFS"
fi
if [ -r /etc/XYZ123_ ]; then
echo "O /etc foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o noatime swap /etc 2>&1
tar -xzpf /mfs/etc.tgz -C / >/dev/null 2>&1
echo "Gerando /etc em MFS"
fi
if [ -r /home/XYZ123_ ]; then
echo "O /home foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o noatime swap /home 2>&1
echo "Gerando /home em MFS"
fi
if [ -r /root/XYZ123_ ]; then
echo "O /root foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o noatime swap /root 2>&1
tar -xzpf /mfs/root.tgz -C / >/dev/null 2>&1
echo "Gerando /root em MFS"
fi
if [ -r /usr/local/XYZ123_ ]; then
echo "O /usr/local foi montado via virtual node"
else
mount_mfs -s 32768 -c 20 -o noatime swap /usr/local/etc 2>&1
tar -xzpf /mfs/local_etc.tgz -C / >/dev/null 2>&1
echo "Gerando /usr/local/etc em MFS"
fi
mount proc
############################################
syntax highlighted by Code2HTML, v. 0.9.1