diff options
Diffstat (limited to 'src/etc/rc.d')
-rwxr-xr-x | src/etc/rc.d/etcmfs | 80 | ||||
-rwxr-xr-x | src/etc/rc.d/hostid | 137 | ||||
-rwxr-xr-x | src/etc/rc.d/varmfs | 66 |
3 files changed, 283 insertions, 0 deletions
diff --git a/src/etc/rc.d/etcmfs b/src/etc/rc.d/etcmfs new file mode 100755 index 0000000..7e50427 --- /dev/null +++ b/src/etc/rc.d/etcmfs @@ -0,0 +1,80 @@ +#!/bin/sh +# +# Copyright (c) 2005 Dario Freni +# 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$ +# $Id: etcmfs.rc,v 1.1.1.1 2008/03/25 19:58:16 sullrich Exp $ +# + +# PROVIDE: etcmfs +# REQUIRE: mountcritlocal +# BEFORE: var + +. /etc/rc.subr + +name="etcmfs" +kenvetcsize=`kenv -q freesbie.etcsize` +etcsize=${kenvetcsize:-"20m"} +kenvlocaletcsize=`kenv -q freesbie.localetcsize` +localetcsize=${kenvlocaletcsize:-"32m"} + +load_rc_config $name + +tempdir=/tmp + +echo "Generating MFS /etc partition" + +device=$(mdconfig -a -t malloc -o compress -s ${etcsize}) +bsdlabel -w ${device} auto +newfs -n -m 2 /dev/${device} > /dev/null 2>&1 +mount -o noatime /dev/${device} ${tempdir} + +back=$PWD + +cd /etc +find . -print -depth | cpio -dump --quiet ${tempdir} + +cd $back + +mtree -PUer -q -p ${tempdir} < /etc/mtree/etc.dist > /dev/null 2>&1 + +umount ${tempdir} +mount -o noatime /dev/${device} /etc + +if [ -f /etc/mtree/localetc.dist ]; then + device=$(mdconfig -a -t malloc -o compress -s ${localetcsize}) + newfs /dev/${device} > /dev/null 2>&1 + mount -o noatime /dev/${device} ${tempdir} + + cd /usr/local/etc + find . -print -depth | cpio -dump --quiet ${tempdir} + + cd $back + + mtree -PUer -q -p ${tempdir} < /etc/mtree/localetc.dist > /dev/null 2>&1 + + umount ${tempdir} + mount -o noatime /dev/${device} /usr/local/etc +fi diff --git a/src/etc/rc.d/hostid b/src/etc/rc.d/hostid new file mode 100755 index 0000000..37ea173 --- /dev/null +++ b/src/etc/rc.d/hostid @@ -0,0 +1,137 @@ +#!/bin/sh +# +# Copyright (c) 2007 Pawel Jakub Dawidek <pjd@FreeBSD.org> +# Copyright (c) 2015 Xin LI <delphij@FreeBSD.org> +# 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 AUTHORS 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 AUTHORS 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$ +# + +# PROVIDE: hostid +# REQUIRE: sysctl +# KEYWORD: nojail + +. /etc/rc.subr + +name="hostid" +start_cmd="hostid_start" +stop_cmd=":" +reset_cmd="hostid_reset" +extra_commands="reset" +rcvar="hostid_enable" + +hostid_set() +{ + uuid=$1 + # Generate hostid based on hostuuid - take first four bytes from md5(uuid). + id=`echo -n $uuid | /sbin/md5` + id="0x${id%????????????????????????}" + + # Set both kern.hostuuid and kern.hostid. + # + check_startmsgs && echo "Setting hostuuid: ${uuid}." + ${SYSCTL} kern.hostuuid="${uuid}" >/dev/null + check_startmsgs && echo "Setting hostid: ${id}." + ${SYSCTL} kern.hostid=${id} >/dev/null +} + +valid_hostid() +{ + uuid=$1 + + x="[0-9a-f]" + y=$x$x$x$x + + # Check against a blacklist before + # accepting the UUID. + case "${uuid}" in + 00000000-0000-0000-0000-000000000000) + ;; + 00020003-0004-0005-0006-000700080009) + ;; + 03000200-0400-0500-0006-000700080009) + ;; + 07090201-0103-0301-0807-060504030201) + ;; + 11111111-1111-1111-1111-111111111111) + ;; + 11111111-2222-3333-4444-555555555555) + ;; + 4c4c4544-0000-2010-8020-80c04f202020) + ;; + 58585858-5858-5858-5858-585858585858) + ;; + 890e2d14-cacd-45d1-ae66-bc80e8bfeb0f) + ;; + 8e275844-178f-44a8-aceb-a7d7e5178c63) + ;; + dc698397-fa54-4cf2-82c8-b1b5307a6a7f) + ;; + fefefefe-fefe-fefe-fefe-fefefefefefe) + ;; + *-ffff-ffff-ffff-ffffffffffff) + ;; + $y$y-$y-$y-$y-$y$y$y) + return 0 + ;; + esac + + return 1 +} + +hostid_generate() +{ + # First look for UUID in hardware. + # If not found, fall back to software-generated UUID. + uuid=`uuidgen` + hostid_set $uuid +} + +hostid_reset() +{ + hostid_generate + # Store newly generated UUID in ${hostid_file}. + echo $uuid > ${hostid_file} + if [ $? -ne 0 ]; then + warn "could not store hostuuid in ${hostid_file}." + fi +} + +hostid_start() +{ + # If ${hostid_file} already exists, we take UUID from there. + if [ -r ${hostid_file} ]; then + read saved_hostid < ${hostid_file} + if valid_hostid ${saved_hostid}; then + hostid_set `cat ${hostid_file}` + exit 0 + fi + fi + + # No hostid file, generate UUID. + hostid_generate +} + +load_rc_config $name +run_rc_command "$1" diff --git a/src/etc/rc.d/varmfs b/src/etc/rc.d/varmfs new file mode 100755 index 0000000..2921a1a --- /dev/null +++ b/src/etc/rc.d/varmfs @@ -0,0 +1,66 @@ +#!/bin/sh +# +# Copyright (c) 2005 Dario Freni +# 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$ +# $Id: varmfs.rc,v 1.1.1.1 2008/03/25 19:58:16 sullrich Exp $ +# + +# PROVIDE: varmfs +# REQUIRE: mountcritlocal +# BEFORE: var + +. /etc/rc.subr + +name="varmfs" +kenvvarsize=`kenv -q freesbie.varsize` +varsize=${kenvvarsize:-"32m"} + +load_rc_config $name + +tempdir=/tmp + +echo "Generating MFS /var partition" + +device=$(mdconfig -a -t malloc -o compress -s ${varsize}) +bsdlabel -w ${device} auto +newfs -n -m 2 /dev/${device} > /dev/null 2>&1 +mount -o noatime /dev/${device} ${tempdir} + +back=$PWD + +cd /var +if [ -z "${VARMFS_COPYDBPKG:-}" ]; then + find . -not -path "*/db/pkg*" -print -depth | cpio -dump --quiet ${tempdir} +else + find . -print -depth | cpio -dump --quiet ${tempdir} +fi + +cd $back + +mtree -PUer -q -p ${tempdir} < /etc/mtree/var.dist > /dev/null 2>&1 + +umount ${tempdir} +mount -o noatime /dev/${device} /var |