14 Commits
1.2.2 ... 1.5.1

Author SHA1 Message Date
fbt
88f0fa6acb Merge branch 'master' of builder:git/spark-rc 2014-12-27 17:53:39 +03:00
fbt
1d0bc30bb2 fixed the default rc.conf a bit 2014-12-27 17:53:28 +03:00
fbt
158c5939fd useless function 2014-12-01 12:03:31 +03:00
fbt
9edb1380fb rc.conf example for the timezone 2014-11-07 00:09:34 +03:00
fbt
f65b360295 set the timezone from rc.conf 2014-11-07 00:08:55 +03:00
fbt
362571f19a halt action 2014-11-06 23:29:40 +03:00
fbt
1c52234809 this is not the watchman makefile 2014-10-18 17:57:36 +04:00
fbt
025d3e4a36 make install 2014-10-18 17:56:51 +04:00
fbt
834668bd87 killall5 2014-10-18 17:50:53 +04:00
fbt
8a36bb37ae license 2014-10-16 13:28:18 +04:00
fbt
93edc4ceb7 This works properly 2014-08-09 15:17:26 +04:00
fbt
51c7ec2471 Oops 2014-08-09 14:59:12 +04:00
fbt
a57c6bd7fb switching to a makefile build 2014-08-09 14:55:26 +04:00
fbt
b7fa48d5d8 duplicate 2014-07-28 09:32:57 +04:00
6 changed files with 122 additions and 7 deletions

13
LICENSE Normal file
View File

@@ -0,0 +1,13 @@
Copyright (c) 2012-2014, Jack L. Frost <fbt@fleshless.org>
Permission to use, copy, modify, and/or distribute this software for any purpose with or without
fee is hereby granted, provided that the above copyright notice and this permission notice appear
in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.

32
Makefile Normal file
View File

@@ -0,0 +1,32 @@
# spark-rc makefile
# Please modify config.mk and not this
sinclude config.mk
.PHONY: clean install uninstall all
build: rc
all: build
rc: rc.in
sed -r \
-e 's%@ETC@%$(ETC)%' \
rc.in > rc
chmod 750 $@
clean:
rm rc
install: build
install -dm755 $(BINDIR)
install -dm755 $(ETCDIR)
install -m750 rc $(BINDIR)/rc
install -m644 rc.conf $(ETCDIR)/rc.conf
install -m755 tools/killall5 $(BINDIR)/killall5
uninstall:
rm $(BINDIR)/rc

8
config.mk Normal file
View File

@@ -0,0 +1,8 @@
# Make config
USR ?= /usr/local
ETC ?= /etc
BIN ?= $(USR)/bin
BINDIR = $(DESTDIR)$(PREFIX)$(BIN)
ETCDIR = $(DESTDIR)$(PREFIX)$(ETC)

View File

@@ -4,14 +4,18 @@ export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
# Hostname # Hostname
cfg_hostname='changeme' cfg_hostname='changeme'
# Timezone
# Change this to yours
#cfg_timezone='Europe/Moscow'
# Services # Services
cfg_services+=( 'fsck' 'mount' 'systemd-udevd' 'sysctl' ) # Services that need tp be started in an order cfg_services+=( 'fsck' 'mount' 'systemd-udevd' 'sysctl' ) # Services that need tp be started in an order
cfg_services+=( '@lo.iface' '@crond' '@dbus' '@alsa' ) # These start in parallel.
cfg_services+=( @agetty-tty{2..6} ) # Comment this if your init starts something on the ttys itself. cfg_services+=( @agetty-tty{2..6} ) # Comment this if your init starts something on the ttys itself.
cfg_services+=( '@crond' '@network' '@dbus' '@alsa' ) # These start in parallel. cfg_services+=( 'rc.local' ) # Traditionally, rc.local starts last. Technically here it doesn't. Not quite :)
cfg_services+=( 'rc.local' ) # Traditionally, rc.local starts last.
# Modules # Add modules you want to be loaded at boot time here
cfg_modules=( ) # Add modules you want to be loaded at boot time here #cfg_modules=( )
# Make C-A-D perform a soft reset # Make C-A-D perform a soft reset
ctrlaltdel soft ctrlaltdel soft

View File

@@ -108,6 +108,7 @@ rc.remount_root() {
rc.boot() { rc.boot() {
rc.mount_misc rc.mount_misc
rc.hostname rc.hostname
rc.timezone
rc.modules rc.modules
rc.services_start rc.services_start
wait wait
@@ -143,8 +144,14 @@ rc.modules() {
done done
} }
rc.timezone() {
[[ "$cfg_timezone" ]] && {
ln -fs "/usr/share/zoneinfo/${cfg_timezone}" /etc/localtime
}
}
rc.main() { rc.main() {
source "/etc/rc.conf" source "@ETC@/rc.conf"
action="${1:-boot}" action="${1:-boot}"
@@ -154,9 +161,8 @@ rc.main() {
rc.boot rc.boot
;; ;;
poweroff|reboot|shutdown) poweroff|reboot|shutdown|halt)
rc.shutdown rc.shutdown
rc.halt
;; ;;
esac esac
} }

52
tools/killall5 Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
# A simple reimplementation of killall5 from sysvinit-tools
get_my_tree() {
local my_pid
read my_pid garbage < "/proc/self/stat"
child="$my_pid"
while [[ "$parent" != 1 ]]; do
read a b c parent d < "/proc/$child/stat";
child="$parent"
echo "$parent"
done
}
get_all_procs() {
local processlist
for i in /proc/*/exe; do
process_dir="${i%/*}"
process_pid="${process_dir##*/}"
readlink -e "$i" &>/dev/null && {
echo "$process_pid"
}
done
}
get_procs_to_kill() {
for i in "${all_procs[@]}"; do
unset skip
for p in "${my_tree[@]}"; do
[[ "$i" == "$p" ]] && { skip=1; }
done
[[ "$skip" ]] || { echo "$i"; }
done
}
main() {
my_tree=( $(get_my_tree) self thread-self )
all_procs=( $(get_all_procs) )
procs_to_kill=( $(get_procs_to_kill) )
signal="${1:-"-15"}"
kill "$signal" "${procs_to_kill[@]}" 2>/dev/null
return 0
}
main "$@"