aboutsummaryrefslogtreecommitdiff
path: root/util/mkrootfs
diff options
context:
space:
mode:
Diffstat (limited to 'util/mkrootfs')
-rwxr-xr-xutil/mkrootfs40
1 files changed, 40 insertions, 0 deletions
diff --git a/util/mkrootfs b/util/mkrootfs
new file mode 100755
index 0000000..5818fdb
--- /dev/null
+++ b/util/mkrootfs
@@ -0,0 +1,40 @@
+#!/bin/sh
+OLDPWD="$PWD"
+cd "$(dirname "$0")"
+BUSYBOX_FS="$(realpath ../busybox/rootfs)"
+OVERLAY_FS="$(realpath ../rootfs)"
+cd "$OLDPWD"
+
+# change into the (mounted) target rootfs folder
+cd "$1"
+
+# scaffold folders
+for dir in bin dev etc home lib mnt opt proc root run sbin srv sys tmp usr var ; do
+ mkdir -p "$dir"
+done
+
+# create special devices
+! [ -c dev/mem ] && mknod dev/mem c 1 1
+! [ -c dev/null ] && mknod dev/null c 1 3
+! [ -c dev/random ] && mknod dev/random c 1 8
+! [ -c dev/urandom ] && mknod dev/urandom c 1 9
+! [ -c dev/zero ] && mknod dev/zero c 1 5
+
+# copy busybox files and overlay files
+CPFLAGS='--no-dereference --recursive --preserve=mode,timestamps,links --no-preserve=owner'
+cp $CPFLAGS "$BUSYBOX_FS/." .
+cp $CPFLAGS "$OVERLAY_FS/." .
+
+# setuid busybox
+chmod a=xrs,u+w bin/busybox
+
+# # create /etc/passwd
+# if ! [ -e etc/passwd ] ; then
+# # TODO: add root to a group
+# echo "root:x:0:0::/root:/bin/sh" > etc/passwd
+# fi
+# # and /etc/shadow
+# if ! [ -e etc/shadow ] ; then
+# echo "root:$(mkpasswd alpine):::::::" > etc/shadow
+# fi
+#