8237bc45e8
P2-2: Login rate limiting (userutils/login.rs): - Tracks consecutive failures, resets on success - 3+ failures: exponential delay up to 30 seconds - Applies to both password and blank-password login paths P2-3: Network stack in initfs (base-initfs + service files): - Added e1000d, rtl8168d to base-initfs BINS - 60_smolnetd.service: network stack in initfs - 61_dhcpd.service: DHCP client in initfs - Network available before switch_root Part of COMPREHENSIVE-FIX-AND-IMPROVEMENT-PLAN Phases P2.
125 lines
3.2 KiB
TOML
125 lines
3.2 KiB
TOML
[source]
|
|
same_as = "../base"
|
|
|
|
[build]
|
|
template = "custom"
|
|
dependencies = [
|
|
"redoxfs",
|
|
"ion",
|
|
]
|
|
script = """
|
|
BINS=(
|
|
init
|
|
logd
|
|
ramfs
|
|
randd
|
|
zerod
|
|
|
|
acpid
|
|
fbbootlogd
|
|
fbcond
|
|
hwd
|
|
inputd
|
|
lived
|
|
nvmed
|
|
pcid
|
|
pcid-spawner
|
|
rtcd
|
|
vesad
|
|
)
|
|
|
|
virt_bins()
|
|
{
|
|
BINS+=(virtio-blkd virtio-gpud)
|
|
}
|
|
|
|
x86_common_bins()
|
|
{
|
|
BINS+=(ahcid ided ps2d usbhidd usbscsid usbhubd xhcid vesad e1000d rtl8168d)
|
|
virt_bins
|
|
}
|
|
|
|
aarch64_bins()
|
|
{
|
|
case "${BOARD}" in
|
|
raspi3b*)
|
|
BINS+=(bcm2835-sdhcid)
|
|
;;
|
|
*)
|
|
#qemu-virt
|
|
virt_bins
|
|
;;
|
|
esac
|
|
}
|
|
|
|
case "${TARGET}" in
|
|
i586-unknown-redox | i686-unknown-redox)
|
|
x86_common_bins
|
|
;;
|
|
x86_64-unknown-redox)
|
|
x86_common_bins
|
|
;;
|
|
aarch64-unknown-redox)
|
|
aarch64_bins
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
rm -rf "${COOKBOOK_BUILD}/initfs"
|
|
mkdir -p "${COOKBOOK_BUILD}/initfs/lib/init.d"
|
|
|
|
cp "${COOKBOOK_SOURCE}/init.initfs.d"/* "${COOKBOOK_BUILD}/initfs/lib/init.d/"
|
|
|
|
mkdir -pv "${COOKBOOK_BUILD}/initfs/lib/pcid.d"
|
|
cp -v "${COOKBOOK_SOURCE}/drivers/initfs.toml" "${COOKBOOK_BUILD}/initfs/lib/pcid.d/initfs.toml"
|
|
|
|
export CARGO_PROFILE_RELEASE_OPT_LEVEL=s
|
|
export CARGO_PROFILE_RELEASE_PANIC=abort
|
|
"${COOKBOOK_CARGO}" build ${build_flags} \
|
|
--manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
|
|
$(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done)
|
|
|
|
mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" "${COOKBOOK_BUILD}/initfs/lib/drivers"
|
|
for bin in "${BINS[@]}"
|
|
do
|
|
case "${bin}" in
|
|
init | logd | ramfs | randd | zerod | pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd)
|
|
cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/bin"
|
|
;;
|
|
*)
|
|
cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/lib/drivers"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
cp "${COOKBOOK_SYSROOT}/usr/bin/redoxfs" "${COOKBOOK_BUILD}/initfs/bin"
|
|
cp "${COOKBOOK_SYSROOT}/usr/bin/ion" "${COOKBOOK_BUILD}/initfs/bin"
|
|
|
|
ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)"
|
|
RUSTFLAGS="$RUSTFLAGS -Ctarget-feature=+crt-static -Clink-arg=-nostartfiles -Clink-arg=-nostdlib" cargo \
|
|
-Zbuild-std=core,alloc,compiler_builtins \
|
|
-Zbuild-std-features=compiler-builtins-mem build \
|
|
--target "${TARGET}" \
|
|
--manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \
|
|
--release \
|
|
--target-dir "${COOKBOOK_BUILD}"
|
|
|
|
if [ -f "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" ]; then
|
|
"${GNU_TARGET}-ld" \
|
|
-o "${COOKBOOK_BUILD}/bootstrap" \
|
|
-nostdlib \
|
|
--gc-sections \
|
|
-T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \
|
|
-z max-page-size=4096 \
|
|
"${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a"
|
|
else
|
|
cp -v "${COOKBOOK_BUILD}/${TARGET}/release/bootstrap" "${COOKBOOK_BUILD}/bootstrap"
|
|
fi
|
|
|
|
env -u CARGO -u RUSTFLAGS cargo run --manifest-path "${COOKBOOK_SOURCE}/initfs/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_BUILD}/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img"
|
|
|
|
mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot"
|
|
cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/usr/lib/boot/initfs"
|
|
"""
|