FreeBSD Bugzilla – Attachment 13551 Details for
Bug 25730
[PATCH] mount_mfs is being phased out -> new diskless boot procedure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
rc.diskless1
rc.diskless1 (text/plain; charset=us-ascii), 4.61 KB, created by
krepel
on 2001-03-30 17:53:31 UTC
(
hide
)
Description:
rc.diskless1
Filename:
MIME Type:
Creator:
krepel
Created:
2001-03-30 17:53:31 UTC
Size:
4.61 KB
patch
obsolete
># Copyright (c) 1999 Matt Dillion ># 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 THE AUTHOR AND CONTRIBUTORS ``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 SHALL THE AUTHOR OR CONTRIBUTORS 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. ># ># $FreeBSD: src/etc/rc.diskless1,v 1.6 2000/10/08 19:18:24 obrien Exp $ ># > ># ># /etc/rc.diskless1 - general BOOTP startup ># ># BOOTP has mounted / for us. Assume a read-only mount. We must then ># - figure out our IP by querying the interface ># - fill /conf/etc (writable) with files from /etc, and then update ># per-machine files from /conf/*/ where * is the IP of the host, ># the IP of the subnet, "default", or nothing. ># - mount /conf/etc over /etc so we can see the new files. ># ># WARNING: i thing you should not change /etc/rc or strange things could ># happen. ># ># The operator is in charge of setting /conf/*/etc/* things as appropriate. ># Typically rc.conf and fstab need to be changed, but possibly ># also other files such as inetd.conf etc. > ># chkerr: ># ># Routine to check for error ># ># checks error code and drops into shell on failure. ># if shell exits, terminates script as well as /etc/rc. ># >chkerr() { > case $1 in > 0) > ;; > *) > echo "$2 failed: dropping into /bin/sh" > /bin/sh > # RESUME > ;; > esac >} > ># mkmd: ># ># Builds an md(4) disk of the size in $1 ># Labels and newfs' it. ># Mounts it on the destination in $2 ># Returns the name of the created md device in md_device ># Returns the name of the device containing the filesystem in md_filesystem >mkmd() { > md_device=`mdconfig -a -t malloc -s $1` > chkerr $? "configuring md device" > disklabel -rw $md_device auto > chkerr $? "labelling md device" > md_filesystem=/dev/$md_device"c" > newfs $md_filesystem 2>&1 >/dev/null > chkerr $? "making md device filesystem" > mount $md_filesystem $2 > chkerr $? "mounting md filesystem on $2" >} > ># DEBUGGING ># ># set -v > ># Figure out our interface and IP. ># >bootp_ifc="" >bootp_ipa="" >bootp_ipbca="" >iflist=`ifconfig -l` >for i in ${iflist} ; do > set `ifconfig ${i}` > while [ $# -ge 1 ] ; do > if [ "${bootp_ifc}" = "" -a "$1" = "inet" ] ; then > bootp_ifc=${i} ; bootp_ipa=${2} ; shift > fi > if [ "${bootp_ipbca}" = "" -a "$1" = "broadcast" ] ; then > bootp_ipbca=$2; shift > fi > shift > done > if [ "${bootp_ifc}" != "" ] ; then > break > fi >done >echo "Interface ${bootp_ifc} IP-Address ${bootp_ipa} Broadcast ${bootp_ipbca}" > ># Files in /etc are copied to /conf/etc which is writable. Then ># per-machine configs from /conf/ip.address/etc are copied onto this ># directory. First choice is using the client's IP, then the client's ># broadcast address, then a default configuration. ># This way we have some flexibility to handle clusters of machines ># on separate subnets. ># ># up to now we don't have make swapon and so we must use malloc ># >mkmd 2m /mnt >cp -Rp /etc/* /mnt >chkerr $? "copy /etc template" > >if [ -d /conf/${bootp_ipa} ] ; then > cp -Rp /conf/${bootp_ipa}/etc/* /mnt >elif [ -d /conf/${bootp_ipbca} ] ; then > cp -Rp /conf/${bootp_ipbca}/etc/* /mnt >else > cp -Rp /conf/default/etc/* /mnt >fi > ># Make the new directory available as /etc ># >umount /mnt >mount $md_filesystem /etc > ># Tell /etc/rc to run the specified script after ># it does its mounts but before it does anything ># else. ># ># This script is responsible for setting up the ># diskless mount environment. This can be ># overriden by /conf/ME/rc.conf.local if, for ># example, you do not want to run the standard ># system /etc/rc.diskless2 > >diskless_mount="/etc/rc.diskless2"
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 25730
:
13548
|
13549
|
13550
| 13551 |
13552