===== PS4 Linux kernels =====
* https://github.com/ps4boot/ps4-linux.git - I can build that kernel, and it runs. It has ca. 1mb patches ontop of the vanilla 5.3.18 kernel.
* upstream 5.3.18 - I can build it, but it does not boot (I have no UART to see more)
* upstream 5.4.182 - I can build it, but it does not boot
===== Compile kernel on itmania Fedora 32 =====
=== preparations ===
sudo dnf -y install git-core flex bison elfutils-libelf-devel
=== working for my PS4 pro model ===
This is a 5.3.18-gcf76ce01e, works for me.
git clone https://github.com/ps4boot/ps4-linux.git
cd ps4-linux
cp config .config
make -j 12 bzImage
# then copy arch/x86/boot/bzImage to partition /dev/sda1
=== nonworking tree ===
git clone https://github.com/ps4gentoo/ps4-linux-5.3.7
cd ps4-linux-5.3.7
make clean
make oldconfig
make -j 12 bzImage
[..]
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
CHK include/generated/compile.h
AS drivers/base/firmware_loader/builtin/mrvl/sd8897_uapsta.bin.gen.o
AS drivers/base/firmware_loader/builtin/mrvl/sd8797_uapsta.bin.gen.o
make[4]: *** No rule to make target '/lib/firmware/amdgpu/gladius_ce.bin', needed by 'drivers/base/firmware_loader/builtin/amdgpu/gladius_ce.bin.gen.o'. Stop.
make[3]: *** [scripts/Makefile.build:497: drivers/base/firmware_loader/builtin] Error 2
make[2]: *** [scripts/Makefile.build:497: drivers/base/firmware_loader] Error 2
make[1]: *** [scripts/Makefile.build:497: drivers/base] Error 2
make: *** [Makefile:1085: drivers] Error 2
[ITmania@ps4 ps4-linux-5.3.7]$
Hm.. the firmware seems nowhere around. 2 ideas:
* What if it's just distributed in Sonys update packages? Can not open these.
* Or on the PS4 disk.
* Or they should be part of the kernels already compiled by others. How to extract from compiled kernels? extract-vmlinux can extract vmlinux from bzImage files, but how to get the single firmware pieces..
===== Early console =====
Without anything further, the kernel only outputs to screen, if that fails you can not debug. The PS4 offers UART contacts on the board, you can solder cables, and use a UART/USB module to read. By default, the output is scrambled or encrypted, you need a jailbreak and the right payload to get clear text output from the UART.
Other idea: console over USB.