mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
grub: refactor
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
|
||||
DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
|
||||
|
||||
mkdir -p "${INSTALL}/usr/share/bootloader/EFI/BOOT"
|
||||
cat << EOF > "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
@@ -39,48 +39,29 @@ terminal_output gfxterm
|
||||
set menu_color_normal=cyan/blue
|
||||
set menu_color_highlight=white/blue
|
||||
|
||||
menuentry 'Retroid Pocket 5' \$menuentry_id_option 'rp5' {
|
||||
EOF
|
||||
|
||||
xmlstarlet sel -t -m "//${DEVICE}/file" \
|
||||
-v "concat(@short, '|', @full, '|', @rotation, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL ROTATION DTB; do
|
||||
|
||||
cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
menuentry '${FULL}' \$menuentry_id_option '${SHORT}' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3
|
||||
devicetree /${DEVICE_DTB[0]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Flip2' \$menuentry_id_option 'rpflip2' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3
|
||||
devicetree /${DEVICE_DTB[1]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Mini' \$menuentry_id_option 'rpmini' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1
|
||||
devicetree /${DEVICE_DTB[2]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Mini V2' \$menuentry_id_option 'rpminiv2' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1
|
||||
devicetree /${DEVICE_DTB[3]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket 5 RECOVERY' \$menuentry_id_option 'rp5-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3 recovery
|
||||
devicetree /${DEVICE_DTB[0]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Flip2 RECOVERY' \$menuentry_id_option 'rpflip2-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3 recovery
|
||||
devicetree /${DEVICE_DTB[1]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Mini RECOVERY' \$menuentry_id_option 'rpmini-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1 recovery
|
||||
devicetree /${DEVICE_DTB[2]}.dtb
|
||||
}
|
||||
menuentry 'Retroid Pocket Mini V2 RECOVERY' \$menuentry_id_option 'rpminiv2-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1 recovery
|
||||
devicetree /${DEVICE_DTB[3]}.dtb
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:${ROTATION}
|
||||
devicetree /${DTB}.dtb
|
||||
}
|
||||
EOF
|
||||
done
|
||||
|
||||
xmlstarlet sel -t -m "//${DEVICE}/file" \
|
||||
-v "concat(@short, '|', @full, '|', @rotation, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL ROTATION DTB; do
|
||||
|
||||
cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
menuentry '${FULL} RECOVERY' \$menuentry_id_option '${SHORT}-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:${ROTATION} recovery
|
||||
devicetree /${DTB}.dtb
|
||||
}
|
||||
EOF
|
||||
done
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
mkimage_dtb() {
|
||||
echo "image: copying device trees..."
|
||||
for dtb in ${DEVICE_DTB[@]}; do
|
||||
for dtb in ${DTB[@]}; do
|
||||
echo "image: copying ${dtb}.dtb..."
|
||||
mcopy "${RELEASE_DIR}/3rdparty/bootloader/${dtb}.dtb" ::
|
||||
done
|
||||
@@ -14,5 +14,8 @@ mkimage_efi() {
|
||||
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/EFI" ::
|
||||
}
|
||||
|
||||
DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
|
||||
readarray -t DTB < <(xmlstarlet sel -t -v "//dtb/${DEVICE}/${SUBDEVICE}/file" ${DTBXML})
|
||||
|
||||
mkimage_dtb
|
||||
mkimage_efi
|
||||
|
||||
@@ -24,14 +24,13 @@
|
||||
esac
|
||||
|
||||
PARTITION_TABLE="gpt"
|
||||
DEVICE_DTB=("sm8250-retroidpocket-rp5" "sm8250-retroidpocket-flip2" "sm8250-retroidpocket-rpmini" "sm8250-retroidpocket-rpminiv2")
|
||||
HW_CPU="Snapdragon 865"
|
||||
|
||||
# Kernel target
|
||||
KERNEL_TARGET="Image"
|
||||
|
||||
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
|
||||
KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "qcom/${DTB}.dtb "; done)"
|
||||
KERNEL_MAKE_EXTRACMD=" $(xmlstarlet sel -t -m "//dtb/${DEVICE}//file" -o "qcom/" -v "." -o ".dtb " "${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml")"
|
||||
|
||||
# Kernel cmdline
|
||||
EXTRA_CMDLINE="quiet rootwait console=tty0 clk_ignore_unused pd_ignore_unused"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
|
||||
DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
|
||||
|
||||
mkdir -p "${INSTALL}/usr/share/bootloader/EFI/BOOT"
|
||||
cat << EOF > "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
@@ -32,79 +32,36 @@ set timeout_style=menu
|
||||
set lang=en_US
|
||||
loadfont /EFI/BOOT/dejavu-mono.pf2
|
||||
set rotation=270
|
||||
set gfxmode=1920x1080
|
||||
set gfxmode=auto
|
||||
insmod efi_gop
|
||||
insmod gfxterm
|
||||
terminal_output gfxterm
|
||||
set menu_color_normal=cyan/blue
|
||||
set menu_color_highlight=white/blue
|
||||
|
||||
menuentry 'AYN Odin2' \$menuentry_id_option 'odin2' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[1]}.dtb
|
||||
}
|
||||
menuentry 'AYN Odin2 Portal' \$menuentry_id_option 'odin2portal' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[0]}.dtb
|
||||
}
|
||||
menuentry 'AYN Odin2 Mini' \$menuentry_id_option 'odin2mini' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[2]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket ACE' \$menuentry_id_option 'pocketace' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[3]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket DMG' \$menuentry_id_option 'pocketdmg' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[4]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket EVO' \$menuentry_id_option 'pocketevo' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DEVICE_DTB[5]}.dtb
|
||||
}
|
||||
|
||||
menuentry 'AYN Odin2 RECOVERY' \$menuentry_id_option 'odin2-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[1]}.dtb
|
||||
}
|
||||
menuentry 'AYN Odin2 Portal RECOVERY' \$menuentry_id_option 'odin2portal-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[0]}.dtb
|
||||
}
|
||||
menuentry 'AYN Odin2 Mini RECOVERY' \$menuentry_id_option 'odin2mini-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[2]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket ACE RECOVERY' \$menuentry_id_option 'pocketace-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[3]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket DMG RECOVERY' \$menuentry_id_option 'pocketdmg-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[4]}.dtb
|
||||
}
|
||||
menuentry 'AYANEO Pocket EVO RECOVERY' \$menuentry_id_option 'pocketevo-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DEVICE_DTB[5]}.dtb
|
||||
}
|
||||
|
||||
EOF
|
||||
|
||||
xmlstarlet sel -t -m "//${DEVICE}/file" \
|
||||
-v "concat(@short, '|', @full, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL DTB; do
|
||||
|
||||
cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
menuentry '${FULL}' \$menuentry_id_option '${SHORT}' {
|
||||
savedefault
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
|
||||
devicetree /${DTB}.dtb
|
||||
}
|
||||
EOF
|
||||
done
|
||||
|
||||
xmlstarlet sel -t -m "//${DEVICE}/file" \
|
||||
-v "concat(@short, '|', @full, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL DTB; do
|
||||
|
||||
cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
|
||||
menuentry '${FULL} RECOVERY' \$menuentry_id_option '${SHORT}-recovery' {
|
||||
search --set -f /KERNEL
|
||||
linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
|
||||
devicetree /${DTB}.dtb
|
||||
}
|
||||
EOF
|
||||
done
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
mkimage_dtb() {
|
||||
echo "image: copying device trees..."
|
||||
for dtb in ${DEVICE_DTB[@]}; do
|
||||
for dtb in ${DTB[@]}; do
|
||||
echo "image: copying ${dtb}.dtb..."
|
||||
mcopy "${RELEASE_DIR}/3rdparty/bootloader/${dtb}.dtb" ::
|
||||
done
|
||||
@@ -24,6 +24,9 @@ mkimage_uboot() {
|
||||
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/boot" ::
|
||||
}
|
||||
|
||||
DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
|
||||
readarray -t DTB < <(xmlstarlet sel -t -v "//dtb/${DEVICE}/${SUBDEVICE}/file" ${DTBXML})
|
||||
|
||||
mkimage_dtb
|
||||
mkimage_efi
|
||||
mkimage_linuxloader
|
||||
|
||||
@@ -25,14 +25,13 @@
|
||||
esac
|
||||
|
||||
PARTITION_TABLE="gpt"
|
||||
DEVICE_DTB=("qcs8550-ayn-odin2portal" "qcs8550-ayn-odin2" "qcs8550-ayn-odin2mini" "qcs8550-ayaneo-pocketace" "qcs8550-ayaneo-pocketdmg" "qcs8550-ayaneo-pocketevo")
|
||||
HW_CPU="Snapdragon 8 Gen2"
|
||||
|
||||
# Kernel target
|
||||
KERNEL_TARGET="Image"
|
||||
|
||||
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
|
||||
KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "qcom/${DTB}.dtb "; done)"
|
||||
KERNEL_MAKE_EXTRACMD=" $(xmlstarlet sel -t -m "//dtb/${DEVICE}//file" -o "qcom/" -v "." -o ".dtb " "${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml")"
|
||||
|
||||
# Kernel cmdline
|
||||
EXTRA_CMDLINE="quiet rootwait console=tty0 allow_mismatched_32bit_el0 fw_devlink.strict=1 pcie_ports=compat irqaffinity=0-2 cgroup.memory=nokmem,nosocket nosoftlockup"
|
||||
|
||||
Reference in New Issue
Block a user