8 Commits

Author SHA1 Message Date
Jay Larson
7de71fa1cd The following changes were made:
* Add URL
  * Removed /etc/rcX.d directories (should be provided by sysvinit)
  * Added 'service' script
  * Properly set VERBOSE and FSCKFIX in init.d/checkfs
  * Used = in favor of == in checkfs, halt and sendsignals
  * Removed ZFS from mountfs
2018-04-10 11:25:20 -05:00
Jay Larson
97906ebe04 init-functions now checks for read access before attempting to read environ 2017-12-10 11:47:48 -06:00
Jay Larson
8d4cb9e335 The following changes were made
* Moved update-rc to /usr/sbin
  * init-functions now exports container variable
  * init.d scripts should now act appropriately in containers
  * Removed localnet init script - should be performed by iftools init
  * Added REPO to Makefile
2017-12-03 14:27:54 -06:00
Jay Larson
aa612e0add The following changes were made
* Now depends on dash instead of bash
  * Corrected conditional in rc script '==' not valid POSIX
2017-11-26 18:30:27 -06:00
Jay Larson
008c9f186a Attempt at making init scripts container aware 2017-11-26 17:09:27 -06:00
Jay Larson
f977ad5793 Cleaned up init.d/mountfs and added support for ZFS 2017-06-16 10:46:16 -05:00
Jay Larson
c635cf014c Removed debug messages in usher 2017-05-20 09:26:33 -05:00
Jay Larson
17afdf7765 The following changes were made:
* removed quotes around chroot command in usher
  * removed hwclock from Required-Start in checkfs
  * removed $local_fs from Required-Start in hostname
  * updated mountvirtfs to create /run/utmp
  * added 2 conditionals to readsvcs() in update-rc
2017-05-20 09:18:03 -05:00
19 changed files with 118 additions and 157 deletions

View File

@@ -8,16 +8,17 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
DEPENDS = bash,iftools,kmod,procps-ng,sysvinit DEPENDS = dash,kmod,procps-ng,sysvinit
ARCH = x86_64 ARCH = x86_64
URL = URL = http://snaplinux.org
REPO = core
BRIEF = Base scripts for sysvinit BRIEF = Base scripts for sysvinit
DESC = This package supplies the base system init scripts for sysvinit DESC = This package supplies the core required init scripts for startup
ARCHIVE := '' ARCHIVE := ''
SRCDIR := $(PWD)/SRC/initscripts SRCDIR := $(PWD)/SRC/initscripts
PATCHDIR := $(PWD)/SRC/patches PATCHDIR := $(PWD)/SRC/patches
VERSION := 1.0-0 VERSION := 1.8-0
include /usr/share/snap/Makefile.snaplinux include /usr/share/snap/Makefile.snaplinux

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
set -e set -e
@@ -7,25 +7,22 @@ case $1 in
exit 0 exit 0
;; ;;
postinst) postinst)
if [[ ${TARGET} ]]; then
chroot ${TARGET} 'update-rc required'
else
update-rc required update-rc required
if [ ! -f /etc/fstab ]; then
cp /usr/share/initscripts/fstab /etc/fstab
fi fi
if [ ! -f ${TARGET}/etc/modules.conf ]; then if [ ! -f /etc/modules.conf ]; then
cp ${TARGET}/usr/share/initscripts/modules.conf \ cp /usr/share/initscripts/modules.conf /etc/modules.conf
${TARGET}/etc/modules.conf
fi fi
if [ ! -f ${TARGET}/etc/default/halt ]; then if [ ! -f /etc/default/halt ]; then
cp ${TARGET}/usr/share/initscripts/halt.default \ cp /usr/share/initscripts/halt.default /etc/default/halt
${TARGET}/etc/default/halt
fi fi
if [ ! -f ${TARGET}/etc/default/rcS ]; then if [ ! -f /etc/default/rcS ]; then
cp ${TARGET}/usr/share/initscripts/rcS.default \ cp /usr/share/initscripts/rcS.default /etc/default/rcS
${TARGET}/etc/default/rcS
fi fi
;; ;;
prerm) prerm)

View File

