Compare commits
12 commits
885ad3f228
...
71f45b7a80
Author | SHA1 | Date | |
---|---|---|---|
71f45b7a80 | |||
a536a60140 | |||
aa3680b401 | |||
8a68da5414 | |||
dc935dafc1 | |||
326c9bce8e | |||
879d8ea922 | |||
a00f01e4b1 | |||
f3bbf59cee | |||
75367d72e2 | |||
b61b79c4e9 | |||
a980a1c44a |
4 changed files with 364 additions and 12 deletions
328
nanodesk-files/usr/bin/nanodesk-installer-gxm
Executable file
328
nanodesk-files/usr/bin/nanodesk-installer-gxm
Executable file
|
@ -0,0 +1,328 @@
|
|||
#!/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
|
||||
|
|
@ -7,8 +7,16 @@
|
|||
### this is just a hobby, nothing serious. i know the debian installer and other
|
||||
### exist, but i wanted to try some handcrafted installation.
|
||||
|
||||
if [ -n "$2" ] && [ "$2" == true ]
|
||||
then
|
||||
GXMINSTALLER=true
|
||||
else
|
||||
GXMINSTALLER=false
|
||||
fi
|
||||
|
||||
CHROOTCMD="chroot /mnt/"
|
||||
ERRORFILE="/tmp/nanodesk-installer.error"
|
||||
SUCCESSFILE="/tmp/nanodesk-installer.success"
|
||||
|
||||
##message () {
|
||||
## echo "== " $1
|
||||
|
@ -44,14 +52,18 @@ function message() {
|
|||
}
|
||||
|
||||
error () {
|
||||
echo "Error at: $MESSAGE" >> $ERRORFILE
|
||||
message error "ERROR!"
|
||||
test "$GXMINSTALLER" == true && read -p "Press [ENTER] to continue..."
|
||||
exit 1
|
||||
}
|
||||
|
||||
finish () {
|
||||
|
||||
message "removing installer files from target"
|
||||
$CHROOTCMD /usr/bin/rm -Rf /usr/sbin/nanodesk-installer || error
|
||||
$CHROOTCMD /usr/bin/rm -Rf /usr/sbin/nanodesk-installer || error
|
||||
$CHROOTCMD /usr/bin/rm -Rf /usr/bin/nanodesk-installer-gxm || error
|
||||
$CHROOTCMD /usr/bin/rm -Rf /usr/share/applications/nanodesk-installer-gxm.desktop || error
|
||||
|
||||
message "removing live-packages from target"
|
||||
$CHROOTCMD /usr/bin/apt -y purge 'live-boot*' 'live-tools*'
|
||||
|
@ -61,6 +73,7 @@ finish () {
|
|||
|
||||
|
||||
message "we are now ready to boot from $target"
|
||||
touch $SUCCESSFILE
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
@ -98,7 +111,7 @@ message "Are you sure to install nanodesk to $target?"
|
|||
message "To continue type 'YES' and enter, to cancel type anything else or CTRL+C"
|
||||
|
||||
read -p "> " DOINSTALL
|
||||
test "$DOINSTALL" == "YES" || error
|
||||
test "$DOINSTALL" == "YES" || error
|
||||
|
||||
message "... GOOD LUCK!"
|
||||
message "mounting $target to /mnt/"
|
||||
|
@ -108,7 +121,7 @@ message "copy systemfiles"
|
|||
# rsync is dumb
|
||||
#rsync -aHx / /mnt/ || error
|
||||
|
||||
unsquashfs -d /mnt/ /run/live/medium/live/filesystem.squashfs || error
|
||||
unsquashfs -d /mnt/ /run/live/medium/live/filesystem.squashfs || error
|
||||
|
||||
message "bind mount dev proc sys"
|
||||
for m in dev proc sys
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Name=nanodesk-installer
|
||||
Comment=installer gxmessage script for nanodesk live
|
||||
Exec=/usr/bin/nanodesk-installer-gxm
|
||||
Icon=/usr/share/icons/Tango/scalable/apps/system-installer.svg
|
||||
Terminal=true
|
||||
Type=Application
|
||||
Categories=System;
|
|
@ -5,21 +5,24 @@ that comes with the `jwm` window manager.
|
|||
|
||||
This is just a fun project for learning purposes.
|
||||
|
||||
## install to disk
|
||||
Visit the git repository at
|
||||
[git.la10cy.net/DeltaLima/nanodesk](https://git.la10cy.net/DeltaLima/nanodesk)
|
||||
|
||||
## install to disk: nanodesk-installer
|
||||
|
||||
You can install nanodesk to your harddrive. Before doing so,
|
||||
you have to get your drive partitioned and formated.
|
||||
|
||||
Partitioning on an empty drive is simple, you need two partitions
|
||||
Under `Menu -> System -> nanodesk-installer` you find the GUI
|
||||
of the nanodesk-installer. It will guide you through the first basic
|
||||
partitioning steps and formating your drive with `GParted`.
|
||||
The installation process itself is done by the `nanodesk-installer` cli.
|
||||
|
||||
- partition1: ext4, main filesystem.
|
||||
- partition2: swap, optional but recommended. About 20%-50% the size of your RAM.
|
||||
You can also just run the cli directly running
|
||||
`sudo nanodesk-installer [TARGET]`
|
||||
|
||||
You can use `Menu -> System -> GParted` or `fdisk` on the shell for this.
|
||||
Please read their manuals.
|
||||
|
||||
This done, just run `sudo nanodesk-installer /dev/sdXY` from the terminal
|
||||
and the installation will start. (change /dev/sdXY to your drive)
|
||||
Keep in Mind, that `[TARGET]` needs to be a (ext4) preformated
|
||||
blockdevice and should be a partition.
|
||||
|
||||
## installing software
|
||||
|
||||
|
|
Loading…
Reference in a new issue