Preparación del entorno
- Instale Ubuntu 22.04.2 LTS.
- Instalar dependencias:
1
|
sudo apt install binfmt-support qemu-user-static gcc-10-aarch64-linux-gnu kernel-package fakeroot simg2img img2simg mkbootimg bison flex gcc-aarch64-linux-gnu pkg-config libncurses-dev libssl-dev unzip git
|
Descargar fuente
1
|
git clone https://github.com/OpenStick/linux.git --depth=1
|
Construcción del núcleo
Ajuste de la tabla de frecuencia de la CPU
Editar:
linux/drivers/clk/qcom/a53-pll.c
Ajuste/extienda las entradas de frecuencia con cuidado, equilibrando el rendimiento, la potencia y las térmicas.
Edite la tabla DTS OPP según sea necesario:
linux/arch/arm64/boot/dts/qcom/msm8916.dtsi
Pasos de construcción
1
2
3
4
5
|
cd linux
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
make msm8916_defconfig
make menuconfig
|
Soporte serie USB (para dispositivos USB tipo Klipper)
Habilite las opciones USB CDC ACM / USB Serial relevantes en menuconfig.
Construir paquetes
1
|
make -j`nproc` bindeb-pkg
|
Resultados esperados:
- archivos del kernel
.deb (linux-image, linux-headers)
Imagen.gz
- destino DTB (
msm8916-handsome-openstick-*.dtb)
Preparar imagen RootFS
Obtener la imagen base de Debian
1
2
3
4
|
mkdir ~/rootfs
cd ~/rootfs
wget https://github.com/OpenStick/OpenStick/releases/download/v1/debian.zip && unzip debian.zip
mv ./debian/rootfs.img ~/rootfs
|
1
|
simg2img rootfs.img root.img
|
Montar y hacer chroot
1
2
3
4
5
|
sudo mount root.img /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /sys /mnt/sys
|
Copie los archivos deb del kernel en /mnt, luego:
1
2
3
4
|
sudo chroot /mnt
dpkg -l | grep -E "linux-headers|linux-image" |awk '{print $2}'|xargs dpkg -P
dpkg -i *.deb
rm linux-*.deb
|
Habilitar rc.local con systemd
Cree /etc/systemd/system/rc-local.service y /etc/rc.local, luego:
1
|
systemctl daemon-reload && systemctl enable rc-local
|
Limpieza de configuración local y fuente adecuada
- Instalar y configurar configuraciones regionales:
1
2
|
sudo apt install locales
sudo dpkg-reconfigure locales
|
- Elimine las entradas inválidas de la lista de fuentes antiguas si es necesario.
Desmontar
1
2
3
4
5
|
sudo umount /mnt/proc
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt
|
Volver a convertir a imagen dispersa
1
|
img2simg root.img rootfs.img
|
Crear imagen de arranque
Archivos requeridos:
Imagen.gz
- Destino DTB (para su variante de hardware)
initrd.img-* de rootfs /boot
Ejemplo (ufi001c):
1
2
3
|
cat Image.gz msm8916-handsome-openstick-ufi001c.dtb > ufi001c-kernel-dtb
mv initrd.img-* initrd.img
mkbootimg --base 0x80000000 --kernel_offset 0x00080000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 --pagesize 2048 --second_offset 0x00f00000 --ramdisk initrd.img --cmdline "earlycon root=PARTUUID=a7ab80e8-e9d1-e8cd-f157-93f69b1d141e console=ttyMSM0,115200 no_framebuffer=true rw" --kernel ufi001c-kernel-dtb -o ufi001c-boot.img
|
Reemplace boot.img y rootfs.img en el paquete de actualización con sus archivos generados.