diff --git a/config.sh b/config.sh index d30f546..4a5ae56 100644 --- a/config.sh +++ b/config.sh @@ -718,6 +718,83 @@ console=ttyAMA0,115200 console=tty1 root=LABEL=RPIROOT rootfstype=ext4 elevator= EOF } +function genericarm_sbc_steps() { + mkdir -p /boot/efi/EFI/BOOT + if [ -d /boot/efi/EFI/rocky/ ] && [ -f /boot/efi/EFI/rocky/grubaa64.efi ];then + for j in grub.cfg grubenv;do + mv -f /boot/grub2/${j} /boot/efi/EFI/rocky/ + ln -s ../efi/EFI/rocky/${j} /boot/grub2/${j} + done + cp -f /boot/efi/EFI/rocky/grubaa64.efi /boot/efi/EFI/BOOT/BOOTAA64.EFI + fi + + cp -f /usr/share/uboot/rpi_3/u-boot.bin /boot/efi/rpi3-u-boot.bin + cp -f /usr/share/uboot/rpi_4/u-boot.bin /boot/efi/rpi4-u-boot.bin + + rpm -e dracut-config-generic + if [ -x /lib/kernel/install.d/10-devicetree.install ]; then + /lib/kernel/install.d/10-devicetree.install remove + fi + + cat << EOF > /etc/sysconfig/kernel +# Written by image installer +# UPDATEDEFAULT specifies if new-kernel-pkg should make new kernels the default +UPDATEDEFAULT=yes + +# DEFAULTKERNEL specifies the default kernel package type +DEFAULTKERNEL=kernel-core +EOF +chmod 644 /etc/sysconfig/kernel + +### Write grub defaults, turn off OS probing as it is always wrong for image creation +cat << EOF > /etc/default/grub +GRUB_TIMEOUT=5 +GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" +GRUB_DEFAULT=saved +GRUB_DISABLE_SUBMENU=true +GRUB_TERMINAL_OUTPUT="console" +GRUB_CMDLINE_LINUX="" +GRUB_DISABLE_RECOVERY="true" +GRUB_DISABLE_OS_PROBER="true" +GRUB_ENABLE_BLSCFG="false" +EOF + chmod 644 /etc/default/grub + rm -f /boot/dtb + + cat >/usr/local/bin/rootfs-expand << EOF +#!/bin/bash +clear +part=\$(mount |grep '^/dev.* / ' |awk '{print \$1}') +if [ -z "\$part" ];then + echo "Error detecting rootfs" + exit -1 +fi +dev=\$(echo \$part|sed 's/[0-9]*\$//g') +devlen=\${#dev} +num=\${part:\$devlen} +if [[ "\$dev" =~ ^/dev/mmcblk[0-9]*p\$ ]];then + dev=\${dev:0:-1} +fi +if [ ! -x /usr/bin/growpart ];then + echo "Please install cloud-utils-growpart (sudo yum install cloud-utils-growpart)" + exit -2 +fi +if [ ! -x /usr/sbin/resize2fs ];then + echo "Please install e2fsprogs (sudo yum install e2fsprogs)" + exit -3 +fi +echo \$part \$dev \$num + +echo "Extending partition \$num to max size ...." +growpart \$dev \$num +echo "Resizing ext4 filesystem ..." +resize2fs \$part +echo "Done." +df -h |grep \$part +EOF + chmod +x /usr/local/bin/rootfs-expand +} + # ################################################################################ @@ -830,4 +907,7 @@ if [[ "$kiwi_profiles" == *"SBC"* ]]; then if [[ "$kiwi_profiles" == *"SBC-RaspberryPi"* ]]; then raspberrypi_sbc_steps fi + if [[ "$kiwi_profiles" == *"SBC-GenericArm"* ]]; then + genericarm_sbc_steps + fi fi diff --git a/sbc/editbootinstall_genericarm.sh b/sbc/editbootinstall_genericarm.sh new file mode 100644 index 0000000..332676a --- /dev/null +++ b/sbc/editbootinstall_genericarm.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Modify this script to handle disk changes as needed. +# Some of this may be incorrect or not needed. You will need to verify this. + +set -ex + +#diskname="$1" +#devname="$2" +#loopname="${devname%*p2}" +#loopdev=/dev/${loopname#/dev/mapper/*} + +# shellcheck disable=SC2034 +image_fs="$1" +root_partnum="$2" +root_device="/dev/mapper/loop*p${root_partnum}" +loop_name="$(basename $root_device | cut -f 1-2 -d 'p')" +disk_device="/dev/${loop_name}" + +# pi's probably don't support GPT. + +cat > gdisk.tmp <<-'EOF' + x + r + g + t + 1 + c + w + y + EOF + + dd if="$disk_device" of=mbrid.bin bs=1 skip=440 count=4 + gdisk "$disk_device" < gdisk.tmp + dd of="$disk_device" if=mbrid.bin bs=1 seek=440 count=4 + rm -f mbrid.bin + rm -rf gdisk.tmp diff --git a/sbc/pi.xml b/sbc/pi.xml index a76ab6d..250d459 100644 --- a/sbc/pi.xml +++ b/sbc/pi.xml @@ -6,6 +6,9 @@ + + + @@ -25,6 +28,25 @@ + + + + false + true + true + 500 + + + 3 + + + @@ -46,4 +68,19 @@ + + + + + + + + + + + + + + +