diff --git a/cfg/alix/bbstatic.config b/cfg/alix/bbstatic.config index 1945e78..d98efb0 100644 --- a/cfg/alix/bbstatic.config +++ b/cfg/alix/bbstatic.config @@ -452,10 +452,10 @@ CONFIG_FEATURE_ALLOW_EXEC=y # CONFIG_FEATURE_FIND_REGEX is not set # CONFIG_FEATURE_FIND_CONTEXT is not set # CONFIG_FEATURE_FIND_LINKS is not set -# CONFIG_GREP is not set +CONFIG_GREP=y # CONFIG_EGREP is not set # CONFIG_FGREP is not set -# CONFIG_FEATURE_GREP_CONTEXT is not set +CONFIG_FEATURE_GREP_CONTEXT=y # CONFIG_XARGS is not set # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set # CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set diff --git a/cfg/rpi3/bbstatic.config b/cfg/rpi3/bbstatic.config index 0770747..a9dc090 100644 --- a/cfg/rpi3/bbstatic.config +++ b/cfg/rpi3/bbstatic.config @@ -451,10 +451,10 @@ CONFIG_FEATURE_ALLOW_EXEC=y # CONFIG_FEATURE_FIND_REGEX is not set # CONFIG_FEATURE_FIND_CONTEXT is not set # CONFIG_FEATURE_FIND_LINKS is not set -# CONFIG_GREP is not set +CONFIG_GREP=y # CONFIG_EGREP is not set # CONFIG_FGREP is not set -# CONFIG_FEATURE_GREP_CONTEXT is not set +CONFIG_FEATURE_GREP_CONTEXT=y # CONFIG_XARGS is not set # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set # CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set diff --git a/pkg/initrd/initrd.skel b/pkg/initrd/initrd.skel index 19cc5a1..11fe93f 100644 --- a/pkg/initrd/initrd.skel +++ b/pkg/initrd/initrd.skel @@ -59,6 +59,59 @@ bind_mount() { mount --bind /newroot/${1} /newroot/${2} } +setup_vfs() { + local root=${1} + + mount -t proc proc $root/proc + mount -t sysfs sysfs $root/sys + mount -t devtmpfs none $root/dev + + # setup /dev + [ -e $root/dev/fd ] || ln -snf /proc/self/fd $root/dev/fd + [ -e $root/dev/stdin ] || ln -snf /proc/self/fd/0 $root/dev/stdin + [ -e $root/dev/stdout ] || ln -snf /proc/self/fd/1 $root/dev/stdout + [ -e $root/dev/stderr ] || ln -snf /proc/self/fd/2 $root/dev/stderr + [ -e $root/proc/kcore ] && ln -snf /proc/kcore $root/dev/core + + for x in \ + "mqueue dev/mqueue 1777 ,nodev mqueue" \ + "devpts dev/pts 0755 ,gid=5,mode=0620 devpts" \ + "tmpfs dev/shm 1777 ,nodev,mode=1777 shm" \ + ; do + set -- $x + grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue + + if [ ! -d "$root/$2" ]; then + mkdir -m $3 -p "$root/$2" >/dev/null 2>&1 || \ + echo "Could not create $root/$2!" + fi + + if [ -d "$root/$2" ]; then + mount -t $1 -o noexec,nosuid$4 $5 "$root/$2" + fi + done + + # set up additional mounts in /proc and /sys + for x in \ + "sys/kernel/security securityfs nodev,noexec,nosuid" \ + "sys/kernel/config configfs nodev,noexec,nosuid" \ + "sys/fs/fuse/connections fusectl nodev,noexec,nosuid" \ + "sys/firmware/efi/efivars efivarfs ro" \ + "proc/sys/fs/binfmt_misc binfmt_misc nodev,noexec,nosuid" \ + ; do + set -- $x + + if [ -d "$root/$1" ]; then + if grep -qs $2 "$root/proc/filesystems"; then + echo "Mounting $2 filesystem" + mount -n -t $2 -o $3 $2 "$root/$1" + fi + fi + done + + unset -v x +} + mount ${root} /images if [ ! -e /images/${root_sfs} ]; then @@ -68,9 +121,7 @@ if [ ! -e /images/${root_sfs} ]; then fi mount -t squashfs /images/${root_sfs} /newroot -mount -t devtmpfs none /newroot/dev -mount -t proc proc /newroot/proc -mount -t sysfs sysfs /newroot/sys +setup_vfs "/newroot" mount -t tmpfs none /newroot/tmp mount -t tmpfs none /newroot/var mount -t tmpfs none /newroot/run