summaryrefslogtreecommitdiff
path: root/tools/chroot.sh
blob: e5aef1ca9ad591f5aedc04d84347a8c7f2b6c3eb (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/sh

set -e

CHROOT_PREFIX=$1
DISTRO=$2
DISTRO_VERSION=$3
ARCH=$4
USER=$5

CHROOT_PATH=$CHROOT_PREFIX/$DISTRO-$DISTRO_VERSION-$ARCH

die() {
    echo "ERROR: $@"
    exit 1
}

if test $DISTRO = "ubuntu"; then
    mirror=http://archive.ubuntu.com/ubuntu
    cerbero_distro=debian
elif test $DISTRO = "debian"; then
    mirror=http://ftp.debian.org/debian
    cerbero_distro=debian
else
    die "invalid distro $DISTRO"
fi

cerbero_distro_version="$DISTRO"_"$DISTRO_VERSION"

echo "bootstraping $DISTRO-$DISTRO_VERSION"
debootstrap --arch=$ARCH $DISTRO_VERSION $CHROOT_PATH $mirror

cp /etc/resolv.conf $CHROOT_PATH/etc/resolv.conf
cp /etc/hosts $CHROOT_PATH/etc/hosts
hostname=$USER-$DISTRO-$DISTRO_VERSION-$ARCH-chroot
# hostnames cannot contain _
hostname=$(echo $hostname | sed s/'_'/'-'/g)
#echo $hostname > $CHROOT_PATH/etc/hostname
#chroot $CHROOT_PATH hostname $hostname
echo $hostname > $CHROOT_PATH/etc/debian_chroot

userid=$(grep $USER /etc/passwd | cut -d: -f3)
echo "$USER:x:$userid:$userid:$USER,,,:/home/$USER:/bin/bash" >> $CHROOT_PATH/etc/passwd
echo "$USER::15460::::::" >> $CHROOT_PATH/etc/shadow
echo "$USER:x:$userid:" >> $CHROOT_PATH/etc/group
echo "$USER ALL=NOPASSWD: ALL" >> $CHROOT_PATH/etc/sudoers

echo "installing sudo"
chroot $CHROOT_PATH apt-get -y --force-yes install sudo

echo "copying user git/ssh/gpg configurations"
mkdir -p $CHROOT_PATH/home/$USER

cp -f /home/$USER/.gitconfig $CHROOT_PATH/home/$USER/
cp -rf /home/$USER/.ssh $CHROOT_PATH/home/$USER/
chmod -R 700 $CHROOT_PATH/home/$USER/.ssh/
cp -rf /home/$USER/.gnupg $CHROOT_PATH/home/$USER/
chmod -R 700 $CHROOT_PATH/home/$USER/.gnupg/

echo "copying vim configuration files and installing/setting vim as default editor"
cp -f /home/$USER/.vimrc $CHROOT_PATH/home/$USER/
cp -rf /home/$USER/.vim $CHROOT_PATH/home/$USER/
chroot $CHROOT_PATH apt-get -y --force-yes install vim
chroot $CHROOT_PATH update-alternatives --set editor /usr/bin/vim.basic

echo "installing git"
chroot $CHROOT_PATH apt-get -y --force-yes install git-core

echo "installing python and python-argparse"
chroot $CHROOT_PATH apt-get -y --force-yes install python python-argparse

echo "installing locales"
chroot $CHROOT_PATH apt-get -y --force-yes install locales
chroot $CHROOT_PATH locale-gen en_GB.UTF-8

echo "generating cerbero tarball"
make dist-tarball
echo "extracting tarball at $CHROOT_PATH/home/$USER/git"
mkdir -p $CHROOT_PATH/home/$USER/git
tar --bzip2 -xvf dist/cerbero-0.1.0.tar.bz2 -C $CHROOT_PATH/home/$USER/git/
cp -rf .git $CHROOT_PATH/home/$USER/git/cerbero-0.1.0/

echo "generating $CHROOT_PATH/home/$USER/.cerbero/cerbero.cdc from template"
mkdir -p $CHROOT_PATH/home/$USER/.cerbero
cp -f tools/cerbero.cbc.template $CHROOT_PATH/home/$USER/.cerbero/cerbero.cbc
echo "distro = \"$cerbero_distro\"" >> $CHROOT_PATH/home/$USER/.cerbero/cerbero.cbc
echo "distro_version = \"$cerbero_distro_version\"" >> $CHROOT_PATH/home/$USER/.cerbero/cerbero.cbc
sudo mkdir -p $CHROOT_PATH/opt/gstreamer-1.0

echo "fixing permissions"
chown -R $USER:$USER $CHROOT_PATH/home/$USER
chown -R $USER:$USER $CHROOT_PATH/opt/gstreamer-1.0

echo "mounting /proc and /sys"
mount -o bind /proc $CHROOT_PATH/proc
mount -o bind /sys $CHROOT_PATH/sys

echo "chroot created"