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