Skip to content

Commit 154d204

Browse files
committed
Use prebuilt rootfs for all images
1 parent 6461ab0 commit 154d204

File tree

2 files changed

+22
-130
lines changed

2 files changed

+22
-130
lines changed

build-environment/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ RUN apt-get install -y python git-core gnupg flex bison gperf build-essential \
1111
sudo cpio nano vim kmod kpartx wget bsdtar qemu-user-static \
1212
pxz ruby-dev debootstrap multistrap
1313

14+
RUN apt-get install -y libssl-dev jq
15+
1416
RUN gem install fpm
1517

1618
RUN curl -L https://github.com/aktau/github-release/releases/download/v0.6.2/linux-amd64-github-release.tar.bz2 | tar -C /tmp -jx && \

simpleimage/make_rootfs.sh

Lines changed: 20 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ DISTRO="$4"
1818
BOOT="$5"
1919
MODEL="$6"
2020
VARIANT="$7"
21+
RELEASE_REPO=ayufan-rock64/linux-rootfs
22+
BUILD_ARCH=arm64
2123

2224
if [ -z "$MODEL" ]; then
2325
MODEL="pine64"
@@ -74,123 +76,48 @@ cleanup() {
7476
trap cleanup EXIT
7577

7678
ROOTFS=""
77-
UNTAR="bsdtar -xpf"
78-
METHOD="download"
79+
TAR_OPTIONS=""
7980

8081
case $DISTRO in
8182
arch)
8283
ROOTFS="http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz"
84+
TAR_OPTIONS="-z"
8385
;;
84-
xenial)
85-
ROOTFS="http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.2/release/ubuntu-base-16.04.2-base-arm64.tar.gz"
86+
xenial|zesty)
87+
version=$(curl -s https://api.github.com/repos/$RELEASE_REPO/releases/latest | jq -r ".tag_name")
88+
ROOTFS="https://github.com/$RELEASE_REPO/releases/download/${version}/ubuntu-${DISTRO}-${VARIANT}-${version}-${BUILD_ARCH}.tar.xz"
89+
TAR_OPTIONS="-J --strip-components=1 binary"
8690
;;
87-
sid|jessie)
88-
ROOTFS="${DISTRO}-base-arm64.tar.gz"
89-
METHOD="debootstrap"
90-
;;
91-
stretch)
92-
ROOTFS="${DISTRO}-base-arm64.tar.gz"
93-
METHOD="multistrap"
91+
sid|jessie|stretch)
92+
version=$(curl -s https://api.github.com/repos/$RELEASE_REPO/releases/latest | jq -r ".tag_name")
93+
ROOTFS="https://github.com/$RELEASE_REPO/releases/download/${version}/debian-${DISTRO}-${VARIANT}-${version}-${BUILD_ARCH}.tar.xz"
94+
TAR_OPTIONS="-J --strip-components=1 binary"
9495
;;
9596
*)
9697
echo "Unknown distribution: $DISTRO"
9798
exit 1
9899
;;
99100
esac
100101

