Ver código fonte

Improved image making for debugging

Hal Emmerich 5 anos atrás
pai
commit
b1e036e50c

+ 1 - 1
.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

+ 45 - 9
makefile

@@ -13,12 +13,29 @@
 # You should have received a copy of the GNU General Public License
 # along with PrawnOS.  If not, see <https://www.gnu.org/licenses/>.
 
+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

+ 1 - 1
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

+ 9 - 0
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

+ 14 - 11
scripts/buildDebianFs.sh → scripts/buildFilesystem.sh

@@ -19,7 +19,6 @@
 # along with PrawnOS.  If not, see <https://www.gnu.org/licenses/>.
 
 
-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

+ 6 - 2
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 <https://www.gnu.org/licenses/>.
 
-
-KVER=4.17.19
+if [ -z "$1" ]
+then
+    echo "No kernel version supplied"
+    exit 1
+fi
+KVER=$1
 TEST_PATCHES=false
 
 ROOT_DIR=`pwd`

+ 15 - 2
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 <https://www.gnu.org/licenses/>.
 
-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

+ 13 - 3
scripts/buildNewKernelIntoFS.sh → 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 <https://www.gnu.org/licenses/>.
 
-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

+ 24 - 0
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