2 Commits

Author SHA1 Message Date
udeved
b0238301c9 makefile: add HASSYSV param 2018-05-05 02:09:16 +02:00
udeved
c28ea35b41 merge makefiles 2018-05-05 02:01:09 +02:00
4 changed files with 38 additions and 240 deletions

View File

@@ -18,6 +18,9 @@ BIN = zzz pause modules-load
STAGES = 1 2 3 ctrlaltdel STAGES = 1 2 3 ctrlaltdel
RCBIN = rc/halt rc/shutdown
RC = rc/rc.local rc/rc.shutdown rc/functions rc/rc.conf
LN = ln -sf LN = ln -sf
CP = cp -R --no-dereference --preserve=mode,links -v CP = cp -R --no-dereference --preserve=mode,links -v
RM = rm -f RM = rm -f
@@ -27,6 +30,7 @@ CHMODAW = chmod a-w
CHMODX = chmod +x CHMODX = chmod +x
HASRC = yes HASRC = yes
HASSYSV = no
EDIT = sed \ EDIT = sed \
-e "s|@RUNITDIR[@]|$(RUNITDIR)|g" \ -e "s|@RUNITDIR[@]|$(RUNITDIR)|g" \
@@ -45,18 +49,15 @@ EDIT = sed \
all: all-runit all: all-runit
ifeq ($(HASRC),yes) ifeq ($(HASRC),yes)
all: all-rc all: all-rc
endif endif
all-runit: $(STAGES) all-runit: $(STAGES)
$(CC) $(CFLAGS) pause.c -o pause $(LDFLAGS) $(CC) $(CFLAGS) pause.c -o pause $(LDFLAGS)
all-rc: all-rc: $(RC) rc/shutdown
make RCDIR=$(RCDIR) -C rc $(CC) $(CFLAGS) rc/halt.c -o rc/halt $(LDFLAGS)
install-runit: install-runit:
install -d $(DESTDIR)$(RUNITDIR) install -d $(DESTDIR)$(RUNITDIR)
@@ -84,11 +85,39 @@ install-runit:
install -m644 modules-load.8 $(DESTDIR)$(MANDIR)/man8 install -m644 modules-load.8 $(DESTDIR)$(MANDIR)/man8
install-rc: install-rc:
make install BINDIR=$(BINDIR) RCDIR=$(RCDIR) RCBINDIR=$(RCBINDIR) MANDIR=$(MANDIR) DESTDIR=$(DESTDIR) -C rc install -d $(DESTDIR)$(RCDIR)
install -d $(DESTDIR)$(RCDIR)/sysinit.d
install -d $(DESTDIR)$(RCDIR)/shutdown.d
install -m755 $(RC) $(DESTDIR)$(RCDIR)
install -m644 rc/sysinit.d/* $(DESTDIR)$(RCDIR)/sysinit.d
install -m644 rc/shutdown.d/* $(DESTDIR)$(RCDIR)/shutdown.d
install -m644 rc/crypt.awk $(DESTDIR)$(RCDIR)
install -d $(DESTDIR)$(RCBINDIR)
install -m644 $(RCBIN) $(DESTDIR)$(RCBINDIR)
$(LN) halt $(DESTDIR)$(RCBINDIR)/poweroff
$(LN) halt $(DESTDIR)$(RCBINDIR)/reboot
install_sysv:
install -d $(DESTDIR)$(BINDIR)
$(LN) runit-init $(DESTDIR)$(BINDIR)/init
$(LN) $(RCBINDIR)/halt $(DESTDIR)$(BINDIR)/halt
$(LN) $(RCBINDIR)/shutdown $(DESTDIR)$(BINDIR)/shutdown
$(LN) halt $(DESTDIR)$(BINDIR)/poweroff
$(LN) halt $(DESTDIR)$(BINDIR)/reboot
install -d $(DESTDIR)$(MANDIR)/man8
install -m644 rc/shutdown.8 $(DESTDIR)$(MANDIR)/man8/shutdown.8
install -m644 rc/halt.8 $(DESTDIR)$(MANDIR)/man8/halt.8
$(LN) halt.8 $(DESTDIR)$(MANDIR)/man8/poweroff.8
$(LN) halt.8 $(DESTDIR)$(MANDIR)/man8/reboot.8
install: install-runit install: install-runit
ifeq ($(HASRC),yes) ifeq ($(HASRC),yes)
install: install-rc install: install-rc
ifeq ($(HASSYSV),yes)
install: install_sysv
endif
endif endif
clean-runit: clean-runit:
@@ -96,7 +125,8 @@ clean-runit:
-rm -f $(STAGES) -rm -f $(STAGES)
clean-rc: clean-rc:
make -C rc clean -rm -f rc/halt
-rm -f rc/shutdown $(RC)
clean: clean-runit clean: clean-runit
ifeq ($(HASRC),yes) ifeq ($(HASRC),yes)
@@ -105,5 +135,4 @@ endif
clean: clean:
.PHONY: all install clean install-runit install-rc clean-runit clean-rc all-runit all-rc install_sysv
.PHONY: all install clean install-runit install-rc clean-runit clean-rc all-runit all-rc

103
crypt.awk
View File

@@ -1,103 +0,0 @@
/^#/ || /^$/ { next }
NF>4 { print "a valid crypttab has max 4 cols not " NF >"/dev/stderr"; next }
{
# decode the src variants
split($2, o_src, "=")
if (o_src[1] == "UUID") ("blkid -l -o device -t " $2) | getline src;
else src=o_src[1];
# no password or none is given, ask fo it
if ( NF == 2 ) {
ccmd="cryptsetup luksOpen " src " " $1;
system(ccmd);
ccmd="";
}
else if (NF == 3 ) {
dest=$1
key=$3
split($3, po, "=");
if ( po[1] == "none") ccmd="cryptsetup luksOpen " src " " dest;
else ccmd="cryptsetup luksOpen -d " key " " src" " dest;
system(ccmd);
ccmd="";
}
else {
# the option field is not empty parse the options
dest=$1
key=$3
split($4, opts, ",");
commonopts="";
swapopts="";
luksopts="";
for(i in opts) {
split(opts[i], para, "=");
par=para[1];
val=para[2];
if ( par == "readonly" || par == "read-only") commonopts=commonopts "-r ";
else if ( par == "discard" ) commonopts=commonopts "--allow-discards ";
else if ( par == "tries" ) commonopts=commonopts "-T " val " ";
else if ( par == "swap" ) makeswap="y";
else if ( par == "cipher" ) swapopts=swapopts "-c " val " ";
else if ( par == "size" ) swapopts=swapopts "-s " val " ";
else if ( par == "hash" ) swapopts=swapopts "-h " val " ";
else if ( par == "offset" ) swapopts=swapopts "-o " val " ";
else if ( par == "skip" ) swapopts=swapopts "-p " val " ";
else if ( par == "verify" ) swapopts=swapopts "-y ";
#else if ( par == "noauto" )
#else if ( par == "nofail" )
#else if ( par == "plain" )
#else if ( par == "timeout" )
#else if ( par == "tmp" )
else if ( par == "luks" ) use_luks="y";
else if ( par == "keyscript" ) {use_keyscript="y"; keyscript=val;}
else if ( par == "keyslot" || par == "key-slot" ) luksopts=luksopts "-S " val " ";
else if ( par == "keyfile-size" ) luksopts=luksopts "-l " val " ";
else if ( par == "keyfile-offset" ) luksopts=luksopts "-keyfile-offset=" val " ";
else if ( par == "header" ) luksopts=luksopts "--header=" val " ";
else {
print "option: " par " not supported " >"/dev/stderr";
makeswap="";
use_luks="";
use_keyscript="";
next;
}
}
if ( makeswap == "y" && use_luks != "y" ) {
ccmd="cryptsetup " swapopts commonopts "-d " key " create " dest " " src;
ccmd_2="mkswap /dev/mapper/" dest;
makeswap="";
use_luks="";
use_keyscript="";
system(ccmd);
system(ccmd_2);
ccmd="";
ccmd_2="";
next;
}
if ( use_luks == "y" && makeswap != "y" ){
if ( use_keyscript == "y") {
ccmd=keyscript " | cryptsetup " luksopts commonopts "luksOpen -d - " src " " dest;
use_keyscript="";
}
else {
if ( key == "none" ){
ccmd="cryptsetup " luksopts commonopts "luksOpen " src " " dest;
}
else {
ccmd="cryptsetup " luksopts commonopts "luksOpen -d " key " " src " " dest;
}
}
}
else {
print "use swap OR luks as option" >"/dev/stderr";
ccmd="";
}
makeswap="";
use_luks="";
use_keyscript="";
if ( ccmd != ""){
system(ccmd);
ccmd=""
}
}
}

View File

@@ -1,55 +0,0 @@
RCBIN = halt shutdown
RC = rc.local rc.shutdown functions rc.conf
LN = ln -sf
RM = rm -f
M4 = m4 -P
CHMODAW = chmod a-w
CHMODX = chmod +x
EDIT = sed -e "s|@RCDIR[@]|$(RCDIR)|g"
%: %.in Makefile
@echo "GEN $@"
@$(RM) "$@"
@$(M4) $@.in | $(EDIT) >$@
@$(CHMODAW) "$@"
@$(CHMODX) "$@"
all: $(RC) shutdown
$(CC) $(CFLAGS) halt.c -o halt $(LDFLAGS)
install:
install -d $(DESTDIR)$(RCDIR)
install -d $(DESTDIR)$(RCDIR)/sysinit.d
install -d $(DESTDIR)$(RCDIR)/shutdown.d
install -m755 $(RC) $(DESTDIR)$(RCDIR)
install -m644 sysinit.d/* $(DESTDIR)$(RCDIR)/sysinit.d
install -m644 shutdown.d/* $(DESTDIR)$(RCDIR)/shutdown.d
install -m644 crypt.awk $(DESTDIR)$(RCDIR)
install -d $(DESTDIR)$(RCBINDIR)
install -m644 $(RCBIN) $(DESTDIR)$(RCBINDIR)
$(LN) halt $(DESTDIR)$(RCBINDIR)/poweroff
$(LN) halt $(DESTDIR)$(RCBINDIR)/reboot
install_sysv:
install -d $(DESTDIR)$(BINDIR)
$(LN) runit-init $(DESTDIR)$(BINDIR)/init
$(LN) $(RCBINDIR)/halt $(DESTDIR)$(BINDIR)/halt
$(LN) $(RCBINDIR)/shutdown $(DESTDIR)$(BINDIR)/shutdown
$(LN) halt $(DESTDIR)$(BINDIR)/poweroff
$(LN) halt $(DESTDIR)$(BINDIR)/reboot
install -d $(DESTDIR)$(MANDIR)/man8
install -m644 shutdown.8 $(DESTDIR)$(MANDIR)/man8/shutdown.8
install -m644 halt.8 $(DESTDIR)$(MANDIR)/man8/halt.8
$(LN) halt.8 $(DESTDIR)$(MANDIR)/man8/poweroff.8
$(LN) halt.8 $(DESTDIR)$(MANDIR)/man8/reboot.8
clean:
-rm -f halt
-rm -f shutdown $(RC)
.PHONY: all install install_sysv clean

View File

@@ -1,73 +0,0 @@
#!/bin/sh
# shutdown - shutdown(8) lookalike for runit
single() {
runsvchdir single
}
abort() {
printf '%s\n' "$1" >&2
exit 1
}
usage() {
abort "Usage: ${0##*/} [-fF] [-kchPr] time [warning message]"
}
action=single
while getopts akrhPHfFnct: opt; do
case "$opt" in
a|n|H) abort "'-$opt' is not implemented";;
t) ;;
f) touch /fastboot;;
F) touch /forcefsck;;
k) action=true;;
c) action=cancel;;
h|P) action=halt;;
r) action=reboot;;
[?]) usage;;
esac
done
shift $((OPTIND - 1))
[ $# -eq 0 ] && usage
time=$1; shift
message="${*:-system is going down}"
if [ "$action" = "cancel" ]; then
kill "$(cat @RUNDIR@/shutdown.pid)"
if [ -e /etc/nologin ] && ! [ -s /etc/nologin ]; then
rm /etc/nologin
fi
echo "${*:-shutdown cancelled}" | wall
exit
fi
touch @RUNDIR@/shutdown.pid 2>/dev/null || abort "Not enough permissions to execute ${0#*/}"
echo $$ >@RUNDIR@/shutdown.pid
case "$time" in
now) time=0;;
+*) time=${time#+};;
*:*) abort "absolute time is not implemented";;
*) abort "invalid time";;
esac
for break in 5 0; do
[ "$time" -gt "$break" ] || continue
[ "$break" = 0 ] && touch /etc/nologin
printf '%s in %s minutes\n' "$message" "$time" | wall
printf 'shutdown: sleeping for %s minutes... ' "$(( time - break ))"
sleep $(( (time - break) * 60 ))
time="$break"
printf '\n'
[ "$break" = 0 ] && rm /etc/nologin
done
printf '%s NOW\n' "$message" | wall
$action