forked from CerebruxCode/Archon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharchon.sh
executable file
·373 lines (363 loc) · 14.4 KB
/
archon.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
#!/bin/bash
#
#
# Archon -- Ελληνικός Arch Linux Installer
# Copyright (c)2017 Vasilis Niakas, Salih Emin and Contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation version 3 of the License.
#
# Please read the file LICENSE, README and AUTHORS for more information.
#
#
function chroot_stage {
echo
echo '---------------------------------------------'
echo '7 - Τροποποίηση Γλώσσας και Ζώνης Ώρας '
echo ' '
echo 'Θα ρυθμίσουμε το σύστημα να είναι στα Αγγλικά'
echo 'και ζώνη ώρας την Ελλάδα/Αθήνα '
echo '---------------------------------------------'
echo
sleep 2
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
ln -sf /usr/share/zoneinfo/Europe/Athens /etc/localtime
hwclock --systohc
echo
echo
echo '---------------------------------------------'
echo '8 - Ρύθμιση Hostname '
echo ' '
echo 'Θα χρειαστεί να δώσετε ένα όνομα στον '
echo 'Υπολογιστή σας '
echo '---------------------------------------------'
sleep 2
echo
read -rp "Δώστε όνομα υπολογιστή (hostname): " hostvar
echo "$hostvar" > /etc/hostname
echo
sleep 2
echo '-------------------------------------'
echo '9 - Ρύθμιση της κάρτας δικτύου '
echo ' '
echo 'Θα ρυθμιστεί η κάρτα δικτύου σας ώστε'
echo 'να ξεκινάει αυτόματα με την εκκίνηση '
echo 'του Arch Linux '
echo '-------------------------------------'
sleep 2
ethernet=$(ip link | grep "2: "| grep -oE "(en\\w+)") # Αναζήτηση κάρτας ethernet
if [ "$ethernet" = "" ]; then # Έλεγχος αν υπάρχει κάρτα ethernet
echo "Δε βρέθηκε κάρτα δικτύου" # και αν υπάρχει γίνεται εγκατάσταση
else # και ενεργοποίηση
systemctl enable dhcpcd@"$ethernet".service
echo "Η κάρτα δικτύου $ethernet ρυθμίστηκε επιτυχώς";
fi
echo
wifi=$(ip link | grep ": "| grep -oE "(w\\w+)") # Αναζήτηση κάρτας wifi
if [ "$wifi" = "" ]; then # Έλεγχος αν υπάρχει κάρτα wifi
echo "Δε βρέθηκε ασύρματη κάρτα δικτύου" # και αν υπάρχει γίνεται εγκατάσταση
else # και ενεργοποίηση
pacman -S --noconfirm iw wpa_supplicant dialog wpa_actiond
systemctl enable netctl-auto@"$wifi".service
echo "Η ασύρματη κάρτα δικτύου $wifi ρυθμίστηκε επιτυχώς"
fi
sleep 2
echo
echo '-------------------------------------'
echo '10 - Ρύθμιση χρήστη ROOT '
echo ' '
echo 'Αλλαγή συνθηματικού(password) '
echo 'του root χρήστη '
echo '-------------------------------------'
echo
sleep 1
#########################################################
until passwd # Μέχρι να είναι επιτυχής
do # η αλλαγή του κωδικού
echo # του root χρήστη, θα
echo "O root κωδικός δεν άλλαξε, δοκιμάστε ξανά!" # τυπώνεται αυτό το μήνυμα
echo #
done #
#########################################################
sleep 2
echo
echo
echo '---------------------------------------'
echo '11 - Linux LTS kernel (προαιρετικό) '
echo ' '
echo 'Μήπως προτειμάτε τον LTS πυρήνα Linux '
echo 'ο οποίος είναι πιο σταθερός και μακράς '
echo 'υποστήριξης; '
echo '---------------------------------------'
sleep 2
if YN_Q "Θέλετε να εγκαταστήσετε πυρήνα μακράς υποστήριξης (Long Term Support) (y/n); "; then
sudo pacman -S --noconfirm linux-lts
fi
echo
echo
echo '---------------------------------------'
echo '12 - Ρύθμιση GRUB '
echo ' '
echo 'Θα γίνει εγκατάσταση του μενού επιλογών'
echo 'εκκινησης GRUB Bootloader '
echo '---------------------------------------'
echo
sleep 2
if [ -d /sys/firmware/efi ]; then
pacman -S --noconfirm grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck
grub-mkconfig -o /boot/grub/grub.cfg
else
pacman -S --noconfirm grub os-prober
read -rp " Σε ποιο δίσκο θέλετε να εγκατασταθεί ο grub (/dev/sd?); " grubvar
grub-install --target=i386-pc --recheck "$grubvar"
grub-mkconfig -o /boot/grub/grub.cfg
fi
sleep 2
echo
echo '-------------------------------------'
echo '13 - Δημιουργία Χρήστη '
echo ' '
echo 'Για την δημιουργία νέου χρήστη θα '
echo 'χρειαστεί να δώσετε όνομα/συνθηματικό'
echo ' '
echo 'Στο χρήστη αυτόν θα δωθούν δικαιώματα'
echo 'διαχειριστή (sudo) '
echo '-------------------------------------'
echo
sleep 2
read -rp "Δώστε παρακαλώ νέο όνομα χρήστη: " onomaxristi
useradd -m -G wheel -s /bin/bash "$onomaxristi"
#########################################################
until passwd "$onomaxristi" # Μέχρι να είναι επιτυχής
do # η αλλαγή του κωδικού
echo # του χρήστη, θα
echo "O κωδικός του χρήστη δεν άλλαξε, δοκιμάστε ξανά!" # τυπώνεται αυτό το μήνυμα
echo #
done #
#########################################################
echo "$onomaxristi ALL=(ALL) ALL" >> /etc/sudoers
echo
echo
echo '-------------------------------------'
echo '14 - Προσθήκη Multilib '
echo ' '
echo 'Θα προστεθεί δυνατότητα για πρόσβαση '
echo 'σε 32bit προγράμματα και βιβλιοθήκες '
echo 'που απαιτούν κάποιες εφαρμογές '
echo '-------------------------------------'
sleep 2
echo
{
echo "[multilib]"
echo "Include = /etc/pacman.d/mirrorlist"
} >> /etc/pacman.conf
pacman -Syy
echo '--------------------------------------'
echo '15 - Προσθήκη SWAP '
echo ' '
echo 'Θα χρησιμοποιηθεί το systemd-swap αντί'
echo 'για διαμέρισμα SWAP ώστε το μέγεθός '
echo 'του να μεγαλώνει εάν και εφόσoν το '
echo 'απαιτεί το σύστημα '
echo '--------------------------------------'
sleep 2
############################ Installing Zswap ###############################
pacman -S --noconfirm systemd-swap
# τα default του developer αλλάζουμε μόνο:
echo
{
echo "zswap_enabled=0"
echo "swapfc_enabled=1"
} >> /etc/systemd/swap.conf.d/systemd-swap.conf
systemctl enable systemd-swap
}
function YN_Q {
while true; do
read -rp "$1" yes_no
case "$yes_no" in
y|yes|Y|Yes|YES )
return 0;
break;;
n|no|N|No|NO )
return 1;
break;;
* )
echo "${2:-"μη έγκυρη απάντηση"}";;
esac
done
}
clear
#Έλεγχος chroot
while test $# -gt 0; do
case "$1" in
--stage)
shift
if [ "$1" == "chroot" ]; then
chroot_stage
exit
fi
shift
;;
*)
shift
;;
esac
done
#Τυπικός έλεγχος για το αν είσαι root. because you never know
if [ "$(id -u)" -ne 0 ] ; then
echo "Λυπάμαι, αλλά πρέπει να είσαι root χρήστης για να τρέξεις το Archon."
echo "Έξοδος..."
sleep 2
exit 1
fi
#Τυπικός έλεγχος για το αν το τρέχει σε Arch.
if [ ! -f /etc/arch-release ] ; then
echo "Λυπάμαι, αλλά το σύστημα στο οποίο τρέχεις το Archon δεν είναι Arch Linux"
echo "Έξοδος..."
sleep 2
exit
fi
setfont gr928a-8x16.psfu
echo '---------------------- Archon --------------------------'
echo " _____ ";
echo " __|_ |__ _____ ______ __ _ _____ ____ _ ";
echo " | \ || | | ___|| |_| |/ \| \ | | ";
echo " | \ || \ | |__ | _ || || \| | ";
echo " |__|\__\ __||__|\__\|______||__| |_|\_____/|__/\____| ";
echo " |_____| ";
echo " ";
echo " Ο πρώτος Ελληνικός Arch Linux Installer ";
echo '--------------------------------------------------------'
sleep 1
echo ' Σκοπός αυτού του cli εγκαταστάτη είναι η εγκατάσταση του'
echo ' βασικού συστήματος Arch Linux ΧΩΡΙΣ γραφικό περιβάλλον.'
echo ''
echo ' Η διαδικασία ολοκληρώνεται σε 15 βήματα'
echo ''
echo ' Προτείνεται η εγκατάσταση σε ξεχωριστό δίσκο για την '
echo ' αποφυγή σπασίματος του συστήματος σας. '
echo ''
echo ' Το script αυτό παρέχεται χωρίς καμιάς μορφής εγγύηση'
echo ' σωστής λειτουργίας.'
echo ''
echo ' You have been warned !!!'
sleep 5
echo
if YN_Q "Θέλετε να συνεχίσετε (y/n); " "μη έγκυρος χαρακτήρας" ; then
echo " Έναρξη της εγκατάστασης"
else
echo " Έξοδος..."
exit 0
fi
echo
sleep 1
echo '---------------------------------------'
echo ' 1 - Έλεγχος σύνδεσης στο διαδίκτυο '
echo '---------------------------------------'
if ping -c 3 www.google.com &> /dev/null; then
echo '---------------------------------------'
echo ' Υπάρχει σύνδεση στο διαδίκτυο'
echo ' Η εγκατάσταση μπορεί να συνεχιστεί'
echo '---------------------------------------'
else
echo 'Ελέξτε αν υπάρχει σύνδεση στο διαδίκτυο'
exit
fi
sleep 1
echo
echo
echo '---------------------------------------------'
echo ' 2 - Παρακάτω βλέπετε τους διαθέσιμους δίσκους'
echo ' '
echo ' Διαλέξτε το δίσκο που θα γίνει η εγκατάσταση '
echo '----------------------------------------------'
lsblk | grep -i sd
echo
echo
echo '--------------------------------------------------------'
read -rp " Σε ποιο δίσκο (/dev/sd?) θα εγκατασταθεί το Arch; " diskvar
echo '--------------------------------------------------------'
echo
echo
echo '--------------------------------------------------------'
echo " Η εγκατάσταση θα γίνει στον $diskvar"
echo '--------------------------------------------------------'
sleep 1
echo
echo
echo '---------------------------------------------'
echo ' 3 - Γίνεται έλεγχος αν το σύστημά σας είναι '
echo ' '
echo ' BIOS ή UEFI '
echo '---------------------------------------------'
sleep 1
set -e
################### Check if BIOS or UEFI #####################
if [ -d /sys/firmware/efi ]; then
echo
echo " Χρησιμοποιείς PC με UEFI";
echo
sleep 1
parted "$diskvar" mklabel gpt
parted "$diskvar" mkpart ESP fat32 1MiB 513MiB
parted "$diskvar" mkpart primary ext4 513MiB 100%
mkfs.fat -F32 "$diskvar""1"
mkfs.ext4 "$diskvar""2"
mount "$diskvar""2" "/mnt"
mkdir "/mnt/boot"
mount "$diskvar""1" "/mnt/boot"
else
echo
echo " Χρησιμοποιείς PC με BIOS";
echo
sleep 1
parted "$diskvar" mklabel msdos
parted "$diskvar" mkpart primary ext4 1MiB 100%
mkfs.ext4 "$diskvar""1"
mount "$diskvar""1" "/mnt"
fi
sleep 1
echo
echo
echo '--------------------------------------------------------'
echo ' 4 - Προσθήκη πηγών λογισμικού (Mirrors) '
echo '--------------------------------------------------------'
sleep 1
pacman -Syy
#pacman -S --noconfirm reflector #απενεργοποίηση λόγω bug του Reflector
#reflector --latest 10 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist
#pacman -Syy
sleep 1
echo
echo
echo '--------------------------------------------------------'
echo ' 5 - Εγκατάσταση της Βάσης του Arch Linux '
echo ' '
echo ' Αν δεν έχετε κάνει ακόμα καφέ τώρα είναι η ευκαιρία... '
echo '--------------------------------------------------------'
sleep 1
pacstrap /mnt base base-devel
echo
echo
echo '--------------------------------------------------------'
echo ' 6 - Ολοκληρώθηκε η βασική εγκατάσταση του Arch Linux '
echo ' '
echo ' Τώρα θα γίνει είσοδος στο εγκατεστημένο Arch Linux '
echo '--------------------------------------------------------'
sleep 1
cp archon.sh /mnt/archon.sh
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt ./archon.sh --stage chroot
echo
echo
echo '--------------------------------------------------------'
echo ' Τέλος εγκατάστασης '
echo ' Το σύστημα θα επανεκκινήσει σε 5 δευτερόλεπτα '
echo '--------------------------------------------------------'
sleep 5
reboot