diff --git a/.gitignore b/.gitignore
index 814e980..974824b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
linux-*
open-ath9k-htc-firmware
-PrawnOS-Alpha-c201-libre-2GB.img
+PrawnOS-Alpha-c201-libre-2GB*
tmp.*
PrawnOS-Alpha-c201-libre-2GB-git*.img
diff --git a/makefile b/makefile
index f87b128..8f47b79 100644
--- a/makefile
+++ b/makefile
@@ -13,12 +13,29 @@
# You should have received a copy of the GNU General Public License
# along with PrawnOS. If not, see .
+KVER=4.17.19
+OUTNAME=PrawnOS-Alpha-c201-libre-2GB.img
+BASE=$(OUTNAME)-BASE
+
+
+#Usage:
+#run make image
+#this will generate two images named OUTNAME and OUTNAME-BASE
+#-BASE is only the filesystem with no kernel.
+
+
+#if you make any changes to the kernel or kernel config with make kernel_config
+#run kernel_inject
+
+
+
.PHONY: clean
clean:
@echo "Enter one of:"
@echo " clean_kernel - which deletes the untar'd kernel folder from build"
@echo " clean_ath - which deletes the untar'd ath9k driver folder from build"
- @echo " clean_img - which deletes the built PrawnOS images, this is ran when make image is ran"
+ @echo " clean_img - which deletes the built PrawnOS image, this is ran when make image is ran"
+ @echo " clean_fs - which deletes the built PrawnOS base image"
@echo " clean_all - which does all of the above"
@echo " in most cases none of these need to be used manually as most cleanup steps are handled automatically"
@@ -32,33 +49,48 @@ clean_ath:
.PHONY: clean_img
clean_img:
- rm -f PrawnOS-*-c201-libre-*GB.img
+ rm -f $(OUTNAME)
+
+.PHONY: clean_fs
+clean_fs:
+ rm -r $(BASE)
.PHONY: clean_all
clean_all:
make clean_kernel
make clean_ath
make clean_img
+ make clean_fs
.PHONY: kernel
kernel:
- scripts/buildKernel.sh
+ scripts/buildKernel.sh $(KVER)
+#makes the base filesystem image, no kernel only if the base image isnt present
.PHONY: filesystem
filesystem:
- make clean_img
- scripts/buildDebianFs.sh
+ [ -f $(BASE) ] || scripts/buildFilesystem.sh $(KVER)
.PHONY: kernel_inject
kernel_inject: #Targets an already built .img and swaps the old kernel with the newly compiled kernel
- scripts/buildNewKernelIntoFS.sh
+ scripts/injectKernelIntoFS.sh $(KVER) $(OUTNAME)
+
+.PHONY: injected_image
+injected_image: #makes a copy of the base image with a new injected kernel
+ make kernel
+ cp PrawnOS-Alpha-c201-libre-2GB.img-BASE PrawnOS-Alpha-c201-libre-2GB.img
+ make kernel_inject
.PHONY: image
image:
make clean_img
- scripts/buildKernel.sh
- scripts/buildDebianFs.sh
+ make kernel
+ make filesystem
+#Make a new copy of the filesystem image
+ cp $(BASE) $(OUTNAME)
+ make kernel_inject
+
.PHONY: live_image
live_image:
@@ -66,4 +98,8 @@ live_image:
.PHONY: kernel_config
kernel_config:
- scripts/crossmenuconfig.sh
+ scripts/crossmenuconfig.sh $(KVER)
+
+.PHONY: patch_kernel
+patch_kernel:
+ scripts/patchKernel.sh
diff --git a/resources/BuildResources/config b/resources/BuildResources/config
index dd963ff..60b5606 100644
--- a/resources/BuildResources/config
+++ b/resources/BuildResources/config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.17.2-gnu Kernel Configuration
+# Linux/arm 4.17.19-gnu Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
diff --git a/scripts/InstallScripts/wifi-test.sh b/scripts/InstallScripts/wifi-test.sh
new file mode 100644
index 0000000..b660208
--- /dev/null
+++ b/scripts/InstallScripts/wifi-test.sh
@@ -0,0 +1,9 @@
+#! /bin/bash
+
+#Connect to wifi
+wpa_passphrase PotatoMuncher gimmethosetots > wpa.conf
+wpa_supplicant -i wlan0 -c wpa.conf &
+dhclient wlan0
+
+#download the debian image
+wget https://cdimage.debian.org/debian-cd/current/armhf/iso-dvd/debian-9.8.0-armhf-DVD-1.iso
diff --git a/scripts/buildDebianFs.sh b/scripts/buildFilesystem.sh
similarity index 88%
rename from scripts/buildDebianFs.sh
rename to scripts/buildFilesystem.sh
index 5d3dfd7..1e4f8f7 100755
--- a/scripts/buildDebianFs.sh
+++ b/scripts/buildFilesystem.sh
@@ -19,7 +19,6 @@
# along with PrawnOS. If not, see .
-KVER=4.17.19
#Ensure Sudo
if [ ! $UID = "0" ]
@@ -29,11 +28,18 @@ then
exit 1
fi
+if [ -z "$1" ]
+then
+ echo "No kernel version supplied"
+ exit 1
+fi
+KVER=$1
+
[ ! -d build ] && echo "No build folder found, is the kernel built?" && exit
outmnt=$(mktemp -d -p `pwd`)
-outdev=/dev/loop4
+outdev=/dev/loop5
install_resources=resources/InstallResources
build_resources=resources/BuildResources
@@ -76,7 +82,7 @@ create_image() {
}
# create a 3GB image with the Chrome OS partition layout
-create_image PrawnOS-Alpha-c201-libre-2GB.img $outdev 50M 40 $outmnt
+create_image PrawnOS-Alpha-c201-libre-2GB.img-BASE $outdev 50M 40 $outmnt
# use default debootstrap mirror if none is specified
if [ "$PRAWNOS_DEBOOTSTRAP_MIRROR" = "" ]
@@ -97,6 +103,11 @@ cp scripts/InstallScripts/* $outmnt/InstallResources/
cp scripts/InstallScripts/InstallToInternal.sh $outmnt/
chmod +x $outmnt/*.sh
+
+#Copy in the test script
+cp scripts/InstallScripts/wifi-test.sh $outmnt/wifi-test.sh
+chmod +x $outmnt/wifi-test.sh
+
#Setup the chroot for apt
#This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests
cp /etc/hosts $outmnt/etc/
@@ -134,14 +145,6 @@ chroot $outmnt apt-get -t testing install -d -y firefox-esr
rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests
echo -n "127.0.0.1 PrawnOS-Alpha" > $outmnt/etc/hosts
-# put the kernel in the kernel partition, modules in /lib/modules and AR9271
-# firmware in /lib/firmware
-dd if=build/linux-$KVER/vmlinux.kpart of=${outdev}p1 conv=notrunc
-make -C build/linux-$KVER ARCH=arm INSTALL_MOD_PATH=$outmnt modules_install
-rm -f $outmnt/lib/modules/3.14.0/{build,source}
-install -D -m 644 build/open-ath9k-htc-firmware/target_firmware/htc_9271.fw $outmnt/lib/firmware/ath9k_htc/htc_9271-1.4.0.fw
-install -D -m 644 build/open-ath9k-htc-firmware/target_firmware/htc_7010.fw $outmnt/lib/firmware/ath9k_htc/htc_7010-1.4.0.fw
-
umount -l $outmnt > /dev/null 2>&1
rmdir $outmnt > /dev/null 2>&1
losetup -d $outdev > /dev/null 2>&1
diff --git a/scripts/buildKernel.sh b/scripts/buildKernel.sh
index 0e7075c..7ec89dc 100755
--- a/scripts/buildKernel.sh
+++ b/scripts/buildKernel.sh
@@ -18,8 +18,12 @@
# You should have received a copy of the GNU General Public License
# along with PrawnOS. If not, see .
-
-KVER=4.17.19
+if [ -z "$1" ]
+then
+ echo "No kernel version supplied"
+ exit 1
+fi
+KVER=$1
TEST_PATCHES=false
ROOT_DIR=`pwd`
diff --git a/scripts/crossmenuconfig.sh b/scripts/crossmenuconfig.sh
index 8d618e9..11ebd28 100755
--- a/scripts/crossmenuconfig.sh
+++ b/scripts/crossmenuconfig.sh
@@ -19,20 +19,33 @@
# You should have received a copy of the GNU General Public License
# along with PrawnOS. If not, see .
-KVER=4.17.19
+if [ -z "$1" ]
+then
+ echo "No kernel version supplied"
+ exit 1
+fi
+KVER=$1
+
+TEST_PATCHES=false
ROOT_DIR=`pwd`
RESOURCES=$ROOT_DIR/resources/BuildResources
+
[ ! -d build ] && mkdir build
cd build
+# build Linux-libre, with ath9k_htc
[ ! -f linux-libre-$KVER-gnu.tar.lz ] && wget https://www.linux-libre.fsfla.org/pub/linux-libre/releases/$KVER-gnu/linux-libre-$KVER-gnu.tar.lz
-[ ! -d linux-$KVER ] && tar --lzip -xvf linux-libre-$KVER-gnu.tar.lz
+[ ! -d linux-$KVER ] && tar --lzip -xvf linux-libre-$KVER-gnu.tar.lz && FRESH=true
cd linux-$KVER
make clean
make mrproper
#Apply the usb and mmc patches if unapplied
[ "$FRESH" = true ] && for i in $RESOURCES/patches-tested/DTS/*.patch; do patch -p1 < $i; done
[ "$FRESH" = true ] && for i in $RESOURCES/patches-tested/kernel/*.patch; do patch -p1 < $i; done
+#Apply all of the rockMyy patches that make sense
+[ "$TEST_PATCHES" = true ] && for i in $RESOURCES/patches-untested/kernel/*.patch; do patch -p1 < $i; done
+[ "$TEST_PATCHES" = true ] && for i in $RESOURCES/patches-untested/DTS/*.patch; do patch -p1 < $i; done
+
cp $RESOURCES/config .config
make menuconfig ARCH=arm CROSS_COMPILE=arm-none-eabi- .config
cp .config $RESOURCES/config
diff --git a/scripts/buildNewKernelIntoFS.sh b/scripts/injectKernelIntoFS.sh
similarity index 91%
rename from scripts/buildNewKernelIntoFS.sh
rename to scripts/injectKernelIntoFS.sh
index 812cbd4..e5880d7 100755
--- a/scripts/buildNewKernelIntoFS.sh
+++ b/scripts/injectKernelIntoFS.sh
@@ -15,8 +15,18 @@
# You should have received a copy of the GNU General Public License
# along with PrawnOS. If not, see .
-KVER=4.17.2
+if [ -z "$1" ]
+then
+ echo "No kernel version supplied"
+ exit 1
+fi
+KVER=$1
+if [ -z "$2" ]
+then
+ echo "No image filesystem image supplied"
+ exit 1
+fi
outmnt=$(mktemp -d -p `pwd`)
outdev=/dev/loop7
@@ -42,7 +52,7 @@ trap cleanup INT TERM EXIT
#Mount the build filesystem image
-losetup -P $outdev PrawnOS-*-c201-libre-2GB*
+losetup -P $outdev $2
mount -o noatime ${outdev}p2 $outmnt
# put the kernel in the kernel partition, modules in /lib/modules and AR9271
diff --git a/scripts/patchKernel.sh b/scripts/patchKernel.sh
new file mode 100755
index 0000000..6a435b6
--- /dev/null
+++ b/scripts/patchKernel.sh
@@ -0,0 +1,24 @@
+#!/bin/sh -xe
+
+if [ -z "$1" ]
+then
+ echo "No kernel version supplied"
+ exit 1
+fi
+KVER=$1
+
+ROOT_DIR=`pwd`
+RESOURCES=$ROOT_DIR/resources/BuildResources
+
+
+[ ! -d build ] && mkdir build
+cd build
+# build Linux-libre, with ath9k_htc
+cd linux-$KVER
+make clean
+make mrproper
+#Apply the usb and mmc patches if unapplie
+for i in $RESOURCES/patches-tested/DTS/*.patch; do patch -p1 < $i; done
+for i in $RESOURCES/patches-tested/kernel/*.patch; do patch -p1 < $i; done
+
+cd $ROOT_DIR