@@ -1,10 +1,10 @@
dirs: dirs:
install -d -m 755 $(DESTDIR)/etc/default install -d -m 755 $(DESTDIR)/etc/default
install -d -m 755 $(DESTDIR)/etc/{rc{{0..6},S},init}.d install -d -m 755 $(DESTDIR)/etc/init.d
install -d -m 755 $(DESTDIR)/lib/lsb install -d -m 755 $(DESTDIR)/lib/lsb
install -d -m 755 $(DESTDIR)/usr/share/initscripts install -d -m 755 $(DESTDIR)/usr/share/initscripts
install -d -m 755 $(DESTDIR)/usr/share/man/man8 install -d -m 755 $(DESTDIR)/usr/share/man/man8
install -d -m 755 $(DESTDIR)/sbin install -d -m 755 $(DESTDIR)/usr/sbin
files: files:
install -m 755 init.d/checkfs $(DESTDIR)/etc/init.d/checkfs install -m 755 init.d/checkfs $(DESTDIR)/etc/init.d/checkfs
@@ -12,7 +12,6 @@ files:
install -m 755 init.d/halt $(DESTDIR)/etc/init.d/halt install -m 755 init.d/halt $(DESTDIR)/etc/init.d/halt
install -m 755 init.d/hostname $(DESTDIR)/etc/init.d/hostname install -m 755 init.d/hostname $(DESTDIR)/etc/init.d/hostname
install -m 755 init.d/hwclock $(DESTDIR)/etc/init.d/hwclock install -m 755 init.d/hwclock $(DESTDIR)/etc/init.d/hwclock
install -m 755 init.d/localnet $(DESTDIR)/etc/init.d/localnet
install -m 755 init.d/modules $(DESTDIR)/etc/init.d/modules install -m 755 init.d/modules $(DESTDIR)/etc/init.d/modules
install -m 755 init.d/mountfs $(DESTDIR)/etc/init.d/mountfs install -m 755 init.d/mountfs $(DESTDIR)/etc/init.d/mountfs
install -m 755 init.d/mountvirtfs $(DESTDIR)/etc/init.d/mountvirtfs install -m 755 init.d/mountvirtfs $(DESTDIR)/etc/init.d/mountvirtfs
@@ -22,12 +21,15 @@ files:
install -m 755 init.d/swap $(DESTDIR)/etc/init.d/swap install -m 755 init.d/swap $(DESTDIR)/etc/init.d/swap
install -m 755 init.d/sysctl $(DESTDIR)/etc/init.d/sysctl install -m 755 init.d/sysctl $(DESTDIR)/etc/init.d/sysctl
install -m 755 init-functions $(DESTDIR)/lib/lsb/init-functions install -m 755 init-functions $(DESTDIR)/lib/lsb/init-functions
install -m 644 fstab \
$(DESTDIR)/usr/share/initscripts/fstab
install -m 644 halt.default \ install -m 644 halt.default \
$(DESTDIR)/usr/share/initscripts/halt.default $(DESTDIR)/usr/share/initscripts/halt.default
install -m 644 modules.conf \ install -m 644 modules.conf \
$(DESTDIR)/usr/share/initscripts/modules.conf $(DESTDIR)/usr/share/initscripts/modules.conf
install -m 644 rcS.default \ install -m 644 rcS.default \
$(DESTDIR)/usr/share/initscripts/rcS.default $(DESTDIR)/usr/share/initscripts/rcS.default
install -m 755 update-rc $(DESTDIR)/sbin install -m 755 update-rc $(DESTDIR)/usr/sbin
install -m 755 service $(DESTDIR)/usr/sbin
install: dirs files install: dirs files

4
SRC/initscripts/fstab Normal file
View File

@@ -0,0 +1,4 @@
#
# /etc/fstab - file system mount definitions
#
# <file system> <mount point> <type> <options> <dump> <fsck>

View File

