@@ -18,6 +18,8 @@ DISTRO="$4"
1818BOOT=" $5 "
1919MODEL=" $6 "
2020VARIANT=" $7 "
21+ RELEASE_REPO=ayufan-rock64/linux-rootfs
22+ BUILD_ARCH=arm64
2123
2224if [ -z " $MODEL " ]; then
2325 MODEL=" pine64"
@@ -74,123 +76,48 @@ cleanup() {
7476trap cleanup EXIT
7577
7678ROOTFS=" "
77- UNTAR=" bsdtar -xpf"
78- METHOD=" download"
79+ TAR_OPTIONS=" "
7980
8081case $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 ;;
99100esac
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-
168102mkdir -p $BUILD
169103TARBALL=" $TEMP /$( basename $ROOTFS ) "
104+
170105mkdir -p " $BUILD "
171106if [ ! -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 "
183109fi
184110
185111# Extract with BSD tar
186112echo -n " Extracting ... "
187113set -x
188- $UNTAR " $TARBALL " -C " $DEST "
114+ tar -xf " $TARBALL " -C " $DEST " $TAR_OPTIONS
189115echo " OK"
190116rm -f " $TARBALL "
191117
192118# Add qemu emulation.
193119cp /usr/bin/qemu-aarch64-static " $DEST /usr/bin"
120+ cp /usr/bin/qemu-arm-static " $DEST /usr/bin"
194121
195122# Prevent services from starting
196123cat > " $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.
248141case $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
284176set -ex
@@ -287,7 +179,7 @@ locale-gen en_US.UTF-8
287179$ADDPPACMD
288180apt-get -y update
289181apt-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
291183apt-get -y remove --purge ureadahead
292184apt-get -y update
293185adduser --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
415303fi
416304
417305# Clean up
306+ rm -f " $DEST /usr/bin/qemu-arm-static"
418307rm -f " $DEST /usr/bin/qemu-aarch64-static"
419308rm -f " $DEST /usr/sbin/policy-rc.d"
420309rm -f " $DEST /var/lib/dbus/machine-id"
310+ rm -f " $DEST /SHA256SUMS"
421311
422312echo " Done - installed rootfs to $DEST "
0 commit comments