nanodesk/nanodesk-files/usr/bin/nanodesk-installer-gxm

328 lines
6.5 KiB
Bash
Executable file

#!/bin/bash
TITLE="nanodesk-installer-gxm"
VERSION=$(cat /usr/share/nanodesk/version)
HEADER=" ----==== nanodesk-installer-gxm ====----
nanodesk ${VERSION}
"
GXMCMD="gxmessage -name $TITLE -center -geometry 669x420 -wrap -font mono,10 -file -"
GXMINFO="gxmessage -name $TITLE -center -buttons Close -default Close -font mono,13 -file -"
DOCROOT="/usr/share/doc/nanodesk-installer"
DILLOCMD="dillo -f -g 640x480 $DOCROOT"
TARGET=""
ERRORFILE="/tmp/nanodesk-installer.error"
SUCCESSFILE="/tmp/nanodesk-installer.success"
# initialize RETURN with a high value
RETURN=255
#####
#
# DIALOGES
#
#####
gxm-abort() {
if gxm-confirm
then
echo "Installation aborted!"| $GXMINFO
exit 1
fi
}
gxm-confirm() {
echo "Are you sure you want abort?" | $GXMINFO -buttons "Yes:0,No:1"
return $?
}
gxm-cleanup() {
echo "!! An old Errorfile
!! $ERRORFILE
!! was found
Last message: $(cat $ERRORFILE)
It is necessary to delete it if you want to continue.
When deleting it, you will be asked for your password.
Delete $ERRORFILE ?" | $GXMINFO -buttons "Yes:0,No:1" -default Yes -geometry 640x320
return $?
}
gxm-welcome() {
echo "$HEADER
This is a gxmessage based Installation assistant for nanodesk.
To install nanodesk you need a partitioned and formated drive.
You can do the partioning and formating with 'GParted'. (Close 'GParted'
when you are done)
If you need help how to do so, click on 'Help'.
When you are done partitioning and your installation target is formated,
go ahead with 'Install'.
When asked for a password, type in 'debian', which is the nanodesk live
default." |
$GXMCMD -buttons "Abort:1,Help:2,GParted:10,Install:0"
return $?
}
gxm-select-target() {
echo "$HEADER
Please enter the target and press 'Install'.
For example: /dev/sda1" |
$GXMCMD -entry -buttons "Abort:1,Help:2,Install:0"
return $?
}
gmx-start-cli-installer() {
echo "$HEADER
The commandline nanodesk-installer will now open in a new xterm
window.
Target device: $1
Please follow the instructions there and see you later again..." |
$GXMCMD -buttons "Abort:1,open nanodesk-installer CLI:0" -default "open nanodesk-installer CLI"
return $?
}
gxm-success() {
echo "$HEADER
Installation complete! :)
You can now reboot or continue using nanodesk live." | $GXMCMD -buttons Continue:0,Reboot:2 -default Continue
return $?
}
gxm-error() {
echo "$HEADER
Installation FAILED!! :(
Last message was: $(cat $ERRORFILE)" | $GXMCMD -buttons Close -default Close
return $?
}
#####
#
# HELP
#
#####
help-gparted() {
cat <<EOF | $GXMCMD
$HEADER
# Partitioning Help
## You have an empty drive
Cool, easiest way! When you have an empty drive, just start GParted
and select in the right up corner your correct drive you want to install
nanodesk on.
After that click in the upper Menu the entry 'Drive' and select
'create partitiontable'.
In the upcoming dialoge select 'ms-dos' abd 'Apply'.
Now right click in the empty bar representing your drive and select
'New'.
First we create your root filesystem. It gets most of the space, just
let around 4-8GB space left after free for a swap partition we create
afterwards.
Create as 'Primary' and select 'ext4' as filesystem. Confirm that with
'OK' and repeat the steps with the leftover diskspace and create a
partition with the 'linux-swap' filesystem.
When you done all this we need to activate our changes. Select 'Edit'
from the upper Menu and choose 'Apply All Operations' and confirm.
When all operations are done successfully, close GParted and click on
'Install' in the nanodesk-installer.
EOF
}
help-select-target() {
cat <<EOF | $GXMCMD
$HEADER
# target device
Here you have to enter the path to your drive with the
'ext4' filesystem on it. This could be in most cases for example
/dev/sda1
Which says it's the first drive in the system (sdA) and the first
partition on it (sda1).
If you are not sure, you can abort here and open nanodesk-installer
again. Open again GParted to verify that you choose the correct drive.
# commandline nanodesk-installer
In the next step the core of the installer, the commandline tool
`/usr/sbin/nanodesk-installer` opens up in a new xterm window.
Confirm the start of the installation by typing 'YES' all upper case
and confirm it by pressing [ENTER].
When the base system is installed, you can choose if you want to keep
the default user 'debian' with its password 'debian' (press [K])
or you also can remove this default user and create your own new one
(press [U]).
# when something goes wrong
If the installation proccess exits with an error, you can clean up
everything by hand:
sudo su -
umount /mnt/
rm -Rf /tmp/nanodesk-installer.*
mkfs.ext4 [TARGET]
# you can re-run the GUI again
nanodesk-installer-gxm
# or the cli nanodesk-installer directly
nanodesk-installer [TARGET]
EOF
}
#####
#
# EXEC
#
#####
exec-gparted() {
pkexec /usr/sbin/gparted
}
exec-nanodesk-installer() {
# run the installer within xterm
xterm -e /bin/bash -c "pkexec /usr/sbin/nanodesk-installer $1 true || echo 'pkexec auth failed' >> $ERRORFILE"
}
#####
#
# MAIN
#
#####
# cleanup old errorfile
if [ -f "$ERRORFILE" ]
then
RETURN=255
while [ $RETURN -gt 0 ]
do
gxm-cleanup
RETURN=$?
if [ $RETURN -gt 0 ]
then
gxm-abort
else
pkexec rm -f $ERRORFILE || RETURN=255
fi
done
fi
RETURN=255
# welcome screen
while [ $RETURN -gt 0 ]
do
gxm-welcome
RETURN=$?
echo CODE $RETURN
case $RETURN in
1) gxm-abort ;;
2) help-gparted ;;
10) exec-gparted ;;
esac
done
# target select
RETURN=255
while [ $RETURN -gt 0 ]
do
TARGET=$(gxm-select-target)
RETURN=$?
echo CODE $RETURN
echo TARGET $TARGET
# if RC = 1, then user clicked "abort"
case $RETURN in
1) gxm-abort ;;
2) help-select-target ;;
0) echo test if blockdevice
if [ ! -b "$TARGET" ]
then
RETURN=255
echo no
echo -e "Error!\n'${TARGET}' does not exist or is not a blockdevice!" | $GXMINFO
fi
;;
esac
done
# start cli nanodesk-installer
RETURN=255
while [ $RETURN -gt 0 ]
do
gmx-start-cli-installer $TARGET
RETURN=$?
test $RETURN -eq 1 && gxm-abort
echo CODE $RETURN
done
exec-nanodesk-installer $TARGET
if [ -f "$ERRORFILE" ]
then
gxm-error
exit 1
elif [ -f "$SUCCESSFILE" ]
then
gxm-success
RETURN=$?
case $RETURN in
2) systemctl reboot ;;
*) exit 0 ;;
esac
else
echo "Unexpected Error! Exit here." | $GXMINFO -buttons Close -default Close
exit 1
fi
#if [ $RETURN != 0 ]
#then
# echo "ERROR!" | $GXMINFO
# exit 1
#else
# echo "SUCCESS!" | $GXMINFO
# exit 0
#fi