aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesus <heckyel@riseup.net>2023-09-25 02:46:41 +0800
committerJesus <heckyel@riseup.net>2023-09-25 02:46:41 +0800
commitfe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018 (patch)
tree7f9771b348101c4a53ef4172eb957a9ca56fa314
parent30e0053ac25f86c57c5da12d244981e97cc8d324 (diff)
downloadhyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.tar.lz
hyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.tar.xz
hyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.zip
update helpers
-rw-r--r--README.md13
-rw-r--r--make-bootstrap-file.sh28
2 files changed, 33 insertions, 8 deletions
diff --git a/README.md b/README.md
index d396f8a..419ae00 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,19 @@ If you want change the download repository
# bash make-bootstrap-file.sh -u https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/testing
```
+To display the script's help information, use the -h option:
+
+```console
+# bash make-bootstrap-file.sh -h
+```
+
+Why Root (Superuser) is Required ?
+===================================
+
+This script must be run as root (superuser) because it performs several critical operations that require administrative privileges.
+The primary reason is the use of the **mknod** command to make device nodes (/dev/null, /dev/random, and /dev/urandom),
+which is restricted to superusers due to security considerations.
+
License
=======
diff --git a/make-bootstrap-file.sh b/make-bootstrap-file.sh
index de42f67..2e0c883 100644
--- a/make-bootstrap-file.sh
+++ b/make-bootstrap-file.sh
@@ -4,16 +4,25 @@
set -e -u -o pipefail
+# Check if the user is root (superuser)
+if [[ $(id -u) -ne 0 ]]; then
+ echo "This script must be run as root (superuser) because it uses 'mknod' to make device nodes, which requires superuser privileges."
+ exit 1
+fi
+
+# Display usage message
usage() {
cat <<EOF
- Usage:
- bash $0 make-bootstrap-file.sh
- or
- bash $0 make-bootstrap-file.sh --arch i686 --release v0.4.3 --url https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable
- or
- bash $0 make-bootstrap-file.sh -a i686 -r v0.4.3 -u https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable
+Usage: bash $0 [options]
+
+Options:
+ -a, --arch ARCH Specify architecture (default: x86_64)
+ -r, --release VERSION Specify version (default: v0.4.3)
+ -u, --url URL Specify repository URL (default: https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable)
+ -owu, --owner-user-id ID Owner user ID for the tar file (default: 1000)
+ -owg, --owner-group-id ID Owner group ID for the tar file (default: 1000)
+ -h, --help Display this help message
EOF
- exit 1
}
SCRIPT=$(readlink -f "$0")
@@ -51,9 +60,12 @@ while [[ $# -gt 0 ]]; do
TAR_OWNER_GROUP_ID="${2}"
shift 2
;;
+ -h|--help)
+ usage && exit 0
+ ;;
*)
echo "Unrecognized option: $key"
- usage
+ usage && exit 1
;;
esac
done