[Sigmastar] Add simple initramfs that boots rootfs from sdcard (#671)

Co-authored-by: Viktor <viktorxda@users.noreply.github.com>
pull/677/head
viktorxda 2023-03-16 13:37:20 +01:00 committed by GitHub
parent 185f9016a2
commit 91bbc3fb54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1310 additions and 0 deletions

View File

@ -12,4 +12,9 @@ config BR2_LINUX_KERNEL_EXT_SIGMASTAR_PATCHER_LIST
help
Space-separated list of patches to be applied
config BR2_LINUX_KERNEL_EXT_SIGMASTAR_INITRAMFS
bool "SigmaStar initramfs"
help
Simple initramfs that boots the rootfs from sdcard
endif # BR2_LINUX_KERNEL_EXT_SIGMASTAR_PATCHER

View File

@ -0,0 +1,42 @@
################################################################################
#
# linux-ext-sigmastar_initramfs
#
################################################################################
LINUX_EXTENSIONS += sigmastar-initramfs
SIGMASTAR_INITRAMFS_BUSYBOX_VERSION = 1.36.0
SIGMASTAR_INITRAMFS_BUSYBOX_SOURCE = busybox-$(SIGMASTAR_INITRAMFS_BUSYBOX_VERSION).tar.bz2
SIGMASTAR_INITRAMFS_BUSYBOX_SITE = https://www.busybox.net/downloads
SIGMASTAR_INITRAMFS_DOSFSTOOLS_VERSION = 4.2
SIGMASTAR_INITRAMFS_DOSFSTOOLS_SOURCE = dosfstools-$(SIGMASTAR_INITRAMFS_DOSFSTOOLS_VERSION).tar.gz
SIGMASTAR_INITRAMFS_DOSFSTOOLS_SITE = https://github.com/dosfstools/dosfstools/releases/download/v$(SIGMASTAR_INITRAMFS_DOSFSTOOLS_VERSION)
SIGMASTAR_INITRAMFS_BUSYBOX_PATH = $(HOST_DIR)/source/busybox-$(SIGMASTAR_INITRAMFS_BUSYBOX_VERSION)
SIGMASTAR_INITRAMFS_DOSFSTOOLS_PATH = $(HOST_DIR)/source/dosfstools-$(SIGMASTAR_INITRAMFS_DOSFSTOOLS_VERSION)
SIGMASTAR_INITRAMFS_TOOLCHAIN = $(PER_PACKAGE_DIR)/toolchain/host/bin/$(GNU_TARGET_NAME)-gcc
define SIGMASTAR_INITRAMFS_PREPARE_KERNEL
mkdir -p $(LINUX_DIR)/initramfs
cp -f $(SIGMASTAR_INITRAMFS_PKGDIR)/files/* $(LINUX_DIR)/initramfs
wget $(SIGMASTAR_INITRAMFS_BUSYBOX_SITE)/$(SIGMASTAR_INITRAMFS_BUSYBOX_SOURCE) \
-P $(HOST_DIR)/source -c
tar -xf $(HOST_DIR)/source/$(SIGMASTAR_INITRAMFS_BUSYBOX_SOURCE) -C $(HOST_DIR)/source
wget $(SIGMASTAR_INITRAMFS_DOSFSTOOLS_SITE)/$(SIGMASTAR_INITRAMFS_DOSFSTOOLS_SOURCE) \
-P $(HOST_DIR)/source -c
tar -xf $(HOST_DIR)/source/$(SIGMASTAR_INITRAMFS_DOSFSTOOLS_SOURCE) -C $(HOST_DIR)/source
cp -f $(SIGMASTAR_INITRAMFS_PKGDIR)/files/initramfs_defconfig \
$(SIGMASTAR_INITRAMFS_BUSYBOX_PATH)/.config
$(MAKE) CC=$(SIGMASTAR_INITRAMFS_TOOLCHAIN) -C $(SIGMASTAR_INITRAMFS_BUSYBOX_PATH)
cp -f $(SIGMASTAR_INITRAMFS_BUSYBOX_PATH)/busybox $(LINUX_DIR)/initramfs
cd $(SIGMASTAR_INITRAMFS_DOSFSTOOLS_PATH) && ./autogen.sh && ./configure
$(MAKE) CC=$(SIGMASTAR_INITRAMFS_TOOLCHAIN) CFLAGS="-static -s" \
-C $(SIGMASTAR_INITRAMFS_DOSFSTOOLS_PATH)
cp -f $(SIGMASTAR_INITRAMFS_DOSFSTOOLS_PATH)/src/fsck.fat $(LINUX_DIR)/initramfs
endef

View File

@ -0,0 +1 @@
../../general/package/sigmastar-initramfs

View File

@ -0,0 +1,2 @@
config BR2_PACKAGE_SIGMASTAR_INITRAMFS
bool "sigmastar-initramfs"

View File

@ -0,0 +1,21 @@
#!/bin/sh
mount -t devtmpfs devtmpfs /dev
mount -t proc proc /proc
mount -t sysfs sysfs /sys
sleep 1
fsck.fat -a /dev/mmcblk0p1
mkdir -p /root /sdcard /tmp
mount -r /dev/mmcblk0p1 /sdcard
echo OpenIPC: Copy squashfs
cp -f /sdcard/rootfs.squashfs.* /tmp || exec sh
mount /tmp/rootfs.squashfs.* /root || exec sh
umount /sdcard
umount /dev
umount /proc
umount /sys
echo OpenIPC: Switch to new root
exec switch_root /root /init

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
dir /bin 755 0 0
dir /dev 755 0 0
nod /dev/console 644 0 0 c 5 1
dir /proc 755 0 0
dir /sys 755 0 0
file /init initramfs/init 755 0 0
file /bin/fsck.fat initramfs/fsck.fat 755 0 0
file /bin/busybox initramfs/busybox 755 0 0
slink /bin/sh busybox 777 0 0
slink /bin/mount busybox 777 0 0
slink /bin/switch_root busybox 777 0 0

View File

@ -0,0 +1,11 @@
################################################################################
#
# sigmastar-initramfs
#
################################################################################
SIGMASTAR_INITRAMFS_VERSION = 1.0
SIGMASTAR_INITRAMFS_SITE =
SIGMASTAR_INITRAMFS_SOURCE =
$(eval $(generic-package))