From 51c7ec2471f1225da2a9a93874a4884160c70dba Mon Sep 17 00:00:00 2001 From: fbt Date: Sat, 9 Aug 2014 14:59:12 +0400 Subject: [PATCH] Oops --- Makefile | 31 +++++++++++ config.mk | 8 +++ rc.conf | 17 ++++++ rc.in | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 220 insertions(+) create mode 100644 Makefile create mode 100644 config.mk create mode 100644 rc.conf create mode 100755 rc.in diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..62f4da8 --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +# watchman makefile +VERSION=1.6.9 + +# 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 + +uninstall: + rm $(BINDIR)/rc diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..3c262ae --- /dev/null +++ b/config.mk @@ -0,0 +1,8 @@ +# Make config + +USR ?= /usr/local +ETC ?= /etc +PREFIX ?= / + +BINDIR = $(DESTDIR)$(PREFIX)/$(USR)/bin +ETCDIR = $(DESTDIR)$(PREFIX)/$(ETC) diff --git a/rc.conf b/rc.conf new file mode 100644 index 0000000..50c6826 --- /dev/null +++ b/rc.conf @@ -0,0 +1,17 @@ +# System-wide configuration +export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin' + +# Hostname +cfg_hostname='changeme' + +# Services +cfg_services+=( 'fsck' 'mount' 'systemd-udevd' 'sysctl' ) # Services that need tp be started in an order +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. + +# Modules +cfg_modules=( ) # Add modules you want to be loaded at boot time here + +# Make C-A-D perform a soft reset +ctrlaltdel soft diff --git a/rc.in b/rc.in new file mode 100755 index 0000000..a534759 --- /dev/null +++ b/rc.in @@ -0,0 +1,164 @@ +#!/bin/bash + +# Default virtual mounts for linux systems +cfg_mounts+=( 'proc:proc:/proc:' ) +cfg_mounts+=( 'run:tmpfs:/run:' ) +cfg_mounts+=( 'sys:sysfs:/sys:' ) + +# devfs and its children +cfg_mounts+=( 'dev:devtmpfs:/dev:' ) +cfg_mounts+=( 'pts:devpts:/dev/pts:noexec,nosuid,gid=5,mode=0620' ) +cfg_mounts+=( 'mqueue:mqueue:/dev/mqueue:noexec,nosuid,nodev' ) +cfg_mounts+=( 'shm:tmpfs:/dev/shm:defaults,mode=0777' ) + +# Functions +rc.rescue() { exec "${cfg_rc_rescue_shell:-"$SHELL"}"; } + +rc.motd() { + [[ -f "/etc/rc.motd" ]] && { + while read; do + printf "$REPLY" + done < "/etc/rc.motd" + } + + return 0 +} + +rc.mount_misc() { + for m in "${cfg_mounts[@]}"; do + IFS=':' read fs fs_type mountpoint mount_options <<< "$m" + + [[ "$mount_options" ]] || { mount_options='defaults'; } + + mountpoint -q "$mountpoint" || { + [[ -d "$mountpoint" ]] || { mkdir -p "$mountpoint"; } + mount "$fs" -n -t "$fs_type" -o "$mount_options" "$mountpoint" + } + done +} + +rc.parse_cmdline() { + [[ -f "/proc/cmdline" ]] && { + boot_cmdline=( $(/dev/null & + done + wait +} + +rc.stop_everything() { + echo "Politely asking all processes to shut down..." + killall5 -15; sleep 3 + + echo "Killing the remaning ones..." + killall5 -9 +} + +rc.unmount_everything() { + echo "Unmounting filesystems..." + umount -a +} + +rc.remount_root() { + echo "Remounting / read-only..." + mount / -o remount,ro +} + +rc.boot() { + rc.mount_misc + rc.hostname + rc.modules + rc.services_start + wait + rc.motd +} + +rc.halt() { + case "$action" in + poweroff|shutdown) echo 'o' > /proc/sysrq-trigger;; + halt) :;; + reboot|*) echo 'b' > /proc/sysrq-trigger;; + esac +} + +rc.shutdown() { + rc.services_stop + rc.stop_everything + rc.unmount_everything + rc.remount_root + + echo "Halt complete." + + rc.halt +} + +rc.hostname() { + [[ "$cfg_hostname" ]] && { hostname "$cfg_hostname"; } +} + +rc.modules() { + for i in "${cfg_modules[@]}"; do + modprobe "$i" + done +} + +rc.main() { + source "@ETC@/rc.conf" + + action="${1:-boot}" + + case "$action" in + boot) + echo "Welcome to `uname -rs`" + rc.boot + ;; + + poweroff|reboot|shutdown) + rc.shutdown + ;; + esac +} + +# Main part +rc.main "$@"