From: Michael Tremer Date: Thu, 4 Jul 2024 17:48:53 +0000 (+0000) Subject: make.sh: Create a new, minimal /dev in the build environment X-Git-Tag: v2.29-core188~10^2~376 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e940d23cf87eef88d40bb1e8ed360685d21049e0;p=ipfire-2.x.git make.sh: Create a new, minimal /dev in the build environment Signed-off-by: Michael Tremer --- diff --git a/make.sh b/make.sh index b684cc973c..490d3578bf 100755 --- a/make.sh +++ b/make.sh @@ -402,6 +402,8 @@ prepareenv() { # Set LFS Directory LFS=$BASEDIR/build + BUILD_DIR="${BASEDIR}/build" + # Setup environment set +h LC_ALL=POSIX @@ -424,13 +426,53 @@ prepareenv() { mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} - mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null - mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null + # Create a new, minimal /dev + mount build_dev "${BUILD_DIR}/dev" \ + -t tmpfs -o "nosuid,noexec,mode=0755,size=4m,nr_inodes=64k" + + # Create device nodes + mknod -m 600 "${BUILD_DIR}/dev/console" c 5 1 + mknod -m 666 "${BUILD_DIR}/dev/null" c 1 3 + mknod -m 666 "${BUILD_DIR}/dev/zero" c 1 5 + mknod -m 666 "${BUILD_DIR}/dev/full" c 1 7 + mknod -m 444 "${BUILD_DIR}/dev/random" c 1 8 + mknod -m 444 "${BUILD_DIR}/dev/urandom" c 1 9 + mknod -m 444 "${BUILD_DIR}/dev/kmsg" c 1 11 + mknod -m 666 "${BUILD_DIR}/dev/tty" c 5 0 + mknod -m 666 "${BUILD_DIR}/dev/rtc0" c 252 0 + + # Create loop devices + mknod -m 666 "${BUILD_DIR}/dev/loop-control" c 10 237 + mknod -m 666 "${BUILD_DIR}/dev/loop0" c 7 0 + mknod -m 666 "${BUILD_DIR}/dev/loop1" c 7 1 + mknod -m 666 "${BUILD_DIR}/dev/loop2" c 7 2 + mknod -m 666 "${BUILD_DIR}/dev/loop3" c 7 3 + mknod -m 666 "${BUILD_DIR}/dev/loop4" c 7 4 + mknod -m 666 "${BUILD_DIR}/dev/loop5" c 7 5 + mknod -m 666 "${BUILD_DIR}/dev/loop6" c 7 6 + mknod -m 666 "${BUILD_DIR}/dev/loop7" c 7 7 + + # Create directories + mkdir -p "${BUILD_DIR}/dev/pts" + mkdir -p "${BUILD_DIR}/dev/shm" + + # Create symlinks + ln -s "pts/ptmx" "${BUILD_DIR}/dev/ptmx" + ln -s "../proc/self/fd" "${BUILD_DIR}/dev/fd" + ln -s "../proc/self/fd/0" "${BUILD_DIR}/dev/stdin" + ln -s "../proc/self/fd/1" "${BUILD_DIR}/dev/stdout" + ln -s "../proc/self/fd/2" "${BUILD_DIR}/dev/stderr" + ln -s "../proc/kcore" "${BUILD_DIR}/dev/core" + + # Mount a new /dev/pts + mount build_dev_pts "${BUILD_DIR}/dev/pts" \ + -t devpts -o "nosuid,noexec,newinstance,ptmxmode=0666,mode=620" + + # Mount a new /dev/shm + mount build_dev_shm "${BUILD_DIR}/dev/shm" \ + -t tmpfs -o "nosuid,nodev,strictatime,mode=1777,size=1024m" # Make all sources and proc available under lfs build - mount --bind /dev $BASEDIR/build/dev - mount --bind /dev/pts $BASEDIR/build/dev/pts - mount --bind /dev/shm $BASEDIR/build/dev/shm mount --bind /sys $BASEDIR/build/sys mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache mount --bind $BASEDIR/ccache/${BUILD_ARCH}/${TOOLCHAINVER} $BASEDIR/build/usr/src/ccache