aboutsummaryrefslogtreecommitdiff
path: root/rc.lib
blob: e0ee61fdb943853b00fa9225457b5b09b8211378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# rc.lib -- common functions for rc.boot and rc.shutdown
# shellcheck disable=1090

export PATH=$PATH:/usr/local/bin:/usr/bin

out() { printf '\033[1;36m-> \033[39m%s\033[m\n' "$@" ;}
err() { printf '\033[1;31m!> \033[39m%s\033[m\n' "$@" ;}

shell() {
    err "Dropping to shell, type 'exit' to continue the boot process."
    sh -l
}

run_hook() {
    out "Running '$1' hooks..."
    for hook in "/etc/init/"*".$1" "/usr/lib/init/hooks/"*".$1"; do
        [ -f "$hook" ] || continue
        out "Running '$hook'..."
        . "$hook"
    done
}

random() {
    seed=/var/random.seed
    case "$1" in
        load)
            out "Seeding random..."
            [ -f "$seed" ] || {
                out "Generating entropy, this might take a while..."
                dd count=1 bs=512 if=/dev/random of="$seed" 2>/dev/null
            }
            cat "$seed" > /dev/urandom
            ;;
        save)
            mkdir -p "${seed%/*}"
            out "Saving random seed..."
            dd count=1 bs=512 if=/dev/urandom of="$seed" 2>/dev/null
            ;;
    esac
}