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:
@@ -77,4 +77,18 @@
|
||||
<file>meson-g12b-odroid-go-ultra</file>
|
||||
<file>meson-g12b-powkiddy-rgb10-max-3-pro</file>
|
||||
</S922X>
|
||||
<SM8250 bootmethod="grub">
|
||||
<file short="rp5" full="Retroid Pocket 5" rotation="3">sm8250-retroidpocket-rp5</file>
|
||||
<file short="rpflip2" full="Retroid Pocket Flip2" rotation="3">sm8250-retroidpocket-flip2</file>
|
||||
<file short="rpmini" full="Retroid Pocket Mini" rotation="1">sm8250-retroidpocket-rpmini</file>
|
||||
<file short="rpminiv2" full="Retroid Pocket Mini V2" rotation="1">sm8250-retroidpocket-rpminiv2</file>
|
||||
</SM8250>
|
||||
<SM8550 bootmethod="grub">
|
||||
<file short="odin2" full="AYN Odin2">qcs8550-ayn-odin2</file>
|
||||
<file short="odin2portal" full="AYN Odin2 Portal">qcs8550-ayn-odin2portal</file>
|
||||
<file short="odin2mini" full="AYN Odin2 Mini">qcs8550-ayn-odin2mini</file>
|
||||
<file short="pocketace" full="AYANEO Pocket ACE">qcs8550-ayaneo-pocketace</file>
|
||||
<file short="pocketdmg" full="AYANEO Pocket DMG">qcs8550-ayaneo-pocketdmg</file>
|
||||
<file short="pocketevo" full="AYANEO Pocket EVO">qcs8550-ayaneo-pocketdmg</file>
|
||||
</SM8550>
|
||||
</dtb>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -70,6 +70,7 @@ makeinstall_target() {
|
||||
search_label chain reboot loadenv test gfxterm efi_gop
|
||||
|
||||
mkdir -p ${INSTALL}/usr/share/bootloader/EFI/BOOT
|
||||
cp -av ${PKG_DIR}/config/* ${INSTALL}/usr/share/bootloader/EFI/BOOT
|
||||
cp -av bootaa64.efi ${INSTALL}/usr/share/bootloader/EFI/BOOT
|
||||
|
||||
# Create grub configuration
|
||||
@@ -77,8 +78,4 @@ makeinstall_target() {
|
||||
|
||||
# Always install the update script
|
||||
find_file_path bootloader/update.sh && cp -av ${FOUND_PATH} ${INSTALL}/usr/share/bootloader
|
||||
|
||||
if [ -d ${PKG_DIR}/sources/${DEVICE} ]; then
|
||||
cp -av ${PKG_DIR}/sources/${DEVICE}/* ${INSTALL}/usr/share/bootloader/EFI/BOOT
|
||||
fi
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
# GRUB Environment Block
|
||||
# WARNING: Do not edit this file by tools other than grub-editenv!!!
|
||||
##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
|
||||
Reference in New Issue
Block a user