mirror of https://github.com/OpenIPC/firmware.git
[Sigmastar] Add simple initramfs that boots rootfs from sdcard (#671)
Co-authored-by: Viktor <viktorxda@users.noreply.github.com>pull/677/head
parent
185f9016a2
commit
91bbc3fb54
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
../../general/package/sigmastar-initramfs
|
|
@ -0,0 +1,2 @@
|
|||
config BR2_PACKAGE_SIGMASTAR_INITRAMFS
|
||||
bool "sigmastar-initramfs"
|
|
@ -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
|
@ -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
|
|
@ -0,0 +1,11 @@
|
|||
################################################################################
|
||||
#
|
||||
# sigmastar-initramfs
|
||||
#
|
||||
################################################################################
|
||||
|
||||
SIGMASTAR_INITRAMFS_VERSION = 1.0
|
||||
SIGMASTAR_INITRAMFS_SITE =
|
||||
SIGMASTAR_INITRAMFS_SOURCE =
|
||||
|
||||
$(eval $(generic-package))
|
Loading…
Reference in New Issue