@@ -1,4 +1,18 @@
#!/bin/sh # /lib/lsb/init-functions - shell functions and variables for init scripts
#
# This sets some environment variables that init scripts can use
# to determine if we're running in a container
#
# Most likely just checking for the presence of $container would
# be enough
#
if [ -r /proc/1/environ ]; then
chkcontainer=$(sed 's/\x0/\n/g' < /proc/1/environ|grep -ia '^container\|^LXC')
fi
[ -n "$chkcontainer" ] && export $chkcontainer
COL52="\\033[52G" COL52="\\033[52G"
@@ -54,19 +68,19 @@ log_init_msg() {
} }
log_failure_msg() { log_failure_msg() {
echo -e "$COL52[ FAIL ]" echo "$COL52[ FAIL ]"
return return
} }
log_success_msg() { log_success_msg() {
echo -e "$COL52[ OK ]" echo "$COL52[ OK ]"
return return
} }
log_warning_msg() { log_warning_msg() {
echo -e "$COL52[ WARN ]" echo "$COL52[ WARN ]"
return return
} }

View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: checkfs # Provides: checkfs
# Required-Start: udev swap $time hostname hwclock # Required-Start: udev swap $time hostname
# Required-Stop: # Required-Stop:
# Should-Start: # Should-Start:
# Should-Stop: # Should-Stop:
@@ -12,6 +12,9 @@
### END INIT INFO ### END INIT INFO
. /lib/lsb/init-functions . /lib/lsb/init-functions
[ -z $container ] || exit 0
[ -z "$VERBOSE" ] && VERBOSE=no
[ -z "$FSCKFIX" ] && FSCKFIX=no
case "$1" in case "$1" in
start) start)
@@ -70,7 +73,7 @@ case "$1" in
case "$VERBOSE" in case "$VERBOSE" in
1|y|yes) 1|y|yes)
echo echo
if [ $status == 0 ]; then if [ "$status" = 0 ]; then
exit 0 exit 0
else else
log_init_msg "Filesystem issues detected" log_init_msg "Filesystem issues detected"
@@ -78,15 +81,15 @@ case "$1" in
;; ;;
esac esac
if [ $status == 0 ]; then if [ "$status" = 0 ]; then
log_success_msg log_success_msg
elif [ $status != 1 ]; then elif [ "$status" = 1 ]; then
log_warning_msg log_warning_msg
echo echo
echo "WARNING: File system errors were detected and repaired." echo "WARNING: File system errors were detected and repaired."
echo echo
elif [ $status == 2 -o $status == 3 ]; then elif [ "$status" = 2 -o "$status" = 3 ]; then
log_warning_msg log_warning_msg
echo echo
@@ -96,7 +99,7 @@ case "$1" in
echo "Press enter to reboot" echo "Press enter to reboot"
read read
reboot -f reboot -f
elif [ $status -gt 3 -a $status -lt 16 ]; then elif [ "$status" -gt 3 -a "$status" -lt 16 ]; then
log_failure_msg log_failure_msg
echo echo

View File

@@ -13,6 +13,7 @@
. /lib/lsb/init-functions . /lib/lsb/init-functions
[ -z "$CLEANDIRS" ] && exit 0 [ -z "$CLEANDIRS" ] && exit 0
[ -z $container ] || exit 0
clean() { clean() {
[ -d $1 ] || return 1 [ -d $1 ] || return 1

View File

@@ -19,11 +19,11 @@ case "$1" in
poweroff='-p' poweroff='-p'
netdown='-i' netdown='-i'
if [ "$HALT" == "halt" ]; then if [ "$HALT" = "halt" ]; then
poweroff='' poweroff=''
fi fi
if [ "$NETDOWN" == "no" ]; then if [ "$NETDOWN" = "no" ]; then
netdown='' netdown=''
fi fi

View File

@@ -1,8 +1,8 @@
#!/bin/sh #!/bin/sh
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: hostname # Provides: hostname
# Required-Start: $local_fs # Required-Start:
# Required-Stop: $local_fs # Required-Stop:
# Should-Start: # Should-Start:
# Should-Stop # Should-Stop
# Default-Start: S # Default-Start: S

View File

@@ -15,6 +15,8 @@
### END INIT INFO ### END INIT INFO
. /lib/lsb/init-functions . /lib/lsb/init-functions
[ -r /etc/default/rcS ] && . /etc/default/rcS
[ -z $container ] || exit 0
case "$UTC" in case "$UTC" in
0|n|no) 0|n|no)

View File

