-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup_build_env.sh
67 lines (48 loc) · 2.14 KB
/
setup_build_env.sh
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
#!/bin/sh
#####################################################################
## Setup variables
#####################################################################
_ECHO=/usr/bin/echo
_INSTALL="/usr/bin/apt-get -y install"
_CP=/usr/bin/cp
_MOUNT=/usr/bin/mount
_CHROOT=/usr/sbin/chroot
_DEBOOTSTRAP=/usr/sbin/debootstrap
_CAT=/usr/bin/cat
_EXIT="exit 1"
_CHROOT_DIR=${1}
#####################################################################
## Install requred packages
#####################################################################
${_ECHO} "Installing dependencies"
for name in "qemu-user-static debootstrap"
do
${_INSTALL} ${name} || ${_EXIT}
done
${_ECHO} "Dependencies installation done."
#####################################################################
## Create root fs using debootstrap
#####################################################################
${_ECHO} "Creating root FS"
${_DEBOOTSTRAP} --no-check-gpg --foreign --arch=armhf buster ${_CHROOT_DIR} http://archive.raspbian.org/raspbian || ${_EXIT}
${_ECHO} "Copying QEMU static binary"
cp /usr/bin/qemu-arm-static ${_CHROOT_DIR}/usr/bin
${_ECHO} "Registering ARM binary format"
if [ -f /proc/sys/fs/binfmt_misc/arm ]
then
${_ECHO} "ARM binary format already registered"
else
sudo ${_ECHO} ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' >> /proc/sys/fs/binfmt_misc/register || ${_EXIT}
${_ECHO} "ARM binary format registered"
fi
${_ECHO} "Running debootstrap second stage"
${_CHROOT} ${_CHROOT_DIR} /debootstrap/debootstrap --second-stage || ${_EXIT}
${_ECHO} "Setting up package management in guest environment"
${_CAT} > ${_CHROOT_DIR}/etc/apt/sources.list << EOF
deb http://mirrordirector.raspbian.org/raspbian/ buster main contrib non-free rpi
deb http://archive.raspberrypi.org/debian/ buster main
EOF
${_CHROOT} ${_CHROOT_DIR} apt-key adv --keyserver keyserver.ubuntu.com --recv 82B129927FA3303E || ${_EXIT}
${_CHROOT} ${_CHROOT_DIR} apt-get update || ${_EXIT}
${_ECHO} "Guest chroot environment is ready at ${_CHROOT_DIR}"
exit 0