272 lines
5.9 KiB
Bash
Executable File
272 lines
5.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# Base filesystem package build script - creates merged-/usr directory structure
|
|
|
|
set -eu
|
|
|
|
: "${DESTDIR:?DESTDIR is not set}"
|
|
|
|
# Canonical merged-/usr directories
|
|
mkdir -p \
|
|
"$DESTDIR/usr/bin" \
|
|
"$DESTDIR/usr/lib" \
|
|
"$DESTDIR/usr/lib32" \
|
|
"$DESTDIR/usr/include" \
|
|
"$DESTDIR/usr/share/man" \
|
|
"$DESTDIR/usr/share/info" \
|
|
"$DESTDIR/etc" \
|
|
"$DESTDIR/var" \
|
|
"$DESTDIR/tmp" \
|
|
"$DESTDIR/home" \
|
|
"$DESTDIR/root" \
|
|
"$DESTDIR/run" \
|
|
"$DESTDIR/dev" \
|
|
"$DESTDIR/mnt" \
|
|
"$DESTDIR/proc" \
|
|
"$DESTDIR/sys" \
|
|
"$DESTDIR/opt" \
|
|
"$DESTDIR/srv" \
|
|
"$DESTDIR/boot"
|
|
|
|
# Common optional dirs (safe to have even if empty)
|
|
mkdir -p \
|
|
"$DESTDIR/usr/share" \
|
|
"$DESTDIR/usr/libexec" \
|
|
"$DESTDIR/usr/local" \
|
|
"$DESTDIR/etc/profile.d" \
|
|
"$DESTDIR/etc/skel" \
|
|
"$DESTDIR/var/cache" \
|
|
"$DESTDIR/var/lib/misc" \
|
|
"$DESTDIR/var/log/old" \
|
|
"$DESTDIR/var/empty" \
|
|
"$DESTDIR/var/local" \
|
|
"$DESTDIR/var/opt" \
|
|
"$DESTDIR/var/tmp" \
|
|
"$DESTDIR/var/spool/mail" \
|
|
"$DESTDIR/usr/src" \
|
|
"$DESTDIR/usr/share/misc" \
|
|
"$DESTDIR/usr/share/pixmaps" \
|
|
"$DESTDIR/usr/share/factory/etc"
|
|
|
|
chown 0:0 \
|
|
"$DESTDIR/boot" \
|
|
"$DESTDIR/dev" \
|
|
"$DESTDIR/etc" \
|
|
"$DESTDIR/etc/profile.d" \
|
|
"$DESTDIR/etc/skel" \
|
|
"$DESTDIR/home" \
|
|
"$DESTDIR/mnt" \
|
|
"$DESTDIR/opt" \
|
|
"$DESTDIR/proc" \
|
|
"$DESTDIR/root" \
|
|
"$DESTDIR/run" \
|
|
"$DESTDIR/srv" \
|
|
"$DESTDIR/sys" \
|
|
"$DESTDIR/tmp" \
|
|
"$DESTDIR/usr" \
|
|
"$DESTDIR/usr/bin" \
|
|
"$DESTDIR/usr/include" \
|
|
"$DESTDIR/usr/lib" \
|
|
"$DESTDIR/usr/lib32" \
|
|
"$DESTDIR/usr/libexec" \
|
|
"$DESTDIR/usr/local" \
|
|
"$DESTDIR/usr/share" \
|
|
"$DESTDIR/usr/share/man" \
|
|
"$DESTDIR/usr/share/info" \
|
|
"$DESTDIR/usr/share/misc" \
|
|
"$DESTDIR/usr/share/pixmaps" \
|
|
"$DESTDIR/usr/share/factory/etc" \
|
|
"$DESTDIR/usr/src" \
|
|
"$DESTDIR/var" \
|
|
"$DESTDIR/var/cache" \
|
|
"$DESTDIR/var/empty" \
|
|
"$DESTDIR/var/lib/misc" \
|
|
"$DESTDIR/var/local" \
|
|
"$DESTDIR/var/log/old" \
|
|
"$DESTDIR/var/opt" \
|
|
"$DESTDIR/var/spool/mail" \
|
|
"$DESTDIR/var/tmp"
|
|
|
|
chmod 0755 \
|
|
"$DESTDIR/boot" \
|
|
"$DESTDIR/dev" \
|
|
"$DESTDIR/etc" \
|
|
"$DESTDIR/etc/profile.d" \
|
|
"$DESTDIR/etc/skel" \
|
|
"$DESTDIR/home" \
|
|
"$DESTDIR/mnt" \
|
|
"$DESTDIR/opt" \
|
|
"$DESTDIR/run" \
|
|
"$DESTDIR/srv" \
|
|
"$DESTDIR/usr" \
|
|
"$DESTDIR/usr/bin" \
|
|
"$DESTDIR/usr/include" \
|
|
"$DESTDIR/usr/lib" \
|
|
"$DESTDIR/usr/libexec" \
|
|
"$DESTDIR/usr/local" \
|
|
"$DESTDIR/usr/share" \
|
|
"$DESTDIR/usr/share/man" \
|
|
"$DESTDIR/usr/share/info" \
|
|
"$DESTDIR/usr/share/misc" \
|
|
"$DESTDIR/usr/share/pixmaps" \
|
|
"$DESTDIR/usr/share/factory/etc" \
|
|
"$DESTDIR/usr/src" \
|
|
"$DESTDIR/var" \
|
|
"$DESTDIR/var/cache" \
|
|
"$DESTDIR/var/empty" \
|
|
"$DESTDIR/var/lib/misc" \
|
|
"$DESTDIR/var/local" \
|
|
"$DESTDIR/var/log/old" \
|
|
"$DESTDIR/var/opt"
|
|
|
|
chmod 0555 "$DESTDIR/proc" "$DESTDIR/sys"
|
|
chmod 0750 "$DESTDIR/root"
|
|
chmod 1777 "$DESTDIR/tmp" "$DESTDIR/var/tmp" "$DESTDIR/var/spool/mail"
|
|
|
|
# Compatibility: make legacy top-level dirs point into /usr
|
|
# /bin -> /usr/bin
|
|
# /sbin -> /usr/bin (merged "one thing" behavior)
|
|
# /lib -> /usr/lib
|
|
if [ ! -e "$DESTDIR/bin" ]; then
|
|
ln -s usr/bin "$DESTDIR/bin"
|
|
fi
|
|
|
|
if [ ! -e "$DESTDIR/sbin" ]; then
|
|
ln -s usr/bin "$DESTDIR/sbin"
|
|
fi
|
|
|
|
if [ ! -e "$DESTDIR/lib" ]; then
|
|
ln -s usr/lib "$DESTDIR/lib"
|
|
fi
|
|
|
|
if [ ! -e "$DESTDIR/lib64" ]; then
|
|
ln -s usr/lib "$DESTDIR/lib64"
|
|
fi
|
|
|
|
if [ ! -e "$DESTDIR/usr/sbin" ]; then
|
|
ln -s bin "$DESTDIR/usr/sbin"
|
|
fi
|
|
|
|
# Default PATH for login shells
|
|
cat > "$DESTDIR/etc/profile.d/00-path.sh" <<'EOF'
|
|
# Default PATH for interactive shells
|
|
export PATH=/usr/bin:/usr/sbin:$PATH
|
|
EOF
|
|
|
|
# /etc/profile entrypoint to load profile.d snippets
|
|
cat > "$DESTDIR/etc/profile" <<'EOF'
|
|
# System-wide profile
|
|
for f in /etc/profile.d/*.sh; do
|
|
[ -r "$f" ] && . "$f"
|
|
done
|
|
EOF
|
|
|
|
# Non-login interactive shells (bash reads this if enabled by the distro)
|
|
cat > "$DESTDIR/etc/bash.bashrc" <<'EOF'
|
|
# System-wide bashrc
|
|
for f in /etc/profile.d/*.sh; do
|
|
[ -r "$f" ] && . "$f"
|
|
done
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/os-release" <<'EOF'
|
|
NAME="Vertex Linux"
|
|
ID=vertex
|
|
PRETTY_NAME="Vertex Linux 1.0 (Parallel Panther)"
|
|
VERSION="1.0 (Parallel Panther)"
|
|
VERSION_ID="1.0"
|
|
VERSION_CODENAME=parallel_panther
|
|
BUILD_ID=1.0
|
|
HOME_URL="https://www.vertexlinux.net"
|
|
SUPPORT_URL="https://www.vertexlinux.net"
|
|
BUG_REPORT_URL="https://www.vertexlinux.net"
|
|
ANSI_COLOR="1;35"
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/lsb-release" <<'EOF'
|
|
DISTRIB_ID=VertexLinux
|
|
DISTRIB_RELEASE=1.0
|
|
DISTRIB_CODENAME=parallel_panther
|
|
DISTRIB_DESCRIPTION="Vertex Linux 1.0 (Parallel Panther)"
|
|
DISTRIB_URL="https://vertexlinux.net"
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/passwd" << 'EOF'
|
|
root:x:0:0:root:/root:/bin/zsh
|
|
bin:x:1:1:bin:/dev/null:/usr/bin/false
|
|
daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
|
|
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
|
|
uucp:x:14:14:UUCP User:/dev/null:/usr/bin/false
|
|
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
|
|
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/shadow" << 'EOF'
|
|
root:*:14871::::::
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/shells" << 'EOF'
|
|
# Pathnames of valid login shells.
|
|
# See shells(5) for details.
|
|
|
|
/bin/sh
|
|
/bin/dash
|
|
/usr/bin/sh
|
|
/usr/bin/dash
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/group" << 'EOF'
|
|
root:x:0:
|
|
bin:x:1:daemon
|
|
sys:x:2:
|
|
kmem:x:3:
|
|
tape:x:4:
|
|
tty:x:5:
|
|
daemon:x:6:
|
|
floppy:x:7:
|
|
disk:x:8:
|
|
lp:x:9:
|
|
dialout:x:10:
|
|
audio:x:11:
|
|
video:x:12:
|
|
utmp:x:13:
|
|
clock:x:14:
|
|
cdrom:x:15:
|
|
adm:x:16:
|
|
messagebus:x:18:
|
|
uucp:x:19:
|
|
input:x:24:
|
|
mail:x:34:
|
|
kvm:x:61:
|
|
uuidd:x:80:
|
|
wheel:x:97:
|
|
users:x:999:
|
|
nogroup:x:65534:
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/hosts" << 'EOF'
|
|
# Static table lookup for hostnames.
|
|
# See hosts(5) for details.
|
|
127.0.0.1 localhost
|
|
::1 localhost
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/issue" << 'EOF'
|
|
\S{PRETTY_NAME} \r (\l)
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/fstab" << 'EOF'
|
|
# Static information about the filesystems.
|
|
# See fstab(5) for details.
|
|
|
|
# <file system> <dir> <type> <options> <dump> <pass>
|
|
EOF
|
|
|
|
cat > "$DESTDIR/etc/resolv.conf" << 'EOF'
|
|
# Resolver configuration file.
|
|
# See resolv.conf(5) for details.
|
|
EOF
|
|
|
|
ln -sv usr/lib32 "$DESTDIR/lib32"
|
|
|
|
echo "Merged-/usr filesystem directory structure created."
|