From d84357ee656bafcee972f1a9abe56146774c1afc Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 13 Mar 2025 20:01:03 +0100 Subject: [PATCH] Extract architecture specific parts of init.rc To allow reusing the platform independent part of init.rc without having to copy it for each platform. Also add a bunch of comments explaining the purpose of each section. --- .../core/initfs/aarch64-unknown-redox/init.rc | 25 ------------------- .../aarch64-unknown-redox/init.rc.raspi3bp | 23 ----------------- .../aarch64-unknown-redox/init_drivers.rc | 3 +++ .../init_drivers.rc.raspi3bp | 1 + recipes/core/initfs/init.rc | 15 ++++++++--- recipes/core/initfs/init_drivers.rc | 4 +++ recipes/core/initfs/recipe.toml | 9 ++++--- 7 files changed, 24 insertions(+), 56 deletions(-) delete mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc delete mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp create mode 100644 recipes/core/initfs/init_drivers.rc diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc deleted file mode 100644 index b2907d4ae..000000000 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ /dev/null @@ -1,25 +0,0 @@ -export PATH /bin -export RUST_BACKTRACE 1 -nulld -zerod -randd -inputd -vesad -unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE -#TODO: unset FRAMEBUFFER1 and beyond? -fbbootlogd -fbcond 2 -logd /scheme/debug /scheme/fbbootlog -stdio /scheme/log -ramfs logging -acpid -pcid -pcid-spawner /etc/pcid/initfs.toml -lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE -redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE -set-default-scheme file -cd / -export PATH /usr/bin -run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp deleted file mode 100644 index 0674441c6..000000000 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ /dev/null @@ -1,23 +0,0 @@ -export PATH /bin -export RUST_BACKTRACE 1 -nulld -zerod -randd -inputd -vesad -unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE -#TODO: unset FRAMEBUFFER1 and beyond? -fbbootlogd -fbcond 2 -logd /scheme/debug /scheme/fbbootlog -stdio /scheme/log -ramfs logging -lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE -bcm2835-sdhcid -redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE -set-default-scheme file -cd / -export PATH /usr/bin -run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc new file mode 100644 index 000000000..cb8ab2bef --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc @@ -0,0 +1,3 @@ +acpid +pcid +pcid-spawner /etc/pcid/initfs.toml diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp new file mode 100644 index 000000000..ae9b17a45 --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp @@ -0,0 +1 @@ +bcm2835-sdhcid diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 943f278cd..df826bb90 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,8 +1,12 @@ +# Various daemons that relibc needs to function as well as a bunch of env vars +# that should be set for every program. export PATH /bin export RUST_BACKTRACE 1 nulld zerod randd + +# Logging and graphics infrastructure inputd vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE @@ -12,14 +16,17 @@ fbcond 2 logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging -ps2d us -acpid -pcid -pcid-spawner /etc/pcid/initfs.toml + +# Drivers +run /scheme/initfs/etc/init_drivers.rc + +# Mount rootfs lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE + +# Exit initfs set-default-scheme file cd / export PATH /usr/bin diff --git a/recipes/core/initfs/init_drivers.rc b/recipes/core/initfs/init_drivers.rc new file mode 100644 index 000000000..2769ae679 --- /dev/null +++ b/recipes/core/initfs/init_drivers.rc @@ -0,0 +1,4 @@ +ps2d us +acpid +pcid +pcid-spawner /etc/pcid/initfs.toml diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 3dea3a52e..ad1f16594 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -19,10 +19,11 @@ cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" # TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD} ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +cp "${COOKBOOK_RECIPE}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD} ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" fi # Move /usr folders to / and remove links