forked from armbian/build
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9f36738
commit 6643dba
Showing
6 changed files
with
132 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
# Generate kernel and rootfs image for Qcom ABL booting | ||
declare -g BOARD_NAME="Oneplus Kebab" | ||
declare -g BOARD_MAINTAINER="amazingfate" | ||
declare -g BOARDFAMILY="sm8250" | ||
declare -g KERNEL_TARGET="current,edge" | ||
declare -g KERNEL_TEST_TARGET="edge" | ||
declare -g EXTRAWIFI="no" | ||
declare -g MODULES="spi-geni-qcom" | ||
declare -g BOOTCONFIG="none" | ||
declare -g IMAGE_PARTITION_TABLE="gpt" | ||
declare -g -a ABL_DTB_LIST=("sm8250-oneplus-kebab") | ||
|
||
# Use the full firmware, complete linux-firmware plus Armbian's (for qcom/a650_sqe.fw) | ||
declare -g BOARD_FIRMWARE_INSTALL="-full" | ||
|
||
function oneplus-kebab_is_userspace_supported() { | ||
[[ "${RELEASE}" == "jammy" ]] && return 0 | ||
[[ "${RELEASE}" == "trixie" ]] && return 0 | ||
[[ "${RELEASE}" == "noble" ]] && return 0 | ||
return 1 | ||
} | ||
|
||
function post_family_tweaks_bsp__oneplus-kebab_firmware() { | ||
display_alert "$BOARD" "Install firmwares for oneplus kebab" "info" | ||
|
||
# USB Gadget Network service | ||
mkdir -p $destination/usr/local/bin/ | ||
mkdir -p $destination/usr/lib/systemd/system/ | ||
install -Dm655 $SRC/packages/bsp/usb-gadget-network/setup-usbgadget-network.sh $destination/usr/local/bin/ | ||
install -Dm655 $SRC/packages/bsp/usb-gadget-network/remove-usbgadget-network.sh $destination/usr/local/bin/ | ||
install -Dm644 $SRC/packages/bsp/usb-gadget-network/usbgadget-rndis.service $destination/usr/lib/systemd/system/ | ||
|
||
# Bluetooth MAC addr setup service | ||
install -Dm655 $SRC/packages/bsp/generate-bt-mac-addr/bt-fixed-mac.sh $destination/usr/local/bin/ | ||
install -Dm644 $SRC/packages/bsp/generate-bt-mac-addr/bt-fixed-mac.service $destination/usr/lib/systemd/system/ | ||
|
||
# Kernel postinst script to update abl boot partition | ||
install -Dm655 $SRC/packages/bsp/oneplus-kebab/zz-update-abl-kernel $destination/etc/kernel/postinst.d/ | ||
|
||
# Add kebab firmwares | ||
mkdir -p $destination/lib/firmware/qcom/sm8250/OnePlus/kebab | ||
install -Dm644 $SRC/packages/bsp/oneplus-kebab/a650_zap.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ | ||
install -Dm644 $SRC/packages/bsp/oneplus-kebab/adsp.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ | ||
install -Dm644 $SRC/packages/bsp/oneplus-kebab/cdsp.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/ | ||
install -Dm644 $SRC/packages/bsp/oneplus-kebab/venus.mbn $destination/lib/firmware/qcom/sm8250/OnePlus/kebab | ||
|
||
return 0 | ||
} | ||
|
||
function post_family_tweaks__oneplus-kebab_enable_services() { | ||
if ! oneplus-kebab_is_userspace_supported; then | ||
if [[ "${RELEASE}" != "" ]]; then | ||
display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn" | ||
fi | ||
return 0 | ||
fi | ||
|
||
if [[ "${RELEASE}" == "jammy" ]] || [[ "${RELEASE}" == "noble" ]];then | ||
display_alert "Adding qcom-mainline PPA" "${BOARD}" "info" | ||
do_with_retries 3 chroot_sdcard add-apt-repository ppa:liujianfeng1994/qcom-mainline --yes --no-update | ||
fi | ||
|
||
# we need unudhcpd from armbian repo, so enable it | ||
mv "${SDCARD}"/etc/apt/sources.list.d/armbian.list.disabled "${SDCARD}"/etc/apt/sources.list.d/armbian.list | ||
|
||
do_with_retries 3 chroot_sdcard_apt_get_update | ||
display_alert "$BOARD" "Installing board tweaks" "info" | ||
do_with_retries 3 chroot_sdcard_apt_get_install alsa-ucm-conf qbootctl qrtr-tools protection-domain-mapper tqftpserv unudhcpd mkbootimg | ||
|
||
# disable armbian repo back | ||
mv "${SDCARD}"/etc/apt/sources.list.d/armbian.list "${SDCARD}"/etc/apt/sources.list.d/armbian.list.disabled | ||
do_with_retries 3 chroot_sdcard_apt_get_update | ||
|
||
chroot_sdcard systemctl enable qbootctl.service | ||
chroot_sdcard systemctl enable usbgadget-rndis.service | ||
chroot_sdcard systemctl enable pd-mapper.service | ||
chroot_sdcard systemctl enable tqftpserv.service | ||
chroot_sdcard systemctl enable bt-fixed-mac.service | ||
return 0 | ||
} | ||
|
||
function post_family_tweaks_bsp__oneplus-kebab_bsp_firmware_in_initrd() { | ||
display_alert "Adding to bsp-cli" "${BOARD}: firmware in initrd" "info" | ||
declare file_added_to_bsp_destination # will be filled in by add_file_from_stdin_to_bsp_destination | ||
add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/hooks/oneplus-kebab-firmware" <<- 'FIRMWARE_HOOK' | ||
#!/bin/bash | ||
[[ "$1" == "prereqs" ]] && exit 0 | ||
. /usr/share/initramfs-tools/hook-functions | ||
for f in /lib/firmware/qcom/sm8250/OnePlus/* ; do | ||
add_firmware "${f#/lib/firmware/}" | ||
done | ||
add_firmware "qcom/a650_sqe.fw" # extra one for dpu | ||
add_firmware "qcom/a650_gmu.bin" # extra one for gpu | ||
FIRMWARE_HOOK | ||
run_host_command_logged chmod -v +x "${file_added_to_bsp_destination}" | ||
} | ||
|
||
## Modules, required to boot, add them to initrd | ||
function post_family_tweaks_bsp__oneplus-kebab_bsp_modules_in_initrd() { | ||
display_alert "Adding to bsp-cli" "${BOARD}: modules in initrd" "info" | ||
add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/modules" <<- 'EXTRA_MODULES' | ||
spi-geni-qcom | ||
EXTRA_MODULES | ||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
#!/bin/bash | ||
set -ex | ||
new_rootfs_image_uuid=$(sed -e 's/^.*root=UUID=//' -e 's/ .*$//' < /proc/cmdline) | ||
gzip -c /boot/vmlinuz-*-sm8250 > /tmp/Image.gz | ||
|
||
cat /tmp/Image.gz /usr/lib/linux-image-*-sm8250/qcom/sm8250-oneplus-kebab.dtb > /tmp/Image.gz-dtb | ||
|
||
source /boot/armbianEnv.txt | ||
/usr/bin/mkbootimg \ | ||
--kernel /tmp/Image.gz-dtb \ | ||
--ramdisk /boot/initrd.img-*-sm8250 \ | ||
--base 0x0 \ | ||
--second_offset 0x00f00000 \ | ||
--cmdline "root=UUID=${new_rootfs_image_uuid} slot_suffix=${abl_boot_partition_label#boot}" \ | ||
--kernel_offset 0x8000 \ | ||
--ramdisk_offset 0x1000000 \ | ||
--tags_offset 0x100 \ | ||
--pagesize 4096 \ | ||
-o /boot/armbian-kernel.img | ||
rm -f /tmp/Image.gz /tmp/Image.gz-dtb | ||
|
||
if [ -n "$abl_boot_partition_label" ];then | ||
echo abl boot partition label is $abl_boot_partition_label | ||
dd if=/boot/armbian-kernel.img of=/dev/disk/by-partlabel/${abl_boot_partition_label} | ||
else | ||
echo abl boot partition label is not defined, exit | ||
exit | ||
fi |