mirror of
https://github.com/lxsang/meta-rpi-diya.git
synced 2025-05-03 04:46:44 +02:00
Compare commits
No commits in common. "13df5da839ea1496d5e47bc125ec71cbfe80b7d2" and "c52ffcea5c7590a274417c0f35975f4a991bd7fb" have entirely different histories.
13df5da839
...
c52ffcea5c
@ -2,7 +2,7 @@
|
|||||||
DESCRIPTION = "Recovery initramfs image."
|
DESCRIPTION = "Recovery initramfs image."
|
||||||
|
|
||||||
|
|
||||||
PACKAGE_INSTALL = "recovery-boot busybox ${VIRTUAL-RUNTIME_base-utils} udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
|
PACKAGE_INSTALL = "initramfs-boot busybox ${VIRTUAL-RUNTIME_base-utils} udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
|
||||||
|
|
||||||
# Do not pollute the initrd image with rootfs features
|
# Do not pollute the initrd image with rootfs features
|
||||||
IMAGE_FEATURES = ""
|
IMAGE_FEATURES = ""
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2011 O.S. Systems Software LTDA.
|
|
||||||
# Licensed on MIT
|
|
||||||
|
|
||||||
# Adds support to dynamic debugging of initramfs using bootparam in
|
|
||||||
# following format:
|
|
||||||
# shell : starts a shell before and after each module
|
|
||||||
# shell=before:<module> : starts a shell before <module> is loaded and run
|
|
||||||
# shell=after:<module> : starts a shell after <module> is loaded and run
|
|
||||||
#
|
|
||||||
# shell-debug : run set -x as soon as possible
|
|
||||||
# shell-debug=before:<module> : run set -x before <module> is loaded and run
|
|
||||||
# shell-debug=after:<module> : run set -x after <module> is loaded and run
|
|
||||||
|
|
||||||
DEBUG_SHELL="false"
|
|
||||||
|
|
||||||
debug_hook_handler() {
|
|
||||||
status=$1
|
|
||||||
module=$2
|
|
||||||
|
|
||||||
if [ -n "$bootparam_shell" ] && [ "$bootparam_shell" != "true" ]; then
|
|
||||||
shell_wanted_status=`expr $bootparam_shell : '\(.*\):.*'`
|
|
||||||
shell_wanted_module=`expr $bootparam_shell : '.*:\(.*\)'`
|
|
||||||
|
|
||||||
if [ "$shell_wanted_status" = "before" ]; then
|
|
||||||
shell_wanted_status=pre
|
|
||||||
else
|
|
||||||
shell_wanted_status=post
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$bootparam_shell" = "true" ] ||
|
|
||||||
( [ "$status" = "$shell_wanted_status" ] &&
|
|
||||||
[ "$module" = "$shell_wanted_module" ] ); then
|
|
||||||
if [ "$status" = "pre" ]; then
|
|
||||||
status_msg="before"
|
|
||||||
else
|
|
||||||
status_msg="after"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "Starting shell $status_msg $module..."
|
|
||||||
sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$bootparam_shell_debug" ] && [ "$bootparam_shell_debug" != "true" ]; then
|
|
||||||
shell_debug_wanted_status=`expr $bootparam_shell_debug : '\(.*\):.*'`
|
|
||||||
shell_debug_wanted_module=`expr $bootparam_shell_debug : '.*:\(.*\)'`
|
|
||||||
|
|
||||||
if [ "$shell_debug_wanted_status" = "before" ]; then
|
|
||||||
shell_debug_wanted_status=pre
|
|
||||||
else
|
|
||||||
shell_debug_wanted_status=post
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$bootparam_shell_debug" = "true" ] ||
|
|
||||||
( [ "$status" = "$shell_debug_wanted_status" ] &&
|
|
||||||
[ "$module" = "$shell_debug_wanted_module" ] ); then
|
|
||||||
if [ "$DEBUG_SHELL" = "true" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$status" = "pre" ]; then
|
|
||||||
status_msg="before"
|
|
||||||
else
|
|
||||||
status_msg="after"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "Starting shell debugging $status_msg $module..."
|
|
||||||
DEBUG_SHELL="true"
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
debug_enabled() {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
debug_run() {
|
|
||||||
add_module_pre_hook "debug_hook_handler"
|
|
||||||
add_module_post_hook "debug_hook_handler"
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2011 O.S. Systems Software LTDA.
|
|
||||||
# Licensed on MIT
|
|
||||||
|
|
||||||
e2fs_enabled() {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
e2fs_run() {
|
|
||||||
filesystems="ext4 ext3 ext2"
|
|
||||||
|
|
||||||
# load modules
|
|
||||||
for fs in $filesystems; do
|
|
||||||
load_kernel_module $fs
|
|
||||||
done
|
|
||||||
|
|
||||||
for fs in $filesystems; do
|
|
||||||
eval "fs_options=\$bootparam_${fs}"
|
|
||||||
if [ -n "$fs_options" ]; then
|
|
||||||
dev=`expr "$fs_options" : '\([^:]*\).*'`
|
|
||||||
path=`expr "$fs_options" : '[^:]*:\([^:]*\).*'`
|
|
||||||
|
|
||||||
info "Mounting $dev as $fs on $path as $fs..."
|
|
||||||
mkdir -p $path
|
|
||||||
mount -t $fs $dev $path
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2017 O.S. Systems Software LTDA.
|
|
||||||
# Licensed on MIT
|
|
||||||
|
|
||||||
EXEC_DIR=/exec.d # place to look for modules
|
|
||||||
|
|
||||||
exec_enabled() {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
exec_run() {
|
|
||||||
if [ ! -d $EXEC_DIR ]; then
|
|
||||||
msg "No contents to exec in $EXEC_DIR. Starting shell ..."
|
|
||||||
sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load and run modules
|
|
||||||
for m in $EXEC_DIR/*; do
|
|
||||||
# Skip backup files
|
|
||||||
if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
debug "Starting $m"
|
|
||||||
|
|
||||||
# process module
|
|
||||||
./$m
|
|
||||||
done
|
|
||||||
}
|
|
@ -1,160 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2011 O.S. Systems Software LTDA.
|
|
||||||
# Licensed on MIT
|
|
||||||
#
|
|
||||||
# Provides the API to be used by the initramfs modules
|
|
||||||
#
|
|
||||||
# Modules need to provide the following functions:
|
|
||||||
#
|
|
||||||
# <module>_enabled : check if the module ought to run (return 1 to skip)
|
|
||||||
# <module>_run : do what is need
|
|
||||||
#
|
|
||||||
# Boot parameters are available on environment in the as:
|
|
||||||
#
|
|
||||||
# 'foo=value' as 'bootparam_foo=value'
|
|
||||||
# 'foo' as 'bootparam_foo=true'
|
|
||||||
# 'foo.bar[=value] as 'foo_bar=[value|true]'
|
|
||||||
|
|
||||||
# Register a function to be called before running a module
|
|
||||||
# The hook is called as:
|
|
||||||
# <function> pre <module>
|
|
||||||
add_module_pre_hook() {
|
|
||||||
MODULE_PRE_HOOKS="$MODULE_PRE_HOOKS $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Register a function to be called after running a module
|
|
||||||
# The hook is called as:
|
|
||||||
# <function> post <module>
|
|
||||||
add_module_post_hook() {
|
|
||||||
MODULE_POST_HOOKS="$MODULE_POST_HOOKS $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Load kernel module
|
|
||||||
load_kernel_module() {
|
|
||||||
if modprobe $1 >/dev/null 2>&1; then
|
|
||||||
info "Loaded module $1"
|
|
||||||
else
|
|
||||||
debug "Failed to load module $1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prints information
|
|
||||||
msg() {
|
|
||||||
echo "$@" >/dev/console
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prints information if verbose bootparam is used
|
|
||||||
info() {
|
|
||||||
[ -n "$bootparam_verbose" ] && echo "$@" >/dev/console
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prints information if debug bootparam is used
|
|
||||||
debug() {
|
|
||||||
[ -n "$bootparam_debug" ] && echo "DEBUG: $@" >/dev/console
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prints a message and start a endless loop
|
|
||||||
fatal() {
|
|
||||||
echo $1 >/dev/console
|
|
||||||
echo >/dev/console
|
|
||||||
|
|
||||||
if [ -n "$bootparam_init_fatal_sh" ]; then
|
|
||||||
sh
|
|
||||||
else
|
|
||||||
while [ "true" ]; do
|
|
||||||
sleep 3600
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Variables shared amoung modules
|
|
||||||
MODULE_PRE_HOOKS="" # functions to call before running each module
|
|
||||||
MODULE_POST_HOOKS="" # functions to call after running each module
|
|
||||||
MODULES_DIR=/init.d # place to look for modules
|
|
||||||
EFI_DIR=/sys/firmware/efi # place to store device firmware information
|
|
||||||
|
|
||||||
# make mount stop complaining about missing /etc/fstab
|
|
||||||
touch /etc/fstab
|
|
||||||
|
|
||||||
# initialize /proc, /sys, /run/lock and /var/lock
|
|
||||||
mkdir -p /proc /sys /run/lock /var/lock
|
|
||||||
mount -t proc proc /proc
|
|
||||||
mount -t sysfs sysfs /sys
|
|
||||||
|
|
||||||
if [ -d $EFI_DIR ];then
|
|
||||||
mount -t efivarfs none /sys/firmware/efi/efivars
|
|
||||||
fi
|
|
||||||
|
|
||||||
# populate bootparam environment
|
|
||||||
for p in `cat /proc/cmdline`; do
|
|
||||||
if [ -n "$quoted" ]; then
|
|
||||||
value="$value $p"
|
|
||||||
if [ "`echo $p | sed -e 's/\"$//'`" != "$p" ]; then
|
|
||||||
eval "bootparam_${quoted}=${value}"
|
|
||||||
unset quoted
|
|
||||||
fi
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
opt=`echo $p | cut -d'=' -f1`
|
|
||||||
opt=`echo $opt | sed -e 'y/.-/__/'`
|
|
||||||
if [ "`echo $p | cut -d'=' -f1`" = "$p" ]; then
|
|
||||||
eval "bootparam_${opt}=true"
|
|
||||||
else
|
|
||||||
value="`echo $p | cut -d'=' -f2-`"
|
|
||||||
if [ "`echo $value | sed -e 's/^\"//'`" != "$value" ]; then
|
|
||||||
quoted=${opt}
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
eval "bootparam_${opt}=\"${value}\""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# use /dev with devtmpfs
|
|
||||||
if grep -q devtmpfs /proc/filesystems; then
|
|
||||||
mkdir -p /dev
|
|
||||||
mount -t devtmpfs devtmpfs /dev
|
|
||||||
else
|
|
||||||
if [ ! -d /dev ]; then
|
|
||||||
fatal "ERROR: /dev doesn't exist and kernel doesn't has devtmpfs enabled."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load and run modules
|
|
||||||
for m in $MODULES_DIR/*; do
|
|
||||||
# Skip backup files
|
|
||||||
if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
module=`basename $m | cut -d'-' -f 2`
|
|
||||||
debug "Loading module $module"
|
|
||||||
|
|
||||||
# pre hooks
|
|
||||||
for h in $MODULE_PRE_HOOKS; do
|
|
||||||
debug "Calling module hook (pre): $h"
|
|
||||||
eval "$h pre $module"
|
|
||||||
debug "Finished module hook (pre): $h"
|
|
||||||
done
|
|
||||||
|
|
||||||
# process module
|
|
||||||
. $m
|
|
||||||
|
|
||||||
if ! eval "${module}_enabled"; then
|
|
||||||
debug "Skipping module $module"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
debug "Running ${module}_run"
|
|
||||||
eval "${module}_run"
|
|
||||||
|
|
||||||
# post hooks
|
|
||||||
for h in $MODULE_POST_HOOKS; do
|
|
||||||
debug "Calling module hook (post): $h"
|
|
||||||
eval "$h post $module"
|
|
||||||
debug "Finished module hook (post): $h"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# Catch all
|
|
||||||
fatal "ERROR: Initramfs failed to initialize the system."
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
lvm_enabled() {
|
|
||||||
if ! lvscan |grep -i -w "inactive" &>/dev/null;then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
lvm_run() {
|
|
||||||
lvm pvscan --cache --activate ay
|
|
||||||
udevadm trigger --action=add
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2011, 2012 O.S. Systems Software LTDA.
|
|
||||||
# Licensed on MIT
|
|
||||||
|
|
||||||
udev_shutdown_hook_handler() {
|
|
||||||
status=$1
|
|
||||||
module=$2
|
|
||||||
if [ "$status" = "pre" ] && [ "$module" = "finish" ]; then
|
|
||||||
udevadm settle
|
|
||||||
killall `basename $_UDEV_DAEMON` 2>/dev/null
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
udev_daemon() {
|
|
||||||
OPTIONS="/sbin/udev/udevd /sbin/udevd /lib/udev/udevd /lib/systemd/systemd-udevd"
|
|
||||||
|
|
||||||
for o in $OPTIONS; do
|
|
||||||
if [ -x "$o" ]; then
|
|
||||||
echo $o
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_UDEV_DAEMON=`udev_daemon`
|
|
||||||
|
|
||||||
udev_enabled() {
|
|
||||||
if [ -z "$_UDEV_DAEMON" ]; then
|
|
||||||
msg "WARNING: Cannot find the udev daemon; daemon will not be started in initramfs."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
udev_run() {
|
|
||||||
add_module_pre_hook "udev_shutdown_hook_handler"
|
|
||||||
|
|
||||||
mkdir -p /run
|
|
||||||
mkdir -p /var/run
|
|
||||||
|
|
||||||
# Workaround if console=null, systemd-udevd needs valid stdin, stdout and stderr to work
|
|
||||||
sh -c "exec 4< /dev/console" || { exec 0> /dev/null; exec 1> /dev/null; exec 2> /dev/null; }
|
|
||||||
|
|
||||||
$_UDEV_DAEMON --daemon
|
|
||||||
udevadm trigger --action=add
|
|
||||||
udevadm settle
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
SUMMARY = "Modular initramfs system"
|
|
||||||
LICENSE = "MIT"
|
|
||||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
|
||||||
RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
|
|
||||||
RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
|
|
||||||
|
|
||||||
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
|
|
||||||
|
|
||||||
PR = "r4"
|
|
||||||
|
|
||||||
inherit allarch
|
|
||||||
|
|
||||||
SRC_URI = "file://init \
|
|
||||||
file://exec \
|
|
||||||
file://udev \
|
|
||||||
file://e2fs \
|
|
||||||
file://debug \
|
|
||||||
file://lvm \
|
|
||||||
"
|
|
||||||
|
|
||||||
S = "${WORKDIR}"
|
|
||||||
|
|
||||||
do_install() {
|
|
||||||
install -d ${D}/init.d
|
|
||||||
|
|
||||||
# base
|
|
||||||
install -m 0755 ${WORKDIR}/init ${D}/init
|
|
||||||
|
|
||||||
# exec
|
|
||||||
install -m 0755 ${WORKDIR}/exec ${D}/init.d/89-exec
|
|
||||||
|
|
||||||
# udev
|
|
||||||
install -m 0755 ${WORKDIR}/udev ${D}/init.d/01-udev
|
|
||||||
|
|
||||||
# e2fs
|
|
||||||
install -m 0755 ${WORKDIR}/e2fs ${D}/init.d/10-e2fs
|
|
||||||
|
|
||||||
# debug
|
|
||||||
install -m 0755 ${WORKDIR}/debug ${D}/init.d/00-debug
|
|
||||||
|
|
||||||
# lvm
|
|
||||||
install -m 0755 ${WORKDIR}/lvm ${D}/init.d/09-lvm
|
|
||||||
|
|
||||||
|
|
||||||
# Create device nodes expected by some kernels in initramfs
|
|
||||||
# before even executing /init.
|
|
||||||
install -d ${D}/dev
|
|
||||||
mknod -m 622 ${D}/dev/console c 5 1
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
FILES:${PN} = "/init /init.d /dev"
|
|
Loading…
x
Reference in New Issue
Block a user