sbc: add more pi steps
This commit is contained in:
parent
c4b528a8d3
commit
045e6a65af
27
config.sh
27
config.sh
@ -696,6 +696,25 @@ PERSISTENT_DHCLIENT="yes"
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# SBC
|
||||||
|
function common_sbc_steps() {
|
||||||
|
:> /etc/machine-id
|
||||||
|
rm -f /etc/sysconfig/network-scripts/ifcfg-link
|
||||||
|
rm -f /etc/ssh/*_key*
|
||||||
|
dnf clean all
|
||||||
|
chown -R sssd:sssd /var/lib/sss/{db,pipes,mc,pubconf,gpo_cache}
|
||||||
|
cat > /etc/sysconfig/cpupower << EOF
|
||||||
|
CPUPOWER_START_OPTS="frequency-set -g ondemand"
|
||||||
|
CPUPOWER_STOP_OPTS="frequency-set -g ondemand"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function raspberrypi_sbc_steps() {
|
||||||
|
cd /lib/firmware/brcm
|
||||||
|
xz -d -k brcmfmac43430-sdio.raspberrypi,3-model-b.txt.xz
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
@ -801,3 +820,11 @@ if [[ "$kiwi_profiles" == *"Vagrant"* ]]; then
|
|||||||
vbox_vagrant_steps
|
vbox_vagrant_steps
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# SBC Only
|
||||||
|
if [[ "$kiwi_profiles" == *"SBC"* ]]; then
|
||||||
|
common_sbc_steps
|
||||||
|
if [[ "$kiwi_profiles" == *"SBC-RaspberryPi"* ]]; then
|
||||||
|
raspberrypi_sbc_steps
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
98
sbc-build.sh
Executable file
98
sbc-build.sh
Executable file
@ -0,0 +1,98 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# helps build a quick sbc image. that way a user doesn't have to use emapandas
|
||||||
|
# nor some other method. mock is probably not necessary, but it's up to you.
|
||||||
|
# label@resf.org
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
SCRNAME="$(basename "$0")"
|
||||||
|
SCRDIR="$(dirname "${BASH_SOURCE[0]}")"
|
||||||
|
|
||||||
|
export __usage
|
||||||
|
__usage="
|
||||||
|
usage: $SCRNAME [OPTIONS]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-o, --output-dir DIR
|
||||||
|
-c, --sbc-image NAME
|
||||||
|
-p, --peridot ID # optional. will use peridot repos.
|
||||||
|
-d, --debug # optional
|
||||||
|
|
||||||
|
"
|
||||||
|
|
||||||
|
OPTS=$(getopt -a -n sbc-build -o c:,o:,p:,d,h \
|
||||||
|
-l sbc-image:,output-dir:,peridot:,debug,help -- "$@")
|
||||||
|
|
||||||
|
function is_in_path() {
|
||||||
|
builtin type -P "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "$__usage"
|
||||||
|
}
|
||||||
|
|
||||||
|
eval set -- "$OPTS"
|
||||||
|
while :; do
|
||||||
|
case "$1" in
|
||||||
|
-c | --sbc-image) SBC="$2" ; shift 2 ;;
|
||||||
|
-o | --output-dir) OUTPUTDIR="$2" ; shift 2 ;;
|
||||||
|
-p | --peridot) PERIDOTID="$2" ; shift 2 ;;
|
||||||
|
-d | --debug) DEBUG="--debug" ; shift ;;
|
||||||
|
-h | --help) usage ;;
|
||||||
|
--) shift ; break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$SBC" ] || [ -z "$OUTPUTDIR" ]; then
|
||||||
|
echo "Options are not set properly."
|
||||||
|
usage
|
||||||
|
exit 12
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "/sys/fs/selinux/enforce" ]; then
|
||||||
|
enforce_check="$(cat /sys/fs/selinux/enforce)"
|
||||||
|
if [ "$enforce_check" -eq "1" ]; then
|
||||||
|
echo "Running with selinux enforcing is not recommended."
|
||||||
|
exit 22
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
is_in_path kiwi-ng &> /dev/null
|
||||||
|
ret_val=$?
|
||||||
|
|
||||||
|
if [ "$ret_val" -ne "0" ]; then
|
||||||
|
echo "kiwi-ng not found. kiwi packages are likely not installed on this system."
|
||||||
|
exit 32
|
||||||
|
fi
|
||||||
|
|
||||||
|
function switch_repo_to_peridot() {
|
||||||
|
ID="$1"
|
||||||
|
# https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/
|
||||||
|
pushd repositories || { echo "not found"; exit 1; }
|
||||||
|
sed -i "s;ZZ_INTERNAL_BaseOS_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/BaseOS/\$basearch;g" core-peridot.xml
|
||||||
|
sed -i "s;ZZ_INTERNAL_AppStream_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/AppStream/\$basearch;g" core-peridot.xml
|
||||||
|
sed -i "s;ZZ_INTERNAL_CRB_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/CRB/\$basearch;g" core-peridot.xml
|
||||||
|
sed -i "s;ZZ_INTERNAL_extras_REPO_URL_ZZ;https://yumrepofs.build.resf.org/v1/projects/${ID}/repo/extras/\$basearch;g" core-peridot.xml
|
||||||
|
rm core.xml
|
||||||
|
ln -sf core-peridot.xml core.xml
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
/bin/rm config.xml
|
||||||
|
if [ ! -f "configs/rocky-sbc-${SBC,,}.xml" ]; then
|
||||||
|
echo "${LIVE} was not found. Is it supported?"
|
||||||
|
exit 42
|
||||||
|
fi
|
||||||
|
ln -sf "configs/rocky-sbc-${SBC,,}.xml" config.xml
|
||||||
|
|
||||||
|
if [ -n "$PERIDOTID" ]; then
|
||||||
|
switch_repo_to_peridot "${PERIDOTID}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
kiwi-ng $DEBUG --type="oem" --profile="SBC-$SBC" --color-output system build --description="$SCRDIR" --target-dir "$OUTPUTDIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
@ -1,11 +1,36 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Modify this script to handle disk changes as needed.
|
# Modify this script to handle disk changes as needed.
|
||||||
# This means the relevant parts of %post can be brought over and adapted.
|
# Some of this may be incorrect or not needed. You will need to verify this.
|
||||||
# example portions are commented out.
|
|
||||||
|
|
||||||
set -x
|
set -ex
|
||||||
|
|
||||||
#diskname="$1"
|
#diskname="$1"
|
||||||
#devname="$2"
|
#devname="$2"
|
||||||
#loopname="${devname%*p2}"
|
#loopname="${devname%*p2}"
|
||||||
#loopdev=/dev/${loopname#/dev/mapper/*}
|
#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
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<type image="oem" format="raw"
|
<type image="oem" format="raw"
|
||||||
filesystem="ext4"
|
filesystem="ext4"
|
||||||
bootpartition="true" bootpartsize="1000" bootfilesystem="ext4" efipartsize="100" firmware="efi"
|
bootpartition="true" bootpartsize="1000" bootfilesystem="ext4" efipartsize="100" firmware="efi"
|
||||||
kernelcmdline="console=ttyAMA0,115200 console=tty1 root=FILL rootfstype=ext4 elevator=deadline rootwait"
|
kernelcmdline="console=ttyAMA0,115200 console=tty1 root= rootfstype=ext4 elevator=deadline rootwait"
|
||||||
devicepersistency="by-uuid"
|
devicepersistency="by-uuid"
|
||||||
editbootinstall="editbootinstall_rpi.sh"
|
editbootinstall="editbootinstall_rpi.sh"
|
||||||
rootfs_label="RPIROOT">
|
rootfs_label="RPIROOT">
|
||||||
@ -40,6 +40,7 @@
|
|||||||
<package name="net-tools"/>
|
<package name="net-tools"/>
|
||||||
<package name="nano"/>
|
<package name="nano"/>
|
||||||
<package name="NetworkManager-wifi"/>
|
<package name="NetworkManager-wifi"/>
|
||||||
|
<package name="rng-tools"/>
|
||||||
<package name="vim"/>
|
<package name="vim"/>
|
||||||
</packages>
|
</packages>
|
||||||
<packages type="image" patternType="plusRecommended" profiles="SBC-RaspberryPi">
|
<packages type="image" patternType="plusRecommended" profiles="SBC-RaspberryPi">
|
||||||
|
Loading…
Reference in New Issue
Block a user