add first working meta-layer
This commit is contained in:
44
recipes-diya/diya-overlay/diya-overlay.bb
Normal file
44
recipes-diya/diya-overlay/diya-overlay.bb
Normal file
@ -0,0 +1,44 @@
|
||||
DESCRIPTION = "Auto configuration deployment from media"
|
||||
DEPENDS = ""
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
||||
|
||||
SRC_URI += "file://confd \
|
||||
file://expandfs.sh \
|
||||
file://80_diya \
|
||||
file://fs_resize \
|
||||
file://boot-to-recovery"
|
||||
|
||||
|
||||
inherit update-rc.d useradd
|
||||
|
||||
USERADD_PACKAGES = "${PN}"
|
||||
GROUPADD_PACKAGES = "${PN}"
|
||||
|
||||
USERADD_PARAM:${PN} = "-u 1000 -d /home/diya -r -s /bin/sh diya"
|
||||
|
||||
INITSCRIPT_NAME = "confd"
|
||||
INITSCRIPT_PARAMS = "start 30 S ."
|
||||
|
||||
do_install() {
|
||||
install -d ${D}/${sysconfdir}/init.d/
|
||||
install -d ${DEPLOY_DIR_IMAGE}
|
||||
install -m 0755 ${WORKDIR}/confd ${D}/${sysconfdir}/init.d/confd
|
||||
install -d ${D}/sbin/
|
||||
install -d ${D}/etc/default/volatiles
|
||||
# install -m 0644 ${WORKDIR}/80_diya ${D}${sysconfdir}/default/volatiles
|
||||
install -m 0755 ${WORKDIR}/expandfs.sh ${D}/sbin/expandfs.sh
|
||||
install -m 0755 ${WORKDIR}/boot-to-recovery ${D}/sbin/boot-to-recovery
|
||||
install -m 0755 ${WORKDIR}/fs_resize ${DEPLOY_DIR_IMAGE}/
|
||||
|
||||
cat << EOF >> ${DEPLOY_DIR_IMAGE}/config.txt
|
||||
recovery=false
|
||||
recovery_image=recovery-${MACHINE}.cpio.gz
|
||||
console=both
|
||||
bootlogo=false
|
||||
EOF
|
||||
|
||||
install -d ${D}/var/etc
|
||||
install -d ${D}/var/etc/upper
|
||||
install -d ${D}/var/etc/work
|
||||
}
|
3
recipes-diya/diya-overlay/files/80_diya
Normal file
3
recipes-diya/diya-overlay/files/80_diya
Normal file
@ -0,0 +1,3 @@
|
||||
# d root root 0755 /var/etc/upper none
|
||||
# d root root 0755 /var/etc/work none
|
||||
# l root root 0644 /etc/dropbear /var/etc/dropbear
|
21
recipes-diya/diya-overlay/files/boot-to-recovery
Executable file
21
recipes-diya/diya-overlay/files/boot-to-recovery
Executable file
@ -0,0 +1,21 @@
|
||||
#! /bin/sh
|
||||
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo "$0 shall be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. /etc/profile
|
||||
|
||||
if [ ! -e /boot/config.txt ]; then
|
||||
# prepare env for recovery boot
|
||||
cat << EOF > /boot/config.txt
|
||||
recovery=true
|
||||
recovery_image=recovery-${MACHINE}.cpio.gz
|
||||
EOF
|
||||
else
|
||||
sed -i 's/^.*recovery.*/recovery=true/g' /boot/config.txt || \
|
||||
echo "recovery=true" >> /boot/config.txt
|
||||
fi
|
||||
echo "Rebooting to recovery mode"
|
||||
reboot
|
44
recipes-diya/diya-overlay/files/confd
Normal file
44
recipes-diya/diya-overlay/files/confd
Normal file
@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DESC="Auto deployment configuration from media"
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Start $DESC: "
|
||||
# mount the overlay which is not auto mount by fstab
|
||||
# this make /etc editable
|
||||
mount -t overlay -o lowerdir=/etc,upperdir=/var/etc/upper,workdir=/var/etc/work overlay /etc
|
||||
# for some reason the LCD backlight is turned off
|
||||
# need to turn it on manually
|
||||
if [ -f "/boot/fs_resize" ]; then
|
||||
/sbin/expandfs.sh
|
||||
touch /boot/home_partition_should_be_formated
|
||||
rm /boot/fs_resize
|
||||
reboot
|
||||
fi
|
||||
if [ -f "/boot/home_partition_should_be_formated" ]; then
|
||||
echo "Trying to format the home partition"
|
||||
umount /dev/mmcblk1p4
|
||||
yes | mkfs.ext4 /dev/mmcblk1p4
|
||||
mount /dev/mmcblk1p4 /home
|
||||
mkdir -p /home/diya
|
||||
chown -R diya:diya /home/diya
|
||||
rm /boot/home_partition_should_be_formated
|
||||
fi
|
||||
if [ -e "/boot/wpa_supplicant.conf" ];then
|
||||
mv /boot/wpa_supplicant.conf /etc/network/
|
||||
reboot
|
||||
fi
|
||||
# display information
|
||||
# disable wifi power save
|
||||
# /usr/sbin/iw wlan0 set power_save off
|
||||
;;
|
||||
*)
|
||||
N=/etc/init.d/$NAME
|
||||
echo "Usage: $N {start}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
37
recipes-diya/diya-overlay/files/expandfs.sh
Normal file
37
recipes-diya/diya-overlay/files/expandfs.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#! /bin/sh
|
||||
|
||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||
echo "$0 shall be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
line=$(
|
||||
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk /dev/mmcblk1 | grep /dev/mmcblk1p4
|
||||
p
|
||||
q
|
||||
EOF
|
||||
)
|
||||
|
||||
echo "Partition: $line"
|
||||
#start_sector=$(echo "$line" | cut -d' ' -f14)
|
||||
start_sector=$(echo "$line" | cut -d' ' -f15)
|
||||
echo "Start sector is: $start_sector"
|
||||
|
||||
if [ -z "$start_sector" ]; then
|
||||
echo "Cannot find the start sector"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Expanding the partition"
|
||||
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk /dev/mmcblk1p4
|
||||
d # delete partition
|
||||
4 # number 4
|
||||
n # new partition
|
||||
p # primary partition
|
||||
4 # partition number 4
|
||||
$start_sector
|
||||
# default - end of disk
|
||||
p # print the in-memory partition table
|
||||
w # write the partition table
|
||||
q # and we're done
|
||||
EOF
|
1
recipes-diya/diya-overlay/files/fs_resize
Normal file
1
recipes-diya/diya-overlay/files/fs_resize
Normal file
@ -0,0 +1 @@
|
||||
resize the partition
|
Reference in New Issue
Block a user