From 496514122e4dbd8fea196c0b0e8b0ff5a4cc88e1 Mon Sep 17 00:00:00 2001 From: lemniskett Date: Sat, 23 Jan 2021 16:06:38 +0700 Subject: [PATCH 1/4] Allow changing installation PREFIX. --- archbox.bash | 14 +++++++------- chroot_setup.bash | 2 +- install.sh | 26 +++++++++++++++++--------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/archbox.bash b/archbox.bash index 22dc8d1..def5d26 100644 --- a/archbox.bash +++ b/archbox.bash @@ -7,7 +7,7 @@ checkdep(){ } copyresolv(){ - $PRIV /usr/local/share/archbox/bin/copyresolv + $PRIV $PREFIX/share/archbox/bin/copyresolv } asroot(){ @@ -83,8 +83,8 @@ case $1 in checkdep sed sed -i 's/CheckSpace/#CheckSpace/g' $CHROOT/etc/pacman.conf msg "Mounting necessary filesystems..." - /usr/local/share/archbox/bin/archboxinit start - cp /usr/local/share/archbox/chroot_setup.bash $CHROOT/chroot_setup + $PREFIX/share/archbox/bin/archboxinit start + cp $PREFIX/share/archbox/chroot_setup.bash $CHROOT/chroot_setup echo $USER > /tmp/archbox_user chroot $CHROOT /bin/bash -c "/chroot_setup" exit $? @@ -92,15 +92,15 @@ case $1 in -e|--enter) storeenv copyresolv - $PRIV /usr/local/share/archbox/bin/archbox enter + $PRIV $PREFIX/share/archbox/bin/archbox enter exit $? ;; --remount-run) - $PRIV /usr/local/share/archbox/bin/remount_run + $PRIV $PREFIX/share/archbox/bin/remount_run exit $? ;; --mount-runtime-only) - $PRIV /usr/local/share/archbox/bin/remount_run runtimeonly + $PRIV $PREFIX/share/archbox/bin/remount_run runtimeonly exit $? ;; -h|--help) @@ -117,7 +117,7 @@ case $1 in *) storeenv copyresolv - $PRIV /usr/local/share/archbox/bin/archbox $@ + $PRIV $PREFIX/share/archbox/bin/archbox $@ exit $? ;; esac diff --git a/chroot_setup.bash b/chroot_setup.bash index 5283395..f1340b6 100644 --- a/chroot_setup.bash +++ b/chroot_setup.bash @@ -46,4 +46,4 @@ while true; do passwd $CHROOT_USER && break done sed -i 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers -echo "Don't forget to run '/usr/local/share/archbox/bin/archboxinit start' in host on boot" +echo "Don't forget to run \"archbox --mount\" in host on boot" diff --git a/install.sh b/install.sh index c55a883..e36f5f1 100755 --- a/install.sh +++ b/install.sh @@ -1,18 +1,26 @@ #!/usr/bin/env bash -mkdir -p /usr/local/share/archbox/bin -install -v -D -m 755 ./archbox.bash /usr/local/bin/archbox -install -v -D -m 755 ./archbox-desktop.bash /usr/local/bin/archbox-desktop +PREFIX="/usr/local" + +mkdir -p $PREFIX/share/archbox/bin +install -v -D -m 755 ./archbox.bash $PREFIX/bin/archbox +install -v -D -m 755 ./archbox-desktop.bash $PREFIX/bin/archbox-desktop [[ ! -e /etc/archbox.conf ]] && install -v -D -m 755 ./archbox.conf /etc/archbox.conf -install -v -D -m 755 ./copyresolv.bash /usr/local/share/archbox/bin/copyresolv -install -v -D -m 755 ./archboxcommand.bash /usr/local/share/archbox/bin/archbox -install -v -D -m 755 ./remount_run.bash /usr/local/share/archbox/bin/remount_run -install -v -D -m 755 ./chroot_setup.bash /usr/local/share/archbox/chroot_setup.bash -install -v -D -m 755 ./archboxinit.bash /usr/local/share/archbox/bin/archboxinit +install -v -D -m 755 ./copyresolv.bash $PREFIX/share/archbox/bin/copyresolv +install -v -D -m 755 ./archboxcommand.bash $PREFIX/share/archbox/bin/archbox +install -v -D -m 755 ./remount_run.bash $PREFIX/share/archbox/bin/remount_run +install -v -D -m 755 ./chroot_setup.bash $PREFIX/share/archbox/chroot_setup.bash +install -v -D -m 755 ./archboxinit.bash $PREFIX/share/archbox/bin/archboxinit + +cat << EOF >> /etc/archbox.conf + +# Don't change this unless you know what you're doing. +PREFIX="$PREFIX" +EOF [[ -z $1 ]] && exit 0 if [ $1 = "--exp" ]; then - install -v -D -m 755 ./exp/startx-killxdg.bash /usr/local/bin/startx-killxdg + install -v -D -m 755 ./exp/startx-killxdg.bash $PREFIX/bin/startx-killxdg else echo "Unknown install option: $1" fi From 713aa16ddffa9c858df686e3068c63da5c047ffe Mon Sep 17 00:00:00 2001 From: lemniskett Date: Sat, 23 Jan 2021 16:15:13 +0700 Subject: [PATCH 2/4] Add mount and unmount options. --- README.md | 2 +- archbox.bash | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c507b8a..3704168 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Description=Archbox init PartOf=multi-user.target [Service] -ExecStart=/usr/local/share/archbox/bin/archboxinit start +ExecStart=/bin/archbox --mount Type=oneshot User=root diff --git a/archbox.bash b/archbox.bash index def5d26..17ae16b 100644 --- a/archbox.bash +++ b/archbox.bash @@ -33,6 +33,8 @@ OPTIONS: -c, --create URL Creates a chroot enviroment. -e, --enter Enters chroot enviroment. -h, --help Displays this help message. + -m, --mount Mount Archbox directories. + -u, --umount Unmount Archbox directories. --remount-run Remount /run in chroot enviroment. --mount-runtime-only Mount XDG_RUNTIME_DIR to chroot enviroment. @@ -95,6 +97,14 @@ case $1 in $PRIV $PREFIX/share/archbox/bin/archbox enter exit $? ;; + -m|--mount) + asroot + $PREFIX/share/archbox/bin/archboxinit start + ;; + -u|--umount) + asroot + $PREFIX/share/archbox/bin/archboxinit stop + ;; --remount-run) $PRIV $PREFIX/share/archbox/bin/remount_run exit $? From 7f9a7f6512e64fccbec822618242a3f2b1a25c21 Mon Sep 17 00:00:00 2001 From: lemniskett Date: Sat, 23 Jan 2021 16:15:57 +0700 Subject: [PATCH 3/4] Fix missing $PREFIX in startx-killxdg. --- exp/startx-killxdg.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exp/startx-killxdg.bash b/exp/startx-killxdg.bash index 28048fe..fc5f8d1 100755 --- a/exp/startx-killxdg.bash +++ b/exp/startx-killxdg.bash @@ -3,4 +3,4 @@ source /etc/archbox.conf startx -$PRIV /usr/local/share/archbox/bin/remount_run killxdg +$PRIV $PREFIX/share/archbox/bin/remount_run killxdg From e2305d21a5ee9cf2962c65a3f6a0e39ed31f9a6f Mon Sep 17 00:00:00 2001 From: lemniskett Date: Sat, 23 Jan 2021 16:23:49 +0700 Subject: [PATCH 4/4] Update README.md and exec with sudo automatically when mounting. --- README.md | 15 ++++++++------- archbox.bash | 6 ++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3704168..7c29ae5 100644 --- a/README.md +++ b/README.md @@ -22,14 +22,14 @@ sudo archbox --create ``` ### Configuring filesystem automount Execute ```/usr/local/share/archbox/bin/archboxinit start``` on boot. -If you use systemd, you can create a systemd service with this syntax below : +If you use systemd, you can create a systemd service with this syntax below (Assuming the install prefix is ```/usr/local```) : ``` [Unit] Description=Archbox init PartOf=multi-user.target [Service] -ExecStart=/bin/archbox --mount +ExecStart=/usr/local/bin/archbox --mount Type=oneshot User=root @@ -42,9 +42,9 @@ If you don't use systemd, either create your own init service, or create a @rebo ### Removing chroot enviroment **IMPORTANT**, Make sure you've unmounted everything in chroot enviroment, it's better to remove the init script and reboot to unmount everything. if you can't reboot for some reason, do : ``` -/usr/local/share/archbox/bin/archboxinit stop +archbox -u ``` -, then do : +then do : ``` mount ``` @@ -55,7 +55,7 @@ To enter chroot, do : archbox --enter ``` ### Executing commands in chroot enviroment -To execute commands inside chroot envirotment, do : +To execute commands inside chroot enviroment, do : ``` archbox ``` @@ -64,16 +64,17 @@ for example, to update chroot, do : archbox sudo pacman -Syu ``` ### Optional steps -You may want to add this if you don't want to run archbox chroot without password : +You may want to add this if you don't want to use Archbox without password (assuming the install prefix is ```/usr/local```) : #### Sudo ``` -%wheel ALL=(root) NOPASSWD: /usr/local/share/archbox/bin/archbox,/usr/local/share/archbox/bin/copyresolv,/usr/local/share/archbox/bin/remount_run +%wheel ALL=(root) NOPASSWD: /usr/local/share/archbox/bin/archbox,/usr/local/share/archbox/bin/copyresolv,/usr/local/share/archbox/bin/remount_run,/usr/local/share/archbox/bin/archboxinit ``` #### Doas ``` permit nopass :wheel as root cmd /usr/local/share/archbox/bin/archbox permit nopass :wheel as root cmd /usr/local/share/archbox/bin/copyresolv permit nopass :wheel as root cmd /usr/local/share/archbox/bin/remount_run +permit nopass :wheel as root cmd /usr/local/share/archbox/bin/archboxinit ``` ### Misc #### Systemd services diff --git a/archbox.bash b/archbox.bash index 17ae16b..e66876e 100644 --- a/archbox.bash +++ b/archbox.bash @@ -98,12 +98,10 @@ case $1 in exit $? ;; -m|--mount) - asroot - $PREFIX/share/archbox/bin/archboxinit start + $PRIV $PREFIX/share/archbox/bin/archboxinit start ;; -u|--umount) - asroot - $PREFIX/share/archbox/bin/archboxinit stop + $PRIV $PREFIX/share/archbox/bin/archboxinit stop ;; --remount-run) $PRIV $PREFIX/share/archbox/bin/remount_run