@@ -1,37 +0,0 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: localnet
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Start and configure loopback interface
# X-Required: true
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_init_msg "Bringing up loopback interface"
ifup lo && log_success_msg || log_failure_msg
;;
stop)
log_init_msg "Bringing down loopback interface"
ifdown lo && log_success_msg || log_failure_msg
;;
reload|restart)
log_init_msg "Restarting loopback interface"
ifreload lo && log_success_msg || log_failure_msg
;;
*)
echo "Usage: $0 [start|stop|reload|restart]"
exit 1
;;
esac
exit 0

View File

@@ -15,6 +15,7 @@ CONF=/etc/modules.conf
[ -r $CONF ] || exit 0 [ -r $CONF ] || exit 0
[ -e /proc/modules ] || exit 0 [ -e /proc/modules ] || exit 0
[ -z $container ] || exit 0
egrep -qv '^(\s*#|$)' $CONF || exit 0 egrep -qv '^(\s*#|$)' $CONF || exit 0
. /lib/lsb/init-functions . /lib/lsb/init-functions

View File

@@ -1,17 +1,4 @@
#!/bin/sh #!/bin/sh
########################################################################
# Begin mountfs
#
# Description : File System Mount Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# DJ Lucas - dj@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version : LFS 7.0
#
########################################################################
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: $local_fs # Provides: $local_fs
# Required-Start: udev checkfs # Required-Start: udev checkfs
@@ -20,62 +7,42 @@
# Should-Stop: # Should-Stop:
# Default-Start: S # Default-Start: S
# Default-Stop: 0 6 # Default-Stop: 0 6
# Short-Description: Mounts/unmounts local filesystems defined in /etc/fstab. # Short-Description: Mounts/unmounts local filesystems
# Description: Remounts root filesystem read/write and mounts all # Description: Remounts root filesystem read/write and mounts all
# remaining local filesystems defined in /etc/fstab on # remaining local filesystems defined in /etc/fstab.
# start. Remounts root filesystem read-only and unmounts # Remounts root filesystem read-only and unmounts
# remaining filesystems on stop. # remaining filesystems on stop.
# X-LFS-Provided-By: LFS
# X-Required: true # X-Required: true
### END INIT INFO ### END INIT INFO
. /lib/lsb/init-functions . /lib/lsb/init-functions
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ -z $container ] || exit 0
#
# needs work!!
# probably need to split up
# separate scripts for / and
# network filesystems
#
# Ok, so network filesystems
# init scripts should be included
# as part of the package. This
# script should only be for
# standard local filesystems
#
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
case "$1" in case "$1" in
start) start)
log_init_msg "Remounting root file system in read-write mode" log_init_msg "Remounting root file system in read-write mode"
mount -o remount,rw / >/dev/null && log_success_msg || log_failure_msg mount -o remount,rw / >/dev/null && log_success_msg || log_failure_msg
# Remove fsck-related file system watermarks. if [ -f /fastboot ]; then
rm -f /fastboot /forcefsck log_init_msg "Clearing /fastboot"
rm /fastboot && log_success_msg || log_failure_msg
fi
# Make sure /dev/pts exists if [ -f /forcefsck ]; then
# mkdir -p /dev/pts log_init_msg "Clearing /forcefsk"
rm /forcefsck && log_success_msg || log_failure_msg
# This will mount all filesystems that do not have _netdev in fi
# their option list. _netdev denotes a network filesystem.
log_init_msg "Mounting remaining file systems" log_init_msg "Mounting remaining file systems"
mount -a -O no_netdev >/dev/null && log_success_msg || log_failure_msg mount -a -O no_netdev >/dev/null && log_success_msg || log_failure_msg
exit $failed
;; ;;
stop) stop)
# Don't unmount virtual file systems like /run
log_init_msg "Unmounting all file systems" log_init_msg "Unmounting all file systems"
umount -a -d -r -t notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null && \ umount -a -d -r -t notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts \
log_success_msg || log_failure_msg >/dev/null && log_success_msg || log_failure_msg
# Make sure / is mounted read only (umount bug)
mount -o remount,ro / mount -o remount,ro /
# Make all LVM volume groups unavailable, if appropriate
# This fails if swap or / are on an LVM partition
#if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi
;; ;;
*) *)
echo "Usage: $0 [start|stop]" echo "Usage: $0 [start|stop]"