101-
deboostrap_rootfs() {
102-
dist="$1"
103-
tgz="$(readlink -f "$2")"
104-
105-
[ "$TEMP" ] || exit 1
106-
cd $TEMP && pwd
107-
108-
# this is updated very seldom, so is ok to hardcode
109-
debian_archive_keyring_deb='https://ftp.de.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2014.3_all.deb'
110-
wget -O keyring.deb "$debian_archive_keyring_deb"
111-
ar -x keyring.deb && rm -f control.tar.gz debian-binary && rm -f keyring.deb
112-
DATA=$(ls data.tar.*) && compress=${DATA#data.tar.}
113-
114-
KR=debian-archive-keyring.gpg
115-
bsdtar --include ./usr/share/keyrings/$KR --strip-components 4 -xvf "$DATA"
116-
rm -f "$DATA"
117-
118-
qemu-debootstrap --arch=arm64 --keyring=$TEMP/$KR $dist rootfs http://httpredir.debian.org/debian
119-
rm -f $KR
120-
121-
# keeping things clean as this is copied later again
122-
rm -f rootfs/usr/bin/qemu-aarch64-static
123-
124-
bsdtar -C $TEMP/rootfs -a -cf $tgz .
125-
rm -fr $TEMP/rootfs
126-
127-
cd -
128-
}
129-
130-
multistrap_rootfs() {
131-
dist="$1"
132-
tgz="$(readlink -f "$2")"
133-
134-
[ "$TEMP" ] || exit 1
135-
cd $TEMP && pwd
136-
137-
cat > multistrap.conf <<EOF
138-
[General]
139-
noauth=true
140-
unpack=true
141-
debootstrap=Debian Net
142-
aptsources=Debian
143-
144-
[Debian]
145-
# Base packages
146-
packages=systemd systemd-sysv udev apt kmod locales sudo
147-
source=http://deb.debian.org/debian/
148-
keyring=debian-archive-keyring
149-
components=main non-free
150-
suite=stretch
151-
152-
[Net]
153-
# Networking packages
154-
packages=netbase net-tools ethtool iproute iputils-ping ifupdown dhcpcd5 firmware-brcm80211 wpasupplicant ssh avahi-daemon ntp wireless-tools
155-
EOF
156-
157-
multistrap -a arm64 -d rootfs -f multistrap.conf
158-
159-
# keeping things clean as this is copied later again
160-
rm -f rootfs/usr/bin/qemu-aarch64-static
161-
162-
bsdtar -C $TEMP/rootfs -a -cf $tgz .
163-
rm -fr $TEMP/rootfs
164-
165-
cd -
166-
}
167-
168102
mkdir -p $BUILD
169103
TARBALL="$TEMP/$(basename $ROOTFS)"
104+
170105
mkdir -p "$BUILD"
171106
if [ ! -e "$TARBALL" ]; then
172-
if [ "$METHOD" = "download" ]; then
173-
echo "Downloading $DISTRO rootfs tarball ..."
174-
wget -O "$TARBALL" "$ROOTFS"
175-
elif [ "$METHOD" = "debootstrap" ]; then
176-
deboostrap_rootfs "$DISTRO" "$TARBALL"
177-
elif [ "$METHOD" = "multistrap" ]; then
178-
multistrap_rootfs "$DISTRO" "$TARBALL"
179-
else
180-
echo "Unknown rootfs creation method"
181-
exit 1
182-
fi
107+
echo "Downloading $DISTRO rootfs tarball ..."
108+
wget -O "$TARBALL" "$ROOTFS"
183109
fi
184110

185111
# Extract with BSD tar
186112
echo -n "Extracting ... "
187113
set -x
188-
$UNTAR "$TARBALL" -C "$DEST"
114+
tar -xf "$TARBALL" -C "$DEST" $TAR_OPTIONS
189115
echo "OK"
190116
rm -f "$TARBALL"
191117

192118
# Add qemu emulation.
193119
cp /usr/bin/qemu-aarch64-static "$DEST/usr/bin"
120+
cp /usr/bin/qemu-arm-static "$DEST/usr/bin"
194121

195122
# Prevent services from starting
196123
cat > "$DEST/usr/sbin/policy-rc.d" <<EOF
@@ -210,40 +137,6 @@ do_chroot() {
210137
umount "$DEST/tmp"
211138
}
212139

213-
add_debian_apt_sources() {
214-
local release="$1"
215-
local aptsrcfile="$DEST/etc/apt/sources.list"
216-
cat > "$aptsrcfile" <<EOF
217-
deb http://httpredir.debian.org/debian ${release} main contrib non-free
218-
#deb-src http://httpredir.debian.org/debian ${release} main contrib non-free
219-
EOF
220-
# No separate security or updates repo for unstable/sid
221-
[ "$release" = "sid" ] || cat >> "$aptsrcfile" <<EOF
222-
deb http://httpredir.debian.org/debian ${release}-updates main contrib non-free
223-
#deb-src http://httpredir.debian.org/debian ${release}-updates main contrib non-free
224-
225-
deb http://security.debian.org/ ${release}/updates main contrib non-free
226-
#deb-src http://security.debian.org/ ${release}/updates main contrib non-free
227-
EOF
228-
}
229-
230-
add_ubuntu_apt_sources() {
231-
local release="$1"
232-
cat > "$DEST/etc/apt/sources.list" <<EOF
233-
deb http://ports.ubuntu.com/ ${release} main restricted universe multiverse
234-
deb-src http://ports.ubuntu.com/ ${release} main restricted universe multiverse
235-
236-
deb http://ports.ubuntu.com/ ${release}-updates main restricted universe multiverse
237-
deb-src http://ports.ubuntu.com/ ${release}-updates main restricted universe multiverse
238-
239-
deb http://ports.ubuntu.com/ ${release}-security main restricted universe multiverse
240-
deb-src http://ports.ubuntu.com/ ${release}-security main restricted universe multiverse
241-
242-
#deb http://ports.ubuntu.com/ ${release}-backports main restricted universe multiverse
243-
#deb-src http://ports.ubuntu.com/ ${release}-backports main restricted universe multiverse
244-
EOF
245-
}
246-
247140
# Run stuff in new system.
248141
case $DISTRO in
249142
arch)
@@ -278,7 +171,6 @@ case $DISTRO in
278171
echo "Unknown DISTRO=$DISTRO"
279172
exit 2
280173
fi
281-
add_${DEB}_apt_sources $DISTRO
282174
cat > "$DEST/second-phase" <<EOF
283175
#!/bin/sh
284176
set -ex
@@ -287,7 +179,7 @@ locale-gen en_US.UTF-8
287179
$ADDPPACMD
288180
apt-get -y update
289181
apt-get -y install dosfstools curl xz-utils iw rfkill wpasupplicant openssh-server alsa-utils \
290-
nano git build-essential vim jq $EXTRADEBS
182+
nano git build-essential vim jq wget ca-certificates $EXTRADEBS
291183
apt-get -y remove --purge ureadahead
292184
apt-get -y update
293185
adduser --gecos $DEBUSER --disabled-login $DEBUSER --uid 1000
@@ -408,15 +300,13 @@ elif [ -n "$LINUX" -a "$LINUX" != "-" ]; then
408300

409301
depmod -b $DEST $VERSION
410302
fi
411-
412-
# Set Kernel and U-boot update version to current.
413-
do_chroot /usr/bin/env MARK_ONLY=1 /usr/local/sbin/pine64_update_kernel.sh
414-
do_chroot /usr/bin/env MARK_ONLY=1 /usr/local/sbin/pine64_update_uboot.sh
415303
fi
416304

417305
# Clean up
306+
rm -f "$DEST/usr/bin/qemu-arm-static"
418307
rm -f "$DEST/usr/bin/qemu-aarch64-static"
419308
rm -f "$DEST/usr/sbin/policy-rc.d"
420309
rm -f "$DEST/var/lib/dbus/machine-id"
310+
rm -f "$DEST/SHA256SUMS"
421311

422312
echo "Done - installed rootfs to $DEST"

0 commit comments

Comments
 (0)