aboutsummaryrefslogtreecommitdiff
path: root/geronimo
blob: 5d3bad6acfcf1d775a75482e1073151a1c02d6d0 (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
#!/bin/bash -eu

# uage: geronimo <directory>
#  enter a chroot with various things bind-mounted so you can do
#  useful work.

mnt_devices="proc dev dev/pts sys run"

reverse_words() {
    local -a rev=
    for i in "$@"; do
	rev=("$i" ${rev[@]})
    done
    echo ${rev[@]}
}

start() {
    local mnt=$1
    for i in $mnt_devices ; do
	sudo mount -o bind /$i "$mnt"/$i
    done
    sudo cp /etc/apt/sources.list "$mnt"/etc/apt
    sudo chroot "$mnt" /bin/bash
}

stop() {
    local mnt=$1
    for i in $(reverse_words $mnt_devices); do
	sudo umount "$mnt"/$i
    done
}

if [ $# -lt 1 ]; then
    echo "usage: <directory>"
    exit 1
fi

[ -d $1 ] || { echo "error: '$1' is not a directory"; exit 1; }

start $1
stop $1