Aby zainstalować skompilowany kernel i system najpierw trzeba umieć zrootować telefon i zainstalować TWRP- uwaga ryzykowna operacja - uzywać metod i plików sprawdzonych najlepiej na forum xda https://forum.xda-developers.com lub android polska ma odnośniki do xda i komentarze https://forum.android.com.pl/.
Dodano katalogi z przepisami na kompilacje androida i kerneli.
- https://github.com/pwasiewi/rpilinuxlab/tree/master/androidoreo
- https://github.com/pwasiewi/rpilinuxlab/tree/master/androidnougat
- https://github.com/pwasiewi/rpilinuxlab/tree/master/androidkernel
- https://forum.xda-developers.com/android/general/guide-how-to-build-custom-roms-kernel-t3814251
- https://thealaskalinuxuser.wordpress.com/2018/08/03/video-tutorial-for-android-building-advanced-topics/
- install Gentoo Linux e.g. from UbuntuLiveDVD https://github.com/pwasiewi/gentools
- pull from github: git clone https://github.com/pwasiewi/rpilinuxlab
- cd rpilinuxlab
- mkdir dl
- cd make... np. make.armhfp jest dla raspberrypi2/3 32bit
- make emulate
Raspberry Pi Lab przygotowane na podstawie
- https://wiki.gentoo.org/wiki/Cross_build_environment
- http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html
- środowiska Pawła Kraszewskiego z fragmentami z jego README
Przygotowanie środowiska programistycznego do procesorów ARM po system Gentoo "na piechotę":
Ścieżki w plikach .config przeznaczone są dla tego opisu poniżej. Dla przepisu w "Makefile" trzeba je poprawić.
- Instalacja pakietu CROSSDEV
emerge -av crossdev
- Generacja narzędzi dla platformy ARM
crossdev --target arm-softfloat-linux-gnueabi --stable --gcc 7.3.0-r1 --libc 2.25-r11 --kernel 4.16.9 -oO /usr/portage
- Skrypt "armmake" wywołuje "make" z ustawieniem parametrów do kross-kompilacji narzędziami z p. 2
#!/bin/bash
export ARCH=arm
export CROSS_COMPILE=arm-softfloat-linux-gnueabi-
make $@
- Ściągamy i rozpakowujemy źródła kernela i busybox do podkatalogu src
mkdir -p src bin.kernel bin.busybox out.initrd emulacja
wget http://www.kernel.org/pub/linux/kernel/v4.0/linux-4.16.7.tar.xz
wget http://busybox.net/downloads/busybox-1.28.3.tar.bz2
tar xjf linux-4.16.7.tar.xz -C src
tar xjf busybox-1.28.3.tar.bz2 -C src
- Konfigurujemy kernel
cd src/linux-4.16.7
../../armmake O=../../bin.kernel menuconfig
cd ../..
- Kompilujemy kernel
cd bin.kernel
../armmake all
cd ..
- Konfigurujemy busybox
cd src/busybox-1.28.3
../../armmake O=../../bin.busybox menuconfig
cd ../..
- Kompilujemy busybox
cd bin.busybox
../armmake
../armmake install
cd ..
-
Dopieszczamy INITRD
-
Generujemy obraz INITRD
cd out.initrd
find . | cpio --quiet -H newc -o --owner=0.0 > ../emulacja/initrd
cd ..
- Linkujemy obraz jądra
ln -s ../bin.kernel/arch/arm/boot/zImage emulacja/vmlinuz
- Odpalamy emulator
qemu-system-arm -M versatilepb -m 256 -kernel emulacja/vmlinuz -initrd emulacja/initrd -append "init=/init" -serial=stdio
- Najlepiej jednak skorzystać z załączonych Makefile'ów dla x86_64, armsoft i raspberry2 armvh7
make emulate
i to by było na tyle!
The BeagleBone Black was needed:
crossdev -v -S -t armv7-none-linux-gnueabi --env
'EXTRA_ECONF="--with-arch=armv7-a
--with-fpu=vfpv3-d16
--with-float-abi=hard
libc_cv_forced_unwind=yes
libc_cv_ctors_header=yes
libc_cv_c_cleanup=yes"'
For musl rpi3 (do not work!):
crossdev --target armv7a-hardfloat-linux-musleabi --stable --gcc 7.3.0-r3 --kernel 4.16.12 -oO /usr/portage --env 'EXTRA_ECONF="--with-arch=armv7-a --with-fpu=neon-vfpv4 --with-float-abi=hard"'