View File

@@ -80,14 +80,6 @@ mountrun () {
/run || return 1 /run || return 1
fi fi
mkdir -p /run/lock /run/shm || return 1
chmod 1777 /run/shm || return 1
if grep -q '^utmp:' /etc/group; then
chmod 664 /run/utmp
chgrp utmp /run/utmp
fi
return 0 return 0
} }
@@ -105,12 +97,21 @@ case "$1" in
start|restart) start|restart)
log_init_msg "Mounting virtual file systems" log_init_msg "Mounting virtual file systems"
if [ -z $container ]; then
for dir in dev pts proc run sys; do for dir in dev pts proc run sys; do
mount$dir || error=1 mount$dir || error=1
done done
fi
mkdir -p /run/lock /run/shm || error=1
chmod 1777 /run/shm || error=1
ln -sfn /run/shm /dev/shm ln -sfn /run/shm /dev/shm
if grep -q '^utmp:' /etc/group; then
chmod 664 /run/utmp >> /run/utmp
chgrp utmp /run/utmp
fi
[ -z $error ] && log_success_msg || log_failure_msg [ -z $error ] && log_success_msg || log_failure_msg
;; ;;
status) status)

View File

@@ -22,11 +22,11 @@ print_snap() {
case "$1" in case "$1" in
S|1|2|3|4|5|6|0) S|1|2|3|4|5|6|0)
if [ "$RUNLEVEL" == "S" ]; then if [ "$RUNLEVEL" = "S" ]; then
set -a set -a
[ -r /etc/default/rcS ] && . /etc/default/rcS [ -r /etc/default/rcS ] && . /etc/default/rcS
set +a set +a
dmesg -n "${LOGLEVEL:-7}" [ -z $container ] && dmesg -n "${LOGLEVEL:-7}"
print_snap print_snap
fi fi

View File

@@ -29,7 +29,7 @@ case "$1" in
log_init_msg "Sending all processes the KILL signal" log_init_msg "Sending all processes the KILL signal"
killall5 -9 killall5 -9
if [ "$?" == 0 -o "$?" == 2 ]; then if [ "$?" = 0 -o "$?" = 2 ]; then
success=1 success=1
fi fi
fi fi

View File

@@ -12,6 +12,8 @@
### END INIT INFO ### END INIT INFO
. /lib/lsb/init-functions . /lib/lsb/init-functions
[ -r /etc/fstab ] || exit 0
[ -z $container ] || exit 0
case "$1" in case "$1" in
start) start)

View File

@@ -13,6 +13,7 @@
CONF=/etc/sysctl.conf CONF=/etc/sysctl.conf
[ -r $CONF ] || exit 0 [ -r $CONF ] || exit 0
[ -z $container ] || exit 0
. /lib/lsb/init-functions . /lib/lsb/init-functions

View File

@@ -180,14 +180,15 @@ sub readsvcs {
error( int( $! ), "opendir(): " . INITDIR . ": $!" ); error( int( $! ), "opendir(): " . INITDIR . ": $!" );
foreach my $svcname ( sort( readdir( DIR ) ) ) { foreach my $svcname ( sort( readdir( DIR ) ) ) {
if ( ! -X INITDIR . "/$svcname" ) { if ( ! -f INITDIR . "/$svcname" ||
! -X INITDIR . "/$svcname" ) {
next; next;
} }
$services->{$svcname} = readinfo( INITDIR . "/$svcname" ); $services->{$svcname} = readinfo( INITDIR . "/$svcname" );
if ( ! @{$services->{$svcname}{'Provides'}} ) { if ( ! @{$services->{$svcname}{'Provides'}} ) {
undef( $services->{$svcname} ); delete( $services->{$svcname} );
next; next;
} }
@@ -207,7 +208,8 @@ sub sdepends {
my $sdepends = shift || []; my $sdepends = shift || [];
my $stack = shift || []; my $stack = shift || [];
if ( @$stack > 99 ) { if ( $stack->[0] && grep( $_ eq $service->{'name'}, @$stack )
|| @$stack > 99 ) {
return; return;
} }