From cb9441ee2a7420eda872fc6738650cfbcc54d603 Mon Sep 17 00:00:00 2001 From: Chen Wang Date: Fri, 5 Dec 2025 14:08:12 +0800 Subject: [PATCH] Step2: enhanced with sysvinit - Add libxcrypt. - Add sysvinit. - Update target-finalize to support sysvinit. Signed-off-by: Chen Wang --- Makefile | 5 +++ build.sh | 1 + package/libxcrypt/make.sh | 43 ++++++++++++++++++ ...efile-disable-stack-protector-strong.patch | 33 ++++++++++++++ package/sysvinit/inittab | 32 +++++++++++++ package/sysvinit/make.sh | 45 +++++++++++++++++++ package/target-finalize/make.sh | 2 +- source.sh | 2 + 8 files changed, 162 insertions(+), 1 deletion(-) create mode 100755 package/libxcrypt/make.sh create mode 100644 package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch create mode 100644 package/sysvinit/inittab create mode 100755 package/sysvinit/make.sh diff --git a/Makefile b/Makefile index a110640..47af9e2 100644 --- a/Makefile +++ b/Makefile @@ -69,5 +69,10 @@ rebuild-target-image: @./package/rootfs-ext2/make.sh || exit 1 @echo "<---- $@ build complete." +.PHONY: sysvinit +sysvinit: + @./package/libxcrypt/make.sh || exit 1 + @./package/sysvinit/make.sh || exit 1 + clean: rm -rf output/ diff --git a/build.sh b/build.sh index e906b19..2f4d8e9 100755 --- a/build.sh +++ b/build.sh @@ -8,5 +8,6 @@ make toolchain || exit 1 make opensbi || exit 1 make linux || exit 1 make busybox || exit 1 +make sysvinit || exit 1 make before-target-image || exit 1 make rebuild-target-image || exit 1 \ No newline at end of file diff --git a/package/libxcrypt/make.sh b/package/libxcrypt/make.sh new file mode 100755 index 0000000..be90a6d --- /dev/null +++ b/package/libxcrypt/make.sh @@ -0,0 +1,43 @@ +#!/usr/bin/bash +source $(dirname "$0")/../common.sh + +PKGNAME=libxcrypt +PKGVERSION=4.4.38 +PKGSOURCE_DIR=libxcrypt +PKGSOURCE=libxcrypt-4.4.38.tar.xz +PKGURL=https://github.com/besser82/libxcrypt/releases/download/v4.4.38/libxcrypt-4.4.38.tar.xz + +PKGBUILDNAME=${PKGNAME} +PKGBUILD_DIR=${BUILD_DIR}/${PKGBUILDNAME}-${PKGVERSION} + +echo "----> Building ${PKGBUILDNAME} ..." + +stamp_downloaded + +step_start extract +mkdir -p ${PKGBUILD_DIR} +xzcat ${DL_DIR}/${PKGSOURCE_DIR}/${PKGSOURCE} | tar --strip-components=1 -C ${PKGBUILD_DIR} -xf - +chmod -R +rw ${PKGBUILD_DIR} +step_end extract + +stamp_patched autotools + +step_start configure +(cd ${PKGBUILD_DIR} && rm -rf config.cache && eval "${TARGET_CONFIGURE_OPTS} CXX=no ac_cv_lbl_unaligned_fail=yes ac_cv_func_mmap_fixed_mapped=yes ac_cv_func_memcmp_working=yes ac_cv_have_decl_malloc=yes gl_cv_func_malloc_0_nonnull=yes ac_cv_func_malloc_0_nonnull=yes ac_cv_func_calloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes lt_cv_sys_lib_search_path_spec=\"\" ac_cv_c_bigendian=no CONFIG_SITE=/dev/null ./configure --target=${GNU_TARGET_NAME} --host=${GNU_TARGET_NAME} --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix=\"\" --disable-gtk-doc --disable-gtk-doc-html --disable-doc --disable-docs --disable-documentation --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 --disable-nls --disable-static --enable-shared --disable-werror --disable-obsolete_api") +step_end configure + +step_start build +eval "${TARGET_MAKE_ENV} /usr/bin/make -j${MAXNUM_CPUS} -C ${PKGBUILD_DIR}" +step_end build + +step_start install-staging +eval "${TARGET_MAKE_ENV} /usr/bin/make -j${MAXNUM_CPUS} DESTDIR=${STAGING_DIR} install -C ${PKGBUILD_DIR}" +step_end install-staging + +step_start install-target +eval "${TARGET_MAKE_ENV} /usr/bin/make -j${MAXNUM_CPUS} DESTDIR=${TARGET_DIR} install -C ${PKGBUILD_DIR}" +step_end install-target + +stamp_installed + +echo "<---- ${PKGBUILDNAME} build complete." diff --git a/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch b/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch new file mode 100644 index 0000000..066bdb3 --- /dev/null +++ b/package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch @@ -0,0 +1,33 @@ +From 0759f3f9bb2850df455599e7c82eda4ec804e3b6 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 10 Mar 2021 22:57:50 +0100 +Subject: [PATCH] Makefile: disable stack-protector-strong + +Fixes: + + .../aarch64-buildroot-linux-uclibc/bin/ld: runlevel.o: in function `main': + runlevel.c:(.text.startup+0x4): undefined reference to `__stack_chk_guard' + .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp_nonshared + .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp + +Signed-off-by: Peter Seiderer +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 1b368dc..1985929 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -10,7 +10,7 @@ + + CPPFLAGS = + CFLAGS ?= -O2 +-override CFLAGS += -ansi -fomit-frame-pointer -fstack-protector-strong -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" ++override CFLAGS += -ansi -fomit-frame-pointer -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" + override CFLAGS += $(shell getconf LFS_CFLAGS) + STATIC = + MANDB := s@^\('\\\\\"\)[^\*-]*-\*- coding: [^[:blank:]]\+ -\*-@\1@ +-- +2.30.1 + diff --git a/package/sysvinit/inittab b/package/sysvinit/inittab new file mode 100644 index 0000000..afc28e6 --- /dev/null +++ b/package/sysvinit/inittab @@ -0,0 +1,32 @@ +# /etc/inittab +# +# This inittab is a basic inittab sample for sysvinit, which mimics +# Buildroot's default inittab for BusyBox. +id:3:initdefault: + +si0::sysinit:/bin/mount -t proc proc /proc +si1::sysinit:/bin/mount -o remount,rw / +si2::sysinit:/bin/mkdir -p /dev/pts /dev/shm +si3::sysinit:/bin/mount -a +si4::sysinit:/bin/mkdir -p /run/lock/subsys +si5::sysinit:/sbin/swapon -a +si6::sysinit:/bin/ln -sf /proc/self/fd /dev/fd 2>/dev/null +si7::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin 2>/dev/null +si8::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 2>/dev/null +si9::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr 2>/dev/null +si10::sysinit:/bin/hostname -F /etc/hostname +rcS:12345:wait:/etc/init.d/rcS + +# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#ca::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +shd0:06:wait:/etc/init.d/rcK +shd1:06:wait:/sbin/swapoff -a +shd2:06:wait:/bin/umount -a -r + +# The usual halt or reboot actions +hlt0:0:wait:/sbin/halt -dhp +reb0:6:wait:/sbin/reboot diff --git a/package/sysvinit/make.sh b/package/sysvinit/make.sh new file mode 100755 index 0000000..e8f07f8 --- /dev/null +++ b/package/sysvinit/make.sh @@ -0,0 +1,45 @@ +#!/usr/bin/bash +source $(dirname "$0")/../common.sh + +PKGNAME=sysvinit +PKGVERSION=3.14 +PKGSOURCE_DIR=sysvinit +PKGSOURCE=sysvinit-3.14.tar.xz +PKGURL=https://github.com/slicer69/sysvinit/releases/download/3.14/sysvinit-3.14.tar.xz + +PKGBUILDNAME=${PKGNAME} +PKGBUILD_DIR=${BUILD_DIR}/${PKGBUILDNAME}-${PKGVERSION} + +echo "----> Building ${PKGBUILDNAME} ..." + +stamp_downloaded + +step_start extract +mkdir -p ${PKGBUILD_DIR} +xzcat ${DL_DIR}/${PKGSOURCE_DIR}/${PKGSOURCE} | tar --strip-components=1 -C ${PKGBUILD_DIR} -xf - +chmod -R +rw ${PKGBUILD_DIR} +step_end extract + +step_start patch +TAR="tar" PATH=${HOST_DIR}/bin:$PATH ${PROJECT_DIR}/support/scripts/apply-patches.sh ${PKGBUILD_DIR} ${PROJECT_DIR}/package/${PKGNAME} \*.patch +step_end patch + +stamp_configured + +step_start build +eval "${TARGET_CONFIGURE_OPTS} CXX=no /usr/bin/make -j${MAXNUM_CPUS} SYSROOT=${STAGING_DIR} VERSION=3.14 -C ${PKGBUILD_DIR}/src" +step_end build + +step_start install-target +for x in halt init shutdown killall5; do + /usr/bin/install -D -m 0755 ${PKGBUILD_DIR}/src/$x ${TARGET_DIR}/sbin/$x || exit 1; +done +/usr/bin/install -D -m 0644 ${PROJECT_DIR}/package/sysvinit/inittab ${TARGET_DIR}/etc/inittab +ln -sf /sbin/halt ${TARGET_DIR}/sbin/reboot +ln -sf /sbin/halt ${TARGET_DIR}/sbin/poweroff +ln -sf killall5 ${TARGET_DIR}/sbin/pidof +step_end install-target + +stamp_installed + +echo "<---- ${PKGBUILDNAME} build complete." diff --git a/package/target-finalize/make.sh b/package/target-finalize/make.sh index f216e80..dbf40dc 100755 --- a/package/target-finalize/make.sh +++ b/package/target-finalize/make.sh @@ -21,7 +21,7 @@ echo ">>> Installing urandom-scripts" /usr/bin/install -D -m 0755 ${PROJECT_DIR}/package/${PKGNAME}/urandom-scripts/S01seedrng ${TARGET_DIR}/etc/init.d/S01seedrng echo ">>> Finalizing target directory" -/usr/bin/sed -i -e '/# GENERIC_SERIAL$/s~^.*#~console::respawn:/sbin/getty -L console 0 vt100 #~' ${TARGET_DIR}/etc/inittab +/usr/bin/sed -i -e '/# GENERIC_SERIAL$/s~^.*#~sole::respawn:/sbin/getty -L console 0 vt100 #~' ${TARGET_DIR}/etc/inittab /usr/bin/sed -i -e '/^#.*-o remount,rw \/$/s~^#\+~~' ${TARGET_DIR}/etc/inittab if grep -q CONFIG_ASH=y ${BUILD_DIR}/busybox-1.37.0/.config; then grep -qsE '^/bin/ash$' ${TARGET_DIR}/etc/shells || echo "/bin/ash" >> ${TARGET_DIR}/etc/shells; fi if grep -q CONFIG_HUSH=y ${BUILD_DIR}/busybox-1.37.0/.config; then grep -qsE '^/bin/hush$' ${TARGET_DIR}/etc/shells || echo "/bin/hush" >> ${TARGET_DIR}/etc/shells; fi diff --git a/source.sh b/source.sh index e1b73ad..860e6c6 100755 --- a/source.sh +++ b/source.sh @@ -28,3 +28,5 @@ export ONLY_DOWNLOAD=y ./package/fakeroot/make-host.sh || exit 1 ./package/flex/make-host.sh || exit 1 ./package/gettext-tiny/make-host.sh || exit 1 +./package/libxcrypt/make.sh || exit 1 +./package/sysvinit/make.sh || exit 1