make.sh: Create a new, minimal /dev in the build environment

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Michael Tremer
2024-07-04 17:48:53 +00:00
parent 4c92e5d852
commit e940d23cf8

52
make.sh
View File

@@ -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