Custom linux kernel for old armv7 chromebook
short demo of running linux on this device.
-
kernel - Forked from archlinux|ARM. Archlinux|ARM package build script. Difference:
- lighter and faster as a result of build for specific hardware and not for whole armv7 platform
- single package for kernel, headers and flash image
- no initrd (any way it is not used)
- detects Chrome OS Kernel partition for flashing kernel
- lets user to change kernel boot string during installation (with some conditions)
- support samsung\google snow - XE303C12 chromebook only.
-
firmware - Archlinux|ARM package build script. It collect a couple of necessary files and saves some space compared to regular linux-firmware.
-
some forked apps may run faster than from repo or may not ( builded )
Some (not all) packages from AUR could be installed by sfslib like ./sfslib armget 'pkg name'
The same, but for void-linux. Second forked source is void-packages.
- kernel - Void-linux package build script can be cross-compiled with xbps-src into void-linux package with armv7hf-glibc or armv7hf-musl architectures.
- firmware - Void-linux package build script. It collect a couple of necessary files and takes up less space than a regular linux-firmware package.
- mesa - Void-linux package build script, forked from void-packages
- xorg video driver - Void-linux package build script, forked from archlinux|ARM (it looks like no more required)
Some already builded packages can be found at releases
To try Kali on that device you may use official build script from Kali developers or my rewrited mod of that script Devuan linux disk image could be build with rewrited script too.
Disk images created for demonstration, testing and recovery things. For daily use user should tune it to his own needs and upsize it to used pendrive, sdcard and so on.
empty disk image maker could be used to create an empty disk image of the required size demonstration
Created disk images:
- based on archlinux|ARM
- minimal, console only (old)
- minimal, console only
- with xfce4 DE . . . . . . . . . screenshot
- based on Void-linux
- based on debian linux
- Kali with xfce4 DE
- Devuan with xfce4 DE
- Devuan with lxqt DE . . . . . . . . . screenshot
- Devuan5 with bunsenlabs UI scripts . . . . . . . . . screenshot
- based on alpine linux
- with xfce4 DE . . . . . . . . . screenshot
disk images updated 27.11.2022
qemu-system-arm -machine virt,highmem=off -m 1024 -kernel zImage -append "root=/dev/vda2" -serial stdio -drive if=none,file=armv7hf_q.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0
zImage could be extracted from second partition of disk image like:
mkdir dsk
sudo mount -t btrfs -o,loop,offset=$((512*40960)) armv7hf_q.img dsk
cp dsk/boot/zImage zImage
sudo umount dsk
(looks like xbps is no longer part of void-packages so this example requires Linux with xbps-static-bin installed or Void-linux)
git clone https://github.com/void-linux/void-packages.git
git clone https://github.com/quarkscript/linux-armv7-xe303c12-only.git
cd void-packages/
## copy templates to src-dir
cp -fr ../linux-armv7-xe303c12-only/voidlinux/linux_xe303c12 srcpkgs/
cp -fr ../linux-armv7-xe303c12-only/voidlinux/linux_xe303c12_firmware srcpkgs/
##############################################################
## make glibc build env.
./xbps-src binary-bootstrap
## make glibc kernel package
./xbps-src -a armv7hf build linux_xe303c12
./xbps-src -a armv7hf pkg linux_xe303c12
## make glibc firmware package
./xbps-src -a armv7hf pkg linux_xe303c12_firmware
##############################################################
## make musl build env.
./xbps-src -m x86_64-musl binary-bootstrap x86_64-musl
## make musl kernel package
./xbps-src -m x86_64-musl -a armv7hf-musl build linux_xe303c12
./xbps-src -m x86_64-musl -a armv7hf-musl pkg linux_xe303c12
## make musl firmware package
./xbps-src -m x86_64-musl -a armv7hf-musl pkg linux_xe303c12_firmware
If you plan to re-sign kernel during installation then you will need to install a uboot-mkimage/uboot-tools firstly.
Be aware! Given scripts or packages are not officially supported by any mentioned Linux distributions.